/*
Theme Name: Quentin Willson Memorial
Template: twentytwentyfive
Description: Memorial site for Quentin Willson (1957–2025). Child theme of Twenty Twenty-Five with a life & career timeline.
Version: 1.0.44
Text Domain: quentin-memorial
*/

/* ---------- General ---------- */
.site-logo-signature img { mix-blend-mode: multiply; }
.qw-kicker { text-transform: uppercase; letter-spacing: .18em; font-size: .78rem; font-weight: 600; }
.qw-dates { font-family: var(--wp--preset--font-family--vollkorn); font-style: italic; line-height: 1.25; }
.wp-block-image img { border-radius: 2px; }
.wp-element-caption { color: var(--wp--preset--color--accent-3); }

/* Hero cover: the text sits bottom left on a dark gradient rising from the bottom (plus a light one from the left), so it
   stays readable while Quentin stays in clear view in every banner photo; in several he stands left of centre */
.qw-hero .wp-block-cover__background { background: linear-gradient(0deg, rgba(18,16,12,.85) 0%, rgba(18,16,12,.45) 30%, rgba(18,16,12,0) 60%), linear-gradient(90deg, rgba(18,16,12,.5) 0%, rgba(18,16,12,0) 50%) !important; opacity: 1 !important; }
.qw-hero .wp-block-cover__inner-container { padding-bottom: clamp(2.5rem, 7vh, 5rem); }
.qw-hero h1 { text-wrap: balance; }

/* Hero slideshow (assets/hero-slides.js): photos fade in over the cover photo; pause button and dots bottom right
   (bottom left under the text on phones) */
.qw-hero-stage { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
.qw-hero-slide { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; opacity: 0; transition: opacity 1.2s ease; z-index: 1; }
.qw-hero-slide.is-shown { opacity: 1; }
.qw-hero-slide.is-top { z-index: 2; }
.qw-hero-controls { position: absolute; z-index: 2; bottom: clamp(1rem, 4vh, 2.25rem); right: max(var(--wp--style--root--padding-right, 1.5rem), calc((100% - var(--wp--style--global--wide-size, 1240px)) / 2)); display: flex; align-items: center; }
.qw-hero-controls button { all: unset; box-sizing: border-box; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; color: #fff; cursor: pointer; }
.qw-hero-controls button:focus-visible { outline: 2px solid #fff; outline-offset: 1px; }
.qw-hero-pause { margin-right: .4rem; }
.qw-hero-pause svg { width: 14px; height: 14px; filter: drop-shadow(0 0 2px rgba(0,0,0,.7)); }
.qw-hero-dot::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: rgba(255,255,255,.55); box-shadow: 0 0 3px rgba(0,0,0,.6); transition: background-color .3s, transform .3s; }
.qw-hero-dot:hover::before { background: #fff; }
.qw-hero-dot[aria-current="true"]::before { background: var(--wp--preset--color--accent-6); transform: scale(1.3); }
@media (max-width: 781px) {
  /* The text block takes up the lower half of the banner on phones: the gradient rises further so the gold kicker
     stays readable over a light shirt or sky */
  .qw-hero .wp-block-cover__background { background: linear-gradient(0deg, rgba(18,16,12,.88) 0%, rgba(18,16,12,.65) 45%, rgba(18,16,12,0) 75%) !important; }
  .qw-hero .wp-block-cover__inner-container { padding-bottom: 3.5rem; text-shadow: 0 1px 3px rgba(0,0,0,.45); }
  .qw-hero-controls { right: auto; left: var(--wp--style--root--padding-left, 1.5rem); bottom: 1rem; margin-left: -6px; }
}
@media (prefers-reduced-motion: reduce) {
  .qw-hero-slide, .qw-hero-dot::before { transition: none; }
}

/* Chapter cards */
.qw-card { background: var(--wp--preset--color--base); border: 1px solid var(--wp--preset--color--accent-4); height: 100%; }
.qw-card .wp-block-image { margin: 0; }
.qw-card .wp-block-image img { aspect-ratio: 4/3; object-fit: cover; width: 100%; }
.qw-card a { text-decoration: none; }
.qw-card a:hover, .qw-card a:focus-visible { text-decoration: underline; }

/* ---------- Timeline ----------
   .qw-timeline  wrapper (draws the vertical rail)
   .qw-era       era heading
   .qw-event     one entry: .qw-event__date + .qw-event__body          */
.qw-timeline { position: relative; --rail: 11rem; }
.qw-timeline::before { content: ""; position: absolute; top: .5rem; bottom: .5rem; left: var(--rail); width: 2px; background: var(--wp--preset--color--accent-4); }
.qw-timeline > * { position: relative; }
.qw-era { margin-block: var(--wp--preset--spacing--60) var(--wp--preset--spacing--30) !important; padding-left: calc(var(--rail) + 2.5rem); }
.qw-era:first-child { margin-top: 0 !important; }
.qw-era::before { content: ""; position: absolute; left: calc(var(--rail) - .6rem); top: .35em; width: 1.3rem; height: 1.3rem; border-radius: 50%; background: var(--wp--preset--color--accent-1); box-shadow: 0 0 0 6px var(--wp--preset--color--base); }
.qw-era h2 { margin: 0; }
.qw-era p { margin: .25rem 0 0; color: var(--wp--preset--color--accent-3); }
.qw-event { display: grid; grid-template-columns: var(--rail) 1fr; column-gap: 2.5rem; margin-block: 0 var(--wp--preset--spacing--40) !important; }
.qw-event::before { content: ""; position: absolute; left: calc(var(--rail) - .35rem); top: .55rem; width: .8rem; height: .8rem; border-radius: 50%; background: var(--wp--preset--color--base); border: 2px solid var(--wp--preset--color--accent-1); }
.qw-event__date { grid-column: 1; margin: 0 !important; padding-right: 1.5rem; text-align: right; font-family: var(--wp--preset--font-family--vollkorn); font-size: 1.15rem; line-height: 1.5; color: var(--wp--preset--color--accent-1); font-weight: 600; }
.qw-event__body { grid-column: 2; margin: 0 !important; padding-left: .25rem; }
.qw-event__body > :first-child { margin-top: 0; }
.qw-event__body h3 { margin: 0 0 .4rem; }
.qw-event__body p { margin: 0 0 .6rem; }
.qw-event__body .wp-block-image, .qw-event__body .wp-block-embed, .qw-event__body .wp-block-video { margin-top: 1rem; max-width: 36rem; }
.qw-event--final .qw-event__date, .qw-event--final h3 { color: var(--wp--preset--color--contrast); }
.qw-event--final::before { background: var(--wp--preset--color--contrast); border-color: var(--wp--preset--color--contrast); }

@media (max-width: 781px) {
  .qw-timeline { --rail: 0rem; padding-left: 1.75rem; }
  .qw-timeline::before { left: .45rem; }
  .qw-era { padding-left: 0; }
  /* Both dots centred on the rail: rail centre (.45rem + 1px) less the timeline's padding, less half the dot's width */
  .qw-era::before { left: calc(.45rem + 1px - 1.75rem - .55rem); width: 1.1rem; height: 1.1rem; }
  .qw-event { grid-template-columns: 1fr; }
  .qw-event::before { left: calc(.45rem + 1px - 1.75rem - .4rem - 2px); top: .4rem; }
  .qw-event__date { text-align: left; padding: 0; font-size: 1rem; }
  .qw-event__body { grid-column: 1; padding: 0; }
}

/* Tributes */
.qw-tributes .wp-block-comment-template { list-style: none; padding: 0; }
.qw-tributes .wp-block-comment-template li { background: var(--wp--preset--color--accent-5); padding: 1.5rem 1.75rem; margin-bottom: 1.25rem; border-left: 3px solid var(--wp--preset--color--accent-1); }
.qw-tributes .comment-form textarea { min-height: 10rem; }
.qw-note { font-size: .9rem; color: var(--wp--preset--color--accent-3); }

/* Homepage FairCharge section (beige) runs straight into the dark quote band: no strip of page background between */
.qw-faircharge + .alignfull { margin-block-start: 0; }
/* FairCharge page: the "Keep his campaign going" box */
.qw-faircharge-support { margin-block-start: var(--wp--preset--spacing--60) !important; padding: var(--wp--preset--spacing--50); }
.qw-faircharge-support .wp-block-image { margin-bottom: .5rem; }

/* "Write to the family" form (inc/contact-form.php) */
.qw-contact-form .qw-field { margin: 0 0 1.1rem; }
.qw-contact-form label { display: block; font-weight: 600; margin-bottom: .3rem; }
.qw-contact-form :is(input[type="text"], input[type="email"], select, textarea) { display: block; width: 100%; box-sizing: border-box; padding: .65rem .75rem; font: inherit; color: var(--wp--preset--color--contrast); background: #fff; border: 1px solid var(--wp--preset--color--accent-3); border-radius: 2px; }
.qw-contact-form :is(input, select, textarea):focus-visible { outline: 2px solid var(--wp--preset--color--accent-1); outline-offset: 1px; }
.qw-contact-form [aria-invalid="true"] { border-color: #a4262c; }
.qw-contact-form :is(.qw-hint, .qw-error) { display: block; font-size: .85rem; margin-top: .3rem; }
.qw-contact-form .qw-hint { color: var(--wp--preset--color--accent-3); }
.qw-contact-form .qw-error { color: #a4262c; font-weight: 600; }
.qw-contact-errors { margin-bottom: 1.25rem; padding: .75rem 1rem; border-left: 3px solid #a4262c; background: #fbeeee; }
.qw-contact-errors :is(p, ul) { margin: 0; }
.qw-contact-errors ul { margin-top: .4rem; padding-left: 1.2rem; }
.qw-contact-sent { padding: 1rem 1.25rem; border-left: 3px solid var(--wp--preset--color--accent-1); background: var(--wp--preset--color--accent-5); }
.qw-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Footer */
.qw-footer a { color: inherit; }
/* "Remembering Quentin" menu in two columns: as one list of eight links it ran long */
.qw-footer-menu .wp-block-navigation__container { display: block; columns: 2; column-gap: 2rem; }
.qw-footer-menu .wp-block-navigation-item { break-inside: avoid; margin-bottom: .6rem; }
/* Links to the privacy, cookie and other site pages: the quietest line in the footer */
.qw-footer .qw-footer-legal { margin-top: .25rem; opacity: .75; }

/* Keep hero text off the viewport edge and aligned with the wide content column */
.qw-hero .wp-block-cover__inner-container { padding-inline: max(var(--wp--style--root--padding-left, 1.5rem), calc((100% - var(--wp--style--global--wide-size, 1240px)) / 2)); }
.qw-hero .wp-block-cover__inner-container > .wp-block-group { margin-left: 0 !important; }

/* Transparent PNG cut-outs (book covers, portrait, logos): never crop, no frame */
.wp-block-image.is-cutout img { border-radius: 0; background: none; }
.qw-card .wp-block-image.is-cutout img { object-fit: contain; padding: 1.25rem; }
.qw-event__body .wp-block-image.is-cutout { max-width: 15rem; }
.wp-block-columns .wp-block-image.is-cutout img { max-height: 340px; width: auto; margin-inline: auto; }

/* ---------- Window into the past: archive viewer (assets/viewer.js) ---------- */
.qw-viewer { background: var(--wp--preset--color--accent-2); border-radius: 14px; padding: 0 12px 12px; box-shadow: 0 30px 60px -20px rgba(23,21,15,.45), 0 0 0 1px rgba(0,0,0,.2); }
.qw-viewer__bar { display: flex; align-items: center; gap: .6rem; padding: .7rem .2rem; color: var(--wp--preset--color--base); }
.qw-viewer__dots { display: flex; gap: 6px; margin-right: .4rem; }
.qw-viewer__dots i { width: 11px; height: 11px; border-radius: 50%; background: #4a453b; }
.qw-viewer__dots i:first-child { background: var(--wp--preset--color--accent-6); }
.qw-viewer__btn { display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 8px; border: 0; background: transparent; color: var(--wp--preset--color--base); font: inherit; font-size: 1.05rem; line-height: 1; cursor: pointer; text-decoration: none; }
.qw-viewer__btn:hover:not(:disabled), .qw-viewer__btn:focus-visible { background: rgba(255,255,255,.1); color: var(--wp--preset--color--accent-6); }
.qw-viewer__btn:disabled { opacity: .35; cursor: default; }
.qw-viewer__address { flex: 1; min-width: 0; display: flex; align-items: center; gap: .5rem; background: rgba(255,255,255,.08); border-radius: 999px; padding: .4rem 1rem; font-size: .85rem; color: #d8d1c3; }
.qw-viewer__address svg { flex: none; color: var(--wp--preset--color--accent-6); }
.qw-viewer__url { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qw-viewer__label { font-size: .7rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; color: var(--wp--preset--color--accent-6); white-space: nowrap; }
.qw-viewer__screen { position: relative; border-radius: 6px; overflow: hidden; background: #fff; }
.qw-viewer__screen iframe { display: block; width: 100%; height: max(560px, calc(100vh - 150px)); border: 0; }
.qw-viewer-caption { text-align: center; font-size: .85rem; color: var(--wp--preset--color--accent-3); margin-top: 1rem; }
@media (max-width: 781px) {
  .qw-viewer { padding: 0 6px 6px; border-radius: 10px; }
  .qw-viewer__label, .qw-viewer__dots, .qw-viewer__address svg { display: none; }
  .qw-viewer__bar { gap: .25rem; }
  .qw-viewer__address { padding: .4rem .75rem; font-size: .8rem; }
  /* Shorter than the screen, so a swipe beside the window still scrolls the page (the ↗ button opens it full size) */
  .qw-viewer__screen iframe { height: 65vh; min-height: 420px; }
}

/* Archive page: compact heading and intro so the window sits high on the page */
.qw-archive-page .wp-block-post-title { font-size: var(--wp--preset--font-size--x-large) !important; margin-bottom: .35rem; }
.qw-archive-intro { max-width: 40rem; margin-inline: auto !important; margin-block: 0 !important; font-size: var(--wp--preset--font-size--small); }
/* pull the window up: less space above the title and between intro and window */
.qw-archive-page main.wp-block-group { padding-top: var(--wp--preset--spacing--40) !important; }
.qw-archive-page .qw-viewer-wrap { margin-top: var(--wp--preset--spacing--30) !important; }

/* Archive viewer spans (almost) the full window width */
.qw-viewer-wrap { padding-inline: clamp(10px, 2vw, 32px); }
.qw-viewer-wrap > .qw-viewer, .qw-viewer-wrap > .qw-viewer-caption { max-width: 1760px; margin-inline: auto; }

/* ---------- Homepage banner video (assets/hero-video.js) ----------
   Full width with no controls and a light tint, as on Quentin's original site; the name and dates sit in .qw-hero-band below. */
.qw-hero-video { position: relative; margin-block: 0 !important; background: var(--wp--preset--color--accent-2); }
.qw-hero-video video { display: block; width: 100%; height: clamp(260px, 56vh, 680px); object-fit: cover; object-position: 50% 22%; pointer-events: none; }
.qw-hero-video::after { content: ""; position: absolute; inset: 0; background: rgba(18,16,12,.15); pointer-events: none; }
.qw-hero-band { text-align: center; margin-block-start: 0 !important; }
.qw-hero-band h1, .qw-hero-band .qw-dates { text-wrap: balance; }
.qw-hero-band h1 { margin-block: .25rem; }
.qw-hero-band > * { margin-block: .35rem !important; }
@media (max-width: 781px) {
  .qw-hero-video video { height: auto; aspect-ratio: 16 / 9; }
}

/* Homepage show reel, below "Remembering Quentin" */
.qw-showreel .wp-block-video { margin-bottom: 0; }

/* Tributes page: tributes from friends and colleagues, as quote cards */
.qw-public-tributes .qw-public-tribute { margin: 0; padding: 1.5rem 1.75rem; border: 0; border-left: 3px solid var(--wp--preset--color--accent-1); background: var(--wp--preset--color--accent-5); }
.qw-public-tribute p { font-family: var(--wp--preset--font-family--vollkorn); font-size: 1.15rem; line-height: 1.55; margin: 0 0 .6rem; }
.qw-public-tribute cite { display: block; margin-top: 1rem; font-style: normal; font-size: .85rem; color: var(--wp--preset--color--accent-3); }
.qw-public-tribute cite strong { color: var(--wp--preset--color--contrast); font-weight: 600; }
.qw-public-tribute cite a { color: inherit; }

/* YouTube placeholders (mu-plugins/qw-youtube-facade.php) sit inside WordPress's 16:9 embed box:
   fill that box rather than stacking a second, padded box under its spacer (which left a gap above every video) */
.wp-block-embed.wp-has-aspect-ratio .qw-yt { position: absolute !important; inset: 0; padding-bottom: 0 !important; }

/* Quotes (homepage, Tributes): a gold opening mark above the words and a dash before the speaker */
.wp-block-quote::before { content: "\201C"; display: block; font-family: var(--wp--preset--font-family--vollkorn); font-size: 5rem; font-style: normal; line-height: .6; height: 2.4rem; color: var(--wp--preset--color--accent-1); }
.wp-block-quote cite::before { content: "\2014\00A0"; }
.has-accent-2-background-color .wp-block-quote::before { color: var(--wp--preset--color--accent-6); }
.has-accent-2-background-color .wp-block-quote cite { font-size: 1rem; letter-spacing: .04em; color: var(--wp--preset--color--accent-6); }
.qw-public-tributes .qw-public-tribute::before { font-size: 4.25rem; height: 2rem; margin-bottom: .4rem; }

/* Writing & Books: a flat book cover (no 3D render) beside the others — a little smaller, with a shadow */
.wp-block-columns .wp-block-image.is-cutout.qw-flat-cover img { max-height: 300px; box-shadow: 0 10px 24px rgba(23,21,15,.28); }
/* ...and the same in a timeline entry (the Good Car Guide on Writing & Books), where cut-outs would otherwise run 15rem wide */
.qw-event__body .wp-block-image.is-cutout.qw-flat-cover img { width: auto; max-height: 300px; box-shadow: 0 10px 24px rgba(23,21,15,.28); }

/* His family's words in the timeline's final entry: quote sized to the timeline text, not a page-wide pull quote */
.qw-family-quote { margin-block: 1rem 1.25rem !important; padding: 0 !important; }
.qw-family-quote::before { font-size: 3.5rem; height: 1.6rem; }
.qw-family-quote p { font-family: var(--wp--preset--font-family--vollkorn); font-size: 1.25rem; line-height: 1.5; }

/* A video inside a tribute card: a vertical Short is kept narrow and centred (James May); a 16:9 video takes the card's width (Everything Electric) */
.qw-public-tribute .qw-tribute-video { max-width: 220px; margin: 1rem auto .75rem; }
.qw-public-tribute .qw-tribute-video-wide { margin: 1rem 0 .75rem; }
.qw-public-tribute :is(.qw-tribute-video, .qw-tribute-video-wide, .qw-tribute-photo) .wp-element-caption { text-align: center; font-size: .8rem; font-style: normal; margin-top: .4rem; }

/* A photo inside a tribute card (Jeremy Clarkson's Instagram post) takes the card's width, captioned like the videos */
.qw-public-tribute .qw-tribute-photo { margin: 1rem 0 .75rem; }
.qw-public-tribute .qw-tribute-photo img { display: block; width: 100%; height: auto; }

/* ---------- Phone menu (the navigation overlay, below 600px) ---------- */
/* The menu is right-aligned, but core pads submenus 2rem on both sides (and their links 1em), which left the Life & Career pages hanging
   2rem in from every other item. Keep only the left indent, and mute them so they read as its children */
.qw-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container { padding-right: 0; }
.qw-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content { padding-right: 0; color: var(--wp--preset--color--accent-3); }
/* Opening the menu moves focus to its first link; a gold underline marks it instead of the browser's black box */
.qw-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:focus-visible { outline: none; text-decoration: underline 2px var(--wp--preset--color--accent-1); text-underline-offset: .3em; }
/* Open and close buttons: 44px to tap, drawn where the 24px icons were */
.qw-header .wp-block-navigation__responsive-container-open,
.qw-header .wp-block-navigation__responsive-container-close { padding: 10px; margin: -10px; }

/* ---------- Phones ---------- */
@media (max-width: 781px) {
  /* Stacked columns: 30px between them ran one column's last button into the next column's heading */
  .wp-block-columns:not(.is-not-stacked-on-mobile) { row-gap: 3rem; }
  /* Homepage portrait cut-out: at full size its uneven edge (shoulder out of the circle on one side) stood out */
  .home .wp-block-column > .wp-block-image.is-cutout img { max-height: 240px; }
  /* ...centred, with the kicker and heading of the "Remembering Quentin" column under it (Alex, 25 Oct); the text below stays left */
  .home .wp-block-column > .wp-block-image.is-cutout img { display: block; margin-inline: auto; }
  .home .wp-block-columns:has(> .wp-block-column > .wp-block-image.is-cutout) > .wp-block-column > :is(.qw-kicker, h2) { text-align: center; }
}

/* Tributes: centred "Public tributes" heading; optional organisation after the name */
.qw-tributes .wp-block-comments-title { text-align: center; }
.qw-tributes .qw-optional { font-weight: 400; color: var(--wp--preset--color--accent-3); }
.qw-tributes .qw-tribute-org { font-weight: 400; }

/* Visitor tributes (comments) look like the quote cards above: gold mark, serif words, and a dark, readable
   name line with the organisation and date in muted text, all on one baseline */
.qw-tributes .wp-block-comment-template li::before { content: "\201C"; display: block; font-family: var(--wp--preset--font-family--vollkorn); font-size: 4.25rem; line-height: .6; height: 2rem; margin-bottom: .4rem; color: var(--wp--preset--color--accent-1); }
.qw-tributes .wp-block-comment-content p { font-family: var(--wp--preset--font-family--vollkorn); font-size: 1.15rem; line-height: 1.55; margin: 0 0 .6rem; }
.qw-tributes .wp-block-comment-template .wp-block-group.is-layout-flex { margin-top: 1rem; align-items: baseline; gap: .4rem; font-size: .85rem !important; color: var(--wp--preset--color--accent-3); }
.qw-tributes .wp-block-comment-template .wp-block-group.is-layout-flex > * { margin: 0; font-size: inherit; }
.qw-tributes .wp-block-comment-author-name { color: var(--wp--preset--color--contrast); }
.qw-tributes .wp-block-comment-author-name::before { content: "\2014\00A0"; font-weight: 400; color: var(--wp--preset--color--accent-3); }
.qw-tributes .qw-tribute-org { color: var(--wp--preset--color--accent-3); }
.qw-tributes .wp-block-comment-date a { color: inherit; }

/* Public tributes (visitor comments): three cards across at the same wide width as "Tributes paid to Quentin";
   a part-filled last row is centred. One card per row on phones. */
@media (min-width: 782px) {
	.qw-tributes .wp-block-comment-template {
		--qw-grid-w: min(var(--wp--style--global--wide-size, 1240px), calc(100vw - 3rem));
		--qw-grid-gap: 1.25rem;
		width: var(--qw-grid-w); max-width: none; margin-left: calc(50% - var(--qw-grid-w) / 2); margin-right: 0;
		display: flex; flex-wrap: wrap; justify-content: center; gap: var(--qw-grid-gap);
	}
	.qw-tributes .wp-block-comment-template li { flex: 0 0 calc((100% - 2 * var(--qw-grid-gap)) / 3); box-sizing: border-box; margin: 0; }
}

/* Public tributes: every card the same height in a row, name line at the bottom; long tributes cut to
   about nine lines with a fade and a "Read more" button (assets/tribute-more.js) */
.qw-tributes .wp-block-comment-template li { display: flex; flex-direction: column; }
.qw-tributes .wp-block-comment-template li > .wp-block-group.is-layout-flex { margin-top: auto; padding-top: 1rem; }
.qw-tributes .wp-block-comment-content.qw-clamp { max-height: 18rem; overflow: hidden; position: relative; }
.qw-tributes .wp-block-comment-content.qw-clamp::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 4rem; background: linear-gradient(to bottom, transparent, var(--wp--preset--color--accent-5)); pointer-events: none; }
.qw-tributes .wp-block-comment-content.qw-clamp.is-open { max-height: none; }
.qw-tributes .wp-block-comment-content.qw-clamp.is-open::after { display: none; }
.qw-tributes .qw-read-more { align-self: flex-start; margin: .5rem 0 0; padding: 0; border: 0; background: none; font: inherit; font-size: .85rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--wp--preset--color--accent-1); text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }
.qw-tributes .qw-read-more:hover { color: var(--wp--preset--color--contrast); }
.qw-tributes .qw-read-more:focus-visible { outline: 2px solid var(--wp--preset--color--accent-1); outline-offset: 3px; }
/* Public tributes: name (and organisation) on the first line, date on its own line below, no dot between */
.qw-tributes .wp-block-comment-template li > .wp-block-group > p { display: none; }
.qw-tributes .wp-block-comment-template .wp-block-comment-author-name { flex-basis: 100%; }
/* An open tribute card closes when clicked */
.qw-tributes .wp-block-comment-template li.is-open { cursor: pointer; }

/* Cloudflare Turnstile box on the tribute and contact forms */
.qw-turnstile { margin: 1rem 0; max-width: 400px; }
.qw-turnstile:empty { margin: 0; }

/* Tributes: form below the tributes, with ways to jump to it (theme 1.0.43) */
.qw-jump { margin-top: var(--wp--preset--spacing--40); }
.qw-tributes #respond { scroll-margin-top: 6rem; margin-top: var(--wp--preset--spacing--60); }
.qw-jump-fab {
	position: fixed; right: 1rem; bottom: 1rem; z-index: 50;
	padding: .7rem 1.2rem; border-radius: 999px;
	background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base);
	font-size: .95rem; text-decoration: none; box-shadow: 0 4px 14px rgba(0,0,0,.25);
	opacity: 0; transform: translateY(1rem); pointer-events: none;
	transition: opacity .2s, transform .2s;
}
.qw-jump-fab.is-shown { opacity: 1; transform: none; pointer-events: auto; }
.qw-jump-fab:hover, .qw-jump-fab:focus { color: var(--wp--preset--color--base); text-decoration: underline; }
@media (prefers-reduced-motion: reduce) { .qw-jump-fab { transition: none; } }
