/*
Theme Name: ursaminor
Theme URI: https://yourdomain.co.uk/
Version: 0.3.0.4
*/

/* ==========================================================================
   SECTION A: Root tokens & global layout / typography
   ========================================================================== */

:root{
  --hdr-h: 56px;                 /* reserve height to prevent content jump */
  --pad-x: 16px;
  --brand-gap: 12px;
  --z-header: 1000;
}

html,
body {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;   /* stop sideways scroll + weird gaps */
}


/* Sticky site header shell */
.site-header{
  position: sticky; top: 0; z-index: var(--z-header);
  background: #fff; border-bottom: 1px solid #eef0f2;
}

/* Main header flex row (logo + nav + actions) */
.site-header .wrap{
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--brand-gap);
  min-height: var(--hdr-h);
  padding: 10px var(--pad-x);
}

/* Container paddings unify across templates (guard against ragged edges) */
.wrap, .site-main .wrap, .content-area .wrap{ padding-left: var(--pad-x); padding-right: var(--pad-x); }

/* Viewport typography clamps (kept subtle to avoid zoom) */
h1{ font-size: clamp(1.6rem, 1.1rem + 1.5vw, 2.2rem); }
h2{ font-size: clamp(1.3rem, 1.05rem + 0.9vw, 1.8rem); }
body{ font-size: clamp(0.98rem, 0.94rem + 0.2vw, 1.05rem); }

/* Visually-hidden utility */
.visually-hidden{
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* Scroll lock helper */
html.scroll-lock, body.scroll-lock{ overflow: hidden; }


/* ==========================================================================
   SECTION B: Primary navigation (mobile-first) & hamburger
   ========================================================================== */

/* Primary nav: mobile-first column, ≥721px row */
.menu.menu--primary{
  list-style: none; margin: 0; padding: 8px 12px;
  display: flex; flex-direction: column; gap: 2px;
}
.menu.menu--primary a{
  display: flex; align-items: center;
  min-height: 44px; padding: 10px 8px;
  text-decoration: none; border-bottom: 1px solid transparent;
  color: inherit;
}
.menu.menu--primary a:hover{ border-bottom-color: currentColor; }
 .menu.menu--primary{
    flex-direction: row; align-items: center; gap: 12px;
    padding: 0; margin: 0;
  }

/* Submenus: preserve hover on desktop; (mobile JS toggles can be added next pass) */
.menu.menu--primary li{ position: relative; }
.menu.menu--primary li .sub-menu{
  position: absolute; top: 100%; left: 0; min-width: 200px;
  background: #fff; border: 1px solid #eef0f2; border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0,0,0,.08);
  display: none; padding: 6px; margin-top: 6px;
}
@media (min-width: 721px){
  .menu.menu--primary li:hover > .sub-menu{ display: block; }
}
@media (max-width: 720px){
  .menu.menu--primary li .sub-menu{
    position: static; display: none; padding-left: 8px; margin: 0; border: 0; box-shadow: none;
  }
  .menu.menu--primary li.is-open > .sub-menu{ display: block; } /* (hook for future mobile submenu toggles) */
}


/* ==========================================================================
   SECTION C: Header tweaks – mobile-first hotfixes & logo sizing
   NOTE: this section redefines several things from above.
   ========================================================================== */

/* === v2025.11.09-header-mobilefirst hotfix (0.1.2) === */

/* Header row: brand left, actions (burger) then nav on desktop */
/* NOTE: duplicates .site-header .wrap above but same intent */
.site-header .wrap{
  display:flex; align-items:center; justify-content:space-between;
}


/* Desktop ≥721px: inline nav aligned right; burger hidden */
@media (min-width: 721px){
  .menu-toggle{ display:none !important; }                /* force hide on desktop */
  .menu.menu--primary{ justify-content:flex-end; }        /* right-align menu items */
}


/* Logo sizing: smaller on desktop, a touch bigger on mobile */
/* NOTE: this overwrites the earlier logo height=50px above. */
.site-header .site-logo img,
.site-header .site-logo .custom-logo,
.site-header .site-logo-img{
  display:block; width:auto; object-fit:contain; max-width:220px;
}

/* Mobile first (≤720px): slightly larger than before */
.site-header .site-logo img,
.site-header .site-logo .custom-logo,
.site-header .site-logo-img{
  height: 65px;        /* change logo size <-------------------- */
}

/* Desktop ≥721px: reduce size (your screenshot shows it too large) */
@media (min-width: 721px){
  .site-header .site-logo img,
  .site-header .site-logo .custom-logo,
  .site-header .site-logo-img{
    height: 50px;        /* change logo size <-------------------- */
  }
}


/* Ensure the mobile menu (UL) isn’t double-rendered inline on small screens */
@media (max-width: 720px){
  .menu.menu--primary{ padding:8px 12px; }
  /* Slightly smaller main menu text on desktop */
  .menu.menu--primary a{
    font-size: .98rem;
    line-height: 1.15;
  }
}


/* ==========================================================================
   SECTION D: Main nav hover rules & portal pills
   ========================================================================== */

/* === Header nav hover reset (exclude portal pills) === */
.menu.menu--primary li:not(.menu-item-portal) > a{
  background: transparent;
  border-radius: 0;
  box-shadow: none;
  border: 0;
  border-bottom: 1px solid transparent;
}
.menu.menu--primary li:not(.menu-item-portal) > a:hover{
  background: transparent;
  border-bottom-color: currentColor;
}

/* === Portal/Admin pills — sea-glass style on all viewports === */
.menu.menu--primary .menu-item-portal > a{
  background: #e6f6f0;            /* sea-glass fill */
  color: #145c3a;                 /* dark green text */
  border: 1px solid #9bc9b7;      /* soft green border */
  border-radius: 9999px;          /* you increased radius elsewhere; keep pill */
  padding: 8px 10px;
  line-height: 1;
  border-bottom: 2;               /* no underline on pills */
  font-size: .98rem;
  line-height: 1.15;
}
.menu.menu--primary .menu-item-portal > a:hover{
  background: #ecf7f1;            /* tiny lift on hover */
  border-color: #1e6a5f;          /* deepen border */
  color: #1e6a5f;                 /* nudge text toward brand green */
  font-size: .98rem;
  line-height: 1.1;
}

/* === Current page highlighting (main nav) === */
.menu.menu--primary .current-menu-item > a,
.menu.menu--primary .current_page_item > a,
.menu.menu--primary .current-menu-ancestor > a{
  color: #1e6a5f;
  border-bottom-color: #1e6a5f;   /* underline for public links */
}

/* Portal pills: keep sea-glass, just strengthen border on current */
.menu.menu--primary .menu-item-portal.current-menu-item > a,
.menu.menu--primary .menu-item-portal.current_page_item > a{
  background: #ddede8;
  color: #145c3a;
  border-color: #1e6a5f;          /* stronger edge when active */
  border: 2px solid #1e6a5f;      /* soft green border */
}

/* Small products portal header tint */
.fb-portal--products .pp-edit-header{
  background:rgba(30,106,95,.05);
  padding:.5rem .6rem; border-radius:10px;
}


/* ==========================================================================
   SECTION E: “New” header shell & social icons / power toggle
   NOTE: This is the more recent portal-style header layer.
   ========================================================================== */

.site-header {
  position: relative;
  z-index: 20;
  border-bottom: 1px solid rgba(0,0,0,0.04);
}

/* Inner flex container used in newer markup */
.site-header__inner {
  display: flex;
  align-items: center;
  padding-top: 0.9rem;
  padding-bottom: 0.9rem;
}

.site-header__brand {
  flex: 0 0 auto;
}

.site-logo-img {
  max-height: 40px;
  width: auto;
  border-radius: 999px;
}

/* NOTE: this .site-nav conflicts with the earlier mobile off-canvas one;
   in practice, markup decides which behaviour you actually see. */
.site-nav {
  flex: 1 1 auto;
  display: flex;
  justify-content: flex-end; /* push menu towards the right */
  padding-right: 3rem;       /* space before social + burger cluster */
}

.menu.menu--primary {
  display: flex;
  gap: 1.5rem;
}

.menu.menu--primary > li > a {
  font-size: 0.95rem;
  text-decoration: none;
}

.site-header__right {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

/* --- Social icons cluster ------------------------------------------------ */

.site-header__social-list {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-header__social-item a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.site-header__social-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  border: 1px solid rgba(148, 163, 184, 0.8);
  background: #ffffff;
  color: #0f172a;
  transition: background 120ms ease-out, color 120ms ease-out, border-color 120ms ease-out;
}

.site-header__social-icon svg {
  width: 16px;
  height: 16px;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.6;
}

.site-header__social-icon--instagram svg rect {
  stroke-linejoin: round;
}

/* Subtle hover state */
.site-header__social-item a:hover .site-header__social-icon {
  background: #0f172a;
  color: #ffffff;
  border-color: #0f172a;
}

.site-header__social-icon--facebook,
.site-header__social-icon--instagram {
  background: transparent;
}

/* --- Power (artist) menu toggle ------------------------------------------ */

.site-header__power-toggle {
  border: none;
  background: #ffffff;
  border-radius: 999px;
  padding: 0.35rem 0.5rem;
  display: none;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.09);
}

.site-header--has-portal .site-header__power-toggle {
  display: inline-flex;             /* admin / artist desktop */
  align-items: center;
  justify-content: center;
}

.site-header__power-toggle:hover {
  background: #f3faf7;
}

/* Mobile layout for newer header */
@media (max-width: 768px) {
  .site-nav {
    display: none;                  /* collapse horizontal menu */
  }

  .site-header__power-toggle {
    display: inline-flex;           /* everyone gets burger on mobile */
    align-items: center;
    justify-content: center;
  }

  .site-header__inner {
    padding-top: 0.7rem;
    padding-bottom: 0.7rem;
  }
}

/* Basic mobile tweaks for newer header */
@media (max-width: 720px) {
  .site-header__inner {
    flex-wrap: wrap;
    gap: 0.5rem;
  }
  .site-nav {
    order: 3;
    width: 100%;
    margin: 0.75rem 0 0;
  }
  .menu.menu--primary {
    flex-wrap: wrap;
    gap: 0.75rem;
  }
}


/* ==========================================================================
   SECTION F: Portal side menu (artist/admin) – off-canvas panel =======================================================
   ========================================================================== */

/* Overlay + portal menu panel */
.site-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.45);
  z-index: 40;
}

.portal-menu {
   position: fixed;
  top: 0;
  right: 0;
  height: 100vh;
  width: 320px;
  max-width: 82vw;
  background: #ffffff;
  box-shadow: -12px 0 35px rgba(15,23,42,0.18);
  z-index: 50;
  transform: translateX(100%);
  transition: transform 150ms ease-out;
  overflow-y: auto;                 /* allow menu to scroll */
  -webkit-overflow-scrolling: touch;/* smooth scrolling on iOS/Chrome */
}

.portal-menu__inner {
  padding: 1.75rem 1.5rem;
}

.portal-menu__title {
  font-size: 0.95rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #64748b;
  margin: 0 0 1rem;
}

.portal-menu__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

/* Any portal list: add vertical spacing between list items */
.portal-menu__list > li + li {
  margin-top: 0.75rem;
}


/* Base link style for all portal menu items (admin + public) */
.portal-menu__list > li > a {
  display: block;
  padding: 0.85rem 0;
  font-size: 0.95rem;
}


/* Open state – when body/html have portal-menu-open class */
.portal-menu-open .portal-menu {
  transform: translateX(0);
}

/* Artist portal side menu sizing & tap targets (refined) */
.portal-menu {
  position: fixed;
  top: 0;
  right: 0;
  height: 100vh;
  width: 320px;          /* a bit wider */
  max-width: 82vw;       /* good on smaller phones */
}

.portal-menu__inner {
  padding: 2.5rem 2rem 2rem;
}

.portal-menu__title {
  font-size: 0.9rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin: 0 0 0.5rem;
}

.portal-menu__close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: transparent;
  border: 0;
  padding: 0.4rem;
  cursor: pointer;
  line-height: 1;
}

.portal-menu__close svg {
  display: block;
}

/* Make each link feel like a big tap target */
.portal-menu__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.portal-menu__item a {
  display: block;
  padding: 0.85rem 0;
  font-size: 0.95rem;
}

/* Admin section (top list) */
.portal-menu__list--admin {
  margin-bottom: 1.25rem;
  border-bottom: 1px solid rgba(148, 163, 184, 0.4);
  padding-bottom: 0.75rem;
}
.portal-menu__list--admin > li > a {
  color: #047857;            /* emerald-ish green */
  font-weight: 500;
}


/* Public section – normal body colour */
.portal-menu__list--public > li > a {
  color: #0f172a;
}

/* Add subtle divider after the public links to separate from admin links */
.portal-menu__list--public {
  margin-bottom: 0.6rem;
  padding-bottom: 0.35rem;
  border-bottom: 1px solid rgba(148, 163, 184, 0.35);
}


/* Small tidy for close button already present */
.portal-menu__inner {
  padding: 2.2rem 2rem 2rem;
  position: relative;
}

.portal-menu__close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: transparent;
  border: 0;
  padding: 0.4rem;
  cursor: pointer;
  line-height: 1;
}

.portal-menu__brand {
  margin: 0 0 1.5rem;
  text-align: left;             /* or center if you prefer */
}

.portal-menu__brand .site-logo-img,
.portal-menu__brand .custom-logo,
.portal-menu__brand img {
  max-height: 48px;
  width: auto;
  border-radius: 999px;
  display: block;
}


/* When logged in, move the whole panel down so the WP admin bar
   doesn’t cover the close icon or “MENU” title. */
@media (min-width: 783px) {
  .admin-bar .portal-menu {
    top: 32px;
  }
}

/* Desktop: hide public list inside portal menu (main nav already visible) */
@media (min-width: 769px) {
  .portal-menu__list--public {
    display: none;
  }
}



/* ==========================================================================
   SECTION G: Portal menu typography overrides (mobile only, v0.2.1)
   These are the rules we’ve been tweaking for size/leading on phones.
   ========================================================================== */

@media (max-width: 768px) {

  /* Top public menu items – slightly smaller, more relaxed leading */
  .portal-menu .portal-menu__list.portal-menu__list--public > li > a {
    font-size: 0.9rem !important;
    line-height: 0.9 !important;
    font-weight: 600 !important;
	letter-spacing: 0.09em !important;
	text-transform: uppercase;
  }


  /* Admin / power-user links – keep size, tighten leading a bit */
  .portal-menu .portal-menu__list.portal-menu__list--admin > li > a {
    font-size: 0.95rem !important;
    line-height: 0.9 !important;
	text-transform: uppercase;
  }


  /* “MENU” title – smaller, lighter, a touch tighter */
  .portal-menu .portal-menu__title {
    font-size: 0.98rem !important;
    letter-spacing: 0.16em !important;
    line-height: 1.2 !important;
    margin-bottom: 0.75rem !important;
	text-transform: uppercase;
  }

}


/* --------------------------------------------------------------------------
 * Hero title + tagline spacing tweak
 * ----------------------------------------------------------------------- */

.hero__content h1 {
  margin-bottom: 0.05em;   /* very tight gap under main title */
  line-height: 1.15;       /* tight multi-line leading for the name */
}

.hero__content p.hero__tagline,
.hero__content p:first-of-type {
  margin-top: 0;            /* remove any extra top margin */
  margin-bottom: 0.9em;    /* small gap before buttons */
  line-height: 1.3;         /* slightly tighter tagline leading */
}


/* --------------------------------------------------------------------------
 * SECTION H: Hero banner image & accent card
 * Version: 0.3.0-hero-accent-responsive
 * ----------------------------------------------------------------------- */

.hero__media {
  display: flex;
  align-items: center;
  justify-content: center;
}

.hero__media-stack {
  position: relative;
  display: inline-block;
}

/* Main hero banner image */
.hero__image--banner {
  display: block;
  width: 100%;
  height: auto;
  max-width: 340px;
  border-radius: 10px;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.10);
}

/* Placeholder when there’s no hero image yet */
.hero__banner-placeholder {
  width: 100%;
  max-width: 340px;
  min-height: 260px;
  border-radius: 10px;
  background-color: #f2f2f5;
}

/* Accent card – desktop default (overlapping) */
.hero__accent-wrap {
  position: absolute;
  bottom: -6%;          /* moved UP vs earlier (-20%) */
  left: -22%;
  width: 58%;
  max-width: 220px;
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.20);
}

.hero__image--accent {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 10px;
}

/* ---------- Mobile behaviour (no overlap) -------------------------------- */

@media (max-width: 767px) {
  .hero__media {
    margin-top: 1.75rem;          /* breathing room below title/CTAs */
  }

  .hero__image--banner,
  .hero__banner-placeholder {
    max-width: 100%;
  }

  .hero__media-stack {
    display: block;
  }

 .hero__accent-wrap {
    position: static;             /* drop into normal flow under banner */
    width: 100%;
    max-width: 260px;
    margin: 1.25rem auto 0;       /* centred card underneath */
    box-shadow: 0 10px 22px rgba(0, 0, 0, 0.18);
	display: none;
  }

}

/* ---------- Desktop/two-column hero layout -------------------------------- */

@media (min-width: 960px) {
  .hero__inner--split {
    display: flex;
    align-items: flex-start;      /* top-align title + banner */
    justify-content: flex-start;
    gap: 3rem;
  }

  .hero__content {
    flex: 0 0 54%;
    max-width: 40rem;
  }

  .hero__media {
    flex: 0 0 30%;
    display: flex;
    justify-content: center;
    align-items: flex-start;
    margin-top: 0;                /* sit flush with title block */
  }

  .hero__image--banner,
  .hero__banner-placeholder {
    max-width: 300px;
    max-height: 380px;
  }

  /* Slight extra nudge on large screens if you want it a touch lower/higher */
  .hero__accent-wrap {
    bottom: -8%;                  /* fine-tuning for ≥960px */
    left: -22%;
  }
}



/* --------------------------------------------------------------------------
 * SECTION I: Blog index (plugin output) → 3-up card grid
 * ----------------------------------------------------------------------- */
.fb-public-blog{
  display:grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 2.2rem 2rem;
  max-width: 1100px;   /* harmonise with site */
  margin: 1.5rem auto 2.5rem;
  padding: 0 1rem;
}
@media (max-width: 980px){ .fb-public-blog{ grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 640px){ .fb-public-blog{ grid-template-columns: 1fr; } }

/* turn each post into a card */
.fb-public-blog .post{
  border: 0;
  padding: 0;
  background: #fff;
}

/* image first, wide and clean */
.fb-public-blog .thumb{ margin: 0 0 .9rem; }
.fb-public-blog .thumb img{
  width: 100%; height: auto;
  aspect-ratio: 16 / 10;      /* modern browsers */
  object-fit: cover;
  border: 1px solid #eaeaea;
  border-radius: 10px;
  display:block;
}

/* title + meta + excerpt hierarchy */
.fb-public-blog .content{ margin: 0; }
.fb-public-blog h2{
  font-size: 1.6rem;
  line-height: 1.25;
  margin: .2rem 0 .4rem;
}
.fb-public-blog h2 a{ text-decoration: none; }
.fb-public-blog h2 a:hover{ text-decoration: underline; }

.fb-public-blog .meta{
  font-style: italic;
  opacity: .75;
  margin-bottom: .55rem;
}

/* clamp excerpt to ~3 lines for tidy cards */
.fb-public-blog .excerpt{
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.6;
  max-width: 65ch;
}

/* pagination polish */
.fb-public-pagination{
  grid-column: 1 / -1;
  justify-content: center;
  margin-top: .5rem;
}
.fb-public-pagination .page{
  border-radius: 999px;
  padding: .45rem .85rem;
}

/* Blog index polish — spacing + hierarchy */
.fb-public-blog{ gap: 2.6rem 2rem; max-width: 1160px; }

.fb-public-blog .post{
  padding: 0; background: transparent; border: 0; /* kill boxy card feel */
}

.fb-public-blog .thumb{ margin: 0 0 1rem; }
.fb-public-blog .thumb img{
  aspect-ratio: 16/10; object-fit: cover;
  border: 1px solid #e5e7eb; border-radius: 12px;
  box-shadow: 0 10px 22px rgba(0,0,0,.04);
}

/* categories line (we’ll output via PHP in Step B) */
.fb-public-blog .cats{
  font-variant-caps: small-caps;
  letter-spacing: .08em;
  font-size: .84rem;
  color: #8b6b3e;
  margin: .1rem 0 .35rem;
}

/* title / meta / excerpt rhythm */
.fb-public-blog h2{ font-size: 1.7rem; line-height: 1.22; margin: .1rem 0 .35rem; }
.fb-public-blog .meta{ font-style: italic; opacity:.75; margin-bottom: .6rem; }
.fb-public-blog .excerpt{ -webkit-line-clamp: 3; }

/* centre pagination and make pills a touch airier */
.fb-public-pagination{ justify-content: center; margin-top: .75rem; }
.fb-public-pagination .page{ padding: .5rem 1rem; border-radius: 999px; }

.fb-public-blog .more { margin-top: .55rem; }
.fb-public-blog .more a { text-decoration: none; border-bottom: 1px solid currentColor; }
.fb-public-blog .more a:hover { opacity: .85; }


/* BLOG INDEX – final polish */
.fb-public-blog{
  gap: 2.6rem 2rem;        /* a touch more breathing room */
  max-width: 1160px;
}
.fb-public-blog h2{
  font-size: 1.55rem;      /* slightly smaller than before */
  line-height: 1.22;
  margin: .1rem 0 .3rem;
}
.fb-public-blog .excerpt{
  line-height: 1.7;        /* easier reading */
  max-width: 62ch;         /* visually tidy line length */
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
/* Read–more pill */
.fb-public-blog .more{ margin-top: .55rem; }
.fb-public-blog .more a{
  display:inline-block;
  padding:.5rem .95rem;
  border:1px solid #7C9483;   /* warm, elegant edge */
  border-radius:0px;
  text-decoration:none;
  text-transform:uppercase;
  letter-spacing:.06em;
  font-size:.88rem;
  background:#AFCCB7;
}
.fb-public-blog .more a:hover{ background:#CCE8D5; }

/* Pagination nudge to match the pill look */
.fb-public-pagination{ justify-content:center; margin-top:.9rem; }
.fb-public-pagination .page{ padding:.5rem 1rem; border-radius:999px; }


/* SINGLE POST – final layout */
.single-post{ max-width:760px; margin:0 auto 4rem; }
.single-post__head{ text-align:center; margin:.6rem 0 1.1rem; }
.single-post__cats{
  font-variant-caps: small-caps;
  letter-spacing:.08em;
  color:#8b6b3e; font-size:.9rem; margin-bottom:.25rem;
}
.single-post__title{
  font-size: clamp(1.9rem,1.3rem + 1.8vw,2.6rem);
  line-height:1.15; margin:.1rem 0 .35rem;
}
.single-post__meta{ font-style:italic; opacity:.8; margin-bottom:.8rem; }

.single-post__hero{ margin:0 0 1.1rem; }
.single-post__hero img{
  width:100%; height:auto; border-radius:12px;
  border:1px solid #e5e7eb; box-shadow:0 10px 22px rgba(0,0,0,.04);
}

/* Drop cap for opening paragraph */
.single-post__body > p:first-of-type::first-letter{
  float:left; font-size:3.2rem; line-height:.9;
  padding:.12rem .4rem .1rem 0; font-weight:600; color:#1e6a5f;
}
.single-post__body p{ line-height:1.75; }
.single-post__body img{ max-width:100%; height:auto; border-radius:8px; }


/* Single – softer title + nicer reading rhythm */
.single-post__title{
  font-size: clamp(1.9rem,1.3rem + 1.8vw,2.6rem);
  line-height: 1.15;
  font-weight: 500;           /* was heavier; soften */
  color: #1e6a5f;             /* still brandy, a touch calmer */
  letter-spacing: .01em;
  margin: .1rem 0 .35rem;
}
.single-post__body p{
  font-size: 1.02rem;         /* just a hair larger */
  line-height: 1.8;           /* more air for long paragraphs */
  /*max-width: 68ch;  */          /* comfortable measure */
}


