/*
Theme Name: JAVA Barrosa
Theme URI: https://javabarrosasuites.com/
Author: JAVA Barrosa Suites
Description: Tema personalizado para JAVA Barrosa Suites. Landing visual, blog, guía local y preparación para JAVA PMS.
Version: 1.7.1
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 8.0
Text Domain: java-barrosa
License: GPL-2.0-or-later
*/

:root {
  --java-turquoise: #58c5ca;
  --java-turquoise-dark: #17777e;
  --java-pine: #456853;
  --java-sage: #8da894;
  --java-sand: #eee4d4;
  --java-wood: #a97f58;
  --java-ink: #22302b;
  --java-muted: #65716d;
  --java-white: #ffffff;
  --java-line: #e8eeeb;
  --java-soft: #f7faf9;
  --java-shadow: 0 18px 60px rgba(25, 52, 43, .10);
  --java-heading: Didot, "Bodoni 72", "Bodoni MT", Georgia, serif;
  --java-body: "Avenir Next", Avenir, Montserrat, "Segoe UI", Arial, sans-serif;
  --java-radius: 24px;
  --java-max: 1240px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--java-white);
  color: var(--java-ink);
  font-family: var(--java-body);
  font-size: 16px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  background: #000;
  color: #fff;
  padding: 10px 14px;
  z-index: 99999;
}
.skip-link:focus { left: 12px; top: 12px; }

.java-container { width: min(calc(100% - 40px), var(--java-max)); margin: 0 auto; }
.java-section { padding: 92px 0; }
.java-section--tight { padding: 64px 0; }
.java-kicker {
  margin: 0 0 10px;
  color: var(--java-pine);
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
}
h1, h2, h3, .java-display {
  font-family: var(--java-heading);
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -.02em;
}
h1 { font-size: clamp(3.1rem, 7vw, 6.8rem); margin: 0; }
h2 { font-size: clamp(2.35rem, 4.8vw, 4.6rem); margin: 0 0 22px; }
h3 { font-size: clamp(1.55rem, 2.6vw, 2.25rem); margin: 0 0 10px; }
p { margin: 0 0 1.1em; }

.java-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 48px;
  padding: 12px 20px;
  border-radius: 999px;
  border: 1px solid var(--java-pine);
  background: transparent;
  color: var(--java-ink);
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-decoration: none;
  text-transform: uppercase;
  transition: .22s ease;
}
.java-btn:hover, .java-btn:focus-visible { transform: translateY(-1px); box-shadow: 0 10px 24px rgba(35, 82, 67, .12); }
.java-btn--solid { background: var(--java-pine); color: #fff; }
.java-btn--turq { background: var(--java-turquoise); border-color: var(--java-turquoise); color: var(--java-ink); }

/* Header */
.java-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: rgba(255,255,255,.94);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(69,104,83,.08);
}
.java-header__row { min-height: 84px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 28px; }
.java-brand { display: inline-flex; align-items: center; text-decoration: none; }
.java-brand img { width: 76px; height: 76px; object-fit: contain; }
.custom-logo-link img { width: 76px; height: 76px; object-fit: contain; }
.java-nav { justify-self: center; }
.java-nav ul { display: flex; align-items: center; gap: clamp(16px, 2.4vw, 34px); list-style: none; margin: 0; padding: 0; }
.java-nav a { text-decoration: none; font-size: .82rem; font-weight: 600; color: #35433e; }
.java-nav a:hover, .java-nav a:focus-visible { color: var(--java-turquoise-dark); }
.java-header__actions { display: flex; align-items: center; gap: 12px; }
.java-menu-toggle { display: none; width: 46px; height: 46px; border: 1px solid var(--java-line); border-radius: 50%; background: #fff; cursor: pointer; }
.java-menu-toggle span { width: 19px; height: 2px; display: block; background: var(--java-ink); margin: 4px auto; }

/* Hero */
.java-hero { position: relative; min-height: 720px; display: flex; align-items: end; overflow: hidden; }
.java-hero__media { position: absolute; inset: 0; }
.java-hero__media img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.java-hero__overlay { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(10,26,22,.62) 0%, rgba(10,26,22,.24) 46%, rgba(10,26,22,.02) 75%); }
.java-hero__content { position: relative; z-index: 2; color: #fff; max-width: 760px; padding: 140px 0 155px; }
.java-hero__content .java-kicker { color: #fff; opacity: .86; }
.java-hero__claim { font-family: var(--java-heading); font-size: clamp(1.55rem, 2.6vw, 2.4rem); margin: 20px 0 12px; }
.java-hero__lead { max-width: 620px; font-size: 1.06rem; color: rgba(255,255,255,.92); }
.java-hero .java-btn { border-color: rgba(255,255,255,.8); color: #fff; background: rgba(255,255,255,.08); }

/* Availability */
.java-availability-wrap { position: relative; z-index: 10; margin-top: -56px; }
.java-availability {
  background: #fff;
  border-radius: 22px;
  box-shadow: var(--java-shadow);
  padding: 14px;
  display: grid;
  grid-template-columns: 1.15fr 1.15fr .8fr .8fr auto;
  align-items: stretch;
}
.java-search-field { min-height: 72px; padding: 10px 18px; border-right: 1px solid var(--java-line); display: flex; align-items: center; gap: 12px; }
.java-search-field:last-of-type { border-right: 0; }
.java-search-field svg { width: 22px; height: 22px; color: var(--java-turquoise-dark); flex: 0 0 auto; }
.java-search-field strong, .java-search-field span { display: block; }
.java-search-field strong { font-size: .78rem; }
.java-search-field span { color: var(--java-muted); font-size: .76rem; }
.java-availability__cta { align-self: center; min-height: 54px; margin: 8px; }
.java-pms-slot { grid-column: 1 / -1; }

.java-amenities { padding: 44px 0 16px; }
.java-amenities__grid { display: grid; grid-template-columns: repeat(6,1fr); gap: 16px; }
.java-amenity { text-align: center; color: #4d5e57; font-size: .78rem; }
.java-amenity svg { display: block; width: 28px; height: 28px; margin: 0 auto 8px; color: var(--java-turquoise-dark); }

/* Editorial sections */
.java-split { display: grid; grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr); align-items: center; gap: clamp(42px,7vw,110px); }
.java-split--reverse { grid-template-columns: minmax(0,1.15fr) minmax(0,.85fr); }
.java-split__copy { max-width: 500px; }
.java-split__media { border-radius: var(--java-radius); overflow: hidden; box-shadow: 0 14px 50px rgba(31,54,47,.08); }
.java-split__media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.java-section:nth-of-type(even) .java-split__media { transform: translateY(4px); }

/* Suites */
.java-suites { background: linear-gradient(180deg,#fff 0%,#fbfcfb 100%); }
.java-section-title { text-align: center; max-width: 780px; margin: 0 auto 46px; }
.java-suite-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.java-suite-card { background: #fff; border: 1px solid var(--java-line); border-radius: 22px; overflow: hidden; box-shadow: 0 10px 35px rgba(26,48,40,.06); }
.java-suite-card__image { aspect-ratio: 16/9; background: linear-gradient(135deg,#f5faf8,#e9f4f2); position: relative; overflow: hidden; }
.java-suite-card__image img { width: 100%; height: 100%; object-fit: cover; }
.java-suite-card__placeholder { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; padding: 24px; color: var(--java-pine); }
.java-suite-card__placeholder img { width: 130px; height: 130px; object-fit: contain; margin: 0 auto 10px; }
.java-suite-card__body { padding: 26px; }
.java-suite-meta { color: var(--java-muted); font-size: .92rem; }

/* Nature */
.java-nature { background: var(--java-soft); }
.java-nature-card { display: grid; grid-template-columns: .9fr 1.1fr; min-height: 430px; border-radius: 28px; overflow: hidden; background: #fff; }
.java-nature-card__copy { padding: clamp(38px,6vw,76px); display: flex; flex-direction: column; justify-content: center; }
.java-nature-card__media img { width: 100%; height: 100%; object-fit: cover; }

/* Local guide */
.java-local-grid { display: grid; grid-template-columns: repeat(5,1fr); gap: 16px; }
.java-local-card { min-height: 160px; border: 1px solid var(--java-line); border-radius: 18px; padding: 22px; text-decoration: none; display: flex; flex-direction: column; justify-content: space-between; background: #fff; transition: .2s ease; }
.java-local-card:hover { transform: translateY(-3px); box-shadow: 0 14px 35px rgba(20,45,37,.08); }
.java-local-card svg { width: 34px; height: 34px; color: var(--java-turquoise-dark); }
.java-local-card strong { font-size: .92rem; }

/* Weather widget */
.java-weather { margin-top: 32px; padding: 24px; border: 1px solid var(--java-line); border-radius: 20px; background: #fff; }

/* Gallery */
.java-gallery-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 12px; }
.java-gallery-item { border: 0; padding: 0; background: transparent; overflow: hidden; border-radius: 16px; cursor: zoom-in; }
.java-gallery-item img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; transition: transform .35s ease; }
.java-gallery-item:hover img { transform: scale(1.025); }
.java-gallery-item.is-extra { display: none; }
.java-gallery-grid.is-expanded .java-gallery-item.is-extra { display: block; }
.java-gallery-actions { display: none; margin-top: 26px; text-align: center; }
.java-js .java-gallery-actions { display: block; }
.java-lightbox { position: fixed; inset: 0; z-index: 3000; display: none; place-items: center; padding: 24px; background: rgba(8,18,15,.92); }
.java-lightbox.is-open { display: grid; }
.java-lightbox img { max-width: min(1200px,94vw); max-height: 88vh; border-radius: 14px; }
.java-lightbox__close { position: absolute; top: 20px; right: 20px; width: 46px; height: 46px; border-radius: 50%; border: 1px solid rgba(255,255,255,.45); background: transparent; color: #fff; font-size: 1.4rem; cursor: pointer; }

/* Blog */
.java-blog-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 22px; }
.java-post-card { border: 1px solid var(--java-line); border-radius: 18px; overflow: hidden; background: #fff; }
.java-post-card__thumb { aspect-ratio: 16/10; overflow: hidden; background: var(--java-soft); }
.java-post-card__thumb img { width: 100%; height: 100%; object-fit: cover; }
.java-post-card__body { padding: 22px; }
.java-post-card__meta { font-size: .76rem; color: var(--java-muted); margin-bottom: 8px; }
.java-post-card a { text-decoration: none; }

/* FAQ */
.java-faq { background: var(--java-soft); }
.java-faq-list { max-width: 900px; margin: 0 auto; }
.java-faq-list details { border-bottom: 1px solid #dfe8e3; padding: 20px 0; }
.java-faq-list summary { cursor: pointer; list-style: none; font-family: var(--java-heading); font-size: 1.5rem; display:flex; align-items:center; justify-content:space-between; gap:18px; }
.java-faq-list summary::-webkit-details-marker { display:none; }
.java-faq-list summary::after { content:"+"; flex:0 0 auto; font-family:var(--java-body); font-size:1.25rem; font-weight:700; color:var(--java-pine); }
.java-faq-list details[open] summary::after { content:"−"; }
.java-faq-list summary:focus-visible { outline:3px solid var(--java-turquoise); outline-offset:6px; border-radius:4px; }
.java-faq-list details p { color: #52615b; padding-top: 12px; }

/* Content / blog pages */
.java-page-hero { padding: 90px 0 50px; background: var(--java-soft); }
.java-content { width: min(calc(100% - 40px), 840px); margin: 0 auto; padding: 64px 0 100px; }
.java-content img { border-radius: 16px; }
.java-content a { color: var(--java-turquoise-dark); }
.java-archive { padding: 84px 0 110px; }
.java-archive-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 24px; margin-top: 42px; }

/* Footer */
.java-footer { border-top: 1px solid var(--java-line); background: #fff; padding: 46px 0 90px; }
.java-footer__grid { display: grid; grid-template-columns: 180px 1fr auto; gap: 32px; align-items: center; }
.java-footer__brand img { width: 118px; height: 118px; object-fit: contain; }
.java-footer__nav ul { display: flex; flex-wrap: wrap; gap: 18px 26px; margin: 0; padding: 0; list-style: none; }
.java-footer__nav a { text-decoration: none; font-size: .82rem; }
.java-footer__small { margin-top: 28px; color: var(--java-muted); font-size: .78rem; display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.java-footer__small a { color: inherit; }

.java-contact-float { position: fixed; z-index: 1750; right: 22px; bottom: 24px; display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.java-contact-float__button { min-height: 52px; display: inline-flex; align-items: center; gap: 10px; padding: 12px 17px; border-radius: 999px; color: #fff; text-decoration: none; font-size: .76rem; font-weight: 800; letter-spacing: .02em; box-shadow: 0 14px 34px rgba(18,43,35,.2); transition: transform .2s ease, box-shadow .2s ease; }
.java-contact-float__button:hover, .java-contact-float__button:focus-visible { transform: translateY(-2px); box-shadow: 0 18px 40px rgba(18,43,35,.26); }
.java-contact-float__button svg { width: 22px; height: 22px; flex: 0 0 auto; }
.java-contact-float__button--phone { background: var(--java-pine); }
.java-contact-float__button--whatsapp { background: #25d366; color: var(--java-ink); }

.java-mobile-cta { display: none; position: fixed; z-index: 1800; bottom: 12px; left: 12px; right: 12px; padding: 6px; background: rgba(255,255,255,.96); box-shadow: 0 10px 35px rgba(18,43,35,.18); border-radius: 18px; gap: 6px; }
.java-mobile-cta a { flex: 1; text-align: center; text-decoration: none; border-radius: 13px; padding: 13px 8px; font-size: .71rem; font-weight: 800; }
.java-mobile-cta__availability { background: var(--java-turquoise); color:var(--java-ink); }
.java-mobile-cta__phone { background: var(--java-pine); color:#fff; }
.java-mobile-cta__whatsapp { background: #25d366; color:var(--java-ink); }
.java-mobile-cta__contact { background: var(--java-pine); color:#fff; }

@media (max-width: 980px) {
  .java-header__row { grid-template-columns: auto 1fr auto; }
  .java-nav { position: fixed; inset: 84px 18px auto 18px; max-height: calc(100vh - 104px); overflow-y: auto; background: #fff; box-shadow: var(--java-shadow); border-radius: 18px; padding: 18px; display: none; }
  .java-nav.is-open { display: block; }
  .java-nav ul { display: grid; gap: 4px; }
  .java-nav a { display: block; padding: 11px 8px; }
  .java-menu-toggle { display: inline-block; }
  .java-header__actions > .java-btn { display: none; }
  .java-availability { grid-template-columns: 1fr 1fr; }
  .java-search-field { border-bottom: 1px solid var(--java-line); }
  .java-availability__cta { grid-column: 1 / -1; }
  .java-amenities__grid { grid-template-columns: repeat(3,1fr); }
  .java-split, .java-split--reverse, .java-nature-card { grid-template-columns: 1fr; }
  .java-split--reverse .java-split__media { order: 2; }
  .java-suite-grid { grid-template-columns: 1fr; }
  .java-local-grid { grid-template-columns: repeat(2,1fr); }
  .java-gallery-grid { grid-template-columns: repeat(3,1fr); }
  .java-blog-grid, .java-archive-grid { grid-template-columns: 1fr 1fr; }
  .java-footer__grid { grid-template-columns: 120px 1fr; }
  .java-footer__actions { grid-column: 1 / -1; }
}

@media (max-width: 680px) {
  body { padding-bottom: 74px; }
  .java-container { width: min(calc(100% - 26px), var(--java-max)); }
  .java-header__row { min-height: 72px; gap: 10px; }
  .java-brand img, .custom-logo-link img { width: 60px; height: 60px; }
  .java-nav { inset: 72px 18px auto 18px; }
  .java-section { padding: 66px 0; }
  .java-hero { min-height: 650px; }
  .java-hero__content { padding: 110px 0 120px; }
  .java-hero__overlay { background: linear-gradient(180deg, rgba(10,26,22,.24), rgba(10,26,22,.66)); }
  .java-availability-wrap { margin-top: -42px; }
  .java-availability { grid-template-columns: 1fr; padding: 10px; }
  .java-search-field { border-right: 0; }
  .java-availability__cta { grid-column: auto; }
  .java-amenities__grid { grid-template-columns: repeat(2,1fr); gap: 24px 10px; }
  .java-split { gap: 30px; }
  .java-split__copy { max-width: none; }
  .java-local-grid { grid-template-columns: 1fr 1fr; }
  .java-gallery-grid { grid-template-columns: 1fr 1fr; }
  .java-blog-grid, .java-archive-grid { grid-template-columns: 1fr; }
  .java-footer__grid { grid-template-columns: 1fr; text-align: center; }
  .java-footer__brand img { margin: 0 auto; }
  .java-footer__nav ul { justify-content: center; }
  .java-footer__actions { grid-column: auto; }
  .java-footer__small { justify-content: center; }
  .java-contact-float { display: none; }
  .java-mobile-cta { display: flex; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}


/* JAVA PMS promotions */
.java-promo-banner-slot:empty,.java-promo-section:has(.java-promo-featured:empty){display:none}
.java-promo-banner{background:#f2fbfb;border-bottom:1px solid rgba(91,199,205,.25);display:flex;align-items:center;justify-content:center;gap:20px;padding:10px 18px;font-size:.82rem;color:var(--java-pine);flex-wrap:wrap}
.java-promo-banner>div{display:flex;align-items:center;gap:9px}.java-promo-banner strong{font-weight:800}.java-promo-banner-price del{color:var(--java-muted);margin-right:6px}.java-promo-banner-price strong{color:var(--java-turquoise-dark);font-size:1rem}.java-promo-banner a{text-decoration:none;font-weight:800;color:var(--java-turquoise-dark)}
.java-promo-section{padding-top:48px;padding-bottom:48px}.java-promo-featured{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);border:1px solid var(--java-line);border-radius:28px;overflow:hidden;background:#fff}.java-promo-featured-copy{padding:clamp(28px,5vw,64px)}.java-promo-featured-copy h2{margin:.35em 0}.java-promo-kicker{font-size:.72rem;letter-spacing:.16em;font-weight:800;color:var(--java-turquoise-dark)}.java-promo-featured-media img{width:100%;height:100%;min-height:320px;object-fit:cover}.java-promo-price{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:18px 0}.java-promo-price del{color:var(--java-muted);font-size:1rem}.java-promo-price strong{font-size:clamp(1.8rem,4vw,3rem);color:var(--java-pine)}.java-promo-price span{background:#eaf7f6;color:var(--java-turquoise-dark);border-radius:999px;padding:5px 9px;font-weight:800}.java-promo-cta{display:inline-flex;background:var(--java-turquoise);color:var(--java-ink);text-decoration:none;padding:13px 20px;border-radius:999px;font-weight:800}.java-promo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.java-promo-card{border:1px solid var(--java-line);border-radius:20px;padding:24px;background:#fff}.java-offer-landing{background:#fff}.java-offer-hero{padding:100px 0 52px;background:#f7fbfa}.java-offer-search{padding:54px 0 100px}.java-offer-inner{width:min(calc(100% - 32px),1100px);margin:auto}
@media(max-width:800px){.java-promo-featured{grid-template-columns:1fr}.java-promo-featured-media{order:-1}.java-promo-featured-media img{min-height:220px}.java-promo-grid{grid-template-columns:1fr}.java-promo-banner{justify-content:flex-start;gap:8px}.java-promo-banner>div{width:100%;justify-content:space-between}}


/* SEO/GEO 1.2 · breadcrumbs */
.java-breadcrumbs{padding:18px 0 0;font-size:.78rem;color:var(--java-muted)}
.java-breadcrumbs ol{display:flex;align-items:center;gap:8px;flex-wrap:wrap;list-style:none;margin:0;padding:0}
.java-breadcrumbs li{display:flex;align-items:center;gap:8px}
.java-breadcrumbs li:not(:last-child)::after{content:"/";opacity:.45}
.java-breadcrumbs a{color:inherit;text-decoration:none}
.java-breadcrumbs a:hover{text-decoration:underline}
.java-breadcrumbs [aria-current="page"]{color:var(--java-pine);font-weight:700}


/* === JAVA 1.3.0 · SEO/GEO conversion landing === */
.java-seo-landing__hero {
  padding: 76px 0 54px;
  background: linear-gradient(180deg, var(--java-soft), var(--java-white));
}
.java-seo-landing__hero .java-kicker { margin-bottom: 14px; }
.java-seo-landing__hero h1 { max-width: 980px; font-size: clamp(2.8rem, 6vw, 5.8rem); }
.java-seo-landing__intro {
  max-width: 800px;
  margin-top: 24px;
  font-size: clamp(1.05rem, 2vw, 1.25rem);
  color: var(--java-muted);
}
.java-seo-landing__cta { margin-top: 26px; }
.java-seo-landing__body { padding: 64px 0 84px; }
.java-seo-landing__body > .java-container { max-width: 920px; }
.java-seo-landing__body h2 { margin-top: 1.25em; }
.java-seo-landing__body h3 { margin-top: 1.35em; }
.java-seo-landing__body ul,
.java-seo-landing__body ol { padding-left: 1.35rem; }
.java-seo-landing__reviews { padding: 76px 0; background: var(--java-soft); }
.java-seo-landing__reviews-head { max-width: 720px; margin-bottom: 30px; }
.java-seo-landing__book {
  padding: 72px 0;
  background: var(--java-pine);
  color: var(--java-white);
  text-align: center;
}
.java-seo-landing__book p { max-width: 680px; margin: 0 auto 24px; opacity: .9; }
.java-seo-landing__book .java-btn { border-color: var(--java-white); color: var(--java-white); }
.java-seo-landing__related { padding: 64px 0; }
.java-seo-landing__related-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 18px;
}
.java-seo-card {
  display: block;
  padding: 24px;
  border: 1px solid var(--java-line);
  border-radius: 18px;
  text-decoration: none;
  background: var(--java-white);
}
.java-seo-card strong { display:block; font-family: var(--java-heading); font-size:1.45rem; font-weight:500; margin-bottom:6px; }
.java-seo-card span { color: var(--java-muted); font-size:.92rem; }
@media (max-width: 760px) {
  .java-seo-landing__hero { padding: 52px 0 38px; }
  .java-seo-landing__body, .java-seo-landing__reviews, .java-seo-landing__book, .java-seo-landing__related { padding: 52px 0; }
  .java-seo-landing__related-grid { grid-template-columns: 1fr; }
}


/* === JAVA 1.4.0 · accesibilidad y carga progresiva === */
.java-gallery-item img:not([src]) { visibility: hidden; }
.java-gallery-item:focus-visible,
.java-menu-toggle:focus-visible,
.java-lightbox__close:focus-visible {
  outline: 3px solid var(--java-turquoise);
  outline-offset: 3px;
}
.java-nav.is-open { overscroll-behavior: contain; }
.java-lightbox[aria-hidden="false"] { visibility: visible; }


/* === JAVA 1.5.0-dev · Guía local + Blog GEO === */
.java-discovery-section { padding: 82px 0; }
.java-discovery-section--soft { background: var(--java-soft); }
.java-discovery-head { display:flex; align-items:end; justify-content:space-between; gap:24px; margin-bottom:30px; }
.java-discovery-head__copy { max-width:760px; }
.java-discovery-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.java-discovery-card {
  display:flex; flex-direction:column; min-width:0; border:1px solid var(--java-line);
  border-radius:22px; overflow:hidden; background:var(--java-white); text-decoration:none;
  box-shadow:0 10px 36px rgba(25,52,43,.06); transition:transform .2s ease, box-shadow .2s ease;
}
.java-discovery-card:hover { transform:translateY(-3px); box-shadow:var(--java-shadow); }
.java-discovery-card__media { aspect-ratio:16/10; overflow:hidden; background:var(--java-soft); }
.java-discovery-card__media img { width:100%; height:100%; object-fit:cover; }
.java-discovery-card__body { padding:22px; flex:1; }
.java-discovery-card__meta { color:var(--java-pine); font-size:.76rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; margin-bottom:8px; }
.java-discovery-card h3 { font-size:1.7rem; margin-bottom:10px; }
.java-discovery-card p { color:var(--java-muted); margin-bottom:0; }
.java-discovery-card__facts { display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
.java-discovery-chip { display:inline-flex; padding:6px 10px; border-radius:999px; background:var(--java-soft); font-size:.78rem; color:var(--java-ink); }
.java-local-archive-hero { padding:68px 0 34px; background:linear-gradient(180deg,var(--java-soft),var(--java-white)); }
.java-local-archive-hero p { max-width:760px; color:var(--java-muted); }
.java-local-archive { padding:44px 0 84px; }
.java-local-single { padding:42px 0 84px; }
.java-local-single__header { max-width:900px; margin-bottom:34px; }
.java-local-single__intro { font-size:1.18rem; color:var(--java-muted); max-width:800px; }
.java-local-single__grid { display:grid; grid-template-columns:minmax(0,1fr) 330px; gap:52px; align-items:start; }
.java-local-single__facts { position:sticky; top:90px; border:1px solid var(--java-line); border-radius:20px; padding:22px; background:var(--java-soft); }
.java-local-single__facts dl { margin:0; }
.java-local-single__facts div { padding:10px 0; border-bottom:1px solid var(--java-line); }
.java-local-single__facts div:last-child { border-bottom:0; }
.java-local-single__facts dt { font-weight:800; font-size:.78rem; text-transform:uppercase; letter-spacing:.05em; }
.java-local-single__facts dd { margin:3px 0 0; color:var(--java-muted); }
.java-local-verified { margin-top:18px; font-size:.82rem; color:var(--java-muted); }
.java-local-single__cta { margin-top:28px; padding:24px; border-radius:20px; background:var(--java-pine); color:var(--java-white); }
.java-local-single__cta .java-btn { border-color:var(--java-white); color:var(--java-white); }
@media (max-width: 900px) {
  .java-discovery-grid { grid-template-columns:1fr 1fr; }
  .java-local-single__grid { grid-template-columns:1fr; gap:28px; }
  .java-local-single__facts { position:static; }
}
@media (max-width: 640px) {
  .java-discovery-section { padding:58px 0; }
  .java-discovery-head { display:block; }
  .java-discovery-head .java-btn { margin-top:18px; }
  .java-discovery-grid { grid-template-columns:1fr; }
}


/* === JAVA 1.5.0 RC1 · Local Guide visual integration === */
.java-section-title--wide { max-width: 820px; }
.java-local-hub { background: linear-gradient(180deg, #fff 0%, var(--java-soft) 100%); }
.java-local-grid--rich { grid-template-columns: repeat(5,minmax(0,1fr)); gap: 14px; }
.java-local-card--rich {
  position: relative;
  min-height: 250px;
  padding: 22px;
  border-radius: 24px;
  background: rgba(255,255,255,.88);
  backdrop-filter: blur(4px);
  overflow: hidden;
}
.java-local-card--rich::after {
  content: "";
  position: absolute;
  right: -44px;
  bottom: -62px;
  width: 140px;
  height: 140px;
  border-radius: 50%;
  background: var(--java-soft);
  z-index: 0;
}
.java-local-card--rich > * { position: relative; z-index: 1; }
.java-local-card__top { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.java-local-card__icon {
  width: 52px; height: 52px; border-radius: 50%;
  display:inline-flex; align-items:center; justify-content:center;
  background: var(--java-soft); color: var(--java-pine);
}
.java-local-card__icon svg { width:26px; height:26px; }
.java-local-card__count {
  font-size:.68rem; font-weight:800; letter-spacing:.04em;
  border:1px solid var(--java-line); border-radius:999px;
  padding:6px 8px; color:var(--java-pine); background:#fff;
}
.java-local-card__count--pending { color:var(--java-muted); }
.java-local-card--rich h3 { font-family:var(--java-heading); font-size:1.55rem; margin:24px 0 8px; }
.java-local-card--rich p { color:var(--java-muted); font-size:.88rem; line-height:1.55; margin:0; }
.java-local-card__arrow {
  width:38px; height:38px; display:inline-flex; align-items:center; justify-content:center;
  border-radius:50%; margin-top:20px; background:var(--java-pine); color:#fff; font-size:1.1rem;
}
.java-editor-note {
  margin-top:22px; padding:14px 18px; border-radius:14px;
  border:1px dashed var(--java-line); background:#fff; color:var(--java-muted); font-size:.85rem;
}
.java-editor-note strong { color:var(--java-pine); }

.java-local-placeholder {
  width:100%; height:100%; min-height:190px;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px;
  padding:24px;
  background:
    radial-gradient(circle at 80% 20%, rgba(88,197,202,.18), transparent 32%),
    linear-gradient(145deg, #f5faf8, #edf5f2);
  color:var(--java-pine);
}
.java-local-placeholder__icon {
  width:68px; height:68px; border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center;
  background:#fff; border:1px solid var(--java-line);
}
.java-local-placeholder__icon svg { width:34px; height:34px; }
.java-local-placeholder__label {
  font-size:.72rem; text-transform:uppercase; letter-spacing:.12em; font-weight:800;
}
.java-local-placeholder--restaurant { background:linear-gradient(145deg,#fbf8f2,#f1f6f1); }
.java-local-placeholder--beach { background:linear-gradient(145deg,#eef8fa,#f6fbf8); }
.java-local-placeholder--route { background:linear-gradient(145deg,#f1f7ef,#faf8ef); }
.java-local-placeholder--activity { background:linear-gradient(145deg,#eef6f5,#f5f8fb); }
.java-local-placeholder--place { background:linear-gradient(145deg,#f0f6ef,#f7f4ec); }

.java-discovery-card__link {
  display:inline-flex; margin-top:18px; color:var(--java-pine); font-weight:800; font-size:.86rem;
}
.java-archive-count {
  display:inline-flex; margin-top:18px; padding:7px 11px; border:1px solid var(--java-line);
  border-radius:999px; color:var(--java-pine); background:#fff; font-size:.78rem; font-weight:800;
}
.java-local-empty {
  max-width:680px; margin:20px auto 0; text-align:center; padding:54px 28px;
  border:1px solid var(--java-line); border-radius:28px; background:var(--java-soft);
}
.java-local-empty__icon {
  width:72px; height:72px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  background:#fff; color:var(--java-pine); margin-bottom:20px;
}
.java-local-empty__icon svg { width:34px; height:34px; }
.java-local-empty p { color:var(--java-muted); max-width:520px; margin:10px auto 22px; }

.java-local-single__hero {
  margin-bottom:42px; border-radius:28px; overflow:hidden; max-height:560px;
}
.java-local-single__hero img { width:100%; height:auto; max-height:560px; object-fit:cover; display:block; }
.java-local-single__hero--placeholder { height:360px; }
.java-local-single__hero--placeholder .java-local-placeholder { min-height:360px; }

@media(max-width:1100px){
  .java-local-grid--rich { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media(max-width:760px){
  .java-local-grid--rich { grid-template-columns:1fr 1fr; }
  .java-local-card--rich { min-height:220px; }
}
@media(max-width:520px){
  .java-local-grid--rich { grid-template-columns:1fr; }
  .java-local-card--rich { min-height:auto; }
  .java-local-single__hero--placeholder,
  .java-local-single__hero--placeholder .java-local-placeholder { height:260px; min-height:260px; }
}


/* === JAVA 1.5.0 RC2 · Local Gallery === */
.java-local-gallery { margin: 58px 0 46px; }
.java-local-gallery__grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
}
.java-local-gallery__item {
  margin:0;
  border-radius:20px;
  overflow:hidden;
  background:var(--java-soft);
  border:1px solid var(--java-line);
}
.java-local-gallery__item--lead { grid-column:span 2; grid-row:span 2; }
.java-local-gallery__link { display:block; aspect-ratio:4/3; overflow:hidden; }
.java-local-gallery__item--lead .java-local-gallery__link { aspect-ratio:16/10; }
.java-local-gallery__link img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .25s ease; }
@media(hover:hover) and (pointer:fine){
  .java-local-gallery__link:hover img { transform:scale(1.02); }
}
.java-local-gallery figcaption {
  padding:11px 13px;
  display:flex;
  flex-direction:column;
  gap:3px;
  font-size:.82rem;
  color:var(--java-muted);
}
.java-local-gallery figcaption small { font-size:.72rem; opacity:.85; }
@media(max-width:760px){
  .java-local-gallery__grid{grid-template-columns:1fr 1fr}
  .java-local-gallery__item--lead{grid-column:span 2;grid-row:auto}
}
@media(max-width:520px){
  .java-local-gallery__grid{grid-template-columns:1fr}
  .java-local-gallery__item--lead{grid-column:auto}
}


/* JAVA 1.5 RC3 · Promotions coordinated with PMS 0.6.7 */
.java-promo-featured--no-media{grid-template-columns:1fr}
.java-promo-featured--no-media .java-promo-featured-copy{max-width:820px}
.java-promo-more{padding-top:20px}
.java-promo-more .java-section-title{max-width:760px;margin-bottom:28px}
.java-promo-card{display:flex;flex-direction:column;min-height:100%}
.java-promo-card .java-promo-price{margin-top:auto}
.java-promo-card .java-promo-cta{align-self:flex-start;margin-top:10px}


/* === JAVA 1.6.0 RC1 · limpieza comercial + exploración por espacios === */
.java-space-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.java-space-card{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);min-height:330px;border:1px solid var(--java-line);border-radius:26px;overflow:hidden;background:#fff;text-decoration:none;color:inherit;box-shadow:0 12px 36px rgba(36,61,51,.06)}
.java-space-card__media{min-height:280px;background:var(--java-soft)}
.java-space-card__media img{width:100%;height:100%;object-fit:cover;display:block}
.java-space-card__body{padding:28px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}
.java-space-card__icon{width:46px;height:46px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--java-soft);color:var(--java-pine);margin-bottom:18px}
.java-space-card__icon svg{width:24px;height:24px}
.java-space-card h3{font-family:var(--java-heading);font-size:1.6rem;margin:4px 0 10px}
.java-space-card p:not(.java-kicker){color:var(--java-muted);margin:0;line-height:1.6}
.java-space-card__link{margin-top:20px;color:var(--java-pine);font-weight:800}
@media(hover:hover) and (pointer:fine){
  .java-space-card{transition:transform .2s ease,box-shadow .2s ease}
  .java-space-card:hover{transform:translateY(-3px);box-shadow:0 18px 42px rgba(36,61,51,.1)}
}

.java-space-breadcrumb{padding-top:24px}
.java-space-hero{position:relative;min-height:66vh;display:flex;align-items:flex-end;overflow:hidden;background:var(--java-pine)}
.java-space-hero__media{position:absolute;inset:0}
.java-space-hero__media img{width:100%;height:100%;object-fit:cover;display:block}
.java-space-hero__overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,39,31,.08),rgba(20,39,31,.68))}
.java-space-hero__content{position:relative;z-index:2;color:#fff;padding-top:120px;padding-bottom:70px;max-width:900px}
.java-space-hero__content h1{font-family:var(--java-heading);font-size:clamp(2.5rem,6vw,5.5rem);line-height:.98;margin:.2em 0}
.java-space-hero__content p:last-child{max-width:720px;font-size:1.08rem;line-height:1.65}
.java-space-story__grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:70px;align-items:start}
.java-space-story__grid h2{font-family:var(--java-heading);font-size:clamp(2rem,4vw,3.6rem);line-height:1.04;margin:.2em 0}
.java-space-story__text{font-size:1.03rem;line-height:1.8;color:var(--java-muted)}
.java-space-story__text p{margin-top:0}

.java-space-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.java-space-gallery__item{margin:0;border-radius:20px;overflow:hidden;background:var(--java-soft);border:1px solid var(--java-line)}
.java-space-gallery__item--lead{grid-column:span 2;grid-row:span 2}
.java-space-gallery__item .java-gallery-item{width:100%;height:100%;display:block;border:0;padding:0;background:none;cursor:zoom-in}
.java-space-gallery__item img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.java-space-gallery__item--lead img{height:100%;aspect-ratio:auto;min-height:520px}
.java-space-gallery__item figcaption{padding:11px 13px;color:var(--java-muted);font-size:.82rem;background:#fff}

.java-space-nav{background:var(--java-soft)}
.java-space-nav__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.java-space-mini{border-radius:22px;overflow:hidden;background:#fff;border:1px solid var(--java-line);text-decoration:none;color:inherit}
.java-space-mini__media{display:block;aspect-ratio:16/10;overflow:hidden}
.java-space-mini__media img{width:100%;height:100%;object-fit:cover;display:block}
.java-space-mini__body{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px}
.java-space-mini__body strong{font-size:.8rem;letter-spacing:.08em}
.java-space-mini__body span:last-child{color:var(--java-pine);font-weight:800;font-size:.8rem}
.java-space-book{border-top:1px solid var(--java-line)}

@media(max-width:980px){
  .java-space-card{grid-template-columns:1fr}
  .java-space-card__media{min-height:240px}
  .java-space-story__grid{grid-template-columns:1fr;gap:20px}
}
@media(max-width:760px){
  .java-space-card-grid{grid-template-columns:1fr}
  .java-space-hero{min-height:58vh}
  .java-space-hero__content{padding-bottom:46px}
  .java-space-gallery{grid-template-columns:1fr 1fr}
  .java-space-gallery__item--lead{grid-column:span 2;grid-row:auto}
  .java-space-gallery__item--lead img{min-height:0;aspect-ratio:16/10}
  .java-space-nav__grid{grid-template-columns:1fr}
}
@media(max-width:520px){
  .java-space-gallery{grid-template-columns:1fr}
  .java-space-gallery__item--lead{grid-column:auto}
  .java-space-card__body{padding:22px}
}


/* JAVA 1.7.0 RC1 · landing de promoción inteligente */
.java-offer-hero{position:relative;min-height:64vh;display:flex;align-items:flex-end;overflow:hidden;background:linear-gradient(145deg,#eef8f6,#f8fbfa);padding:0}
.java-offer-hero__media{position:absolute;inset:0}.java-offer-hero__media img{width:100%;height:100%;object-fit:cover;display:block}
.java-offer-hero__overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(19,43,34,.10),rgba(19,43,34,.78))}
.java-offer-hero__content{position:relative;z-index:2;padding-top:120px;padding-bottom:70px}
.java-offer-hero.has-image .java-offer-hero__content{color:#fff}.java-offer-hero__content h1{font-family:var(--java-heading);font-size:clamp(2.6rem,6vw,5.5rem);line-height:.98;max-width:900px;margin:.22em 0}
.java-offer-subheadline{max-width:760px;font-size:1.1rem;line-height:1.65}.java-offer-nightly,.java-offer-dates{font-weight:700;opacity:.92}
.java-offer-story{padding:72px 0;background:#fff}.java-offer-story__grid{display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:64px}.java-offer-story__grid h2{font-family:var(--java-heading);font-size:clamp(2rem,4vw,3.3rem);line-height:1.05}.java-offer-story__copy{font-size:1.03rem;line-height:1.8;color:var(--java-muted)}
.java-offer-search{background:var(--java-soft);padding:70px 0 100px}.java-offer-search h2{font-family:var(--java-heading);font-size:clamp(2rem,4vw,3.2rem)}
@media(max-width:760px){.java-offer-hero{min-height:58vh}.java-offer-story__grid{grid-template-columns:1fr;gap:20px}}


/* JAVA 1.7.0 RC2 · Social profiles */
.java-footer__social{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:9px;
}
.java-footer__social a{
  width:38px;
  height:38px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--java-line);
  border-radius:50%;
  color:var(--java-pine);
  background:#fff;
  text-decoration:none;
  transition:transform .18s ease,border-color .18s ease,color .18s ease,background .18s ease;
}
.java-footer__social a:hover,
.java-footer__social a:focus-visible{
  transform:translateY(-2px);
  border-color:var(--java-turquoise);
  color:var(--java-turquoise-dark);
  background:var(--java-soft);
}
.java-footer__social svg{width:18px;height:18px;display:block}
@media(max-width:980px){
  .java-footer__social{justify-content:flex-start}
}
@media(max-width:680px){
  .java-footer__social{justify-content:center}
}
