/* =========================================================
   PLYHS Child Theme — Global Visual System
   Scope: WordPress pages, Elementor containers/widgets, WooCommerce, forms.
   ========================================================= */

:root {
  --plyhs-black: #0e0e0e;
  --plyhs-soft-black: #171717;
  --plyhs-charcoal: #222222;

  --plyhs-cream: #f1faee;
  --plyhs-muted-cream: #cfd8d4;
  --plyhs-paper: #fff7e8;

  --plyhs-rust: #c14f2f;
  --plyhs-rust-dark: #8f351f;
  --plyhs-rust-light: #dc765c;

  --plyhs-teal: #37718e;
  --plyhs-teal-dark: #255168;
  --plyhs-teal-light: #74a9bd;

  --plyhs-gold: #e8b04a;
  --plyhs-deep-red: #6f1d1b;

  --plyhs-display: "Bebas Neue", "Oswald", "Arial Narrow", Impact, sans-serif;
  --plyhs-body: Inter, ui-sans-serif, system-ui, sans-serif;
}

html {
  scroll-behavior: smooth;
  background: var(--plyhs-black);
}

body {
  margin: 0;
  background:
    radial-gradient(circle at top left, rgba(255, 77, 166, 0.22), transparent 34rem),
    radial-gradient(circle at 80% 10%, rgba(0, 212, 198, 0.16), transparent 30rem),
    linear-gradient(180deg, #080608 0%, #120b14 42%, #080608 100%);
  color: var(--plyhs-cream);
  font-family: var(--plyhs-body);
  line-height: 1.55;
}

body.admin-bar .plyhs-sticky,
body.admin-bar .sticky-header {
  top: 32px;
}

img,
svg,
video {
  max-width: 100%;
  height: auto;
}

a {
  color: var(--plyhs-teal);
  text-underline-offset: 0.18em;
}

a:hover,
a:focus-visible {
  color: var(--plyhs-yellow);
}

::selection {
  background: var(--plyhs-pink);
  color: var(--plyhs-black);
}

/* Typography ------------------------------------------------ */

h1,
h2,
h3,
h4,
h5,
h6,
.elementor-heading-title {
  color: var(--plyhs-cream);
  font-family: var(--plyhs-display);
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 0.94;
  text-transform: uppercase;
}

h1,
.plyhs-h1 {
  font-size: clamp(3rem, 9vw, 7.5rem);
  margin: 0 0 1rem;
}

h2,
.plyhs-h2 {
  font-size: clamp(2.2rem, 6vw, 4.8rem);
  margin: 0 0 1rem;
}

h3,
.plyhs-h3 {
  font-size: clamp(1.5rem, 3.5vw, 2.6rem);
  margin: 0 0 0.7rem;
}

p {
  margin: 0 0 1rem;
}

.plyhs-kicker,
.elementor-widget .plyhs-kicker {
  color: var(--plyhs-yellow);
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  font-size: 0.78rem;
  font-weight: 900;
  letter-spacing: 0.18em;
  margin: 0 0 0.9rem;
  text-transform: uppercase;
}

.plyhs-kicker::before {
  content: "";
  display: inline-block;
  width: 1.8rem;
  height: 0.22rem;
  background: linear-gradient(90deg, var(--plyhs-pink), var(--plyhs-teal));
  border-radius: 999px;
}

.plyhs-muted,
.plyhs-meta-line {
  color: var(--plyhs-muted);
}

.plyhs-meta-line {
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* Layout shells -------------------------------------------- */

.plyhs-site-main,
.site-main,
#content {
  background: transparent;
}

.plyhs-page-shell {
  width: min(100%, var(--plyhs-max));
  margin: 0 auto;
  padding: clamp(2rem, 5vw, 5rem) clamp(1rem, 4vw, 2rem);
}

.plyhs-site-main--fullwidth .plyhs-page-shell,
.plyhs-front-page .plyhs-page-shell {
  width: 100%;
  max-width: none;
  padding: 0;
}

.plyhs-content-flow {
  width: min(100%, var(--plyhs-readable));
  margin: 0 auto;
}

.plyhs-content-flow > * + * {
  margin-top: 1.2rem;
}

.plyhs-section,
.plyhs-hero,
.plyhs-current-production,
.plyhs-cta-band,
.plyhs-page-hero {
  width: min(calc(100% - 2rem), var(--plyhs-max));
  margin-inline: auto;
}

.plyhs-section {
  padding: clamp(3rem, 7vw, 6rem) 0;
}

.plyhs-section--panel {
  background: linear-gradient(135deg, rgba(255, 77, 166, 0.1), rgba(0, 212, 198, 0.08));
  border: 1px solid var(--plyhs-border);
  border-radius: var(--plyhs-radius-lg);
  box-shadow: var(--plyhs-shadow);
  padding: clamp(2rem, 5vw, 4rem);
}

.plyhs-readable {
  max-width: var(--plyhs-readable);
}

/* Hero ------------------------------------------------------ */

.plyhs-hero {
  display: grid;
  min-height: min(82vh, 820px);
  align-items: center;
  padding: clamp(4rem, 8vw, 7rem) 0;
  position: relative;
}

.plyhs-hero::after {
  content: "";
  position: absolute;
  inset: auto 0 1rem auto;
  width: min(42vw, 30rem);
  height: min(42vw, 30rem);
  background:
    linear-gradient(45deg, rgba(255, 209, 102, 0.45), transparent 30%),
    repeating-linear-gradient(135deg, rgba(255, 77, 166, 0.24) 0 10px, rgba(0, 212, 198, 0.18) 10px 20px);
  border-radius: 50% 30% 45% 35%;
  filter: blur(0.2px);
  opacity: 0.72;
  z-index: -1;
}

.plyhs-hero__content {
  max-width: 880px;
}

.plyhs-hero__content p:not(.plyhs-kicker) {
  color: var(--plyhs-muted);
  font-size: clamp(1.05rem, 2.2vw, 1.35rem);
  max-width: 760px;
}

/* Cards, grids, buttons ------------------------------------ */

.plyhs-button-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem;
  margin-top: 1.4rem;
}

.plyhs-button,
button.plyhs-button,
input[type="submit"],
.wp-block-button__link,
.elementor-button {
  align-items: center;
  border: 2px solid transparent;
  border-radius: 999px;
  cursor: pointer;
  display: inline-flex;
  font-weight: 950;
  justify-content: center;
  letter-spacing: 0.05em;
  min-height: 3rem;
  padding: 0.85rem 1.25rem;
  text-decoration: none !important;
  text-transform: uppercase;
  transition: transform 160ms ease, box-shadow 160ms ease, background 160ms ease, color 160ms ease, border-color 160ms ease;
}

.plyhs-button:hover,
.plyhs-button:focus-visible,
.wp-block-button__link:hover,
.elementor-button:hover {
  transform: translateY(-2px);
}

.plyhs-button--primary,
.wp-block-button__link,
.elementor-button,
input[type="submit"] {
  background: linear-gradient(135deg, var(--plyhs-pink), var(--plyhs-yellow));
  box-shadow: 0 0.7rem 2rem rgba(255, 77, 166, 0.25);
  color: var(--plyhs-black) !important;
}

.plyhs-button--secondary,
.is-style-outline .wp-block-button__link {
  background: rgba(8, 6, 8, 0.35);
  border-color: var(--plyhs-teal);
  color: var(--plyhs-teal) !important;
}

.plyhs-button--secondary:hover,
.is-style-outline .wp-block-button__link:hover {
  background: var(--plyhs-teal);
  color: var(--plyhs-black) !important;
}

.plyhs-card-grid,
.plyhs-sitemap-grid,
.plyhs-logo-wall {
  display: grid;
  gap: 1rem;
}

.plyhs-card-grid--two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.plyhs-card-grid--three,
.plyhs-sitemap-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.plyhs-card,
.plyhs-logo-card,
.plyhs-legal-note {
  background: linear-gradient(180deg, rgba(255, 244, 221, 0.07), rgba(255, 244, 221, 0.03));
  border: 1px solid var(--plyhs-border);
  border-radius: var(--plyhs-radius);
  box-shadow: var(--plyhs-shadow);
  color: var(--plyhs-cream);
  padding: clamp(1.2rem, 3vw, 1.6rem);
}

.plyhs-card strong,
.plyhs-card h3 {
  display: block;
  color: var(--plyhs-cream);
  font-size: 1.25rem;
  line-height: 1.15;
  margin-bottom: 0.5rem;
}

.plyhs-card span,
.plyhs-card p,
.plyhs-logo-card p {
  color: var(--plyhs-muted);
}

.plyhs-card--link {
  min-height: 12rem;
  text-decoration: none;
}

.plyhs-card--link:hover,
.plyhs-card--link:focus-visible {
  border-color: rgba(0, 212, 198, 0.7);
  color: var(--plyhs-cream);
  transform: translateY(-3px);
}

.plyhs-logo-wall {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.plyhs-logo-card img {
  display: block;
  max-height: 80px;
  object-fit: contain;
  margin-bottom: 1rem;
  width: auto;
}

/* Current production --------------------------------------- */

.plyhs-current-production {
  display: grid;
  grid-template-columns: minmax(220px, 0.78fr) minmax(0, 1.22fr);
  gap: clamp(1.5rem, 5vw, 4rem);
  align-items: center;
  background:
    linear-gradient(135deg, rgba(255, 77, 166, 0.22), rgba(0, 212, 198, 0.11)),
    var(--plyhs-panel);
  border: 1px solid var(--plyhs-border);
  border-radius: var(--plyhs-radius-lg);
  box-shadow: var(--plyhs-shadow);
  margin-top: clamp(1rem, 4vw, 3rem);
  padding: clamp(1.5rem, 5vw, 4rem);
}

.plyhs-production-poster {
  aspect-ratio: 4 / 5;
  background:
    radial-gradient(circle at 25% 18%, var(--plyhs-yellow), transparent 22%),
    linear-gradient(145deg, var(--plyhs-pink), var(--plyhs-purple) 55%, var(--plyhs-teal));
  border: 0.25rem solid var(--plyhs-cream);
  border-radius: 1.5rem;
  box-shadow: 0.8rem 0.8rem 0 var(--plyhs-black), var(--plyhs-shadow);
  color: var(--plyhs-cream);
  display: grid;
  font-family: var(--plyhs-display);
  font-size: clamp(2.1rem, 5vw, 4.4rem);
  font-weight: 950;
  letter-spacing: 0.03em;
  line-height: 0.83;
  place-content: center;
  text-align: center;
  text-shadow: 0.08em 0.08em 0 var(--plyhs-black);
  text-transform: uppercase;
}

.plyhs-production-poster span:nth-child(2) {
  color: var(--plyhs-yellow);
}

/* CTA and legal notes -------------------------------------- */

.plyhs-cta-band {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1.2rem;
  align-items: center;
  background:
    linear-gradient(90deg, rgba(255, 31, 143, 0.28), rgba(0, 212, 198, 0.16)),
    var(--plyhs-panel-2);
  border: 1px solid var(--plyhs-border);
  border-radius: var(--plyhs-radius-lg);
  box-shadow: var(--plyhs-shadow);
  margin-top: clamp(2rem, 5vw, 5rem);
  margin-bottom: clamp(2rem, 5vw, 5rem);
  padding: clamp(1.5rem, 4vw, 2.5rem);
}

.plyhs-cta-band h2 {
  font-size: clamp(2rem, 4vw, 3.4rem);
}

.plyhs-legal-note {
  border-left: 0.45rem solid var(--plyhs-yellow);
  color: var(--plyhs-muted);
  font-size: 0.95rem;
  margin: 1.5rem 0;
}

.plyhs-legal-note strong {
  color: var(--plyhs-cream);
}

/* Header / nav / Elementor sticky -------------------------- */

.site-header,
.elementor-location-header,
.sticky-header,
.plyhs-sticky {
  background: rgba(8, 6, 8, 0.82) !important;
  backdrop-filter: blur(16px);
  border-bottom: 1px solid rgba(255, 244, 221, 0.12);
  color: var(--plyhs-cream);
  transition: background 220ms ease, padding 220ms ease, border-color 220ms ease, box-shadow 220ms ease;
  z-index: 99;
}

.elementor-sticky--effects,
.sticky-header.elementor-sticky--effects,
.sticky-header .elementor-sticky--effects {
  background: rgba(8, 6, 8, 0.95) !important;
  border-color: rgba(0, 212, 198, 0.28);
  box-shadow: 0 0.8rem 2rem rgba(0, 0, 0, 0.28);
}

.site-header a,
.elementor-location-header a,
.sticky-header a {
  color: var(--plyhs-cream);
  font-weight: 850;
  text-decoration: none;
}

.site-header a:hover,
.elementor-location-header a:hover,
.sticky-header a:hover,
.site-header .current-menu-item > a,
.elementor-location-header .current-menu-item > a {
  color: var(--plyhs-yellow);
}

/* Elementor base harmonization ----------------------------- */

.elementor-section,
.elementor-container,
.e-con,
.e-con-inner {
  --container-default-padding-top: 0;
  --container-default-padding-right: 0;
  --container-default-padding-bottom: 0;
  --container-default-padding-left: 0;
}

.elementor-widget-text-editor,
.elementor-widget-text-editor p,
.elementor-widget-theme-post-content,
.elementor-widget-theme-post-content p {
  color: var(--plyhs-muted);
}

.elementor-widget-container .plyhs-section,
.elementor-widget-container .plyhs-current-production,
.elementor-widget-container .plyhs-cta-band {
  width: 100%;
}

/* Forms: WP, Elementor, Forminator, Gravity Forms ----------- */

input[type="text"],
input[type="email"],
input[type="tel"],
input[type="url"],
input[type="number"],
input[type="password"],
input[type="search"],
select,
textarea,
.elementor-field,
.forminator-input,
.forminator-textarea,
.gform_wrapper input,
.gform_wrapper textarea,
.gform_wrapper select {
  background: rgba(255, 244, 221, 0.08) !important;
  border: 1px solid rgba(255, 244, 221, 0.28) !important;
  border-radius: var(--plyhs-radius-sm) !important;
  color: var(--plyhs-cream) !important;
  min-height: 2.8rem;
  padding: 0.85rem 1rem !important;
}

input::placeholder,
textarea::placeholder,
.elementor-field::placeholder,
.forminator-input::placeholder,
.forminator-textarea::placeholder {
  color: rgba(255, 244, 221, 0.62) !important;
}

label,
.elementor-field-label,
.forminator-label,
.gfield_label {
  color: var(--plyhs-cream) !important;
  font-weight: 850 !important;
}

select option {
  background: var(--plyhs-ink);
  color: var(--plyhs-cream);
}

/* WooCommerce readability ---------------------------------- */

.woocommerce,
.woocommerce-page,
.woocommerce-cart,
.woocommerce-checkout,
.woocommerce-account {
  color: var(--plyhs-cream);
}

.woocommerce table.shop_table,
.woocommerce-cart-form,
.woocommerce-checkout-review-order,
.woocommerce .cart_totals,
.woocommerce form.checkout,
.woocommerce .woocommerce-billing-fields,
.woocommerce .woocommerce-shipping-fields,
.woocommerce .woocommerce-additional-fields,
.woocommerce .woocommerce-order,
.woocommerce .woocommerce-customer-details,
.woocommerce .woocommerce-MyAccount-content,
.woocommerce .woocommerce-MyAccount-navigation {
  background: rgba(255, 244, 221, 0.06);
  border: 1px solid var(--plyhs-border) !important;
  border-radius: var(--plyhs-radius);
  color: var(--plyhs-cream);
  padding: 1rem;
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td,
.woocommerce table.shop_table strong,
.woocommerce table.shop_table a,
.woocommerce form .form-row label,
.woocommerce .cart_totals h2,
.woocommerce-checkout h3 {
  color: var(--plyhs-cream);
}

.woocommerce table.shop_table td.product-name a,
.woocommerce a.remove {
  color: var(--plyhs-yellow) !important;
}

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
  background: rgba(0, 212, 198, 0.11);
  border-top-color: var(--plyhs-teal);
  color: var(--plyhs-cream);
}

.woocommerce button.button,
.woocommerce a.button,
.woocommerce input.button,
.woocommerce #payment #place_order {
  background: linear-gradient(135deg, var(--plyhs-pink), var(--plyhs-yellow)) !important;
  border-radius: 999px !important;
  color: var(--plyhs-black) !important;
  font-weight: 950 !important;
  text-transform: uppercase;
}

.woocommerce #payment,
.woocommerce-checkout #payment {
  background: rgba(255, 244, 221, 0.08) !important;
  border-radius: var(--plyhs-radius) !important;
  color: var(--plyhs-cream) !important;
}

/* Page-specific tone --------------------------------------- */

.page-slug-the-great-american-trailer-park-musical,
.page-slug-contribute,
.page-slug-program-ads,
.parent-slug-support {
  background:
    radial-gradient(circle at 12% 5%, rgba(255, 77, 166, 0.26), transparent 32rem),
    radial-gradient(circle at 90% 8%, rgba(255, 209, 102, 0.2), transparent 28rem),
    linear-gradient(180deg, #090507 0%, #1b0e1e 48%, #090507 100%);
}

.page-slug-services,
.page-slug-partners,
.page-slug-press-media {
  background:
    radial-gradient(circle at 78% 10%, rgba(0, 212, 198, 0.20), transparent 33rem),
    linear-gradient(180deg, #060809 0%, #101724 48%, #060809 100%);
}

.page-slug-about,
.page-slug-get-involved,
.page-slug-volunteer,
.page-slug-board-advisory-circle {
  background:
    radial-gradient(circle at 50% 0%, rgba(123, 44, 191, 0.2), transparent 34rem),
    linear-gradient(180deg, #080608 0%, #120d1c 48%, #080608 100%);
}

/* Tables ---------------------------------------------------- */

table {
  border-collapse: collapse;
  margin: 1.5rem 0;
  width: 100%;
}

th,
td {
  border: 1px solid var(--plyhs-border);
  padding: 0.85rem;
  vertical-align: top;
}

th {
  background: rgba(255, 244, 221, 0.12);
  color: var(--plyhs-cream);
  font-weight: 900;
}

td {
  color: var(--plyhs-muted);
}

/* Accessibility and responsive ----------------------------- */

.screen-reader-text {
  clip: rect(1px, 1px, 1px, 1px);
  height: 1px;
  overflow: hidden;
  position: absolute !important;
  width: 1px;
}

:focus-visible {
  outline: 3px solid var(--plyhs-yellow);
  outline-offset: 3px;
}

@media (max-width: 900px) {
  .plyhs-card-grid--two,
  .plyhs-card-grid--three,
  .plyhs-sitemap-grid,
  .plyhs-logo-wall,
  .plyhs-current-production,
  .plyhs-cta-band {
    grid-template-columns: 1fr;
  }

  .plyhs-hero {
    min-height: auto;
  }

  .plyhs-cta-band .plyhs-button-row {
    justify-content: flex-start;
  }
}

@media (max-width: 600px) {
  body.admin-bar .plyhs-sticky,
  body.admin-bar .sticky-header {
    top: 46px;
  }

  .plyhs-page-shell {
    padding-inline: 1rem;
  }

  .plyhs-button,
  .wp-block-button__link,
  .elementor-button {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}
