/*
  ============================================================
  STYLE.CSS — All the visual styling for See You Lodge
  ============================================================

  Welcome! This file is called a "stylesheet". It tells the
  browser HOW things should look: colors, sizes, spacing,
  fonts, layout, animations, and more.

  CSS (Cascading Style Sheets) works by targeting HTML
  elements using "selectors" and then applying "rules" to them.

  Example:
    h1 { color: red; }
    ^     ^      ^
    |     |      value
    |     property
    selector (targets all <h1> elements)

  The "cascading" part means rules can override each other —
  later rules (or more specific ones) win.
*/


/* ── Reset & Base ─────────────────────────────────────────────────────────

  First, we "reset" the browser's default styles. Every browser
  (Chrome, Firefox, Safari) has its own default styles, which can
  make things look different on different devices. We zero them out
  so we start from a clean slate.

  The * selector means "select EVERY element on the page".
  *::before and *::after are "pseudo-elements" — invisible extra
  elements the browser can insert before/after any element.

  box-sizing: border-box — this changes how width is calculated.
  By default, padding adds to an element's width, which is confusing.
  border-box makes width include the padding, which is easier to work with.
*/
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }


/* ── Color Variables (:root) ───────────────────────────────────────────────

  :root is a special selector that refers to the very top of the page
  (the <html> element). Variables defined here are available EVERYWHERE.

  CSS variables start with two dashes: --variable-name
  We use them with var(--variable-name).

  Why use variables? Instead of writing the same color (#1B4F8A) in
  50 different places, we name it --navy and use that name.
  If we ever want to change the color, we only change it in ONE place!

  Think of these like giving names to your crayons:
    --navy     = a deep ocean blue (navigation, headings, footer)
    --navy-l   = a medium blue (buttons, highlights)
    --orange   = a warm golden orange (call-to-action buttons)
    --sky      = a soft light blue (the page background)
    --text     = the main dark text color
    --shadow   = a subtle drop shadow
    --radius   = rounded corner size
*/
:root {
  --navy:     #1B4F8A;   /* deep blue — navigation, headings, footer */
  --navy-l:   #2E6DB4;   /* medium blue — hover states, links, highlights */
  --navy-d:   #123568;   /* darker navy — deep text on light backgrounds */
  --orange:   #F4A623;   /* warm orange — main call-to-action color */
  --orange-l: #F7B84E;   /* lighter orange — used on hover */
  --sky:      #F0F6FF;   /* soft light blue — main page background */
  --sky-m:    #D8E8FF;   /* medium light blue — alternate sections, tags */
  --sky-d:    #B8D0F0;   /* deeper light blue — borders, dividers */
  --text:     #1A2F4A;   /* dark navy — main body text */
  --text-m:   #2E4E6E;   /* medium navy — secondary text */
  --text-l:   #6B8CAD;   /* muted blue-grey — hints, captions */
  --white:    #ffffff;   /* pure white */

  /* Shadows — these create the 3D "floating" effect on cards.
     rgba() means Red, Green, Blue, Alpha (transparency).
     The last number (0.12) is opacity: 0 = invisible, 1 = solid. */
  --shadow:   0 4px 24px rgba(27,79,138,.12);
  --shadow-l: 0 2px 12px rgba(27,79,138,.08);

  /* Border radius — how rounded the corners are (in pixels).
     0px = sharp corners, 50% = a circle. */
  --radius:   12px;
  --radius-l: 20px;
}


/* ── Base HTML & Body ──────────────────────────────────────────────────────

  html { scroll-behavior: smooth } makes the page glide smoothly
  when you click a link that jumps to another section (like "#about"),
  instead of jumping instantly.

  The <body> is the visible part of the page. We set the default
  font, background color, text color, and line-height here so all
  text inherits these styles automatically.

  line-height: 1.65 means each line of text has 1.65x the font size
  as space — this makes paragraphs easier to read (not too cramped).
*/
html { scroll-behavior: smooth; }

body {
  font-family: 'Inter', sans-serif;  /* loaded from Google Fonts in index.html */
  background: var(--sky);
  color: var(--text);
  line-height: 1.65;
  font-size: 16px;                   /* 1rem = 16px throughout the page */
}

/* These make images and links behave more predictably */
img { display: block; max-width: 100%; }  /* images never overflow their container */
a { color: inherit; text-decoration: none; }  /* links look like normal text */

/* All headings use the decorative serif font (Playfair Display) */
h1, h2, h3, h4 {
  font-family: 'Playfair Display', serif;
  line-height: 1.25;
}

/* .container is a reusable "wrapper" class. Anything with class="container"
   will be centered on the page and have a max width of 1100px.
   margin: 0 auto means "no top/bottom margin, auto left/right" —
   which centers a block element. */
.container {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 20px;
}


/* ── Navigation Bar ────────────────────────────────────────────────────────

  The <nav> sticks to the top of the screen as you scroll.
  position: fixed means it stays at the same place on screen regardless
  of scrolling. z-index: 100 puts it on top of everything else
  (higher z-index = closer to you, like layers in a stack).

  backdrop-filter: blur creates the frosted-glass effect behind the nav.
  transition: box-shadow .3s means any change to box-shadow
  animates over 0.3 seconds instead of happening instantly.
*/
nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  background: rgba(240,246,255,.96);   /* sky blue with 96% opacity (slightly see-through) */
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(184,208,240,.5);
  transition: box-shadow .3s;
}

/* When JavaScript adds the 'scrolled' class, a shadow appears */
nav.scrolled { box-shadow: 0 2px 20px rgba(27,79,138,.15); }

/* The inner wrapper centers and sizes the nav content */
.nav-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 20px;
  height: 64px;
  display: flex;                   /* flexbox: arranges children in a row */
  align-items: center;             /* vertically centered */
  justify-content: space-between;  /* logo on left, links on right */
}

/* The logo area — a flex row of the icon + text */
.nav-logo {
  display: flex;
  align-items: center;
  gap: 10px;   /* gap between flex children (the icon and text) */
}

/* The blue square icon next to the logo text */
.nav-logo-icon {
  width: 36px; height: 36px;
  background: linear-gradient(135deg, var(--navy), var(--navy-l));
  border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px;
}

.nav-logo-text {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--navy-d);
}

/* The <span> inside the logo text shows the smaller subtitle */
.nav-logo-text span {
  display: block;             /* makes it appear on its own line */
  font-family: 'Inter', sans-serif;
  font-size: .7rem;
  font-weight: 400;
  color: var(--text-l);
  letter-spacing: .04em;      /* adds tiny space between letters */
}

/* The list of nav links (About, Rooms, etc.)
   list-style: none removes the bullet points */
.nav-links {
  display: flex;
  gap: 32px;
  list-style: none;
}

.nav-links a {
  font-size: .88rem;
  font-weight: 500;
  color: var(--text-m);
  letter-spacing: .02em;
  transition: color .2s;
  position: relative;   /* needed so the ::after underline is positioned relative to this */
}

/* This creates an animated underline on hover.
   ::after adds a fake element AFTER the link.
   transform: scaleX(0) makes it invisible (zero width).
   On hover, it scales to 1 (full width). */
.nav-links a::after {
  content: '';                        /* required for pseudo-elements to show */
  position: absolute;
  bottom: -3px; left: 0; right: 0;
  height: 2px;
  background: var(--orange);
  transform: scaleX(0);               /* hidden by default */
  transition: transform .25s;
}

.nav-links a:hover { color: var(--navy); }
.nav-links a:hover::after { transform: scaleX(1); }  /* show underline on hover */

/* The "Contact Us" button in the nav — styled differently to stand out */
.nav-cta {
  background: var(--navy);
  color: var(--white) !important;    /* !important forces this to override other rules */
  padding: 8px 18px;
  border-radius: 8px;
  font-size: .85rem !important;
  transition: background .2s !important;
}

.nav-cta:hover { background: var(--navy-l) !important; }
.nav-cta::after { display: none !important; }   /* no underline on the button */

/* The hamburger menu icon (three horizontal lines) — only shown on mobile */
.hamburger {
  display: none;            /* hidden by default (shown in @media query below) */
  flex-direction: column;
  gap: 5px;
  cursor: pointer;          /* shows a hand cursor on hover */
  padding: 4px;
}

/* Each of the three lines in the hamburger icon */
.hamburger span {
  display: block;
  width: 24px; height: 2px;
  background: var(--text);
  border-radius: 2px;
  transition: all .3s;
}

/* The mobile dropdown menu — hidden until JavaScript adds class="open" */
.mobile-menu {
  display: none;
  position: fixed;
  top: 64px; left: 0; right: 0;
  background: var(--sky);
  border-bottom: 1px solid var(--sky-m);
  padding: 20px;
  z-index: 99;
  flex-direction: column;
  gap: 4px;
}

.mobile-menu.open { display: flex; }   /* JavaScript toggles this class */

.mobile-menu a {
  display: block;
  padding: 12px 16px;
  font-size: .95rem;
  font-weight: 500;
  color: var(--text-m);
  border-radius: 8px;
  transition: background .2s;
}

.mobile-menu a:hover { background: var(--sky-m); }


/* ── Hero Section ───────────────────────────────────────────────────────────

  The "hero" is the big section at the very top of the page —
  full-screen, with the mountain gradient background.

  100svh = 100% of the screen's visible height (svh = small viewport height,
  which handles mobile browsers better than plain vh).

  overflow: hidden clips the mountain SVG that would otherwise extend outside.
*/
.hero {
  min-height: 100svh;
  position: relative;          /* needed so child elements can use position: absolute */
  display: flex;
  flex-direction: column;      /* stack children vertically */
  align-items: center;         /* center horizontally */
  justify-content: center;     /* center vertically */
  overflow: hidden;
  /* The real photo is the background — it scales to cover the full section,
     centered so the mountain peaks are always visible */
  background: url('images/annapurna-mountain-panorama.jpg') center -15% / cover no-repeat;
  text-align: center;
  padding: 120px 20px 80px;
}

/* ::before adds a dark blue overlay on top of the pho  to.
   This keeps all the white text and buttons readable against the bright image.
   rgba(15,42,74,0.55) = deep navy blue at 55% opacity.
   z-index: 1 stacks this above the background image but below our content. */
.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(15, 42, 74, 0.55);
  z-index: 1;
  pointer-events: none;
}

/* The mountain silhouette SVG sits at the bottom of the hero.
   z-index: 2 puts it above the dark overlay so it's still visible. */
.hero-mountains {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  width: 100%;
  pointer-events: none;
  z-index: 2;
}

/* Container for the randomly placed star dots.
   z-index: 2 puts stars above the overlay. */
.hero-stars {
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 2;
}

/* .hero-content wraps all the text and buttons in the hero.
   position: relative + z-index: 3 ensures it renders above both
   the dark overlay (z-index 1) and the stars/mountains (z-index 2).
   display: flex + flex-direction: column mimics the parent hero layout
   so all children stack vertically and stay centered. */
.hero-content {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* Each individual star is a tiny circle */
.star {
  position: absolute;
  width: 2px; height: 2px;
  background: rgba(255,255,255,.9);
  border-radius: 50%;              /* 50% = circle */
  animation: twinkle 3s infinite alternate;
}

/* @keyframes defines a named animation.
   'alternate' means it plays forward, then backward, then forward... */
@keyframes twinkle {
  0%   { opacity: .2; transform: scale(1); }
  100% { opacity: 1;  transform: scale(1.4); }
}

/* The small pill badge at the top of the hero ("Annapurna Circuit · 1,935m") */
.hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(255,255,255,.15);    /* very transparent white */
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 40px;                  /* very rounded = pill shape */
  padding: 6px 16px;
  font-size: .8rem;
  color: rgba(255,255,255,.9);
  letter-spacing: .06em;
  font-weight: 500;
  margin-bottom: 28px;
  text-transform: uppercase;
}

/* ::before adds content before the element — here it's the mountain emoji */
.hero-badge::before { content: '🏔'; font-size: 1rem; }

/* clamp(min, preferred, max) — the font scales with screen width,
   but never goes below 2.4rem or above 4.2rem. Great for responsive design! */
.hero h1 {
  font-size: clamp(2.4rem, 6vw, 4.2rem);
  color: var(--white);
  text-shadow: 0 2px 20px rgba(0,0,0,.4);
  margin-bottom: 10px;
}

/* The <em> (italic) word in the h1 gets a warm orange color */
.hero h1 em {
  color: #F4A623;
  font-style: italic;
}

.hero-tagline {
  font-size: clamp(1rem, 2.5vw, 1.3rem);
  color: rgba(255,255,255,.85);
  margin-bottom: 40px;
  font-weight: 300;
  max-width: 520px;
}

/* The row of small feature pills (🏡 Family-run, 🍞 Homemade bread, etc.) */
.hero-pills {
  display: flex;
  flex-wrap: wrap;      /* wrap to next line if there isn't enough space */
  gap: 10px;
  justify-content: center;
  margin-bottom: 48px;
}

.pill {
  background: rgba(255,255,255,.18);
  backdrop-filter: blur(6px);
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 30px;
  padding: 7px 16px;
  font-size: .82rem;
  color: var(--white);
  display: flex;
  align-items: center;
  gap: 6px;
}

/* The two hero buttons (Get in Touch, Learn More) */
.hero-buttons {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  justify-content: center;
}

/* Shared button styles — both .btn-primary and .btn-ghost use this base */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 28px;
  border-radius: 10px;
  font-size: .95rem;
  font-weight: 600;
  cursor: pointer;
  border: none;
  transition: all .25s;
  text-decoration: none;
}

/* The solid orange "Get in Touch" button */
.btn-primary {
  background: var(--orange);
  color: var(--white);
  box-shadow: 0 4px 20px rgba(244,166,35,.4);
}

.btn-primary:hover {
  background: var(--orange-l);
  transform: translateY(-2px);    /* floats up 2px on hover */
  box-shadow: 0 6px 28px rgba(244,166,35,.5);
}

/* The transparent "Learn More" button */
.btn-ghost {
  background: rgba(255,255,255,.15);
  color: var(--white);
  border: 1.5px solid rgba(255,255,255,.35);
  backdrop-filter: blur(6px);
}

.btn-ghost:hover {
  background: rgba(255,255,255,.25);
  transform: translateY(-2px);
}

/* The animated "scroll down" arrow at the bottom of the hero */
.scroll-hint {
  position: absolute;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%);   /* centers it horizontally */
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  color: rgba(255,255,255,.6);
  font-size: .75rem;
  letter-spacing: .08em;
  animation: bounce 2s infinite;
  z-index: 3;   /* above overlay and stars */
}

.scroll-hint svg { opacity: .7; }

/* The bouncing animation for the scroll hint */
@keyframes bounce {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50%       { transform: translateX(-50%) translateY(6px); }
}


/* ── Section Shared Styles ──────────────────────────────────────────────────

  These styles apply to ALL sections. Instead of repeating padding
  on every single section, we write it once here.
*/
section { padding: 88px 0; }

/* The small ALL-CAPS label above section headings (e.g. "ABOUT US") */
.section-eyebrow {
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--orange);
  margin-bottom: 10px;
}

.section-title {
  font-size: clamp(1.8rem, 4vw, 2.6rem);
  color: var(--navy-d);
  margin-bottom: 16px;
}

.section-lead {
  font-size: 1.05rem;
  color: var(--text-m);
  max-width: 560px;
  line-height: 1.7;
}

/* The short orange horizontal line below section titles */
.divider {
  width: 52px; height: 3px;
  background: linear-gradient(90deg, var(--orange), var(--orange-l));
  border-radius: 4px;
  margin: 18px 0 28px;
}


/* ── About Section ──────────────────────────────────────────────────────────

  display: grid with grid-template-columns: 1fr 1fr
  creates a two-column layout where both columns are equal width.
  "1fr" means "1 fraction of the available space".
*/
#about { background: var(--white); }

.about-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: center;
}

.about-visual {
  position: relative;
}

/* The main blue card on the left side of the About section */
.about-card-main {
  background: linear-gradient(145deg, var(--navy), var(--navy-d));
  border-radius: var(--radius-l);
  padding: 48px 40px;
  color: var(--white);
  position: relative;
  overflow: hidden;
}

/* Decorative circles in the background of the card using ::before and ::after */
.about-card-main::before {
  content: '';
  position: absolute;
  top: -40px; right: -40px;
  width: 180px; height: 180px;
  background: rgba(255,255,255,.05);
  border-radius: 50%;
}

.about-card-main::after {
  content: '';
  position: absolute;
  bottom: -60px; left: -30px;
  width: 220px; height: 220px;
  background: rgba(255,255,255,.03);
  border-radius: 50%;
}

.about-illustration {
  font-size: 4rem;
  margin-bottom: 20px;
  display: block;
}

.about-card-main h3 {
  font-size: 1.5rem;
  margin-bottom: 12px;
  color: var(--white);
}

.about-card-main p {
  font-size: .92rem;
  color: rgba(255,255,255,.8);
  line-height: 1.7;
}

/* The 2x2 grid of small white cards below the main blue card */
.about-float-cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-top: 12px;
}

.float-card {
  background: var(--white);
  border-radius: var(--radius);
  padding: 18px;
  box-shadow: var(--shadow-l);
  border: 1px solid rgba(184,208,240,.3);
}

.float-card .icon { font-size: 1.5rem; margin-bottom: 8px; }

.float-card h4 {
  font-family: 'Inter', sans-serif;
  font-size: .82rem;
  font-weight: 600;
  color: var(--navy);
  margin-bottom: 4px;
}

.float-card p {
  font-size: .78rem;
  color: var(--text-l);
  line-height: 1.5;
}

/* The list of feature items on the right side of the About section */
.about-features {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.about-feature {
  display: flex;
  gap: 16px;
  align-items: flex-start;
}

/* The square icon box next to each feature item */
.feature-icon {
  width: 44px; height: 44px;
  flex-shrink: 0;             /* don't shrink when space is tight */
  background: linear-gradient(135deg, var(--sky-m), var(--sky));
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
  border: 1px solid var(--sky-d);
}

.feature-text h4 {
  font-family: 'Inter', sans-serif;
  font-size: .95rem;
  font-weight: 600;
  color: var(--navy-d);
  margin-bottom: 3px;
}

.feature-text p { font-size: .88rem; color: var(--text-m); }


/* ── Rooms & Food Section ───────────────────────────────────────────────────

  repeat(3, 1fr) = three equal columns. It's shorthand for "1fr 1fr 1fr".
*/
#rooms { background: var(--sky); }

.rooms-intro {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  margin-bottom: 56px;
}

.card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

/* Each room/feature card */
.card {
  background: var(--white);
  border-radius: var(--radius-l);
  overflow: hidden;
  box-shadow: var(--shadow-l);
  border: 1px solid rgba(184,208,240,.3);
  transition: transform .3s, box-shadow .3s;
}

/* Cards "lift" on hover */
.card:hover {
  transform: translateY(-6px);
  box-shadow: var(--shadow);
}

/* The colorful top area of each card */
.card-header {
  height: 160px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 3rem;
  position: relative;
  overflow: hidden;
}

.card-header::before {
  content: '';
  position: absolute;
  inset: 0;          /* shorthand for top:0; right:0; bottom:0; left:0 */
  opacity: .08;
}

/* Different background gradients for each card header — all in blue tones */
.card-h-green  { background: linear-gradient(135deg, #c8e0f8, #7ab4e8); }
.card-h-brown  { background: linear-gradient(135deg, #d8eaff, #8ab4e8); }
.card-h-orange { background: linear-gradient(135deg, #ffe5b8, #f4c06a); }
.card-h-blue   { background: linear-gradient(135deg, #c0d8f5, #7aaad8); }
.card-h-red    { background: linear-gradient(135deg, #d8e8ff, #6898d8); }
.card-h-gold   { background: linear-gradient(135deg, #fff0cc, #f4c860); }

.card-body { padding: 22px; }
.card-body h3 { font-size: 1.1rem; margin-bottom: 8px; color: var(--navy-d); }
.card-body p  { font-size: .87rem; color: var(--text-m); line-height: 1.6; }

/* The small tag labels at the bottom of each card ("Mountain view", "Hot water", etc.) */
.card-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 14px;
}

.tag {
  font-size: .72rem;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 20px;
  background: var(--sky-m);
  color: var(--navy);
  letter-spacing: .03em;
}

.tag-green { background: #c8e4ff; color: var(--navy-d); }
.tag-amber { background: #fde8c0; color: #a05f00; }


/* ── Food Banner ────────────────────────────────────────────────────────────

  The warm blue/orange banner with the food menu items.
  It's a two-column grid: text on the left, food items grid on the right.

  ::after creates a decorative oversized bread emoji in the background.
  pointer-events: none lets clicks pass through it.
*/
.food-banner {
  background: linear-gradient(135deg, var(--navy), var(--navy-l));
  border-radius: var(--radius-l);
  padding: 48px 40px;
  margin-top: 48px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: center;
  color: var(--white);
  overflow: hidden;
  position: relative;
}

.food-banner::after {
  content: '🍞';
  position: absolute;
  right: -10px;
  top: -20px;
  font-size: 9rem;
  opacity: .12;
  pointer-events: none;
}

.food-banner h3 {
  font-size: 1.8rem;
  margin-bottom: 12px;
}

.food-banner p {
  color: rgba(255,255,255,.85);
  font-size: .95rem;
  line-height: 1.7;
}

/* A 2x4 grid of individual menu items */
.food-items {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.food-item {
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 10px;
  padding: 12px 14px;
  font-size: .85rem;
  color: var(--white);
  display: flex;
  align-items: center;
  gap: 8px;
}


/* ── Location Section ───────────────────────────────────────────────────────

  5fr 4fr means the left column takes 5 parts and the right takes 4 parts
  of the total space — so the left is slightly wider.
*/
#location { background: var(--white); }

.location-grid {
  display: grid;
  grid-template-columns: 5fr 4fr;
  gap: 56px;
  align-items: start;
}

/* The visual trail map card */
.trail-map {
  background: linear-gradient(160deg, #daeaff 0%, #b8d4f8 40%, #8ab8f0 100%);
  border-radius: var(--radius-l);
  padding: 36px;
  box-shadow: var(--shadow);
  position: relative;
  overflow: hidden;
}

/* A subtle dot pattern overlaid on the map background using a tiny SVG */
.trail-map::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.12'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
}

.trail-title {
  font-size: 1rem;
  font-weight: 600;
  color: var(--navy-d);
  margin-bottom: 28px;
  display: flex;
  align-items: center;
  gap: 8px;
  position: relative;
}

/* The vertical dashed line connecting all trail stops */
.trail-line {
  position: relative;
  padding-left: 28px;
}

/* repeating-linear-gradient creates a dashed effect —
   it alternates between blue segments and transparent gaps */
.trail-line::before {
  content: '';
  position: absolute;
  left: 10px; top: 0; bottom: 0;
  width: 2px;
  background: repeating-linear-gradient(
    to bottom,
    var(--navy-l) 0px,
    var(--navy-l) 8px,
    transparent 8px,
    transparent 14px
  );
}

.trail-stop {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 0;
  position: relative;
}

/* The circle dot on the trail line */
.trail-dot {
  width: 20px; height: 20px;
  border-radius: 50%;
  background: var(--white);
  border: 3px solid var(--navy-l);
  flex-shrink: 0;
  margin-left: -19px;
  margin-top: 2px;
  z-index: 1;
  position: relative;
}

/* The highlighted dot for Shikha — larger and orange colored */
.trail-dot.highlight {
  background: var(--orange);
  border-color: var(--orange);
  width: 24px; height: 24px;
  margin-left: -21px;
  box-shadow: 0 0 0 4px rgba(244,166,35,.25);   /* a soft orange glow ring */
}

.trail-stop-name {
  font-weight: 600;
  font-size: .95rem;
  color: var(--navy-d);
}

.trail-stop-name.highlight { color: var(--navy); font-size: 1rem; }

.trail-stop-info {
  font-size: .8rem;
  color: var(--text-m);
  margin-top: 2px;
}

/* The small orange pill showing elevation numbers */
.elev-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: var(--orange);
  color: var(--white);
  font-size: .75rem;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 20px;
  margin-left: 6px;
}

/* The stack of fact cards on the right side of the Location section */
.location-facts {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* Each white fact card with a colored left border */
.fact-card {
  background: var(--white);
  border-radius: var(--radius);
  padding: 20px;
  box-shadow: var(--shadow-l);
  border-left: 4px solid var(--navy-l);   /* the blue left accent bar */
  display: flex;
  gap: 14px;
  align-items: flex-start;
}

.fact-card .fact-icon { font-size: 1.6rem; flex-shrink: 0; }
.fact-card h4 {
  font-family: 'Inter', sans-serif;
  font-size: .88rem;
  font-weight: 600;
  color: var(--navy-d);
  margin-bottom: 4px;
}
.fact-card p { font-size: .82rem; color: var(--text-m); line-height: 1.5; }

/* The dark navy "Getting to Shikha" directions box */
.getting-here {
  background: linear-gradient(135deg, var(--navy-d), var(--navy));
  border-radius: var(--radius-l);
  padding: 32px;
  color: var(--white);
  margin-top: 20px;
}

.getting-here h3 { font-size: 1.2rem; margin-bottom: 16px; }

.route-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* ::before adds an orange arrow (→) before each route step */
.route-list li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: .87rem;
  color: rgba(255,255,255,.85);
}

.route-list li::before {
  content: '→';
  color: var(--orange-l);
  font-weight: 700;
  flex-shrink: 0;
}


/* ── Testimonials Section ───────────────────────────────────────────────────

  Horizontal carousel: overflow-hidden viewport + sliding flex track.
  Arrow buttons are absolutely positioned on either side.
*/
#testimonials {
  background: var(--sky);
}

/* Outer wrapper — reserves 52px on each side for the arrow buttons */
.testimonial-carousel {
  position: relative;
  padding: 0 52px;
  margin-top: 8px;
}

/* Clips anything outside the visible window so cards don't bleed out */
.testimonial-track-wrapper {
  overflow: hidden;
}

/* The sliding strip — all 5 cards in one flex row */
.testimonial-track {
  display: flex;
  gap: 20px;
  transition: transform .42s cubic-bezier(.25, .46, .45, .94);
  will-change: transform;
}

/* Arrow buttons — centered vertically on the card track */
.carousel-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--navy);
  color: var(--white);
  border: none;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  z-index: 2;
  transition: background .2s, transform .2s, opacity .2s;
  flex-shrink: 0;
}

.carousel-btn:hover:not(:disabled) {
  background: var(--orange);
  transform: translateY(-50%) scale(1.08);
}

/* Dim the button when there's nowhere further to go */
.carousel-btn:disabled {
  opacity: .3;
  cursor: default;
}

#carousel-prev { left: 0; }
#carousel-next { right: 0; }

.testimonial-card {
  /* Each card takes exactly 1/3 of the visible window (with 2 gaps of 20px) */
  flex: 0 0 calc((100% - 40px) / 3);
  background: var(--white);
  border-radius: var(--radius-l);
  padding: 28px;
  box-shadow: var(--shadow-l);
  border: 1px solid rgba(184,208,240,.3);
  position: relative;
}

/* The large decorative quotation mark in the top-right corner of each card */
.testimonial-card::before {
  content: '"';
  position: absolute;
  top: 16px; right: 24px;
  font-family: 'Playfair Display', serif;
  font-size: 5rem;
  color: var(--sky-m);
  line-height: 1;
}

.stars {
  color: #F4A623;
  font-size: .9rem;
  margin-bottom: 14px;
  letter-spacing: 2px;
}

.testimonial-card p {
  font-size: .9rem;
  color: var(--text-m);
  line-height: 1.7;
  font-style: italic;
  margin-bottom: 18px;
}

/* The reviewer info at the bottom of each testimonial */
.reviewer {
  display: flex;
  align-items: center;
  gap: 10px;
}

.reviewer-avatar {
  width: 36px; height: 36px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: .72rem;
  font-weight: 700;
  color: var(--navy-d);
  letter-spacing: .02em;
  flex-shrink: 0;
}

.reviewer-name {
  font-size: .85rem;
  font-weight: 600;
  color: var(--navy-d);
}

.reviewer-country {
  font-size: .78rem;
  color: var(--text-l);
}


/* ── Contact Section ────────────────────────────────────────────────────────

  Deep navy background for visual contrast — makes it feel like
  the "end" of the journey, a cozy call to action.
*/
#contact {
  background: linear-gradient(160deg, var(--navy-d) 0%, #0a1f3d 60%, #061530 100%);
  color: var(--white);
  position: relative;
  overflow: hidden;
}

/* A decorative orange glow in the top-right corner */
#contact::before {
  content: '';
  position: absolute;
  top: -100px; right: -100px;
  width: 500px; height: 500px;
  background: radial-gradient(circle, rgba(244,166,35,.15) 0%, transparent 70%);
  pointer-events: none;
}

.contact-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: start;
}

/* Override colors for text inside the dark contact section */
.contact-info .section-eyebrow { color: var(--orange-l); }
.contact-info .section-title   { color: var(--white); }
.contact-info .divider         { background: linear-gradient(90deg, var(--orange-l), transparent); }

.contact-info .section-lead {
  color: rgba(255,255,255,.75);
  margin-bottom: 36px;
}

.contact-methods {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* Each contact row (phone, WhatsApp, email, address) */
.contact-method {
  display: flex;
  align-items: center;
  gap: 16px;
  background: rgba(255,255,255,.07);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: var(--radius);
  padding: 18px 20px;
  transition: background .2s;
}

.contact-method:hover { background: rgba(255,255,255,.12); }

.contact-method-icon {
  width: 44px; height: 44px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.3rem;
  flex-shrink: 0;
}

/* Different background colors for each contact icon */
.icon-bg-amber  { background: rgba(244,166,35,.3); }
.icon-bg-green  { background: rgba(27,79,138,.5); }
.icon-bg-blue   { background: rgba(46,109,180,.4); }

.contact-method-label {
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: rgba(255,255,255,.5);
  margin-bottom: 3px;
}

.contact-method-value {
  font-size: .95rem;
  color: var(--white);
  font-weight: 500;
}

/* Placeholder values (numbers not added yet) are styled differently */
.contact-method-value.placeholder {
  color: rgba(255,255,255,.5);
  font-style: italic;
  font-size: .88rem;
}

/* Links inside contact methods (phone, WhatsApp, email) */
.contact-method-value a {
  color: var(--white);
  text-decoration: none;
  transition: color .2s;
}
.contact-method-value a:hover { color: var(--orange-l); }

/* The booking form on the right side of the contact section */
.contact-form {
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: var(--radius-l);
  padding: 36px;
}

.contact-form h3 {
  font-size: 1.3rem;
  margin-bottom: 24px;
  color: var(--white);
}

/* Each label + input pair is a "form group" */
.form-group { margin-bottom: 18px; }

.form-group label {
  display: block;
  font-size: .82rem;
  font-weight: 500;
  color: rgba(255,255,255,.7);
  margin-bottom: 7px;
  letter-spacing: .03em;
}

/* All form inputs, dropdowns, and text areas share these styles */
.form-group input,
.form-group select,
.form-group textarea {
  width: 100%;
  background: rgba(255,255,255,.09);
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 8px;
  padding: 12px 14px;
  color: var(--white);
  font-size: .9rem;
  font-family: 'Inter', sans-serif;
  transition: border-color .2s, background .2s;
  -webkit-appearance: none;    /* removes default browser styling on dropdowns */
}

/* The placeholder text inside inputs (e.g. "e.g. Maria Lopez") */
.form-group input::placeholder,
.form-group textarea::placeholder {
  color: rgba(255,255,255,.3);
}

.form-group select option { background: var(--navy-d); }

/* When the user clicks on an input, it gets a glowing orange border */
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
  outline: none;
  border-color: var(--orange-l);
  background: rgba(255,255,255,.13);
}

/* The message box can be resized vertically, but not horizontally */
.form-group textarea { resize: vertical; min-height: 100px; }

/* Two inputs side by side (name + email, check-in + nights) */
.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

/* The Submit button */
.btn-submit {
  width: 100%;
  background: linear-gradient(135deg, var(--orange), var(--orange-l));
  color: var(--white);
  border: none;
  border-radius: 10px;
  padding: 14px;
  font-size: .95rem;
  font-weight: 600;
  cursor: pointer;
  font-family: 'Inter', sans-serif;
  transition: all .25s;
  margin-top: 6px;
}

.btn-submit:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(244,166,35,.4);
}


/* ── Footer ─────────────────────────────────────────────────────────────────

  Deep navy footer at the very bottom.
*/
footer {
  background: #0a1428;
  color: rgba(255,255,255,.5);
  text-align: center;
  padding: 32px 20px;
  font-size: .83rem;
}

footer strong { color: rgba(255,255,255,.8); }

footer .footer-top {
  font-size: 1.5rem;
  margin-bottom: 12px;
}

footer a { color: var(--orange-l); }


/* ── Elevation Strip ─────────────────────────────────────────────────────────

  The small light-blue bar between the hero and the About section
  showing key stats (location, elevation, trek route).
*/
.elev-strip {
  background: var(--sky-m);
  border-top: 1px solid var(--sky-d);
  border-bottom: 1px solid var(--sky-d);
  padding: 18px 0;
  overflow: hidden;
}

.elev-inner {
  display: flex;
  gap: 48px;
  justify-content: center;
  flex-wrap: wrap;
}

.elev-stat {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: .88rem;
  color: var(--navy-l);
}

.elev-stat strong {
  font-size: 1.1rem;
  color: var(--navy-d);
}


/* ── Our Lodge Photo Gallery Section ────────────────────────────────────────

  A 2x2 grid of real photos of the lodge, rooms, and surroundings.
  object-fit: cover makes each photo fill its box without stretching —
  it crops from the center, like "zoom to fill" on your phone camera.
*/
#lodge { background: var(--sky); }

/* 2 columns, 2 rows — the grid creates the layout automatically */
.lodge-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin-top: 48px;
}

/* Each photo + caption is wrapped in one .lodge-photo block.
   overflow: hidden ensures the image's rounded corners are clipped cleanly. */
.lodge-photo {
  border-radius: var(--radius-l);
  overflow: hidden;
  box-shadow: var(--shadow);
  border: 1px solid rgba(184,208,240,.3);
  background: var(--white);
}

/* All images the same height (280px), cropped to fill from center */
.lodge-photo img {
  width: 100%;
  height: 280px;
  object-fit: cover;
  display: block;
}

/* Caption sits in a white bar below each photo */
.lodge-caption {
  padding: 12px 18px;
  background: var(--white);
  font-size: .85rem;
  color: var(--text-m);
  font-weight: 500;
  border-top: 1px solid var(--sky-d);
}


/* ── Responsive Design ───────────────────────────────────────────────────────

  @media rules apply ONLY when the screen is smaller than the given width.
  This makes the site look good on phones and tablets too!

  Think of it like: "If the screen is narrower than 900px, do THIS instead."
  We collapse multi-column layouts into single columns for small screens.
*/
@media (max-width: 900px) {
  /* On tablets, hide the desktop nav links and show the hamburger icon */
  .nav-links { display: none; }
  .hamburger { display: flex; }

  /* All these two-column layouts become single-column */
  .about-grid,
  .rooms-intro,
  .location-grid,
  .contact-grid { grid-template-columns: 1fr; gap: 40px; }

  /* Rooms go from 3 columns to 2 columns */
  .card-grid { grid-template-columns: 1fr 1fr; }

  /* testimonial carousel: tighten button padding on tablet */
  .testimonial-carousel { padding: 0 48px; }

  .food-banner { grid-template-columns: 1fr; }
  .food-banner::after { display: none; }   /* hide the decorative emoji */

  .form-row { grid-template-columns: 1fr; }

  /* Lodge photos: 2 columns → 1 column on tablets */
  .lodge-grid { grid-template-columns: 1fr; }
}

@media (max-width: 600px) {
  /* On small phones, even more stacking */
  section { padding: 64px 0; }
  .card-grid { grid-template-columns: 1fr; }
  /* testimonial carousel: 1 card at a time on mobile */
  .testimonial-carousel { padding: 0 44px; }
  .testimonial-card { flex: 0 0 100%; }
  .about-float-cards { grid-template-columns: 1fr; }

  .hero h1 { font-size: 2.2rem; }
  .hero-buttons { flex-direction: column; align-items: center; }
  .btn { width: 100%; justify-content: center; }

  .contact-form { padding: 24px 20px; }
}
