/* ============================================================
   The View from Everywhere

   Typography:
     Display / headings — Newsreader (elegant editorial serif)
     Body / nav / meta  — Lora (oldstyle serif)
   ============================================================ */

/* --- Skip-to-content link ---------------------------------- */
.skip-link {
  position: absolute;
  top: -100px;
  left: 16px;
  z-index: 9999;
  padding: 8px 16px;
  background: #111;
  color: #fff;
  font-family: 'Lora', Georgia, serif;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-decoration: none;
  transition: top 0.1s;
}
.skip-link:focus { top: 8px; }

/* --- Reset ------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 16px; }
body {
  font-family: 'Lora', Georgia, 'Times New Roman', serif;
  font-size: 16px;
  line-height: 1.6;
  background: #fff;
  color: #212121;           /* rgb(33,33,33) — exact Squarespace body color */
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img, picture { display: block; width: 100%; height: auto; }
picture img { width: 100%; height: auto; }

/* --- Body scroll lock (lightbox open) ---------------------- */
body.lb-open { overflow: hidden; }

/* --- Site header ------------------------------------------ */
.site-header {
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 200;
  background: transparent;
  border-bottom: 1px solid transparent;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 30px 18px;
  box-sizing: border-box;
  transition: background 0.3s ease, border-color 0.3s ease, padding 0.3s ease;
}

/* Pinned: solid background after scrolling */
.site-header.header-scrolled {
  background: rgba(255,255,255,0.97);
  border-bottom-color: rgba(0,0,0,0.05);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  padding: 14px 18px;
}

.site-nav-primary {
  display: flex;
  align-items: center;
  gap: 0;                       /* padding on each link handles spacing */
  justify-content: center;
}

/* Secondary nav (Instagram, About) — right column */
.site-nav-secondary {
  display: flex;
  align-items: center;
  gap: 0;
  justify-content: flex-end;
}

/* All header nav links default to white (over hero/cards) */
.site-header nav a {
  font-family: 'Lora', Georgia, serif;
  font-size: 14px;              /* exact: 14px */
  line-height: 14px;            /* exact: 1:1 — no extra leading */
  font-weight: 500;             /* exact: 500 */
  letter-spacing: 0.7px;        /* exact: 0.7px */
  text-transform: uppercase;
  padding: 8.652px;             /* exact: 8.652px all sides (0.618em @ 14px) */
  color: rgba(255,255,255,0.80);
  transition: color 0.2s;
}
.site-header nav a:hover,
.site-header nav a.nav-active { color: #fff; }

/* Pinned: dark nav text */
.site-header.header-scrolled nav a            { color: #888; }
.site-header.header-scrolled nav a:hover,
.site-header.header-scrolled nav a.nav-active { color: #111; }

.site-title {
  font-family: 'Newsreader', Georgia, serif;
  font-optical-sizing: auto;
  font-size: 28px;
  font-weight: 600;
  letter-spacing: normal;
  line-height: 1em;
  white-space: nowrap;
  color: #fff;
  text-align: left;
  transition: color 0.3s ease, font-size 0.3s ease, font-weight 0.3s ease;
}
.site-title a { color: inherit; }

/* Pinned: compact wordmark */
.site-header.header-scrolled .site-title {
  color: #111;
  font-size: 18px;
  font-weight: 400;
}

/* --- Blog grid: 3-column base, alternating 2/3–1/3 pattern --------- */
/*
   6-card repeating cycle:
   Group A (6n+1, 6n+2, 6n+3): wide LEFT  (cols 1-2, row-span 2) + narrow RIGHT x2 (col 3)
   Group B (6n+4, 6n+5, 6n+6): narrow LEFT x2 (col 1) + wide RIGHT (cols 2-3, row-span 2)

   Height alignment strategy:
   - Narrow cards: aspect-ratio:3/2 on .blog-card gives the grid a definite height
     for auto row-sizing. Picture is position:absolute to fill this definite area.
   - Wide cards: grid-row:span 2 — height = (2 × narrow row height) + gap.
     aspect-ratio:unset; picture position:absolute fills the spanning area.
   - Because .blog-card has a definite height (either from aspect-ratio or grid span),
     position:absolute; inset:0 on picture always resolves correctly.
*/
.blog-list {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-auto-flow: dense;
  gap: 34px;               /* between-cell only — no outer edge padding */
  padding: 0;
}

.blog-card {
  display: block;
  background: #111;
  overflow: hidden;
  cursor: pointer;
  line-height: 0;
  aspect-ratio: 3 / 2;   /* narrow cards: gives grid a definite row height */
}
.blog-card[hidden] { display: none; }

/* Grid placement owned by JavaScript (see app.js).
   Wide cards (JS adds .blog-card--wide) get a scaled-up title. */
.blog-card--wide .blog-card-title { font-size: clamp(40px, 4vw, 64px); }

/* Inner wrapper fills the content box (inside the 34px padding).
   All image/overlay/body content clips here, not at the card edge. */
.blog-card-inner {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #111;
}

.blog-card picture {
  display: block;
  position: absolute;
  inset: 0;
}
.blog-card picture img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: opacity 0.4s ease;
}
.blog-card:hover picture img { opacity: 0.88; }

.blog-card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(0,0,0,0.72) 0%,
    rgba(0,0,0,0.28) 44%,
    rgba(0,0,0,0)    68%
  );
  pointer-events: none;
}

.blog-card-body {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
  text-align: center;
  padding: 60px;
  color: #fff;
  line-height: normal;
}

/* Category label — italic, sits above the title */
.blog-card-category {
  font-family: 'Lora', Georgia, serif;
  font-size: 20px;
  font-weight: 500;
  font-style: italic;
  line-height: 24px;
  letter-spacing: normal;
  color: #fff;
  margin-bottom: 6px;
}

/* Card title — 32px matches Squarespace's base packed-layout title */
.blog-card-title {
  font-family: 'Newsreader', Georgia, serif;
  font-optical-sizing: auto;
  font-size: 32px;
  font-weight: 400;
  letter-spacing: normal;
  line-height: 1.1;
  color: #fff;
  text-shadow: 0 2px 16px rgba(0,0,0,0.5);
}

/* Tagline/excerpt */
.blog-card-tagline {
  font-family: 'Lora', Georgia, serif;
  font-size: 20px;
  font-weight: 500;
  font-style: normal;
  line-height: 24px;
  letter-spacing: normal;
  color: #fff;
  margin-top: 10px;
}

/* Date — uppercase, below title/excerpt */
.blog-card-date {
  font-family: 'Lora', Georgia, serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 24px;
  text-transform: uppercase;
  letter-spacing: 0.16px;
  color: #fff;
  margin-top: 10px;
}

/* ============================================================
   Post page
   ============================================================ */

/* Hero */
.post-hero {
  position: relative;
  width: 100%;
  height: 100vh;
  overflow: hidden;
  background: #111;
}
.post-hero picture,
.post-hero picture img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.post-hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(0,0,0,0.72) 0%,
    rgba(0,0,0,0.18) 45%,
    rgba(0,0,0,0)    68%
  );
}
/*
   Post hero body — mirrors .Blog-header-content on post page.
   Squarespace uses position:relative (in-flow), but our absolute
   overlay achieves identical visual output.
   Padding/flex values are exact matches from DevTools.
*/
.post-hero-body {
  position: absolute;
  inset: 0;                      /* fill full hero area */
  display: flex;
  flex-direction: column;
  justify-content: flex-end;     /* exact: flex-end */
  align-items: center;           /* exact: center */
  padding: 60px;                 /* exact: 60px uniform */
  color: #fff;
}

/* .Blog-meta--top: category · author · date above the title
   font: 500 20px/24px; color:#fff; letter-spacing: normal; text-transform: none */
.post-hero-category {
  font-family: 'Lora', Georgia, serif;
  font-size: 20px;               /* exact: 20px */
  font-weight: 500;              /* exact: 500 */
  line-height: 24px;             /* exact: 24px */
  letter-spacing: normal;        /* exact: normal */
  text-transform: none;          /* exact: none */
  color: #fff;                   /* exact: rgb(255,255,255) */
  margin-bottom: 10px;
  text-decoration: none;
}
a.post-hero-category:hover { opacity: 0.75; }

/* Post hero title — h1 equivalent of .Blog-title
   font-size: 7.92vw (= 100px at 1262px); weight 400; line-height 1 */
.post-hero-title {
  font-family: 'Newsreader', Georgia, serif;
  font-optical-sizing: auto;
  font-size: clamp(36px, 5vw, 72px);
  font-weight: 400;              /* exact: 400 */
  letter-spacing: normal;        /* exact: normal */
  line-height: 1;                /* exact: 1:1 tight leading */
  color: #fff;
  text-shadow: 0 2px 24px rgba(0,0,0,0.45);
}

/* Date shown separately below title in our layout */
.post-hero-date {
  font-family: 'Lora', Georgia, serif;
  font-size: 20px;               /* match .Blog-meta--top register */
  font-weight: 500;
  line-height: 24px;
  letter-spacing: normal;
  color: #fff;
  margin-top: 14px;
}

/* Category tag bar — sits between hero and post content */
.post-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  padding: 20px 32px 4px;
}
.post-tag {
  display: inline-block;
  font-family: 'Lora', Georgia, serif;
  font-size: 9px;
  font-weight: 400;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #666;
  border: 1px solid rgba(0,0,0,0.18);
  padding: 5px 14px;
  transition: color 0.15s, border-color 0.15s;
}
.post-tag:hover {
  color: #111;
  border-color: rgba(0,0,0,0.5);
}

/* Post text blocks — inner reading column */
.post-lede,
.post-text {
  max-width: 700px;
  margin: 0 auto;
  padding: 32px 32px 12px;
}
/* Subsequent blocks — don't repeat the 60px top gap */
.post-lede + .post-text,
.post-text + .post-text { padding-top: 0; }

/* Lede: first paragraph of blog post */
.post-lede p {
  font-family: 'Lora', Georgia, serif;
  font-size: 20px;              /* exact: 20px */
  font-weight: 500;             /* exact: 500 */
  line-height: 30px;            /* exact: 30px (1.5 ratio) */
  color: #000;                  /* exact: rgb(0,0,0) */
  margin-bottom: 18px;
}
/* Body copy: 2nd paragraph onward */
.post-text p {
  font-family: 'Lora', Georgia, serif;
  font-size: 16px;              /* exact: 16px */
  font-weight: 400;             /* exact: 400 */
  line-height: 25.6px;          /* exact: 25.6px (1.6 ratio) */
  color: #212121;               /* exact: rgb(33,33,33) */
  margin-bottom: 14px;
}
.post-lede p:last-child,
.post-text p:last-child { margin-bottom: 0; }

.post-lede a,
.post-text a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-color: rgba(0,0,0,0.28);
  transition: text-decoration-color 0.15s;
}
.post-lede a:hover,
.post-text a:hover { text-decoration-color: currentColor; }

/*
   Gallery blocks
   Squarespace at 1262×670px:
   - Each block: padding 17px all sides (first block gets padding-top: 0)
   - H gap between images: 20px (margin-right on .margin-wrapper)
   - V gap between gallery blocks (rows): 17px bottom + 17px top = 34px
*/
.gallery-block {
  display: grid;
  gap: 20px;                     /* exact: 20px H gap between images */
  padding: 17px;                 /* exact: 17px all sides */
}
.gallery-block.columns-2 { grid-template-columns: repeat(2, 1fr); }
.gallery-block.columns-1 {
  grid-template-columns: 1fr;
  max-width: 900px;
  margin-left: auto;
  margin-right: auto;
}

/* First gallery after text: no extra top padding (60px from wrapper is enough) */
.post-lede + .gallery-block,
.post-text  + .gallery-block { padding-top: 0; }

/* Consecutive galleries: 17px bottom + 17px top = 34px row gap */
.gallery-block + .gallery-block { padding-top: 17px; }

/* Portrait/vertical galleries: force uniform crop so pairs align */
.gallery-block.aspect-vertical .gallery-item picture img,
.gallery-block.aspect-vertical .gallery-item img {
  aspect-ratio: 2 / 3;
  object-fit: cover;
  height: auto;
}

.gallery-item {
  appearance: none;
  -webkit-appearance: none;
  background: transparent;
  border: 0;
  padding: 0;
  box-shadow: none;
  cursor: zoom-in;
  overflow: hidden;
  display: block;
  width: 100%;
  line-height: 0;
}
.gallery-item picture { display: block; }
.gallery-item picture img,
.gallery-item img {
  width: 100%;
  height: auto;
  display: block;
  transition: opacity 0.3s ease;
}
.gallery-item:hover picture img,
.gallery-item:hover img { opacity: 0.88; }
.gallery-item:focus-visible {
  outline: 2px solid rgba(255,255,255,0.7);
  outline-offset: 2px;
}

/*
   Related posts — .BlogItem-related
   Squarespace at 1262×670px:
   - wrapper: padding 0 40px 36px, no border-top
   - heading (.BlogItem-related-label): 28px/100-weight/1.4px tracking/rgb(166,166,166)/jubilat
   - 2 cards side by side, 34px gap between them
   - card title: 4.17vw = same as half-width grid cards
*/
.related-posts {
  padding: 0 40px 36px;          /* exact: 0 top, 40px sides, 36px bottom */
  margin-top: 0;
  border-top: none;              /* exact: no border */
}
.related-posts-heading {
  font-family: 'Newsreader', Georgia, serif; /* sub for jubilat */
  font-optical-sizing: auto;
  font-size: 28px;               /* exact: 28px */
  font-weight: 100;              /* exact: 100 (extra-thin) */
  letter-spacing: 1.4px;         /* exact: 1.4px */
  color: rgb(166, 166, 166);     /* exact: rgb(166,166,166) */
  text-transform: none;          /* exact: none */
  line-height: 33.6px;           /* exact: 33.6px (1.2 ratio) */
  text-align: center;
  margin-bottom: 23.24px;        /* exact: 23.24px */
  font-style: normal;
}
.related-posts-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* 6 cards in 2 rows of 3 */
  gap: 34px;                     /* exact: 34px between cards */
  max-width: 1440px;
  margin: 0 auto;
}
.related-card {
  display: block;
  position: relative;
  overflow: hidden;
  background: #111;
  cursor: pointer;
}
.related-card picture,
.related-card picture img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  display: block;
  transition: opacity 0.35s ease;
}
.related-card:hover picture img { opacity: 0.82; }
.related-card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0) 60%);
  pointer-events: none;
}
/* Related card body — identical structure to homepage grid cards */
.related-card-body {
  position: absolute;
  inset: 0;                      /* fill card — same as .blog-card-body */
  display: flex;
  flex-direction: column;
  justify-content: flex-end;     /* exact: flex-end */
  align-items: center;           /* exact: center */
  padding: 60px;                 /* exact: 60px uniform */
  color: #fff;
}
/* Related cards use the same half-width title size as grid cards */
.related-card-title {
  font-family: 'Newsreader', Georgia, serif;
  font-optical-sizing: auto;
  font-size: 4.17vw;             /* exact: same as half-width grid card */
  font-weight: 400;              /* exact: 400 */
  letter-spacing: normal;        /* exact: normal */
  line-height: 1;                /* exact: 1:1 */
  color: #fff;
  text-shadow: 0 2px 16px rgba(0,0,0,0.5);
}
/* Category label — equivalent of .Blog-excerpt p on related cards:
   20px / 500 / 24px / #fff (exact from DevTools) */
.related-card-category {
  font-family: 'Lora', Georgia, serif;
  font-size: 20px;               /* exact: 20px */
  font-weight: 500;              /* exact: 500 */
  font-style: normal;
  line-height: 24px;             /* exact: 24px */
  letter-spacing: normal;
  color: #fff;
  margin-top: 10px;
  order: 2;                      /* renders below title — matches Squarespace excerpt position */
}

/* ============================================================
   Lightbox
   ============================================================ */
.lightbox {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 1000;
  background: rgba(0,0,0,0.96);
  align-items: center;
  justify-content: center;
}
.lightbox.open { display: flex; }
.lightbox[hidden] { display: none !important; }

.lightbox-img-wrap {
  max-width: 90vw;
  max-height: 90vh;
  display: flex;
  align-items: center;
  justify-content: center;
}
.lightbox-img-wrap img {
  max-width: 90vw;
  max-height: 90vh;
  object-fit: contain;
  display: block;
  width: auto;
  height: auto;
}
.lightbox-btn {
  position: fixed;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  color: rgba(255,255,255,0.50);
  font-family: 'Lora', Georgia, serif;
  font-size: 52px;
  cursor: pointer;
  padding: 16px 22px;
  line-height: 1;
  z-index: 1001;
  transition: color 0.2s;
  user-select: none;
}
.lightbox-btn:hover { color: #fff; }
.lightbox-prev { left: 0; }
.lightbox-next { right: 0; }
.lightbox-close {
  position: fixed;
  top: 16px;
  right: 20px;
  background: none;
  border: none;
  color: rgba(255,255,255,0.50);
  font-size: 32px;
  cursor: pointer;
  z-index: 1001;
  line-height: 1;
  padding: 8px;
  transition: color 0.2s;
}
.lightbox-close:hover { color: #fff; }
.lightbox-count {
  position: fixed;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  font-family: 'Lora', Georgia, serif;
  font-size: 11px;
  letter-spacing: 0.14em;
  color: rgba(255,255,255,0.38);
  z-index: 1001;
}

/* ============================================================
   Static pages (Our Story, Contact)
   ============================================================ */
.page-photo {
  width: 100%;
  max-height: 80vh;
  overflow: hidden;
  background: #eee;
}
.page-photo img,
.page-photo picture,
.page-photo picture img {
  width: 100%;
  height: auto;
  display: block;
  max-height: 80vh;
  object-fit: cover;
  object-position: center top;
}
.page-photo-caption {
  text-align: center;
  font-family: 'Lora', Georgia, serif;
  font-size: 11px;
  letter-spacing: 0.08em;
  color: #999;
  padding: 10px 0 0;
  font-style: italic;
}

.page-body {
  max-width: 680px;
  margin: 0 auto;
  padding: 64px 32px 80px;
}
.page-body--contact { padding-top: 120px; } /* clears 54px title + 2×30px header padding */

.page-heading {
  font-family: 'Newsreader', Georgia, serif;
  font-optical-sizing: auto;
  font-size: 26px;
  font-weight: 400;
  line-height: 1.4;
  color: #111;
  margin-bottom: 28px;
}
.page-heading--lower {
  margin-top: 48px;
  font-size: 18px;
}

.page-text {
  font-family: 'Lora', Georgia, serif;
  font-size: 16px;
  line-height: 1.78;
  color: #333;
  letter-spacing: 0.01em;
  margin-bottom: 20px;
}

.page-quote {
  font-family: 'Lora', Georgia, serif;
  font-size: 16px;
  font-style: italic;
  line-height: 1.78;
  color: #555;
  border-left: 2px solid rgba(0,0,0,0.1);
  padding-left: 20px;
  margin-top: 8px;
}

/* Contact form */
.contact-form {
  margin-top: 40px;
  display: flex;
  flex-direction: column;
  gap: 28px;
}
.contact-field {
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.contact-field label {
  font-family: 'Lora', Georgia, serif;
  font-size: 9px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #888;
}
.contact-field input,
.contact-field textarea {
  font-family: 'Lora', Georgia, serif;
  font-size: 16px;
  color: #222;
  border: none;
  border-bottom: 1px solid rgba(0,0,0,0.18);
  padding: 8px 0;
  background: transparent;
  outline: none;
  width: 100%;
  transition: border-color 0.2s;
  resize: vertical;
}
.contact-field input:focus,
.contact-field textarea:focus { border-bottom-color: #111; }
.contact-field input::placeholder,
.contact-field textarea::placeholder { color: #bbb; }

.contact-submit {
  align-self: flex-start;
  margin-top: 4px;
  padding: 12px 36px;
  background: #111;
  color: #fff;
  border: none;
  font-family: 'Lora', Georgia, serif;
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background 0.2s;
}
.contact-submit:hover { background: #333; }

.contact-mailto {
  margin-top: 32px;
}
.contact-mailto a {
  font-family: 'Newsreader', Georgia, serif;
  font-optical-sizing: auto;
  font-size: 20px;
  font-weight: 400;
  color: #111;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ============================================================
   Back-to-top button
   ============================================================ */
.back-to-top {
  position: fixed;
  bottom: 28px;
  right: 28px;
  z-index: 500;
  width: 40px;
  height: 40px;
  background: rgba(17,17,17,0.82);
  color: #fff;
  border: none;
  border-radius: 50%;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s, background 0.2s;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.back-to-top.visible {
  opacity: 1;
  pointer-events: auto;
}
.back-to-top[hidden] { display: none; }
.back-to-top:hover { background: rgba(17,17,17,1); }

/* ============================================================
   Footer
   Squarespace computed at 1262×670px:
   wrapper: 34px padding top/bottom, 40px sides, white bg, no border-top
   nav links: 15px/400/0.75px tracking/uppercase/#111, margin 0 7.5px
   quote: 16px/400/25.6px lh/0.32px tracking/centered/black, em=italic
   gap nav→quote: 34px (margin-top matching padding-top)
   ============================================================ */
.site-footer {
  padding: 34px 40px;            /* exact: 34px top/bottom, 40px sides */
  background-color: #fff;        /* exact: rgb(255,255,255) */
  border-top: none;              /* exact: no border on footer itself */
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;                        /* gap handled by margin-top on quote block */
}
.site-footer nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  text-align: center;            /* exact: text-align center */
}
.site-footer nav a {
  font-family: 'Lora', Georgia, serif;
  font-size: 15px;               /* exact: 15px */
  font-weight: 400;              /* exact: 400 */
  line-height: 15px;             /* exact: 1:1 tight */
  letter-spacing: 0.75px;        /* exact: 0.75px */
  text-transform: uppercase;     /* exact: uppercase */
  color: rgb(17, 17, 17);        /* exact: rgb(17,17,17) */
  font-style: normal;            /* exact: normal */
  margin: 0 7.5px;               /* exact: 7.5px left + right = 15px between links */
  transition: color 0.15s;
}
.site-footer nav a:hover { color: #000; }

.footer-quote {
  font-family: 'Lora', Georgia, serif;
  font-size: 16px;               /* exact: 16px */
  font-weight: 400;              /* exact: 400 */
  line-height: 25.6px;           /* exact: 25.6px (1.6 ratio) */
  letter-spacing: 0.32px;        /* exact: 0.32px */
  color: #000;                   /* exact: rgb(0,0,0) */
  text-align: center;            /* exact: center */
  font-style: normal;            /* italic lives on the <em> inside, not the p */
  margin-top: 34px;              /* exact: 34px gap between nav and quote */
  max-width: 640px;
}
.footer-quote em { font-style: italic; } /* exact: italic on <em> child */

/* ============================================================
   Mobile header
   ============================================================ */
.mobile-bar {
  display: none;
  position: sticky;
  top: 0;
  z-index: 200;
  background: #fff;
  border-bottom: 1px solid rgba(0,0,0,0.07);
  height: 52px;
  align-items: center;
  justify-content: space-between;
  padding: 0 18px;
}
.mobile-title {
  font-family: 'Newsreader', Georgia, serif;
  font-optical-sizing: auto;
  font-size: 14px;
  font-weight: 400;
  color: #111;
}
.mobile-title a { color: inherit; }
.mobile-ig {
  font-family: 'Lora', Georgia, serif;
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #666;
  /* Meet Apple 44pt minimum tap target */
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
}
.mobile-menu-btn {
  background: none;
  border: none;
  cursor: pointer;
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.mobile-menu-btn span {
  display: block;
  width: 20px;
  height: 1px;
  background: #333;
}

.mobile-nav {
  display: flex;
  flex-direction: column;
  background: #fff;
  border-bottom: 1px solid rgba(0,0,0,0.07);
  padding: 12px 20px 20px;
}
.mobile-nav[hidden] { display: none; }
.mobile-nav a {
  font-family: 'Lora', Georgia, serif;
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #555;
  padding: 10px 0;
  border-bottom: 1px solid rgba(0,0,0,0.06);
}
.mobile-nav a:last-child { border-bottom: none; }

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 700px) {
  .site-header { display: none; }
  .mobile-bar  { display: flex; }

  .blog-list {
    grid-template-columns: 1fr;
    gap: 0;
    padding: 0;
  }
  /* Reset all explicit column/row placements — single column on mobile */
  .blog-card:nth-child(6n+1),
  .blog-card:nth-child(6n+2),
  .blog-card:nth-child(6n+3),
  .blog-card:nth-child(6n+4),
  .blog-card:nth-child(6n+5),
  .blog-card:nth-child(6n+6) {
    grid-column: auto;
    grid-row: auto;
    aspect-ratio: 3 / 2;
  }
  /* All card titles same size on single-column mobile */
  .blog-card-title,
  .blog-card--wide .blog-card-title { font-size: 28px; }
  .blog-card-body { padding: 32px 24px; }
  .blog-card-tagline { font-size: 16px; line-height: 20px; }

  .post-hero-title { font-size: 42px; }
  .post-hero-body  { padding: 32px 24px; }
  .post-hero-title { font-size: clamp(36px, 10vw, 64px); }
  .post-hero-category,
  .post-hero-date  { font-size: 15px; line-height: 20px; }

  .post-lede,
  .post-text { padding: 28px 20px 8px; }
  .post-lede p { font-size: 17px; }

  .gallery-block         { padding: 16px 12px; gap: 8px; }
  .gallery-block.columns-2 { gap: 6px; }

  .related-posts-grid { grid-template-columns: repeat(2, 1fr); gap: 16px; }
  .related-posts      { padding: 0 20px 36px; }
  .related-card-title { font-size: clamp(24px, 8vw, 36px); }
  .related-card-body  { padding: 32px 24px; }

  .page-body    { padding: 40px 20px 60px; }
  .page-heading { font-size: 22px; }

  .site-footer { padding: 40px 20px; }

  .back-to-top { bottom: 16px; right: 16px; width: 36px; height: 36px; }
}


/* ============================================================
   Dark mode
   ============================================================ */
@media (prefers-color-scheme: dark) {
  body {
    background: #121212;
    color: #e0e0e0;
  }

  /* Header — transparent until scrolled */
  .site-header { background: transparent; border-bottom-color: transparent; }

  /* Pinned: dark background */
  .site-header.header-scrolled {
    background: rgba(18,18,18,0.97);
    border-bottom-color: rgba(255,255,255,0.07);
  }
  .site-header.header-scrolled nav a        { color: #888; }
  .site-header.header-scrolled nav a:hover,
  .site-header.header-scrolled nav a.nav-active { color: #e0e0e0; }
  .site-header.header-scrolled .site-title  { color: #e0e0e0; }

  /* Mobile header */
  .mobile-bar {
    background: #121212;
    border-bottom-color: rgba(255,255,255,0.07);
  }
  .mobile-title a { color: #e0e0e0; }
  .mobile-ig      { color: #888; }
  .mobile-menu-btn span { background: #ccc; }
  .mobile-nav {
    background: #121212;
    border-bottom-color: rgba(255,255,255,0.07);
  }
  .mobile-nav a { color: #999; border-bottom-color: rgba(255,255,255,0.06); }

  /* Homepage cards — already dark-background, no change needed */

  /* Skip link */
  .skip-link { background: #e0e0e0; color: #121212; }

  /* Tag bar */
  .post-tag {
    color: #bbb;
    border-color: rgba(255,255,255,0.2);
  }
  .post-tag:hover { color: #fff; border-color: rgba(255,255,255,0.55); }

  /* Post body text */
  .post-lede p,
  .post-text p  { color: #d0d0d0; }

  .post-lede a,
  .post-text a  { text-decoration-color: rgba(255,255,255,0.3); }
  .post-lede a:hover,
  .post-text a:hover { text-decoration-color: currentColor; }

  /* Related posts */
  .related-posts-heading { color: #555; }

  /* Footer */
  .site-footer  { background-color: #121212; border-top: 1px solid rgba(255,255,255,0.08); }
  .site-footer nav a  { color: #777; }
  .site-footer nav a:hover { color: #e0e0e0; }
  .footer-quote { color: #888; }

  /* Static pages */
  .page-heading  { color: #e0e0e0; }
  .page-text     { color: #c0c0c0; }
  .page-quote    {
    color: #888;
    border-left-color: rgba(255,255,255,0.12);
  }

  /* Contact form */
  .contact-field label { color: #777; }
  .contact-field input,
  .contact-field textarea {
    color: #e0e0e0;
    border-bottom-color: rgba(255,255,255,0.18);
  }
  .contact-field input:focus,
  .contact-field textarea:focus { border-bottom-color: #e0e0e0; }
  .contact-field input::placeholder,
  .contact-field textarea::placeholder { color: #555; }
  .contact-submit {
    background: #e0e0e0;
    color: #121212;
  }
  .contact-submit:hover { background: #fff; }
  .contact-mailto a { color: #e0e0e0; }

  /* Back-to-top */
  .back-to-top {
    background: rgba(224,224,224,0.15);
    color: #e0e0e0;
  }
  .back-to-top:hover { background: rgba(224,224,224,0.28); }
}
