/*
Theme Name: The Coding Bus
Theme URI: https://thecodingbus.info
Description: Kadence child theme for The Coding Bus. Built by Flashcloud.
Author: Flashcloud
Template: kadence
Version: 1.0.0
*/

/* ============================================================
   1. FONTS (self-hosted variable woff2, latin subset)
   Drop the woff2 files into ./fonts/ at scaffold time.
   ============================================================ */
@font-face{font-family:"Space Grotesk";src:url("fonts/display-var.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"Inter";src:url("fonts/body-var.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}

/* ============================================================
   2. TOKENS
   Five config colors (#0B2545/#2563EB/#F4F8FD/#122A44/#5B7288)
   plus derived shades via color-mix. Replace any derived value
   with a hand-picked hex when the brand kit has one.
   ============================================================ */
:root{
  --th-primary:#0B2545;                                        /* primary section ground + heading ink */
  --th-primary-900:color-mix(in srgb,#0B2545,#000 38%);        /* deepest ground (footer, hero base) */
  --th-primary-700:color-mix(in srgb,#0B2545,#fff 12%);        /* mid shade */
  --th-accent:#2563EB;                                          /* ACTION: buttons, links, focus */
  --th-accent-600:color-mix(in srgb,#2563EB,#000 18%);          /* button hover */
  --th-accent-300:color-mix(in srgb,#2563EB,#fff 42%);          /* link on dark */
  --th-accent-2:color-mix(in srgb,#2563EB,#0B2545 40%);     /* second accent; replace if the brand has one */
  --th-accent-ink:#fff;                                  /* ink on a full-accent fill (button/submit/accent-stat labels). #fff default; set dark for a light or volt accent so text stays readable */
  --th-bg:#F4F8FD;                                                  /* page ground (painted on BODY only) */
  --th-bg-2:color-mix(in srgb,#F4F8FD,#fff 45%);                    /* lighter alt section ground */
  --th-ink:#122A44;                                               /* body text on page ground */
  --th-text-muted:#5B7288;                                       /* secondary text */
  --th-text-ondark:color-mix(in srgb,#fff,#0B2545 8%);
  --th-text-ondark-muted:color-mix(in srgb,#fff,#0B2545 32%);
  --th-line:color-mix(in srgb,#5B7288,#F4F8FD 65%);               /* hairline / card border */
  --th-line-dark:rgba(255,255,255,.16);
  --th-card:#fff;                                                  /* card ground; flip for dark-register builds */
  --th-font-display:"Space Grotesk",Georgia,serif;
  --th-font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  /* skin tokens: baked by flash render from cfg "skin" (classic/sharp/soft/editorial/compact) */
  --th-r-sm:8px;--th-r-md:14px;--th-r-lg:18px;--th-r-pill:999px;--th-btn-r:14px;
  --th-shadow-card:0 14px 38px -18px rgba(0,0,0,.24);
  --th-shadow-soft:0 6px 20px -10px rgba(0,0,0,.18);
  --th-container:1180px;
}

/* ============================================================
   3. FRAME KILLERS (Kadence light-theme defaults, edge-to-edge)
   Page bg on BODY only. Never .site-container: it cascades
   into dark footer rows.
   ============================================================ */
body{background:var(--th-bg);color:var(--th-ink);font-family:var(--th-font-body);font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased}
.site-container,.content-container,.content-area,.site-main,.entry-content,
.content-bg,body.content-style-unboxed .site{background:transparent}  /* .site: Kadence paints var(--global-palette9) on unboxed pages */
.single-page .entry-content,.page .entry-content{margin-top:0!important}
.content-area{margin:0!important}
.page .entry-hero,.entry-hero.page-hero-section{display:none!important}
.page .entry-content>*{margin-top:0;margin-bottom:0}
.wp-site-blocks>main{flex:0 0 auto!important}
.entry-content .wp-block-group,.single-page .entry-content{max-width:none}

/* ============================================================
   4. TYPOGRAPHY + PRIMITIVES
   ============================================================ */
h1,h2,h3,h4{font-family:var(--th-font-display);font-weight:600;line-height:1.14;letter-spacing:-.01em;color:var(--th-primary)}
a{color:var(--th-accent)}
.th-wrap{max-width:var(--th-container);margin:0 auto;padding:0 40px}
.th-section{padding:84px 0}
.th-center{text-align:center}
.th-eyebrow{font-family:var(--th-font-body);font-size:12.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--th-accent-2);margin:0 0 14px}
.th-eyebrow.on-dark{color:var(--th-accent-300)}
.th-lede{font-size:1.22rem;line-height:1.62;color:var(--th-text-muted);max-width:62ch}
.th-secthead{max-width:680px;margin:0 auto 42px}
.th-secthead h2{font-size:clamp(1.9rem,3vw,2.6rem);margin:0 0 12px}
.th-secthead .th-lede{margin-left:auto;margin-right:auto}

/* buttons: accent is the action colour */
.th-btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--th-font-body);font-weight:600;font-size:1rem;padding:.9rem 1.65rem;border-radius:var(--th-btn-r);text-decoration:none;border:1.5px solid transparent;transition:background .2s,color .2s,border-color .2s;cursor:pointer;line-height:1}
/* button label colors carry !important: these anchors render inside
   the_content, where Kadence content link styling otherwise recolors them
   (a primary button then shows near-invisible ink on its own accent fill) */
.th-btn-primary{background:var(--th-accent);color:var(--th-accent-ink)!important}
.th-btn-primary:hover{background:var(--th-accent-600);color:var(--th-accent-ink)!important}
.th-btn-ghost{background:transparent;color:#fff!important;border-color:rgba(255,255,255,.46)}
.th-btn-ghost:hover{background:rgba(255,255,255,.12);color:#fff!important}
.th-btn-ghost.on-light{color:var(--th-primary)!important;border-color:var(--th-primary)}
.th-btn-ghost.on-light:hover{background:var(--th-primary);color:#fff!important}
/* cta_band sits on the accent gradient, so its primary action inverts to
   white for contrast (renderer emits -btn-gold there) */
.th-btn-gold{background:#fff;color:var(--th-primary)!important}
.th-btn-gold:hover{background:var(--th-primary-900);color:#fff!important}

/* ============================================================
   5. HERO (Home)
   ============================================================ */
.th-hero{position:relative;min-height:660px;display:flex;align-items:center;background:var(--th-primary-900);
  width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.34}
.th-hero::after{content:"";position:absolute;inset:0;background:
  linear-gradient(120deg,color-mix(in srgb,var(--th-primary-900),transparent 6%) 0%,color-mix(in srgb,var(--th-primary),transparent 22%) 46%,color-mix(in srgb,var(--th-primary),transparent 58%) 100%)}
.th-hero-inner{position:relative;z-index:2;width:100%;display:grid;grid-template-columns:1.05fr .95fr;gap:54px;align-items:center;padding:120px 0 96px}
.th-hero-h{font-size:clamp(2.6rem,5vw,3.9rem);color:#fff;max-width:16ch;margin:18px 0 0;line-height:1.04}
.th-hero-h .acc{color:var(--th-accent-300)}
.th-hero-lede{color:var(--th-text-ondark);font-size:clamp(1.08rem,1.4vw,1.22rem);line-height:1.6;max-width:48ch;margin:22px 0 0}
.th-hero-cta{display:flex;gap:14px 22px;flex-wrap:wrap;align-items:center;margin-top:32px}
.th-hero-fig{position:relative;aspect-ratio:4/3;border-radius:var(--th-r-lg);overflow:hidden;box-shadow:0 30px 70px -24px rgba(0,0,0,.65);border:1px solid rgba(255,255,255,.14)}
.th-hero-fig img{width:100%;height:100%;object-fit:cover}

/* ============================================================
   6. PAGE HERO (interior pages, compact)
   ============================================================ */
.th-pagehero{position:relative;overflow:hidden;background:var(--th-primary);color:var(--th-text-ondark);
  padding:118px 0 66px;text-align:center;
  width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-pagehero::before{content:"";position:absolute;inset:0;background:var(--th-pagehero-bg) center/cover;opacity:.16}
.th-pagehero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--th-primary),transparent 45%),color-mix(in srgb,var(--th-primary-900),transparent 15%))}
.th-pagehero .th-wrap{position:relative;z-index:2}
.th-pagehero h1{font-size:clamp(2.2rem,4vw,3.2rem);color:#fff;margin:0 0 14px}
.th-pagehero .th-lede{margin:0 auto;color:var(--th-text-ondark-muted)}
.th-pagehero .th-eyebrow{color:var(--th-accent-300)}

/* page_hero VARIANTS (2026-07-09): interior pages stop sharing one hat.
   minimal / oversize / split sit on the page ground, left aligned; photo
   is a real graded photo with the panel treatment (readability law). */
.th-pagehero.is-minimal,.th-pagehero.is-oversize,.th-pagehero.is-split{
  background:var(--th-bg);color:var(--th-ink);text-align:left;padding:126px 0 30px}
.th-pagehero.is-minimal::before,.th-pagehero.is-minimal::after,
.th-pagehero.is-oversize::before,.th-pagehero.is-oversize::after,
.th-pagehero.is-split::before,.th-pagehero.is-split::after{content:none}
.th-pagehero.is-minimal h1,.th-pagehero.is-oversize h1,.th-pagehero.is-split h1{color:var(--th-ink)}
.th-pagehero.is-minimal .th-lede,.th-pagehero.is-oversize .th-lede,
.th-pagehero.is-split .th-lede{color:var(--th-text-muted);margin:0}
.th-pagehero.is-minimal .th-eyebrow,.th-pagehero.is-oversize .th-eyebrow,
.th-pagehero.is-split .th-eyebrow{color:var(--th-accent-600)}
/* minimal: hairline rule closes the title block */
.th-pagehero.is-minimal .th-wrap{border-bottom:1px solid var(--th-line);padding-bottom:34px}
.th-pagehero.is-minimal .th-lede{max-width:60ch;margin-top:12px}
/* oversize: editorial scale, lede offset right on desktop */
.th-pagehero.is-oversize{padding:150px 0 44px}
.th-pagehero.is-oversize h1{font-size:clamp(2.9rem,6.6vw,5.4rem);letter-spacing:-.01em;line-height:1.03;margin:0}
.th-pagehero.is-oversize .th-lede{max-width:44ch;margin:26px 0 0 auto}
/* split: title left, graded photo card right */
.th-pagehero.is-split{padding:118px 0 44px}
.th-pagehero.is-split .th-wrap{display:grid;grid-template-columns:1.25fr 1fr;gap:48px;align-items:center}
.th-pagehero.is-split .th-lede{margin-top:12px}
.th-pagehero-fig{position:relative;aspect-ratio:16/10;border-radius:var(--th-r-lg);overflow:hidden;box-shadow:var(--th-shadow-card)}
.th-pagehero-fig img{width:100%;height:100%;object-fit:cover}
/* photo: full photo band, copy on the tinted blurred panel */
.th-pagehero.is-photo{display:flex;align-items:flex-end;min-height:46vh;padding:118px 0 40px;
  text-align:left;background:var(--th-primary-900)}
.th-pagehero.is-photo::before{content:none}
.th-pagehero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.th-pagehero.is-photo::after{background:linear-gradient(180deg,rgba(0,0,0,.14),color-mix(in srgb,var(--th-primary-900),transparent 30%))}
.th-pagehero.is-photo .th-wrap{width:100%}
.th-pagehero-panel{max-width:640px;padding:clamp(22px,3vw,34px) clamp(24px,3vw,38px);
  background:color-mix(in srgb,var(--th-primary-900),transparent 44%);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.12);border-radius:var(--th-r-lg)}
.th-pagehero-panel h1{margin:0 0 10px}
.th-pagehero.is-photo .th-lede{margin:0}

/* Blog/post archive title (e.g. the posts page). Kadence's default archive
   hero is a pale palette band; restyle it to the brand page hero so a blog
   listing matches the interior pages. */
.post-archive-hero-section.entry-hero{background:var(--th-primary)!important;padding:118px 0 66px}
.post-archive-hero-section .entry-hero-container-inner{background:transparent!important}  /* Kadence paints this palette7 */
.post-archive-hero-section .hero-section-overlay{display:none!important}
.post-archive-hero-section .entry-header{min-height:0;text-align:center}
.post-archive-hero-section .archive-title,.post-archive-hero-section h1{font-family:var(--th-font-display);color:#fff!important;font-size:clamp(2.2rem,4vw,3.2rem);line-height:1.1;margin:0}

/* ============================================================
   7. PROMISE BAND (stats / markers)
   ============================================================ */
.th-promise{background:var(--th-bg);width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);border-bottom:1px solid var(--th-line)}
.th-promise>.th-wrap{max-width:var(--th-container);margin:0 auto;padding:54px 40px}
.th-promise-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.th-promise-grid:has(>.th-pcard:nth-child(4):last-child){grid-template-columns:repeat(2,1fr)}
.th-pcard{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-md);padding:30px 28px;box-shadow:var(--th-shadow-soft)}
.th-pcard-ic{width:48px;height:48px;border-radius:12px;background:color-mix(in srgb,var(--th-accent),#fff 88%);color:var(--th-accent);display:flex;align-items:center;justify-content:center;margin-bottom:16px}
.th-pcard-ic svg{width:24px;height:24px}
.th-pcard h3{font-size:1.3rem;color:var(--th-primary);margin:0 0 8px}
.th-pcard p{font-size:.98rem;color:var(--th-text-muted);line-height:1.55;margin:0}

/* ============================================================
   8. FULL-BLEED SECTION GROUNDS
   100vw escape: width:100vw + margin-left:calc(50% - 50vw).
   ============================================================ */
.th-bg2{background:var(--th-bg-2);width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-bg2>.th-wrap{max-width:var(--th-container);margin:0 auto;padding:0 40px}
.th-dark{background:var(--th-primary);color:var(--th-text-ondark);width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-dark>.th-wrap{max-width:var(--th-container);margin:0 auto;padding:0 40px}
.th-dark h2,.th-dark h3,.th-dark h4{color:#fff!important}
.th-dark p{color:var(--th-text-ondark-muted)}

/* ============================================================
   9. CARD GRID (services / faculties / offerings)
   ============================================================ */
.th-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.th-cards:has(>.th-card:nth-child(4):last-child){grid-template-columns:repeat(2,1fr)}
.th-card{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-md);overflow:hidden;box-shadow:var(--th-shadow-card);display:flex;flex-direction:column;text-decoration:none;transition:transform .2s,box-shadow .2s}
a.th-card:hover{transform:translateY(-3px);box-shadow:0 22px 48px -20px rgba(0,0,0,.32)}
.th-card-ph{aspect-ratio:16/9;position:relative;overflow:hidden;background:var(--th-primary-700)}
.th-card-ph img{width:100%;height:100%;object-fit:cover}
.th-card-body{padding:24px 24px 26px;display:flex;flex-direction:column;flex:1}
.th-card h3{font-size:1.18rem;color:var(--th-primary);line-height:1.2;margin:0 0 8px}
.th-card p{font-size:.95rem;color:var(--th-text-muted);line-height:1.55;margin:0 0 16px}
.th-card-go{margin-top:auto;font-weight:600;color:var(--th-accent);font-size:.94rem}
/* cards that are NOT links (no detail page yet) lose the hover cursor */
span.th-card{cursor:default}

/* ============================================================
   10. SPLIT PROSE (image + text) and long-form prose
   ============================================================ */
.th-split{display:grid;grid-template-columns:1fr 1fr;gap:54px;align-items:center}
.th-split.img-right .th-split-fig{order:2}
.th-split-text h2{font-size:clamp(1.7rem,2.6vw,2.4rem);margin:12px 0 16px}
.th-split-text p{font-size:1.08rem;line-height:1.65;margin:0 0 16px}
.th-split-text .th-btn{margin-top:10px}
.th-split-text .th-hero-cta{margin-top:22px}
.th-split-text .th-hero-cta .th-btn{margin-top:0}
.th-split-fig{aspect-ratio:4/3;border-radius:var(--th-r-lg);overflow:hidden;box-shadow:var(--th-shadow-card)}
.th-split-fig img{width:100%;height:100%;object-fit:cover}
.th-dark .th-split-text p{color:var(--th-text-ondark-muted)}
.th-dark .th-split-text p strong{color:#fff}

/* prose-only (legal / about long copy): single readable column */
.th-prose{max-width:760px;margin:0 auto}
.th-prose h2{font-size:clamp(1.5rem,2.3vw,1.95rem);margin:30px 0 14px}
.th-prose h3{font-size:1.25rem;margin:24px 0 10px}
.th-prose p{font-size:1.06rem;line-height:1.7;color:var(--th-ink);margin:0 0 16px}
.th-prose ul{margin:0 0 16px 1.2rem;line-height:1.7}
.th-prose li{margin-bottom:8px}
.th-prose a{color:var(--th-accent);text-decoration:underline}
.th-prose strong{color:var(--th-primary)}

/* ============================================================
   11. FEATURE / PEOPLE CARDS (about, leadership, testimonials)
   ============================================================ */
.th-features{display:grid;grid-template-columns:repeat(2,1fr);gap:26px;max-width:840px;margin:0 auto}
.th-features.is-single{grid-template-columns:1fr;max-width:680px}
.th-feature{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-md);padding:28px;box-shadow:var(--th-shadow-soft)}
.th-feature.has-photo{display:flex;gap:24px;align-items:center;padding:24px}
.th-feature-ph{flex:none;width:128px;height:128px;border-radius:14px;overflow:hidden;background:var(--th-primary-700)}
.th-feature-ph img{width:100%;height:100%;object-fit:cover;object-position:top center}
.th-feature .role{font-size:.78rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--th-accent-2)}
.th-feature h3{font-size:1.3rem;color:var(--th-primary);margin:8px 0 6px}
.th-feature p{font-size:.97rem;color:var(--th-text-muted);line-height:1.6;margin:0}
@media(max-width:560px){.th-feature.has-photo{flex-direction:column;text-align:center}.th-feature-ph{width:110px;height:110px}}

/* ============================================================
   12. CONTACT BLOCK
   ============================================================ */
.th-contact-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:50px;align-items:start}
.th-contact-stack h2{font-size:1.9rem;margin:12px 0 24px}
.th-contact-row{display:flex;gap:16px;align-items:flex-start;margin-bottom:22px}
.th-contact-ic{width:46px;height:46px;flex:none;border-radius:12px;background:color-mix(in srgb,var(--th-accent),#fff 88%);display:flex;align-items:center;justify-content:center}
.th-contact-ic svg{width:22px;height:22px;color:var(--th-accent)}
.th-contact-row b{font-family:var(--th-font-display);font-size:1.05rem;color:var(--th-primary);display:block;margin-bottom:2px}
.th-contact-row span,.th-contact-row a{color:var(--th-text-muted);font-size:1rem;text-decoration:none}
.th-contact-row a:hover{color:var(--th-accent)}
.th-portal-links{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.th-portal-links a{color:var(--th-accent);font-weight:600;text-decoration:none;font-size:1rem}
.th-portal-links a:hover{text-decoration:underline}
.th-wa{display:inline-flex;align-items:center;gap:10px;background:#25D366;color:#0b3d23;font-weight:700;padding:.85rem 1.5rem;border-radius:var(--th-r-md);text-decoration:none;margin-top:6px}
.th-wa:hover{background:#1ebe5a;color:#0b3d23}
.th-wa svg{width:22px;height:22px;fill:#0b3d23}
.th-links{margin-top:26px;border-top:1px solid var(--th-line);padding-top:22px;display:flex;flex-direction:column;gap:12px}
.th-links a{display:inline-flex;align-items:center;gap:8px;color:var(--th-accent);font-weight:600;text-decoration:none}
.th-links a:hover{color:var(--th-accent-600)}
.th-form-card{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-lg);box-shadow:var(--th-shadow-card);padding:34px}
.th-form-card h3{font-size:1.5rem;margin:0 0 6px}
.th-form-sub{color:var(--th-text-muted);font-size:.97rem;margin:0 0 22px}
/* WPForms branded */
/* !important: WPForms' own CSS loads after the theme and wins otherwise —
   invisible on light cards, black-on-black on dark registers (ironworks) */
.th-form-card .wpforms-field-label{font-family:var(--th-font-body);font-weight:600;font-size:.9rem;color:var(--th-ink)!important}
.th-form-card .wpforms-field-sublabel,.th-form-card .wpforms-field-description{color:var(--th-text-muted)!important}
.th-form-card .wpforms-field input[type=text],
.th-form-card .wpforms-field input[type=email],
.th-form-card .wpforms-field textarea,
.th-form-card .wpforms-field select{border:1.5px solid var(--th-line)!important;border-radius:10px!important;background:color-mix(in srgb,var(--th-card),var(--th-bg) 25%)!important;color:var(--th-ink)!important;font-family:var(--th-font-body)!important;padding:.8rem 1rem!important}
/* native selects clip padded text: kill the native chrome, give it room + our chevron */
.th-form-card .wpforms-field select{-webkit-appearance:none!important;appearance:none!important;height:auto!important;min-height:0!important;line-height:1.4!important;padding:.8rem 2.8rem .8rem 1rem!important;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 14px center!important;background-size:18px 18px!important;text-overflow:ellipsis}
.th-form-card .wpforms-field input:focus,
.th-form-card .wpforms-field textarea:focus,
.th-form-card .wpforms-field select:focus{border-color:var(--th-accent)!important;outline:none!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--th-accent),transparent 84%)!important}
.th-form-card .wpforms-submit{background:var(--th-accent)!important;color:var(--th-accent-ink)!important;border:none!important;font-family:var(--th-font-body)!important;font-weight:700!important;font-size:1.02rem!important;padding:.85rem 2rem!important;border-radius:var(--th-r-md)!important;cursor:pointer;transition:background .2s}
.th-form-card .wpforms-submit:hover{background:var(--th-accent-600)!important;color:var(--th-accent-ink)!important}
.th-form-card .wpforms-required-label{color:#A22916}

/* ============================================================
   13. PREFOOTER / CTA BAND (accent, the action band)
   ============================================================ */
/* accent ground deepened into the accent-600/800 range: a mid accent sits at
   ~3.2:1 for white body text, so the lighter brass/gold end failed AA. The
   deeper ground clears it while keeping the accent moment. */
.th-cta{background:linear-gradient(120deg,color-mix(in srgb,var(--th-accent),#000 20%),color-mix(in srgb,var(--th-accent),#000 36%));text-align:center;padding:80px 0;
  width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-cta .th-wrap{max-width:760px;margin:0 auto;padding:0 40px}
.th-cta h2{font-size:clamp(1.9rem,2.8vw,2.6rem);color:#fff!important;margin:0 0 14px}
.th-cta .th-lede{margin:0 auto 28px;color:rgba(255,255,255,.94)}
/* secondary (ghost) action must read as a button on accent/photo/dark grounds:
   a translucent deep-primary pane behind the label + a stronger outline, else
   a faint outline + white label drowns on a mid accent or a busy photo */
.th-cta .th-btn-ghost{border-color:rgba(255,255,255,.9);background:color-mix(in srgb,var(--th-primary-900),transparent 32%)}
.th-cta .th-btn-ghost:hover{background:var(--th-primary-900);border-color:var(--th-primary-900);color:#fff!important}
.th-cta-row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}

/* ============================================================
   15. HERO VARIANTS (variety library)
   ============================================================ */
/* full-bleed photo hero */
.th-herofull{position:relative;min-height:78vh;display:flex;align-items:flex-end;background:var(--th-primary-900);
  width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-herofull-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.th-herofull::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.18) 0%,rgba(0,0,0,.08) 40%,color-mix(in srgb,var(--th-primary-900),transparent 22%) 100%)}
.th-herofull-inner{position:relative;z-index:2;width:100%;padding:130px 40px 72px;max-width:var(--th-container);margin:0 auto;
  display:flex;flex-direction:column;align-items:flex-start}
/* THE TEXT PANEL: type sits on a tinted, blurred card — plain text (even
   with shadows) drowned on busy photos three more times on 2026-07-08
   (greenstone, elcamion, kornblume). The eyebrow chip stays inside it. */
.th-herofull-panel{max-width:700px;padding:clamp(28px,4vw,44px) clamp(28px,4vw,48px);
  background:color-mix(in srgb,var(--th-primary-900),transparent 44%);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.12);border-radius:var(--th-r-lg)}
/* over a photo the eyebrow gets a translucent chip — plain text drowned on
   busy photos even with a shadow (Nickola, twice, 2026-07-06) */
.th-herofull .th-eyebrow{display:inline-block;color:#fff;background:rgba(8,8,8,.4);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:8px 16px;border-radius:var(--th-r-pill);
  border:1px solid rgba(255,255,255,.22);text-shadow:none;margin-bottom:18px}
.th-herofull h1{font-size:clamp(2.5rem,5vw,3.9rem);color:#fff;max-width:17ch;margin:14px 0 0;line-height:1.05;text-shadow:0 2px 24px rgba(0,0,0,.35)}
.th-herofull h1 .acc{color:var(--th-accent-300)}
.th-herofull-lede{color:var(--th-text-ondark);font-size:clamp(1.08rem,1.4vw,1.24rem);line-height:1.6;max-width:52ch;margin:20px 0 0;text-shadow:0 1px 12px rgba(0,0,0,.4)}
.th-herofull.is-center .th-herofull-inner{align-items:center}
.th-herofull.is-center .th-herofull-panel{text-align:center}
.th-herofull.is-center h1,.th-herofull.is-center .th-herofull-lede{margin-left:auto;margin-right:auto}
.th-herofull.is-center .th-hero-cta{justify-content:center}
/* variant 'stack': full-bleed photo band on top, the text box sits BELOW it on
   the solid ground (leaves the picture uncovered). Opt-in per section. */
.th-herofull.is-stack{display:block;min-height:0}
.th-herofull.is-stack::after{display:none}
.th-herofull.is-stack .th-herofull-bg{position:relative;inset:auto;height:clamp(320px,50vh,560px);display:block}
.th-herofull.is-stack .th-herofull-inner{padding:clamp(36px,6vw,66px) clamp(22px,5vw,40px);align-items:center;text-align:center}
.th-herofull.is-stack .th-herofull-panel{max-width:820px;background:none;border:0;padding:0;
  -webkit-backdrop-filter:none;backdrop-filter:none}
.th-herofull.is-stack .th-eyebrow{background:none;border:0;padding:0;margin-bottom:6px;
  -webkit-backdrop-filter:none;backdrop-filter:none;color:var(--th-accent-300)}
.th-herofull.is-stack h1{margin-left:auto;margin-right:auto;text-shadow:none}
.th-herofull.is-stack .th-herofull-lede{margin-left:auto;margin-right:auto;text-shadow:none}
.th-herofull.is-stack .th-hero-cta{justify-content:center}

/* type-only hero */
.th-heromin{padding:170px 0 96px;text-align:center;
  width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-heromin h1{font-size:clamp(2.8rem,6.5vw,5rem);line-height:1.04;margin:14px 0 0;letter-spacing:-.015em}
.th-heromin h1 .acc{color:var(--th-accent)}
.th-heromin .th-lede{margin:24px auto 0;max-width:54ch}
.th-heromin .th-hero-cta{justify-content:center;margin-top:34px}
.th-heromin.th-dark{padding:170px 0 96px}
.th-heromin.th-dark h1{color:#fff}
.th-heromin.th-dark h1 .acc{color:var(--th-accent-300)}
.th-heromin.th-dark .th-lede{color:var(--th-text-ondark-muted)}

/* contained card hero: content floats in a card on a tinted ground */
.th-herocard{position:relative;padding:150px 0 84px;background:color-mix(in srgb,var(--th-accent),var(--th-bg) 92%);
  width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-herocard-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.16}
.th-herocard .th-wrap{position:relative;z-index:2}
.th-herocard-card{max-width:820px;margin:0 auto;text-align:center;background:var(--th-card);border:1px solid var(--th-line);
  border-radius:var(--th-r-lg);box-shadow:var(--th-shadow-card);padding:clamp(40px,6vw,72px)}
.th-herocard-card h1{font-size:clamp(2.3rem,4.6vw,3.6rem);line-height:1.06;margin:14px 0 0}
.th-herocard-card h1 .acc{color:var(--th-accent)}
.th-herocard-card .th-lede{margin:20px auto 0;max-width:52ch}
.th-herocard-card .th-hero-cta{justify-content:center;margin-top:30px}

/* editorial duo hero: type left, two offset portraits right */
.th-heroduo{padding:150px 0 84px;width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-heroduo-inner{display:grid;grid-template-columns:1.05fr 1fr;gap:56px;align-items:center;max-width:var(--th-container);margin:0 auto;padding:0 40px}
.th-heroduo-text h1{font-size:clamp(2.5rem,5vw,4rem);line-height:1.04;margin:14px 0 0;letter-spacing:-.015em}
.th-heroduo-text h1 .acc{color:var(--th-accent)}
.th-heroduo-text .th-lede{margin:20px 0 0;max-width:46ch}
.th-heroduo-text .th-hero-cta{margin-top:30px}
.th-heroduo-figs{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
.th-heroduo-fig{margin:0;border-radius:var(--th-r-lg);overflow:hidden;box-shadow:var(--th-shadow-card)}
.th-heroduo-fig img{width:100%;height:100%;aspect-ratio:3/4;object-fit:cover;display:block}
.th-heroduo-fig.is-late{margin-top:44px}

/* video hero: shares the herofull layout, adds the looping media layer */
.th-herovid-media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
@media (prefers-reduced-motion:reduce){.th-herovid-media{display:none}}

/* hero ticker: slim facts bar attached under a type hero
   (doubled class beats .heromin.dark's padding shorthand) */
.th-heroticker.th-heroticker{padding-bottom:0}
.th-ticker{margin-top:64px;border-top:1px solid var(--th-line);border-bottom:1px solid var(--th-line);
  display:flex;flex-wrap:wrap;justify-content:center;gap:14px 54px;padding:18px 22px}
.th-heroticker.th-dark .th-ticker{border-color:var(--th-line-dark)}
.th-ticker-item{display:inline-flex;align-items:center;gap:10px}
.th-ticker-ic{display:flex;color:var(--th-accent)}
.th-ticker-ic svg{width:18px;height:18px}
.th-ticker-l{font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--th-text-muted)}
.th-ticker-v{font-weight:600;color:var(--th-ink)}
.th-heroticker.th-dark .th-ticker-l{color:var(--th-text-ondark-muted)}
.th-heroticker.th-dark .th-ticker-v{color:#fff}

/* ============================================================
   16. STATS BAND
   ============================================================ */
.th-stats{padding:64px 0;width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-stats.th-dark{background:var(--th-primary)}
.th-stats.is-accent{background:linear-gradient(120deg,var(--th-accent),var(--th-accent-600))}
.th-stats.th-bg2{border-top:1px solid var(--th-line);border-bottom:1px solid var(--th-line);padding:64px 0}
.th-stats-grid{display:grid;grid-template-columns:repeat(var(--n,3),1fr);gap:28px;max-width:var(--th-container);margin:0 auto;padding:0 40px;text-align:center}
/* reserve two lines for the value and bottom-align it, so a band that mixes
   one-line values ("240") with two-line ones ("County Cup 2026") keeps every
   label on a common baseline instead of staggering row to row */
.th-stat-v{display:flex;align-items:flex-end;justify-content:center;min-height:2.1em;font-family:var(--th-font-display);font-size:clamp(2.1rem,3.4vw,3rem);font-weight:600;line-height:1.05;color:var(--th-primary)}
.th-stats.th-dark .th-stat-v{color:#fff}
.th-stats.is-accent .th-stat-v{color:var(--th-accent-ink)}
.th-stat-l{display:block;margin-top:8px;font-size:.86rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--th-text-muted)}
.th-stats.th-dark .th-stat-l{color:var(--th-text-ondark-muted)}
.th-stats.is-accent .th-stat-l{color:color-mix(in srgb,var(--th-accent-ink),var(--th-accent) 18%)}

/* ============================================================
   17. MENU / PRICE LIST
   ============================================================ */
.th-menu-list{max-width:720px;margin:0 auto}
.th-menu-item{padding:14px 0;border-bottom:1px dashed color-mix(in srgb,var(--th-line),transparent 20%)}
.th-menu-item:last-child{border-bottom:0}
.th-menu-line{display:flex;align-items:baseline;gap:12px}
.th-menu-name{font-family:var(--th-font-display);font-size:1.14rem;font-weight:600;color:var(--th-primary)}
.th-menu-tag{font-family:var(--th-font-body);font-style:normal;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--th-accent);border:1px solid color-mix(in srgb,var(--th-accent),transparent 55%);border-radius:var(--th-r-pill);padding:2px 9px;margin-left:8px;vertical-align:2px}
.th-menu-dots{flex:1;border-bottom:2px dotted color-mix(in srgb,var(--th-text-muted),transparent 55%);transform:translateY(-4px)}
.th-menu-price{font-family:var(--th-font-display);font-weight:600;font-size:1.08rem;color:var(--th-ink);white-space:nowrap}
.th-menu-note{margin:6px 0 0;font-size:.95rem;color:var(--th-text-muted);max-width:56ch}
.th-menu-foot{margin:26px auto 0;max-width:720px;text-align:center;font-size:.9rem;color:var(--th-text-muted)}
/* under card grids (plans, schedules, fact cards) the footnote needs air,
   not a tucked-in caption */
.th-price-grid+.th-menu-foot,.th-sched-grid+.th-menu-foot,
.th-eventd-grid+.th-menu-foot,.th-product-grid+.th-menu-foot{margin-top:44px}

/* ============================================================
   18. TIMELINE
   ============================================================ */
.th-timeline{list-style:none;margin:0 auto;padding:0;max-width:640px;position:relative}
.th-timeline::before{content:"";position:absolute;left:7px;top:8px;bottom:8px;width:2px;background:color-mix(in srgb,var(--th-accent),transparent 65%)}
.th-tl-item{position:relative;padding:0 0 34px 42px}
.th-tl-item:last-child{padding-bottom:0}
.th-tl-item::before{content:"";position:absolute;left:0;top:6px;width:16px;height:16px;border-radius:50%;background:var(--th-bg);border:3px solid var(--th-accent)}
.th-tl-marker{font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--th-accent-2)}
.th-tl-body h3{font-size:1.25rem;margin:4px 0 6px}
.th-tl-body p{font-size:1rem;color:var(--th-text-muted);line-height:1.6;margin:0}

/* ============================================================
   19. FAQ ACCORDION
   ============================================================ */
.th-faq-list{max-width:720px;margin:0 auto}
.th-faq-item{border:1px solid var(--th-line);border-radius:var(--th-r-md);background:var(--th-card);margin-bottom:12px;box-shadow:var(--th-shadow-soft);overflow:hidden}
.th-faq-item summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 22px;font-family:var(--th-font-display);font-weight:600;font-size:1.08rem;color:var(--th-primary)}
.th-faq-item summary::-webkit-details-marker{display:none}
.th-faq-x{flex:none;position:relative;width:18px;height:18px}
.th-faq-x::before,.th-faq-x::after{content:"";position:absolute;inset:auto;left:0;top:8px;width:18px;height:2px;background:var(--th-accent);transition:transform .2s}
.th-faq-x::after{transform:rotate(90deg)}
.th-faq-item[open] .th-faq-x::after{transform:rotate(0)}
.th-faq-a{padding:0 22px 20px;color:var(--th-text-muted)}
.th-faq-a p{margin:0 0 10px;line-height:1.65}

/* ============================================================
   20. MASONRY GALLERY
   ============================================================ */
.th-masonry{columns:3 300px;column-gap:18px}
/* lightbox (functions.php builds it on first click) */
.th-lightbox{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;
  background:rgba(10,10,12,.92);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.th-lightbox.is-open{display:flex}
.th-lightbox figure{margin:0;max-width:min(92vw,1400px);display:flex;flex-direction:column;align-items:center;gap:12px}
.th-lightbox img{max-width:100%;max-height:80vh;object-fit:contain;border-radius:var(--th-r-md);box-shadow:0 30px 80px rgba(0,0,0,.5)}
.th-lightbox figcaption{color:#fff;opacity:.85;font-size:.95rem;text-align:center;padding:0 60px}
.th-lightbox button{position:absolute;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.22);color:#fff;
  width:46px;height:46px;border-radius:50%;font-size:26px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}
.th-lightbox button:hover{background:rgba(255,255,255,.2)}
.th-lightbox .lb-close{top:18px;right:18px}
.th-lightbox .lb-prev{left:14px;top:50%;transform:translateY(-50%)}
.th-lightbox .lb-next{right:14px;top:50%;transform:translateY(-50%)}
@media(max-width:782px){.th-lightbox .lb-prev{left:6px}.th-lightbox .lb-next{right:6px}
  .th-lightbox button{width:40px;height:40px;font-size:22px}.th-lightbox figcaption{padding:0 20px}}
.th-mas-item{break-inside:avoid;margin:0 0 18px;border-radius:var(--th-r-md);overflow:hidden;position:relative;box-shadow:var(--th-shadow-soft)}
.th-mas-item img{width:100%;display:block}
.th-mas-item figcaption{position:absolute;left:0;right:0;bottom:0;padding:34px 16px 13px;font-size:.86rem;color:#fff;background:linear-gradient(180deg,transparent 0,rgba(0,0,0,.16) 32%,rgba(0,0,0,.6) 64%,rgba(0,0,0,.88) 100%)}

/* ============================================================
   21. PRICING CARDS
   ============================================================ */
.th-price-grid{display:grid;grid-template-columns:repeat(var(--n,3),1fr);gap:24px;align-items:stretch}
.th-price-card{position:relative;background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-lg);padding:32px 28px;box-shadow:var(--th-shadow-soft);display:flex;flex-direction:column}
.th-price-card.is-featured{border-color:var(--th-accent);box-shadow:0 24px 54px -22px color-mix(in srgb,var(--th-accent),#000 30%)}
.th-price-flag{position:absolute;top:-13px;left:50%;transform:translateX(-50%);background:var(--th-accent);color:#fff;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:4px 14px;border-radius:var(--th-r-pill);white-space:nowrap}
.th-price-card h3{font-size:1.25rem;margin:0 0 10px}
.th-price-p{margin:0 0 8px}
.th-price-v{font-family:var(--th-font-display);font-size:2.2rem;font-weight:600;color:var(--th-primary)}
.th-price-per{color:var(--th-text-muted);font-size:.95rem;margin-left:6px}
.th-price-b{color:var(--th-text-muted);font-size:.95rem;margin:0 0 14px}
/* Discount treatment: struck-through original price sits before the live price,
   and a bold accent pill spells out the saving so the offer reads at a glance. */
.th-price-was{font-family:var(--th-font-display);font-size:1.3rem;font-weight:500;color:var(--th-text-muted);text-decoration:line-through;text-decoration-thickness:2px;margin-right:10px}
.th-price-save{align-self:flex-start;background:var(--th-accent);color:var(--th-accent-ink,#fff);font-size:.82rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:5px 13px;border-radius:var(--th-r-pill);margin:0 0 14px}
.th-price-f{list-style:none;margin:0 0 22px;padding:14px 0 0;border-top:1px solid var(--th-line);flex:1}
.th-price-f li{padding:5px 0 5px 26px;position:relative;font-size:.96rem;color:var(--th-ink)}
.th-price-f li::before{content:"";position:absolute;left:2px;top:12px;width:12px;height:7px;border-left:2px solid var(--th-accent);border-bottom:2px solid var(--th-accent);transform:rotate(-45deg)}
.th-price-card .th-btn{justify-content:center}

/* ============================================================
   22. KEY FACTS / EVENT DETAILS
   ============================================================ */
.th-eventd-grid{display:grid;grid-template-columns:repeat(var(--n,3),1fr);gap:24px}
.th-eventd-grid:has(>.th-eventd-card:nth-child(6):last-child){grid-template-columns:repeat(3,1fr)}
.th-eventd-card{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-md);padding:30px 26px;text-align:center;box-shadow:var(--th-shadow-soft)}
.th-eventd-card .th-pcard-ic{margin:0 auto 14px}
.th-eventd-l{display:block;font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--th-accent-2);margin-bottom:6px}
.th-eventd-card h3{font-size:1.3rem;margin:0 0 6px;overflow-wrap:break-word;word-break:break-word;hyphens:none}
.th-eventd-card p{font-size:.94rem;color:var(--th-text-muted);line-height:1.55;margin:0}
/* 4-up quick-facts cards are narrow: a long value (email, address) overflows or
   breaks mid-word at 1.3rem, so shrink the value on the 4-up grid only. */
.th-eventd-grid[style*="--n:4"] .th-eventd-card{padding-left:16px;padding-right:16px}
.th-eventd-grid[style*="--n:4"] .th-eventd-card h3{font-size:1rem}

/* ============================================================
   23. FORM BAND (RSVP / booking / request)
   ============================================================ */
.th-formband-card{max-width:640px;margin:0 auto;text-align:center}
.th-formband-card h2{font-size:clamp(1.9rem,3vw,2.6rem);margin:0 0 12px}
.th-formband-card h2 .acc{color:var(--th-accent)}
.th-form-card.is-bare{text-align:left}
.th-formband-note{margin:18px 0 0;font-size:.9rem;color:var(--th-text-muted)}

/* ============================================================
   24. BADGE STRIP + BIG QUOTE
   ============================================================ */
.th-badges{padding:38px 0;border-top:1px solid var(--th-line);border-bottom:1px solid var(--th-line);
  width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-badges-t{text-align:center;font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--th-text-muted);margin:0 0 18px}
.th-badges-row{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:20px 44px}
.th-badge{font-family:var(--th-font-display);font-weight:600;font-size:1.05rem;color:var(--th-text-muted)}
.th-badge img{height:44px;width:auto;display:block;opacity:.82}

.th-quote blockquote{max-width:820px;margin:0 auto;text-align:center;border:0;padding:0}
.th-quote-q{font-family:var(--th-font-display);font-size:clamp(1.5rem,2.6vw,2.1rem);line-height:1.4;color:var(--th-primary);margin:0 0 22px}
.th-quote-q::before{content:"\201C\2009"}
.th-quote-q::after{content:"\2009\201D"}
.th-dark .th-quote-q{color:#fff}
.th-quote-by{font-size:.95rem;font-weight:600;color:var(--th-accent-2)}
.th-quote-by span{font-weight:400;color:var(--th-text-muted)}
.th-dark .th-quote-by{color:var(--th-accent-300)}
.th-dark .th-quote-by span{color:var(--th-text-ondark-muted)}

/* ============================================================
   25. TEAM CARDS
   ============================================================ */
.th-team-grid{display:grid;grid-template-columns:repeat(var(--n,3),1fr);gap:24px}
.th-team-card{text-align:center;background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-md);padding:30px 24px;box-shadow:var(--th-shadow-soft)}
.th-team-ph{display:block;width:132px;height:132px;border-radius:50%;overflow:hidden;margin:0 auto 16px;background:var(--th-primary-700)}
.th-team-ph img{width:100%;height:100%;object-fit:cover;object-position:top center}
/* no portrait yet: a designed monogram beats an empty card */
.th-team-ph.is-initials,.th-feature-ph.is-initials{display:flex;align-items:center;justify-content:center;
  font-family:var(--th-font-display);font-weight:600;color:#fff;letter-spacing:.02em;
  background:linear-gradient(135deg,var(--th-primary),var(--th-primary-700))}
.th-team-ph.is-initials{font-size:2.5rem}
.th-feature-ph.is-initials{font-size:2.1rem}
.th-team-card h3{font-size:1.2rem;margin:0 0 2px}
.th-team-card .role{font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--th-accent-2);display:block;margin-bottom:10px}
.th-team-card p{font-size:.94rem;color:var(--th-text-muted);line-height:1.55;margin:0}

/* ============================================================
   26. VARIETY V2: BEFORE/AFTER, VIDEO, TESTIMONIALS, MAP,
       HOURS, STEPS, CHECKLIST, PRODUCTS, SCHEDULE, PROFILE,
       COUNTDOWN, SOCIAL ROW
   ============================================================ */
/* before/after compare slider */
.th-ba-frame{position:relative;max-width:880px;margin:0 auto;aspect-ratio:16/10;border-radius:var(--th-r-lg);overflow:hidden;box-shadow:var(--th-shadow-card);border:1px solid var(--th-line)}
.th-ba-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.th-ba-beforewrap{position:absolute;inset:0;width:50%;overflow:hidden;border-right:2px solid #fff}
.th-ba-beforewrap img{width:auto;height:100%;max-width:none;aspect-ratio:16/10}
.th-ba-range{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0;z-index:3}
.th-ba-handle{position:absolute;top:50%;left:50%;z-index:2;width:40px;height:40px;border-radius:50%;background:#fff;transform:translate(-50%,-50%);box-shadow:0 4px 16px rgba(0,0,0,.35);pointer-events:none}
.th-ba-handle::before,.th-ba-handle::after{content:"";position:absolute;top:14px;width:7px;height:12px;border:solid var(--th-primary);border-width:2px 0 2px 2px;transform:rotate(45deg) skew(8deg,8deg)}
.th-ba-handle::before{left:8px;transform:rotate(135deg)}
.th-ba-handle::after{right:8px;transform:rotate(-45deg)}
.th-ba-tag{position:absolute;bottom:14px;z-index:2;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#fff;background:rgba(8,8,8,.5);padding:5px 12px;border-radius:var(--th-r-pill);pointer-events:none}
.th-ba-tag.is-before{left:14px}
.th-ba-tag.is-after{right:14px}

/* video */
.th-video-frame{max-width:880px;margin:0 auto;aspect-ratio:16/9;border-radius:var(--th-r-lg);overflow:hidden;box-shadow:var(--th-shadow-card);background:#000}
.th-video-frame iframe{width:100%;height:100%;border:0;display:block}

/* testimonial grid */
.th-testi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;align-items:stretch}
/* height:100% forces each flex-column card to fill its grid row track, so cards
   in the same row match height even when one quote is much shorter (a short
   quote otherwise left its card at content height, out of step with rowmates).
   Rows stay auto, so on the 1-column mobile layout cards size to content. */
.th-testi{height:100%;background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-md);padding:26px 24px;margin:0;box-shadow:var(--th-shadow-soft);display:flex;flex-direction:column}
.th-testi-stars{color:var(--th-accent);letter-spacing:3px;font-size:.95rem;margin-bottom:10px}
.th-testi blockquote{border:0;margin:0 0 14px;padding:0;font-size:1rem;line-height:1.6;color:var(--th-ink)}
.th-testi figcaption{margin-top:auto;font-weight:600;font-size:.9rem;color:var(--th-accent-2)}
.th-testi figcaption span{font-weight:400;color:var(--th-text-muted)}

/* full-width map band */
.th-mapband{position:relative;width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);height:460px}
.th-mapband iframe{width:100%;height:100%;border:0;display:block}
.th-mapband-card{position:absolute;top:44px;left:max(40px,calc(50% - var(--th-container)/2 + 40px));background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-lg);box-shadow:var(--th-shadow-card);padding:26px 28px;max-width:340px}
.th-mapband-card h3{font-size:1.3rem;margin:0 0 10px}
.th-mapband-card p{font-size:.95rem;color:var(--th-text-muted);line-height:1.55;margin:0 0 10px}
.th-mapband-card .th-btn{margin-top:6px}

/* opening hours */
.th-hours-list{max-width:520px;margin:0 auto}
.th-hours-row{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:2px 18px;padding:11px 0;border-bottom:1px dashed color-mix(in srgb,var(--th-line),transparent 20%)}
.th-hours-row:last-child{border-bottom:0}
.th-hours-d{font-family:var(--th-font-display);font-weight:600;color:var(--th-primary);white-space:nowrap;flex:0 0 auto}
.th-hours-h{font-weight:600;color:var(--th-ink);text-align:right}
@media(max-width:600px){.th-hours-row{flex-direction:column;align-items:flex-start;gap:1px}.th-hours-h{text-align:left}}
.th-hours-row.is-closed .th-hours-d,.th-hours-row.is-closed .th-hours-h{color:var(--th-text-muted);font-weight:400}
.th-dark .th-hours-d{color:#fff}
.th-dark .th-hours-h{color:var(--th-text-ondark)}

/* numbered steps */
.th-steps-row{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--n,3),1fr);gap:26px;counter-reset:step}
.th-step{position:relative;padding:0 8px}
.th-step-n{display:flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:50%;background:color-mix(in srgb,var(--th-accent),#fff 86%);color:var(--th-accent);font-family:var(--th-font-display);font-weight:700;font-size:1.25rem;margin-bottom:14px}
.th-step h3{font-size:1.15rem;margin:0 0 6px}
.th-step p{font-size:.95rem;color:var(--th-text-muted);line-height:1.55;margin:0}

/* icon checklist */
/* THREE columns for symmetry; content rule: SIX items (or three) — four
   or five leave an asymmetric grid (Nickola, 2026-07-08) */
.th-featlist-grid{list-style:none;margin:0 auto;padding:0;max-width:1080px;display:grid;grid-template-columns:repeat(3,1fr);gap:16px 40px}
/* legacy 4-item lists degrade to a clean 2x2 rather than an orphan row */
.th-featlist-grid:has(>li:nth-child(4):last-child){max-width:820px;grid-template-columns:repeat(2,1fr)}
.th-featlist-grid li{display:flex;gap:14px;align-items:flex-start;font-size:1.02rem;line-height:1.5}
.th-featlist-ic{flex:none;width:34px;height:34px;border-radius:10px;background:color-mix(in srgb,var(--th-accent),#fff 88%);color:var(--th-accent);display:flex;align-items:center;justify-content:center}
.th-featlist-ic svg{width:19px;height:19px}

/* product cards */
.th-product-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.th-product-grid:has(>.th-product:nth-child(4):last-child){grid-template-columns:repeat(2,1fr)}
.th-product{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-md);overflow:hidden;box-shadow:var(--th-shadow-soft)}
.th-product-ph{display:block;position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--th-primary-700)}
.th-product-ph img{width:100%;height:100%;object-fit:cover}
.th-product-tag{position:absolute;top:12px;right:12px;font-style:normal;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:var(--th-accent);color:#fff;padding:4px 10px;border-radius:var(--th-r-pill)}
.th-product-body{padding:18px 20px 20px}
.th-product-line{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.th-product-line h3{font-size:1.12rem;margin:0}
.th-product-price{font-family:var(--th-font-display);font-weight:600;color:var(--th-accent-2);white-space:nowrap}
.th-product-body p{font-size:.92rem;color:var(--th-text-muted);line-height:1.5;margin:8px 0 0}
/* per-card partner/affiliate link (opens in a new tab) */
.th-product-cta{align-self:flex-start;margin-top:16px;padding:.62rem 1.2rem;font-size:.9rem;color:var(--th-primary)!important;border-color:var(--th-line)}
.th-product-cta:hover{background:var(--th-primary)!important;border-color:var(--th-primary);color:#fff!important}
/* logo variant: brand marks contained on a clean white pad, no photo grade */
.th-products.is-logos .th-product{display:flex;flex-direction:column}
.th-products.is-logos .th-product-ph{aspect-ratio:16/9;background:#fff;border-bottom:1px solid var(--th-line)}
.th-products.is-logos .th-product-ph img{object-fit:contain;padding:26px 40px;filter:none}
.th-products.is-logos .th-product-ph::after{display:none}
.th-products.is-logos .th-product-body{flex:1;display:flex;flex-direction:column;align-items:flex-start}

/* weekly schedule day cards */
.th-sched-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:18px}
.th-sched-day{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-md);padding:22px;box-shadow:var(--th-shadow-soft)}
.th-sched-day h3{font-size:1.02rem;margin:0 0 12px;padding-bottom:10px;border-bottom:2px solid color-mix(in srgb,var(--th-accent),transparent 65%)}
.th-sched-row{display:flex;gap:10px;padding:5px 0;font-size:.93rem;line-height:1.45}
.th-sched-row b{flex:none;color:var(--th-accent-2);font-weight:700;min-width:52px}
.th-sched-row span{color:var(--th-ink)}

/* profile intro */
.th-profile-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:56px;align-items:center}
.th-profile-grid.img-right .th-profile-ph{order:2}
.th-profile-ph{aspect-ratio:3/4;border-radius:var(--th-r-lg);overflow:hidden;box-shadow:var(--th-shadow-card)}
.th-profile-ph img{width:100%;height:100%;object-fit:cover}
.th-profile-body h2{font-size:clamp(1.9rem,3.2vw,2.7rem);margin:10px 0 4px}
.th-profile-body h2 .acc{color:var(--th-accent)}
.th-profile-role{font-size:.86rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--th-accent-2);margin:0 0 18px}
.th-profile-body p{font-size:1.06rem;line-height:1.68;margin:0 0 14px}
.th-profile-body .th-btn{margin-top:8px}

/* countdown */
.th-cd{display:flex;justify-content:center;gap:clamp(18px,4vw,44px);margin-top:26px}
.th-cd-cell b{display:block;font-family:var(--th-font-display);font-weight:600;font-size:clamp(2.4rem,5vw,3.6rem);line-height:1;color:var(--th-primary)}
.th-dark .th-cd-cell b{color:#fff}
.th-cd-cell i{display:block;font-style:normal;margin-top:8px;font-size:.8rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--th-text-muted)}
.th-dark .th-cd-cell i{color:var(--th-text-ondark-muted)}

/* footer social row (footer widgets embed lucide SVGs inline) */
.th-social{display:flex;gap:12px;margin-top:16px}
.th-social a{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;border:1px solid var(--th-line-dark);color:inherit;transition:background .2s,border-color .2s}
.th-social a:hover{background:var(--th-accent);border-color:var(--th-accent);color:#fff}
.th-social svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

/* language switcher (Polylang menu items): compact codes in the header, never full names */
.site-header .lang-item>a{font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;opacity:.75}
.site-header .lang-item.current-lang>a{opacity:1}
.site-header .lang-item img{width:16px;height:auto;border-radius:2px;vertical-align:-2px}
/* render adjacent codes as a "NL | EN" pair */
.site-header .lang-item + .lang-item>a::before{content:"|";opacity:.45;margin-right:.5em;font-weight:400}
/* mobile header switcher (functions.php clones the codes beside the menu button) */
.th-mob-lang{display:flex;align-items:center;margin-right:10px}
.th-mob-lang a{color:var(--th-text-ondark)!important;font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;opacity:.75;text-decoration:none}
.th-mob-lang a.current-lang{opacity:1}
.th-mob-lang a + a::before{content:"|";opacity:.45;margin:0 .5em;font-weight:400}
/* the codes now live in the mobile header bar; drop the duplicate switcher
   items from inside the hamburger drawer so the nav list stays clean */
.mobile-navigation .lang-item{display:none}

/* ============================================================
   14. RESPONSIVE
   ============================================================ */
@media(max-width:1024px){
  .th-hero-inner{grid-template-columns:1fr;gap:36px;padding:110px 0 72px}
  .th-hero-fig{max-width:560px}
  .th-cards{grid-template-columns:repeat(2,1fr)}
  .th-promise-grid{grid-template-columns:repeat(3,1fr);gap:18px}
  .th-promise-grid:has(>.th-pcard:nth-child(4):last-child){grid-template-columns:repeat(2,1fr)}
}
@media(max-width:782px){
  .th-section{padding:58px 0}
  .th-wrap,.th-bg2>.th-wrap,.th-dark>.th-wrap,.th-cta .th-wrap,.th-promise>.th-wrap{padding-left:22px;padding-right:22px}
  .th-hero{min-height:0}
  .th-hero-inner{padding-top:104px;padding-bottom:60px}
  .th-hero-h{font-size:clamp(2.1rem,8vw,2.7rem)}
  .th-cards{grid-template-columns:1fr}
  .th-promise-grid{grid-template-columns:1fr;gap:16px}
  .th-split{grid-template-columns:1fr;gap:28px}
  .th-split.img-right .th-split-fig{order:0}
  .th-features{grid-template-columns:1fr}
  .th-contact-grid{grid-template-columns:1fr;gap:32px}
  .th-contact-row span,.th-contact-row a{font-size:.92rem;overflow-wrap:anywhere}
  .th-pagehero{padding:94px 0 50px}
  .th-pagehero.is-split .th-wrap{grid-template-columns:1fr;gap:24px}
  .th-pagehero-fig{aspect-ratio:16/9}
  .th-pagehero.is-oversize{padding:110px 0 36px}
  .th-pagehero.is-oversize .th-lede{margin:18px 0 0}
  .th-pagehero.is-minimal,.th-pagehero.is-split{padding:100px 0 26px}
  .th-pagehero.is-photo{min-height:38vh;padding:100px 0 26px}
  .post-archive-hero-section.entry-hero{padding:94px 0 50px}
  .th-form-card{padding:24px}
  .th-herofull{min-height:66vh}
  .th-herofull-inner{padding:130px 22px 60px}
  .th-heromin{padding:130px 0 70px}
  .th-herocard{padding:118px 0 60px}
  .th-herocard-card{padding:34px 24px}
  .th-herocard-card h1{font-size:clamp(1.95rem,7.2vw,2.6rem)}
  .th-heroduo{padding:118px 0 60px}
  .th-heroduo-inner{grid-template-columns:1fr;gap:34px;padding:0 22px}
  .th-heroduo-figs{gap:12px}
  .th-heroduo-fig.is-late{margin-top:24px}
  .th-heroticker.th-heroticker{padding-bottom:0}
  .th-ticker{margin-top:44px;gap:10px 26px;flex-direction:column;align-items:center}
  .th-stats-grid{grid-template-columns:repeat(2,1fr);gap:22px;padding:0 22px}
  .th-stats-grid:has(> :nth-child(3):last-child){grid-template-columns:1fr;gap:26px}
  .th-price-grid,.th-eventd-grid,.th-team-grid{grid-template-columns:1fr}
  .th-masonry{columns:2 160px;column-gap:12px}
  .th-mas-item{margin-bottom:12px}
  .th-menu-line{flex-wrap:wrap}
  .th-menu-dots{min-width:40px}
  .th-testi-grid,.th-product-grid,.th-product-grid:has(>.th-product:nth-child(4):last-child){grid-template-columns:1fr}
  .th-steps-row{grid-template-columns:1fr;gap:20px}
  .th-featlist-grid,.th-featlist-grid:has(>li:nth-child(4):last-child){grid-template-columns:1fr;gap:12px;max-width:520px}
  .th-profile-grid{grid-template-columns:1fr;gap:30px}
  .th-profile-grid.img-right .th-profile-ph{order:0}
  .th-profile-ph{max-width:340px}
  .th-mapband{height:auto}
  .th-mapband iframe{height:300px}
  .th-mapband-card{position:static;max-width:none;margin:-8px 22px 22px;box-shadow:var(--th-shadow-soft)}
  .th-ba-frame{aspect-ratio:4/3}
}
@media(max-width:1024px) and (min-width:783px){
  .th-testi-grid,.th-product-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:1024px) and (min-width:783px){
  .th-price-grid[style*="--n:4"],.th-eventd-grid[style*="--n:4"],.th-team-grid[style*="--n:4"]{grid-template-columns:repeat(2,1fr)}
}

/* ============================================================
   27. BLOG — POSTS INDEX + SINGLE POST
   A blog's whole point is reading, so the posts index and the
   post template get the editorial treatment, not the Kadence
   defaults. Scoped to .post-archive (the posts list) and
   .single-entry (the post template); pages are untouched.
   Pairs with the hooks in functions.php (§6).
   ============================================================ */

/* --- posts index: intro line inside the page hero (posts page excerpt) --- */
.th-archive-intro{max-width:52ch;margin:16px auto 0;color:var(--th-text-ondark-muted);
  font-family:var(--th-font-body);font-size:clamp(1.02rem,1.4vw,1.16rem);line-height:1.6;text-align:center}

/* --- posts index: breathing room + grid rhythm --- */
.blog #primary .content-area{padding:0}
#archive-container.post-archive{padding:78px 0 96px!important;column-gap:34px!important;row-gap:52px!important}
@media(max-width:782px){#archive-container.post-archive{padding:52px 0 68px!important;row-gap:34px!important}}

/* --- post card --- */
.post-archive .entry.loop-entry{background:var(--th-card);border:1px solid var(--th-line);
  border-radius:var(--th-r-md);box-shadow:none!important;overflow:hidden;display:flex;flex-direction:column;
  transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.post-archive .entry-list-item:hover .entry.loop-entry{transform:translateY(-4px);
  box-shadow:0 24px 50px -24px color-mix(in srgb,var(--th-primary),transparent 66%);
  border-color:color-mix(in srgb,var(--th-accent),var(--th-line) 50%)}
/* image: one consistent landscape ratio for every card, zoom on hover */
.post-archive .loop-entry .post-thumbnail{padding-bottom:64%!important;background:var(--th-primary-700)}
.post-archive .loop-entry .post-thumbnail img{width:100%;height:100%;object-fit:cover;transition:transform .55s ease}
.post-archive .entry-list-item:hover .loop-entry .post-thumbnail img{transform:scale(1.045)}
/* body */
.post-archive .loop-entry .entry-content-wrap{padding:26px 26px 28px;display:flex;flex-direction:column;flex:1}
.post-archive .loop-entry .entry-header{margin:0}
/* category label -> accent eyebrow, matches the site */
.post-archive .entry-taxonomies{margin:0 0 12px;font-size:0}
.post-archive .category-links a{font-family:var(--th-font-body);font-size:12px;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;color:var(--th-accent-2);text-decoration:none;transition:color .2s}
.post-archive .category-links a:hover{color:var(--th-accent)}
/* title */
.post-archive .loop-entry .entry-title{font-family:var(--th-font-display);font-size:1.4rem;line-height:1.22;
  letter-spacing:-.01em;margin:0 0 12px}
.post-archive .loop-entry .entry-title a{color:var(--th-primary);text-decoration:none;
  background-image:linear-gradient(var(--th-accent),var(--th-accent));background-size:0 2px;
  background-repeat:no-repeat;background-position:0 100%;transition:background-size .3s ease}
.post-archive .entry-list-item:hover .loop-entry .entry-title a{background-size:100% 2px}
/* meta: date only (single author, so "By ..." on every card is noise) */
.post-archive .loop-entry .entry-meta{font-size:.82rem;color:var(--th-text-muted);margin:0 0 14px}
.post-archive .loop-entry .entry-meta .posted-by{display:none}
.post-archive .loop-entry .entry-meta .updated{display:none}
/* summary */
.post-archive .loop-entry .entry-summary{margin:0}
.post-archive .loop-entry .entry-summary p{color:var(--th-text-muted);font-size:1rem;line-height:1.6;margin:0}
/* read more -> accent link like the rest of the site (bottom-aligned so the
   link sits on one line across the row regardless of summary length) */
.post-archive .loop-entry .entry-footer{margin:20px 0 0;padding:0;border:0}
.post-archive .loop-entry .entry-content-wrap>.entry-footer{margin-top:auto;padding-top:20px}
.post-archive .loop-entry .more-link-wrap{margin:0}
.post-archive .loop-entry .post-more-link{display:inline-flex;align-items:center;gap:.45rem;
  font-family:var(--th-font-body);font-weight:600;font-size:.92rem;letter-spacing:0;text-transform:none;
  color:var(--th-accent);text-decoration:none;transition:color .2s}
.post-archive .loop-entry .post-more-link:hover{color:var(--th-accent-600)}
.post-archive .loop-entry .post-more-link svg{width:16px;height:14px;transition:transform .2s ease}
.post-archive .entry-list-item:hover .loop-entry .post-more-link svg{transform:translateX(4px)}

/* ============================================================
   28. SINGLE POST TEMPLATE
   ============================================================ */
body.single-post .single-entry{background:transparent}
/* one comfortable reading column (~68 chars) for BLOG POSTS only; pages use
   the full-width section builder, so scope to body.single (posts get that
   class, pages get .page) or the 720px cap cramps every non-bleed section */
body.single .single-entry .entry-content-wrap{max-width:720px;margin:0 auto;padding:64px 24px 44px}
@media(max-width:782px){body.single .single-entry .entry-content-wrap{padding:44px 22px 32px}}
/* back to the posts index */
.th-post-back{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--th-font-body);
  font-weight:600;font-size:.9rem;letter-spacing:.01em;color:var(--th-accent);text-decoration:none;margin-bottom:30px}
.th-post-back span{transition:transform .2s ease}
.th-post-back:hover{color:var(--th-accent-600)}
.th-post-back:hover span{transform:translateX(-3px)}
/* opener: category eyebrow + big display title + clean meta line */
body.single-post .single-entry .entry-header{margin:0 0 8px;text-align:left}
body.single-post .single-entry .entry-taxonomies{margin:0 0 14px;font-size:0}
body.single-post .single-entry .entry-taxonomies .category-links a{font-family:var(--th-font-body);font-size:12.5px;
  font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--th-accent-2);text-decoration:none}
body.single-post .single-entry .entry-taxonomies .category-links a:hover{color:var(--th-accent)}
body.single-post .single-entry .entry-title{font-family:var(--th-font-display);font-size:clamp(2.1rem,4vw,3rem);
  line-height:1.1;letter-spacing:-.015em;color:var(--th-primary);margin:0 0 16px}
/* meta: date only. The name is already the site title + footer, and the
   category sits right above as the eyebrow, so a byline is noise (and Kadence
   jams "By" against the name on narrow screens). */
body.single-post .single-entry .entry-header .entry-meta{font-size:.9rem;color:var(--th-text-muted);margin:0}
body.single-post .single-entry .entry-header .entry-meta .posted-by{display:none}
body.single-post .single-entry .entry-header .entry-meta .updated{display:none}
/* featured image, framed at column width, sits below the opener */
body.single-post .single-entry .article-post-thumbnail{margin:26px 0 40px;padding-bottom:0!important;height:auto!important;
  border-radius:var(--th-r-lg);overflow:hidden;box-shadow:var(--th-shadow-card);border:1px solid var(--th-line)}
body.single-post .single-entry .article-post-thumbnail .post-thumbnail-inner{position:static}
body.single-post .single-entry .article-post-thumbnail img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
/* the prose */
body.single-post .single-entry .entry-content.single-content{font-size:1.13rem;line-height:1.78;color:var(--th-ink)}
body.single-post .single-entry .single-content>p{margin:0 0 1.4em}
body.single-post .single-entry .single-content>p:first-of-type{font-size:1.24rem;line-height:1.6;color:var(--th-primary)}
body.single-post .single-entry .single-content h2{font-family:var(--th-font-display);font-size:clamp(1.5rem,2.4vw,1.95rem);
  line-height:1.2;color:var(--th-primary);margin:1.9em 0 .5em}
body.single-post .single-entry .single-content h3{font-family:var(--th-font-display);font-size:1.32rem;color:var(--th-primary);margin:1.6em 0 .4em}
.single-entry .single-content :is(p,li) a{color:var(--th-accent);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
.single-entry .single-content :is(p,li) a:hover{color:var(--th-accent-600)}
body.single-post .single-entry .single-content strong{color:var(--th-primary)}
body.single-post .single-entry .single-content blockquote{border-left:3px solid var(--th-accent);margin:1.6em 0;padding:.2em 0 .2em 1.3em;
  font-family:var(--th-font-display);font-size:1.3rem;line-height:1.45;color:var(--th-primary)}
body.single-post .single-entry .single-content ul,body.single-post .single-entry .single-content ol{margin:0 0 1.4em 1.2rem;line-height:1.7}
body.single-post .single-entry .single-content li{margin-bottom:.5em}
/* tags footer */
body.single-post .single-entry .entry-footer{margin:38px 0 0;padding:24px 0 0;border-top:1px solid var(--th-line)}
body.single-post .single-entry .entry-tags .tags-links{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
body.single-post .single-entry .entry-tags a{font-family:var(--th-font-body);font-size:.82rem;font-weight:600;color:var(--th-text-muted);
  text-decoration:none;border:1px solid var(--th-line);border-radius:var(--th-r-pill);padding:5px 14px;transition:color .2s,border-color .2s}
body.single-post .single-entry .entry-tags a:hover{color:var(--th-accent);border-color:var(--th-accent)}

/* prev/next navigation, aligned to the reading column */
.post-navigation{max-width:720px;margin:0 auto;padding:8px 24px 84px}
.post-navigation .nav-links{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.post-navigation .nav-previous{grid-column:1}
.post-navigation .nav-next{grid-column:2;text-align:right}
.post-navigation .nav-links a{display:block;height:100%;border:1px solid var(--th-line);border-radius:var(--th-r-md);
  padding:18px 22px;text-decoration:none;background:var(--th-card);transition:border-color .2s,box-shadow .2s,transform .2s;
  font-family:var(--th-font-display);font-size:1.12rem;line-height:1.25;color:var(--th-primary)}
.post-navigation .nav-links a:hover{border-color:color-mix(in srgb,var(--th-accent),var(--th-line) 45%);
  box-shadow:0 18px 40px -26px color-mix(in srgb,var(--th-primary),transparent 66%);transform:translateY(-2px)}
.post-navigation .post-navigation-sub{margin-bottom:8px}
.post-navigation .post-navigation-sub small{display:inline-flex;align-items:center;gap:.4rem;
  font-family:var(--th-font-body);font-size:.74rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--th-accent-2)}
.post-navigation .nav-next .post-navigation-sub small{flex-direction:row-reverse}
.post-navigation .post-navigation-sub svg{width:16px;height:13px}
@media(max-width:640px){
  .post-navigation{padding-bottom:56px}
  .post-navigation .nav-links{grid-template-columns:1fr}
  .post-navigation .nav-next{grid-column:1;text-align:left}
  .post-navigation .nav-next .post-navigation-sub small{flex-direction:row}
}

/* ============================================================
   29. AD v2 — PER-SKIN PHOTO GRADE (2026-07-08)
   Imagery gets a palette-coherent grade so photos from mixed
   sources read as one composed set. The recipe (filter + tinted
   overlay + blend) bakes per skin at render via {{GRADE_*}};
   cfg "photo_grade": "none" opts a ticket out entirely.
   Deliberately excluded: the lightbox (zoomed photos stay true),
   before/after frames (the comparison must stay honest), and
   the small team/feature portraits (too small to grade well).
   ============================================================ */
.th-card-ph img,.th-split-fig img,.th-hero-fig img,
.th-heroduo-fig img,.th-mas-item img,.th-product-ph img,
.th-profile-ph img,.th-strip-item img,.th-zig-fig img,
.th-accmedia-fig img,.th-pagehero-fig img,
.th-hero-bg,.th-herofull-bg,.th-herocard-bg,.th-cta-bg,.th-pagehero-bg{filter:saturate(.92) contrast(1.03)}
.th-split-fig,.th-heroduo-fig,.th-profile-ph{position:relative}
.th-card-ph::after,.th-split-fig::after,.th-hero-fig::after,
.th-heroduo-fig::after,.th-mas-item::after,.th-product-ph::after,
.th-profile-ph::after,.th-strip-item::after,.th-zig-fig::after,
.th-pagehero-fig::after,
.th-accmedia-fig::after{
  content:"";position:absolute;inset:0;background:color-mix(in srgb,var(--th-primary),transparent 90%);
  mix-blend-mode:soft-light;pointer-events:none}
/* chrome that sits inside graded frames stays above the wash */
.th-mas-item figcaption{z-index:1}
.th-product-tag{z-index:1}

/* ============================================================
   30. AD v2 — SECTION VARIANTS (2026-07-08)
   ============================================================ */
/* promise_band variant: "list" — chromeless rows, icon beside a text column */
.th-promise.is-list .th-promise-grid{grid-template-columns:1fr 1fr;gap:26px 48px}
.th-promise.is-list .th-pcard{background:none;border:0;box-shadow:none;padding:0;
  display:grid;grid-template-columns:44px 1fr;gap:2px 18px;align-items:start}
.th-promise.is-list .th-pcard-ic{margin-bottom:0;width:44px;height:44px;grid-row:1 / span 2}
.th-promise.is-list .th-pcard h3{font-size:1.14rem;margin:2px 0 4px;grid-column:2}
.th-promise.is-list .th-pcard p{grid-column:2}
/* promise_band variant: "minimal" — centered, no cards, quiet */
.th-promise.is-minimal .th-pcard{background:none;border:0;box-shadow:none;padding:0 12px;text-align:center}
.th-promise.is-minimal .th-pcard-ic{margin:0 auto 14px;background:none;width:auto;height:auto;color:var(--th-accent)}
.th-promise.is-minimal .th-pcard-ic svg{width:30px;height:30px}

/* faculties_grid: explicit column count (2/3/4) via --cols */
.th-cards[style*="--cols"],
.th-cards[style*="--cols"]:has(>.th-card:nth-child(4):last-child){grid-template-columns:repeat(var(--cols),1fr)}
/* faculties_grid variant: "overlay" — title over the photo, gradient scrim */
.th-faculties.is-overlay .th-card{position:relative;min-height:360px;justify-content:flex-end}
.th-faculties.is-overlay .th-card-ph{position:absolute;inset:0;aspect-ratio:auto}
/* scrim must carry white text over bright photos too (a cream wall, a white
   boat hull): a light top tint knocks down bright tops and a strong dark floor
   sits under the text, so the overlay reads regardless of photo luminance */
.th-faculties.is-overlay .th-card-ph::after{background:linear-gradient(180deg,rgba(6,6,10,.2) 0%,rgba(6,6,10,.05) 24%,rgba(6,6,10,.5) 56%,rgba(6,6,10,.9) 100%);mix-blend-mode:normal}
.th-faculties.is-overlay .th-card-body{position:relative;z-index:2;margin-top:auto;flex:0 0 auto}
.th-faculties.is-overlay .th-card h3{color:#fff}
.th-faculties.is-overlay .th-card p{color:rgba(255,255,255,.85)}
.th-faculties.is-overlay .th-card-go{color:#fff}

/* cta_band variant: "dark" — deep primary ground, accent action */
.th-cta.is-dark{background:linear-gradient(120deg,var(--th-primary-900),var(--th-primary))}
.th-cta.is-dark .th-lede{color:var(--th-text-ondark-muted)}
.th-cta.is-dark .th-btn-gold{background:var(--th-accent);color:#fff!important}
.th-cta.is-dark .th-btn-gold:hover{background:var(--th-accent-600);color:#fff!important}
/* cta_band variant: "photo" — full-bleed photo with a scrim */
.th-cta.is-photo{position:relative;overflow:hidden}
.th-cta-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* this photo carries white copy, so it must not be lifted by the skin grade:
   darken it and hold a strong uniform scrim so the headline + lede read even
   over the brightest part of the frame (a sunlit window, backlit glass) */
.th-cta.is-photo .th-cta-bg{filter:saturate(1.03) contrast(.98) brightness(.72);z-index:0}
/* scrim MUST sit above the img (a real child): without z-index it paints behind
   the photo and white copy drowns on bright frames (an orange stage, a sunlit window) */
.th-cta.is-photo::before{content:"";position:absolute;inset:0;z-index:1;background:color-mix(in srgb,var(--th-primary-900),transparent 30%)}
.th-cta.is-photo .th-wrap{position:relative;z-index:2}
/* the secondary (ghost) button must read as a button against the photo */
.th-cta.is-photo .th-btn-ghost{border-color:rgba(255,255,255,.78);background:rgba(20,10,4,.22)}
.th-cta.is-photo .th-btn-ghost:hover{background:rgba(255,255,255,.16)}

/* quote_band: optional portrait above the quote */
.th-quote-ph{width:84px;height:84px;border-radius:50%;overflow:hidden;margin:0 auto 22px;box-shadow:var(--th-shadow-soft)}
.th-quote-ph img{width:100%;height:100%;object-fit:cover}

/* timeline variant: "zigzag" — items alternate sides of a center line */
@media(min-width:783px){
  .th-timeline.is-zigzag{max-width:880px}
  .th-timeline.is-zigzag::before{left:50%;margin-left:-1px}
  .th-timeline.is-zigzag .th-tl-item{width:calc(50% - 44px);padding:0 0 40px 0}
  .th-timeline.is-zigzag .th-tl-item:nth-child(odd){margin:0 auto 0 0;text-align:right}
  .th-timeline.is-zigzag .th-tl-item:nth-child(odd)::before{left:auto;right:-52px}
  .th-timeline.is-zigzag .th-tl-item:nth-child(even){margin:0 0 0 auto}
  .th-timeline.is-zigzag .th-tl-item:nth-child(even)::before{left:-52px}
}

/* ============================================================
   31. AD v2 — NEW SECTIONS (2026-07-08)
   ============================================================ */
/* marquee band: continuously scrolling strip of names/logos */
.th-marquee{padding:30px 0;border-top:1px solid var(--th-line);border-bottom:1px solid var(--th-line);
  overflow:hidden;width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.th-marquee-t{text-align:center;font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--th-text-muted);margin:0 0 16px}
.th-marquee-track{display:flex;align-items:center;width:max-content;animation:th-marq 32s linear infinite}
.th-marquee:hover .th-marquee-track{animation-play-state:paused}
.th-marquee-dupe{display:contents}
.th-marquee-item{font-family:var(--th-font-display);font-weight:600;font-size:1.2rem;color:var(--th-text-muted);white-space:nowrap;margin-right:72px}
.th-marquee-item img{height:40px;width:auto;display:block;opacity:.8}
@keyframes th-marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){
  .th-marquee-track{animation:none;width:auto;flex-wrap:wrap;justify-content:center;row-gap:18px;padding:0 22px}
  .th-marquee-dupe{display:none}}

/* gallery strip: horizontal scroll-snap photo band */
.th-stripsec{overflow:hidden}
.th-strip{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x proximity;
  width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);
  padding:6px max(40px,calc(50vw - var(--th-container)/2)) 18px;scrollbar-width:thin;scrollbar-color:var(--th-accent) transparent}
.th-strip::-webkit-scrollbar{height:6px}
.th-strip::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--th-accent),transparent 40%);border-radius:3px}
.th-strip-item{flex:none;position:relative;margin:0;height:400px;border-radius:var(--th-r-md);overflow:hidden;scroll-snap-align:center;box-shadow:var(--th-shadow-soft)}
.th-strip-item img{height:100%;width:auto;max-width:76vw;object-fit:cover;display:block}
.th-strip-item figcaption{position:absolute;left:0;right:0;bottom:0;padding:34px 16px 13px;font-size:.86rem;color:#fff;background:linear-gradient(180deg,transparent 0,rgba(0,0,0,.16) 32%,rgba(0,0,0,.6) 64%,rgba(0,0,0,.88) 100%);z-index:1}

/* comparison table: label column + 2-3 value columns, one featured */
.th-compare{max-width:880px;margin:0 auto;border:1px solid var(--th-line);border-radius:var(--th-r-lg);
  overflow:hidden;background:var(--th-card);box-shadow:var(--th-shadow-soft)}
.th-compare-row{display:grid;grid-template-columns:1.3fr repeat(var(--n,2),1fr);border-bottom:1px solid var(--th-line)}
.th-compare-row:last-child{border-bottom:0}
.th-compare-row.is-head{background:var(--th-bg-2)}
.th-compare-row.is-head>span{font-family:var(--th-font-display);font-weight:600;font-size:1.06rem;color:var(--th-primary)}
.th-compare-row>span{padding:15px 20px;font-size:.97rem;display:flex;align-items:center;gap:8px}
.th-compare-row>span:first-child{color:var(--th-ink);font-weight:600}
.th-compare-row>span+span{justify-content:center;text-align:center;color:var(--th-text-muted);border-left:1px solid var(--th-line)}
.th-compare-row>span.is-feat{background:color-mix(in srgb,var(--th-accent),transparent 93%);color:var(--th-ink)}
.th-compare-yes{color:var(--th-accent);font-weight:700}
.th-compare-no{color:color-mix(in srgb,var(--th-text-muted),transparent 30%)}
.th-compare-foot{margin:22px auto 0;max-width:880px;text-align:center;font-size:.9rem;color:var(--th-text-muted)}

/* process zigzag: numbered steps alternating text/photo */
.th-zig-item{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;margin-bottom:76px}
.th-zig-item:last-child{margin-bottom:0}
.th-zig-item:nth-child(even) .th-zig-fig{order:2}
.th-zig-fig{aspect-ratio:4/3;border-radius:var(--th-r-lg);overflow:hidden;box-shadow:var(--th-shadow-card);position:relative;margin:0}
.th-zig-fig img{width:100%;height:100%;object-fit:cover;display:block}
.th-zig-n{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:50%;
  background:color-mix(in srgb,var(--th-accent),#fff 86%);color:var(--th-accent);font-family:var(--th-font-display);font-weight:700;font-size:1.25rem;margin-bottom:16px}
.th-zig-body h3{font-size:clamp(1.4rem,2.2vw,1.8rem);margin:0 0 12px}
.th-zig-body p{font-size:1.04rem;color:var(--th-text-muted);line-height:1.65;margin:0 0 12px}

/* big number: one huge stat with a supporting fact */
.th-bignum{text-align:center}
.th-bignum-v{display:block;font-family:var(--th-font-display);font-weight:600;font-size:clamp(4rem,11vw,8rem);line-height:1;color:var(--th-accent);letter-spacing:-.02em}
.th-bignum-l{display:block;margin-top:10px;font-size:.9rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--th-text-muted)}
.th-bignum .th-lede{margin:22px auto 0;max-width:52ch}
.th-bignum .th-btn{margin-top:26px}
.th-dark .th-bignum-v{color:var(--th-accent-300)}

/* announcement bar: slim seasonal/event notice */
.th-announce{padding:15px 0;text-align:center;width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);
  background:linear-gradient(120deg,var(--th-accent),var(--th-accent-600));color:#fff}
.th-announce.is-dark{background:var(--th-primary-900)}
.th-announce .th-wrap{display:flex;justify-content:center;align-items:center;gap:14px;flex-wrap:wrap}
.th-announce-ic{display:flex;color:#fff}
.th-announce-ic svg{width:19px;height:19px}
.th-announce p{margin:0;font-size:.99rem;font-weight:600;color:#fff}
.th-announce a{color:#fff;font-weight:700;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}

/* accordion with media: details/summary list beside a sticky photo */
.th-accmedia-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:start}
.th-accmedia-grid.img-left .th-accmedia-fig{order:-1}
.th-accmedia-fig{position:sticky;top:110px;aspect-ratio:4/5;border-radius:var(--th-r-lg);overflow:hidden;box-shadow:var(--th-shadow-card);margin:0}
.th-accmedia-fig img{width:100%;height:100%;object-fit:cover;display:block}
.th-accmedia .th-faq-list{max-width:none;margin:0}
/* no photo (or the customer removed it): center the list like a plain FAQ */
.th-accmedia-grid:not(:has(.th-accmedia-fig)){grid-template-columns:1fr}
.th-accmedia-grid:not(:has(.th-accmedia-fig)) .th-faq-list{max-width:720px;margin:0 auto}

/* testimonial spotlight: one voice, portrait + large quote */
.th-spot{max-width:760px;margin:0 auto;text-align:center}
.th-spot-ph{display:block;width:104px;height:104px;border-radius:50%;overflow:hidden;margin:0 auto 24px;box-shadow:var(--th-shadow-soft)}
.th-spot-ph img{width:100%;height:100%;object-fit:cover}
.th-spot-stars{display:block;color:var(--th-accent);letter-spacing:4px;font-size:1.05rem;margin-bottom:16px}
.th-spot blockquote{border:0;margin:0;padding:0}
.th-spot-q{font-family:var(--th-font-display);font-size:clamp(1.4rem,2.4vw,1.9rem);line-height:1.42;color:var(--th-primary);margin:0 0 20px}
.th-spot-q::before{content:"\201C\2009"}
.th-spot-q::after{content:"\2009\201D"}
.th-dark .th-spot-q{color:#fff}

/* download cards: file rows with a clear action */
.th-downloads{max-width:720px;margin:0 auto;display:grid;gap:16px}
.th-download{display:flex;align-items:center;gap:20px;background:var(--th-card);border:1px solid var(--th-line);
  border-radius:var(--th-r-md);padding:22px 24px;box-shadow:var(--th-shadow-soft)}
.th-download-ic{flex:none;width:52px;height:52px;border-radius:14px;background:color-mix(in srgb,var(--th-accent),#fff 88%);color:var(--th-accent);display:flex;align-items:center;justify-content:center}
.th-download-ic svg{width:26px;height:26px}
.th-download-body{flex:1;min-width:0}
.th-download-body h3{font-size:1.14rem;margin:0 0 4px}
.th-download-body p{font-size:.92rem;color:var(--th-text-muted);margin:0}
.th-download-meta{font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--th-text-muted);white-space:nowrap}
.th-download .th-btn{flex:none}

/* app badges band: copy + store badges beside a phone screenshot */
.th-appband-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center}
.th-appband-text h2{font-size:clamp(1.9rem,3vw,2.6rem);margin:12px 0 14px}
.th-appband-badges{display:flex;gap:14px;flex-wrap:wrap;margin-top:28px}
.th-storebadge{display:inline-flex;align-items:center;gap:11px;background:#0b0b0e;color:#fff!important;text-decoration:none;
  border-radius:12px;padding:10px 20px 10px 16px;border:1px solid rgba(255,255,255,.18);transition:transform .15s,background .2s}
.th-storebadge:hover{transform:translateY(-2px);background:#1b1b21}
.th-storebadge svg{width:26px;height:26px;fill:#fff}
.th-storebadge small{display:block;font-size:.62rem;font-weight:500;letter-spacing:.04em;opacity:.8;line-height:1.1}
.th-storebadge b{display:block;font-size:1.02rem;font-weight:600;line-height:1.15}
.th-appband-fig{max-width:300px;margin:0 auto;border-radius:34px;overflow:hidden;border:6px solid #0b0b0e;box-shadow:var(--th-shadow-card)}
.th-appband-fig img{width:100%;display:block}

/* hours + open-now status */
.th-openchip{display:inline-flex;align-items:center;gap:9px;margin:0 auto 26px;padding:8px 18px;border-radius:var(--th-r-pill);
  font-size:.86rem;font-weight:700;letter-spacing:.06em;border:1px solid var(--th-line);background:var(--th-card);color:var(--th-text-muted)}
.th-openchip::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--th-text-muted)}
.th-openchip.is-open{color:#1c7c3d;border-color:color-mix(in srgb,#1c7c3d,transparent 60%)}
.th-openchip.is-open::before{background:#2ba14f;box-shadow:0 0 0 4px color-mix(in srgb,#2ba14f,transparent 82%)}
.th-hstatus .th-hours-row.is-today .th-hours-d,
.th-hstatus .th-hours-row.is-today .th-hours-h{color:var(--th-accent)}

/* branches: multi-location cards + optional shared map */
.th-branch-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px}
.th-branch{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--th-r-md);padding:26px 24px;box-shadow:var(--th-shadow-soft);display:flex;flex-direction:column}
.th-branch h3{font-size:1.22rem;margin:0 0 10px}
.th-branch p{font-size:.95rem;color:var(--th-text-muted);line-height:1.55;margin:0 0 6px}
.th-branch a.tel{color:var(--th-accent);font-weight:600;text-decoration:none}
.th-branch-go{margin-top:auto;padding-top:14px;font-weight:600;font-size:.94rem;color:var(--th-accent);text-decoration:none}
.th-branch-go:hover{color:var(--th-accent-600)}
.th-branch-map{margin-top:30px;border-radius:var(--th-r-lg);overflow:hidden;border:1px solid var(--th-line)}
.th-branch-map iframe{width:100%;height:340px;border:0;display:block}

/* press quotes: chromeless row of short attributed lines */
.th-press-grid{display:grid;grid-template-columns:repeat(var(--n,3),1fr);gap:44px;max-width:1040px;margin:0 auto}
.th-press-q{margin:0;padding:0;border:0;text-align:center}
.th-press-q p{font-family:var(--th-font-display);font-size:1.18rem;line-height:1.5;color:var(--th-primary);margin:0 0 14px}
.th-press-q p::before{content:"\201C\2009"}
.th-press-q p::after{content:"\2009\201D"}
.th-press-src{font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--th-text-muted)}
.th-dark .th-press-q p{color:#fff}

/* ---- AD v2 responsive ---- */
@media(max-width:1024px){
  .th-cards[style*="--cols"],
  .th-cards[style*="--cols"]:has(>.th-card:nth-child(4):last-child){grid-template-columns:repeat(2,1fr)}
}
@media(max-width:782px){
  .th-cards[style*="--cols"],
  .th-cards[style*="--cols"]:has(>.th-card:nth-child(4):last-child){grid-template-columns:1fr}
  .th-promise.is-list .th-promise-grid{grid-template-columns:1fr}
  .th-faculties.is-overlay .th-card{min-height:300px}
  .th-strip-item{height:280px}
  .th-strip-item img{max-width:84vw}
  /* value cells are single check/cross glyphs, so even a third value column
     shrinks to fit 390px. Squeeze the label column and cell padding to fit
     rather than scroll sideways, which pushed the featured column off-screen
     and buried the whole comparison. overflow-x:auto stays as a safety net. */
  .th-compare{overflow-x:auto}
  .th-compare-row{grid-template-columns:1.1fr repeat(var(--n,2),1fr)}
  .th-compare-row>span{padding:11px 8px;font-size:.82rem;word-break:normal;hyphens:none}
  .th-compare-row.is-head>span{font-size:.86rem}
  .th-zig-item{grid-template-columns:1fr;gap:26px;margin-bottom:52px}
  .th-zig-item:nth-child(even) .th-zig-fig{order:0}
  .th-accmedia-grid{grid-template-columns:1fr;gap:30px}
  .th-accmedia-fig{position:static;aspect-ratio:4/3;max-width:480px}
  .th-accmedia-grid.img-left .th-accmedia-fig{order:0}
  .th-appband-grid{grid-template-columns:1fr;gap:36px}
  .th-appband-fig{max-width:250px}
  .th-download{flex-wrap:wrap;gap:14px 18px}
  .th-download .th-btn{width:100%;justify-content:center}
  .th-press-grid{grid-template-columns:1fr;gap:32px}
}

/* Dark-register overrides are appended here by flash render when the ticket
   config sets "dark": true. Empty string for light builds (default). */


/* Light-accent overrides (dark ink on accent grounds/chips) are appended here
   by flash render when a light build sets a dark "accent_ink". Empty otherwise. */

