/*
Theme Name: trigger.social
Theme URI: https://trigger.social
Description: trigger.social brand theme for Veerle De Jaegher. Built on Twenty Twenty-Three. Gutenberg FSE, synced patterns, Iris design spec 2026-04-27.
Author: PROXEM AI (Ward)
Author URI: https://proxem.be
Template: twentytwentythree
Version: 1.0.0
Requires at least: 6.4
Requires PHP: 8.0
License: GPL-2.0-or-later
Text Domain: trigger-social
*/

/* === Error state tokens (2026-07-13, Ward color audit) ===
   Contact form validation error state. Derived from the primary-accessible
   token (hex C23840, rgb 194/56/64), not a separate error red. These are
   plain CSS custom properties (not theme.json preset colors) because they
   are alpha-blended tints that only make sense in this one context; defined
   once here so contact-form.php never repeats the raw rgba string. */
:root {
    --ts-error-bg-subtle: rgba(194, 56, 64, 0.04);
    --ts-error-bg: rgba(194, 56, 64, 0.06);
    --ts-error-border-soft: rgba(194, 56, 64, 0.20);
    --ts-error-border: rgba(194, 56, 64, 0.40);
}

/* === HEADER FIX v3 2026-05-03 ===
   Root cause findings after full DOM and CSS cascade inspection:

   1. background-color and border-bottom are stripped from wp:group block attributes
      in WP.com Atomic template parts. CSS rules in style.css are the only reliable fix.

   2. Prior fix (v2) applied position:sticky to the INNER header.ts-site-header element.
      Sticky on the inner element has zero effective range because the outer
      header.wp-block-template-part wraps only the inner header (same height).
      Result: sticky appears to do nothing -- header scrolls away with page content.
      Fix: sticky goes on the OUTER header.wp-block-template-part element.

   3. WP.com global CSS injects margin-block-start:32px on every .wp-site-blocks > *
      via the spacing scale (--wp--preset--spacing--40). This creates a gap above
      a sticky header. Fix: zero that margin on the template-part element.

   4. z-index on the inner element does not help when the outer element is not positioned.
      Fix: z-index on the outer sticky element. */

/* 1. OUTER wrapper: sticky + z-index + zero the WP-injected top margin */
header.wp-block-template-part:first-child {
    position: sticky !important;
    top: 0 !important;
    z-index: 1000 !important;
    margin-block-start: 0 !important;
}

/* 2. INNER header: background + bottom border (stripped by WP.com renderer) */
header.ts-site-header {
    background-color: var(--wp--preset--color--bg) !important;
    border-bottom: 1px solid rgba(26, 20, 20, 0.08) !important;
}

/* 3. CTA button wrapper: restore the 24px left margin dropped by the renderer */
header.ts-site-header .wp-block-buttons {
    margin-left: 24px !important;
    flex-shrink: 0 !important;
}

/* 4. Ensure the header inner flex row never wraps on desktop */
header.ts-site-header > .wp-block-group.is-layout-flex {
    flex-wrap: nowrap !important;
    align-items: center !important;
}

/* 4b. Narrow-mobile overflow fix (2026-08-20): below 430px the 217px logo plus the
   hamburger toggle plus the full "Audit boeken" pill cannot share one row without
   clipping past the viewport (real horizontal scroll flagged in QA). Allow the CTA
   button, the last child in the row, to wrap onto a second line. Logo and nav content
   and styling are unchanged; this is an overflow fix only, not a header redesign. */
@media (max-width: 430px) {
    header.ts-site-header > .wp-block-group.is-layout-flex {
        flex-wrap: wrap !important;
        row-gap: 10px !important;
    }
    header.ts-site-header .wp-block-buttons {
        margin-left: 0 !important;
    }
}

/* 5. Logo size v4: 64px tall, width auto, zero margin around the logo block */
header.ts-site-header .wp-block-site-logo {
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1 !important;
}
header.ts-site-header .wp-block-site-logo img {
    height: 44px !important;
    width: auto !important;
    max-width: none !important;
    display: block !important;
}

/* 6. Footer logo size: match header 44px height */
.ts-site-footer .wp-block-site-logo img {
    height: 44px !important;
    width: auto !important;
    max-width: none !important;
    display: block !important;
}

/* Remove WordPress layout top margin on coaching hero */
:root :where(.is-layout-flow) > *:has(.tsch-hero) {
  margin-block-start: 0 !important;
}

.tsch-hero {
  margin-block-start: 0 !important;
}

/* Training hero - override WP content-width constraint on block wrapper */
.wp-block-html:has(.tstr-hero) {
  max-width: none !important;
  width: 100% !important;
}

/* === Banda wordmark font (2026-07-13) ===
   Self-hosted, licensed Banda Regular only (banda_regular.otf).
   Scope: the "trigger.social" brand wordmark text treatment in the
   homepage hero H1 (.hero-c-headline), nowhere else. Do not apply to
   general headings or body text; DM Sans / Plus Jakarta Sans / DM Mono
   remain the sitewide typefaces. */
@font-face {
    font-family: 'Banda';
    src: url('assets/fonts/banda-regular.otf') format('opentype');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

/* ============================================================================
   Native Gutenberg rebuild (2026-08-20, Ward)
   Homepage sections converted from raw wp:html to native core blocks inside
   DB-backed synced patterns. Layout, responsive stacking and block-style
   chrome live here as scoped CSS so the content itself stays block-editable.
   ============================================================================ */

/* --- Block style: Wordmark (Banda) on the hero H1 Heading block ---
   Scoped Banda treatment, one-click from the Heading Styles panel. Weight 700
   preserves the current wordmark look (unchanged per brief). */
.wp-block-heading.is-style-wordmark {
    font-family: 'Banda', 'DM Sans', sans-serif;
    font-size: clamp(48px, 7vw, 96px);
    font-weight: 700;
    line-height: 1.06;
    letter-spacing: 0.01em;
}

/* --- Block style: Pill Badge on a Paragraph block ---
   Shape/padding/tracking only. Background and text colour come from the
   block's own colour panel (set to primary-accessible on white for WCAG AA). */
p.is-style-pill-badge {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    width: auto;
    padding: 7px 16px;
    border-radius: 9999px;
    font-family: 'DM Sans', sans-serif;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    line-height: 1.2;
}

/* --- Hero Direction C: Cover-based full-bleed portrait + left fade scrim --- */
.ts-hero-c.wp-block-cover {
    min-height: 86vh;
    background-color: var(--wp--preset--color--ink);
}
.ts-hero-c .wp-block-cover__inner-container {
    width: 100%;
}
.ts-hero-c-content {
    max-width: min(640px, 36vw);
    margin-left: 0;
    margin-right: auto;
    padding: clamp(60px, 10vh, 110px) 0 0 clamp(28px, 7vw, 72px);
}
.ts-hero-c-content .wp-block-buttons {
    gap: 14px;
}
@media (max-width: 900px) {
    .ts-hero-c-content {
        max-width: 100%;
        padding-right: clamp(20px, 6vw, 40px);
    }
    .ts-hero-c .has-hero-left-fade-gradient-background {
        background: linear-gradient(90deg, var(--wp--preset--color--surface) 0%, var(--wp--preset--color--surface) 44%, rgba(253,246,244,0.9) 58%, rgba(253,246,244,0) 74%) !important;
    }
    .ts-hero-c-content .wp-block-buttons {
        flex-direction: column;
        align-items: flex-start;
    }
}
@media (max-width: 600px) {
    .ts-hero-c.wp-block-cover {
        min-height: auto;
    }
    .ts-hero-c .has-hero-left-fade-gradient-background {
        background: linear-gradient(180deg, rgba(253,246,244,0.35) 0%, rgba(253,246,244,0.9) 40%, var(--wp--preset--color--surface) 72%) !important;
    }
    .ts-hero-c-content {
        padding: clamp(80px, 24vw, 140px) 20px clamp(48px, 10vw, 64px);
    }
    .ts-hero-c .wp-block-cover__image-background {
        object-position: 68% center !important;
    }
}

/* --- Testimonial logo wall: native core/image blocks in a grid ---
   Cell chrome (white card, border, radius, grayscale) is CSS; each logo stays
   a replaceable Image block. */
.ts-logo-wall {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 12px;
}
.ts-logo-wall .wp-block-image {
    margin: 0;
    aspect-ratio: 3 / 2;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    background: var(--wp--preset--color--white);
    border: 1px solid rgba(26, 20, 20, 0.06);
    border-radius: 12px;
}
.ts-logo-wall .wp-block-image img {
    max-width: 100%;
    max-height: 64px;
    width: auto;
    object-fit: contain;
    filter: grayscale(100%);
    opacity: 0.7;
    transition: filter 200ms ease, opacity 200ms ease;
}
.ts-logo-wall .wp-block-image:hover img {
    filter: grayscale(0%);
    opacity: 1;
}
@media (max-width: 768px) {
    .ts-logo-wall {
        grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
        gap: 8px;
    }
    .ts-logo-wall .wp-block-image {
        padding: 12px;
    }
    .ts-logo-wall .wp-block-image img {
        max-height: 48px;
    }
}

/* --- Instagram band: native columns, image framed on the right --- */
.ts-ig-frame img {
    border-radius: 16px;
    box-shadow: 0 1px 3px rgba(26,20,20,0.04), 0 12px 32px rgba(26,20,20,0.08);
}
@media (max-width: 768px) {
    .ts-ig-columns {
        flex-direction: column !important;
    }
    .ts-ig-columns .ts-ig-visual {
        order: -1;
    }
}

/* --- Footer social icons: native core/social-links (logos-only) ---
   Replaces the former raw-HTML SVG list. Fully editable: add/remove/reorder
   services and change URLs from the block toolbar. */
.ts-site-footer .wp-block-social-links {
    gap: 8px;
    margin-top: 16px;
}
.ts-site-footer .wp-block-social-links.is-style-logos-only .wp-block-social-link {
    background: transparent;
    padding: 0;
    margin: 0;
}
.ts-site-footer .wp-block-social-links.is-style-logos-only .wp-block-social-link a {
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 9999px;
    color: var(--wp--preset--color--ink-2);
    transition: color 150ms ease, background 150ms ease, transform 150ms ease;
}
.ts-site-footer .wp-block-social-links.is-style-logos-only .wp-block-social-link svg {
    width: 24px;
    height: 24px;
    fill: currentColor;
}
.ts-site-footer .wp-block-social-links.is-style-logos-only .wp-block-social-link a:hover,
.ts-site-footer .wp-block-social-links.is-style-logos-only .wp-block-social-link a:focus {
    color: var(--wp--preset--color--primary);
    background: var(--wp--preset--color--accent-soft);
    transform: translateY(-1px);
}


/* ============================================================================
   Latest Tips card system (relocated 2026-08-20 from latest-tips.php inline
   <style> to remove the raw wp:html block; selectors unchanged, all scoped
   under .ts-latest-tips-grid-wrapper). Enqueued site-wide via this stylesheet.
   ============================================================================ */
/* ----- Latest Tips card system (ported 1:1 from /tips/ archive, scoped) ----- */

/* Grid wrapper (3 cols at desktop, 1 col under 600px). Matches /tips/ rule
   (.ts-tips-grid-wrapper > .wp-block-post-template) on explicit repeat(3). */
.ts-latest-tips-grid-wrapper {
  display: block;
  max-width: 1200px;
  margin-inline: auto;
  width: 100%;
}
.ts-latest-tips-grid-wrapper > .wp-block-query > .wp-block-post-template,
.ts-latest-tips-grid-wrapper .wp-block-post-template.is-layout-grid {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 28px;
  max-width: 1200px;
  margin-inline: auto;
  padding: 0;
  list-style: none;
}

/* Card shell (matches .ts-tips-card.wp-block-post in /tips/) */
.ts-latest-tips-grid-wrapper .ts-tips-card.wp-block-post {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--wp--preset--color--white);
  border: 1px solid rgba(26, 20, 20, 0.08);
  border-radius: 16px;
  overflow: hidden;
  margin: 0;
  padding: 0;
  cursor: pointer;
  box-shadow:
    0 1px 3px rgba(26, 20, 20, 0.04),
    0 4px 16px rgba(26, 20, 20, 0.06);
  transition:
    transform 200ms ease,
    border-color 200ms ease,
    box-shadow 200ms ease;
}
.ts-latest-tips-grid-wrapper .ts-tips-card.wp-block-post:hover,
.ts-latest-tips-grid-wrapper .ts-tips-card.wp-block-post:focus-within {
  transform: translateY(-2px);
  border-color: var(--wp--preset--color--accent-medium);
  box-shadow:
    0 2px 8px rgba(26, 20, 20, 0.06),
    0 12px 32px rgba(26, 20, 20, 0.09);
}

/* Featured image (16/9, matching /tips/ as-shipped) */
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-featured-image {
  display: block;
  aspect-ratio: 16/9;
  background: var(--wp--preset--color--surface);
  overflow: hidden;
  margin: 0;
  border-radius: 0;
  width: 100%;
}
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-featured-image a,
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-featured-image img {
  display: block;
  width: 100%;
  height: 100%;
}
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-featured-image img {
  object-fit: cover;
  object-position: center center;
}

/* Empty-image fallback (monogram) */
.ts-latest-tips-grid-wrapper .ts-tips-card__image-fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  aspect-ratio: 16/9;
  background: linear-gradient(135deg, var(--wp--preset--color--surface) 0%, var(--wp--preset--color--bg) 100%);
  position: relative;
}
.ts-latest-tips-grid-wrapper .ts-tips-card__image-fallback::before {
  content: attr(data-monogram);
  font-family: 'DM Sans', sans-serif;
  font-size: 64px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.05em;
  color: rgba(237, 75, 86, 0.35);
}
.ts-latest-tips-grid-wrapper .ts-tips-card__image-fallback::after {
  content: '';
  position: absolute;
  inset: auto 0 0 0;
  height: 1px;
  background: rgba(26, 20, 20, 0.05);
}

/* Card body */
.ts-latest-tips-grid-wrapper .ts-tips-card__body {
  display: flex;
  flex-direction: column;
  padding: 24px;
  flex: 1 1 auto;
}

/* Badge row (ghost variant) */
.ts-latest-tips-grid-wrapper .ts-tips-card-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 12px 0;
  padding: 0;
  list-style: none;
  position: relative;
  z-index: 2;
}
.ts-latest-tips-grid-wrapper .ts-tips-card-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 24px;
  padding: 0 10px;
  border-radius: 9999px;
  background: var(--wp--preset--color--accent-soft);
  border: 1px solid transparent;
  color: var(--wp--preset--color--primary-accessible, var(--wp--preset--color--primary-accessible));
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1;
  text-transform: lowercase;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  position: relative;
  z-index: 2;
  transition:
    background 150ms ease,
    border-color 150ms ease,
    color 150ms ease;
}
.ts-latest-tips-grid-wrapper .ts-tips-card-badge:hover {
  background: var(--wp--preset--color--accent-medium);
  border-color: var(--wp--preset--color--accent-strong);
  color: var(--wp--preset--color--primary, var(--wp--preset--color--primary));
}
.ts-latest-tips-grid-wrapper .ts-tips-card-badge:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--wp--preset--color--accent-strong);
}

/* Card title (H3) with stretched-link */
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-title {
  font-family: 'DM Sans', sans-serif;
  font-size: clamp(20px, 1.6vw, 22px);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.02em;
  color: var(--wp--preset--color--ink);
  margin: 0 0 12px 0;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-title a {
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  color: inherit;
  text-decoration: none;
  outline: none;
}
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-title a::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  cursor: pointer;
  border-radius: 16px;
}
.ts-latest-tips-grid-wrapper .ts-tips-card:hover .wp-block-post-title,
.ts-latest-tips-grid-wrapper .ts-tips-card:hover .wp-block-post-title a,
.ts-latest-tips-grid-wrapper .ts-tips-card:focus-within .wp-block-post-title,
.ts-latest-tips-grid-wrapper .ts-tips-card:focus-within .wp-block-post-title a {
  color: var(--wp--preset--color--primary, var(--wp--preset--color--primary));
}

/* Card excerpt (2 lines desktop, 3 lines mobile) */
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-excerpt {
  margin: 0;
}
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-excerpt__excerpt,
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-excerpt p {
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 15px;
  font-weight: 400;
  line-height: 1.55;
  color: var(--wp--preset--color--ink-2);
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-excerpt__more-link,
.ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-excerpt__more-text {
  display: none !important;
}

/* Meta row */
.ts-latest-tips-grid-wrapper .ts-tips-card-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 16px 0 0 0;
  font-family: 'DM Mono', monospace;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1.4;
  color: var(--wp--preset--color--muted);
}
.ts-latest-tips-grid-wrapper .ts-tips-card-meta__sep {
  display: inline-block;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: rgba(140, 125, 125, 0.50);
  flex-shrink: 0;
}
.ts-latest-tips-grid-wrapper .ts-tips-card-meta time,
.ts-latest-tips-grid-wrapper .ts-tips-card-meta .ts-byline {
  font-family: 'DM Mono', monospace;
  font-size: 12px;
  color: var(--wp--preset--color--muted);
  letter-spacing: 0.04em;
}
.ts-latest-tips-grid-wrapper .ts-tips-card-meta .ts-byline--guest {
  color: var(--wp--preset--color--ink-2);
}

/* Focus ring on card via :has(...:focus-visible) */
.ts-latest-tips-grid-wrapper .ts-tips-card.wp-block-post:has(.wp-block-post-title a:focus-visible) {
  box-shadow:
    0 0 0 3px var(--wp--preset--color--accent-strong),
    0 2px 8px rgba(26, 20, 20, 0.06),
    0 12px 32px rgba(26, 20, 20, 0.09);
  border-color: var(--wp--preset--color--accent-medium);
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .ts-latest-tips-grid-wrapper .ts-tips-card.wp-block-post,
  .ts-latest-tips-grid-wrapper .ts-tips-card.wp-block-post:hover {
    transform: none;
    transition: border-color 150ms ease, box-shadow 150ms ease, color 150ms ease;
  }
}

/* Tablet: keep 3 cols at >=768px, gap polish only */
@media (min-width: 601px) and (max-width: 1024px) {
  .ts-latest-tips-grid-wrapper > .wp-block-query > .wp-block-post-template,
  .ts-latest-tips-grid-wrapper .wp-block-post-template.is-layout-grid {
    gap: 24px;
  }
}

/* Mobile: single column under 600px (matches /tips/) */
@media (max-width: 600px) {
  .ts-latest-tips-grid-wrapper > .wp-block-query > .wp-block-post-template,
  .ts-latest-tips-grid-wrapper .wp-block-post-template.is-layout-grid {
    grid-template-columns: 1fr;
    gap: 20px;
    padding: 0 4px;
  }
  .ts-latest-tips-grid-wrapper .ts-tips-card__body {
    padding: 20px;
  }
  .ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-title {
    font-size: 19px;
  }
  .ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-excerpt__excerpt,
  .ts-latest-tips-grid-wrapper .ts-tips-card .wp-block-post-excerpt p {
    -webkit-line-clamp: 3;
  }
  .ts-latest-tips-grid-wrapper .ts-tips-card-meta {
    margin-top: 12px;
  }
}

/* --- Founder bio: sticky photo column (relocated 2026-08-20 from the pattern
   inline <style> so the section is 100 percent native core blocks, no raw
   wp:html). Breakpoint is min-width 782px to match WordPress core columns
   side-by-side threshold, so the photo only turns sticky once the columns
   actually sit side by side (QA fix, was 768px which overlapped the pull
   quotes onto the portrait in the 768 to 781px band). --- */
@media (min-width: 782px) {
    .ts-bio-photo-col {
        position: sticky;
        top: 32px;
        align-self: flex-start;
    }
}

/* --- Mobile nav overlay: comfortable tap target (2026-08-21, Ward) ---
   Mobile menu links (Home, Coaching, Training, Speaking, Tips, Contact) were
   computing at roughly 22px tall, below the 44px comfortable-touch guideline.
   Scoped strictly to the block library's own mobile breakpoint (the hamburger
   toggle button that opens this menu is itself hidden above 599px via
   `@media (min-width: 600px)` in Gutenberg's navigation/style.min.css), so
   this cannot affect the desktop nav row, logo or wordmark. !important
   matches the rest of this file's convention for overriding WP.com block
   library defaults, needed here to beat the block library's own
   `.is-menu-open ... { padding: 0px; }` rule when the menu is actually open. */
@media (max-width: 599px) {
    .wp-block-navigation .wp-block-navigation-item__content {
        min-height: 44px !important;
        padding: 11px 0 !important;
    }
}

/* ============================================================
   Ward 2026-08-24 : canonical block-markup remediation.
   These rules reproduce visuals that valid core-block
   serialization does not emit inline (position, flex,
   list-style, border-style, button weight). They replace
   non-canonical inline block styles that broke Gutenberg
   block validation ("onverwachte of ongeldige inhoud").
   ============================================================ */
.ts-process-step { position: relative; border-left: 1px solid var(--wp--preset--color--border); }
.ts-process-step:last-child { border-left: 0; }
.ts-step-number { position: absolute; left: -24px; top: -8px; }
.ts-platform-badges-row { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
.ts-footer-nav { list-style: none; }
.ts-site-footer { border-top-style: solid; }
.ts-footer-bottom { border-top-style: solid; }
.ts-newsletter-band { border-top-style: solid; }
.wp-block-button.is-style-ghost .wp-block-button__link { font-weight: 600; }
.ts-media-frame { max-width: 260px; margin-left: auto; margin-right: auto; overflow: hidden; box-shadow: 0 4px 16px rgba(0,0,0,0.10); }
