/* =========================================================
   Single Post (blog) - warm modern magazine layer
   -----------------------------------------------------------
   This file overrides the cool, gray "CEO Blog" treatment in
   style.css with a warm cream + gold palette that matches the
   rest of the HosPall brand language. It is enqueued only on
   `is_single()` from functions.php and loads AFTER
   `hospall_main_styles`, so its single-class selectors override
   the equivalent rules in style.css by cascade order (no
   specificity arms race, no !important required).

   Design intent:
   - Warm ivory background everywhere. No dark navy hero slab,
     no gray content frame.
   - Brand blue reserved for headings and the few moments it
     should signal authority. Gold (the theme's secondary
     palette) does the heavy lifting on accents.
   - Body type breathes: larger size, generous line-height,
     warmer ink color, tighter measure.
   - One stylish flourish per element, not five.
   ========================================================= */

.single-post-page {
    /* Local design tokens. Pulled from the theme palette so the
       blog page reads as native, kept local so we can tune it
       without touching global styles. */
    --blog-surface: #faf6ed;
    /* warm ivory, page bg */
    --blog-surface-soft: #f3ecd8;
    /* sand, used inside cards */
    --blog-card: #fffdf6;
    /* very pale cream, used for chips and pills */
    --blog-ink: #2b2620;
    /* warm dark brown-gray, body text */
    --blog-muted: #6b6052;
    /* warm muted, meta + secondary */
    --blog-rule: rgba(110, 95, 70, 0.18);
    --blog-brand: var(--color-brand, #255487);
    --blog-brand-dark: #173d68;
    --blog-gold: var(--color-accent, #8a7a4e);
    --blog-gold-light: var(--color-accent-light, #c9b27a);
    --blog-gold-deep: var(--color-accent-dark, #5a4a22);

    /* Magazine-style display face. Fraunces is a variable serif with
       an optical-size axis, so the title can render at display weight
       while subheadings stay readable. Loaded ONLY on single posts so
       the rest of the site keeps the existing accessible sans. */
    --blog-display: "Fraunces", "Source Serif 4", "Source Serif Pro",
        "Georgia", "Times New Roman", serif;

    /* Warm cream surface + an inline SVG fractal-noise tile that
       gives the page subtle "paper tooth" without an external
       asset. The texture lives on the static element background,
       so it does NOT slide with the aurora animation - otherwise
       the paper would feel like it was moving, which breaks the
       illusion. */
    background:
        url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.30  0 0 0 0 0.24  0 0 0 0 0.16  0 0 0 0.4 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.24'/%3E%3C/svg%3E"),
        #faf6ed;
    background-size: 240px 240px, auto;
    background-repeat: repeat, no-repeat;
    background-attachment: fixed, scroll;
    /* Establish a stacking context for the aurora background. The
       fixed-position ::before below sits behind page content; child
       sections (hero, article, comments) all stack above it. */
    position: relative;
    isolation: isolate;
}

/* ---------- AMBIENT BACKGROUND --------------------------- */
/* Deep navy rails on the left and right edges of the viewport.
   They are taller than the viewport (130vh) so the falloff never
   shows during scroll, and dark enough (0.82 alpha over near-black
   navy) that the cream centre column reads as a brightly lit page
   between two shadowed margins - a vignette that pulls the eye
   to the text. Gold accents at the top and bottom tie the rails
   back to the HosPall palette. */
.single-post-page::before {
    content: "";
    position: fixed;
    inset: -10%;
    z-index: -1;
    pointer-events: none;
    background:
        /* Left side navy rail */
        radial-gradient(40vw 130vh at -8% 50%, rgba(5, 15, 36, 0.82), transparent 55%),
        /* Right side navy rail */
        radial-gradient(40vw 130vh at 108% 50%, rgba(5, 15, 36, 0.82), transparent 55%),
        /* Top gold cap */
        radial-gradient(80vw 24vh at 50% -3%, rgba(201, 178, 122, 0.55), transparent 62%),
        /* Bottom deep-gold cap */
        radial-gradient(80vw 24vh at 50% 103%, rgba(138, 122, 78, 0.55), transparent 62%);
    will-change: transform;
    transform: translate3d(0, 0, 0);
}

/* Slow, easing drift. Only animates when the user has not asked to
   reduce motion. Browsers without `prefers-reduced-motion`
   support will animate (graceful default). */
@media (prefers-reduced-motion: no-preference) {
    .single-post-page::before {
        animation: blog-aurora-drift 48s ease-in-out infinite alternate;
    }
}

@keyframes blog-aurora-drift {
    0% {
        transform: translate3d(0%, 0%, 0) scale(1);
    }

    50% {
        transform: translate3d(0%, -2.5%, 0) scale(1.05);
    }

    100% {
        transform: translate3d(0%, 3%, 0) scale(1.08);
    }
}

/* ---------- READING PROGRESS BAR ------------------------- */
/* A 4px gold ribbon fixed to the top of the viewport that fills
   left-to-right as the reader scrolls. Driven by a small inline
   script in single.php that updates `--blog-scroll` on the
   `.single-post-page` element, so the bar works in every browser
   without depending on the newer scroll-driven CSS spec.

   z-index sits ABOVE the WordPress admin bar (99999) so logged-in
   editors can still see it. */
.single-post-page::after {
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    transform-origin: 0 50%;
    transform: scaleX(var(--blog-scroll, 0));
    background: linear-gradient(90deg,
            #e9d49a 0%,
            #c9b276 35%,
            #8a7a4e 70%,
            #5a4a22 100%);
    box-shadow: 0 1px 6px rgba(138, 122, 78, 0.45);
    z-index: 100000;
    pointer-events: none;
    transition: transform 0.06s linear;
}

/* ---------- HERO ----------------------------------------- */
/* The hero is visually distinct from the article body. A deep
   brand-blue gradient is the default, but it can be replaced by
   an image (or a video poster) by setting the inline custom
   property `--hero-bg-image` on the .single-post-hero element:

       <section class="single-post-hero"
                style="--hero-bg-image: url('/path/to/hero.jpg');">

   For a full <video> background, drop a <video class="single-post-hero__video">
   element inside the section as the first child of
   .single-post-hero, and CSS will position it under the overlay.
   The text styling below uses white + drop-shadow so it stays
   readable against ANY background. */

.single-post-hero {
    padding: clamp(3rem, 6vw, 5.5rem) clamp(1.25rem, 4vw, 3rem) clamp(2.25rem, 4vw, 3.75rem);
    border-bottom: 1px solid var(--blog-rule);
    position: relative;
    isolation: isolate;
    overflow: hidden;
}

.single-post-hero__bg {
    /* Layered background: image (if set) on top, deep blue gradient
       beneath as a guaranteed fallback. The dark base ensures text
       is always legible even before an image finishes downloading. */
    background:
        var(--hero-bg-image, none) center / cover no-repeat,
        linear-gradient(160deg, #1d4a7a 0%, #143866 50%, #0b1f3f 100%);
}

.single-post-hero__bg::after {
    /* Tint + warm glow overlay. Sits above any image/video so the
       white heading text stays readable on bright photos, and the
       page palette (gold + blue) still reads through. */
    content: "";
    display: block;
    position: absolute;
    inset: 0;
    background:
        radial-gradient(900px 480px at 85% -10%, rgba(201, 178, 122, 0.28), transparent 60%),
        radial-gradient(700px 380px at -10% 110%, rgba(37, 84, 135, 0.30), transparent 58%),
        linear-gradient(180deg, rgba(2, 12, 30, 0.55) 0%, rgba(2, 12, 30, 0.32) 55%, rgba(2, 12, 30, 0.20) 100%);
    pointer-events: none;
}

/* Optional <video> background. Add
   <video class="single-post-hero__video" autoplay muted loop playsinline>
   as the FIRST child of .single-post-hero to enable. The element
   sits below the overlay automatically. */
.single-post-hero__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: -1;
}

/* ---------- HERO TEXT --------------------------------------
   White ink + soft drop shadows so the title stays legible on
   ANY future background - photo, video, gradient, anything. The
   shadow is intentionally short and dark-blue so the text reads
   as "engraved" rather than "floating". */
.single-post-page .single-post-hero {
    color: rgba(255, 251, 240, 0.92);
}

.single-post-page .single-post-hero .single-post__breadcrumb {
    color: rgba(255, 251, 240, 0.72);
    text-shadow: 0 1px 3px rgba(0, 12, 30, 0.45);
}

.single-post-page .single-post-hero .single-post__breadcrumb a {
    color: rgba(255, 251, 240, 0.95);
    border-bottom-color: transparent;
}

.single-post-page .single-post-hero .single-post__breadcrumb a:hover {
    color: #ffffff;
    border-bottom-color: rgba(255, 251, 240, 0.55);
}

.single-post-page .single-post-hero .single-post__breadcrumb span[aria-hidden] {
    color: rgba(255, 251, 240, 0.45);
}

.single-post-page .single-post-hero .single-post__meta {
    color: rgba(255, 251, 240, 0.75);
    border-top-color: rgba(255, 251, 240, 0.22);
    text-shadow: 0 1px 3px rgba(0, 12, 30, 0.45);
}

.single-post-page .single-post-hero .single-post__meta strong {
    color: #ffffff;
}

.single-post-page .single-post-hero .single-post__meta-dot {
    background: rgba(255, 251, 240, 0.55);
    opacity: 1;
}

/* Category chip on a dark hero - reverse it to a soft-white pill */
.single-post-page .single-post-hero .single-post__category {
    background: rgba(255, 251, 240, 0.10);
    color: rgba(255, 251, 240, 0.92);
    border-color: rgba(255, 251, 240, 0.35);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}

.single-post-page .single-post-hero .single-post__category::before {
    background: var(--blog-gold-light);
}

.single-post-page .single-post-hero .single-post__category:hover {
    background: rgba(255, 251, 240, 0.20);
    border-color: rgba(255, 251, 240, 0.55);
    color: #ffffff;
}

.single-post-hero__inner {
    max-width: 720px;
}

/* Breadcrumb */
.single-post-page .single-post__breadcrumb {
    color: var(--blog-muted);
    font-size: 0.86rem;
}

.single-post-page .single-post__breadcrumb a {
    color: var(--blog-gold-deep);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.single-post-page .single-post__breadcrumb a:hover {
    color: var(--blog-brand-dark);
    border-bottom-color: var(--blog-gold-light);
    text-decoration: none;
}

.single-post-page .single-post__breadcrumb span[aria-hidden] {
    color: var(--blog-gold-light);
    opacity: 0.7;
}

/* Category chips - warm cream pills */
.single-post-page .single-post__category {
    background: var(--blog-card);
    color: var(--blog-gold-deep);
    border-color: rgba(138, 122, 78, 0.32);
    letter-spacing: 0.18em;
    font-size: 0.68rem;
    text-transform: uppercase;
}

.single-post-page .single-post__category::before {
    background: var(--blog-gold);
}

.single-post-page .single-post__category:hover {
    background: var(--blog-gold-deep);
    border-color: var(--blog-gold-deep);
    color: var(--blog-card);
}

.single-post-page .single-post__category:hover::before {
    background: var(--blog-gold-light);
}

/* Title - the protagonist. Modern editorial sans (Inter) at heavy
   weight with tight tracking. White with a layered text-shadow so
   it stays readable against any hero background - the default deep
   blue gradient, a featured-image photo, or a future video. The
   shadow stack gives both a sharp edge (for busy photos) and a soft
   halo (for separation from bright spots), so contrast holds up
   even when a photo has variable luminance. */
.single-post-page .single-post__title {
    font-family: "Inter", "Atkinson Hyperlegible", -apple-system,
        BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
    color: #ffffff;
    font-weight: 800;
    font-size: clamp(2.4rem, 5.6vw, 3.9rem);
    line-height: 1.04;
    letter-spacing: -0.028em;
    max-width: 22ch;
    margin: 0 0 1.5rem;
    font-feature-settings: "ss01" 1, "cv11" 1, "kern" 1;
    text-wrap: balance;
    text-shadow:
        0 0 1px rgba(0, 0, 0, 0.55),
        0 1px 2px rgba(0, 0, 0, 0.60),
        0 3px 10px rgba(0, 8, 22, 0.55),
        0 0 22px rgba(0, 8, 22, 0.30);
}

.single-post-page .single-post__title::before {
    /* Drop the chunky 48px underline rule. The hero needs air, not
       another decoration. */
    display: none;
}

/* Meta line */
.single-post-page .single-post__meta {
    color: var(--blog-muted);
    border-top: 1px solid var(--blog-rule);
    font-size: 0.92rem;
    padding-top: 1.25rem;
}

.single-post-page .single-post__meta strong {
    color: var(--blog-brand-dark);
}

.single-post-page .single-post__meta-dot {
    background: var(--blog-gold-light);
    opacity: 0.75;
}

/* Category chip(s) rendered inline inside the meta strip. Use a flex
   wrapper so multiple categories sit on the same line with a small
   gap, and align the chip's optical baseline with the surrounding
   text. */
.single-post-page .single-post__meta-categories {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    line-height: 1;
}

.single-post-page .single-post__meta .single-post__category {
    /* Override the upstream chip padding so it sits comfortably in
       the meta row rather than dominating it. */
    padding: 0.25rem 0.7rem;
    font-size: 0.66rem;
    line-height: 1;
    letter-spacing: 0.18em;
    gap: 0.35rem;
}

.single-post-page .single-post__meta .single-post__category::before {
    width: 5px;
    height: 5px;
}

/* ---------- ARTICLE FRAME -------------------------------- */
/* Transparent. The aurora gradient on .single-post-page::before is
   what gives the article area its colour - this element used to
   paint a flat cream wash that completely hid it. */

.single-post-page .single-post {
    background: transparent;
}

.single-post-page .single-post__inner {
    background: transparent;
    border: 0;
    box-shadow: none;
    padding: 0 clamp(1.25rem, 4vw, 2rem);
    max-width: 720px;
}

/* Featured image */
.single-post-page .single-post__featured {
    border-radius: 18px;
    box-shadow: 0 28px 60px -32px rgba(80, 60, 30, 0.32);
    background: var(--blog-card);
    max-width: 720px;
}

.single-post-page .single-post__featured-caption {
    background: var(--blog-surface-soft);
    color: var(--blog-muted);
    font-style: italic;
    font-size: 0.85rem;
}

/* ---------- PROSE ---------------------------------------- */
/* Larger, slightly looser, warmer. The job here is to make
   the reader want to keep going. */

.single-post-page .single-post__content {
    font-family: var(--font-sans);
    font-size: 1.15rem;
    line-height: 1.78;
    letter-spacing: 0.003em;
    color: var(--blog-ink);
    font-feature-settings: "kern" 1, "liga" 1;
    text-wrap: pretty;
    /* Hanging punctuation gives the left edge a cleaner optical line
       in browsers that support it (Safari at the time of writing). */
    hanging-punctuation: first last;
}

.single-post-page .single-post__content>*+* {
    margin-top: 1.35em;
}

.single-post-page .single-post__content p,
.single-post-page .single-post__content li {
    font-family: var(--font-sans);
}

/* Lead paragraph - magazine-style intro.
   The first paragraph is set slightly larger with a calmer line-height
   so it visually signals "this is the lead", and the body settles
   into its normal rhythm from the second paragraph onward.

   This replaces the older floated drop cap, which can never align
   cleanly across font metrics (Fraunces cap height + Atkinson body
   metrics don't share a baseline). The lead-paragraph pattern is
   what most modern editorial sites use today (The Atlantic, NYT,
   The New Yorker, Substack, Medium, Ghost) for exactly this reason.

   A tiny gold rule sits above the lead as an entry flourish - the
   same gold-rule language used above each H2 section, so the page
   has a consistent typographic rhythm. */
.single-post-page .single-post__content>p:first-of-type {
    font-size: clamp(1.2rem, 1.9vw, 1.38rem);
    line-height: 1.55;
    color: var(--blog-ink);
    margin-bottom: 1.6em;
    letter-spacing: 0.001em;
}

.single-post-page .single-post__content>p:first-of-type::before {
    content: "";
    display: block;
    width: 48px;
    height: 2px;
    background: var(--blog-gold-light);
    border-radius: 2px;
    margin-bottom: 1.5rem;
}

/* Headings - serif, deep brand color, with a small gold rule above
   each H2 to give the page rhythm. */
.single-post-page .single-post__content h2,
.single-post-page .single-post__content h3,
.single-post-page .single-post__content h4 {
    font-family: var(--blog-display);
    color: var(--blog-brand-dark);
    font-weight: 600;
    letter-spacing: -0.012em;
    line-height: 1.22;
    margin-top: 2.4em;
    margin-bottom: 0.55em;
    font-variation-settings: "opsz" 48, "SOFT" 50;
    font-feature-settings: "onum" 1, "dlig" 1;
    text-wrap: balance;
}

.single-post-page .single-post__content h2 {
    font-size: clamp(1.65rem, 2.6vw, 2.05rem);
    position: relative;
    padding-top: 1.1em;
}

.single-post-page .single-post__content h2::before {
    /* small gold rule above each section to give the page rhythm */
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 56px;
    height: 2px;
    background: var(--blog-gold-light);
    border-radius: 2px;
}

.single-post-page .single-post__content h3 {
    font-size: clamp(1.3rem, 2.1vw, 1.55rem);
    color: var(--blog-gold-deep);
    font-style: italic;
    font-variation-settings: "opsz" 36, "SOFT" 100;
}

.single-post-page .single-post__content h4 {
    font-size: 1.15rem;
}

/* Links - warm gold underline, swap to deep gold on hover */
.single-post-page .single-post__content a {
    color: var(--blog-brand-dark);
    text-decoration: underline;
    text-decoration-color: var(--blog-gold-light);
    text-decoration-thickness: 1.5px;
    text-underline-offset: 4px;
    transition: text-decoration-color 0.2s ease, color 0.2s ease;
}

.single-post-page .single-post__content a:hover {
    color: var(--blog-gold-deep);
    text-decoration-color: var(--blog-gold-deep);
    text-decoration-thickness: 1.5px;
}

/* Images */
.single-post-page .single-post__content img,
.single-post-page .single-post__content .wp-block-image img {
    border-radius: 14px;
    box-shadow: 0 20px 44px -30px rgba(80, 60, 30, 0.34);
    margin: 1.75rem 0;
}

.single-post-page .single-post__content figcaption {
    color: var(--blog-muted);
    font-style: italic;
    font-size: 0.88rem;
}

/* Blockquote - serif pull-quote with oversized quotation glyph */
.single-post-page .single-post__content blockquote {
    position: relative;
    background: var(--blog-surface-soft);
    border: 0;
    border-left: 3px solid var(--blog-gold);
    border-radius: 0 12px 12px 0;
    padding: 1.5rem 1.75rem 1.5rem 3.5rem;
    margin: 2.5rem 0;
    font-family: var(--blog-display);
    font-style: italic;
    color: var(--blog-ink);
    font-size: 1.25rem;
    line-height: 1.55;
    font-variation-settings: "opsz" 36, "SOFT" 100;
    text-wrap: pretty;
}

.single-post-page .single-post__content blockquote::before {
    content: "\201C";
    position: absolute;
    top: 0.35rem;
    left: 1.1rem;
    font-family: var(--blog-display);
    font-size: 4.6rem;
    line-height: 1;
    color: var(--blog-gold-light);
    font-style: normal;
    opacity: 0.9;
    font-variation-settings: "opsz" 144;
}

/* Lists - delicate gold dots */
.single-post-page .single-post__content ul li::before {
    background: var(--blog-gold);
    box-shadow: none;
    width: 6px;
    height: 6px;
    top: 0.78em;
}

.single-post-page .single-post__content ol li::before {
    background: rgba(138, 122, 78, 0.14);
    color: var(--blog-gold-deep);
}

/* Inline code + pre blocks - warm dark brown, not slate */
.single-post-page .single-post__content code {
    background: rgba(138, 122, 78, 0.14);
    color: var(--blog-gold-deep);
}

.single-post-page .single-post__content pre {
    background: #2a221c;
    color: #f4ecdc;
    box-shadow: 0 18px 40px -28px rgba(60, 45, 25, 0.45);
}

.single-post-page .single-post__content pre code {
    color: inherit;
    background: transparent;
}

/* Hr - three gold dots, no "+" gimmick */
.single-post-page .single-post__content hr {
    height: 0;
    background: transparent;
    border: 0;
    margin: 3.25rem 0;
    text-align: center;
    overflow: visible;
    position: relative;
}

.single-post-page .single-post__content hr::before {
    content: "\00b7  \00b7  \00b7";
    /* "·  ·  ·" */
    letter-spacing: 0.5em;
    color: var(--blog-gold);
    font-size: 1.4rem;
    line-height: 1;
    position: relative;
    background: transparent;
    padding: 0;
    display: inline-block;
    transform: none;
    top: auto;
    left: auto;
}

.single-post-page .single-post__content hr::after {
    /* erase the original "+" ornament */
    display: none;
}

/* Tables */
.single-post-page .single-post__content table {
    border-color: var(--blog-rule);
    background: var(--blog-card);
}

.single-post-page .single-post__content th {
    background: var(--blog-surface-soft);
    color: var(--blog-brand-dark);
    font-size: 0.78rem;
    letter-spacing: 0.12em;
}

.single-post-page .single-post__content tbody tr:nth-child(even) {
    background: #fdf9ee;
}

.single-post-page .single-post__content th,
.single-post-page .single-post__content td {
    border-bottom-color: var(--blog-rule);
}

/* ---------- FOOTER / TAGS -------------------------------- */

.single-post-page .single-post__footer {
    border-top-color: var(--blog-rule);
}

.single-post-page .single-post__tags-label {
    color: var(--blog-muted);
}

.single-post-page .single-post__tag {
    background: var(--blog-card);
    color: var(--blog-gold-deep);
    border-color: rgba(138, 122, 78, 0.28);
    border-radius: 999px;
}

.single-post-page .single-post__tag:hover {
    background: var(--blog-gold-deep);
    border-color: var(--blog-gold-deep);
    color: var(--blog-card);
}

/* ---------- PREV / NEXT ---------------------------------- */

.single-post-page .single-post__nav-link {
    background: var(--blog-card);
    border-color: var(--blog-rule);
    color: var(--blog-brand-dark);
    border-radius: 14px;
}

.single-post-page .single-post__nav-link::after {
    background: var(--blog-gold-light);
}

.single-post-page .single-post__nav-link:hover {
    background: var(--blog-card);
    border-color: rgba(138, 122, 78, 0.45);
    box-shadow: 0 18px 40px -22px rgba(80, 60, 30, 0.28);
}

.single-post-page .single-post__nav-label {
    color: var(--blog-muted);
}

.single-post-page .single-post__nav-title {
    color: var(--blog-brand-dark);
}

/* ---------- BACK LINK ------------------------------------ */

.single-post-page .single-post__back {
    background: var(--blog-card);
    border-color: rgba(138, 122, 78, 0.32);
    color: var(--blog-gold-deep);
}

.single-post-page .single-post__back:hover {
    background: var(--blog-gold-deep);
    border-color: var(--blog-gold-deep);
    color: var(--blog-card);
}

/* ---------- COMMENTS ------------------------------------- */

.single-post-page .single-post__comments {
    border-top-color: var(--blog-rule);
}

.single-post-page .single-post__comments .comments-title,
.single-post-page .single-post__comments h2.comments-title,
.single-post-page .single-post__comments h3#reply-title {
    color: var(--blog-brand-dark);
}

.single-post-page .single-post__comments .comment-list li {
    border-bottom-color: var(--blog-rule);
}

.single-post-page .single-post__comments .comment-meta {
    color: var(--blog-muted);
}

.single-post-page .single-post__comments .comment-author {
    color: var(--blog-gold-deep);
}

.single-post-page .single-post__comments .comment-form input[type="text"],
.single-post-page .single-post__comments .comment-form input[type="email"],
.single-post-page .single-post__comments .comment-form input[type="url"],
.single-post-page .single-post__comments .comment-form textarea {
    background: var(--blog-card);
    border-color: rgba(138, 122, 78, 0.32);
    color: var(--blog-ink);
}

.single-post-page .single-post__comments .comment-form input:focus,
.single-post-page .single-post__comments .comment-form textarea:focus {
    border-color: var(--blog-gold-deep);
    box-shadow: 0 0 0 3px rgba(138, 122, 78, 0.18);
}

.single-post-page .single-post__comments .comment-form label {
    color: var(--blog-brand-dark);
}

.single-post-page .single-post__comments .comment-form .submit,
.single-post-page .single-post__comments input[type="submit"] {
    background: var(--blog-gold-deep);
}

.single-post-page .single-post__comments .comment-form .submit:hover,
.single-post-page .single-post__comments input[type="submit"]:hover {
    background: var(--blog-brand-dark);
}

.single-post-page .single-post__comments .logged-in-as,
.single-post-page .single-post__comments .comment-notes {
    color: var(--blog-muted);
}

.single-post-page .single-post__comments .logged-in-as a {
    color: var(--blog-gold-deep);
}

/* ---------- Small screens -------------------------------- */

@media (max-width: 700px) {
    .single-post-page .single-post__content {
        font-size: 1.06rem;
        line-height: 1.78;
    }

    .single-post-page .single-post__content>p:first-of-type {
        font-size: 1.14rem;
        line-height: 1.6;
    }

    .single-post-page .single-post__content blockquote {
        padding: 1.25rem 1.25rem 1.25rem 2.75rem;
        font-size: 1.1rem;
    }

    .single-post-page .single-post__content blockquote::before {
        font-size: 3.4rem;
        top: 0.15rem;
        left: 0.75rem;
    }
}

/* ---------- High-contrast accessibility ------------------ */
/* Hand the page back to the system high-contrast palette so
   our cream-on-cream warmth never breaks the a11y mode. */

body.high-contrast .single-post-page {
    background: var(--hc-bg, #0a1a2c);
}

body.high-contrast .single-post-hero__bg {
    background: var(--hc-bg, #0a1a2c);
}

body.high-contrast .single-post-page .single-post__title,
body.high-contrast .single-post-page .single-post__content,
body.high-contrast .single-post-page .single-post__content h2,
body.high-contrast .single-post-page .single-post__content h3,
body.high-contrast .single-post-page .single-post__content h4 {
    color: var(--hc-text, #ffffff);
}

body.high-contrast .single-post-page .single-post__content a {
    color: var(--hc-accent, #f4d36b);
    text-decoration-color: var(--hc-accent, #f4d36b);
}

body.high-contrast .single-post-page .single-post__inner,
body.high-contrast .single-post-page .single-post__featured,
body.high-contrast .single-post-page .single-post__nav-link,
body.high-contrast .single-post-page .single-post__back,
body.high-contrast .single-post-page .single-post__tag {
    box-shadow: none;
}

/* ---------- Reduced motion ------------------------------- */

@media (prefers-reduced-motion: reduce) {

    .single-post-page .single-post__nav-link,
    .single-post-page .single-post__back,
    .single-post-page .single-post__category,
    .single-post-page .single-post__tag {
        transition: none;
    }

    .single-post-page .single-post__nav-link:hover,
    .single-post-page .single-post__back:hover {
        transform: none;
    }
}