/* ==========================================================
   יקב רות · Ruth Vineyard — site styles
   Brand line (from the winery catalog): black Didone wordmark,
   crimson red (#BE1E2D), white, generous whitespace, thin double rules.
   ========================================================== */

:root {
  --red: #be1e2d;
  --red-dark: #9a1522;
  --ink: #111111;
  --ink-soft: #444444;
  --muted: #8a8a8a;
  --paper: #ffffff;
  --paper-warm: #f7f4f1;
  --line: #e4dfda;

  --font-mark: "Bodoni Moda", "Didot", "Bodoni 72", serif;       /* Latin wordmark & numerals */
  --font-head-he: "Frank Ruhl Libre", "David", serif;             /* Hebrew headings */
  --font-body-he: "Assistant", "Arial Hebrew", Arial, sans-serif; /* Hebrew body */

  --max: 1200px;
  --gutter: clamp(16px, 4vw, 40px);
  --section-pad: clamp(64px, 10vw, 128px);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 72px; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-body-he);
  font-size: 17px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }

.wrap { max-width: var(--max); margin-inline: auto; padding-inline: var(--gutter); }

/* ---------- Wordmark (text fallback until logo files are added) ---------- */
.wordmark { display: inline-flex; flex-direction: column; align-items: center; text-decoration: none; line-height: 1; direction: ltr; }
.wordmark .wm-ruth { font-family: var(--font-mark); font-weight: 500; font-size: 2rem; letter-spacing: -0.02em; }
.wordmark .wm-sub { font-family: var(--font-mark); font-size: 0.62rem; letter-spacing: 0.55em; margin-top: 4px; padding-left: 0.55em; }
.wordmark img { height: 44px; width: auto; }

/* ---------- Header ---------- */
.site-header {
  position: fixed; inset: 0 0 auto 0; z-index: 50;
  background: rgba(255,255,255,0.96);
  backdrop-filter: blur(6px);
  border-bottom: 1px solid transparent;
  transition: border-color .3s, box-shadow .3s;
}
.site-header.scrolled { border-color: var(--line); }
.site-header .wrap { display: flex; align-items: center; justify-content: space-between; height: 72px; gap: 24px; }
.nav { display: flex; gap: clamp(14px, 2.2vw, 30px); align-items: center; }
.nav a { text-decoration: none; font-size: 0.95rem; color: var(--ink-soft); position: relative; padding-block: 4px; }
.nav a::after { content: ""; position: absolute; inset-inline: 0; bottom: 0; height: 1px; background: var(--red); transform: scaleX(0); transition: transform .25s; }
.nav a:hover { color: var(--ink); }
.nav a:hover::after { transform: scaleX(1); }
.lang-switch { font-family: var(--font-mark); font-size: 0.8rem; letter-spacing: 0.15em; text-decoration: none; border: 1px solid var(--ink); padding: 4px 10px; }
.lang-switch:hover { background: var(--ink); color: #fff; }
.menu-btn { display: none; background: none; border: 0; cursor: pointer; padding: 8px; }
.menu-btn span { display: block; width: 24px; height: 1.5px; background: var(--ink); margin: 5px 0; transition: transform .25s, opacity .25s; }

@media (max-width: 860px) {
  .menu-btn { display: block; }
  .nav {
    position: fixed; inset: 72px 0 auto 0; background: #fff;
    flex-direction: column; align-items: stretch; gap: 0;
    padding: 8px var(--gutter) 24px; border-bottom: 1px solid var(--line);
    transform: translateY(-120%); transition: transform .3s; z-index: -1;
  }
  .nav.open { transform: none; }
  .nav a { padding: 14px 0; border-bottom: 1px solid var(--line); font-size: 1.05rem; }
  .nav a::after { display: none; }
  .nav .lang-switch { align-self: flex-start; margin-top: 16px; border-bottom: 1px solid var(--ink); padding: 4px 10px; }
  body.menu-open .menu-btn span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
  body.menu-open .menu-btn span:nth-child(2) { opacity: 0; }
  body.menu-open .menu-btn span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }
}

/* ---------- Image slots ----------
   Every <figure class="slot"> holds a real <img>. If the file isn't there yet,
   JS adds .is-empty and the dashed placeholder shows the expected file path. */
.slot { position: relative; margin: 0; overflow: hidden; background: var(--paper-warm); }
.slot img { width: 100%; height: 100%; object-fit: cover; }
.slot.is-empty img { display: none; }
.slot.is-empty::before {
  content: attr(data-label);
  position: absolute; inset: 10px;
  display: flex; align-items: center; justify-content: center; text-align: center;
  border: 1px dashed #c9bfb6;
  color: var(--muted); font-size: 0.8rem; line-height: 1.4; padding: 8px;
  direction: ltr; font-family: ui-monospace, Menlo, monospace;
}
.ratio-portrait { aspect-ratio: 3 / 4; }
.ratio-bottle { aspect-ratio: 2 / 3; }
.ratio-square { aspect-ratio: 1; }
.ratio-land { aspect-ratio: 4 / 3; }
.ratio-wide { aspect-ratio: 16 / 9; }

/* ---------- Section heading (thin double rule, as on the catalog) ---------- */
.section { padding-block: var(--section-pad); }
.section-alt { background: var(--paper-warm); }
.section-head { text-align: center; margin-bottom: clamp(40px, 6vw, 72px); }
.eyebrow { display: block; font-family: var(--font-mark); font-size: 0.72rem; letter-spacing: 0.45em; text-transform: lowercase; color: var(--red); margin-bottom: 14px; direction: ltr; }
.section-head h2 { font-family: var(--font-head-he); font-weight: 500; font-size: clamp(2rem, 4.2vw, 3rem); line-height: 1.15; margin: 0; }
.rule { width: 120px; height: 4px; margin: 22px auto 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.section-head p { max-width: 560px; margin: 22px auto 0; color: var(--ink-soft); }

/* ---------- Hero ---------- */
.hero { position: relative; min-height: 100svh; display: grid; place-items: center; padding-top: 72px; overflow: hidden; }
.hero .slot { position: absolute; inset: 0; }
.hero .slot.is-empty { background: #2a2224; }
.hero .slot.is-empty::before { color: #9d8f90; border-color: #5a4a4c; }
.hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.15), rgba(0,0,0,.45)); pointer-events: none; }
.hero-inner { position: relative; z-index: 2; text-align: center; color: #fff; padding: var(--gutter); }
.hero .wordmark { color: #fff; }
.hero .wordmark .wm-ruth { font-size: clamp(5rem, 16vw, 11rem); }
.hero .wordmark .wm-sub { font-size: clamp(0.8rem, 1.8vw, 1.2rem); margin-top: 10px; }
.hero .wordmark img { height: clamp(140px, 24vw, 260px); }
.hero-tag { font-family: var(--font-head-he); font-size: clamp(1.1rem, 2.2vw, 1.5rem); margin: 28px 0 0; font-weight: 400; }
.hero-scroll { position: absolute; bottom: 28px; inset-inline: 0; margin-inline: auto; width: 1px; height: 56px; background: rgba(255,255,255,.7); z-index: 2; }

/* ---------- About ---------- */
.about-grid { display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(32px, 6vw, 88px); align-items: center; }
.about-text h2 { font-family: var(--font-head-he); font-weight: 500; font-size: clamp(2rem, 4vw, 2.8rem); line-height: 1.2; margin: 0 0 24px; }
.about-text p { color: var(--ink-soft); margin: 0 0 16px; max-width: 46ch; }
.signature { font-family: var(--font-head-he); font-size: 1.2rem; color: var(--ink); margin-top: 28px; }
.about-photos { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.about-photos .slot:first-child { grid-row: span 2; }
.stamp { width: 110px; height: 110px; border-radius: 50%; border: 2px solid var(--red); color: var(--red); display: grid; place-items: center; text-align: center; font-family: var(--font-mark); font-size: 0.62rem; letter-spacing: 0.2em; line-height: 1.6; direction: ltr; margin-bottom: 28px; }
.stamp img { width: 100%; height: 100%; object-fit: contain; }
@media (max-width: 860px) { .about-grid { grid-template-columns: 1fr; } }

/* ---------- Wines ---------- */
.wines { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(20px, 3vw, 40px); }
.wine { text-align: center; }
.wine .slot { background: transparent; }
.wine .slot.is-empty { background: var(--paper-warm); }
.wine .slot img { object-fit: contain; }
.wine-rule { height: 4px; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); margin: 22px auto 16px; width: 70%; }
.wine h3 { font-family: var(--font-head-he); font-weight: 700; font-size: 1.3rem; margin: 0; }
.wine .latin { display: block; font-family: var(--font-mark); font-size: 0.78rem; letter-spacing: 0.3em; color: var(--red); margin-top: 4px; direction: ltr; }
.wine p { font-size: 0.93rem; color: var(--ink-soft); margin: 10px auto 0; max-width: 24ch; line-height: 1.55; }
@media (max-width: 960px) { .wines { grid-template-columns: repeat(2, 1fr); row-gap: 56px; } }

/* Olive oil band */
.oil { margin-top: clamp(72px, 9vw, 120px); display: grid; grid-template-columns: 1fr 1fr; align-items: stretch; background: var(--ink); color: #fff; }
.oil .slot { min-height: 340px; }
.oil .slot.is-empty { background: #262626; }
.oil-text { padding: clamp(32px, 5vw, 64px); display: flex; flex-direction: column; justify-content: center; }
.oil-text h3 { font-family: var(--font-head-he); font-weight: 500; font-size: clamp(1.7rem, 3vw, 2.3rem); margin: 0 0 14px; }
.oil-text p { color: #cfcfcf; margin: 0; max-width: 40ch; }
.oil-text .eyebrow { color: #e0505c; }
@media (max-width: 760px) { .oil { grid-template-columns: 1fr; } .oil .slot { min-height: 240px; } }

/* ---------- Gallery (life at the winery) ---------- */
.gallery { columns: 3 280px; column-gap: 14px; }
.gallery .slot { break-inside: avoid; margin-bottom: 14px; cursor: zoom-in; }
.gallery .slot img { transition: transform .6s ease; }
.gallery .slot:hover img { transform: scale(1.03); }
.gallery .slot.is-empty { cursor: default; }

/* ---------- Awards ---------- */
.awards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: clamp(20px, 3vw, 36px); }
.award { text-align: center; }
.award .slot { background: #fff; box-shadow: 0 1px 0 var(--line), 0 12px 30px -18px rgba(0,0,0,.35); cursor: zoom-in; }
.award .slot img { object-fit: contain; padding: 10px; }
.award .slot.is-empty { cursor: default; }
.award h3 { font-family: var(--font-head-he); font-weight: 500; font-size: 1.1rem; margin: 18px 0 2px; }
.award .meta { font-size: 0.88rem; color: var(--muted); }
.medal { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-inline-end: 6px; vertical-align: middle; }
.medal.gold { background: #c9a227; } .medal.silver { background: #a9a9a9; } .medal.bronze { background: #b0703a; }

/* ---------- Press ---------- */
.press { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: clamp(20px, 3vw, 36px); }
.clip { display: block; text-decoration: none; background: #fff; border: 1px solid var(--line); transition: transform .3s, box-shadow .3s; }
.clip:hover { transform: translateY(-4px); box-shadow: 0 18px 40px -22px rgba(0,0,0,.35); }
.clip .slot { border-bottom: 1px solid var(--line); cursor: zoom-in; }
.clip .slot img { object-position: top; }
.clip-body { padding: 18px 20px 22px; }
.clip-pub { font-size: 0.8rem; color: var(--red); letter-spacing: .04em; }
.clip h3 { font-family: var(--font-head-he); font-weight: 500; font-size: 1.15rem; line-height: 1.35; margin: 6px 0 0; }

/* ---------- Visit / Contact ---------- */
.visit { background: var(--red); color: #fff; text-align: center; }
.visit .section-head h2 { color: #fff; }
.visit .eyebrow { color: #ffd9dc; }
.visit .rule { border-color: #fff; }
.visit .section-head p { color: #ffe9eb; }
.contact-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px 40px; font-size: 1.05rem; }
.contact-row a { text-decoration: none; border-bottom: 1px solid rgba(255,255,255,.5); padding-bottom: 2px; }
.contact-row a:hover { border-color: #fff; }
.contact-row .ltr { direction: ltr; unicode-bidi: isolate; }
.btn { display: inline-block; margin-top: 40px; padding: 14px 34px; border: 1px solid #fff; text-decoration: none; font-size: 1rem; transition: background .2s, color .2s; }
.btn:hover { background: #fff; color: var(--red); }

/* ---------- Footer ---------- */
.site-footer { padding: 48px 0 40px; text-align: center; border-top: 1px solid var(--line); }
.site-footer .wordmark .wm-ruth { font-size: 2.4rem; }
.site-footer p { font-size: 0.85rem; color: var(--muted); margin: 18px 0 0; }
.social { display: flex; justify-content: center; gap: 18px; margin-top: 18px; }
.social a { font-size: 0.85rem; color: var(--ink-soft); text-decoration: none; }
.social a:hover { color: var(--red); }

/* ---------- Lightbox ---------- */
.lightbox { position: fixed; inset: 0; z-index: 100; background: rgba(12,10,10,.94); display: none; align-items: center; justify-content: center; padding: 56px 16px; }
.lightbox.open { display: flex; }
.lightbox img { max-width: 100%; max-height: 100%; object-fit: contain; }
.lightbox button { position: absolute; background: none; border: 0; color: #fff; font-size: 2rem; cursor: pointer; padding: 12px 18px; line-height: 1; opacity: .8; }
.lightbox button:hover { opacity: 1; }
.lb-close { top: 8px; inset-inline-end: 8px; }
.lb-prev { inset-inline-start: 4px; top: 50%; transform: translateY(-50%); }
.lb-next { inset-inline-end: 4px; top: 50%; transform: translateY(-50%); }
.lb-caption { position: absolute; bottom: 16px; inset-inline: 0; text-align: center; color: #ddd; font-size: .9rem; padding-inline: 16px; }

/* ---------- Reveal on scroll ---------- */
.reveal { opacity: 0; transform: translateY(18px); transition: opacity .8s ease, transform .8s ease; }
.reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; } html { scroll-behavior: auto; } }

/* Hero placeholder label sits at the bottom so it doesn't clash with the wordmark */
.hero .slot.is-empty::before { align-items: flex-end; padding-bottom: 96px; }

/* ---------- Additions after real photos arrived ---------- */
.lineup { aspect-ratio: 16 / 7; margin-bottom: clamp(48px, 7vw, 88px); background: #fff; }
.lineup img { object-fit: contain; mix-blend-mode: multiply; }
.wines { grid-template-columns: repeat(5, 1fr); }
@media (max-width: 1100px) { .wines { grid-template-columns: repeat(3, 1fr); row-gap: 56px; } }
@media (max-width: 640px)  { .wines { grid-template-columns: repeat(2, 1fr); } }
.wine .slot img { mix-blend-mode: multiply; }
.oil.text-only { grid-template-columns: 1fr; text-align: center; }
.oil.text-only .oil-text { align-items: center; padding-block: clamp(48px, 7vw, 80px); }
.awards-feature { margin-bottom: 40px; }
.competitions { display: flex; justify-content: center; align-items: center; gap: 40px; margin-bottom: clamp(40px, 6vw, 64px); }
.competitions img { height: 88px; width: auto; }
.awards { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); align-items: end; }
.press { grid-template-columns: repeat(auto-fit, minmax(260px, 360px)); justify-content: center; }
.clip .slot { cursor: pointer; }
.clip-more { display: inline-block; margin-top: 10px; font-size: .85rem; color: var(--red); }
.hero picture { display: contents; }
/* gallery keeps each photo's natural shape */
.gallery .slot img { height: auto; }
.gallery .slot.is-empty { aspect-ratio: 4 / 3; }
.about-photos .slot:first-child { aspect-ratio: auto; height: 100%; }
@media (max-width: 600px) { .gallery { columns: 2; column-gap: 8px; } .gallery .slot { margin-bottom: 8px; } }

/* ---------- Real logo ---------- */
.site-header .wordmark img { height: 52px; width: auto; }
.hero-logo { margin: 0; }
.hero-logo img { height: clamp(170px, 30vw, 330px); width: auto; margin-inline: auto; filter: drop-shadow(0 2px 18px rgba(0,0,0,.35)); }
.since { margin: 26px 0 0; display: flex; align-items: center; justify-content: center; gap: 16px; font-family: var(--font-head-he); font-size: clamp(1.15rem, 2.2vw, 1.55rem); letter-spacing: .06em; }
.since::before, .since::after { content: ""; width: clamp(36px, 6vw, 70px); height: 4px; border-top: 1px solid rgba(255,255,255,.85); border-bottom: 1px solid rgba(255,255,255,.85); }
.hero-tag { margin-top: 14px; }
.stamp-img { width: 120px; height: 120px; margin-bottom: 28px; }
.footer-logo { height: 76px; width: auto; margin-inline: auto; }
.footer-since { font-family: var(--font-head-he); color: var(--ink-soft) !important; font-size: 1rem !important; margin-top: 10px !important; }

/* 6 wines: 3 × 2 on desktop */
.wines { grid-template-columns: repeat(3, 1fr); row-gap: 64px; max-width: 980px; margin-inline: auto; }
@media (max-width: 640px) { .wines { grid-template-columns: repeat(2, 1fr); row-gap: 48px; } }
/* olive oil bottle on a soft spotlight */
.oil-bottle { min-height: 540px; background: radial-gradient(ellipse at 50% 55%, #3a3a33 0%, #1d1d1a 55%, #111 100%) !important; display: flex; align-items: center; justify-content: center; }
.oil-bottle img { width: auto; height: 480px; object-fit: contain; }
@media (max-width: 760px) { .oil-bottle { min-height: 380px; } .oil-bottle img { height: 330px; } }

/* hero-crop-A: keep the vine rows (bottom of the photo) on any screen shape */
.hero .slot { top: 72px; }  /* photo starts below the white header, so the hills aren't hidden */
.hero .slot img { object-position: center 30%; }
