/*
Theme Name: ParkWest Custom Theme
Theme URI: https://example.com/parkwest-custom-theme
Author: ParkWest Development Team
Author URI: https://example.com
Description: A bespoke, ultra-clean, high-performance WordPress theme designed specifically for ParkWest luxury property showcase with seamless Elementor integration.
Version: 1.3.3
Requires at least: 5.9
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: parkwest-custom-theme
Tags: full-width-template, custom-background, custom-colors, custom-menu, block-styles, responsive-layout
*/

/* ==========================================================================
   Base Theme Resets (Zero Margin, Zero Padding, Full Width)
   ========================================================================== */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0 !important;
  padding: 0 !important;
  width: 100%;
  max-width: 100%;
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  scroll-behavior: smooth;
  overflow-x: hidden;
}

body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  color: #333333;
  background-color: #07234e;
  background: linear-gradient(180deg, #0a2d5e 0%, #07234e 50%, #051937 100%);
  background-repeat: no-repeat;
  background-attachment: fixed;
  line-height: 1.6;
}

/* Ensure WordPress page wrappers & canvas have zero margin/padding gaps */
.parkwest-fullwidth-body,
.parkwest-fullwidth-template,
.parkwest-fullwidth-template #page,
.parkwest-fullwidth-template .site,
.parkwest-fullwidth-template .site-main,
.parkwest-fullwidth-template .entry-content,
.parkwest-fullwidth-template .parkwest-content-area {
  margin: 0 !important;
  padding: 0 !important;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

.parkwest-fullwidth-template {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

.parkwest-fullwidth-template .site-main {
  flex: 1 0 auto;
}

/* Completely hide any theme footer markup on full-width Elementor landing pages */
.parkwest-fullwidth-body .site-footer,
.parkwest-fullwidth-template .site-footer,
.parkwest-fullwidth-body #colophon,
.parkwest-fullwidth-template #colophon {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
}

/* ==========================================================================
   Clean Initial Page Load State (Prevents sudden logo flash / jumping)
   ========================================================================== */

/* Keep the emblem sized to its natural initial container size at page load */
.pw-hero-globe-stage {
  width: var(--pw-hero-logo-size, 70px);
  height: var(--pw-hero-logo-size, 70px);
}

.pw-hero-globe-wrap {
  transform: translate3d(0, 0, 0) scale(0.0875);
}

@media screen and (max-width: 1024px) and (min-width: 768px) {
  .pw-hero-globe-stage {
    width: var(--pw-hero-logo-size, 54px);
    height: var(--pw-hero-logo-size, 54px);
  }

  .pw-hero-globe-wrap {
    transform: translate3d(0, 0, 0) scale(0.0675);
  }
}

@media screen and (max-width: 767px) {
  .pw-hero-globe-stage {
    width: var(--pw-hero-logo-size, 46px);
    height: var(--pw-hero-logo-size, 46px);
  }

  .pw-hero-globe-wrap {
    transform: translate3d(0, 0, 0) scale(0.0575);
  }
}

/* Halo stays hidden until user initiates scroll */
.pw-globe-halo {
  opacity: 0;
}

/* ==========================================================================
   Hero Desktop Animation & Edge-to-Edge Container Overrides
   ========================================================================== */

/* Eliminate extra container gaps under Header & Hero */
.elementor-element.elementor-widget-parkwest_header,
.elementor-element.elementor-widget-parkwest_hero,
.elementor-widget-parkwest_header,
.elementor-widget-parkwest_hero {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* Ensure Desktop Hero Track & Animation layers fit 100vh seamlessly without extra scroll space */
@media screen and (min-width: 1025px) {

  .pw-hero-track,
  .pw-hero-track.pw-has-scroll-anim {
    width: 100% !important;
    max-width: 100% !important;
    height: 100vh !important;
    min-height: 100vh !important;
    max-height: 100vh !important;
    position: relative !important;
    overflow: hidden !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  .pw-hero,
  .pw-hero-track.pw-has-scroll-anim .pw-hero {
    position: relative !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100vh !important;
    min-height: 100vh !important;
    max-height: 100vh !important;
    overflow: hidden !important;
    z-index: 10 !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    align-items: center !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  .pw-hero-globe-wrap {
    transform-origin: center center !important;
    will-change: transform, opacity !important;
  }

}

/* ==========================================================================
   Global Section Scroll Animation Keyframes & Transitions
   ========================================================================== */

/* Upward fade-in for section headers, text & cards */
.pw-scroll-animate {
  opacity: 0;
  transform: translate3d(0, 42px, 0);
  will-change: opacity, transform;
  transition: opacity 0.85s cubic-bezier(0.16, 1, 0.3, 1), transform 0.85s cubic-bezier(0.16, 1, 0.3, 1);
}

.pw-scroll-animate.is-in-view {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) !important;
}

/* Scale & fade-in for USP cards and feature boxes */
.pw-scroll-scale {
  opacity: 0;
  transform: scale(0.92) translate3d(0, 30px, 0);
  will-change: opacity, transform;
  transition: opacity 0.75s cubic-bezier(0.16, 1, 0.3, 1), transform 0.75s cubic-bezier(0.16, 1, 0.3, 1);
}

.pw-scroll-scale.is-in-view {
  opacity: 1 !important;
  transform: scale(1) translate3d(0, 0, 0) !important;
}

/* Slide in from left */
.pw-scroll-left {
  opacity: 0;
  transform: translate3d(-50px, 0, 0);
  will-change: opacity, transform;
  transition: opacity 0.85s cubic-bezier(0.16, 1, 0.3, 1), transform 0.85s cubic-bezier(0.16, 1, 0.3, 1);
}

.pw-scroll-left.is-in-view {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) !important;
}

/* Slide in from right */
.pw-scroll-right {
  opacity: 0;
  transform: translate3d(50px, 0, 0);
  will-change: opacity, transform;
  transition: opacity 0.85s cubic-bezier(0.16, 1, 0.3, 1), transform 0.85s cubic-bezier(0.16, 1, 0.3, 1);
}

.pw-scroll-right.is-in-view {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) !important;
}

/* Staggered Delay Classes */
.pw-delay-1 {
  transition-delay: 0.08s;
}

.pw-delay-2 {
  transition-delay: 0.16s;
}

.pw-delay-3 {
  transition-delay: 0.24s;
}

.pw-delay-4 {
  transition-delay: 0.32s;
}

.pw-delay-5 {
  transition-delay: 0.40s;
}

.pw-delay-6 {
  transition-delay: 0.48s;
}

.pw-delay-7 {
  transition-delay: 0.56s;
}

.pw-delay-8 {
  transition-delay: 0.64s;
}

.elementor-editor-active .pw-scroll-animate,
.elementor-editor-preview .pw-scroll-animate,
.elementor-editor-active .pw-scroll-scale,
.elementor-editor-preview .pw-scroll-scale,
.elementor-editor-active .pw-scroll-left,
.elementor-editor-preview .pw-scroll-left,
.elementor-editor-active .pw-scroll-right,
.elementor-editor-preview .pw-scroll-right {
  opacity: 1 !important;
  transform: none !important;
}

/* ==========================================================================
   ParkWest Connectivity: Dynamic Vertical & Horizontal Track Centering
   Ensures the route line passes through the exact center of the circle on all devices
   ========================================================================== */

/* Standardize station header height and margins across all viewport sizes */
.pw-mrt-station-header {
  height: 48px !important;
  min-height: 48px !important;
  max-height: 48px !important;
  display: flex !important;
  align-items: flex-end !important;
  justify-content: center !important;
  margin-top: 0 !important;
  margin-bottom: 8px !important;
  padding: 0 !important;
}

/* Ensure the dot container has a consistent baseline */
.pw-mrt-dot-wrap {
  margin: 0 auto !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

/* 
 * Calculate line top dynamically:
 * Header height (48px) + header margin-bottom (8px) + half of dot size (var(--pw-dot-size, 12px) / 2)
 * Minus half the line thickness (var(--pw-line-thickness, 2px) / 2)
 */
.pw-mrt-track {
  top: calc(48px + 8px + (var(--pw-dot-size, 12px) / 2) - (var(--pw-line-thickness, 2px) / 2)) !important;
  margin-top: 0 !important;
}

/* Desktop & Tablet Unified 9-Station View: Center from 1st circle to last circle */
.pw-mrt-track-desktop {
  left: calc(100% / 18) !important;
  right: calc(100% / 18) !important;
}

/* Mobile 2-Tier Stacked Views: Group 1 (5 stations) & Group 2 (4 stations) */
@media screen and (max-width: 767px) {
  .pw-mrt-station-header {
    height: 38px !important;
    min-height: 38px !important;
    max-height: 38px !important;
    margin-bottom: 6px !important;
  }

  .pw-mrt-track {
    top: calc(38px + 6px + (var(--pw-dot-size, 10px) / 2) - (var(--pw-line-thickness, 2px) / 2)) !important;
  }

  .pw-mrt-track-1 {
    left: calc(100% / 10) !important;
    right: calc(100% / 10) !important;
  }

  .pw-mrt-track-2 {
    left: calc(100% / 8) !important;
    right: calc(100% / 8) !important;
  }
}

/* Snappy Station Name & Dot Glow Transitions (No lag or delay when line touches the circle) */
.pw-mrt-station-name {
  transition: color 0.12s ease-out, transform 0.12s ease-out !important;
}

.pw-mrt-dot {
  transition: background-color 0.12s ease-out, box-shadow 0.12s ease-out, transform 0.12s ease-out !important;
}

.pw-mrt-dot-inner {
  transition: background-color 0.12s ease-out !important;
}

.pw-mrt-dot-pulse {
  transition: opacity 0.15s ease-out, transform 0.15s ease-out !important;
}