/*
Theme Name: Lantern
Author: BMLT Enabled
Author URI: https://bmlt.app
Description: Lantern is an editorial-style WordPress theme for non-profit community sites. It pairs a warm typographic system with first-class support for the BMLT plugin family. Configure your organisation details, helpline, and palette from Appearance → Customize.
Version: 1.0.2
Requires at least: 6.4
Tested up to: 7.0
Requires PHP: 7.4
License: GPL v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: lantern
Tags: block-styles, custom-colors, custom-logo, custom-menu, editor-style, featured-images, footer-widgets, full-width-template, theme-options, threaded-comments, translation-ready, wide-blocks

Lantern WordPress Theme, (C) 2026 BMLT Enabled
Lantern is distributed under the terms of the GNU GPL v2 or later.

------------------------------------------------------------
Resources / Credits
------------------------------------------------------------
Fonts:
  - Fraunces — SIL Open Font License v1.1 — https://fonts.google.com/specimen/Fraunces
  - Instrument Sans — SIL Open Font License v1.1 — https://fonts.google.com/specimen/Instrument+Sans

Screenshot:
  Original composition by the theme author; all imagery is GPL-compatible.

This theme bundles no third-party code other than the WordPress APIs it
depends on. See readme.txt for plugin-integration details.
*/

/* ============================================================
   Lantern — Design Tokens
   A warm editorial palette designed to feel grounded, hopeful,
   and unmistakably not-corporate. Override any token via the
   Customizer (Customize → Branding) or via theme.json.
   ============================================================ */

:root {
    /* Surfaces */
    --lantern-paper: #f7f1e6;            /* warm parchment */
    --lantern-paper-deep: #efe6d3;       /* darker paper for sections */
    --lantern-ink: #1a2538;              /* deep ink navy */
    --lantern-ink-soft: #2c3a52;
    --lantern-ink-faint: rgba(26, 37, 56, 0.62);
    --lantern-ink-line: rgba(26, 37, 56, 0.16);
    --lantern-ink-hair: rgba(26, 37, 56, 0.08);

    /* Accents */
    --lantern-ember: #c7572b;            /* terracotta — primary action */
    --lantern-ember-deep: #9d3e1a;
    --lantern-sage: #5d7561;             /* sage — secondary */
    --lantern-sand: #d9c79a;             /* light highlight */
    --lantern-gold: #b7892b;             /* underline / mark */

    /* Type */
    --lantern-display: "Fraunces", "Iowan Old Style", "Hoefler Text", Georgia, serif;
    --lantern-body: "Instrument Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
    --lantern-mono: "JetBrains Mono", "SF Mono", ui-monospace, monospace;

    /* Scale */
    --lantern-step--2: clamp(0.74rem, 0.71rem + 0.13vw, 0.81rem);
    --lantern-step--1: clamp(0.83rem, 0.79rem + 0.20vw, 0.94rem);
    --lantern-step-0:  clamp(0.95rem, 0.90rem + 0.27vw, 1.06rem);
    --lantern-step-1:  clamp(1.10rem, 1.02rem + 0.42vw, 1.31rem);
    --lantern-step-2:  clamp(1.32rem, 1.18rem + 0.74vw, 1.69rem);
    --lantern-step-3:  clamp(1.65rem, 1.40rem + 1.27vw, 2.28rem);
    --lantern-step-4:  clamp(2.10rem, 1.71rem + 1.94vw, 3.05rem);
    --lantern-step-5:  clamp(2.74rem, 2.08rem + 3.28vw, 4.40rem);
    --lantern-step-6:  clamp(3.50rem, 2.40rem + 5.50vw, 6.50rem);

    /* Rhythm */
    --lantern-shell: 1240px;
    --lantern-shell-narrow: 760px;
    --lantern-shell-wide: 1480px;
    --lantern-gutter: clamp(1.25rem, 0.6rem + 2.5vw, 3rem);
    --lantern-section-y: clamp(4rem, 2.4rem + 6vw, 8rem);

    /* Misc */
    --lantern-radius: 4px;
    --lantern-radius-lg: 18px;
    --lantern-ease: cubic-bezier(0.2, 0.6, 0.2, 1);
}

/* ============================================================
   Base / reset
   ============================================================ */

*, *::before, *::after { box-sizing: border-box; }

html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
    scroll-behavior: smooth;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    margin: 0;
    font-family: var(--lantern-body);
    font-size: var(--lantern-step-0);
    line-height: 1.65;
    color: var(--lantern-ink);
    background: var(--lantern-paper);
    background-image:
        radial-gradient(at 8% 12%, rgba(199, 87, 43, 0.05) 0, transparent 42%),
        radial-gradient(at 92% 88%, rgba(93, 117, 97, 0.06) 0, transparent 50%);
    background-attachment: fixed;
    text-rendering: optimizeLegibility;
    overflow-x: clip;
}

/* Subtle paper grain */
body::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    opacity: 0.4;
    mix-blend-mode: multiply;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.10 0 0 0 0 0.14 0 0 0 0 0.22 0 0 0 0.06 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}

a {
    color: var(--lantern-ink);
    text-decoration-thickness: 1px;
    text-underline-offset: 4px;
    transition: color 200ms var(--lantern-ease);
}
a:hover { color: var(--lantern-ember); }

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

::selection { background: var(--lantern-ink); color: var(--lantern-paper); }

/* ============================================================
   Typography
   ============================================================ */

h1, h2, h3, h4, h5, h6, .lantern-display {
    font-family: var(--lantern-display);
    font-weight: 460;
    font-variation-settings: "opsz" 144, "SOFT" 30, "WONK" 0;
    color: var(--lantern-ink);
    line-height: 1.05;
    letter-spacing: -0.02em;
    margin: 0 0 0.5em;
}

h1 { font-size: var(--lantern-step-5); }
h2 { font-size: var(--lantern-step-4); }
h3 { font-size: var(--lantern-step-3); }
h4 { font-size: var(--lantern-step-2); }
h5 { font-size: var(--lantern-step-1); }
h6 { font-size: var(--lantern-step-0); letter-spacing: 0.06em; text-transform: uppercase; font-family: var(--lantern-body); font-weight: 600; }

p { margin: 0 0 1.2em; max-width: 64ch; }

.lantern-eyebrow {
    font-family: var(--lantern-body);
    font-size: var(--lantern-step--1);
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--lantern-ember-deep);
    display: inline-flex;
    align-items: center;
    gap: 0.6em;
    margin-bottom: 1.25rem;
}
.lantern-eyebrow::before {
    content: "";
    width: 28px;
    height: 1px;
    background: currentColor;
    display: inline-block;
}

.lantern-rule {
    border: 0;
    border-top: 1px solid var(--lantern-ink-line);
    margin: 2.5rem 0;
}

blockquote {
    margin: 2.5rem 0;
    padding: 0 0 0 1.5rem;
    border-left: 2px solid var(--lantern-ember);
    font-family: var(--lantern-display);
    font-size: var(--lantern-step-2);
    font-style: italic;
    color: var(--lantern-ink-soft);
    line-height: 1.35;
}
blockquote cite {
    display: block;
    font-family: var(--lantern-body);
    font-style: normal;
    font-size: var(--lantern-step--1);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--lantern-ink-faint);
    margin-top: 1rem;
}

code, kbd, pre, samp { font-family: var(--lantern-mono); font-size: 0.9em; }

/* ============================================================
   Layout primitives
   ============================================================ */

.lantern-shell {
    width: min(100% - (var(--lantern-gutter) * 2), var(--lantern-shell));
    margin-inline: auto;
    position: relative;
    z-index: 1;
}
.lantern-shell--narrow { max-width: var(--lantern-shell-narrow); }
.lantern-shell--wide   { max-width: var(--lantern-shell-wide); }

.lantern-section { padding: var(--lantern-section-y) 0; position: relative; }
.lantern-section + .lantern-section { border-top: 1px solid var(--lantern-ink-hair); }
.lantern-section--deep { background: var(--lantern-paper-deep); }
.lantern-section--ink  { background: var(--lantern-ink); color: var(--lantern-paper); }
.lantern-section--ink h1,
.lantern-section--ink h2,
.lantern-section--ink h3,
.lantern-section--ink h4,
.lantern-section--ink a { color: var(--lantern-paper); }
.lantern-section--ink .lantern-eyebrow { color: var(--lantern-sand); }

/* Skip link */
.skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    padding: 0.75rem 1rem;
    background: var(--lantern-ink);
    color: var(--lantern-paper);
    z-index: 99;
}
.skip-link:focus { left: 1rem; top: 1rem; }

/* ============================================================
   WordPress core classes — required by Theme Check / WP markup.
   Sticky posts, gallery captions, by-post-author highlights, and
   screen-reader-only utility text all need a styled hook.
   ============================================================ */

.screen-reader-text {
    border: 0;
    clip: rect(1px, 1px, 1px, 1px);
    clip-path: inset(50%);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute !important;
    width: 1px;
    word-wrap: normal !important;
}
.screen-reader-text:focus {
    background-color: var(--lantern-paper);
    clip: auto !important;
    clip-path: none;
    color: var(--lantern-ink);
    display: block;
    font-size: 0.875rem;
    font-weight: 600;
    height: auto;
    left: 1rem;
    line-height: 1.4;
    padding: 0.75rem 1rem;
    text-decoration: none;
    top: 1rem;
    width: auto;
    z-index: 100000;
}

.sticky {
    position: relative;
    padding-left: 1rem;
    border-left: 3px solid var(--lantern-ember);
}

.bypostauthor > .comment-body .fn::after {
    content: " · " attr(data-author-label, "author");
    color: var(--lantern-ember);
    font-style: italic;
    font-weight: 600;
}

.gallery-caption {
    display: block;
    font-family: var(--lantern-body);
    font-size: var(--lantern-step--1);
    color: var(--lantern-ink-soft);
    margin-top: 0.5rem;
    line-height: 1.45;
}

/* Alignment utility classes used by WP core / block editor. */
.alignleft   { float: left;  margin: 0 1.5rem 1rem 0; max-width: 100%; }
.alignright  { float: right; margin: 0 0 1rem 1.5rem; max-width: 100%; }
.aligncenter { display: block; margin-left: auto; margin-right: auto; }

/* ============================================================
   Header
   ============================================================ */

.lantern-header {
    position: sticky;
    top: 0;
    z-index: 40;
    background: color-mix(in srgb, var(--lantern-paper) 92%, transparent);
    backdrop-filter: saturate(140%) blur(10px);
    -webkit-backdrop-filter: saturate(140%) blur(10px);
    border-bottom: 1px solid var(--lantern-ink-hair);
}

.lantern-header__inner {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: clamp(1rem, 2vw, 2rem);
    padding: 1rem 0;
}

.lantern-brand {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
    text-decoration: none;
    color: var(--lantern-ink);
    font-family: var(--lantern-display);
    font-weight: 500;
}
.lantern-brand__mark {
    width: 38px;
    height: 38px;
    flex: 0 0 38px;
    display: grid;
    place-items: center;
    color: var(--lantern-paper);
    background: var(--lantern-ink);
    border-radius: 50%;
    font-family: var(--lantern-display);
    font-size: 1.1rem;
    letter-spacing: -0.02em;
}
.lantern-brand__mark img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
.lantern-brand__name {
    font-size: var(--lantern-step-1);
    line-height: 1.05;
    letter-spacing: -0.01em;
}
.lantern-brand__tag {
    display: block;
    font-family: var(--lantern-body);
    font-size: var(--lantern-step--2);
    color: var(--lantern-ink-faint);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    margin-top: 0.15rem;
}

/* Primary nav */
.lantern-nav { justify-self: center; }
.lantern-nav ul {
    display: flex;
    flex-wrap: wrap;
    gap: clamp(0.75rem, 1.6vw, 2rem);
    list-style: none;
    margin: 0;
    padding: 0;
}
.lantern-nav a {
    display: inline-block;
    text-decoration: none;
    font-size: var(--lantern-step--1);
    font-weight: 500;
    letter-spacing: 0.02em;
    padding: 0.4rem 0;
    position: relative;
}
.lantern-nav a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -2px;
    height: 1px;
    background: var(--lantern-ember);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 240ms var(--lantern-ease);
}
.lantern-nav a:hover::after,
.lantern-nav .current-menu-item > a::after,
.lantern-nav .current-menu-ancestor > a::after { transform: scaleX(1); }

.lantern-nav li ul {
    position: absolute;
    display: none;
    background: var(--lantern-paper);
    border: 1px solid var(--lantern-ink-line);
    border-radius: var(--lantern-radius);
    padding: 0.5rem 0;
    min-width: 220px;
    box-shadow: 0 20px 60px -30px rgba(26, 37, 56, 0.35);
    z-index: 10;
    flex-direction: column;
    gap: 0;
}
.lantern-nav li:hover > ul,
.lantern-nav li:focus-within > ul { display: flex; }
.lantern-nav li ul li { width: 100%; }
.lantern-nav li ul a { padding: 0.5rem 1rem; display: block; }
.lantern-nav li ul a::after { display: none; }
.lantern-nav li ul a:hover { background: var(--lantern-paper-deep); }

/* Header CTA */
.lantern-header__cta {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    text-decoration: none;
    font-size: var(--lantern-step--1);
    font-weight: 600;
    color: var(--lantern-ink);
    padding: 0.6rem 1rem 0.6rem 0.8rem;
    border: 1px solid var(--lantern-ink);
    border-radius: 999px;
    transition: background 200ms var(--lantern-ease), color 200ms var(--lantern-ease);
}
.lantern-header__cta:hover { background: var(--lantern-ink); color: var(--lantern-paper); }
.lantern-header__cta__dot {
    width: 8px; height: 8px; border-radius: 50%;
    background: var(--lantern-ember);
    box-shadow: 0 0 0 4px rgba(199, 87, 43, 0.18);
    animation: lantern-pulse 2.4s var(--lantern-ease) infinite;
}
@keyframes lantern-pulse {
    0%, 100% { box-shadow: 0 0 0 4px rgba(199, 87, 43, 0.18); }
    50%      { box-shadow: 0 0 0 8px rgba(199, 87, 43, 0); }
}

/* Mobile nav */
.lantern-burger {
    display: none;
    align-items: center;
    gap: 0.5rem;
    background: transparent;
    border: 1px solid var(--lantern-ink);
    color: var(--lantern-ink);
    padding: 0.55rem 0.85rem;
    border-radius: 999px;
    font-family: var(--lantern-body);
    font-size: var(--lantern-step--1);
    font-weight: 600;
    cursor: pointer;
}
.lantern-burger__bars { display: inline-grid; gap: 4px; }
.lantern-burger__bars span { width: 18px; height: 1.5px; background: currentColor; display: block; }

@media (max-width: 960px) {
    .lantern-header__inner { grid-template-columns: auto 1fr auto; }
    .lantern-nav { display: none; }
    .lantern-burger { display: inline-flex; }
    .lantern-header__cta { display: none; }
    .lantern-nav.is-open {
        display: block;
        position: absolute;
        left: 0; right: 0; top: 100%;
        background: var(--lantern-paper);
        border-bottom: 1px solid var(--lantern-ink-hair);
        padding: 1rem var(--lantern-gutter) 2rem;
    }
    .lantern-nav.is-open ul { flex-direction: column; gap: 0; }
    .lantern-nav.is-open li { border-bottom: 1px solid var(--lantern-ink-hair); }
    .lantern-nav.is-open a { padding: 0.9rem 0; font-size: var(--lantern-step-1); font-family: var(--lantern-display); letter-spacing: -0.01em; }
    .lantern-nav.is-open a::after { display: none; }
    .lantern-nav.is-open li ul { position: static; display: block; box-shadow: none; border: 0; padding: 0 0 0.5rem 1rem; }
    .lantern-nav.is-open li ul a { font-size: var(--lantern-step-0); }
}

/* ============================================================
   Buttons & chips
   ============================================================ */

.lantern-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.85rem 1.4rem;
    border-radius: 999px;
    font-family: var(--lantern-body);
    font-size: var(--lantern-step--1);
    font-weight: 600;
    letter-spacing: 0.04em;
    text-decoration: none;
    border: 1px solid var(--lantern-ink);
    background: var(--lantern-ink);
    color: var(--lantern-paper);
    cursor: pointer;
    transition: transform 200ms var(--lantern-ease), background 200ms var(--lantern-ease), color 200ms var(--lantern-ease);
}
.lantern-btn:hover { background: var(--lantern-ember); border-color: var(--lantern-ember); color: var(--lantern-paper); }
.lantern-btn--ghost { background: transparent; color: var(--lantern-ink); }
.lantern-btn--ghost:hover { background: var(--lantern-ink); color: var(--lantern-paper); }
.lantern-btn--ember { background: var(--lantern-ember); border-color: var(--lantern-ember); }
.lantern-btn--ember:hover { background: var(--lantern-ember-deep); border-color: var(--lantern-ember-deep); }

.lantern-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.3rem 0.7rem;
    border-radius: 999px;
    border: 1px solid var(--lantern-ink-line);
    font-size: var(--lantern-step--2);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--lantern-ink-soft);
    background: var(--lantern-paper);
}

/* ============================================================
   Front page — hero
   ============================================================ */

.lantern-hero {
    position: relative;
    padding: clamp(3rem, 2rem + 6vw, 7rem) 0 clamp(3rem, 1rem + 6vw, 5rem);
    overflow: hidden;
}
.lantern-hero__grid {
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    gap: clamp(2rem, 3vw, 5rem);
    align-items: end;
}
@media (max-width: 880px) {
    .lantern-hero__grid { grid-template-columns: 1fr; }
}

.lantern-hero__title {
    font-size: var(--lantern-step-6);
    font-weight: 380;
    font-variation-settings: "opsz" 144, "SOFT" 50, "WONK" 1;
    letter-spacing: -0.03em;
    line-height: 0.96;
    margin: 0 0 1.5rem;
}
.lantern-hero__title em {
    font-style: italic;
    color: var(--lantern-ember);
    font-variation-settings: "opsz" 144, "SOFT" 100, "WONK" 1;
}
.lantern-hero__title .lantern-underline {
    background: linear-gradient(180deg, transparent 65%, rgba(183, 137, 43, 0.35) 65%);
    padding: 0 0.05em;
}

.lantern-hero__lede {
    font-size: var(--lantern-step-1);
    max-width: 48ch;
    color: var(--lantern-ink-soft);
    line-height: 1.55;
}

.lantern-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 2rem;
}

.lantern-hero__aside {
    border: 1px solid var(--lantern-ink-line);
    background: var(--lantern-paper);
    padding: clamp(1.25rem, 2vw, 2rem);
    border-radius: var(--lantern-radius);
    position: relative;
}
.lantern-hero__aside::before {
    content: "";
    position: absolute;
    inset: -1px -1px auto auto;
    width: 64px; height: 64px;
    border-top: 1px solid var(--lantern-ember);
    border-right: 1px solid var(--lantern-ember);
    pointer-events: none;
}
.lantern-hero__aside h3 {
    margin: 0 0 1rem;
    font-size: var(--lantern-step-1);
}
.lantern-hero__aside dl {
    margin: 0;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 0.5rem 1rem;
    font-size: var(--lantern-step--1);
}
.lantern-hero__aside dt { color: var(--lantern-ink-faint); }
.lantern-hero__aside dd {
    margin: 0;
    text-align: right;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.lantern-hero__aside--quote {
    display: flex;
    align-items: center;
    min-height: 14rem;
    padding: clamp(1.75rem, 3vw, 2.75rem);
}

/* The wordmark big numbers / lockup */
.lantern-hero__numerals {
    position: absolute;
    right: clamp(-1rem, -2vw, 1rem);
    bottom: -1rem;
    font-family: var(--lantern-display);
    font-size: clamp(8rem, 18vw, 22rem);
    line-height: 0.8;
    color: transparent;
    -webkit-text-stroke: 1px rgba(26, 37, 56, 0.08);
    letter-spacing: -0.06em;
    pointer-events: none;
    user-select: none;
    z-index: 0;
}

/* ============================================================
   Helpline strip
   ============================================================ */

.lantern-helpline {
    background: var(--lantern-ink);
    color: var(--lantern-paper);
    padding: 1.25rem 0;
    border-top: 1px solid rgba(247, 241, 230, 0.08);
    border-bottom: 1px solid rgba(247, 241, 230, 0.08);
}
.lantern-helpline__row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem 2rem;
    justify-content: space-between;
}
.lantern-helpline__label {
    font-size: var(--lantern-step--2);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--lantern-sand);
}
.lantern-helpline__number {
    font-family: var(--lantern-display);
    font-size: clamp(1.5rem, 1rem + 2vw, 2.5rem);
    color: var(--lantern-paper);
    text-decoration: none;
    letter-spacing: -0.01em;
    font-variation-settings: "opsz" 144, "SOFT" 40;
}
.lantern-helpline__number:hover { color: var(--lantern-ember); }
.lantern-helpline__copy { max-width: 38ch; color: rgba(247, 241, 230, 0.78); font-size: var(--lantern-step--1); margin: 0; }

/* ============================================================
   Today panel (meditation + cleantime + meeting count)
   ============================================================ */

.lantern-today {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
    gap: clamp(1.5rem, 2vw, 3rem);
    align-items: start;
}
@media (max-width: 880px) { .lantern-today { grid-template-columns: 1fr; } }

.lantern-today__main {
    border: 1px solid var(--lantern-ink-line);
    background: var(--lantern-paper);
    padding: clamp(1.5rem, 2vw, 2.5rem);
    border-radius: var(--lantern-radius);
    position: relative;
    overflow: hidden;
}
.lantern-today__main::before {
    content: "";
    position: absolute;
    inset: auto -20% -40% auto;
    width: 320px; height: 320px;
    background: radial-gradient(closest-side, rgba(183, 137, 43, 0.18), transparent);
    pointer-events: none;
}

.lantern-today__date {
    font-family: var(--lantern-body);
    font-size: var(--lantern-step--1);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--lantern-ember-deep);
    margin-bottom: 1rem;
}
.lantern-today__title {
    font-size: var(--lantern-step-3);
    margin: 0 0 1rem;
}

.lantern-today__side {
    display: grid;
    gap: 1rem;
}
.lantern-side-card {
    border: 1px solid var(--lantern-ink-line);
    background: var(--lantern-paper);
    padding: 1.25rem 1.5rem;
    border-radius: var(--lantern-radius);
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    text-decoration: none;
    color: inherit;
    transition: border-color 200ms var(--lantern-ease), transform 200ms var(--lantern-ease);
}
.lantern-side-card:hover { border-color: var(--lantern-ink); transform: translateY(-1px); }
.lantern-side-card__label {
    font-size: var(--lantern-step--2);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--lantern-ink-faint);
    margin-bottom: 0.4rem;
}
.lantern-side-card__value {
    font-family: var(--lantern-display);
    font-size: var(--lantern-step-2);
    color: var(--lantern-ink);
    line-height: 1.1;
}
.lantern-side-card__arrow {
    font-family: var(--lantern-display);
    font-size: var(--lantern-step-2);
    color: var(--lantern-ember);
    flex: 0 0 auto;
    transition: transform 200ms var(--lantern-ease);
}
.lantern-side-card:hover .lantern-side-card__arrow { transform: translateX(4px); }

/* ============================================================
   Pathway cards (For the Public / For Members / Find a Meeting)
   ============================================================ */

.lantern-pathways {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1px;
    background: var(--lantern-ink-line);
    border: 1px solid var(--lantern-ink-line);
    border-radius: var(--lantern-radius);
    overflow: hidden;
}
.lantern-pathway {
    background: var(--lantern-paper);
    padding: clamp(1.5rem, 2vw, 2.5rem);
    text-decoration: none;
    color: inherit;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-height: 240px;
    position: relative;
    overflow: hidden;
    transition: background 240ms var(--lantern-ease);
}
.lantern-pathway:hover { background: var(--lantern-paper-deep); }
.lantern-pathway__num {
    font-family: var(--lantern-display);
    font-size: var(--lantern-step--1);
    color: var(--lantern-ink-faint);
    letter-spacing: 0.04em;
}
.lantern-pathway__title {
    font-family: var(--lantern-display);
    font-size: var(--lantern-step-2);
    line-height: 1.05;
    margin: 0;
    font-variation-settings: "opsz" 144, "SOFT" 50;
}
.lantern-pathway__desc { color: var(--lantern-ink-soft); margin: 0; flex: 1; }
.lantern-pathway__more {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: var(--lantern-step--1);
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--lantern-ember-deep);
    margin-top: 0.5rem;
}
.lantern-pathway__more::after {
    content: "";
    width: 28px;
    height: 1px;
    background: currentColor;
    transition: width 220ms var(--lantern-ease);
}
.lantern-pathway:hover .lantern-pathway__more::after { width: 52px; }

/* ============================================================
   Events list
   ============================================================ */

.lantern-events {
    display: grid;
    gap: 0;
}
.lantern-event {
    display: grid;
    grid-template-columns: 110px 1fr auto;
    gap: clamp(1rem, 2vw, 2rem);
    align-items: start;
    padding: 1.5rem 0;
    border-top: 1px solid var(--lantern-ink-line);
    text-decoration: none;
    color: inherit;
    transition: padding 200ms var(--lantern-ease);
}
.lantern-event:hover { padding-inline-start: 0.5rem; }
.lantern-event:last-child { border-bottom: 1px solid var(--lantern-ink-line); }

.lantern-event__date {
    font-family: var(--lantern-display);
    line-height: 1;
    color: var(--lantern-ink);
}
.lantern-event__date strong {
    display: block;
    font-size: var(--lantern-step-3);
    font-weight: 480;
    font-variation-settings: "opsz" 144, "SOFT" 30;
}
.lantern-event__date span {
    font-family: var(--lantern-body);
    font-size: var(--lantern-step--2);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--lantern-ink-faint);
    display: block;
    margin-top: 0.4rem;
}

.lantern-event__title {
    font-family: var(--lantern-display);
    font-size: var(--lantern-step-2);
    margin: 0 0 0.25rem;
    line-height: 1.1;
}
.lantern-event__meta {
    font-size: var(--lantern-step--1);
    color: var(--lantern-ink-faint);
    margin: 0;
}
.lantern-event__arrow {
    font-family: var(--lantern-display);
    font-size: var(--lantern-step-2);
    color: var(--lantern-ember);
}

@media (max-width: 640px) {
    .lantern-event { grid-template-columns: 1fr; }
    .lantern-event__arrow { display: none; }
}

/* ============================================================
   Article / content
   ============================================================ */

.lantern-content {
    padding: var(--lantern-section-y) 0;
}
.lantern-content__inner > * {
    margin-inline: auto;
    max-width: 68ch;
}
.lantern-content__inner > .alignwide,
.lantern-content__inner > .wp-block-image.alignwide,
.lantern-content__inner > .wp-block-cover.alignwide { max-width: 920px; }
.lantern-content__inner > .alignfull { max-width: none; }

.lantern-page-title {
    font-size: var(--lantern-step-5);
    margin-bottom: 0.4em;
    font-variation-settings: "opsz" 144, "SOFT" 40, "WONK" 1;
}
.lantern-page-subtitle {
    font-family: var(--lantern-body);
    font-size: var(--lantern-step-1);
    color: var(--lantern-ink-soft);
    max-width: 60ch;
}

.lantern-post-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    font-size: var(--lantern-step--1);
    color: var(--lantern-ink-faint);
    margin-bottom: 2rem;
    letter-spacing: 0.04em;
}

/* WordPress alignment helpers */
.alignleft { float: left; margin: 0 1.5rem 1rem 0; max-width: 50%; }
.alignright { float: right; margin: 0 0 1rem 1.5rem; max-width: 50%; }
.aligncenter { display: block; margin-inline: auto; }
.wp-caption-text, .wp-element-caption {
    font-size: var(--lantern-step--1);
    color: var(--lantern-ink-faint);
    font-style: italic;
    margin-top: 0.5rem;
}

/* Block editor cores */
.wp-block-button__link {
    background: var(--lantern-ink);
    color: var(--lantern-paper);
    padding: 0.85rem 1.4rem;
    border-radius: 999px;
    font-family: var(--lantern-body);
    font-weight: 600;
    letter-spacing: 0.04em;
}
.wp-block-button.is-style-outline .wp-block-button__link {
    background: transparent;
    color: var(--lantern-ink);
    border: 1px solid var(--lantern-ink);
}
.wp-block-pullquote {
    border-top: 1px solid var(--lantern-ink-line);
    border-bottom: 1px solid var(--lantern-ink-line);
    padding: 2rem 0;
    font-family: var(--lantern-display);
}

/* ============================================================
   Footer
   ============================================================ */

.lantern-footer {
    background: var(--lantern-ink);
    color: var(--lantern-paper);
    padding: clamp(3rem, 2rem + 4vw, 5rem) 0 2rem;
    position: relative;
}
.lantern-footer__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr));
    gap: clamp(1.5rem, 2vw, 3rem);
    margin-bottom: 3rem;
}
@media (max-width: 880px) { .lantern-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .lantern-footer__grid { grid-template-columns: 1fr; } }

.lantern-footer h4 {
    color: var(--lantern-sand);
    font-family: var(--lantern-body);
    font-size: var(--lantern-step--2);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    font-weight: 600;
    margin-bottom: 1rem;
}
.lantern-footer ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.5rem;
}
.lantern-footer a {
    color: rgba(247, 241, 230, 0.78);
    text-decoration: none;
    font-size: var(--lantern-step--1);
}
.lantern-footer a:hover { color: var(--lantern-ember); }

.lantern-footer__intro p { color: rgba(247, 241, 230, 0.78); max-width: 36ch; }

.lantern-footer__base {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
    padding-top: 2rem;
    border-top: 1px solid rgba(247, 241, 230, 0.12);
    font-size: var(--lantern-step--2);
    color: rgba(247, 241, 230, 0.6);
    letter-spacing: 0.06em;
}
.lantern-footer__base .lantern-traditions {
    font-family: var(--lantern-display);
    font-style: italic;
    color: var(--lantern-sand);
    text-transform: none;
    letter-spacing: 0;
}

/* Decorative footer mark */
.lantern-footer__mark {
    position: absolute;
    right: var(--lantern-gutter);
    top: -1.5rem;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--lantern-ember);
    display: grid;
    place-items: center;
    color: var(--lantern-paper);
    font-family: var(--lantern-display);
    font-style: italic;
    font-size: 1.5rem;
}

/* ============================================================
   Utilities
   ============================================================ */

.lantern-grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: clamp(1rem, 2vw, 2rem); }
.lantern-grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: clamp(1rem, 2vw, 2rem); }
.lantern-flex { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.lantern-center { text-align: center; }
.lantern-stack > * + * { margin-top: 1.25rem; }

.lantern-reveal { opacity: 0; transform: translateY(14px); transition: opacity 700ms var(--lantern-ease), transform 700ms var(--lantern-ease); }
.lantern-reveal.is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation: none !important; transition: none !important; }
    .lantern-reveal { opacity: 1; transform: none; }
}

/* ============================================================
   Pagination & search
   ============================================================ */

.lantern-pagination {
    margin-top: 3rem;
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    justify-content: center;
}
.lantern-pagination .page-numbers {
    display: inline-grid;
    place-items: center;
    min-width: 2.5rem;
    height: 2.5rem;
    padding: 0 0.75rem;
    border: 1px solid var(--lantern-ink-line);
    border-radius: 999px;
    text-decoration: none;
    color: var(--lantern-ink);
    font-size: var(--lantern-step--1);
}
.lantern-pagination .page-numbers.current { background: var(--lantern-ink); color: var(--lantern-paper); border-color: var(--lantern-ink); }
.lantern-pagination .page-numbers:hover { border-color: var(--lantern-ink); }

.lantern-search-form {
    display: flex;
    gap: 0.5rem;
    max-width: 480px;
}
.lantern-search-form input[type="search"] {
    flex: 1;
    padding: 0.85rem 1rem;
    border: 1px solid var(--lantern-ink-line);
    border-radius: 999px;
    background: var(--lantern-paper);
    font-family: var(--lantern-body);
    font-size: var(--lantern-step-0);
    color: var(--lantern-ink);
}
.lantern-search-form input[type="search"]:focus { outline: none; border-color: var(--lantern-ink); }

/* ============================================================
   Comments
   ============================================================ */

.comment-list {
    list-style: none;
    padding: 0;
    margin: 0 0 2rem;
}
.comment-list .comment {
    padding: 1.25rem 0;
    border-top: 1px solid var(--lantern-ink-line);
}
.comment-author { font-weight: 600; }
.comment-metadata { font-size: var(--lantern-step--1); color: var(--lantern-ink-faint); }

/* ============================================================
   Posts & cards (archives)
   ============================================================ */

.lantern-post-card {
    display: grid;
    grid-template-columns: minmax(0, 200px) 1fr;
    gap: clamp(1rem, 2vw, 2rem);
    padding: 2rem 0;
    border-top: 1px solid var(--lantern-ink-line);
}
.lantern-post-card:last-child { border-bottom: 1px solid var(--lantern-ink-line); }
.lantern-post-card__thumb { aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--lantern-radius); background: var(--lantern-paper-deep); }
.lantern-post-card__thumb img { width: 100%; height: 100%; object-fit: cover; }
.lantern-post-card__title { font-size: var(--lantern-step-2); margin: 0 0 0.5rem; }
.lantern-post-card__title a { text-decoration: none; }
.lantern-post-card__excerpt { color: var(--lantern-ink-soft); margin: 0 0 1rem; }
@media (max-width: 640px) { .lantern-post-card { grid-template-columns: 1fr; } }

/* ============================================================
   Block style variations (registered in inc/blocks.php).
   ============================================================ */

/* Lantern pull-quote — large display serif, ember accent rule. */
.wp-block-quote.is-style-lantern-pullquote {
    border-left: none;
    padding: 1.5rem 0;
    margin: 2.5rem 0;
    text-align: center;
    font-family: var(--lantern-display);
    font-size: var(--lantern-step-3);
    line-height: 1.2;
    color: var(--lantern-ink);
    position: relative;
}
.wp-block-quote.is-style-lantern-pullquote::before,
.wp-block-quote.is-style-lantern-pullquote::after {
    content: "";
    display: block;
    width: 3rem;
    height: 3px;
    background: var(--lantern-ember);
    margin: 1rem auto;
}
.wp-block-quote.is-style-lantern-pullquote cite {
    display: block;
    margin-top: 0.75rem;
    font-family: var(--lantern-body);
    font-size: var(--lantern-step--1);
    font-style: normal;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--lantern-ink-soft);
}

/* Lantern flourish separator — three centred dots. */
.wp-block-separator.is-style-lantern-flourish {
    border: none;
    background: none;
    height: auto;
    text-align: center;
    color: var(--lantern-ember);
    font-size: 1.5rem;
    letter-spacing: 0.5em;
    margin: 2.5rem auto;
    max-width: 6rem;
}
.wp-block-separator.is-style-lantern-flourish::before {
    content: "• • •";
}

/* Lantern ember button — primary CTA styling for blocks. */
.wp-block-button.is-style-lantern-ember .wp-block-button__link {
    background: var(--lantern-ember);
    color: var(--lantern-paper);
    border-radius: 999px;
    padding: 0.85rem 1.6rem;
    font-family: var(--lantern-body);
    font-weight: 600;
    letter-spacing: 0.02em;
    box-shadow: 0 12px 28px -16px var(--lantern-ember);
    transition: transform 120ms ease, box-shadow 120ms ease;
}
.wp-block-button.is-style-lantern-ember .wp-block-button__link:hover {
    transform: translateY(-1px);
    box-shadow: 0 14px 32px -14px var(--lantern-ember);
}
