/* =========================================================
   CSS VARIABLES — Theme colors and font families
   Use var(--name) anywhere to apply these values globally
========================================================= */
:root {                                             /* :root targets the <html> element — highest specificity for custom properties */
  --gold:         #C9A84C;                    /* warm gold — highlights and accents */
  --terracotta:   #A0522D;                    /* earthy red — labels and card borders */
  --blue:         #2E86AB;                    /* Mediterranean blue — culture section */
  --cream:        #F5F0E8;                    /* off-white — page background */
  --dark:         #1A1A2E;                    /* very dark navy — navbar, text */
  --transition:   0.35s ease;                 /* reusable smooth transition speed */
  --font-heading: 'Playfair Display', serif;  /* elegant serif for all headings */
  --font-body:    'Lato', sans-serif;         /* clean sans-serif for body text */
}

/* =========================================================
   GLOBAL RESET — strip all default browser spacing
========================================================= */
* {                         /* universal selector — targets every single element on the page */
  margin: 0;              /* remove all default margins */
  padding: 0;             /* remove all default padding */
  box-sizing: border-box; /* border & padding included in element width */
}

/* =========================================================
   GLOBAL BODY
========================================================= */
body {
  font-family: var(--font-body);  /* Lato for all body text */
  color: var(--dark);             /* default dark navy text */
  background-color: var(--cream); /* off-white page background */
  overflow-x: hidden;  /* prevent horizontal scroll on small screens */
}

/* All headings use the elegant serif font */
h1, h2, h3 {
  font-family: var(--font-heading); /* Playfair Display for headings */
}

/* =========================================================
   NAVBAR — dark top bar, logo left, links right
========================================================= */
.navbar {
  background-color: var(--dark); /* dark navy background */
  padding: 10px 0;               /* small vertical padding */
}

/* Brand = logo + site name */
.navbar-brand {
  font-family: var(--font-heading); /* serif for brand name */
  font-size: 1.2rem;                /* slightly smaller on all screens */
  color: var(--gold) !important;    /* gold text, overrides Bootstrap */
  display: flex;                    /* logo and text side by side */
  align-items: center;              /* vertically centred */
  gap: 8px;                         /* space between logo and text */
}

/* Circular logo image */
.navbar-brand img {                 /* targets the <img> that is a direct or descendant child of .navbar-brand */
  width: 38px;          /* responsive size */
  height: 38px;
  object-fit: contain;  /* no cropping */
  border-radius: 50%;   /* circular */
}

/* Nav links — default cream colour */
.navbar-nav .nav-link {             /* targets every .nav-link inside .navbar-nav — the Bootstrap navigation list */
  color: var(--cream) !important; /* light text on dark bar */
  font-weight: 400;                 /* normal weight — not bold */
  letter-spacing: 0.5px;           /* very slight spacing between letters for readability */
  margin: 0 4px;                  /* small horizontal gap */
  transition: color 0.3s ease;   /* smooth colour change */
}

/* Hover and active page link — gold */
.navbar-nav .nav-link:hover,        /* when the mouse is over the link */
.navbar-nav .nav-link.active {      /* when Bootstrap marks this link as the current page */
  color: var(--gold) !important;
}

/* Hamburger toggle button — mobile only */
.navbar-toggler {                   /* Bootstrap's built-in hamburger button, visible only on small screens */
  border-color: var(--gold);        /* gold border around the button */
  background-color: transparent;    /* no fill — shows the icon cleanly */
}

/* Gold glow ring on focus (accessibility) */
.navbar-toggler:focus {             /* keyboard/tab focus state — important for accessibility */
  box-shadow: 0 0 0 2px var(--gold); /* gold outline ring instead of browser's default blue glow */
}

/* Custom gold hamburger icon (SVG inline) */
.navbar-toggler-icon {              /* the ≡ icon inside Bootstrap's toggle button */
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23C9A84C' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
  /* inline SVG data URI — draws 3 gold horizontal lines (the hamburger bars) without needing an external file */
}

/* =========================================================
   HOME — HERO SECTION
   min-height 100vh so content is never cut.
   object-position: center bottom keeps girl+flag visible.
   Overlay at 18% — almost transparent, image stays crisp.
========================================================= */
.hero {
  position: relative;      /* so children can use position absolute */
  width: 100%;             /* stretches across the full viewport width */
  min-height: 100vh;       /* full screen minimum, grows with content */
  display: flex;           /* enables flexbox so .hero-content can be aligned */
  align-items: flex-start; /* content starts at top */
  overflow: hidden;        /* clips any child that accidentally bleeds outside the hero boundary */
}

/* Full-bleed background photo */
.hero-img {
  position: absolute;             /* removed from flow, sits behind text */
  inset: 0;                       /* stretches to all 4 edges */
  width: 100%;                    /* fills the full width of the .hero container */
  height: 100%;                   /* fills the full height of the .hero container */
  object-fit: cover;              /* cover without distorting */
  object-position: center bottom; /* anchor bottom so girl+flag shows */
  image-rendering: crisp-edges;   /* no browser blur */
  filter: none;                   /* remove any inherited blur */
}

/* Very light dark overlay — just enough contrast for text */
.hero-overlay {
  position: absolute;             /* positioned relative to the nearest positioned ancestor, which is .hero */
  inset: 0;                       /* top/right/bottom/left all 0 — covers the entire .hero area */
  background: rgba(26, 26, 46, 0.18); /* 18% opacity — almost transparent */
}

/* Text block — sits above the overlay */
.hero-content {
  position: relative;      /* above the absolute overlay */
  z-index: 1;              /* stacks this above .hero-img and .hero-overlay which have no z-index set */
  padding: 100px 16px 60px; /* top padding clears navbar height */
  width: 100%;             /* full width of .hero so text-align: center works across the whole row */
  text-align: center;
}

/* Small uppercase tag above heading */
.hero-tag {
  font-size: 1rem;          /* slightly smaller for small screens */
  letter-spacing: 3px;      /* wide letter spacing for the all-caps decorative label */
  text-transform: uppercase; /* forces all letters to uppercase regardless of HTML casing */
  color: var(--gold);
  margin-bottom: 8px;       /* gap between this tag and the h1 below it */
}

/* Main hero heading */
.hero-content h1 {          /* targets the <h1> that is a descendant of .hero-content */
  font-size: clamp(1.6rem, 5vw, 4rem); /* fluid size: min 1.6rem, max 4rem */
  color: #fff;
  line-height: 1.25;        /* tight line height so multi-line heading looks compact */
  text-shadow: 1px 2px 10px rgba(0,0,0,0.5); /* readability shadow */
  margin-bottom: 10px;      /* gap between h1 and .hero-sub below it */
}

/* Gold word inside heading */
.hero-content h1 span {     /* targets a <span> wrapped around one word inside the h1 */
  color: var(--gold);
}

/* Subtitle below heading */
.hero-sub {
  font-size: clamp(0.9rem, 2.5vw, 1.4rem); /* fluid size */
  color: rgba(245, 240, 232, 0.85); /* cream at 85% opacity — slightly faded vs the h1 */
  font-weight: 300;         /* light weight — visually secondary to the bold h1 */
  letter-spacing: 1px;
  margin-bottom: 20px;      /* gap between subtitle and the CTA button below it */
}

/* CTA button */
.btn-hero {
  display: inline-block;    /* allows padding and transforms on an <a> tag like a block element */
  background-color: var(--gold);
  color: var(--dark);
  font-weight: 700;         /* bold text so it reads clearly on the gold background */
  padding: 14px 32px;        /* comfortable touch target */
  border: 2px solid var(--gold); /* same color as background — becomes visible only on hover when bg turns transparent */
  border-radius: 2px;       /* almost square corners — subtle refinement */
  letter-spacing: 2px;
  text-transform: uppercase;
  font-size: 0.9rem;
  text-decoration: none;    /* removes the default underline from the <a> tag */
  transition: 0.3s ease;    /* smooth animation for the hover colour inversion */
}

/* Button hover — invert colours */
.btn-hero:hover {
  background-color: transparent; /* removes gold fill — the border stays, creating an outline button */
  color: #fff;                   /* text switches from dark to white to stay visible on the now-transparent background */
  transform: translateY(-2px);   /* lifts the button 2px upward for a subtle "press" feel */
}

/* =========================================================
   HOME — WELCOME SECTION
   Two columns: text left, gallery right.
   Fact cards span full width below.
========================================================= */
.section-welcome {
  padding: 70px 0 50px;    /* 70px top, 0 sides (Bootstrap container handles side gutter), 50px bottom */
  background-color: var(--cream);
}

/* Small uppercase section label */
.section-label {
  font-size: 0.75rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--terracotta);
  margin-bottom: 12px;     /* gap between this label and the h2 heading below it */
}

/* Welcome heading */
.section-welcome h2 {      /* targets the <h2> that is a descendant of .section-welcome */
  font-size: clamp(1.5rem, 3vw, 2.4rem); /* fluid */
  color: var(--dark);
  margin-bottom: 18px;     /* gap between heading and the paragraph below it */
  line-height: 1.3;        /* slightly tight — works well for large serif headings */
}

/* Gold word in welcome heading */
.section-welcome h2 span { /* targets a <span> wrapping one word inside the h2 */
  color: var(--gold);
}

/* Welcome body text */
.section-welcome p {       /* targets all <p> tags inside .section-welcome */
  font-size: 1rem;
  color: #555;             /* medium grey — softer than --dark for long body copy */
  line-height: 1.9;        /* generous line height for comfortable reading of paragraphs */
}

/* Stats row: 3 numbers side by side */
.welcome-stat {
  margin-top: 28px;        /* space above the stats row, separating it from the paragraph above */
  display: flex;           /* places the three .stat children side by side */
  gap: 28px;              /* horizontal space between each stat block */
  flex-wrap: wrap; /* wrap on very small screens */
}

/* Stat number */
.welcome-stat .stat h3 {   /* targets the <h3> inside each .stat inside .welcome-stat */
  font-size: 1.7rem;
  color: var(--terracotta);
}

/* Stat label */
.welcome-stat .stat p {    /* targets the <p> caption under each stat number */
  font-size: 0.82rem;
  color: #777;             /* lighter grey — visually secondary to the stat number */
}

/* =========================================================
   HOME — FACT CARDS
   Flex row — each card grows equally to fill the full width.
   On small screens they wrap to 2 per row, then 1.
========================================================= */
.facts-row {
  display: flex;
  flex-wrap: wrap;              /* allow wrapping on small screens */
  margin-top: 50px;            /* space above the row, separating it from the welcome text above */
  padding-top: 40px;           /* inner space above the cards, between the gold divider line and the cards */
  border-top: 1px solid rgba(201,168,76,0.25); /* gold divider above */
}

/* Individual fact card — grows equally */
.fact-card {
  flex: 1 1 calc(16.66% - 1px); /* 6 cards per row on desktop */
  background-color: #fff;       /* white card on the cream page background — creates subtle lift */
  border-right: 1px solid rgba(201,168,76,0.15); /* vertical divider */
  padding: 24px 12px;
  text-align: center;
  transition: 0.3s ease;       /* smooth animation for the hover lift and background change */
}

/* Remove trailing border on last card */
.fact-card:last-child {        /* :last-child selects only the final .fact-card in the row so there's no dangling right border */
  border-right: none;
}

/* Hover — lift and faint gold tint */
.fact-card:hover {
  transform: translateY(-4px);                /* lifts the card 4px upward relative to its normal position */
  background-color: rgba(201,168,76,0.05);    /* extremely faint gold wash on hover */
  box-shadow: 0 6px 20px rgba(0,0,0,0.08);   /* soft drop shadow below the lifted card */
}

/* Gold icon above label */
.fact-icon {
  font-size: 1.4rem;
  color: var(--gold);
  margin-bottom: 8px;    /* gap between the icon and the .fact-label text below it */
}

/* Small uppercase label */
.fact-label {
  font-size: 0.7rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #999;           /* light grey — least important text in the card hierarchy */
  margin-bottom: 5px;    /* gap between label and .fact-value below */
}

/* Main value text */
.fact-value {
  font-family: var(--font-heading); /* Playfair Display — gives the value a more editorial feel */
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--dark);
}

/* Optional sub-text below the value */
.fact-value span {       /* targets an optional <span> inside .fact-value for secondary info */
  display: block;        /* forces the span onto its own line below the main value */
  font-size: 0.75rem;
  color: #888;
}

/* =========================================================
   HOME — SCROLLING GALLERY
   Vertical auto-scroll strip — pauses on hover.
========================================================= */
.scroll-gallery {
  width: 100%;
  height: 460px;       /* fixed clip height */
  overflow: hidden;    /* hides images outside the visible area */
  border-radius: 8px;  /* rounded corners on the visible strip */
}

/* Moving track — animates upward continuously */
.scroll-track {
  display: flex;
  flex-direction: column; /* stacks images vertically inside the track */
  gap: 10px;              /* vertical spacing between each image */
  animation: scrollUp 20s linear infinite; /* infinite upward scroll */
}

/* Pause on hover so user can look at images */
.scroll-gallery:hover .scroll-track { /* targets .scroll-track when the user hovers over its parent .scroll-gallery */
  animation-play-state: paused;       /* freezes the scrollUp animation without resetting it */
}

/* Each image in the strip */
.scroll-track img {            /* targets every <img> that is a descendant of .scroll-track */
  width: 100%;
  height: 210px;
  object-fit: cover;           /* fills the 210px height without distorting the image */
  border-radius: 6px;          /* slightly rounded corners on each individual image */
  flex-shrink: 0; /* never shrink */
}

/* Keyframe — moves up by exactly 50% (one full set = seamless loop) */
@keyframes scrollUp {          /* named animation used by .scroll-track — moves the whole track upward */
  0%   { transform: translateY(0); }     /* starts at its natural position */
  100% { transform: translateY(-50%); } /* ends halfway up — works because the image list is duplicated in HTML, creating a seamless loop */
}

/* =========================================================
   HOME — WHY VISIT SECTION
   Dark background, 4 feature cards.
========================================================= */
.section-why {
  padding: 80px 0;             /* generous vertical breathing room on this dark section */
  background-color: var(--dark);
}

/* Gold label on dark background */
.section-why .section-label { /* overrides .section-label color specifically when inside .section-why */
  color: var(--gold);
}

/* Section heading */
.section-why h2 {              /* targets the <h2> that is a descendant of .section-why */
  font-size: clamp(1.5rem, 3vw, 2.4rem); /* fluid */
  color: #fff;                 /* white heading on dark background */
  margin-bottom: 40px;         /* large gap between heading and the card row below */
}

/* Gold word */
.section-why h2 span {         /* targets a <span> wrapping one highlighted word inside the h2 */
  color: var(--gold);
}

/* Feature card */
.why-card {
  background-color: rgba(255,255,255,0.05); /* subtle white tint on dark */
  border: 1px solid rgba(201,168,76,0.2);   /* faint gold border — barely visible at rest */
  border-radius: 4px;
  padding: 28px 20px;
  text-align: center;
  transition: 0.3s ease;       /* smooth animation for the hover lift and border colour change */
  height: 100%;                /* makes all cards in the same Bootstrap row equal height */
}

/* Hover — lift and gold border */
.why-card:hover {
  transform: translateY(-6px);  /* lifts the card 6px relative to its resting position */
  border-color: var(--gold);    /* border becomes fully opaque gold on hover */
}

/* Gold icon */
.why-card .icon {              /* targets an element with class .icon inside .why-card */
  font-size: 2rem;
  color: var(--gold);
  margin-bottom: 14px;         /* gap between icon and the h4 card title below it */
}

/* Card title */
.why-card h4 {                 /* targets the <h4> heading inside each .why-card */
  font-size: 1.1rem;
  color: #fff;
  margin-bottom: 10px;         /* gap between title and the description paragraph below */
}

/* Card description */
.why-card p {                  /* targets the <p> description inside each .why-card */
  font-size: 0.9rem;
  color: #aaa;                 /* muted grey — secondary to the white card title */
  line-height: 1.8;
}

/* =========================================================
   FOOTER — identical on every page
========================================================= */
footer {
  background-color: var(--cream);
  border-top: 1px solid rgba(201,168,76,0.3); /* subtle gold line separating footer from the page content above */
  padding: 16px 0 8px;         /* compact vertical padding — footer is intentionally short */
}

/* Brand name */
.footer-brand {
  font-family: var(--font-heading); /* Playfair Display — matches the navbar brand */
  font-size: 1rem;
  color: var(--dark);
}

/* Tagline */
.footer-tagline {
  font-size: 0.85rem;
  color: #888;                 /* muted grey — secondary to the brand name above it */
}

/* Social icons row */
.footer-social {
  display: flex;               /* places social icon links side by side */
  justify-content: center;     /* centres them horizontally within the footer column */
  gap: 16px;                   /* space between each social icon */
}

/* Individual social icon */
.footer-social a {             /* targets every <a> link inside .footer-social */
  color: var(--dark);
  font-size: 1.2rem;
  transition: color 0.3s ease, transform 0.2s ease; /* smooth colour and lift animation on hover */
}

/* Hover — gold and lift */
.footer-social a:hover {       /* when mouse is over a social icon link */
  color: var(--gold);
  transform: translateY(-3px); /* lifts the icon 3px upward relative to its resting position */
}

/* Copyright line */
.footer-bottom {
  border-top: 1px solid rgba(0,0,0,0.08); /* very faint line separating copyright from the footer content above it */
  margin-top: 10px;
  padding-top: 8px;
  text-align: center;
  font-size: 0.75rem;
  color: #999;                 /* lightest grey — least important text on the page */
}

/* =========================================================
   DESTINATIONS — HERO BANNER (60vh, shorter than home)
========================================================= */
.dest-hero {
  position: relative;          /* establishes stacking context so .dest-hero-overlay can be positioned relative to this */
  width: 100%;
  height: 60vh;                /* 60% of the viewport height — shorter than the 100vh home hero */
  background-image: url('../images/scrolling-images/sidi-bousaid-d.png'); /* path is relative to the CSS file location */
  background-size: cover;      /* scales the image to cover the full 60vh area without distortion */
  background-position: center; /* centres the image both horizontally and vertically within the hero */
  display: flex;               /* enables centering of .dest-hero-content */
  align-items: center;         /* vertically centres .dest-hero-content within the 60vh hero */
  justify-content: center;     /* horizontally centres .dest-hero-content */
}

/* Dark overlay for text readability */
.dest-hero-overlay {
  position: absolute;          /* positioned relative to .dest-hero (its nearest positioned ancestor) */
  inset: 0;                    /* covers every edge of .dest-hero exactly */
  background: rgba(26, 26, 46, 0.60); /* 60% opacity — darker than the home hero overlay (18%) for better text contrast */
}

/* Text block */
.dest-hero-content {
  position: relative;          /* lifts this above .dest-hero-overlay in the stacking order */
  text-align: center;
  z-index: 1;                  /* ensures text renders on top of the overlay, which has no z-index set */
  padding: 0 16px; /* prevent text touching edges on small screens */
}

/* Heading */
.dest-hero-content h1 {        /* targets the <h1> inside .dest-hero-content */
  font-size: clamp(1.6rem, 4vw, 3rem); /* fluid */
  color: #fff;
  text-shadow: 1px 2px 10px rgba(0,0,0,0.5); /* shadow improves legibility over the background image */
  margin-bottom: 10px;         /* gap between heading and any subtitle that follows */
}

/* Gold word */
.dest-hero-content h1 span {   /* targets a <span> wrapping one highlighted word inside the h1 */
  color: var(--gold);
}

/* =========================================================
   DESTINATIONS — INTRO
========================================================= */
.dest-intro {
  padding: 60px 0 20px;        /* generous top padding, smaller bottom — the list section below has its own spacing */
  background-color: var(--cream);
}

/* Heading */
.dest-intro h2 {               /* targets the <h2> that is a descendant of .dest-intro */
  font-size: clamp(1.4rem, 3vw, 2.2rem); /* fluid */
  color: var(--dark);
  margin-bottom: 16px;         /* gap between heading and the paragraph below it */
  line-height: 1.3;
}

/* Gold word */
.dest-intro h2 span {          /* targets a <span> wrapping one word inside the h2 */
  color: var(--gold);
}

/* Paragraph */
.dest-intro p {                /* targets the <p> description inside .dest-intro */
  font-size: 1rem;
  color: #555;
  line-height: 1.9;
  max-width: 700px;            /* constrains line length for readability — text won't stretch on very wide screens */
}

/* =========================================================
   DESTINATIONS — LIST (magazine rows alternating left/right)
========================================================= */
.dest-list {
  background-color: var(--cream);
}

/* Each destination row */
.dest-row {
  min-height: 500px;           /* guarantees enough height even if the text column is short */
  border-bottom: 1px solid rgba(201,168,76,0.15); /* faint gold line separating destination rows from each other */
}

/* Image side */
.dest-img-wrap {
  width: 100%;                 /* fills the full width of its Bootstrap column (col-lg-6) */
  height: 100%;                /* matches the height of its sibling text column inside the same .dest-row */
  min-height: 500px;           /* ensures image area never collapses shorter than 500px regardless of content */
  overflow: hidden;            /* clips the image when it zooms on hover, keeping it within the gold border */
  position: relative;          /* establishes stacking context for any future absolutely-positioned children */
  border: 6px solid var(--gold); /* thick gold picture-frame border around the destination image */
  box-shadow: 8px 8px 30px rgba(0,0,0,0.15); /* offset shadow gives a slight 3D lifted-frame effect */
}

/* Image fills frame */
.dest-img-wrap img {           /* targets the <img> inside .dest-img-wrap */
  width: 100%;
  height: 100%;
  object-fit: cover;           /* fills the entire .dest-img-wrap without distorting the image */
  transition: 0.5s ease;       /* smooth zoom animation triggered by .dest-row:hover below */
}

/* Zoom on row hover */
.dest-row:hover .dest-img-wrap img { /* triggers when the mouse is anywhere on .dest-row, not just the image */
  transform: scale(1.04);           /* scales the image 4% larger within the overflow:hidden clip boundary */
}

/* Text side */
.dest-text {
  padding: 40px 40px;          /* equal padding on all sides — creates a comfortable reading area */
}

/* Category badge */
.dest-category {
  display: inline-block;       /* allows padding and border-radius on what would otherwise be an inline element */
  background-color: rgba(201,168,76,0.15); /* very faint gold tint behind the badge text */
  color: var(--terracotta);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  padding: 5px 14px;           /* horizontal padding makes the pill shape wider than the text */
  border-radius: 20px;         /* large radius on a short element produces a pill shape */
  margin-bottom: 14px;         /* gap between badge and the destination name h2 below it */
  border: 1px solid rgba(201,168,76,0.3); /* thin gold border around the pill */
}

/* Icon inside badge */
.dest-category i {             /* targets the Font Awesome <i> icon inside .dest-category */
  margin-right: 6px;           /* gap between the icon and the badge text beside it */
  color: var(--gold);
}

/* Destination name */
.dest-text h2 {                /* targets the large destination name heading inside .dest-text */
  font-size: clamp(1.4rem, 2.5vw, 2.4rem); /* fluid */
  color: var(--dark);
  margin-bottom: 14px;         /* gap between the name and the description paragraph */
}

/* Description */
.dest-text p {                 /* targets the description paragraph inside .dest-text */
  font-size: 1rem;
  color: #555;
  line-height: 1.9;
  margin-bottom: 24px;         /* gap between description and the .dest-info list below */
  text-align: justify;         /* text stretches to align both left and right edges */
}

/* Info list */
.dest-info {
  list-style: none;            /* removes the default browser bullet points */
  padding: 0;                  /* removes the default browser indent on <ul> */
  margin: 0;
  display: flex;
  flex-direction: column;      /* stacks each <li> vertically */
  gap: 10px;                   /* vertical space between each info row */
}

/* Info list item */
.dest-info li {                /* targets each <li> inside .dest-info */
  font-size: 0.9rem;
  color: #666;
  display: flex;               /* places the icon and the text side by side */
  align-items: center;         /* vertically centres the icon with the text beside it */
  gap: 10px;                   /* space between the icon and the label text */
}

/* Info icon */
.dest-info li i {              /* targets the Font Awesome icon inside each .dest-info list item */
  color: var(--gold);
  font-size: 1rem;
  width: 18px;                 /* fixed width keeps all icons in a consistent column so labels stay aligned */
  flex-shrink: 0; /* never shrink the icon */
}

/* Info bold label */
.dest-info li strong {         /* targets the bold key label (e.g. "Best time:") inside each list item */
  color: var(--dark);          /* darker than the surrounding #666 text, making the label stand out */
}

/* Alternating rows have white background */
.dest-row-reverse {            /* added to every second .dest-row to alternate background colour */
  background-color: #fff;      /* white against the cream of the surrounding .dest-list creates a subtle alternating stripe */
}

/* =========================================================
   CONTACT — HERO (dark title block + Google Map)
========================================================= */
.contact-hero {
  width: 100%;                 /* stretches to fill the full page width */
}

/* Dark title block */
.contact-hero-text {
  background-color: var(--dark);
  text-align: center;
  padding: 50px 20px 30px;     /* 50px top clears the navbar, 20px sides prevent text touching edges, 30px bottom */
}

/* Heading */
.contact-hero-text h1 {        /* targets the <h1> inside the dark contact header */
  font-size: clamp(1.6rem, 4vw, 2.8rem); /* fluid */
  color: #fff;
  margin-bottom: 10px;         /* gap between heading and the subtitle below */
}

/* Gold word */
.contact-hero-text h1 span {   /* targets the highlighted word wrapped in a <span> inside the h1 */
  color: var(--gold);
}

/* Subtitle */
.contact-hero-text .hero-sub { /* reuses the .hero-sub class from the home page hero within the contact header */
  font-size: 1rem;
  color: rgba(245, 240, 232, 0.8); /* cream at 80% opacity — softer than the white h1 above */
  font-weight: 300;
}

/* Google Map container */
.contact-map {
  width: 100%;
  height: 420px;               /* fixed height so the map is tall enough to be usable */
}

/* Map iframe fills container */
.contact-map iframe {          /* targets the Google Maps <iframe> inside .contact-map */
  width: 100%;
  height: 100%;
  display: block; /* removes inline gap */
}

/* =========================================================
   CONTACT — REQUIREMENTS CHECKLIST
   Pure CSS checkbox trick — no JavaScript.
   Hidden <input> + visible <label> for each item.
   When #req5 is checked, the form wrapper appears.
========================================================= */
.contact-requirements {
  padding: 70px 0;             /* generous vertical padding — this is the main content area of the contact page */
  background-color: var(--cream);
}

/* Section heading */
.contact-requirements h2 {     /* targets the <h2> inside .contact-requirements */
  font-size: clamp(1.4rem, 3vw, 2.2rem); /* fluid */
  color: var(--dark);
  margin-bottom: 12px;         /* gap between heading and the .req-subtitle below */
}

/* Gold word */
.contact-requirements h2 span { /* targets the highlighted word wrapped in <span> inside the h2 */
  color: var(--gold);
}

/* Subtitle */
.req-subtitle {
  font-size: 1rem;
  color: #777;
  margin-bottom: 32px;         /* space between subtitle and the first checklist item below */
}

/* Checklist row (visible label) */
.req-item {
  display: flex;               /* places the custom checkbox box and the .req-text side by side */
  align-items: flex-start;     /* aligns children to the top so multi-line text doesn't force the box to the middle */
  gap: 14px;                   /* space between the custom checkbox box and the text */
  background-color: #fff;
  border: 1px solid rgba(201,168,76,0.2);
  border-radius: 10px;
  padding: 18px 20px;
  cursor: pointer;             /* shows a hand cursor to signal the whole row is clickable */
  margin-bottom: 14px;         /* vertical gap between consecutive checklist items */
  transition: border-color 0.3s ease, background-color 0.3s ease; /* smooth change when checked or hovered */
  max-width: 750px;            /* constrains the checklist width so it doesn't stretch on very wide screens */
}

/* Hover state */
.req-item:hover {
  border-color: var(--gold);
  background-color: rgba(201,168,76,0.05); /* faint gold tint on hover */
}

/* The real checkbox — completely invisible */
.req-checkbox-hidden {
  position: absolute;          /* taken out of flow so it doesn't affect layout — its space is not reserved */
  opacity: 0;                  /* invisible to the eye while remaining accessible to screen readers */
  width: 0;
  height: 0;
  pointer-events: none; /* prevent accidental clicks on the invisible element */
}

/* Custom visible checkbox box */
.req-box {
  width: 22px;
  height: 22px;
  min-width: 22px; /* never shrink on small screens */
  border: 2px solid rgba(201,168,76,0.4); /* faint gold border outlines the empty checkbox */
  border-radius: 4px;          /* slightly rounded corners — not a perfect square or circle */
  margin-top: 2px;             /* nudges the box down slightly so it aligns with the first line of multi-line text */
  transition: 0.3s ease;       /* smooth fill animation when the hidden checkbox is checked */
  position: relative;          /* needed so the ::after checkmark pseudo-element can be positioned relative to this box */
  background-color: #fff;
}

/* Checked state — gold fill */
.req-checkbox-hidden:checked + .req-item .req-box {
  /* + selects .req-item only when it immediately follows the checked .req-checkbox-hidden in the HTML */
  /* .req-box is a descendant of .req-item — so this chain reads: when the hidden checkbox is checked, fill the box inside the adjacent label */
  background-color: var(--gold);
  border-color: var(--gold);
}

/* Checkmark inside the box */
.req-checkbox-hidden:checked + .req-item .req-box::after {
  /* ::after injects a pseudo-element inside .req-box — only visible when the checkbox is checked */
  content: '✓';               /* the checkmark character injected as CSS content — no extra HTML needed */
  position: absolute;          /* positioned relative to .req-box (its nearest positioned ancestor) */
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%); /* perfectly centres the ✓ both horizontally and vertically within .req-box */
  color: var(--dark);
  font-size: 0.85rem;
  font-weight: 700;
}

/* Checked row — gold border + faint gold tint */
.req-checkbox-hidden:checked + .req-item {
  /* + selects the immediately following .req-item sibling when the hidden checkbox is checked */
  border-color: var(--gold);
  background-color: rgba(201,168,76,0.05);
}

/* Requirement text — bigger for readability */
.req-text {
  font-size: 1.05rem;          /* slightly larger than base — requirement text needs to be easy to read */
  color: #444;
  line-height: 1.6;
}

/* Warning shown until all boxes are checked */
.req-warning {
  margin-top: 8px;
  margin-bottom: 24px;         /* space between the warning and whatever comes below (the hidden form wrapper) */
  font-size: 0.95rem;
  color: var(--terracotta);    /* earthy red — signals a warning without using a harsh red */
  font-weight: 600;
  max-width: 750px;            /* matches .req-item max-width for visual alignment */
}

/* =========================================================
   CONTACT — FORM WRAPPER (CSS-only reveal)

   BUG FIX: The overlay is now INSIDE .contact-form-wrapper,
   so it only appears AFTER the form is already visible.
   This prevents it showing on an empty/unchecked form.

   HOW IT WORKS:
   - #submit-trigger is a hidden checkbox inside the wrapper
   - The submit button is a <label for="submit-trigger">
   - Clicking it checks the checkbox
   - CSS then shows .thankyou-overlay via the ~ sibling selector
========================================================= */

/* Full-screen overlay — hidden by default */
.contact-form-wrapper {
  display: none;         /* hidden until req5 is checked */
  padding: 40px 0 20px;
  max-width: 750px;      /* matches .req-item max-width so the form aligns with the checklist above */
}

/* Reveal form when last checkbox is checked */
#req5:checked ~ .contact-form-wrapper {
  /* ~ selects all following siblings — .contact-form-wrapper must appear after #req5 in the HTML for this to work */
  display: block;        /* overrides display:none — shows the form only when the 5th requirement is checked */
}

/* Hide warning when form is revealed */
#req5:checked ~ .req-warning {
  /* ~ selects .req-warning as a following sibling of #req5 */
  display: none;         /* hides the warning once all requirements are confirmed and the form appears */
}

/* Form heading */
.contact-form-wrapper h2 {     /* targets the <h2> inside the now-visible form wrapper */
  font-size: clamp(1.4rem, 3vw, 2.2rem); /* fluid */
  color: var(--dark);
  margin-bottom: 10px;         /* gap between heading and the .form-subtitle below */
}

/* Gold word */
.contact-form-wrapper h2 span { /* targets the highlighted word wrapped in <span> inside the h2 */
  color: var(--gold);
}

/* Subtitle */
.form-subtitle {
  font-size: 1rem;
  color: #777;
  margin-bottom: 30px;         /* space between subtitle and the first form field below */
}

/* Styled inputs and textareas */
.contact-input {
  background-color: var(--cream);
  border: 1px solid rgba(201,168,76,0.3); /* faint gold border at rest */
  border-radius: 8px;
  padding: 12px 16px;
  font-family: var(--font-body);  /* Lato — matches the rest of the page body text */
  font-size: 0.95rem;
  color: var(--dark);
  width: 100%; /* always full width */
  transition: border-color 0.3s ease; /* smooth gold border animation on focus */
}

/* Focus — gold border + soft glow */
.contact-input:focus {
  border-color: var(--gold);                    /* gold border replaces the faint resting border */
  box-shadow: 0 0 0 3px rgba(201,168,76,0.15); /* soft gold glow ring around the focused field */
  outline: none;                                /* removes the browser's default blue focus outline */
  background-color: #fff;                       /* switches from cream to white on focus for a subtle highlight */
}

/* Form labels */
.contact-form .form-label {    /* targets Bootstrap .form-label elements inside .contact-form */
  font-size: 0.85rem;
  font-weight: 600;            /* semi-bold — clearly readable without being as heavy as a heading */
  color: var(--dark);
  letter-spacing: 0.5px;
  margin-bottom: 6px;          /* gap between the label and the input field below it */
}

/* =========================================================
   CONTACT — THANK YOU OVERLAY (CSS-only popup)

   BUG FIX: The overlay is now INSIDE .contact-form-wrapper,
   so it only appears AFTER the form is already visible.
   This prevents it showing on an empty/unchecked form.

   HOW IT WORKS:
   - #submit-trigger is a hidden checkbox inside the wrapper
   - The submit button is a <label for="submit-trigger">
   - Clicking it checks the checkbox
   - CSS then shows .thankyou-overlay via the ~ sibling selector
========================================================= */

/* Full-screen overlay — hidden by default */
.thankyou-overlay {
  display: none;            /* hidden until submit is triggered */
  position: fixed;          /* covers the entire viewport */
  inset: 0;                 /* all 4 edges */
  background: rgba(26, 26, 46, 0.88); /* dark semi-transparent backdrop */
  z-index: 9999;            /* on top of everything */
  align-items: center;      /* vertically centres .thankyou-box within the fixed overlay */
  justify-content: center;  /* horizontally centres .thankyou-box within the fixed overlay */
  padding: 20px;            /* prevent box touching edges on small screens */
}

/* Show overlay when the hidden #submit-trigger checkbox is checked.
   The submit button is a <label for="submit-trigger"> so clicking
   it checks the checkbox — no JavaScript needed. */
#submit-trigger:checked ~ .thankyou-overlay {
  /* ~ selects .thankyou-overlay as a following sibling of #submit-trigger inside .contact-form-wrapper */
  display: flex; /* flex so the centering works */
}

/* The popup card */
.thankyou-box {
  background: var(--cream);
  border-radius: 20px;
  padding: 50px 40px;
  text-align: center;
  max-width: 500px;
  width: 100%;              /* responsive on small screens */
  border: 3px solid var(--gold); /* prominent gold frame around the success popup */
  box-shadow: 0 20px 60px rgba(0,0,0,0.3); /* deep shadow grounds the popup against the dark overlay */
}

/* Large emoji at top */
.thankyou-emoji {
  font-size: 3.5rem;
  margin-bottom: 14px;      /* gap between emoji and the h2 below it */
  display: block;           /* forces the emoji onto its own line — it's inline by default */
}

/* Popup heading */
.thankyou-box h2 {          /* targets the <h2> inside .thankyou-box */
  font-size: clamp(1.3rem, 3vw, 2rem); /* fluid */
  color: var(--dark);
  margin-bottom: 14px;      /* gap between heading and the paragraph below */
}

/* Gold word in heading */
.thankyou-box h2 span {     /* targets the highlighted word wrapped in <span> inside the h2 */
  color: var(--gold);
}

/* Popup text */
.thankyou-box p {           /* targets the message paragraph inside .thankyou-box */
  font-size: 0.95rem;
  color: #555;
  line-height: 1.8;
  margin-bottom: 10px;      /* space between paragraphs or between text and the button below */
}

/* Submit button (actually a label) — gold pill */
.btn-contact-submit {
  display: inline-block;    /* allows padding and transforms on the <label> element like a block */
  background-color: var(--gold);
  color: var(--dark);
  font-weight: 700;
  padding: 14px 36px;
  border: 2px solid var(--gold); /* same colour as background — becomes visible only on hover when bg turns transparent */
  border-radius: 25px;      /* large radius on a short element produces a pill shape */
  font-family: var(--font-body); /* Lato — explicit override in case browser styles a <label> differently */
  letter-spacing: 2px;
  text-transform: uppercase;
  font-size: 0.88rem;
  cursor: pointer;          /* shows hand cursor — makes the label look clickable like a real button */
  transition: 0.3s ease;
}

/* Hover — invert to outline */
.btn-contact-submit:hover {
  background-color: transparent; /* removes gold fill on hover */
  color: var(--gold);            /* text turns gold to stay readable on the now-transparent background */
  transform: translateY(-2px);   /* lifts the button 2px upward relative to its resting position */
}

/* Icon inside button */
.btn-contact-submit i {     /* targets the Font Awesome icon inside the submit label-button */
  margin-left: 8px;         /* space between the button text and the icon to its right */
}

/* =========================================================
   CULTURE — HERO BANNER (solid blue background)
========================================================= */
.culture-hero {
  background: var(--blue);  /* solid Mediterranean blue — no image, just colour */
  color: white;             /* default text colour for all children, overrideable per element */
  padding: 70px 20px;       /* 70px vertical, 20px horizontal so text doesn't touch viewport edges on small screens */
  text-align: center;
}

/* Main heading */
.culture-hero h1 {          /* targets the <h1> inside .culture-hero */
  font-size: clamp(1.6rem, 4vw, 2.8rem); /* fluid */
  margin-bottom: 12px;      /* gap between heading and the subtitle paragraph below */
}

/* Subtitle */
.culture-hero p {           /* targets the subtitle <p> inside .culture-hero */
  font-size: clamp(0.9rem, 2vw, 1.2rem); /* fluid */
  max-width: 700px;         /* constrains line length for readability on wide screens */
  margin: auto;             /* centres the max-width paragraph horizontally */
  line-height: 1.7;
}

/* =========================================================
   CULTURE — SECTION WRAPPER
========================================================= */
.culture-section {
  padding: 40px 16px 60px; /* smaller side padding for small screens */
}

/* =========================================================
   CULTURE — TABS (Pure CSS radio trick)
   Hidden radio inputs sit BEFORE .ch-tabs in the HTML.
   Clicking a label checks its linked radio.
   CSS then shows the matching content panel and highlights the tab.
========================================================= */

/* Hide all radio inputs — only labels are visible */
input[type="radio"] {       /* targets every radio input on the page — only the culture tabs use radios here */
  display: none;            /* completely removes radios from layout; their state is still tracked by CSS */
}

/* Tab buttons row */
.ch-tabs {
  display: flex;            /* places tab labels side by side */
  justify-content: center;  /* centres the tab row horizontally */
  gap: 10px;                /* space between each tab button */
  flex-wrap: wrap; /* wrap to new line on small screens */
  margin-bottom: 30px;      /* space between the tab row and the content panel below */
}

/* Default tab button — blue outline pill */
.ch-tab {
  padding: 10px 18px;
  border: 2px solid var(--blue); /* blue border at rest — matches the culture page colour scheme */
  background: white;
  color: var(--blue);
  border-radius: 30px;      /* large radius on a short element creates the pill shape */
  cursor: pointer;          /* shows hand cursor — these are <label> elements, not <button> */
  font-weight: 600;
  font-size: 0.9rem;       /* slightly smaller for small screens */
  transition: var(--transition); /* uses the global 0.35s ease transition for hover animation */
  white-space: nowrap;     /* prevent tab text wrapping mid-word */
}

/* Hover — fill with blue */
.ch-tab:hover {
  background: var(--blue);  /* fills the pill with blue on hover */
  color: white;             /* text switches to white for contrast on the blue background */
}

/* Active tab — gold fill
   Works because radio inputs appear before .ch-tabs in HTML,
   so the ~ sibling selector can reach the labels inside it. */
#tab-food:checked       ~ .ch-tabs label[for="tab-food"],
#tab-traditions:checked ~ .ch-tabs label[for="tab-traditions"],
#tab-arts:checked       ~ .ch-tabs label[for="tab-arts"],
#tab-clothing:checked   ~ .ch-tabs label[for="tab-clothing"] {
  /* ~ selects siblings after the checked radio; label[for="tab-food"] targets the label that controls that specific radio */
  background: var(--gold);         /* active tab fills with gold instead of blue */
  color: var(--dark);              /* dark text on gold background for readability */
  border-color: var(--gold);       /* border matches the fill */
  transform: translateY(-2px);     /* lifts the active tab 2px relative to inactive tabs */
  box-shadow: 0 4px 10px rgba(0,0,0,0.15); /* subtle shadow beneath the lifted active tab */
}

/* =========================================================
   CULTURE — TAB CONTENT PANELS
========================================================= */

/* All panels hidden by default */
.ch-content {
  display: none;            /* every content panel starts hidden — only one is shown at a time via the radio trick */
  margin-top: 20px;         /* gap between the tab row above and the revealed content panel */
  animation: fadeIn 0.4s ease; /* smooth appear */
}

/* Show panel matching the checked radio */
#tab-food:checked       ~ #content-food       { display: block; }
/* ~ selects #content-food as a following sibling of #tab-food — only works because they share the same parent */
#tab-traditions:checked ~ #content-traditions { display: block; }
#tab-arts:checked       ~ #content-arts       { display: block; }
#tab-clothing:checked   ~ #content-clothing   { display: block; }

/* Fade in animation */
@keyframes fadeIn {              /* named animation used by .ch-content when it becomes visible */
  from { opacity: 0; transform: translateY(10px); } /* starts invisible and 10px below its final position */
  to   { opacity: 1; transform: translateY(0); }    /* ends fully visible at its natural position */
}

/* =========================================================
   CULTURE — DECORATIVE DIVIDER (above Traditions)
========================================================= */
.curly-top {
  width: 100%;
  height: 40px;
  background: url('images/curly-blue.png') center/contain no-repeat;
  /* path is relative to the CSS file; contain scales the image to fit within 40px height without cropping */
  margin: 20px 0 30px;     /* 20px above to separate from content, 30px below before the traditions grid */
}

/* =========================================================
   CULTURE — FOOD CARDS
   Circular cards (border-radius 50%).
   Text sits BELOW the card — outside, as a caption.
   Each .food-item = circle on top + caption below.
========================================================= */

/* Food grid — 4 columns on desktop */
.food-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr); /* 4 equal-width columns — each .food-item takes exactly 25% of the grid */
  gap: 24px;              /* space between columns and rows */
  padding: 10px 0;        /* small vertical padding above and below the grid */
}

/* food-card = the circular image only */
.food-card {
  position: relative;            /* establishes stacking context for any future absolutely-positioned children */
  border-radius: 50%;            /* perfect circle */
  aspect-ratio: 1 / 1;          /* forces square so circle is correct */
  overflow: hidden;              /* clips the image to the circle boundary and hides the zoom overshoot on hover */
  border: 3px solid var(--terracotta); /* earthy red ring around each food circle */
  box-shadow: 0 4px 16px rgba(0,0,0,0.12); /* soft shadow beneath the circle */
  transition: var(--transition);
  cursor: pointer;
}

/* Hover — lift and gold border */
.food-card:hover {
  transform: translateY(-8px) scale(1.04); /* lifts 8px upward and scales 4% larger simultaneously */
  box-shadow: 0 16px 32px rgba(0,0,0,0.18); /* deeper shadow accompanies the lift */
  border-color: var(--gold);    /* border switches from terracotta to gold on hover */
}

/* Image fills the full circle */
.food-card img {                 /* targets the <img> inside .food-card */
  width: 100%;
  height: 100%;
  object-fit: cover;             /* fills the circle without distorting the food image */
  display: block;                /* removes the default inline gap below the image */
  transition: transform 0.4s ease; /* smooth zoom animation on hover */
}

/* Zoom image slightly on hover */
.food-card:hover img {           /* triggers when the mouse is over .food-card, zooming the <img> inside */
  transform: scale(1.08);        /* scales the image 8% larger within the overflow:hidden circle boundary */
}

/* Text caption below the circle (outside) */
.food-card-text {
  text-align: center;
  margin-top: 10px; /* gap between circle and text */
  padding: 0 4px;               /* small side padding prevents text touching the grid column edges */
}

/* Food item name */
.food-card-text h3 {             /* targets the name heading inside .food-card-text */
  font-family: var(--font-heading); /* Playfair Display — editorial serif for dish names */
  font-size: 0.9rem;
  color: var(--dark);
  margin-bottom: 2px;            /* tiny gap between name and description */
}

/* Food item description */
.food-card-text p {              /* targets the description inside .food-card-text */
  font-size: 0.78rem;
  color: #777;                   /* muted grey — secondary to the dish name above */
  margin: 0;
}

/* =========================================================
   CULTURE — CLOTHING CARDS
   Square with rounded corners (border-radius 16px).
   Text overlays the bottom of the image with a dark gradient.
========================================================= */

/* Clothing grid — 4 columns on desktop */
.clothing-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr); /* 4 equal-width columns — same layout as food-grid */
  gap: 20px;                     /* space between cards */
  padding: 10px 0;
}

/* Square card with rounded corners */
.cloth-card {
  position: relative;            /* required so .cloth-card-text (absolute) is positioned relative to this card */
  border-radius: 16px;           /* rounded square — NOT circle */
  aspect-ratio: 1 / 1;          /* perfect square */
  overflow: hidden;              /* clips both the image and the gradient overlay to the rounded square boundary */
  border: 3px solid var(--terracotta); /* earthy red border — matches food cards for visual consistency */
  box-shadow: 0 4px 16px rgba(0,0,0,0.12);
  transition: var(--transition);
  cursor: pointer;
}

/* Hover — lift and gold border */
.cloth-card:hover {
  transform: translateY(-8px) scale(1.03); /* lifts 8px and scales 3% — slightly less than food cards */
  box-shadow: 0 16px 32px rgba(0,0,0,0.18);
  border-color: var(--gold);     /* border switches from terracotta to gold on hover */
}

/* Image fills the full square card */
.cloth-card img {                /* targets the <img> inside .cloth-card */
  width: 100%;
  height: 100%;
  object-fit: cover;             /* fills the square card without distorting the clothing image */
  display: block;
  transition: transform 0.4s ease;
}

/* Zoom on hover */
.cloth-card:hover img {
  transform: scale(1.08);        /* zooms image within the overflow:hidden boundary */
}

/* Text overlay at the bottom with dark gradient */
.cloth-card-text {
  position: absolute; /* sits on top of image */
  bottom: 0;                     /* anchored to the bottom edge of .cloth-card */
  left: 0;
  right: 0;                      /* stretches full width of the card */
  padding: 28px 10px 12px; /* tall top padding for gradient fade */
  background: linear-gradient(to top, rgba(0,0,0,0.80) 0%, transparent 100%);
  /* gradient fades from 80% black at the bottom to fully transparent at the top */
  text-align: center;
}

/* Clothing item name */
.cloth-card-text h3 {            /* targets the name heading inside the overlay */
  font-family: var(--font-heading);
  font-size: 0.88rem;
  color: #fff;                   /* white text on the dark gradient overlay */
  margin-bottom: 2px;
}

/* Clothing item description */
.cloth-card-text p {             /* targets the description inside the overlay */
  font-size: 0.75rem;
  color: rgba(255,255,255,0.85); /* slightly transparent white — secondary to the white name above */
  margin: 0;
}

/* =========================================================
   CULTURE — TRADITIONS LIST
   2-column grid, white cards, blue left border, emoji icon.
   Matches the provided screenshot exactly.
========================================================= */

/* 2-column traditions grid */
.trad-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr); /* 2 equal columns — each card takes 50% of the grid width */
  gap: 20px;                     /* space between cards */
  margin-top: 10px;              /* small gap between any heading above and the grid */
}

/* Each tradition card */
.trad-item {
  display: flex;                 /* places .trad-icon and the text block side by side */
  gap: 16px;                     /* space between the icon square and the text beside it */
  background: white;
  padding: 18px 20px;
  border-radius: 14px;
  border: 1px solid rgba(0,0,0,0.07); /* very faint shadow-like border around the white card */
  border-left: 4px solid var(--blue); /* blue accent left border (screenshot) */
  box-shadow: 0 4px 12px rgba(0,0,0,0.05); /* subtle lift shadow beneath the card */
  transition: var(--transition);
  align-items: flex-start;       /* aligns icon to the top of the card so multi-line text doesn't centre the icon */
}

/* Hover — lift */
.trad-item:hover {
  transform: translateY(-5px);   /* lifts the card 5px relative to its grid position */
  box-shadow: 0 10px 24px rgba(0,0,0,0.1); /* deeper shadow accompanies the lift */
}

/* Emoji in blue rounded square */
.trad-icon {
  font-size: 1.5rem;
  min-width: 48px;         /* never shrink */
  width: 48px;
  height: 48px;
  background: var(--blue); /* blue fill */
  border-radius: 10px;     /* rounded square */
  display: flex;           /* centres the emoji inside the square */
  align-items: center;     /* vertical centering of emoji within the 48px square */
  justify-content: center; /* horizontal centering of emoji within the 48px square */
  flex-shrink: 0;          /* prevents the icon from shrinking when the text beside it is long */
}

/* Tradition title */
.trad-item h3 {                  /* targets the tradition name heading inside .trad-item */
  font-size: 0.98rem;
  color: var(--dark);
  margin-bottom: 5px;            /* gap between title and the description below */
}

/* Tradition description */
.trad-item p {                   /* targets the tradition description paragraph inside .trad-item */
  font-size: 0.85rem;
  color: #666;
  line-height: 1.6;
  margin: 0;
}

/* =========================================================
   CULTURE — ARTS & CRAFTS CARDS
   3-column grid, big emoji, white rounded cards.
========================================================= */

/* 3-column arts grid */
.arts-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* 3 equal columns — each card takes 33.3% of the grid */
  gap: 24px;
  padding: 10px 0;
}

/* Arts card */
.arts-card {
  background: white;
  border-radius: 20px;           /* more rounded than .trad-item (14px) — softer, more playful feel */
  padding: 28px 20px;
  text-align: center;
  border: 1px solid rgba(0,0,0,0.08); /* faint border for definition on the cream background */
  box-shadow: 0 4px 12px rgba(0,0,0,0.05);
  transition: var(--transition);
}

/* Hover — lift */
.arts-card:hover {
  transform: translateY(-8px);   /* lifts 8px relative to its grid position */
  box-shadow: 0 12px 28px rgba(0,0,0,0.12); /* deeper shadow beneath the lifted card */
}

/* Large emoji icon */
.arts-emoji {
  font-size: 3rem;     /* bigger than before */
  margin-bottom: 12px;           /* gap between emoji and the card title below */
  display: block;                /* forces the emoji onto its own line — it's inline by default */
}

/* Arts title */
.arts-card h3 {                  /* targets the craft name heading inside .arts-card */
  font-size: 1rem;
  color: var(--dark);
  margin-bottom: 8px;            /* gap between title and description */
}

/* Arts description */
.arts-card p {                   /* targets the description paragraph inside .arts-card */
  font-size: 0.88rem;
  color: #666;
  line-height: 1.6;
}

/* =========================================================
   RESPONSIVE — LARGE TABLET (max-width: 992px)
========================================================= */
@media (max-width: 992px) {     /* applies to viewports 992px wide and below (Bootstrap lg breakpoint) */
  /* Fact cards — 3 per row */
  .fact-card            { flex: 1 1 calc(33.33% - 1px); } /* each card takes 1/3 of the row — 6-per-row desktop layout is too cramped at this width */
  /* Destination image shorter */
  .dest-img-wrap        { min-height: 300px; } /* image column is narrower at this width so 500px tall would look stretched; 300px keeps a good ratio */
  /* Destination text less padding */
  .dest-text            { padding: 30px 24px; } /* less inner spacing because the text column is narrower — 40px would waste too much space */
  /* Culture grids — 2 columns */
  .food-grid            { grid-template-columns: repeat(2, 1fr); } /* 4 columns is too tight at this width — 2 columns gives each card enough space */
  .clothing-grid        { grid-template-columns: repeat(2, 1fr); } /* same reason as food-grid — 4 columns would make cards too narrow to see clearly */
  .arts-grid            { grid-template-columns: repeat(2, 1fr); } /* 3 columns becomes cramped at this width — 2 columns keeps cards readable */
  /* Traditions — single column */
  .trad-list            { grid-template-columns: 1fr; } /* 2-column layout is too narrow at this width — single column gives each tradition card full width to breathe */
}

/* =========================================================
   RESPONSIVE — TABLET (max-width: 768px)
========================================================= */
@media (max-width: 768px) {     /* applies to viewports 768px wide and below (Bootstrap md breakpoint) */
  /* Welcome section less vertical padding */
  .section-welcome      { padding: 50px 0 30px; } /* less breathing room top and bottom — phone screens are short, so vertical space is precious */
  /* Scrolling gallery shorter */
  .scroll-gallery       { height: 260px; margin-top: 28px; } /* the gallery sits below the text column which now stacks on top — 460px tall would push content far off screen */
  .scroll-track img     { height: 130px; } /* each image is shorter to match the new 260px gallery window — keeps roughly the same number of images visible */
  /* Fact cards — 3 per row, tighter padding */
  .fact-card            { flex: 1 1 calc(33.33% - 1px); padding: 16px 8px; } /* less inner padding because each card is narrower — 24px would leave almost no room for the text */
  /* Why section — 2 cards per row */
  .section-why .col-lg-3  { flex: 0 0 50%; max-width: 50%; } /* Bootstrap col-lg-3 is normally 25% wide — overriding to 50% makes 2 cards per row instead of 4 */
  /* Destinations hero shorter */
  .dest-hero            { height: 40vh; } /* 60vh on a phone would take up most of the screen before the user even sees any content */
  /* Destination image shorter */
  .dest-img-wrap        { min-height: 250px; } /* image column is narrower at this width — keeping 300px tall would make it look too portrait-stretched */
  /* Destination text tighter */
  .dest-text            { padding: 24px 20px; } /* the text column is narrower here so less inner padding avoids the text feeling squeezed */
  /* Contact map shorter */
  .contact-map          { height: 300px; } /* 420px tall map on a phone takes up the entire screen — 300px keeps it useful without dominating */
  /* Footer columns centred */
  footer .col-md-4      { text-align: center; margin-bottom: 10px; } /* Bootstrap stacks footer columns vertically at this width — centring each one looks intentional rather than left-aligned by accident */
}

/* =========================================================
   RESPONSIVE — MOBILE (max-width: 576px)
========================================================= */
@media (max-width: 576px) {     /* applies to viewports 576px wide and below (Bootstrap sm breakpoint) */
  /* Hero less padding top */
  .hero-content         { padding: 90px 16px 50px; } /* 100px top padding is enough to clear the navbar on any screen size — 90px works fine here too */
  /* Stats stack vertically */
  .welcome-stat         { flex-direction: column; gap: 12px; } /* 3 stats side by side are too cramped on a phone — column direction stacks them one below the other */
  /* Fact cards — 2 per row */
  .fact-card            { flex: 1 1 calc(50% - 1px); padding: 14px 8px; } /* 3 cards per row is too narrow on a phone — 2 per row gives each card enough width for the icon and text */
  /* Why cards — full width */
  .section-why .col-lg-3  { flex: 0 0 100%; max-width: 100%; } /* 2 cards side by side is still tight on small phones — full width stacks them cleanly one per row */
  /* Why section less padding */
  .section-why          { padding: 50px 0; } /* 80px vertical padding wastes too much screen height on a phone */
  /* Destination image shorter */
  .dest-img-wrap        { min-height: 220px; } /* the image stacks above the text on mobile — 250px tall is fine, but 220px saves a bit of scroll distance */
  /* Destination text tighter */
  .dest-text            { padding: 20px 16px; } /* the text takes the full width on mobile so less padding is needed — 24px on each side would waste usable reading width */
  /* Contact requirements less padding */
  .contact-requirements { padding: 50px 0; } /* 70px top/bottom padding on a phone pushes content too far down before it appears */
  /* Contact form full width */
  .contact-form-wrapper { max-width: 100%; } /* the 750px cap exists for wide screens to keep the form readable — on a phone the full screen width is needed */
  /* Thank you box less padding */
  .thankyou-box         { padding: 36px 20px; } /* 50px inner padding on a small screen pushes the popup content too close to the edges of the viewport */
  /* Culture section side padding */
  .culture-section      { padding: 30px 12px 50px; } /* narrower side padding gives the culture grids more width to work with on a phone */
  /* Tab buttons smaller */
  .ch-tab               { padding: 8px 14px; font-size: 0.82rem; } /* slightly smaller text and padding so all 4 tab buttons fit in one or two rows without being too cramped */
  /* All culture grids — 2 columns */
  .food-grid            { grid-template-columns: repeat(2, 1fr); gap: 16px; } /* already 2 columns since the 992px breakpoint — gap tightened slightly to give cards more width */
  .clothing-grid        { grid-template-columns: repeat(2, 1fr); gap: 14px; }
  .arts-grid            { grid-template-columns: repeat(2, 1fr); gap: 16px; } /* already 2 columns since 992px — gap tightened to fit cards better on phone width */
  /* Checklist rows tighter */
  .req-item             { padding: 14px 16px; } /* 18px inner padding makes rows too tall on a phone where vertical space is limited */
  .req-text             { font-size: 0.95rem; } /* the checklist text is slightly smaller to keep rows compact on a narrow screen */
}

/* =========================================================
   RESPONSIVE — VERY SMALL (max-width: 400px)
   Covers 350px screens and anything smaller cleanly.
========================================================= */
@media (max-width: 400px) {     /* applies to very small phones (e.g. iPhone SE 1st gen at 320px) */
  /* Navbar — smaller brand */
  .navbar-brand         { font-size: 0.95rem; }   /* at 400px the navbar is very narrow — smaller brand text stops it clashing with the hamburger icon */
  .navbar-brand img     { width: 30px; height: 30px; } /* logo takes up less horizontal space so the brand text beside it has more room */
  /* Hero — tighter padding and smaller text */
  .hero-content         { padding: 75px 12px 36px; } /* less top padding because the navbar is the same height — and side padding is tightened to give text more width */
  .hero-tag             { font-size: 0.6rem; letter-spacing: 2px; } /* tag sits above the h1 — making it smaller ensures it doesn't compete with the main heading on a tiny screen */
  .btn-hero             { padding: 10px 20px; font-size: 0.78rem; letter-spacing: 1px; } /* smaller button so it doesn't feel oversized relative to the heading above it */
  /* Fact cards — 2 per row, very compact */
  .fact-card            { flex: 1 1 calc(50% - 1px); padding: 10px 4px; } /* minimal inner padding — at 400px each card is only ~200px wide, so every pixel of horizontal space counts */
  .fact-icon            { font-size: 1rem; margin-bottom: 5px; }    /* icon is smaller so it doesn't dominate the card at this tight width */
  .fact-label           { font-size: 0.6rem; letter-spacing: 1px; } /* very small uppercase label — readable but not competing with the value below it */
  .fact-value           { font-size: 0.78rem; }                      /* main fact text is smaller to fit inside the narrow card without wrapping awkwardly */
  .fact-value span      { font-size: 0.68rem; }                      /* sub-text below the value is even smaller — it's supplementary info */
  /* Why cards — full width, smaller padding */
  .section-why .col-lg-3 { flex: 0 0 100%; max-width: 100%; }       /* cards stay 1-per-row (same as 576px) — confirmed intentional at this size too */
  .why-card             { padding: 18px 12px; }                      /* less inner padding — the card is full width but the section has limited vertical space */
  /* Destinations — very compact */
  .dest-hero            { height: 32vh; }                            /* 40vh on a very small screen still takes up a lot before the user sees any content */
  .dest-img-wrap        { min-height: 200px; }                       /* destination images stack above text on mobile — 200px is the minimum to still recognise what's in the photo */
  .dest-text            { padding: 16px 12px; }                      /* very tight padding — the column is full width so every extra pixel of padding shrinks the readable text area */
  .dest-text p          { font-size: 0.88rem; }                      /* destination description text is slightly smaller so long paragraphs don't cause excessive scrolling */
  .dest-info li         { font-size: 0.8rem; }                       /* info list items are smaller to fit the icon + label + value on one line without wrapping */
  /* Contact map shorter */
  .contact-map          { height: 220px; }                           /* 300px map is too tall on a tiny screen — 220px is still tall enough to be interactive and useful */
  /* Checklist — compact */
  .req-item             { padding: 10px 10px; gap: 8px; }            /* very tight padding and gap — checklist rows need to be compact so all 5 fit on screen without excessive scrolling */
  .req-text             { font-size: 0.85rem; }                      /* checklist text is slightly smaller to keep each row short enough to read at a glance */
  .req-box              { width: 18px; height: 18px; min-width: 18px; } /* custom checkbox is smaller to match the tighter row height — still large enough to tap */
  /* Submit button full width */
  .btn-contact-submit   { width: 100%; text-align: center; padding: 12px 16px; } /* full-width button is much easier to tap on a tiny screen than a centered pill */
  /* Thank you popup — compact */
  .thankyou-box         { padding: 26px 14px; }                      /* less inner padding so the popup content fits fully on screen without scrolling inside the overlay */
  .thankyou-emoji       { font-size: 2.5rem; }                       /* emoji is smaller so the heading and message below it aren't pushed too far down */
  /* Culture tabs — very compact, allow wrapping */
  .ch-tab               { padding: 6px 10px; font-size: 0.75rem; }  /* smallest tab size — at 400px all 4 tabs need to wrap into 2 rows and still be tappable */
  .ch-tabs              { gap: 6px; }                                /* tighter gap between tabs so they wrap into 2 compact rows rather than 4 single rows */
  /* All culture grids — 2 columns, tight gap */
  .food-grid            { grid-template-columns: repeat(2, 1fr); gap: 10px; } /* gap tightened so each circular food card gets more width at this narrow viewport */
  .clothing-grid        { grid-template-columns: repeat(2, 1fr); gap: 8px; }  /* even tighter gap for clothing cards — they have text overlay so every pixel helps */
  .arts-grid            { grid-template-columns: repeat(2, 1fr); gap: 10px; } /* gap tightened to match food-grid — keeps the layout consistent across culture tabs */
  /* Arts emoji smaller */
  .arts-emoji           { font-size: 2rem; }                         /* emoji at 3rem would be very large relative to a 200px-wide card — 2rem keeps it decorative not dominating */
  /* Arts card padding */
  .arts-card            { padding: 18px 12px; }                      /* less inner padding — at this width the card is narrow so side padding would crush the text */
  /* Traditions — single column, compact */
  .trad-list            { grid-template-columns: 1fr; gap: 10px; }   /* single column (same as 992px) — confirmed intentional at the smallest size too */
  .trad-icon            { width: 38px; height: 38px; min-width: 38px; font-size: 1.1rem; } /* icon square is smaller to save horizontal space beside the tradition text */
  .trad-item            { padding: 12px; gap: 10px; }                /* compact inner spacing — card is full width so padding eats into usable reading area */
  .trad-item h3         { font-size: 0.88rem; }                      /* tradition title is slightly smaller so it doesn't wrap onto 3 lines on a tiny screen */
  .trad-item p          { font-size: 0.78rem; }                      /* description text is smaller to keep the card height reasonable */
  /* Food card text smaller */
  .food-card-text h3    { font-size: 0.82rem; }                      /* food name caption is smaller — the circle above it is narrow so short text looks better */
  .food-card-text p     { font-size: 0.72rem; }                      /* description under the food name is even smaller — it's supplementary info */
  /* Clothing card text smaller */
  .cloth-card-text h3   { font-size: 0.8rem; }                       /* clothing name inside the gradient overlay is smaller so it fits on one line in a narrow card */
  .cloth-card-text p    { font-size: 0.7rem; }                       /* description inside overlay is smallest text — secondary info that shouldn't crowd the card */
  /* Footer compact */
  footer .col-md-4      { text-align: center; margin-bottom: 8px; }  /* footer columns stack vertically — centring each one and reducing the gap between them keeps the footer tight */
  .footer-bottom        { font-size: 0.68rem; }                      /* copyright line is very small — least important text on the page and needs to fit on one line */
  /* Section headings smaller */
  .dest-intro h2        { font-size: 1.3rem; }                       /* clamp() sets a minimum but this override is needed because even the minimum is too large at 320–400px */
  .contact-requirements h2 { font-size: 1.3rem; }                    /* same reason — heading stays readable without wrapping onto too many lines */
  .contact-form-wrapper h2 { font-size: 1.3rem; }                    /* same reason — consistent heading size across all contact page sections */
}