// content.jsx — copy (EN/DE), data, and the striped Placeholder component.

const COPY = {
  en: {
    brand: "Offroad Camping Georgia",
    nav: { camper: "The Rig", regions: "Regions", routes: "Routes", included: "Pricing", faq: "FAQ", reserve: "Reserve" },
    hero: {
      eyebrow: "Tbilisi → wherever the road ends",
      title: "The Caucasus,\non your own terms.",
      sub: "An offroad camper built for Georgia's mountain passes, badlands, and roads that end. Plan a route. Disappear for two weeks.",
      cta: "Reserve the camper",
      ctaSub: "5-night minimum · April – October",
      meta: [["42.4°N", "Lat."], ["43.7°E", "Lng."], ["5,047m", "Mt. Kazbek"], ["1,720km", "Avg. trip"]],
    },
    rig: {
      kicker: "01 — The rig",
      title: "A 1996 Toyota that\nstill knows the way.",
      lede: "A Land Cruiser 80-series — 4.5-litre petrol six, raised on Old Man Emu suspension, mud-terrain tyres, a 5-tonne winch and a rooftop tent for two. Built slow, tested every summer on the roads it was meant for.",
      specs: [
        ["Engine", "4.5 L inline-six · petrol · 215 hp"],
        ["Year", "1996 · Land Cruiser Series 80"],
        ["Drivetrain", "5-speed manual · selectable 4WD · low-range"],
        ["Suspension", "Raised offroad setup (Old Man Emu)"],
        ["Tyres", "Aggressive mud-terrain · rear-mounted spare for clearance & departure angle"],
        ["Recovery", "5t winch with synthetic rope · Hi-Lift jack"],
        ["Trail lighting", "4 auxiliary LED spotlights"],
        ["Comfort", "Air conditioning · head unit with navigation, WhatsApp & in-car Wi-Fi"],
        ["Sleeping", "Rooftop tent for two"],
      ],
    },
    regions: {
      kicker: "02 — Where to point it",
      title: "Six regions.\nOne tank of patience.",
      lede: "Georgia is the size of Ireland and contains a desert, a subtropical coast, three mountain ranges, and roads that the GPS politely refuses to acknowledge.",
      items: [
        { n: "01", name: "Tusheti", lat: "42.4°N · 45.6°E", lede: "The hardest road in the country, the Abano Pass, only opens four months a year. Stone villages on cliffs. Sheep more than people.", best: "Jul – Sep" },
        { n: "02", name: "Svaneti", lat: "43.0°N · 42.7°E", lede: "Glaciers above 11th-century watchtowers. Ushguli is the highest continuously inhabited village in Europe.", best: "Jun – Sep" },
        { n: "03", name: "Kazbegi", lat: "42.7°N · 44.6°E", lede: "Looking up at 5,047 metres of Mt. Kazbek and the church that has been there since the year your country was a forest.", best: "May – Oct" },
        { n: "04", name: "Vashlovani", lat: "41.1°N · 46.6°E", lede: "Semi-desert badlands on the Azerbaijani border. No tourists. No water. Bring it all. Eagles.", best: "Apr – Jun · Oct" },
        { n: "05", name: "Khevsureti", lat: "42.6°N · 44.9°E", lede: "Fortified villages abandoned every winter when the pass closes. The other side of the mountain from Tusheti, with none of the fame.", best: "Jul – Sep" },
        { n: "06", name: "Adjara", lat: "41.6°N · 42.0°E", lede: "Subtropical valleys descending into the Black Sea. Wooden mosques. Tea plantations. A different country, geologically speaking.", best: "May – Oct" },
      ],
    },
    routes: {
      kicker: "03 — Suggested routes",
      title: "Three routes\nwe'd actually drive.",
      lede: "Sketched on napkins, refined over years. Treat them as a starting frame — the best detours rarely make the printed map.",
      items: [
        { code: "RT-01", name: "The High Caucasus", days: 12, km: 1820, diff: "Hard", stops: ["Tbilisi", "Kazbegi", "Khevsureti", "Tusheti", "Telavi", "Tbilisi"], note: "Two of the highest passes in the range, three nights in Tusheti, wine country on the way home." },
        { code: "RT-02", name: "Wine to Wilderness", days: 8, km: 980, diff: "Medium", stops: ["Tbilisi", "Sighnaghi", "Vashlovani", "Davit Gareja", "Tbilisi"], note: "Soft start in Kakheti's vineyards, then four nights in the badlands and a cave monastery on the border." },
        { code: "RT-03", name: "Coast to Glacier", days: 14, km: 2150, diff: "Hard", stops: ["Batumi", "Adjara", "Racha", "Svaneti", "Tbilisi"], note: "Sea level to 2,500m, subtropics to glaciers, the slow back road through Racha that no one takes." },
      ],
    },
    included: {
      kicker: "04 — Pricing & what's in it",
      title: "One rate.\nNothing missing.",
      lede: "The price is the price. Insurance, kit, data, recovery, the lot.",
      pricing: [
        { label: "Shoulder", months: "April · October", price: "€120", unit: "/ night" },
        { label: "Mid", months: "May · September", price: "€150", unit: "/ night" },
        { label: "High", months: "June – August", price: "€180", unit: "/ night" },
      ],
      pricingNote: "5-night minimum · 7% off for trips over 10 nights · Tbilisi pickup included",
      items: [
        "Comprehensive insurance with €500 deductible",
        "Unlimited kilometres, no border on where you go inside Georgia",
        "Full camping kit — tent, kitchen, chairs, table, hammock",
        "4G data dongle with 100GB of Georgian SIM",
        "Curated GPX routes for every region, offline maps preloaded",
        "Tbilisi airport pickup and drop-off",
        "Recovery, roadside assistance, and someone who answers the phone",
        "A pre-trip briefing over Georgian coffee",
      ],
    },
    faq: {
      kicker: "05 — Before you ask",
      title: "Things people email\nbefore they book.",
      items: [
        { q: "Do I need offroad experience?", a: "Helpful but not required. The Caucasus passes ask for patience and low-range, not skill. The Tusheti road is the exception — we'll talk you through it, or you can hire a guide for the first day." },
        { q: "Can I cross into Armenia or Azerbaijan?", a: "Not with the camper, unfortunately. Insurance and customs make it complicated. Inside Georgia you can drive everywhere a Land Cruiser can reach, which is most things." },
        { q: "Where do I refuel and resupply?", a: "Most regions have a village with fuel within 80km. Vashlovani and inner Tusheti are the exceptions — we'll send you a fuel map and a packing list a week before." },
        { q: "Is wild camping legal?", a: "Effectively yes, outside the national parks. Inside parks (Vashlovani, Tusheti) there are designated spots. Georgians are remarkably relaxed about where you sleep." },
        { q: "What's the season?", a: "We run April through October. The high passes (Tusheti, Khevsureti) open mid-June and close in early October. Vashlovani is best in spring and autumn, miserable in July." },
        { q: "What about cancellation?", a: "Full refund up to 30 days out. 50% from 30 to 14 days. Inside two weeks we keep the deposit, but we'll move your dates twice within the season at no charge." },
      ],
    },
    voices: {
      kicker: "06 — Reports from the field",
      title: "What travellers\nsend back.",
      items: [
        { q: "We didn't speak to another tourist for nine days. Saw two bears, three eagles, and a shepherd who insisted we eat with him. The truck started every morning.", who: "Hannah & Lukas", where: "Berlin · 14 days, July 2025" },
        { q: "The Abano Pass is exactly as advertised. The reward, also as advertised. The owners send you off prepared and leave you alone.", who: "Ivan", where: "Madrid · 9 days, August 2024" },
        { q: "I'm not an offroad person. I drove this thing from Tbilisi to a glacier and back. The hardest part was leaving it.", who: "Naomi", where: "Toronto · 11 days, September 2025" },
      ],
    },
    reserve: {
      kicker: "07 — Reserve",
      title: "Pick your dates.\nWe'll write back today.",
      lede: "No booking engine, no auto-confirmation. We read every message and reply with a route plan, a price, and any questions about what you want from the trip.",
      labels: { dates: "Travel dates", nights: "nights", name: "Name", email: "Email", from: "Departing from", people: "Travellers", message: "Tell us about the trip", messagePh: "Routes you're curious about, experience level, anything we should know.", send: "Send enquiry", agree: "I understand this is an enquiry, not a confirmed booking.", success: "Sent. We'll write back within the day.", arrival: "Arrival", departure: "Departure", clear: "Clear dates", monthsAbbr: ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"], days: ["M","T","W","T","F","S","S"], closed: "Off-season", select: "Select arrival", selectDep: "Select departure" },
    },
    footer: { tagline: "Built in a barn outside Tbilisi.", contact: "hello@offroadcampinggeorgia.example", ig: "@offroadcampinggeorgia", rights: "All routes, all weather, no rush." },
  },
  de: {
    brand: "Offroad Camping Georgia",
    nav: { camper: "Das Fahrzeug", regions: "Regionen", routes: "Routen", included: "Preise", faq: "FAQ", reserve: "Reservieren" },
    hero: {
      eyebrow: "Tbilisi → wo die Straße endet",
      title: "Der Kaukasus,\nzu deinen Bedingungen.",
      sub: "Ein Offroad-Camper, gebaut für Georgiens Bergpässe, Wüstenbadlands und Straßen, die ins Nichts führen. Plane eine Route. Verschwinde für zwei Wochen.",
      cta: "Camper reservieren",
      ctaSub: "Mindestens 5 Nächte · April – Oktober",
      meta: [["42,4°N", "Breit."], ["43,7°O", "Läng."], ["5.047m", "Kasbek"], ["1.720km", "Ø Reise"]],
    },
    rig: {
      kicker: "01 — Das Fahrzeug",
      title: "Ein Toyota von 1996,\nder den Weg noch kennt.",
      lede: "Ein Land Cruiser der 80er-Serie — 4,5-Liter-Benziner, höhergelegt auf Old-Man-Emu-Fahrwerk, grobstollige Reifen, 5t-Seilwinde und Dachzelt für zwei. Langsam aufgebaut, jeden Sommer auf den Straßen getestet, für die er gedacht ist.",
      specs: [
        ["Motor", "4,5 L Reihensechszylinder · Benzin · 215 PS"],
        ["Baujahr", "1996 · Land Cruiser Serie 80"],
        ["Antrieb", "5-Gang manuell · Allrad zuschaltbar · Untersetzung"],
        ["Fahrwerk", "Höhergelegtes Offroad-Fahrwerk (Old Man Emu)"],
        ["Reifen", "Grobstollige Offroad-Reifen · Ersatzrad hinten für Bodenfreiheit & Böschungswinkel"],
        ["Bergung", "5t-Seilwinde mit Textilseil · Offroad-Wagenheber (Hi-Lift)"],
        ["Geländelicht", "4 zusätzliche LED-Strahler"],
        ["Komfort", "Klimaanlage · modernes Autoradio mit Navi, WhatsApp & WLAN"],
        ["Schlafen", "Dachzelt für zwei"],
      ],
    },
    regions: {
      kicker: "02 — Wohin damit",
      title: "Sechs Regionen.\nEin Tank Geduld.",
      lede: "Georgien ist so groß wie Irland und enthält eine Wüste, eine subtropische Küste, drei Gebirgszüge und Straßen, die das GPS höflich ignoriert.",
      items: [
        { n: "01", name: "Tuschetien", lat: "42,4°N · 45,6°O", lede: "Die schwierigste Straße des Landes, der Abano-Pass, ist nur vier Monate im Jahr offen. Steindörfer an Felswänden. Mehr Schafe als Menschen.", best: "Jul – Sep" },
        { n: "02", name: "Swanetien", lat: "43,0°N · 42,7°O", lede: "Gletscher über Wachtürmen aus dem 11. Jahrhundert. Uschguli ist das höchste dauerhaft bewohnte Dorf Europas.", best: "Jun – Sep" },
        { n: "03", name: "Kasbegi", lat: "42,7°N · 44,6°O", lede: "Blick hinauf auf 5.047 Meter Kasbek und die Kirche, die schon stand, als dein Land noch Wald war.", best: "Mai – Okt" },
        { n: "04", name: "Waschlowani", lat: "41,1°N · 46,6°O", lede: "Halbwüsten-Badlands an der aserbaidschanischen Grenze. Keine Touristen. Kein Wasser. Bring alles mit. Adler.", best: "Apr – Jun · Okt" },
        { n: "05", name: "Chewsuretien", lat: "42,6°N · 44,9°O", lede: "Wehrdörfer, jeden Winter aufgegeben, wenn der Pass schließt. Die andere Seite des Bergs von Tuschetien, ohne den Ruhm.", best: "Jul – Sep" },
        { n: "06", name: "Adscharien", lat: "41,6°N · 42,0°O", lede: "Subtropische Täler bis hinunter zum Schwarzen Meer. Holzmoscheen. Teeplantagen. Geologisch ein anderes Land.", best: "Mai – Okt" },
      ],
    },
    routes: {
      kicker: "03 — Routenvorschläge",
      title: "Drei Routen,\ndie wir wirklich fahren würden.",
      lede: "Auf Servietten skizziert, über Jahre verfeinert. Nimm sie als Ausgangspunkt — die besten Umwege stehen selten auf der gedruckten Karte.",
      items: [
        { code: "RT-01", name: "Der hohe Kaukasus", days: 12, km: 1820, diff: "Schwer", stops: ["Tbilisi", "Kasbegi", "Chewsuretien", "Tuschetien", "Telawi", "Tbilisi"], note: "Zwei der höchsten Pässe, drei Nächte in Tuschetien, Weinland auf dem Heimweg." },
        { code: "RT-02", name: "Wein zur Wildnis", days: 8, km: 980, diff: "Mittel", stops: ["Tbilisi", "Sighnaghi", "Waschlowani", "Dawit Garedscha", "Tbilisi"], note: "Sanfter Start in Kachetiens Weinbergen, dann vier Nächte in den Badlands und ein Höhlenkloster an der Grenze." },
        { code: "RT-03", name: "Küste zum Gletscher", days: 14, km: 2150, diff: "Schwer", stops: ["Batumi", "Adscharien", "Ratscha", "Swanetien", "Tbilisi"], note: "Meeresspiegel bis 2.500m, Subtropen bis Gletscher, die langsame Nebenstraße durch Ratscha, die niemand fährt." },
      ],
    },
    included: {
      kicker: "04 — Preise & was drin ist",
      title: "Ein Preis.\nNichts fehlt.",
      lede: "Der Preis ist der Preis. Versicherung, Ausrüstung, Daten, Bergung, alles.",
      pricing: [
        { label: "Nebensaison", months: "April · Oktober", price: "€120", unit: "/ Nacht" },
        { label: "Mittel", months: "Mai · September", price: "€150", unit: "/ Nacht" },
        { label: "Hochsaison", months: "Juni – August", price: "€180", unit: "/ Nacht" },
      ],
      pricingNote: "Mindestens 5 Nächte · 7% Rabatt ab 10 Nächten · Tbilisi-Abholung inkludiert",
      items: [
        "Vollkasko mit €500 Selbstbeteiligung",
        "Unbegrenzte Kilometer, keine Grenze innerhalb Georgiens",
        "Komplette Camping-Ausstattung — Zelt, Küche, Stühle, Tisch, Hängematte",
        "4G-Stick mit 100GB georgischer SIM",
        "Kuratierte GPX-Routen für jede Region, offline vorinstalliert",
        "Abholung und Rückgabe am Flughafen Tbilisi",
        "Bergung, Pannenhilfe und jemand, der ans Telefon geht",
        "Briefing vor der Reise bei georgischem Kaffee",
      ],
    },
    faq: {
      kicker: "05 — Bevor du fragst",
      title: "Was uns Leute vor\nder Buchung schreiben.",
      items: [
        { q: "Brauche ich Offroad-Erfahrung?", a: "Hilfreich, aber nicht nötig. Die Kaukasus-Pässe verlangen Geduld und Untersetzung, nicht Können. Die Tuscheti-Straße ist die Ausnahme — wir besprechen sie mit dir, oder du nimmst für den ersten Tag einen Guide." },
        { q: "Kann ich nach Armenien oder Aserbaidschan?", a: "Mit dem Camper leider nicht. Versicherung und Zoll machen es kompliziert. Innerhalb Georgiens kannst du überall hin, wo ein Land Cruiser hinkommt — und das ist viel." },
        { q: "Wo tanke und versorge ich mich?", a: "In den meisten Regionen gibt es alle 80km ein Dorf mit Tankstelle. Ausnahmen sind Waschlowani und das innere Tuschetien — eine Woche vorher bekommst du Tankkarte und Packliste." },
        { q: "Ist Wildcampen erlaubt?", a: "De facto ja, außerhalb der Nationalparks. Innerhalb der Parks (Waschlowani, Tuschetien) gibt es ausgewiesene Plätze. Georgier sind sehr entspannt damit, wo man schläft." },
        { q: "Wann ist Saison?", a: "April bis Oktober. Die hohen Pässe (Tuschetien, Chewsuretien) öffnen Mitte Juni und schließen Anfang Oktober. Waschlowani ist am besten im Frühling und Herbst, im Juli unerträglich." },
        { q: "Wie ist die Stornierung?", a: "Volle Rückerstattung bis 30 Tage vorher. 50% von 30 bis 14 Tage. Innerhalb von zwei Wochen behalten wir die Anzahlung, verschieben aber zweimal in der Saison kostenlos." },
      ],
    },
    voices: {
      kicker: "06 — Berichte aus dem Feld",
      title: "Was Reisende\nzurückschicken.",
      items: [
        { q: "Neun Tage lang keinen anderen Touristen gesehen. Zwei Bären, drei Adler und ein Hirte, der darauf bestand, dass wir mit ihm essen. Der Wagen sprang jeden Morgen an.", who: "Hannah & Lukas", where: "Berlin · 14 Tage, Juli 2025" },
        { q: "Der Abano-Pass ist genau wie beschrieben. Die Belohnung auch. Die Vermieter schicken dich gut vorbereitet los und lassen dich dann in Ruhe.", who: "Ivan", where: "Madrid · 9 Tage, August 2024" },
        { q: "Ich bin kein Offroad-Typ. Ich habe das Ding von Tbilisi zu einem Gletscher und zurück gefahren. Das Schwerste war, es wieder abzugeben.", who: "Naomi", where: "Toronto · 11 Tage, September 2025" },
      ],
    },
    reserve: {
      kicker: "07 — Reservieren",
      title: "Wähle deine Tage.\nWir antworten heute.",
      lede: "Kein Buchungssystem, keine automatische Bestätigung. Wir lesen jede Nachricht und antworten mit Routenplan, Preis und Rückfragen.",
      labels: { dates: "Reisedaten", nights: "Nächte", name: "Name", email: "E-Mail", from: "Anreise aus", people: "Reisende", message: "Erzähl uns von der Reise", messagePh: "Welche Routen interessieren dich, Erfahrung, alles was wir wissen sollten.", send: "Anfrage senden", agree: "Mir ist klar, dass dies eine Anfrage ist, keine Bestätigung.", success: "Gesendet. Wir antworten heute.", arrival: "Anreise", departure: "Abreise", clear: "Daten löschen", monthsAbbr: ["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"], days: ["M","D","M","D","F","S","S"], closed: "Außerhalb Saison", select: "Anreise wählen", selectDep: "Abreise wählen" },
    },
    footer: { tagline: "Gebaut in einer Scheune bei Tbilisi.", contact: "hello@offroadcampinggeorgia.example", ig: "@offroadcampinggeorgia", rights: "Alle Routen, jedes Wetter, ohne Eile." },
  },
};

// Month labels (in current locale) for the calendar
const MONTH_NAMES = {
  en: ["January","February","March","April","May","June","July","August","September","October","November","December"],
  de: ["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],
};

// Striped SVG placeholder with monospace caption.
// Pass `src` to drop in a real photo — it covers the frame, keeps the mono
// caption overlay, and falls back to the stripes if the image fails to load.
function Placeholder({ label, ratio = "4/3", tone = "dark", caption, height, className, style, src, alt }) {
  const palette = tone === "dark"
    ? { bg: "#11151a", stripe: "rgba(255,255,255,0.04)", text: "rgba(245,240,230,0.55)", rule: "rgba(245,240,230,0.18)" }
    : tone === "warm"
    ? { bg: "#e6dccb", stripe: "rgba(0,0,0,0.05)", text: "rgba(28,24,20,0.6)", rule: "rgba(28,24,20,0.25)" }
    : { bg: "#1a1f24", stripe: "rgba(255,255,255,0.05)", text: "rgba(245,240,230,0.6)", rule: "rgba(245,240,230,0.22)" };
  const id = React.useId();
  const [imgFailed, setImgFailed] = React.useState(false);
  const showImg = src && !imgFailed;

  if (showImg) {
    return (
      <div className={className} style={{
        position: "relative", aspectRatio: height ? undefined : ratio, height: height || undefined,
        background: palette.bg, overflow: "hidden", ...style,
      }}>
        <img
          src={src}
          alt={alt || label}
          loading="lazy"
          onError={() => setImgFailed(true)}
          style={{ position: "absolute", inset: 0, width: "100%", height: "100%", objectFit: "cover", display: "block" }}
        />
        <div style={{
          position: "absolute", inset: 0, pointerEvents: "none",
          background: "linear-gradient(to bottom, rgba(0,0,0,0.28) 0%, rgba(0,0,0,0) 26%, rgba(0,0,0,0) 64%, rgba(0,0,0,0.42) 100%)",
        }}></div>
        <div style={{
          position: "absolute", inset: 0, display: "flex", flexDirection: "column",
          justifyContent: "space-between", padding: "14px 16px",
          fontFamily: "'JetBrains Mono', ui-monospace, monospace",
          fontSize: 10, letterSpacing: "0.08em", textTransform: "uppercase",
          color: "rgba(245,240,230,0.92)",
        }}>
          <div style={{ display: "flex", justifyContent: "space-between", alignItems: "flex-start", gap: 12 }}>
            <span style={{ display: "inline-flex", alignItems: "center", gap: 6 }}>
              <span style={{ width: 6, height: 6, background: "rgba(245,240,230,0.92)", borderRadius: 1 }}></span>
              {label}
            </span>
            {caption && <span style={{ textAlign: "right" }}>{caption}</span>}
          </div>
        </div>
      </div>
    );
  }

  return (
    <div className={className} style={{
      position: "relative", aspectRatio: height ? undefined : ratio, height: height || undefined,
      background: palette.bg, overflow: "hidden", ...style,
    }}>
      <svg width="100%" height="100%" preserveAspectRatio="none" style={{ position: "absolute", inset: 0 }}>
        <defs>
          <pattern id={`p-${id}`} width="14" height="14" patternUnits="userSpaceOnUse" patternTransform="rotate(35)">
            <line x1="0" y1="0" x2="0" y2="14" stroke={palette.stripe} strokeWidth="6" />
          </pattern>
        </defs>
        <rect width="100%" height="100%" fill={`url(#p-${id})`} />
      </svg>
      <div style={{
        position: "absolute", inset: 0, display: "flex", flexDirection: "column",
        justifyContent: "space-between", padding: "14px 16px",
        fontFamily: "'JetBrains Mono', ui-monospace, monospace",
        fontSize: 10, letterSpacing: "0.08em", textTransform: "uppercase",
        color: palette.text,
      }}>
        <div style={{ display: "flex", justifyContent: "space-between", alignItems: "flex-start", gap: 12 }}>
          <span style={{ display: "inline-flex", alignItems: "center", gap: 6 }}>
            <span style={{ width: 6, height: 6, background: palette.text, borderRadius: 1 }}></span>
            {label}
          </span>
          {caption && <span style={{ textAlign: "right" }}>{caption}</span>}
        </div>
        <div style={{ borderTop: `1px dashed ${palette.rule}`, paddingTop: 6, display: "flex", justifyContent: "space-between" }}>
          <span>placeholder</span>
          <span>img · drop-in</span>
        </div>
      </div>
    </div>
  );
}

// Region photos — Pexels IDs keyed by region number (language-independent).
// Build the CDN URL from the photo's numeric ID:
//   https://images.pexels.com/photos/<ID>/pexels-photo-<ID>.jpeg?auto=compress&cs=tinysrgb&w=1400
// Set an ID to null to keep the striped placeholder for that region.
const REGION_PEXELS_ID = {
  "01": 28758560,    // Tusheti — scenic Caucasus mountain view
  "02": 11274564,    // Svaneti — mountains under cloudy sky
  "03": 12916333,    // Kazbegi — Gergeti Trinity Church (Andrew Schwark)
  "04": 35756303,    // Vashlovani — white rock cliff badlands
  "05": 32416813,    // Khevsureti — Ananuri castle / Georgian landscape
  "06": 2452497,     // Adjara — water near mountain
};

function regionImg(n, w = 1400) {
  const id = REGION_PEXELS_ID[n];
  if (!id) return undefined;
  const bundled = typeof window !== "undefined" && window.__resources && window.__resources["region" + n];
  if (bundled) return bundled;
  return `https://images.pexels.com/photos/${id}/pexels-photo-${id}.jpeg?auto=compress&cs=tinysrgb&w=${w}`;
}

Object.assign(window, { COPY, MONTH_NAMES, Placeholder, REGION_PEXELS_ID, regionImg });
