/*
Theme Name: Enneafai Website
Theme URI: https://www.enneafai.com
Author: Enneafai
Author URI: https://www.enneafai.com
Description: Landing site theme for Enneafai — Enneagram-based coaching. Full-viewport hero, mobile menu, booking and contact widgets, SEO head tags and JSON-LD built in.
Version: 1.0.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: enneafai
Tags: landing-page, one-column, custom-colors, responsive
*/

*, *::before, *::after { box-sizing: border-box; }
  body { margin: 0; background: #F4F1EB; color: #2C2825; font-family: 'Inter', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; -webkit-font-smoothing: antialiased; text-wrap: pretty; }
  a { color: #5c715c; text-decoration: none; }
  a:hover { color: #45553f; }
  ::selection { background: rgba(139,158,139,0.28); }
  @keyframes riseIn { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
  @keyframes imgIn { from { opacity: 0; transform: scale(1.05); } to { opacity: 1; transform: scale(1); } }
  [data-hero-line], [data-hero-img] { will-change: opacity, transform; }
  [data-reveal] { opacity: 0; transform: translateY(20px); transition: opacity 700ms cubic-bezier(.22,.7,.2,1), transform 700ms cubic-bezier(.22,.7,.2,1); }
  [data-reveal][data-shown] { opacity: 1; transform: none; }
  [data-card] { transition: transform 400ms cubic-bezier(.22,.7,.2,1), box-shadow 400ms ease; }
  [data-card]:hover { transform: translateY(-4px); box-shadow: 0 20px 25px -5px rgba(44,40,37,0.1), 0 8px 10px -6px rgba(44,40,37,0.04); }
  [data-nav] { transition: background 300ms ease, border-color 300ms ease; }
  [data-skip]:focus { left: 0 !important; outline: 2px solid #5c715c; outline-offset: 2px; }
  [data-menu-btn] { display: none; }
  [data-menu] { position: fixed; inset: 56px 0 auto; z-index: 29; background: rgba(244,241,235,0.97); backdrop-filter: saturate(180%) blur(20px); -webkit-backdrop-filter: saturate(180%) blur(20px); border-bottom: 1px solid #E2DDD6; padding: 12px 20px 24px; display: none; flex-direction: column; }
  [data-menu][data-open] { display: flex; }
  [data-menu] a { display: flex; align-items: center; min-height: 52px; font-size: 17px; font-weight: 500; color: #2C2825; border-bottom: 1px solid #EDE9E3; }
  [data-menu] a:last-child { border-bottom: 0; }
  /* Form controls report their widest option or placeholder as their min-content width and
     refuse to shrink below it, which stops the grid track shrinking too and scrolls the whole
     page sideways on a narrow viewport. The select's longest option is the binding constraint. */
  [data-row] > * { min-width: 0; }
  [data-contact] input, [data-contact] select, [data-contact] textarea { min-width: 0; max-width: 100%; }
  [data-contact] select { text-overflow: ellipsis; }
  @media (max-width: 860px) {
    [data-nav-links] { display: none !important; }
    [data-menu-btn] { display: inline-flex !important; }
    [data-row] { grid-template-columns: minmax(0,1fr) !important; }
    /* Flipped rows put the image first in the markup so it lands left on desktop. Stacked,
       that would run image-image and text-text together across adjacent rows, so send the
       image back after the copy to keep the text-then-image rhythm. */
    [data-row-flip] > figure { order: 1; }
  }
  @media (min-width: 861px) {
    [data-menu] { display: none !important; }
  }
  @media (max-width: 560px) {
    [data-hide-sm] { display: none !important; }
    [data-stat-grid] { grid-template-columns: repeat(2, minmax(0,1fr)) !important; }
    [data-type-grid] { grid-template-columns: repeat(2, minmax(0,1fr)) !important; }
  }
  @media (prefers-reduced-motion: reduce) {
    [data-reveal] { opacity: 1 !important; transform: none !important; transition: none !important; }
    [data-hero-line], [data-hero-img] { animation: none !important; opacity: 1 !important; transform: none !important; }
  }
