/* ==========================================================================
   Zlatne Gorice — Stylesheet
   --------------------------------------------------------------------------
   A modest, modern refresh of the Zlatne Gorice website.
   Warm, earthy palette (cream background, wine-red accent, charcoal text),
   elegant serif headings, clean sans-serif body.

   Structure of this file:
     1. Design tokens (CSS variables: colours, fonts, spacing)
     2. Base / reset
     3. Language switching (HR / EN)
     4. Layout helpers
     5. Site header / navigation
     6. Hero
     7. Section teasers (grid of cards linking to the other pages)
     8. Footer
     9. Scroll fade-in animation
    10. Responsive / mobile adjustments
   ========================================================================== */


/* 1. DESIGN TOKENS ========================================================= */
:root {
  /* Colours — warm and earthy, matching the vineyard setting */
  --color-bg:          #faf6ee; /* warm cream / ivory background */
  --color-bg-alt:      #f2ebdd; /* slightly deeper cream for alternating sections */
  --color-text:        #2c2a27; /* soft charcoal for body text */
  --color-heading:     #221f1c; /* near-black for headings */
  --color-accent:      #6d2233; /* deep burgundy / wine red — primary accent */
  --color-accent-dark: #551a28; /* darker wine for hover states */
  --color-gold:        #a8894f; /* muted gold, used sparingly for fine detail */
  --color-muted:       #6f665b; /* muted brown-grey for secondary text */
  --color-line:        #e0d6c4; /* hairline borders */

  /* Typography */
  --font-serif: "Playfair Display", Georgia, "Times New Roman", serif;
  --font-sans:  "Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

  /* Spacing / layout */
  --max-width:    1180px;   /* max content width */
  --gutter:       clamp(1.25rem, 4vw, 3rem); /* side padding, responsive */
  --radius:       6px;      /* gentle rounded corners */
  --header-h:     72px;     /* sticky header height */
  --shadow-soft:  0 6px 24px rgba(60, 40, 20, 0.10);
  --shadow-card:  0 10px 30px rgba(60, 40, 20, 0.12);
  --transition:   0.25s ease;
}


/* 2. BASE / RESET ========================================================== */
*,
*::before,
*::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 1.05rem;
  line-height: 1.7;
  color: var(--color-text);
  background-color: var(--color-bg);
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
  font-family: var(--font-serif);
  color: var(--color-heading);
  font-weight: 600;
  line-height: 1.2;
  margin: 0 0 0.5em;
}

p { margin: 0 0 1.1em; }

a { color: var(--color-accent); text-decoration: none; transition: color var(--transition); }
a:hover { color: var(--color-accent-dark); }

img { max-width: 100%; height: auto; display: block; }


/* 3. LANGUAGE SWITCHING (HR / EN) ==========================================
   Every translated element is duplicated: one copy marked .lang-hr, one .lang-en.
   Croatian is shown by default. main.js sets  <html data-lang="hr|en">  and the
   rules below reveal the correct language. Using `revert` keeps each element's
   natural display type (span stays inline, div stays block).                */
.lang-en { display: none; }                      /* hide English by default (HR is primary) */
html[data-lang="en"] .lang-en { display: revert; }
html[data-lang="en"] .lang-hr { display: none; }


/* 4. LAYOUT HELPERS ======================================================== */
.container {
  width: 100%;
  max-width: var(--max-width);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.section { padding-block: clamp(3.5rem, 8vw, 6rem); }
.section--alt { background-color: var(--color-bg-alt); }

/* Small caps-style eyebrow label above headings */
.eyebrow {
  font-family: var(--font-sans);
  font-size: 0.8rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--color-gold);
  font-weight: 600;
  margin-bottom: 0.75rem;
}

/* Decorative short rule used under section headings */
.rule {
  width: 60px;
  height: 2px;
  background: var(--color-accent);
  border: 0;
  margin: 1.25rem 0 2rem;
}
.rule--center { margin-inline: auto; }

.text-center { text-align: center; }


/* Buttons */
.btn {
  display: inline-block;
  font-family: var(--font-sans);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 0.85rem 1.9rem;
  border-radius: var(--radius);
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: background var(--transition), color var(--transition), border-color var(--transition);
}
.btn--primary {
  background: var(--color-accent);
  color: #fff;
}
.btn--primary:hover { background: var(--color-accent-dark); color: #fff; }

.btn--ghost {
  background: transparent;
  color: #fff;
  border-color: rgba(255, 255, 255, 0.75);
}
.btn--ghost:hover { background: rgba(255, 255, 255, 0.15); color: #fff; }


/* 5. SITE HEADER / NAVIGATION ============================================== */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(250, 246, 238, 0.92);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--color-line);
}

.nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  min-height: var(--header-h);
}

/* Brand / logo — gold Zlatne Gorice wordmark image */
.nav__brand {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
}
.nav__brand img {
  height: 48px;          /* clearly visible, not oversized */
  width: auto;
  display: block;
  /* Gold-on-cream is naturally low contrast; a thin dark ring + soft shadow
     gives the lettering definition against the ivory header. The stacked
     0-offset shadows build up a subtle outline on all sides. */
  filter:
    drop-shadow(0 0 0.7px rgba(70, 35, 12, 0.85))
    drop-shadow(0 0 0.7px rgba(70, 35, 12, 0.6))
    drop-shadow(0 1px 1.5px rgba(0, 0, 0, 0.3));
}

.nav__links {
  display: flex;
  align-items: center;
  gap: 1.15rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.nav__links a {
  color: var(--color-text);
  font-size: 0.92rem;
  font-weight: 500;
  padding: 0.4rem 0;
  position: relative;
  white-space: nowrap; /* keep each label on one line (10 nav items) */
}
/* Subtle underline on hover / active */
.nav__links a::after {
  content: "";
  position: absolute;
  left: 0; bottom: 0;
  width: 0; height: 2px;
  background: var(--color-accent);
  transition: width var(--transition);
}
.nav__links a:hover::after,
.nav__links a[aria-current="page"]::after { width: 100%; }
.nav__links a:hover { color: var(--color-accent); }

/* Right-side controls: language switch + mobile toggle */
.nav__controls { display: flex; align-items: center; gap: 1rem; }

/* Language switcher */
.lang-switch {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--color-line);
  border-radius: 999px;
  overflow: hidden;
  font-size: 0.82rem;
  font-weight: 600;
}
.lang-switch button {
  background: transparent;
  border: 0;
  padding: 0.35rem 0.75rem;
  cursor: pointer;
  color: var(--color-muted);
  font-family: var(--font-sans);
  transition: background var(--transition), color var(--transition);
}
.lang-switch button[aria-pressed="true"] {
  background: var(--color-accent);
  color: #fff;
}

/* Mobile menu toggle (hidden on desktop) */
.nav__toggle {
  display: none;
  background: transparent;
  border: 0;
  cursor: pointer;
  padding: 0.4rem;
  color: var(--color-heading);
}
.nav__toggle svg { display: block; }


/* 6. HERO ================================================================== */
.hero {
  position: relative;
  min-height: min(86vh, 720px);
  display: flex;
  align-items: center;
  color: #fff;
  text-align: center;
  overflow: hidden;
}
/* Background photo. object-fit keeps low-res photos filling the frame cleanly. */
.hero__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
/* Dark warm gradient overlay so white text stays readable over any photo.
   Deepened for stronger contrast behind the upright hero heading. */
.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(28, 16, 12, 0.50) 0%,
    rgba(28, 16, 12, 0.55) 55%,
    rgba(45, 20, 25, 0.72) 100%
  );
}
.hero__inner {
  position: relative; /* sit above the overlay */
  z-index: 1;
  max-width: 780px;
  margin-inline: auto;
}
.hero__eyebrow {
  color: rgba(255, 255, 255, 0.85);
  letter-spacing: 0.22em;
}
.hero h1 {
  color: #fff;
  font-size: clamp(2.2rem, 5.5vw, 4rem);
  /* Upright serif (not italic) for maximum legibility over the photo */
  font-style: normal;
  margin-bottom: 0.6em;
  /* Layered shadow: a soft wide glow plus a tight dark edge for crisp contrast */
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.55), 0 1px 3px rgba(0, 0, 0, 0.45);
}
.hero__text {
  font-size: clamp(1.05rem, 2vw, 1.3rem);
  color: rgba(255, 255, 255, 0.94);
  max-width: 620px;
  margin-inline: auto;
  margin-bottom: 2rem;
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.45);
}
.hero__cta { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }

/* ---- Homepage hero only --------------------------------------------------
   The homepage leads with the estate name as the main heading, a smaller
   tagline beneath it, then the buttons — there is no paragraph. Everything
   below is scoped to .hero--home (used only by index.html), so the heroes on
   every other page keep their existing sizing and spacing untouched. */

/* The estate name — the largest type on the site. The three clamp values are
   minimum / preferred / maximum: it scales with the viewport between a 3.1rem
   floor on phones and a 7.5rem ceiling on wide screens. The floor is set so
   "Zlatne Gorice" still fits on one line at 375px. */
.hero--home h1 {
  font-size: clamp(3.1rem, 9.5vw, 7.75rem);
  line-height: 1.04;
  /* Tighter than the default 0.6em because the tagline sits right beneath it
     as part of the same block, rather than being a separate paragraph. */
  margin-bottom: 0.26em;
}

/* Secondary line: clearly smaller than the name — approximately a 3.5 : 1
   ratio at every width — but large enough to read as part of the title block
   rather than as body text. */
.hero--home .hero__tagline {
  font-size: clamp(1.25rem, 2.9vw, 2.2rem);
  line-height: 1.3;
  color: rgba(255, 255, 255, 0.94);
  /* Wide enough to hold the longer Croatian line without wrapping on desktop. */
  max-width: 880px;
  margin-inline: auto;
  /* Space down to the buttons, increased to suit the larger type above it. */
  margin-bottom: 2.4rem;
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.45);
  /* Evens the two lines out instead of stranding one short word on the last. */
  text-wrap: balance;
}

/* Phones: the Croatian tagline is long, so ease it down a step below the
   clamp floor to keep it on two comfortable lines instead of three cramped
   ones. The name keeps its size, so the size relationship is preserved. */
@media (max-width: 420px) {
  .hero--home .hero__tagline { font-size: 1.15rem; }
}

/* Enough height for the larger type to breathe without the old empty gap. */
.hero--home { min-height: min(82vh, 700px); }

/* The shared hero container is 780px wide, and its gutter leaves only ~684px
   of usable width — not enough for "Zlatne Gorice" at the new size, which
   wrapped onto two lines. Widening it here (homepage only) keeps the name on
   a single line. The tagline keeps its own narrower max-width above. */
.hero--home .hero__inner { max-width: 1050px; }


/* 7. SECTION TEASERS ======================================================= */
.intro { max-width: 720px; margin-inline: auto; text-align: center; }
.intro h2 { font-size: clamp(1.8rem, 3.5vw, 2.5rem); }

/* Responsive grid of teaser cards */
.teasers {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1.75rem;
  margin-top: 3rem;
}

.teaser {
  display: flex;
  flex-direction: column;
  background: #fff;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-soft);
  transition: transform var(--transition), box-shadow var(--transition);
}
.teaser:hover { transform: translateY(-5px); box-shadow: var(--shadow-card); }

.teaser__media { position: relative; aspect-ratio: 3 / 2; overflow: hidden; }
.teaser__media img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}
.teaser:hover .teaser__media img { transform: scale(1.05); }

.teaser__body {
  padding: 1.6rem 1.6rem 1.9rem;
  display: flex;
  flex-direction: column;
  flex-grow: 1;
}
.teaser__label {
  font-family: var(--font-sans);
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--color-gold);
  font-weight: 700;
  margin-bottom: 0.5rem;
}
.teaser__title {
  font-size: 1.4rem;
  /* Upright serif to match the hero and section headings (uniform, legible) */
  font-style: normal;
  margin-bottom: 0.6rem;
}
.teaser__text {
  color: var(--color-muted);
  font-size: 0.98rem;
  margin-bottom: 1.2rem;
  flex-grow: 1;
}
.teaser__link {
  font-weight: 600;
  font-size: 0.92rem;
  letter-spacing: 0.03em;
  align-self: flex-start;
}
.teaser__link::after { content: " \2192"; } /* trailing arrow → */

/* Contact card gets the wine-red treatment instead of a photo (call to action) */
.teaser--contact {
  background: var(--color-accent);
  color: #fff;
  justify-content: center;
  text-align: center;
  padding: 2.5rem 1.75rem;
}
.teaser--contact .teaser__label { color: rgba(255, 255, 255, 0.75); }
.teaser--contact .teaser__title { color: #fff; }
.teaser--contact .teaser__text  { color: rgba(255, 255, 255, 0.9); }
.teaser--contact .teaser__link  { color: #fff; align-self: center; }
.teaser--contact .teaser__contact-line {
  font-size: 1.05rem;
  margin-bottom: 0.4rem;
  color: #fff;
}


/* 7b. INTERIOR-PAGE COMPONENTS =============================================
   Shared building blocks for the content pages (O nama, Terasa, Restoran,
   Smještaj, …) — same card-based, centered language as the homepage. */

/* Slightly shorter hero for interior pages */
.hero--page { min-height: min(70vh, 600px); }

/* Split block — image beside text, alternating direction down the page */
.split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 5vw, 4rem);
  align-items: center;
  margin-block: clamp(2.5rem, 6vw, 4.5rem);
}
.split__media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}
.split--reverse .split__media { order: 2; }
.split__body h2 { font-size: clamp(1.5rem, 2.6vw, 2.1rem); }
.split__body p:last-child { margin-bottom: 0; }

/* Stats — practical details as a scannable row of cards */
.stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1.75rem;
  margin-block: clamp(2.5rem, 6vw, 4rem);
}
.stat {
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
  padding: 2.2rem 1.5rem 2rem;
  text-align: center;
}
.stat__value {
  font-family: var(--font-serif);
  font-size: clamp(1.9rem, 3vw, 2.6rem);
  line-height: 1.1;
  color: var(--color-heading);
  margin: 0 0 0.4rem;
}
.stat__label {
  color: var(--color-muted);
  font-size: 0.92rem;
  margin: 0;
}

/* Awards — simple centered list with gold numbering and hairlines */
.award-rows {
  list-style: none;
  margin: 2rem auto 0;
  padding: 0;
  max-width: 620px;
  text-align: left;
}
.award-rows li {
  display: flex;
  align-items: baseline;
  gap: 1.25rem;
  padding-block: 1.15rem;
  border-bottom: 1px solid var(--color-line);
}
.award-rows li:first-child { border-top: 1px solid var(--color-line); }
.award-rows .num {
  font-size: 0.75rem;
  letter-spacing: 0.18em;
  color: var(--color-gold);
  font-weight: 700;
}
.award-rows .name {
  font-family: var(--font-serif);
  font-size: 1.25rem;
  color: var(--color-heading);
}

/* Photo grid — extra photos, card-style thumbnails */
.photo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1.5rem;
  margin-block: clamp(2rem, 5vw, 3.5rem);
}
/* Modifier for galleries with 8 photos (e.g. Saloni). The default auto-fit
   grid can land on 3 columns at tablet widths, which leaves a ragged last
   row of 2. Locking the column count to 4 → 2 → 1 (all divisors of 8) keeps
   every row full, and the larger tiles suit a smaller, curated set. */
.photo-grid--even { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1180px) { .photo-grid--even { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px)  { .photo-grid--even { grid-template-columns: 1fr; } }

/* Modifier for galleries with 13 photos (e.g. Sobe). 13 is an awkward number —
   a plain 4-column grid leaves a single orphan on the last row. Making the
   first photo a double-size lead tile solves it exactly: that tile takes 4
   cells (2 x 2) and the remaining 12 take one each, which is 16 cells — a full
   4 x 4 with no gaps. The same maths works at the 2-column breakpoint (16
   cells = 2 x 8), and on phones the lead tile drops back to a normal square. */
.photo-grid--feature { grid-template-columns: repeat(4, 1fr); }
.photo-grid--feature > :first-child {
  grid-column: span 2;
  grid-row: span 2;
  /* Let the tile be sized by the two rows it spans rather than by its own
     aspect ratio, so it lines up exactly with the tiles beside it. */
  aspect-ratio: auto;
  height: 100%;
}
@media (max-width: 1180px) { .photo-grid--feature { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) {
  .photo-grid--feature { grid-template-columns: 1fr; }
  .photo-grid--feature > :first-child {
    grid-column: span 1;
    grid-row: span 1;
    aspect-ratio: 4 / 3;
  }
}

/* Add this alongside --feature for a SECOND lead tile, which is what makes a
   14-photo gallery (e.g. Vinarski muzej) come out even: two 2 x 2 tiles take
   8 cells and the remaining 12 photos take one each, so 20 cells fill a 4 x 5
   grid exactly. The two big tiles sit side by side across the top. */
.photo-grid--feature-2 > :nth-child(2) {
  grid-column: span 2;
  grid-row: span 2;
  aspect-ratio: auto;
  height: 100%;
}
@media (max-width: 560px) {
  .photo-grid--feature-2 > :nth-child(2) {
    grid-column: span 1;
    grid-row: span 1;
    aspect-ratio: 4 / 3;
  }
}

.photo-grid img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
  transition: transform var(--transition), box-shadow var(--transition);
}
.photo-grid img:hover { transform: translateY(-4px); box-shadow: var(--shadow-card); }

/* Placeholder for photos the owner hasn't supplied yet — soft neutral block */
.photo-missing {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 4 / 3;
  border-radius: var(--radius);
  background: var(--color-bg-alt);
  border: 1px dashed var(--color-line);
  padding: 1.25rem;
  text-align: center;
}
.photo-missing span {
  font-size: 0.78rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-muted);
}

/* CTA band — burgundy call-to-action before the footer */
.cta-band {
  background: var(--color-accent);
  color: #fff;
  text-align: center;
  padding-block: clamp(3.5rem, 8vw, 5.5rem);
}
.cta-band h2 { color: #fff; font-size: clamp(1.7rem, 3.2vw, 2.4rem); }
.cta-band p { color: rgba(255, 255, 255, 0.9); max-width: 560px; margin-inline: auto; }
.cta-band .btn--ghost { margin-top: 0.75rem; }
.cta-band .cta-band__phone {
  font-family: var(--font-serif);
  font-size: 1.35rem;
  color: #fff;
  margin-bottom: 0.25rem;
}

@media (max-width: 860px) {
  .split, .split--reverse { grid-template-columns: 1fr; }
  .split--reverse .split__media { order: 0; }
}


/* 7c. LIGHTBOX (Gallery) ===================================================
   Simple full-screen viewer. Any image inside a .js-lightbox container
   opens in the overlay; prev/next/close handled in main.js.             */
.photo-grid--clickable img { cursor: zoom-in; }

.lightbox {
  position: fixed;
  inset: 0;
  z-index: 300;
  background: rgba(24, 20, 14, 0.94);
  display: none;
  align-items: center;
  justify-content: center;
}
.lightbox.is-open { display: flex; }
.lightbox img {
  max-width: 90vw;
  max-height: 82vh;
  border-radius: var(--radius);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
}
.lightbox__btn {
  position: absolute;
  background: none;
  border: 0;
  color: #f2ead9;
  cursor: pointer;
  font-family: var(--font-sans);
  font-size: 2.2rem;
  line-height: 1;
  padding: 0.6rem 1rem;
  transition: color var(--transition);
}
.lightbox__btn:hover { color: #fff; }
.lightbox__close { top: 1rem; right: 1.25rem; font-size: 1.6rem; }
.lightbox__prev { left: 0.75rem; top: 50%; transform: translateY(-50%); }
.lightbox__next { right: 0.75rem; top: 50%; transform: translateY(-50%); }
.lightbox__count {
  position: absolute;
  bottom: 1.25rem;
  left: 50%;
  transform: translateX(-50%);
  color: #cfc5b0;
  font-size: 0.85rem;
  letter-spacing: 0.1em;
}


/* 7d. CONTACT PAGE ========================================================= */
.contact-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 5vw, 4rem);
  align-items: start;
  margin-top: 2.5rem;
  text-align: left;
}

/* Contact details card */
.contact-details {
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
  padding: 2rem;
}
.contact-details h3 { font-size: 1.2rem; margin-bottom: 0.35rem; }
.contact-details p { margin-bottom: 1.1rem; color: var(--color-muted); }
.contact-details .footer__social a { border-color: var(--color-line); color: var(--color-accent); }
.contact-details .footer__social a:hover { background: var(--color-accent); border-color: var(--color-accent); color: #fff; }

/* Map embed */
.map-embed {
  width: 100%;
  height: 320px;
  border: 0;
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
  margin-top: 1.5rem;
}

/* Form */
.contact-form {
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
  padding: 2rem;
}
.contact-form label {
  display: block;
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-muted);
  margin: 1.1rem 0 0.35rem;
}
.contact-form label:first-of-type { margin-top: 0; }
.contact-form input,
.contact-form textarea {
  width: 100%;
  font-family: var(--font-sans);
  font-size: 1rem;
  color: var(--color-text);
  background: var(--color-bg);
  border: 1px solid var(--color-line);
  border-radius: var(--radius);
  padding: 0.7rem 0.9rem;
  transition: border-color var(--transition);
}
.contact-form input:focus,
.contact-form textarea:focus {
  outline: none;
  border-color: var(--color-accent);
}
.contact-form textarea { min-height: 130px; resize: vertical; }
.contact-form .btn { margin-top: 1.4rem; width: 100%; }
.form-note {
  font-size: 0.85rem;
  color: var(--color-muted);
  margin-top: 0.9rem;
  margin-bottom: 0;
}

/* Spam trap field: pushed off-screen (not display:none, which bots detect).
   Real visitors never see it; see kontakt.html and send.php. */
.form-hp {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* Result messages after sending (unhidden by contact-form.js). */
.form-status {
  margin: 1.1rem 0 0;
  padding: 0.85rem 1rem;
  border-left: 4px solid var(--color-line);
  border-radius: var(--radius);
  background: var(--color-bg);
  font-size: 0.95rem;
  line-height: 1.5;
  scroll-margin-top: calc(var(--header-h) + 1.5rem); /* keep clear of the sticky header when scrolled to */
}
.form-status:focus { outline: none; }
.form-status a { text-decoration: underline; }
.form-status--busy  { color: var(--color-muted); }
.form-status--ok    { border-left-color: #4b7a4b; background: #eef5ec; color: #2f4d2f; }
.form-status--error { border-left-color: var(--color-accent); background: #f8ecee; color: var(--color-accent-dark); }
/* No-JavaScript fallback: send.php redirects to kontakt.html#form-sent or #form-error */
.form-status:target { display: block; }

@media (max-width: 860px) {
  .contact-grid { grid-template-columns: 1fr; }
}


/* 7e. MENU / JELOVNIK PAGE =================================================
   Grid of cards, one per menu. Each card is a single thumbnail PHOTO with a
   label underneath; the whole card links out to the PDF in a new tab. The
   PDF is never shown on the page — the card is purely a link. */
.menu-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 2rem;
  margin-top: 3rem;
}

.menu-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-soft);
  transition: transform var(--transition), box-shadow var(--transition);
  color: var(--color-heading);
}
.menu-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-card); }

/* Thumbnail photo */
.menu-card__media {
  position: relative;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  background: var(--color-bg-alt);
}
.menu-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: transform 0.5s ease;
}
.menu-card:hover .menu-card__media img { transform: scale(1.04); }

/* Small "PDF" badge so it's clear the card opens a PDF */
.menu-card__badge {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  background: rgba(109, 34, 51, 0.92); /* burgundy, slightly translucent over photo */
  color: #fff;
  font-size: 0.64rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  padding: 0.28rem 0.55rem;
  border-radius: 999px;
}
.menu-card__badge svg { width: 11px; height: 11px; fill: currentColor; }

/* Label underneath the photo */
.menu-card__label {
  font-family: var(--font-serif);
  font-size: 1.3rem;
  color: var(--color-heading);
  text-align: center;
  margin: 0;
  padding: 1.15rem 1rem 1.4rem;
  transition: color var(--transition);
}
.menu-card:hover .menu-card__label { color: var(--color-accent); }


/* 8. FOOTER ================================================================ */
.site-footer {
  background: var(--color-heading);
  color: #d8cfc2;
  padding-block: 3.5rem 2rem;
  font-size: 0.95rem;
}
.footer__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 2.5rem;
  margin-bottom: 2.5rem;
}
.site-footer h3 {
  color: #fff;
  font-size: 1.15rem;
  margin-bottom: 0.9rem;
}
/* Footer logo — gold wordmark shows well on the dark charcoal footer */
.footer__logo {
  height: 60px;
  width: auto;
  display: block;
  margin-bottom: 1rem;
}
.footer__grid a { color: #e7ddcf; }
.footer__grid a:hover { color: #fff; }
.footer__contact p { margin-bottom: 0.4rem; }

.footer__social { display: flex; gap: 1rem; margin-top: 0.5rem; }
.footer__social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px; height: 40px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  border-radius: 50%;
  transition: background var(--transition), border-color var(--transition);
}
.footer__social a:hover { background: var(--color-accent); border-color: var(--color-accent); }
.footer__social svg { width: 18px; height: 18px; fill: currentColor; }

.footer__bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  padding-top: 1.5rem;
  text-align: center;
  font-size: 0.85rem;
  color: #a99f92;
}


/* 9. SCROLL FADE-IN ANIMATION ==============================================
   Elements with .reveal start slightly transparent and shifted down, then
   ease into place when scrolled into view (class added by main.js).         */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal.is-visible { opacity: 1; transform: none; }

/* Respect users who prefer reduced motion — no transforms/animation for them */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal { opacity: 1; transform: none; transition: none; }
  .teaser:hover { transform: none; }
}


/* 10. RESPONSIVE / MOBILE ================================================== */
/* Nav collapses to the hamburger menu earlier now (11 items don't fit one
   line on mid-size screens, especially the longer Croatian labels). */
@media (max-width: 1200px) {
  /* Scale the logo down a little on smaller screens */
  .nav__brand img { height: 40px; }

  /* Show the hamburger, hide the inline links until toggled */
  .nav__toggle { display: inline-flex; }

  .nav__links {
    position: absolute;
    top: var(--header-h);
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    background: var(--color-bg);
    border-bottom: 1px solid var(--color-line);
    box-shadow: var(--shadow-soft);
    padding: 0.5rem var(--gutter) 1rem;

    /* Hidden by default; .nav__links--open reveals it */
    display: none;
  }
  .nav__links--open { display: flex; }
  .nav__links li { width: 100%; }
  .nav__links a { display: block; width: 100%; padding: 0.75rem 0; border-bottom: 1px solid var(--color-line); }
  .nav__links a::after { display: none; }
}


/* ==========================================================================
   11. AUDIT ADDITIONS (utility bar, testimonials, hours,
       gallery index, footer legal/EU, Restaurant Guru badge)
   ========================================================================== */

/* --- Top utility bar (above the header): address, phone, socials --------- */
.topbar {
  background: var(--color-heading);
  color: #cbb8a8;
  font-size: 0.82rem;
}
.topbar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  min-height: 40px;
  padding-block: 0.35rem;
}
.topbar__info { display: flex; align-items: center; gap: 1.5rem; flex-wrap: wrap; }
.topbar__info a, .topbar__info span { color: #d9cdbe; display: inline-flex; align-items: center; gap: 0.4rem; }
.topbar__info a:hover { color: #fff; }
.topbar__info svg { width: 14px; height: 14px; fill: currentColor; opacity: 0.8; }
.topbar__social { display: flex; align-items: center; gap: 0.9rem; }
.topbar__social a { color: #cbb8a8; display: inline-flex; }
.topbar__social a:hover { color: #fff; }
.topbar__social svg { width: 15px; height: 15px; fill: currentColor; }
/* Hidden on smaller screens so it never crowds the header */
@media (max-width: 860px) { .topbar { display: none; } }

/* --- Testimonials ("Rekli su o nama") ----------------------------------- */
.testimonials {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 2rem;
  margin-top: 3rem;
}
.testimonial {
  background: var(--color-bg-alt);
  border-radius: var(--radius);
  padding: 2rem 1.9rem;
  border-top: 3px solid var(--color-gold);
}
.testimonial__quote {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: 1.08rem;
  line-height: 1.55;
  color: var(--color-heading);
  margin: 0 0 1.1rem;
}
.testimonial__author {
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin: 0;
}

/* --- Opening hours block ------------------------------------------------- */
.hours { margin: 0; }
.hours dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 0.5rem 1.5rem; }
.hours dt { color: var(--color-text); font-weight: 600; }
.hours dd { margin: 0; color: var(--color-muted); text-align: right; }
.hours .is-closed dd, .hours dt.is-closed + dd { color: var(--color-accent); }
/* Compact hours in the dark footer */
.footer__hours dl { grid-template-columns: auto 1fr; gap: 0.35rem 1rem; }
.footer__hours dt { color: #e7ddcf; font-weight: 600; }
.footer__hours dd { margin: 0; color: #b7ab9b; text-align: right; }

/* --- Gallery index (6 sub-gallery cards) -------------------------------- */
.gallery-index {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 2rem;
  margin-top: 3rem;
}
.gallery-card {
  position: relative;
  display: block;
  aspect-ratio: 3 / 2;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-soft);
}
.gallery-card img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s ease; }
.gallery-card:hover img { transform: scale(1.06); }
.gallery-card::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(30,20,15,0.72) 0%, rgba(30,20,15,0.15) 55%, rgba(30,20,15,0) 100%);
}
.gallery-card__label {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  z-index: 1;
  padding: 1.3rem 1.4rem;
  color: #fff;
}
.gallery-card__label h3 { color: #fff; font-size: 1.4rem; margin: 0 0 0.2rem; }
.gallery-card__label span { font-size: 0.8rem; letter-spacing: 0.1em; text-transform: uppercase; opacity: 0.85; }

/* --- Footer legal row (EU logo + business details) ---------------------- */
.footer__legal {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  margin-top: 0.5rem;
  padding-top: 2rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem 2.5rem;
}
/* Funding logos. Three of them no longer fit beside the business details, so
   the legal block stacks: logos on their own row, details underneath. The
   white panel keeps the EU emblem on a clean background, as its usage rules
   require, and gives the grey HAMAG-BICRO wordmark enough contrast to read
   against the dark footer. */
.footer__eu {
  background: #fff;
  padding: 0.7rem 0.9rem;
  border-radius: 4px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  /* Generous horizontal gap so the three marks stay visually separate
     rather than reading as one strip of artwork. */
  gap: 0.9rem 1.9rem;
}
/* One matched height for all three, so no logo dominates. width:auto keeps
   each one's own proportions — they are never stretched or recoloured. */
.footer__eu img { height: 46px; width: auto; display: block; }

/* Stack the legal block so the logo row gets the full width. */
.footer__legal { flex-direction: column; align-items: flex-start; }

/* Phones: a slightly smaller height keeps all three on at most two rows
   without the wordmarks becoming hard to read. */
@media (max-width: 560px) {
  .footer__eu { gap: 0.8rem 1.25rem; padding: 0.6rem 0.75rem; }
  .footer__eu img { height: 38px; }
}
.footer__business { font-size: 0.82rem; color: #b7ab9b; line-height: 1.7; }
.footer__business strong { color: #e7ddcf; font-weight: 600; }

/* --- Restaurant Guru badge (recreated in our style) --------------------- */
.rg-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.9rem;
  background: #fff;
  border: 1px solid var(--color-line);
  border-radius: 999px;
  padding: 0.6rem 1.4rem 0.6rem 0.8rem;
  box-shadow: var(--shadow-soft);
  transition: transform var(--transition), box-shadow var(--transition);
}
.rg-badge:hover { transform: translateY(-2px); box-shadow: var(--shadow-card); }
.rg-badge__mark {
  display: inline-flex; align-items: center; justify-content: center;
  width: 42px; height: 42px; flex-shrink: 0;
  background: var(--color-accent); color: #fff;
  border-radius: 50%;
  font-family: var(--font-serif); font-size: 1.3rem; line-height: 1;
}
.rg-badge__text { text-align: left; line-height: 1.2; }
.rg-badge__text strong { display: block; font-family: var(--font-serif); font-size: 1.02rem; color: var(--color-heading); }
.rg-badge__text span { font-size: 0.74rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-muted); }
