/*
Theme Name: Triple Effort
Theme URI: https://www.tripleefforttraining.com
Author: Medina Innovations LLC
Author URI: https://medinainnovations.com
Description: Custom block theme for Triple Effort Training — private and small-group soccer training on Maui. Forms, booking and CRM run in GoHighLevel and are embedded.
Version: 0.12.2
Requires at least: 6.6
Tested up to: 6.8
Requires PHP: 8.0
License: Proprietary
License URI: https://medinainnovations.com
Text Domain: triple-effort
Tags: full-site-editing, block-patterns, one-column

Private client work — Triple Effort LLC service agreement §8 / SOW §9: no
public, portfolio or case-study use without a separate written agreement.

Most styling lives in theme.json (tokens, type scale, spacing, the primary
button). This file holds only what theme.json cannot express. Section and
card styling is in assets/css/te-components.css; GHL embed wrappers are in
assets/css/te-embeds.css.
*/

/* --- Global ---------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { background: var(--wp--preset--color--ink); scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; overflow-x: hidden; }
::selection { background: var(--wp--preset--color--pink); color: var(--wp--preset--color--ink); }
img { display: block; max-width: 100%; height: auto; }
:root { --te-header-height: 80px; }
@media (max-width: 1199px) { :root { --te-header-height: 72px; } }
@media (max-width: 767px)  { :root { --te-header-height: 64px; } }

/* Keyboard focus — the one rule the button standard says is not optional. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
.wp-element-button:focus-visible {
  outline: 2px solid var(--wp--preset--color--pink);
  outline-offset: 2px;
}

/* Links on dark sections are pink; on paper they stay ink + underline
   (pink on paper measures 1.26:1 — never). */
.te-on-dark a:not(.wp-element-button) { color: var(--wp--preset--color--pink); }
.te-on-light a:not(.wp-element-button) { color: var(--wp--preset--color--ink); text-decoration-color: rgba(11,11,15,.45); }
.te-on-light a:not(.wp-element-button):hover { text-decoration-color: var(--wp--preset--color--ink); }

/* --- Type helpers (class vocabulary shared with the build map) -------- */
.te-anton { font-family: var(--wp--preset--font-family--anton); font-weight: 400; letter-spacing: .01em; text-transform: uppercase; }
.te-mono  { font-family: var(--wp--preset--font-family--ibm-plex-mono); }
.te-eyebrow {
  font-family: var(--wp--preset--font-family--ibm-plex-mono);
  font-size: var(--wp--preset--font-size--label);
  font-weight: 500; letter-spacing: 3px; line-height: 1.3; text-transform: uppercase;
}
.te-nowrap { white-space: nowrap; }

/* Outline text — no builder equivalent, the reason this file exists. */
.te-outline,
.te-outline-pink { color: transparent !important; paint-order: stroke fill; }
.te-outline      { -webkit-text-stroke: 2px var(--wp--preset--color--paper); }
.te-outline-pink { -webkit-text-stroke: 1.6px var(--wp--preset--color--pink); }
@media (max-width: 767px) { .te-outline, .te-outline-pink { -webkit-text-stroke-width: 1px; } }
@supports not (-webkit-text-stroke: 1px #000) {
  .te-outline      { color: rgba(244,242,238,.35) !important; }
  .te-outline-pink { color: rgba(255,204,224,.22) !important; }
}

/* Pink as a SURFACE on light sections (ink text on a pink block). */
.te-highlight {
  background: var(--wp--preset--color--pink); color: var(--wp--preset--color--ink);
  padding: 0 .14em .04em; -webkit-box-decoration-break: clone; box-decoration-break: clone;
}

/* --- Buttons — the 2026-09-14 standard ------------------------------- */
/* theme.json's elements.button IS "primary lg". These classes add the md/sm
   sizes and the two outline variants. Hand-written CTAs carry
   class="wp-element-button te-btn te-btn--md" so they inherit theme.json. */
.te-btn { display: inline-block; width: auto; white-space: nowrap; transition: background-color .25s, color .25s, border-color .25s, transform .25s; }
.te-btn:hover { transform: translateY(-2px); }
.te-btn--lg { padding: 16px 30px 16px 32px; }
.te-btn--md { padding: 12px 22px 12px 24px; }
.te-btn--sm { padding: 8px 14px 8px 16px; }
.te-btn--secondary { background: transparent !important; color: var(--wp--preset--color--pink) !important; border-color: var(--wp--preset--color--pink) !important; }
.te-btn--secondary:hover { background: var(--wp--preset--color--pink) !important; color: var(--wp--preset--color--ink) !important; }
.te-btn--onlight { background: transparent !important; color: var(--wp--preset--color--ink) !important; border-color: var(--wp--preset--color--ink) !important; }
.te-btn--onlight:hover { background: var(--wp--preset--color--ink) !important; color: var(--wp--preset--color--paper) !important; }
.te-btn[aria-disabled="true"], .te-btn:disabled { opacity: .38; pointer-events: none; }
.wp-block-button .wp-block-button__link { width: auto; }
.wp-block-button.is-style-te-secondary .wp-block-button__link { background: transparent; color: var(--wp--preset--color--pink); border-color: var(--wp--preset--color--pink); }
.wp-block-button.is-style-te-secondary .wp-block-button__link:hover { background: var(--wp--preset--color--pink); color: var(--wp--preset--color--ink); }
.wp-block-button.is-style-te-onlight .wp-block-button__link { background: transparent; color: var(--wp--preset--color--ink); border-color: var(--wp--preset--color--ink); }
.wp-block-button.is-style-te-onlight .wp-block-button__link:hover { background: var(--wp--preset--color--ink); color: var(--wp--preset--color--paper); }
.wp-block-button.is-style-te-md .wp-block-button__link { padding: 12px 22px 12px 24px; }
.wp-block-button.is-style-te-sm .wp-block-button__link { padding: 8px 14px 8px 16px; }

/* --- Marquee crawl — no builder equivalent --------------------------- */
.te-marquee-track { display: inline-block; white-space: nowrap; will-change: transform; animation: te-crawl 26s linear infinite; }
@keyframes te-crawl { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* --- Whole-card link ------------------------------------------------- */
.te-stretched-link::after { content: ""; position: absolute; inset: 0; z-index: 1; }

/* --- Card lift ------------------------------------------------------- */
.te-lift { transition: transform .3s ease, box-shadow .3s ease; }
.te-lift:hover { transform: translateY(-8px); box-shadow: var(--wp--preset--shadow--lift); }

/* --- Reduced motion -------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .te-marquee-track { animation: none; }
  .te-lift, .te-btn { transition: none; }
  .te-lift:hover, .te-btn:hover { transform: none; }
}
