/* Play and Spin brand palette + utilities — warm-bright dominant */
:root {
  --bs-primary-rgb: 232, 35, 28;
  --bs-secondary-rgb: 255, 184, 28;
  --bs-success-rgb: 39, 217, 210;
  --bs-warning-rgb: 255, 184, 28;
  --bs-info-rgb: 123, 91, 230;
  --bs-light-rgb: 255, 248, 236;
  --bs-dark-rgb: 11, 14, 20;
  --bs-body-bg: #FFF8EC;
  --bs-body-color: #1A1F2E;
  --bs-primary: #E8231C;
  --bs-secondary: #FFB81C;
  --bs-light: #FFF8EC;
  --bs-dark: #0B0E14;
  --bs-font-sans-serif: "Inter Tight", "Inter", system-ui, -apple-system, sans-serif;
  --ps-cream: #FFF8EC;
  --ps-bone: #F7F5EE;
  --ps-bone-2: #FFFFFF;
  --ps-ink: #0B0E14;
  --ps-ink-2: #1A1F2E;
  --ps-red: #E8231C;
  --ps-red-2: #B71912;
  --ps-amber: #FFB81C;
  --ps-cyan: #27D9D2;
  --ps-violet: #7B5BE6;
  --ps-coral: #FF7A59;
  --ps-glass: rgba(255,255,255,0.55);
  --ps-glass-dark: rgba(20,28,42,0.45);
  --ps-glass-border: rgba(255,255,255,0.6);
}
body { font-family: var(--bs-font-sans-serif); background: var(--ps-cream); color: var(--bs-body-color); }
h1, h2, h3, h4, .h1, .h2, .h3, .h4 {
  font-family: "Bricolage Grotesque", "Anton", system-ui, sans-serif;
  font-weight: 800;
  letter-spacing: -.02em;
  line-height: 1;
}
.bg-cream { background-color: var(--ps-cream) !important; }
.bg-bone { background-color: var(--ps-bone) !important; }
.bg-ink { background-color: var(--ps-ink) !important; }
.bg-ink-2 { background-color: var(--ps-ink-2) !important; }
.text-ink { color: var(--ps-ink) !important; }
.text-cream { color: var(--ps-cream) !important; }
.text-red { color: var(--ps-red) !important; }
.text-amber { color: var(--ps-amber) !important; }
.btn-primary { background: var(--ps-red); border-color: var(--ps-red); }
.btn-primary:hover, .btn-primary:focus { background: var(--ps-red-2); border-color: var(--ps-red-2); }
.btn-lg { padding: .95rem 2.1rem; font-weight: 700; letter-spacing: .01em; font-size: 1.05rem; border-radius: 999px; }

/* Glassmorphic */
.ps-glass {
  background: var(--ps-glass);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid var(--ps-glass-border);
  border-radius: 24px;
}
.ps-glass-dark {
  background: var(--ps-glass-dark);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 24px;
  color: #fff;
}

/* Polaroid frame */
.ps-polaroid {
  background: #fff;
  padding: 12px 12px 28px 12px;
  box-shadow: 0 14px 36px rgba(11,14,20,0.18), 0 2px 6px rgba(11,14,20,0.08);
  border-radius: 4px;
}
.ps-polaroid img { display: block; width: 100%; height: auto; }
.ps-tilt-l { transform: rotate(-3deg); }
.ps-tilt-r { transform: rotate(3deg); }
.ps-tilt-c { transform: rotate(-1.2deg); }

/* Hero stagger */
.ps-stagger { position: relative; min-height: 540px; }
.ps-stagger img { border-radius: 18px; box-shadow: 0 24px 60px rgba(11,14,20,0.22); }

/* Activity tile */
.ps-tile {
  position: relative;
  overflow: hidden;
  border-radius: 18px;
  aspect-ratio: 4 / 5;
  transition: transform .32s cubic-bezier(.16,1,.3,1), box-shadow .32s;
  background: var(--ps-ink-2);
  display: block;
  text-decoration: none;
  color: inherit;
}
.ps-tile:hover { transform: translateY(-6px) scale(1.02); box-shadow: 0 28px 60px rgba(11,14,20,0.25); }
.ps-tile img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.16,1,.3,1); }
.ps-tile:hover img { transform: scale(1.06); }
.ps-tile-label {
  position: absolute;
  inset: auto 0 0 0;
  padding: 1.4rem 1.4rem 1.2rem;
  background: linear-gradient(180deg, rgba(11,14,20,0) 0%, rgba(11,14,20,0.85) 80%);
  color: #fff;
}
.ps-tile-accent { width: 32px; height: 4px; border-radius: 2px; margin-bottom: .55rem; }

/* Stats */
.ps-stat-num {
  font-family: "JetBrains Mono", "Roboto Mono", ui-monospace, monospace;
  font-weight: 800;
  line-height: 1;
  color: var(--ps-red);
}

/* Section padding */
.section-pad { padding: 5rem 0; }
.section-pad-lg { padding: 7rem 0; }

/* Pill */
.ps-pill {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  padding: .35rem 1rem;
  border-radius: 999px;
  font-size: .82rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.ps-pill-amber { background: rgba(255,184,28,0.18); color: #8a5b00; border: 1px solid rgba(255,184,28,0.4); }
.ps-pill-red { background: rgba(232,35,28,0.12); color: var(--ps-red-2); border: 1px solid rgba(232,35,28,0.3); }

/* Promo badge */
.ps-promo-badge {
  background: var(--ps-amber);
  color: var(--ps-ink);
  padding: 1rem 1.4rem;
  border-radius: 14px;
  font-weight: 800;
  display: inline-block;
  transform: rotate(-3deg);
  box-shadow: 0 12px 28px rgba(255,184,28,0.45);
}

/* Comparison table */
.ps-cmp-table { width: 100%; border-collapse: collapse; }
.ps-cmp-table th, .ps-cmp-table td { padding: 1rem 1.2rem; text-align: left; vertical-align: middle; }
.ps-cmp-table thead th { font-size: 1rem; text-transform: uppercase; letter-spacing: .08em; }
.ps-cmp-table tbody tr { border-top: 1px solid rgba(11,14,20,0.08); }
.ps-cmp-table .yes { color: var(--ps-red); font-weight: 800; }
.ps-cmp-table .no { color: rgba(11,14,20,0.35); }
.ps-cmp-yes-col { background: rgba(232,35,28,0.04); }

/* Hero overlay copy */
.hero-shell { position: relative; padding: 5rem 0 4.5rem 0; overflow: hidden; }
@media (max-width: 991px) { .hero-shell { padding: 3rem 0 2.5rem 0; } .ps-stagger { min-height: 420px; } }

/* Sticky mobile bottom bar */
.ps-bottom-bar { position: sticky; bottom: 0; z-index: 60; background: #fff; border-top: 1px solid rgba(11,14,20,0.08); padding: .8rem .8rem; box-shadow: 0 -8px 22px rgba(11,14,20,0.06); }
@media (min-width: 992px) { .ps-bottom-bar { display: none; } }

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
  .ps-tile, .ps-tile img { transition: none; }
  [data-aos] { transition: none !important; transform: none !important; opacity: 1 !important; }
}

/* ====================================================
   AGENT-PATTERN HELPERS (auto-handle common naming variants)
   ==================================================== */

/* Stagger composition — handles any image inside .ps-stagger */
.ps-stagger { position: relative; }
.ps-stagger img { position: absolute; }
.ps-stagger > img:nth-of-type(1),
.ps-stagger [class*="lead"] {
  position: absolute;
  top: 0; left: 0;
  width: 60%;
  height: 100%;
  object-fit: cover;
}
.ps-stagger > img:nth-of-type(2),
.ps-stagger [class*="top-right"] {
  position: absolute;
  top: 8%; right: 0;
  width: 32%;
  height: 42%;
  object-fit: cover;
  z-index: 2;
}
.ps-stagger > img:nth-of-type(3),
.ps-stagger [class*="bottom-right"] {
  position: absolute;
  bottom: 8%; right: 5%;
  width: 32%;
  height: 42%;
  object-fit: cover;
  z-index: 2;
}
@media (max-width: 991px) {
  .ps-stagger { min-height: 360px; }
  .ps-stagger > img:nth-of-type(1) { width: 100%; }
  .ps-stagger > img:nth-of-type(2) { display: none; }
  .ps-stagger > img:nth-of-type(3) { display: none; }
}

/* Glass hero panel positioning */
.ps-glass--hero,
.ps-glass.position-absolute {
  z-index: 5;
  max-width: 520px;
  padding: 1.5rem 1.75rem !important;
}

/* Activity tile sizing — every img inside .ps-tile fills tile */
.ps-tile img { width: 100%; height: 100%; object-fit: cover; display: block; position: absolute; inset: 0; }
.ps-tile { position: relative; height: 100%; min-height: 280px; }

/* Bento grid — handle any .bento-* or .ps-bento containers */
/* === DEPRECATED bento helper — disabled, was breaking v1-soft section grid */
.ps-deprecated-noop {}

/* Mosaic 2x2 photo grid */
.ps-mosaic, [class*="mosaic"] {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}
.ps-mosaic img, [class*="mosaic"] img { width: 100%; height: 100%; object-fit: cover; border-radius: 12px; aspect-ratio: 4/3; }

/* Strip stack pattern (2 horizontal + 1 vertical) */
.ps-strip-stack {
  display: grid;
  grid-template-columns: 2fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 14px;
  min-height: 420px;
}
.ps-strip-stack > *:nth-child(1) { grid-row: span 1; }
.ps-strip-stack > *:nth-child(2) { grid-row: span 1; }
.ps-strip-stack > *:nth-child(3) { grid-column: 2; grid-row: 1 / span 2; }
.ps-strip-stack img { width: 100%; height: 100%; object-fit: cover; border-radius: 12px; aspect-ratio: auto; }

/* Filmstrip horizontal scroll */
.ps-filmstrip {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  padding-bottom: 1rem;
  scroll-snap-type: x mandatory;
}
.ps-filmstrip > * { flex: 0 0 320px; scroll-snap-align: start; }
.ps-filmstrip img { width: 100%; height: 200px; object-fit: cover; border-radius: 10px; }

/* Card on dark — fix invisible text */
.bg-ink p, .bg-ink h1, .bg-ink h2, .bg-ink h3, .bg-ink h4, .bg-ink small,
.bg-ink-2 p, .bg-ink-2 h1, .bg-ink-2 h2, .bg-ink-2 h3, .bg-ink-2 h4 { color: #f7f5ee; }
.bg-ink a:not(.btn), .bg-ink-2 a:not(.btn) { color: var(--ps-amber); }

/* Generic photo size helper for content images */
section.lc-block img { max-width: 100%; height: auto; }
.section-pad section img,
.row img:not(.ps-tile img):not(.ps-stagger img):not(.ps-mosaic img):not(.ps-bento img):not(.ps-polaroid img) {
  border-radius: 14px;
  display: block;
}

/* Stop runaway: clamp section-img heights */
.section-pad-lg img,
.section-pad img {
  max-height: 560px;
  object-fit: cover;
}

/* Stat number — proper display */
.ps-stat-num { font-size: clamp(2.6rem, 4.5vw + 1rem, 5rem); }

/* Promo badge fix when nested */
.ps-promo-badge { z-index: 6; }

/* Force aspect on ratios */
[class*="ratio"] img { object-fit: cover; }

/* Polaroid scatter */
.ps-polaroid { display: block; max-width: 320px; }
.ps-polaroid-row { display: flex; flex-wrap: wrap; gap: 24px; justify-content: center; align-items: flex-start; }

/* Comparison table */
.ps-cmp-table { background: #fff; border-radius: 16px; overflow: hidden; box-shadow: 0 14px 36px rgba(11,14,20,0.08); }

/* Stop empty bg-cream sections from being crazy tall */
.lc-block { min-height: auto; }

/* Hero shell sizing */
.hero-shell { padding-top: 4rem; padding-bottom: 4rem; }
.hero-shell .ps-stagger { min-height: 580px; }
@media (min-width: 1200px) { .hero-shell .ps-stagger { min-height: 640px; } }

/* ========================================================
   GLOBAL TILE IMAGE FIX (catches all agent-named tile classes)
   Applies any selector matching tile/card/bento where the parent
   has overflow:hidden — forces images to cover the full tile.
   ======================================================== */
[class*="-tile"] > img,
[class*="bento-tile"] > img,
[class*="ps-tile"] > img,
[class*="activity-card"] > img,
[class*="card-tile"] > img,
.ps-bento-tile > img,
.ps-bento-tile picture,
.ps-tile > img,
.ps-feature-tile > img,
[class*="-tile"] picture > img {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}

/* Force tile parents to be position:relative (some agents forgot) */
[class*="-tile"]:not(.live):not(.row),
[class*="bento-tile"],
.ps-bento-tile,
.ps-tile,
.ps-feature-tile,
[class*="activity-card"] {
  position: relative;
  overflow: hidden;
}

/* Ensure any label inside a tile sits above the image */
[class*="-tile"] [class*="__label"],
[class*="bento-tile"] [class*="__label"],
.ps-bento-tile__label,
.ps-tile-label {
  position: absolute !important;
  inset: auto 0 0 0 !important;
  z-index: 2;
  padding: 1rem 1.2rem;
  background: linear-gradient(180deg, rgba(11,14,20,0) 0%, rgba(11,14,20,0.85) 80%);
  color: #fff;
}

/* Prevent broken-image alt-text rendering when the image has 0 height */
[class*="-tile"] img,
[class*="bento-tile"] img {
  min-height: 1px;  /* @why: Prevents alt text from rendering inline when img fails to size */
}

/* Mobile: ensure tile parents have a sensible aspect ratio so they don't collapse */
@media (max-width: 767px) {
  [class*="-tile"]:not(.row):not(.live),
  [class*="bento-tile"],
  .ps-bento-tile,
  .ps-tile {
    aspect-ratio: 4 / 3;
    min-height: 220px;
  }
}

/* ========================================================
   v5 PIXAR HERO BENTO — make sure children fill cells
   ======================================================== */
.ps-hero-bento { width: 100%; }
.ps-hero-bento > * {
  position: relative;
  overflow: hidden;
  border-radius: 18px;
}
.ps-hero-bento img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
  position: absolute !important;
  inset: 0 !important;
}
@media (max-width: 991px) {
  .ps-hero-bento {
    grid-template-columns: 1fr 1fr !important;
    grid-template-rows: auto auto auto !important;
    height: auto !important;
    min-height: 480px;
  }
  .ps-hero-bento > *:first-child {
    grid-column: span 2;
    aspect-ratio: 16 / 9;
  }
}
@media (max-width: 575px) {
  .ps-hero-bento {
    grid-template-columns: 1fr !important;
    height: auto !important;
  }
  .ps-hero-bento > * {
    aspect-ratio: 4 / 3;
    grid-column: 1 !important;
  }
}

/* ========================================================
   v3 AWWWARDS STICKY ACTIVITY CARDS — stacking context fix
   ======================================================== */
.v3-activity-card {
  position: sticky;
  top: 100px;
  z-index: 1;
  margin-bottom: 1.5rem;
  background: var(--ps-cream);
  border-radius: 24px;
  box-shadow: 0 24px 60px rgba(11,14,20,.16);
  isolation: isolate;
}
.v3-activity-card:nth-of-type(1) { z-index: 1; top: 100px; }
.v3-activity-card:nth-of-type(2) { z-index: 2; top: 110px; }
.v3-activity-card:nth-of-type(3) { z-index: 3; top: 120px; }
.v3-activity-card:nth-of-type(4) { z-index: 4; top: 130px; }
.v3-activity-card:nth-of-type(5) { z-index: 5; top: 140px; }
.v3-activity-card.card-red    { background: var(--ps-red);    color: #fff; }
.v3-activity-card.card-amber  { background: var(--ps-amber);  color: var(--ps-ink); }
.v3-activity-card.card-cyan   { background: var(--ps-cyan);   color: var(--ps-ink); }
.v3-activity-card.card-violet { background: var(--ps-violet); color: #fff; }
.v3-activity-card.card-cream  { background: var(--ps-cream);  color: var(--ps-ink); }
.v3-activity-card img {
  width: 100%;
  height: auto;
  border-radius: 16px;
}

/* Logo height clamp — header logo should never exceed 60px */
.ps-main-navbar img[alt*="logo" i],
header img[alt*="logo" i],
.navbar-brand img {
  max-height: 60px !important;
  width: auto !important;
}

/* ============================================================
   ACE DESIGN POLISH v2 — sitewide refinement (2026-05-07)
   Lifts every page at once: typography, motion, hover states,
   focus-visible, mobile bottom-CTA, image treatment, section
   rhythm. Built on top of existing ps-brand.css — additive only.
   ============================================================ */

/* ── Typography refinement ── */
html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; }
body { font-feature-settings: "kern" 1, "liga" 1, "calt" 1; }
h1, h2, h3, h4, h5, h6, .display-1, .display-2, .display-3, .display-4, .display-5, .display-6 {
  font-feature-settings: "kern" 1, "liga" 1, "ss01" 1, "ss02" 1;
  text-wrap: balance;
}
p, .lead { text-wrap: pretty; }
.lead { font-weight: 400; }
.fw-black { font-weight: 900 !important; }

/* ── Section rhythm + alternation ── */
section.lc-block + section.lc-block { border-top: 0; }
section.lc-block.bg-cream + section.lc-block.bg-cream,
section.lc-block.bg-bone + section.lc-block.bg-bone {
  border-top: 1px solid rgba(11,14,20,0.04);
}
.section-pad, .py-5 { padding-top: clamp(3rem, 4vw + 1rem, 5.5rem); padding-bottom: clamp(3rem, 4vw + 1rem, 5.5rem); }
.section-pad-lg { padding-top: clamp(4.5rem, 6vw + 1rem, 7.5rem); padding-bottom: clamp(4.5rem, 6vw + 1rem, 7.5rem); }

/* ── Button polish ── */
.btn { 
  position: relative;
  transition: background-color .22s ease, color .22s ease, transform .18s cubic-bezier(.16,1,.3,1), box-shadow .22s ease, border-color .22s ease;
  letter-spacing: .015em;
}
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); transition-duration: .08s; }
.btn-primary { 
  background: var(--ps-red); 
  border-color: var(--ps-red);
  box-shadow: 0 6px 16px rgba(232,35,28,0.18);
}
.btn-primary:hover, .btn-primary:focus-visible { 
  background: var(--ps-red-2); 
  border-color: var(--ps-red-2);
  box-shadow: 0 12px 28px rgba(232,35,28,0.32);
}
.btn-outline-dark { border-width: 2px; }
.btn-outline-dark:hover { background: var(--ps-ink); color: var(--ps-cream); }
.btn-warning { background: var(--ps-amber); border-color: var(--ps-amber); color: var(--ps-ink); box-shadow: 0 6px 16px rgba(255,184,28,0.32); }
.btn-warning:hover { background: #e09f00; border-color: #e09f00; color: var(--ps-ink); box-shadow: 0 12px 28px rgba(255,184,28,0.42); }

/* ── Focus-visible (keyboard accessibility polish) ── */
*:focus { outline: none; }
a:focus-visible, button:focus-visible, .btn:focus-visible, [role="button"]:focus-visible {
  outline: 3px solid var(--ps-amber);
  outline-offset: 3px;
  border-radius: 4px;
  box-shadow: 0 0 0 6px rgba(255,184,28,0.18);
}
.btn:focus-visible { outline-offset: 4px; }

/* ── Card / tile hover refinement ── */
.ps-tile, [class*="-tile"]:not(section), [class*="bento-tile"], .ps-bento-tile {
  transition: transform .42s cubic-bezier(.16,1,.3,1), box-shadow .42s ease;
}
.ps-tile:hover, [class*="-tile"]:not(section):hover, .ps-bento-tile:hover {
  box-shadow: 0 28px 60px rgba(11,14,20,0.20), 0 4px 14px rgba(11,14,20,0.08);
}
.ps-tile img, [class*="-tile"]:not(section) img, .ps-bento-tile img {
  transition: transform .8s cubic-bezier(.16,1,.3,1), filter .35s ease;
}
.ps-tile:hover img, [class*="-tile"]:not(section):hover img {
  transform: scale(1.06);
  filter: brightness(1.08) saturate(1.05);
}

/* ── Glassmorphic refinement ── */
.ps-glass, .ps-glass-dark {
  transition: backdrop-filter .3s ease, background .3s ease, border-color .3s ease;
  border-radius: 18px;
}

/* ── Polaroid frame polish ── */
.ps-polaroid { 
  transition: transform .35s cubic-bezier(.16,1,.3,1), box-shadow .35s ease;
  cursor: default;
}
.ps-polaroid:hover { 
  transform: rotate(0deg) translateY(-4px) !important;
  box-shadow: 0 28px 56px rgba(11,14,20,0.22), 0 4px 10px rgba(11,14,20,0.08);
}

/* ── Image hover treatment for content imagery ── */
section.lc-block img:not(.ps-tile img):not([class*="-tile"] img):not(.ps-bento-tile img):not(.ps-polaroid img) {
  transition: transform .5s cubic-bezier(.16,1,.3,1), filter .35s ease;
}

/* ── Stat number animation polish ── */
.ps-stat-num { 
  background: linear-gradient(180deg, var(--ps-red) 0%, var(--ps-red-2) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  display: inline-block;
}
.bg-ink .ps-stat-num, .bg-ink-2 .ps-stat-num {
  background: linear-gradient(180deg, var(--ps-amber) 0%, #e09f00 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* ── Pill polish ── */
.ps-pill {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  padding: .35rem 1rem;
  border-radius: 999px;
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  font-feature-settings: "ss01" 1;
  transition: transform .2s ease;
}
.ps-pill:hover { transform: translateY(-1px); }

/* ── Promo badge polish ── */
.ps-promo-badge {
  background: linear-gradient(135deg, var(--ps-amber) 0%, #e09f00 100%);
  box-shadow: 0 12px 28px rgba(255,184,28,0.45), 0 2px 6px rgba(255,184,28,0.2);
  animation: ps-promo-wiggle 4s ease-in-out 3;
}
@keyframes ps-promo-wiggle {
  0%, 100% { transform: rotate(-3deg); }
  50% { transform: rotate(-1.5deg) scale(1.03); }
}

/* ── Comparison table polish ── */
.ps-cmp-table table th, .ps-cmp-table table td {
  border-top: 1px solid rgba(11,14,20,.06);
  vertical-align: middle;
}
.ps-cmp-table table tbody tr { transition: background .2s ease; }
.ps-cmp-table table tbody tr:hover { background: rgba(232,35,28,.02); }

/* ── Form polish (contact + careers) ── */
input.form-control, select.form-select, textarea.form-control {
  border-radius: 10px;
  border: 1px solid rgba(11,14,20,.12);
  padding: .85rem 1rem;
  transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
  font-size: 1rem;
}
input.form-control:focus, select.form-select:focus, textarea.form-control:focus {
  border-color: var(--ps-red);
  box-shadow: 0 0 0 4px rgba(232,35,28,0.12);
  outline: none;
}
label.form-label { font-weight: 600; font-size: .9rem; margin-bottom: .35rem; color: var(--ps-ink); }

/* ── Mobile bottom CTA bar (sitewide) ── */
.ps-mobile-cta-bar {
  display: none;
  position: fixed;
  inset: auto 0 0 0;
  z-index: 1040;
  background: rgba(255,248,236,0.96);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-top: 1px solid rgba(11,14,20,.08);
  padding: .65rem .8rem env(safe-area-inset-bottom, .65rem);
  box-shadow: 0 -4px 18px rgba(11,14,20,.08);
}
.ps-mobile-cta-bar .btn { padding: .65rem .9rem; font-size: .85rem; flex: 1; }
@media (max-width: 767px) {
  .ps-mobile-cta-bar { display: flex; gap: .5rem; }
  body { padding-bottom: 70px; }
}

/* ── Photo strip / filmstrip polish ── */
.ps-filmstrip, [class*="filmstrip"], [class*="photo-strip"] { 
  -webkit-overflow-scrolling: touch; 
  scrollbar-width: thin;
  scrollbar-color: var(--ps-red) transparent;
}

/* ── Accordion / FAQ polish ── */
details {
  border-radius: 12px;
  background: #fff;
  margin-bottom: .55rem;
  padding: .25rem 1rem;
  border: 1px solid rgba(11,14,20,.06);
  transition: background .2s, border-color .2s, box-shadow .2s;
}
details:hover { border-color: rgba(232,35,28,.18); box-shadow: 0 6px 18px rgba(11,14,20,.04); }
details[open] { background: var(--ps-bone); border-color: rgba(232,35,28,.18); }
details summary { 
  cursor: pointer; 
  padding: .85rem 0; 
  font-weight: 700;
  list-style: none;
  display: flex; 
  align-items: center; 
  justify-content: space-between;
}
details summary::-webkit-details-marker { display: none; }
details summary::after { 
  content: "+"; 
  font-size: 1.6rem; 
  color: var(--ps-red);
  transition: transform .2s ease;
  font-weight: 300;
  line-height: 1;
}
details[open] summary::after { transform: rotate(45deg); }
details > *:not(summary) { padding-bottom: .85rem; }

/* ── Section dividers (subtle gradient transition) ── */
section.lc-block.bg-ink + section.lc-block:not(.bg-ink),
section.lc-block:not(.bg-ink) + section.lc-block.bg-ink {
  position: relative;
}
section.lc-block.bg-ink + section.lc-block:not(.bg-ink)::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(11,14,20,0.12), transparent);
}

/* ── AOS reveal refinement ── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { 
    animation-duration: .01ms !important; 
    transition-duration: .08s !important;
  }
  [data-aos] { transform: none !important; opacity: 1 !important; }
}

/* ── Skip-link polish (a11y) ── */
.skip-link { position: absolute; top: -40px; left: 8px; background: var(--ps-red); color: #fff; padding: 8px 16px; z-index: 9999; border-radius: 0 0 8px 8px; text-decoration: none; font-weight: 700; }
.skip-link:focus { top: 0; }

/* ── Hero shell refinement ── */
.hero-shell { padding-top: clamp(3rem, 5vw + 1rem, 6.5rem); padding-bottom: clamp(3rem, 5vw + 1rem, 6.5rem); position: relative; }
.hero-shell::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(1200px 600px at 30% 20%, rgba(255,184,28,.06), transparent 60%);
  pointer-events: none;
  z-index: 0;
}
.hero-shell > * { position: relative; z-index: 1; }

/* ── Footer polish ── */
footer#lc-footer a, footer a { transition: color .2s ease; }
footer#lc-footer a:hover, footer#lc-footer a:focus-visible {
  color: var(--ps-amber);
  text-decoration: none;
}

/* ── Dark-bg text color fixes (catches nested labels in dark cards) ── */
.bg-ink h1, .bg-ink h2, .bg-ink h3, .bg-ink h4, .bg-ink h5, .bg-ink h6,
.bg-ink-2 h1, .bg-ink-2 h2, .bg-ink-2 h3, .bg-ink-2 h4, .bg-ink-2 h5, .bg-ink-2 h6 {
  color: var(--ps-cream);
}
.bg-ink p, .bg-ink li, .bg-ink small,
.bg-ink-2 p, .bg-ink-2 li, .bg-ink-2 small { color: rgba(247,245,238,0.92); }
.bg-ink .ps-pill, .bg-ink-2 .ps-pill { background: rgba(255,184,28,.18); color: var(--ps-amber); border-color: rgba(255,184,28,.4); }

/* ── Mobile responsive header ── */
@media (max-width: 991px) {
  .hero-shell h1, .hero-shell .display-1, .hero-shell .display-2, .hero-shell .display-3 {
    font-size: clamp(2rem, 8vw, 3rem) !important;
    line-height: 1.05;
  }
  .hero-shell .lead { font-size: 1rem; line-height: 1.55; }
}

/* ── Sticky activity sub-nav helper (used on activity pages) ── */
.ps-activity-subnav {
  position: sticky;
  top: 80px;
  z-index: 30;
  background: rgba(255,248,236,0.95);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(11,14,20,.06);
  padding: .6rem 0;
}

/* ── Ribbon callout (for promo accents) ── */
.ps-ribbon {
  position: absolute;
  top: 16px; left: -8px;
  background: var(--ps-red);
  color: #fff;
  padding: .25rem .9rem;
  font-weight: 800;
  font-size: .8rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  box-shadow: 0 8px 18px rgba(232,35,28,.35);
}
.ps-ribbon::before { content: ""; position: absolute; bottom: -6px; left: 0; border-top: 6px solid #8a1109; border-left: 8px solid transparent; }

/* ── Print styles ── */
@media print {
  header, footer, .ps-mobile-cta-bar, .ps-promo-badge, [data-aos] { animation: none !important; }
  body { font-size: 11pt; }
  .lc-block { page-break-inside: avoid; }
}

/* ============================================================
   v1-SOFT TARGETED FIXES (2026-05-07 — Mike report)
   Fixes activity bento overlap + Unforgettable Birthday image
   overlap. Targets agent-named classes specifically.
   ============================================================ */

/* ── Bento grid: keep agent's grid-area spans, undo my polish-v2 forcing absolute on imgs ── */
.ps-bento__grid { gap: 1.5rem !important; }
.ps-bento-tile {
  position: relative !important;
  overflow: hidden !important;
  isolation: isolate;            /* contain the blob to its own tile */
  border-radius: 26px;
}
.ps-bento-tile::before {
  /* @why: tighten the blob — was inset:-10% which leaked into neighbors at smaller gaps */
  inset: 0 !important;
  border-radius: inherit !important;
}
.ps-bento-tile img {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  z-index: 1 !important;
}
.ps-bento-tile__label {
  position: absolute !important;
  inset: auto 0 0 0 !important;
  z-index: 3 !important;
  padding: 1rem 1.2rem !important;
  background: linear-gradient(180deg, rgba(11,14,20,0) 0%, rgba(11,14,20,0.85) 80%) !important;
  color: #fff !important;
}
.ps-bento-tile__name { color: #fff !important; font-weight: 800 !important; font-size: 1.1rem !important; }
.ps-bento-tile__note { color: rgba(255,255,255,0.85) !important; font-size: .82rem !important; }
.ps-bento-tile:hover {
  /* @why: agent had transform:scale(0.975)translateY(-4px) which can pull tiles into neighbors when combined with my polish hover */
  transform: translateY(-4px) !important;
}

/* ── Mobile/tablet bento: ensure tiles render with proper aspect ── */
@media (max-width: 991px) {
  .ps-bento-tile { min-height: 220px; }
}
@media (max-width: 575px) {
  .ps-bento__grid { grid-template-columns: 1fr 1fr !important; }
  .ps-bento-tile, [class^="tile-"] { grid-column: span 1 !important; grid-row: span 1 !important; min-height: 180px; }
  .tile-go-karts, .tile-laser-tag, .tile-bumper-cars, .tile-sports-bar, .tile-birthday { grid-column: span 2 !important; }
}

/* ── Unforgettable Birthday section fixes ── */
.ps-birthday__inner { gap: 4rem !important; align-items: center; }
.ps-birthday__img-wrap {
  position: relative;
  isolation: isolate;
  aspect-ratio: 4 / 5;
  max-width: 460px;
  margin: 0 auto;
}
.ps-birthday__blob {
  /* @why: blob was leaking outside the wrap and overlapping the H2 — clamp to wrap */
  width: 80% !important;
  height: 80% !important;
  top: -4% !important;
  right: -4% !important;
  filter: blur(40px) !important;
  z-index: 0;
}
.ps-birthday__img {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
  /* @why: agent used border-radius: 40% 60% etc as organic shape — keep but ensure no overflow */
  overflow: hidden;
}
.ps-birthday__img img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block;
}
@media (max-width: 991px) {
  .ps-birthday__inner { grid-template-columns: 1fr !important; gap: 2.5rem !important; }
  .ps-birthday__img-wrap { aspect-ratio: 1 / 1; max-width: 380px; }
}

/* ── Polish v2 had a generic rule transforming any section img on hover; exclude birthday img ── */
.ps-birthday__img:hover img { transform: none !important; filter: none !important; }
.ps-bento-tile:hover img { transform: scale(1.06); }

/* ── Stats blob fix (v1-soft) — ensure stat blobs don't overlap labels ── */
.ps-stat-num { display: inline-block; isolation: isolate; }


/* ============================================================
   v3 KINETIC MARQUEE — convert the static activity ticker
   into a horizontal scrolling marquee with infinite repeat
   ============================================================ */
.v3-marquee-strip,
.v3-activities-ticker,
[class*="marquee"] {
  background: var(--ps-ink);
  color: var(--ps-cream);
  padding: 1.4rem 0;
  overflow: hidden;
  position: relative;
  border-top: 1px solid rgba(255,184,28,0.18);
  border-bottom: 1px solid rgba(255,184,28,0.18);
}
.v3-marquee-inner,
.v3-marquee-track,
[class*="marquee"] .marquee-track,
[class*="marquee"] > ul,
[class*="marquee"] .ticker-list {
  display: flex !important;
  flex-wrap: nowrap !important;
  width: max-content;
  animation: ps-marquee-scroll 38s linear infinite;
  padding-left: 0;
  margin: 0;
  list-style: none;
  align-items: center;
}
.v3-marquee-inner > *,
.v3-marquee-track > *,
[class*="marquee"] li,
[class*="marquee"] .marquee-item {
  display: inline-flex !important;
  align-items: center;
  gap: 1.5rem;
  padding: 0 2rem !important;
  font-size: clamp(1.3rem, 2vw + .4rem, 2.4rem);
  font-weight: 800;
  letter-spacing: -.01em;
  white-space: nowrap;
  font-family: "Bricolage Grotesque", "Anton", sans-serif;
  flex-shrink: 0;
}
.v3-marquee-inner > *::after,
.v3-marquee-track > *::after,
[class*="marquee"] li:not(:last-child)::after,
[class*="marquee"] .marquee-item::after {
  content: "●";
  color: var(--ps-amber);
  font-size: .55em;
  margin-left: 1.5rem;
}
@keyframes ps-marquee-scroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.v3-marquee-strip:hover .v3-marquee-inner,
[class*="marquee"]:hover [class*="track"],
.dh-marquee-strip:hover .dh-stats-marquee { animation-play-state: paused; }

@media (prefers-reduced-motion: reduce) {
  .v3-marquee-inner, .v3-marquee-track, [class*="marquee"] [class*="track"] { animation: none; }
}

/* ============================================================
   v3 KINETIC MARQUEE — targeted fix (agent's exact classes)
   ============================================================ */
section.v3-marquee-strip {
  background: var(--ps-ink) !important;
  color: var(--ps-cream) !important;
  padding: 1.4rem 0 !important;
  overflow: hidden !important;
  white-space: nowrap !important;
  position: relative !important;
  border-top: 1px solid rgba(255,184,28,0.18) !important;
  border-bottom: 1px solid rgba(255,184,28,0.18) !important;
}
section.v3-marquee-strip > .v3-marquee-inner {
  display: inline-flex !important;
  flex-wrap: nowrap !important;
  width: max-content !important;
  animation: ps-marquee-scroll 38s linear infinite !important;
  align-items: center !important;
  white-space: nowrap !important;
}
.v3-marquee-inner > span {
  display: inline-flex !important;
  align-items: center !important;
  flex-shrink: 0 !important;
  white-space: nowrap !important;
  font-family: "Bricolage Grotesque", "Anton", system-ui, sans-serif !important;
  font-weight: 800 !important;
  font-size: clamp(1.3rem, 2vw + .4rem, 2.2rem) !important;
  letter-spacing: -.01em !important;
  text-transform: uppercase !important;
  color: var(--ps-cream) !important;
  padding: 0 1.6rem !important;
}
.v3-marquee-inner > span.dot {
  color: var(--ps-amber) !important;
  font-size: .6rem !important;
  padding: 0 .25rem !important;
  vertical-align: middle !important;
}
section.v3-marquee-strip:hover > .v3-marquee-inner,
.dh-stats-marquee:hover,
.dh-marquee-strip .dh-stats-marquee:hover { animation-play-state: paused !important; }
@media (prefers-reduced-motion: reduce) {
  section.v3-marquee-strip > .v3-marquee-inner { animation: none !important; transform: translateX(0) !important; }
}

/* ============================================================
   v1-SOFT BENTO GRID — FORCE responsive layout
   The agent's CSS rules were not nested in media queries properly,
   so the mobile 1fr rule won at all viewports. Force-fix.
   ============================================================ */

/* Desktop: 12-col grid */
@media (min-width: 992px) {
  section.ps-bento .ps-bento__grid {
    display: grid !important;
    grid-template-columns: repeat(12, 1fr) !important;
    grid-auto-rows: 200px !important;
    gap: 1rem !important;
    max-width: 1200px;
    margin: 0 auto;
  }
}

/* Tablet: 2-col */
@media (min-width: 576px) and (max-width: 991px) {
  section.ps-bento .ps-bento__grid {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    grid-auto-rows: 220px !important;
    gap: 1rem !important;
  }
  .ps-bento-tile, [class^="tile-"] {
    grid-column: span 1 !important;
    grid-row: span 1 !important;
  }
}

/* Mobile: 1-col */
@media (max-width: 575px) {
  section.ps-bento .ps-bento__grid {
    display: grid !important;
    grid-template-columns: 1fr !important;
    grid-auto-rows: 240px !important;
    gap: .8rem !important;
  }
  .ps-bento-tile, [class^="tile-"] {
    grid-column: 1 !important;
    grid-row: span 1 !important;
  }
}

/* ============================================================
   AOS FORCED REVEAL — stock AOS handles initial state.
   We do NOT override opacity. Instead, JS guarantees reveal
   after 1.5s via the aos-force-reveal class.
   ============================================================ */
.aos-force-reveal[data-aos] {
  opacity: 1 !important;
  transform: none !important;
  transition: opacity .6s ease, transform .6s ease !important;
}

/* ============================================================
   v3 CARD COLORS — strong override with explicit hex (no vars)
   The agent's `.card-red.v3-card-body { ... }` selector matches
   nothing because card-red is on the outer card not the body.
   These rules apply colors to the body div directly via CHILD
   selector, plus a fallback on the outer card for safety.
   ============================================================ */
.v3-activity-card { isolation: isolate; }
.v3-activity-card.card-red    { background-color: #E8231C !important; color: #fff !important; z-index: 1; }
.v3-activity-card.card-amber  { background-color: #FFB81C !important; color: #0B0E14 !important; z-index: 2; }
.v3-activity-card.card-cyan   { background-color: #27D9D2 !important; color: #0B0E14 !important; z-index: 3; }
.v3-activity-card.card-violet { background-color: #7B5BE6 !important; color: #fff !important; z-index: 4; }
.v3-activity-card.card-cream  { background-color: #FFF8EC !important; color: #0B0E14 !important; z-index: 5; box-shadow: 0 -2px 0 rgba(11,14,20,0.06); }

/* Reset z-index cascade: stack from bottom up so cards layer correctly during sticky scroll */
.v3-activity-card:nth-of-type(1) { z-index: 5; top: 100px; }
.v3-activity-card:nth-of-type(2) { z-index: 4; top: 120px; }
.v3-activity-card:nth-of-type(3) { z-index: 3; top: 140px; }
.v3-activity-card:nth-of-type(4) { z-index: 2; top: 160px; }
.v3-activity-card:nth-of-type(5) { z-index: 1; top: 180px; }

/* Body half inherits parent's colored background so the body div doesn't blank out */
.v3-activity-card .v3-card-body { background-color: transparent !important; }
.v3-activity-card.card-red .v3-card-body,
.v3-activity-card.card-violet .v3-card-body { color: #fff !important; }
.v3-activity-card.card-amber .v3-card-body,
.v3-activity-card.card-cyan .v3-card-body,
.v3-activity-card.card-cream .v3-card-body { color: #0B0E14 !important; }

/* Tags / pills inside cards */
.v3-activity-card .v3-card-tag {
  display: inline-block;
  padding: .25rem .8rem;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  background: rgba(255,255,255,0.18);
  color: inherit !important;
}
.v3-activity-card.card-amber .v3-card-tag,
.v3-activity-card.card-cyan .v3-card-tag,
.v3-activity-card.card-cream .v3-card-tag {
  background: rgba(11,14,20,0.12);
}

/* CTA button inside card */
.v3-activity-card .v3-card-cta {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  background: rgba(11,14,20,0.85);
  color: #fff !important;
  padding: .55rem 1.2rem;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 700;
  font-size: .9rem;
  margin-top: 1rem;
  width: fit-content;
}
.v3-activity-card.card-cream .v3-card-cta { background: var(--ps-red); }

/* ============================================================
   HEADER MEGA MENU — open on hover (desktop)
   ============================================================ */
@media (min-width: 992px) {
  .ps-activities-li:hover .ps-mega-menu,
  .ps-activities-li:focus-within .ps-mega-menu,
  .ps-activities-toggle:hover ~ .ps-mega-menu,
  .ps-activities-toggle:focus ~ .ps-mega-menu {
    display: flex !important;
  }
  /* Hover-bridge so menu doesn't close when moving cursor from trigger to panel */
  .ps-activities-li::after {
    content: "";
    position: absolute;
    inset: 100% 0 auto 0;
    height: 16px;
    pointer-events: none;
  }
  .ps-activities-li:hover::after { pointer-events: auto; }
  /* Home dropdown also hover-open */
  .ps-home-li:hover .ps-home-dropdown,
  .ps-home-toggle:hover + .ps-home-dropdown,
  .ps-home-toggle:focus + .ps-home-dropdown {
    opacity: 1 !important;
    visibility: visible !important;
    transform: translateY(0) !important;
  }
}

/* ============================================================
   CONTRAST FIXES — sitewide
   ============================================================ */
/* Ensure text on .ps-glass (translucent white over warm photos) stays readable */
.ps-glass { color: #0B0E14; }
.ps-glass h1, .ps-glass h2, .ps-glass h3, .ps-glass h4, .ps-glass p, .ps-glass span { color: #0B0E14; }
.ps-glass-dark { color: #FFF8EC; }
.ps-glass-dark h1, .ps-glass-dark h2, .ps-glass-dark h3, .ps-glass-dark h4, .ps-glass-dark p { color: #FFF8EC; }

/* Stat number fallback — when gradient text isn't supported, use solid red */
@supports not (-webkit-background-clip: text) { .ps-stat-num { color: #E8231C; -webkit-text-fill-color: initial; } }

/* Pills on dark backgrounds */
.bg-ink .ps-pill, .bg-ink-2 .ps-pill { color: #FFB81C; background: rgba(255,184,28,0.15); border-color: rgba(255,184,28,0.4); }

/* Activity tile labels — ensure text is white over the gradient overlay */
.ps-tile-label, [class*="-tile"] [class*="__label"], .ps-bento-tile__label {
  color: #fff !important;
}
.ps-tile-label *, .ps-bento-tile__label *, [class*="-tile"] [class*="__label"] * { color: inherit !important; }

/* ============================================================
   v4 TACTICAL — BRIGHT CRT COLOR PALETTE
   Boost contrast on dark canvas — neon green, electric yellow,
   alert red, cyan accents. Targets only .tac-* signatures
   (v4-specific) so other variants stay calm.
   ============================================================ */

/* @why: scanline + tac-pad sections get a brighter palette via redefined CSS vars
   scoped to the v4 sections themselves */
.tac-scanlines, .tac-pad, .tac-pad-sm,
section.lc-block.tac-scanlines,
section.lc-block.tac-pad,
section.lc-block.tac-pad-sm {
  --tac-bg:        #08090E;          /* slightly deeper for higher contrast */
  --tac-text:      #EEFBFF;          /* cool electric white (was warm cream) */
  --tac-text-mute: #94A2B6;          /* readable mute */
  --tac-red:       #FF3B30;          /* alert red — brighter */
  --tac-red-bg:    #FF1F1F;          /* CTA red */
  --tac-amber:     #FFD60A;          /* electric yellow */
  --tac-cyan:      #4FF5FF;          /* electric cyan */
  --tac-green:     #4AFF8C;          /* terminal green for status */
  --tac-violet:    #A18BFF;          /* alt accent */
  background-color: var(--tac-bg) !important;
  color: var(--tac-text) !important;
}

/* All headings inside tac sections — bright white */
.tac-scanlines h1, .tac-scanlines h2, .tac-scanlines h3, .tac-scanlines h4,
.tac-pad h1, .tac-pad h2, .tac-pad h3, .tac-pad h4,
.tac-pad-sm h1, .tac-pad-sm h2, .tac-pad-sm h3, .tac-pad-sm h4 {
  color: var(--tac-text) !important;
}

/* Body text — readable mute */
.tac-scanlines p, .tac-scanlines li, .tac-scanlines span:not(.dot):not(.tac-hud-label-red),
.tac-pad p, .tac-pad li,
.tac-pad-sm p, .tac-pad-sm li {
  color: var(--tac-text) !important;
}

/* HUD label red accents */
.tac-hud-label-red, .tac-cursor {
  color: var(--tac-red) !important;
}

/* Mono micro labels — terminal green for "active/status" */
.tac-micro, [class*="tac-"] [class^="status"], [class*="tac-"] code {
  color: var(--tac-green) !important;
  font-family: "JetBrains Mono", "Roboto Mono", ui-monospace, monospace !important;
  letter-spacing: .04em;
}

/* CTA buttons — bright alert red, white text */
.tac-btn-lg, .tac-pad .btn-primary, .tac-pad-sm .btn-primary {
  background: var(--tac-red-bg) !important;
  border-color: var(--tac-red-bg) !important;
  color: #fff !important;
  font-weight: 800 !important;
  text-transform: uppercase !important;
  letter-spacing: .08em !important;
  box-shadow: 0 0 0 1px rgba(255,255,255,.05), 0 8px 24px rgba(255,31,31,.4), 0 0 40px rgba(255,31,31,.2) !important;
  border-radius: 0 !important;
  font-family: "JetBrains Mono", monospace !important;
}
.tac-btn-lg:hover, .tac-pad .btn-primary:hover {
  background: #FFD60A !important;
  color: #08090E !important;
  border-color: #FFD60A !important;
  box-shadow: 0 0 0 1px rgba(0,0,0,.05), 0 8px 28px rgba(255,214,10,.55), 0 0 50px rgba(255,214,10,.3) !important;
}
.tac-pad .btn-outline-light, .tac-pad-sm .btn-outline-light, .tac-pad a.btn-outline {
  border: 2px solid var(--tac-cyan) !important;
  color: var(--tac-cyan) !important;
  background: transparent !important;
  font-family: "JetBrains Mono", monospace !important;
  border-radius: 0 !important;
}
.tac-pad .btn-outline-light:hover, .tac-pad-sm .btn-outline-light:hover {
  background: var(--tac-cyan) !important;
  color: #08090E !important;
}

/* Stat numbers — bright cyan or amber, large */
.tac-pad .ps-stat-num, .tac-scanlines .ps-stat-num,
[class*="tac-"] .ps-stat-num {
  background: none !important;
  -webkit-text-fill-color: initial !important;
  color: var(--tac-cyan) !important;
  font-family: "JetBrains Mono", monospace !important;
  text-shadow: 0 0 24px rgba(79,245,255,.4);
  font-weight: 800 !important;
}

/* Bordered photo frames + cards — brighter red borders */
.tac-hero-photo-wrap, [class*="tac-photo"], [class*="tac-card"], [class*="tac-frame"] {
  border-color: var(--tac-red) !important;
}

/* Anchor / link colors */
.tac-pad a, .tac-pad-sm a, .tac-scanlines a {
  color: var(--tac-cyan) !important;
}
.tac-pad a:hover, .tac-pad-sm a:hover, .tac-scanlines a:hover {
  color: var(--tac-amber) !important;
  text-shadow: 0 0 16px rgba(255,214,10,.5);
}

/* Comparison table cells (Mission Brief) — brighter */
.tac-pad table, .tac-pad-sm table { background: rgba(255,255,255,0.02) !important; }
.tac-pad table th, .tac-pad-sm table th { color: var(--tac-amber) !important; border-color: var(--tac-red) !important; }
.tac-pad table td, .tac-pad-sm table td { color: var(--tac-text) !important; border-color: rgba(255,255,255,0.08) !important; }

/* Marquee / sit-rep ticker — brighter */
[class*="tac-marquee"], [class*="tac-ticker"], .tac-pad .marquee, .tac-pad [class*="marquee"] {
  background: #08090E !important;
  border-top: 1px solid rgba(255,255,255,0.1) !important;
  border-bottom: 1px solid rgba(255,255,255,0.1) !important;
}
[class*="tac-marquee"] *, [class*="tac-ticker"] * {
  color: var(--tac-text) !important;
}
[class*="tac-marquee"] .dot, [class*="tac-ticker"] .dot {
  color: var(--tac-red) !important;
}

/* Status indicators — neon green for OPEN/ACTIVE, amber for warnings */
[class*="tac-"] [data-status="open"], [class*="tac-"] .status-open { color: var(--tac-green) !important; }
[class*="tac-"] [data-status="closed"], [class*="tac-"] .status-closed { color: var(--tac-red) !important; }

/* Brackets in headings — colored */
.tac-pad h1::before, .tac-pad h2::before { color: var(--tac-red); }
.tac-pad h1::after, .tac-pad h2::after { color: var(--tac-red); }

/* Crosshair / corner brackets — boosted */
[class*="tac-corner"], [class*="tac-crosshair"], [class*="tac-reticle"] {
  border-color: var(--tac-red) !important;
}

/* Dotted/dashed dividers — brighter */
[class*="tac-"] hr, [class*="tac-"] [class*="divider"], [class*="tac-"] [class*="rule"] {
  border-color: rgba(255,59,48,0.5) !important;
  border-style: dashed;
}

/* Photo grid HUD overlays — neon corners */
[class*="tac-hud"], [class*="tac-overlay"] {
  border-color: var(--tac-amber) !important;
  color: var(--tac-amber) !important;
}

/* Final CTA section — keep red, but make it pop */
section.tac-pad:last-of-type, .tac-deploy-section {
  background: var(--tac-red-bg) !important;
}
section.tac-pad:last-of-type h1, section.tac-pad:last-of-type h2,
.tac-deploy-section h1, .tac-deploy-section h2 {
  color: #08090E !important;
  font-weight: 900 !important;
  letter-spacing: -.02em !important;
}
.tac-deploy-section .btn-primary, section.tac-pad:last-of-type .btn-primary {
  background: #08090E !important;
  color: #FFD60A !important;
  border-color: #08090E !important;
}

/* Scanline texture — slightly more visible */
.tac-scanlines::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(0deg, rgba(255,255,255,0.02) 0px, rgba(255,255,255,0.02) 1px, transparent 1px, transparent 3px);
  pointer-events: none;
  mix-blend-mode: screen;
  z-index: 1;
}
.tac-scanlines { position: relative; }
.tac-scanlines > * { position: relative; z-index: 2; }

/* ============================================================
   v2 EDITORIAL — TYPOGRAPHY BOOST + GLASSMORPHIC + SUBTLE AOS
   Targets only .ed-* classes (v2-specific) so other variants stay calm.
   ============================================================ */

/* Body type — bump base + lead readability */
.ed-feature-row p, .ed-feature-row .lead,
.ed-feature-row p, .ed-mini-tile p, .ed-press-item p, .ed-cmp-cell p,
.ed-feature-row li, .ed-cmp-cell li {
  font-size: clamp(1.05rem, 0.5vw + .9rem, 1.18rem) !important;
  line-height: 1.7 !important;
  color: #1A1F2E !important;
}

/* Pull-quote / lead — more presence */
.ed-pullquote {
  font-size: clamp(1.6rem, 2.5vw + .5rem, 2.6rem) !important;
  line-height: 1.3 !important;
  font-family: "Newsreader", "Spectral", Georgia, serif !important;
  font-style: italic !important;
  font-weight: 300 !important;
}

/* Captions — mono micro but readable */
.ed-caption, .ed-mini-label, .ed-attribution {
  font-size: clamp(.78rem, .15vw + .72rem, .88rem) !important;
  letter-spacing: .12em !important;
  font-family: "JetBrains Mono", ui-monospace, monospace !important;
  text-transform: uppercase !important;
  color: rgba(11,14,20,0.6) !important;
}

/* Numerals (stat strip) — bigger */
.ed-numeral {
  font-size: clamp(3.4rem, 5vw + .5rem, 5.2rem) !important;
  font-weight: 800 !important;
  line-height: 1 !important;
  letter-spacing: -.03em !important;
  font-family: "Bricolage Grotesque", system-ui, sans-serif !important;
}
.ed-numeral-label {
  font-size: clamp(.78rem, .15vw + .7rem, .92rem) !important;
  letter-spacing: .14em !important;
  text-transform: uppercase !important;
  font-family: "JetBrains Mono", monospace !important;
}

/* Section H2 — italic serif larger */
section.lc-block h2:has(+ * .ed-feature-row),
.ed-feature-row h2, .ed-mini-tile h2, .ed-press-item h2, .ed-cmp-cell h2,
section[class*="lc-block"] h2.ed-numeral,
.ed-feature-row + h2 {
  font-size: clamp(2.4rem, 4vw + 0.3rem, 4rem) !important;
  font-family: "Newsreader", "Spectral", Georgia, serif !important;
  font-style: italic !important;
  font-weight: 300 !important;
  letter-spacing: -.02em !important;
  line-height: 1.05 !important;
}

/* Feature-row H3 (per activity) — larger + tighter */
.ed-feature-row h3 {
  font-size: clamp(1.8rem, 2vw + .5rem, 2.4rem) !important;
  font-family: "Bricolage Grotesque", sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: -.015em !important;
  line-height: 1.1 !important;
  margin-bottom: 1rem !important;
}

/* Mini activity tiles — readable label */
.ed-mini-tile p, .ed-mini-tile h4, .ed-mini-tile span {
  font-size: clamp(.95rem, .3vw + .85rem, 1.05rem) !important;
}
.ed-mini-tile { padding: 1.2rem !important; }

/* Press section — make outlets readable */
.ed-press-item {
  font-size: clamp(1rem, 0.4vw + .85rem, 1.2rem) !important;
  font-family: "Bricolage Grotesque", sans-serif !important;
  font-weight: 600 !important;
  padding: 1rem 1.25rem !important;
  letter-spacing: -.01em !important;
}

/* ── GLASSMORPHIC accents on v2 ──
   On the editorial page, glassmorphic surfaces give a subtle premium signal.
   Apply to: hero copy panel, pullquote frames, comparison table, and final CTA. */
.ed-hero-glass, .hero-shell .container-fluid > .row > .col-lg-7,
.ed-feature-row.ed-feature-glass,
.ed-pullquote-frame,
.ed-final-cta {
  /* light glass on warm cream */
  background: rgba(255,255,255,0.55) !important;
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255,255,255,0.6);
  border-radius: 18px;
}

/* Hero copy block subtle glass — applied to col with copy */
.hero-shell .col-lg-7 > div, .hero-shell .col-lg-6:first-child > div,
.hero-shell [class*="ed-hero-copy"] {
  position: relative;
}

/* Comparison table — subtle frosted card behind */
.ed-cmp-head + .ed-cmp-row, .ed-cmp-row {
  background: rgba(255,255,255,0.4) !important;
  backdrop-filter: blur(8px);
}
.ed-cmp-cell {
  font-size: clamp(.95rem, .3vw + .85rem, 1.05rem) !important;
  padding: 1rem 1.4rem !important;
}
.ed-cmp-head {
  font-size: clamp(.85rem, .2vw + .75rem, .95rem) !important;
  padding: 1rem 1.4rem !important;
  letter-spacing: .12em !important;
  font-family: "JetBrains Mono", monospace !important;
  text-transform: uppercase !important;
}

/* ── SUBTLE AOS for v2 — slow fade, no big translate ── */
[class*="ed-"][data-aos="fade-up"] { transform: translateY(12px) !important; }
[class*="ed-"][data-aos="fade-up"].aos-animate { transform: none !important; }

/* Photo crops — subtle hover scale, slow */
.ed-feature-row img,
.ed-feature-row img, .ed-mini-tile img, .ed-press-item img, .ed-cmp-cell img:not(.ed-mini-tile img) {
  transition: transform 1.4s cubic-bezier(.16,1,.3,1) !important;
}
.ed-feature-row:hover img { transform: scale(1.03) !important; }

/* Soft shadows — v2 signature */
.sh-soft, .ed-feature-row, .ed-mini-tile {
  box-shadow: 0 14px 32px rgba(11,14,20,.06), 0 2px 6px rgba(11,14,20,.04);
}
.ed-feature-row:hover, .ed-mini-tile:hover {
  box-shadow: 0 22px 48px rgba(11,14,20,.1), 0 4px 12px rgba(11,14,20,.06);
}

/* Final CTA polish */
section.lc-block:last-of-type .btn-primary {
  font-size: clamp(1.05rem, .3vw + .95rem, 1.15rem) !important;
  padding: 1rem 2.6rem !important;
}

/* ============================================================
   v2 EDITORIAL — PRESS CARD STYLE (real outlets, no placeholders)
   ============================================================ */
.ed-press-item--link {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  padding: 1.4rem 1.2rem;
  border-radius: 14px;
  background: rgba(255,255,255,0.55);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255,255,255,0.6);
  text-decoration: none !important;
  color: #0B0E14 !important;
  transition: transform .35s cubic-bezier(.16,1,.3,1), box-shadow .35s ease, background .25s ease;
  height: 100%;
  min-height: 100px;
  align-items: flex-start;
  justify-content: center;
}
.ed-press-item--link:hover, .ed-press-item--link:focus-visible {
  background: rgba(255,255,255,0.85);
  transform: translateY(-3px);
  box-shadow: 0 18px 38px rgba(11,14,20,.08), 0 4px 10px rgba(11,14,20,.05);
  border-color: rgba(232,35,28,0.25);
}
.ed-press-item--link .ed-press-name {
  display: block;
  font-family: "Bricolage Grotesque", system-ui, sans-serif;
  font-size: clamp(1.05rem, .4vw + .9rem, 1.25rem);
  font-weight: 700;
  letter-spacing: -.015em;
  line-height: 1.15;
  color: #0B0E14;
}
.ed-press-item--link .ed-press-meta {
  display: block;
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: .72rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: rgba(11,14,20,0.55);
}
.ed-press-item--link::after {
  content: "→";
  position: absolute;
  top: 1rem;
  right: 1.1rem;
  font-size: 1.1rem;
  color: rgba(11,14,20,.3);
  transition: transform .25s ease, color .25s ease;
}
.ed-press-item--link { position: relative; }
.ed-press-item--link:hover::after { transform: translateX(4px); color: #E8231C; }
@media (max-width: 575px) {
  .ed-press-item--link { padding: 1rem .9rem; min-height: 80px; }
}

/* ============================================================
   v1 HERO BLOB IMAGES — fill the blob container fully
   The generic `section.lc-block img { height: auto }` rule was
   winning specificity over agent's `.ps-hero__photo img`.
   Use !important to guarantee fill regardless of cascade.
   ============================================================ */
.ps-hero__photo img,
.ps-hero__photo--main img,
.ps-hero__photo--left img,
.ps-hero__photo--right img,
.ps-hero__photos img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
  position: absolute !important;
  inset: 0 !important;
}
.ps-hero__photo { position: absolute; }
.ps-hero__photos .ps-hero__photo {
  /* @why: ensure each blob is positioned + clips the image to its border-radius */
  overflow: hidden;
}

/* Birthday section organic photo also affected by same generic rule */
.ps-birthday__img img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
  position: absolute !important;
  inset: 0 !important;
}
.ps-birthday__img { position: relative; aspect-ratio: 1 / 1; }

/* ============================================================
   DEFAULT HOMEPAGE POLISH (2026-05-07)
   Marquee scroll, playful comparison table, subtle glass,
   AOS stagger delays. Targets only .dh-* classes (default-home).
   ============================================================ */

/* @why: agent used `animation-name: marquee` but no keyframes was defined;
   alias to existing ps-marquee-scroll keyframes from earlier patch */
.dh-stats-marquee {
  animation-name: ps-marquee-scroll !important;
}
.dh-stats-marquee:hover { animation-play-state: paused; }

/* Marquee strip dark bg refinement */
section.lc-block.dh-marquee-strip,
[class*="dh-marquee"] {
  background: linear-gradient(180deg, #0B0E14 0%, #161A26 100%) !important;
  border-top: 1px solid rgba(255,184,28,0.18);
  border-bottom: 1px solid rgba(255,184,28,0.18);
  padding: 1.4rem 0 !important;
  overflow: hidden;
  position: relative;
}
[class*="dh-marquee"] .marquee-item, [class*="dh-stats-marquee"] > div {
  display: inline-flex !important;
  align-items: center;
  gap: 1.6rem;
  padding: 0 1.8rem !important;
  font-family: "Bricolage Grotesque", "Anton", sans-serif !important;
  font-weight: 800;
  font-size: clamp(1.05rem, .8vw + .8rem, 1.5rem) !important;
  letter-spacing: -.005em;
  color: #FFF8EC !important;
  text-transform: uppercase;
  white-space: nowrap;
  flex-shrink: 0;
}
[class*="dh-marquee"] .marquee-item::after,
[class*="dh-marquee"] .dot,
[class*="dh-stats-marquee"] .dot {
  content: "●";
  color: #E8231C !important;
  font-size: .55em;
  margin-left: 1.6rem;
}

/* ============================================================
   PLAYFUL-PROFESSIONAL COMPARISON TABLE
   ============================================================ */
.dh-cmp-wrap, [class*="dh-comparison"] table {
  background: rgba(255,255,255,0.65) !important;
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255,255,255,0.7);
  border-radius: 24px;
  box-shadow: 0 18px 48px rgba(11,14,20,.05), 0 4px 12px rgba(11,14,20,.03);
  overflow: hidden;
}

/* Table header row — bold but warm */
section.lc-block table thead tr,
[class*="dh-cmp"] table thead tr {
  background: linear-gradient(180deg, rgba(255,184,28,.08) 0%, rgba(255,255,255,0) 100%);
}
section.lc-block table thead th,
[class*="dh-cmp"] table thead th {
  font-family: "JetBrains Mono", ui-monospace, monospace !important;
  font-size: .82rem !important;
  letter-spacing: .12em !important;
  text-transform: uppercase !important;
  font-weight: 800 !important;
  padding: 1.4rem 1.4rem !important;
  color: rgba(11,14,20,0.65) !important;
  border-bottom: 2px solid rgba(11,14,20,0.08) !important;
}

/* Play and Spin column — accented column with playful tint */
section.lc-block table thead th:nth-child(2),
[class*="dh-cmp"] table thead th:nth-child(2) {
  color: #E8231C !important;
  background: linear-gradient(180deg, rgba(232,35,28,.08) 0%, rgba(232,35,28,.04) 100%) !important;
  position: relative;
}
section.lc-block table thead th:nth-child(2)::before {
  content: "★";
  position: absolute;
  top: .8rem;
  right: 1.2rem;
  color: #FFB81C;
  font-size: 1.1rem;
  filter: drop-shadow(0 2px 4px rgba(255,184,28,.4));
}

/* Rows — striped + hover lift */
section.lc-block table tbody tr,
[class*="dh-cmp"] table tbody tr {
  border-top: 1px solid rgba(11,14,20,0.05);
  transition: background-color .25s ease, transform .25s ease;
}
section.lc-block table tbody tr:nth-child(even),
[class*="dh-cmp"] table tbody tr:nth-child(even) {
  background: rgba(255,184,28,0.025);
}
section.lc-block table tbody tr:hover,
[class*="dh-cmp"] table tbody tr:hover {
  background: rgba(232,35,28,0.04);
}
section.lc-block table tbody td,
[class*="dh-cmp"] table tbody td {
  padding: 1.1rem 1.4rem !important;
  font-size: clamp(.95rem, .3vw + .85rem, 1.05rem) !important;
  vertical-align: middle !important;
  line-height: 1.5;
}

/* Play and Spin column — highlight */
section.lc-block table tbody td:nth-child(2),
[class*="dh-cmp"] table tbody td:nth-child(2) {
  background: rgba(232,35,28,0.05);
  color: #B71912 !important;
  font-weight: 700 !important;
  position: relative;
}
section.lc-block table tbody tr:hover td:nth-child(2),
[class*="dh-cmp"] table tbody tr:hover td:nth-child(2) {
  background: rgba(232,35,28,0.1);
}

/* "At Home" / negative column — muted */
section.lc-block table tbody td:nth-child(3),
[class*="dh-cmp"] table tbody td:nth-child(3) {
  color: rgba(11,14,20,0.45) !important;
  font-style: italic;
}

/* Auto-add ✓ / ✗ icons via content rules where possible */
section.lc-block td.cmp-yes::before, [class*="dh-cmp"] td.cmp-yes::before {
  content: "✓ ";
  color: #E8231C;
  font-weight: 900;
  font-size: 1.1em;
  margin-right: .35rem;
  display: inline-block;
  transform: translateY(-1px);
}
section.lc-block td.cmp-no::before, [class*="dh-cmp"] td.cmp-no::before {
  content: "× ";
  color: rgba(11,14,20,0.3);
  font-weight: 800;
  font-size: 1.2em;
  margin-right: .35rem;
}

/* First column (feature label) — bold */
section.lc-block table tbody td:first-child,
[class*="dh-cmp"] table tbody td:first-child {
  font-weight: 600 !important;
  color: var(--ps-ink) !important;
}

/* ============================================================
   GLASSMORPHIC SUBTLE TOUCHES — sitewide on default
   ============================================================ */
.dh-stat-card, [class*="dh-stat"], [class*="dh-feature-card"] {
  background: rgba(255,255,255,0.55);
  backdrop-filter: blur(18px) saturate(180%);
  -webkit-backdrop-filter: blur(18px) saturate(180%);
  border: 1px solid rgba(255,255,255,0.7);
  border-radius: 18px;
}

/* Map+NAP card subtle glass */
[class*="dh-nap"], [class*="dh-map-card"] {
  background: rgba(255,255,255,0.7);
  backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255,255,255,0.8);
  box-shadow: 0 18px 36px rgba(11,14,20,0.06);
}

/* Testimonial cards (already glass via .ps-glass — refine) */
.dh-testimonial-card, [class*="dh-testimonial"] {
  background: rgba(255,255,255,0.6) !important;
  backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255,255,255,0.7);
  border-radius: 20px;
  padding: 2rem 1.8rem;
  transition: transform .35s cubic-bezier(.16,1,.3,1), box-shadow .35s ease;
}
.dh-testimonial-card:hover, [class*="dh-testimonial"]:hover {
  transform: translateY(-4px);
  box-shadow: 0 22px 48px rgba(11,14,20,0.08);
}

/* "Different from venue down road" 3 cards — subtle glass */
[class*="dh-feature-row"] > [class*="col"] > div,
.dh-vs-card {
  background: rgba(255,255,255,0.5);
  backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,0.6);
  border-radius: 18px;
  padding: 1.8rem 1.6rem;
  transition: transform .3s ease, box-shadow .3s ease;
}
.dh-vs-card:hover, [class*="dh-feature-row"] > [class*="col"]:hover > div {
  transform: translateY(-3px);
  box-shadow: 0 16px 32px rgba(11,14,20,0.08);
}

/* ============================================================
   AOS STAGGER DELAYS for default
   ============================================================ */
[class*="dh-"] [data-aos]:nth-child(1) { transition-delay: 0ms !important; }
[class*="dh-"] [data-aos]:nth-child(2) { transition-delay: 80ms !important; }
[class*="dh-"] [data-aos]:nth-child(3) { transition-delay: 160ms !important; }
[class*="dh-"] [data-aos]:nth-child(4) { transition-delay: 240ms !important; }
[class*="dh-"] [data-aos]:nth-child(5) { transition-delay: 320ms !important; }

/* Subtle reveals for default — softer than sitewide AOS */
section.lc-block[class*="dh-"][data-aos="fade-up"] {
  transform: translateY(20px);
}
section.lc-block[class*="dh-"][data-aos="fade-up"].aos-animate {
  transform: none;
  transition: transform 1s cubic-bezier(.16,1,.3,1), opacity .9s ease;
}

/* ============================================================
   CONTRAST POLISH
   ============================================================ */
/* Headings on cream bg — full ink */
section.lc-block.bg-cream h1, section.lc-block.bg-cream h2, section.lc-block.bg-cream h3,
section.lc-block.bg-bone h1, section.lc-block.bg-bone h2, section.lc-block.bg-bone h3 {
  color: var(--ps-ink) !important;
}

/* Body on cream — slightly darker than default body color */
section.lc-block.bg-cream p, section.lc-block.bg-cream li,
section.lc-block.bg-bone p, section.lc-block.bg-bone li {
  color: rgba(11,14,20,.78) !important;
}

/* Italic-serif H1 in glass-postcard hero — boost legibility */
.dh-hero-postcard h1, .ps-glass h1, section.lc-block .ps-glass h1 {
  color: var(--ps-ink) !important;
  text-shadow: 0 2px 12px rgba(255,255,255,0.4);
}

/* Hero CTA buttons on cinematic photo — guaranteed contrast */
.dh-hero-postcard .btn, [class*="dh-hero"] .btn {
  font-weight: 700 !important;
  letter-spacing: .015em !important;
}

/* ============================================================
   bg-ink text color guarantee — overrides inline style failures
   ============================================================ */
section.lc-block.bg-ink p[style*="--ps-cream"],
section.lc-block.bg-ink p[style*="FFF8EC"],
section.lc-block.bg-ink p[style*="ps-cream"] {
  color: #FFF8EC !important;
}
section.lc-block.bg-ink p,
section.lc-block.bg-ink h1,
section.lc-block.bg-ink h2,
section.lc-block.bg-ink h3,
section.lc-block.bg-ink h4,
section.lc-block.bg-ink small,
section.lc-block.bg-ink span:not(.ps-pill-amber):not(.text-amber):not(.ps-pill-red):not(.text-red) {
  color: #FFF8EC !important;
}
/* Pills on dark — keep amber */
section.lc-block.bg-ink .ps-pill-amber, section.lc-block.bg-ink .text-amber,
section.lc-block.bg-ink span[class*="amber"] {
  color: #FFB81C !important;
}
/* Increase legibility for muted body copy on dark */
section.lc-block.bg-ink p { opacity: 1 !important; }
section.lc-block.bg-ink p[style*="opacity"] { opacity: .92 !important; }

/* ============================================================
   v1 — Unforgettable Birthday section: image showcase
   ============================================================ */
.ps-birthday__inner {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 4rem !important;
  align-items: center !important;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 1.5rem;
}
@media (max-width: 991px) {
  .ps-birthday__inner { grid-template-columns: 1fr !important; gap: 2.5rem !important; }
  .ps-birthday__img-wrap { order: -1; }
}

.ps-birthday__img-wrap {
  position: relative;
  isolation: isolate;
  aspect-ratio: 5 / 4;
  max-width: 520px;
  margin: 0 auto;
  width: 100%;
}
.ps-birthday__blob {
  position: absolute !important;
  width: 78% !important;
  height: 78% !important;
  top: -6% !important;
  right: -6% !important;
  background: rgba(255,184,28,0.22) !important;
  border-radius: 60% 40% 50% 50% / 50% 60% 40% 50% !important;
  filter: blur(48px) !important;
  z-index: 0 !important;
  pointer-events: none;
}
.ps-birthday__img {
  position: relative !important;
  z-index: 1 !important;
  width: 100% !important;
  height: 100% !important;
  border-radius: 38% 62% 50% 50% / 50% 45% 55% 50% !important;
  overflow: hidden !important;
  box-shadow: 0 24px 60px rgba(232,35,28,0.18) !important;
}
.ps-birthday__img img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
  position: absolute !important;
  inset: 0 !important;
  transition: transform 1.2s cubic-bezier(.16,1,.3,1);
}
.ps-birthday__img:hover img { transform: scale(1.04); }

/* =====================================================
   Quick-Fact Chips — replaces oversized value/caption
   stat-strip tiles sitewide (2026-05-19)
   ===================================================== */
.ps-fact-chip {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .45em;
  font-size: clamp(1rem, 1.8vw + .5rem, 1.25rem);
  font-weight: 500;
  color: var(--ps-ink, #0B0E14);
  line-height: 1.3;
  white-space: normal;
}
.ps-fact-chip::before {
  content: "◆";
  color: var(--ps-red, #E8231C);
  font-size: .65em;
  flex-shrink: 0;
  margin-top: .1em;
}
.ps-fact-chip strong {
  color: var(--ps-red, #E8231C);
  font-weight: 700;
  white-space: nowrap;
}
/* Tile wrapper — uniform height, centered */
.ps-stat-tile {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 3.5rem;
  padding: .75rem .5rem;
}

/* ============================================================
 * ps-stat-blob — homepage hero stat row.
 * The HTML uses .ps-stat-blob__num for the number + a BARE <span> for the label,
 * which had no styling → labels were invisible on the rendered page.
 * Added 2026-05-23 by ISM Dashboard plugin author.
 * ============================================================ */

.ps-stat-blob {
    position: relative;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 0.75rem 1rem;
    margin: 0.5rem;
    gap: 0.3rem;
    isolation: isolate;
}
.ps-stat-blob__bg {
    position: absolute;
    inset: 0;
    border-radius: 16px;
    opacity: 0.18;
    z-index: -1;
}
.ps-stat-blob__num {
    font-family: "JetBrains Mono", "Roboto Mono", ui-monospace, monospace;
    font-weight: 800;
    font-size: clamp(2rem, 3.5vw + 0.5rem, 3.5rem);
    line-height: 1;
    color: var(--ps-red, #e8231c);
    display: block;
}
.ps-stat-blob > span:not(.ps-stat-blob__num) {
    font-size: 0.92rem;
    font-weight: 600;
    color: var(--ps-ink, #1a1a1a);
    letter-spacing: 0.02em;
    text-transform: uppercase;
    display: block;
}

/* Stat blob: no card frame, more vivid pastel bg, fits 6-across on desktop (Mike 2026-05-23) */
.ps-stat-blob {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    padding: 0.5rem 0.6rem !important;
    margin: 0 !important;
    flex: 1 1 0 !important;
    min-width: 130px;
}
.ps-stat-blob__bg {
    opacity: 0.65 !important;
}
.ps-stat-blob > span:not(.ps-stat-blob__num) {
    color: #2a2a2a;
}
.ps-stats__inner {
    gap: 0.75rem !important;
}
@media (max-width: 768px) {
    .ps-stat-blob { flex: 1 1 40% !important; min-width: 140px; }
}

/* ========================================================
   .ps-tile mobile overlay fix (fixplan §6, 2026-07-15)
   Overlay/title/meta are inline-styled divs inside .ps-tile
   (no classes) — !important required to beat inline styles.
   Structure: .ps-tile > div(overlay) > div(accent), div(title), small(meta)
   ======================================================== */
@media (max-width: 599px) {
  .ps-tile {
    aspect-ratio: 3 / 2 !important;
    min-height: 0 !important;
  }
  .ps-tile > div {
    padding: .9rem 1rem !important;
    background: linear-gradient(180deg, transparent 40%, rgba(11,14,20,.92)) !important;
  }
  .ps-tile > div > div:last-of-type {
    font-size: 1.05rem !important;
  }
  .ps-tile > div > small {
    display: -webkit-box !important;
    -webkit-line-clamp: 1 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
  }
}
@media (min-width: 600px) and (max-width: 899px) {
  .col-lg-3:has(> .ps-tile),
  .col-md-4:has(> .ps-tile) {
    flex: 0 0 50% !important;
    max-width: 50% !important;
  }
  .ps-tile {
    aspect-ratio: 4 / 5 !important;
  }
}

/* Scrim-safe text: honour an explicitly-authored light colour.
   The .bg-cream/.bg-bone readability rule above forces dark ink on every p/li in a
   light section, which also hit text sitting on a dark image scrim (dark-on-dark,
   effectively invisible). Same specificity, later in source order, so this wins only
   where the author explicitly asked for light text. */
section.lc-block p[style*="color:#FFF8EC"],
section.lc-block li[style*="color:#FFF8EC"],
section.lc-block span[style*="color:#FFF8EC"],
section.lc-block p[style*="color:rgba(247"],
section.lc-block li[style*="color:rgba(247"],
section.lc-block span[style*="color:rgba(247"],
section.lc-block p[style*="color:rgba(255"],
section.lc-block li[style*="color:rgba(255"],
section.lc-block span[style*="color:rgba(255"] {
  color: #FFF8EC !important;
}
