/* =========================================================
   Visit Serris — Hotels
   ========================================================= */

:root{
  --vs-bg: #edf3f9;
  --vs-surface: #ffffff;
  --vs-surface-soft: #f7fbff;
  --vs-text: #16324f;
  --vs-text-soft: #5d7490;
  --vs-border: rgba(20, 69, 119, 0.10);
  --vs-border-strong: rgba(20, 69, 119, 0.18);
  --vs-shadow: 0 16px 40px rgba(18, 51, 84, 0.10);
  --vs-shadow-soft: 0 10px 26px rgba(18, 51, 84, 0.07);

  --vs-radius-xl: 28px;
  --vs-radius-lg: 24px;
  --vs-radius-md: 16px;

  --vs-blue: #1f78c8;
  --vs-blue-2: #2f95eb;
  --vs-blue-dark: #0d3f70;
  --vs-blue-deep: #0a3157;
  --vs-blue-soft: #eaf4fd;
  --vs-blue-soft-2: #dcecff;

  --vs-success: #0f7a55;
  --vs-success-soft: #dff5ec;
}

html{
  scroll-behavior: smooth;
}

body{
  background: var(--vs-bg);
  color: var(--vs-text);
}

.hotels-page{
  color: var(--vs-text);
}

/* =========================================================
   Base
   ========================================================= */

.hotels-page .container{
  width: min(1120px, calc(100% - 32px));
  margin-inline: auto;
}

.section-heading{
  max-width: 920px;
  margin: 0 0 22px;
}

.section-heading.compact-heading{
  margin-bottom: 20px;
}

.section-kicker,
.hero-image-kicker,
.hero-outline-kicker{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 14px;
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--vs-blue);
  font-weight: 800;
}

.section-heading h2,
.hero-intro-left h2,
.editorial-main h2{
  margin: 0;
  line-height: 1.06;
  letter-spacing: -0.04em;
  color: var(--vs-blue-dark);
}

.section-heading h2{
  font-size: clamp(1.8rem, 2.7vw, 2.5rem);
}

.hotels-categories-premium .section-heading h2,
.hotel-featured .section-heading h2,
.hotels-directory .section-heading h2{
  font-size: clamp(1.8rem, 2.7vw, 2.4rem);
  max-width: 920px;
}

.section-heading p,
.hero-description,
.editorial-main p,
.featured-body p,
.hotel-category-body p,
.place-description,
.card-address{
  color: var(--vs-text-soft);
  line-height: 1.65;
  font-size: 1rem;
}

.place-location{
  margin: 0 0 8px;
  color: var(--vs-blue-dark);
  font-size: .93rem;
  font-weight: 700;
  letter-spacing: .02em;
}

.place-tags{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 2px 0 4px;
}

.place-tags span{
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 0 10px;
  border-radius: 999px;
  background: var(--vs-blue-soft);
  color: var(--vs-blue-dark);
  font-size: .82rem;
  font-weight: 700;
}

.btn-read,
.hero-btn,
.card-btn,
.filter-reset{
  appearance: none;
  text-decoration: none;
  transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease, color .2s ease, border-color .2s ease;
}

.btn-read:hover,
.hero-btn:hover,
.card-btn:hover,
.filter-reset:hover{
  transform: translateY(-1px);
}

.listing-empty{
  padding: 24px;
  border-radius: 22px;
  background: rgba(255,255,255,0.86);
  border: 1px solid var(--vs-border);
  color: var(--vs-text-soft);
  box-shadow: var(--vs-shadow-soft);
}

/* =========================================================
   Hero
   ========================================================= */

.hotels-hero-image{
  position: relative;
  min-height: clamp(420px, 58vh, 620px);
  overflow: hidden;
  background: var(--vs-blue-deep);
}

.hotels-hero-image .hero-bg{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.hero-image-overlay{
  position: relative;
  z-index: 1;
  min-height: inherit;
  display: flex;
  align-items: end;
  padding: 56px 0 28px;
  background: linear-gradient(180deg, rgba(8, 28, 49, 0.10) 0%, rgba(10, 48, 84, 0.32) 38%, rgba(10, 49, 87, 0.82) 100%);
}

.hero-premium-panel{
  max-width: 720px;
  padding: 24px 26px;
  border-radius: 30px;
  background: linear-gradient(180deg, rgba(255,255,255,0.14), rgba(255,255,255,0.08));
  border: 1px solid rgba(220,236,255,0.18);
  backdrop-filter: blur(12px);
  box-shadow: 0 24px 70px rgba(0,0,0,0.20);
}

.hero-image-kicker{
  color: #d8ecff;
}

.hero-image-title{
  margin: 0;
  color: #fff;
  font-size: clamp(2rem, 4.2vw, 3.8rem);
  line-height: .95;
  letter-spacing: -0.05em;
  text-wrap: balance;
}

.hero-image-title span{
  display: block;
  color: #dff0ff;
}

.hero-premium-line{
  width: 84px;
  height: 3px;
  margin: 22px 0 18px;
  border-radius: 999px;
  background: linear-gradient(90deg, #95ceff, rgba(149,206,255,0.15));
}

.hero-image-subtitle{
  max-width: 58ch;
  margin: 0;
  color: rgba(255,255,255,0.90);
  font-size: 1.05rem;
  line-height: 1.75;
}

.hero-actions{
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 28px;
}

.hero-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 20px;
  border-radius: 999px;
  font-weight: 700;
  font-size: .95rem;
  border: 0;
}

.hero-btn-primary{
  background: var(--vs-blue);
  color: #fff;
  box-shadow: 0 12px 28px rgba(31, 120, 200, 0.28);
}

.hero-btn-primary:hover{
  background: var(--vs-blue-2);
}

.hero-btn-secondary{
  color: #fff;
  border: 1px solid rgba(221,239,255,0.22);
  background: rgba(255,255,255,0.08);
}

.hero-btn-secondary:hover{
  background: rgba(255,255,255,0.14);
}

/* =========================================================
   Intro
   ========================================================= */

.hotels-hero-intro{
  padding: 24px 0;
}

.hero-intro-grid{
  display: grid;
  grid-template-columns: 1fr 1.08fr;
  gap: 28px;
  align-items: center;
}

.hero-intro-left h2{
  font-size: clamp(1.8rem, 3vw, 2.6rem);
}

.hero-intro-right{
  padding: 22px 24px;
  border-radius: var(--vs-radius-xl);
  background: rgba(255,255,255,0.82);
  border: 1px solid rgba(20, 69, 119, 0.08);
  box-shadow: var(--vs-shadow-soft);
}

.breadcrumb{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
  font-size: .92rem;
  color: var(--vs-text-soft);
}

.breadcrumb a{
  color: var(--vs-blue-dark);
  text-decoration: none;
}

.hero-description{
  margin: 0;
}

/* =========================================================
   Categories
   ========================================================= */

.hotels-categories-premium{
  padding: 24px 0;
}

.hotel-categories-grid{
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
}

.hotel-category-card{
  display: flex;
  flex-direction: column;
  min-height: 100%;
  overflow: hidden;
  border-radius: 24px;
  background: linear-gradient(180deg, rgba(255,255,255,0.96), rgba(244,249,255,0.92));
  border: 1px solid rgba(20, 69, 119, 0.08);
  box-shadow: var(--vs-shadow-soft);
}

.hotel-category-media{
  height: 190px;
  overflow: hidden;
  background: #dfe9f5;
}

.hotel-category-media img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .45s ease;
}

.hotel-category-card:hover .hotel-category-media img{
  transform: scale(1.04);
}

.hotel-category-body{
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 18px;
}

.hotel-category-body h3{
  margin: 0;
  font-size: 1.08rem;
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: var(--vs-blue-dark);
}

.hotel-category-body p{
  margin: 0;
  flex: 1;
}

.btn-read{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: flex-start;
  min-height: 42px;
  padding: 0 18px;
  border-radius: 999px;
  border: 1px solid var(--vs-border);
  background: #fff;
  color: var(--vs-blue-dark);
  font-weight: 700;
  box-shadow: 0 8px 18px rgba(18, 51, 84, 0.05);
}

.btn-read:hover{
  border-color: var(--vs-border-strong);
  box-shadow: 0 12px 22px rgba(18, 51, 84, 0.08);
}

/* =========================================================
   Featured
   ========================================================= */

.hotel-featured{
  padding: 24px 0;
}

.featured-grid{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  align-items: stretch;
}

.featured-card{
  display: flex;
  flex-direction: column;
  min-height: 100%;
  overflow: hidden;
  border-radius: 24px;
  background: linear-gradient(180deg, rgba(255,255,255,0.98), rgba(244,249,255,0.94));
  border: 1px solid rgba(20, 69, 119, 0.08);
  box-shadow: var(--vs-shadow);
}

.featured-image-link{
  display: block;
  height: 200px;
  overflow: hidden;
  background: #dfe9f5;
}

.featured-image-link img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .45s ease;
}

.featured-card:hover .featured-image-link img{
  transform: scale(1.04);
}

.featured-body{
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 18px 18px 20px;
}

.featured-body h3{
  margin: 0;
  font-size: 1.18rem;
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: var(--vs-blue-dark);
}

.featured-body p{
  margin: 0;
}

.featured-badges{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 2px;
}

.badge-premium,
.badge-new,
.card-badge{
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 0 11px;
  border-radius: 999px;
  font-size: .76rem;
  font-weight: 800;
  letter-spacing: .02em;
}

.badge-premium,
.card-badge{
  background: linear-gradient(180deg, var(--vs-blue-dark), var(--vs-blue-deep));
  color: #fff;
  box-shadow: 0 8px 16px rgba(13, 63, 112, 0.18);
}

.badge-new{
  background: var(--vs-success-soft);
  color: var(--vs-success);
}

/* =========================================================
   Directory
   ========================================================= */

.hotels-directory{
  padding: 24px 0;
}

.directory-layout{
  width: min(1160px, calc(100% - 32px));
  margin: 0 auto;
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  gap: 24px;
  align-items: start;
}

.directory-sidebar{
  position: sticky;
  top: 92px;
}

.directory-filters{
  padding: 24px;
  border-radius: 24px;
  background: rgba(255,255,255,0.86);
  border: 1px solid rgba(20, 69, 119, 0.08);
  box-shadow: var(--vs-shadow-soft);
}

.filter-block + .filter-block{
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid rgba(20, 69, 119, 0.08);
}

.filter-title{
  display: block;
  margin: 0 0 12px;
  font-size: .93rem;
  font-weight: 800;
  color: var(--vs-blue-dark);
}

.search-box{
  display: flex;
  gap: 10px;
}

.search-box input{
  width: 100%;
  min-width: 0;
  min-height: 46px;
  padding: 0 14px;
  border-radius: 14px;
  border: 1px solid var(--vs-border);
  background: #fff;
  color: var(--vs-text);
  font-size: 1rem;
}

.search-box button{
  min-width: 46px;
  min-height: 46px;
  border: 0;
  border-radius: 14px;
  background: var(--vs-blue-dark);
  color: #fff;
  cursor: pointer;
}

.filter-check{
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 36px;
  color: var(--vs-text-soft);
  font-size: .95rem;
}

.filter-check input{
  accent-color: var(--vs-blue);
}

.filter-actions{
  margin-top: 20px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.filter-reset{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  border-radius: 999px;
  border: 1px solid var(--vs-border);
  background: #fff;
  color: var(--vs-blue-dark);
  font-weight: 700;
}

.directory-main{
  min-width: 0;
}

.directory-toolbar{
  display: flex;
  justify-content: space-between;
  gap: 18px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}

.toolbar-group{
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.toolbar-label{
  font-size: .86rem;
  font-weight: 800;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--vs-text-soft);
}

.toolbar-link{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 0 18px;
  border-radius: 999px;
  border: 1px solid var(--vs-border);
  background: rgba(255,255,255,0.92);
  color: var(--vs-blue-dark);
  text-decoration: none;
  font-weight: 700;
}

.toolbar-link.is-active{
  background: var(--vs-blue-dark);
  color: #fff;
  border-color: var(--vs-blue-dark);
}

.directory-grid{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  align-items: stretch;
}

.directory-grid.directory-list{
  grid-template-columns: 1fr;
}

.directory-card{
  display: flex;
  flex-direction: column;
  min-height: 100%;
  position: relative;
  overflow: hidden;
  border-radius: 24px;
  background: linear-gradient(180deg, rgba(255,255,255,0.98), rgba(244,249,255,0.94));
  border: 1px solid rgba(20, 69, 119, 0.08);
  box-shadow: var(--vs-shadow-soft);
}

.directory-grid.directory-list .directory-card{
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
}

.directory-card-image{
  position: relative;
  display: block;
  height: 190px;
  overflow: hidden;
  background: #dfe9f5;
}

.directory-grid.directory-list .directory-card-image{
  height: 100%;
  min-height: 220px;
}

.directory-card-image img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .45s ease;
}

.directory-card:hover .directory-card-image img{
  transform: scale(1.04);
}

.directory-card-image .card-badge{
  position: absolute;
  left: 14px;
  top: 14px;
  z-index: 2;
}

.directory-card-body{
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px 18px 12px;
}

.directory-card-body h3{
  margin: 0;
  font-size: 1.14rem;
  line-height: 1.22;
  letter-spacing: -0.02em;
}

.directory-card-body h3 a{
  color: var(--vs-blue-dark);
  text-decoration: none;
}

.place-description{
  margin: 0;
}

.directory-card-footer{
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  padding: 0 18px 18px;
  margin-top: auto;
}

.card-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 18px;
  border-radius: 999px;
  font-weight: 700;
  border: 0;
}

.card-btn-primary{
  background: var(--vs-blue-dark);
  color: #fff;
  box-shadow: 0 12px 22px rgba(13, 63, 112, 0.16);
}

.card-btn-primary:hover{
  background: var(--vs-blue);
}

.card-btn-secondary{
  border: 1px solid var(--vs-border);
  background: #fff;
  color: var(--vs-blue-dark);
}

.directory-pagination{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 24px;
}

.pagination-arrow{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  height: 42px;
  padding: 0 12px;
  border-radius: 999px;
  border: 1px solid var(--vs-border);
  background: rgba(255,255,255,0.92);
  color: var(--vs-blue-dark);
  text-decoration: none;
  font-weight: 700;
}

.pagination-arrow.is-active{
  background: var(--vs-blue-dark);
  color: #fff;
  border-color: var(--vs-blue-dark);
}

/* =========================================================
   Editorial
   ========================================================= */

.hotels-editorial{
  padding: 24px 0 52px;
}

.editorial-grid{
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 20px;
}

.editorial-main,
.info-card{
  padding: 22px 24px;
  border-radius: 24px;
  background: rgba(255,255,255,0.86);
  border: 1px solid rgba(20, 69, 119, 0.08);
  box-shadow: var(--vs-shadow-soft);
}

.editorial-main h2{
  font-size: clamp(1.8rem, 3vw, 2.6rem);
  margin-bottom: 18px;
}

.info-card h3{
  margin: 0 0 16px;
  color: var(--vs-blue-dark);
  font-size: 1.2rem;
  letter-spacing: -0.02em;
}

.info-card ul{
  margin: 0;
  padding-left: 20px;
  color: var(--vs-text-soft);
  line-height: 1.8;
}

/* =========================================================
   Responsive
   ========================================================= */

@media (max-width: 1180px){
  .hotel-categories-grid,
  .featured-grid,
  .directory-grid{
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .directory-layout{
    grid-template-columns: 1fr;
  }

  .directory-sidebar{
    position: static;
  }

  .editorial-grid{
    grid-template-columns: 1fr;
  }
}

@media (max-width: 900px){
  .hero-intro-grid{
    grid-template-columns: 1fr;
    gap: 18px;
  }

  .hotel-categories-grid,
  .featured-grid,
  .directory-grid{
    grid-template-columns: 1fr;
  }

  .directory-grid.directory-list .directory-card{
    grid-template-columns: 1fr;
  }

  .directory-grid.directory-list .directory-card-image{
    min-height: 190px;
    height: 190px;
  }

  .hero-premium-panel{
    padding: 26px 22px;
    border-radius: 24px;
  }

  .hotels-hero-image{
    min-height: 420px;
  }
}

@media (max-width: 768px){
  .hotels-page .container,
  .directory-layout{
    width: min(100% - 24px, 100%);
  }

  .section-heading h2,
  .hero-intro-left h2,
  .editorial-main h2{
    font-size: clamp(1.9rem, 8vw, 2.6rem);
  }

  .hotel-category-media,
  .featured-image-link,
  .directory-card-image{
    height: 190px;
  }
}

@media (max-width: 640px){
  .hero-image-overlay{
    padding: 50px 0 20px;
  }

  .hero-actions,
  .directory-card-footer,
  .directory-toolbar{
    gap: 10px;
  }

  .hero-btn,
  .card-btn,
  .filter-reset{
    width: 100%;
  }

  .directory-filters,
  .editorial-main,
  .info-card,
  .hotel-category-body,
  .featured-body,
  .directory-card-body{
    padding-left: 18px;
    padding-right: 18px;
  }

  .directory-card-footer{
    padding-left: 18px;
    padding-right: 18px;
    padding-bottom: 18px;
  }

  .hero-premium-panel{
    max-width: 100%;
  }

  .hero-image-title{
    font-size: clamp(2rem, 10vw, 3.2rem);
  }
}