/* ============================================================================
   NOOKRA OVERRIDES - CONSOLIDATED & CLEAN v2025

   CONSOLIDATION GOALS:
   - Reduce !important declarations from 541 to <200
   - Maintain ALL existing functionality
   - Preserve IX2 animations
   - Keep ultra-wide desktop support
   - Maintain mobile/tablet layouts
   ============================================================================ */

/* ============================================================================
   PAGE ENTRY ANIMATIONS — Pure CSS, no JavaScript dependency.
   Astro delivers full HTML with render-blocking CSS, so animations start
   from the first paint with elements hidden, then reveal with stagger.
   ============================================================================ */
@keyframes fadeSlideUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* --- Non-homepage headings: subtle fade-in --- */
.section-pricing-header .heading-style-h1,
.section-projects-header .heading-style-h1,
.section-service-header .heading-style-h2,
.section-blog-header .heading-style-h2,
.section-contact-header .heading-style-h2,
.section-about-header .about-heading {
  opacity: 0;
  animation: fadeSlideUp 0.6s cubic-bezier(0.22, 1, 0.36, 1) 0.1s forwards;
}

/* --- Legal pages: initial hidden state (JS handles reveal in src/scripts/legal-animations.ts) --- */
.section-legal .max-width-large > *:not(.spacer-small):not(.spacer-medium):not(.spacer-large):not(.spacer-xlarge) {
  opacity: 0;
  transform: translateY(20px);
}

/* ============================================================================
   CSS CUSTOM PROPERTIES - Reduce repetition
   ============================================================================ */
:root {
  --hero-min-height-mobile: 100svh;
  --hero-min-height-desktop: 100vh;
  --hero-padding-mobile: 4rem;
  --hero-z-index-content: 1;
  --hero-z-index-bg: -1;
  --spline-z-index: 1;
  --mobile-gap: clamp(1rem, 2vh, 2rem);
  --tablet-gap: clamp(1.5rem, 3vh, 2.5rem);
  --desktop-gap: 2rem;
}

/* ============================================================================
   FAQ SECTION - RESPONSIVE SPACING
   ============================================================================ */
.faq-section {
  margin-top: 6rem;
}

@media (min-width: 992px) {
  .faq-section {
    margin-top: 10rem;
  }
}

/* ============================================================================
   HERO SECTION - CORE LAYOUT (All Devices)
   ============================================================================ */
.section-home-header {
  position: relative;
  backface-visibility: hidden;
  perspective: 1000px;
  contain: layout style;
  overflow: hidden;
  /* Proper section containment - prevents content bleeding */
}

/* Desktop Hero */
.section-home-header {
  min-height: var(--hero-min-height-desktop);
}

/* Mobile/Tablet Hero */
@media (max-width: 991px) {
  .section-home-header {
    min-height: var(--hero-min-height-mobile);
  }
}

/* ============================================================================
   REMOVED OLD DUAL 3D SYSTEM - NOW USING SINGLE RESPONSIVE ELEMENT
   ============================================================================ */

/* ============================================================================
   RESPONSIVE LAYOUT - MOBILE FIRST APPROACH
   ============================================================================ */

/* ============================================================================
   REMOVED OLD DUPLICATE CSS SYSTEM - Now using only new architecture below
   ============================================================================ */

/* ============================================================================
   RESPONSIVE HERO ARCHITECTURE - CLEAN & LOGICAL
   ============================================================================ */

/* Base Hero Layout - Mobile First */
.hero-layout {
  display: flex;
  flex-direction: column;
  min-height: auto;
}

.hero-content {
  display: flex;
  flex-direction: column;
  flex: 1;
}

.hero-text {
  width: 100%;
}

.hero-visual {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.hero-cta {
  width: 100%;
  display: flex;
  justify-content: center;
}

.hero-footer {
  width: 100%;
}

.spline-hero-responsive {
  width: 100%;
  height: 100%;
  display: block;
  pointer-events: none;
  /* Minimal interference - let Spline render at native quality */
  backface-visibility: hidden;
}

/* MOBILE (≤767px) - PIXEL PERFECT FROM BACKUP */
@media (max-width: 767px) {
  /* HERO SECTION - Account for absolute positioned navbar */
  .section-home-header {
    padding-top: 6.2rem; /* Nav height (~3.5rem) + original spacing (2rem) */
    min-height: 100svh;
  }
  
  /* HERO LAYOUT - This is the actual content container */
  .section-home-header .hero-layout {
    height: auto;
    min-height: auto;
    padding: 0 0 4vh 0; /* Remove duplicate top padding */
    gap: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    box-sizing: border-box;
  }
  
  /* GLOBAL PADDING */
  .padding-global {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  
  /* HERO CONTENT WRAPPER */
  .hero-content {
    display: flex;
    flex-direction: column;
    gap: 0;
    align-items: center;
    justify-content: flex-start;
    width: 100%;
  }
  
  /* TEXT BLOCK - Order 1 */
  .hero-text {
    order: 1;
    text-align: center;
    width: 100%;
  }
  
  /* MOBILE H1 - EXACT from backup */
  .section-home-header .heading-style-h1.combo-tagline {
    font-size: clamp(3rem, 8vw, 4rem);
    line-height: clamp(1.1, 1.15, 1.2);
    text-align: center;
    margin: 0;
    max-width: 100%;
    word-wrap: break-word;
  }
  
  /* SUBTITLE ELEMENTS - Force visibility over Webflow defaults */
  .section-home-header .subtitle-content-wrapper {
    display: flex;
    align-items: flex-start; /* Match Webflow alignment */
    justify-content: center;
    gap: 0.5rem;
    margin-bottom: 10px; /* Match Webflow */
    opacity: 1;
    visibility: visible;
  }
  
  /* ASTERISK - Match original with 16px margin */
  .section-home-header .subtitle-content-wrapper .asterisk {
    display: inline-block;
    font-size: 2rem;
    font-weight: 300;
    color: #fff;
    opacity: 1;
    visibility: visible;
    margin-top: 0rem; /* 16px from original */
    padding: 0;
    line-height: 1;
    transform: none;
    align-self: flex-start; /* Align to top with margin */
  }
  
  .section-home-header .subtitle-wrap {
    display: flex;
    align-items: center;
    opacity: 1;
    visibility: visible;
  }
  
  /* Subtitle text - "Digital Presence" */
  .section-home-header .text-size-regular.h3-landing-size {
    font-size: clamp(1rem, 3vw, 1.25rem);
    text-align: center;
    margin: 0;
    opacity: 1;
    visibility: visible;
  }
  
  /* 3D VISUAL - Full viewport width and properly centered */
  .section-home-header .hero-visual {
    order: 2;
    position: relative;
    /* Break out of container padding to be full width */
    margin-left: -1rem;
    margin-right: -1rem;
    width: calc(100% + 2rem); /* Account for the negative margins */
    height: clamp(320px, 40vh, 400px);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    transform: none; /* Critical: no transforms on container */
    backface-visibility: hidden;
    z-index: 1;
    /* Contain absolute positioned 3D element */
    position: relative;
  }
  
  /* 3D SPLINE - Absolute positioning trick for native quality */
  .hero-visual .spline-hero-responsive {
    /* Absolute positioning to break out of container constraints */
    position: absolute;
    top: 35%;
    left: 50%;
    transform: translate(-50%, -50%);
    /* Native quality sizing */
    width: 140%;
    height: 140%;
    display: block;
    pointer-events: none;
    /* Perfect centering without layout disruption */
    z-index: 1;
    /* Prevent overflow/black lines */
    overflow: hidden;
  }
  
  /* CTA BUTTON - Order 3 */
  .hero-cta {
    order: 3;
    margin: clamp(2.3rem, 4vh, 3rem) 0;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  
  /* FOOTER TEXT - Order 4 & 5 */
  .hero-footer {
    order: 4;
    width: 100%;
  }
  
  .hero-footer .copyright-text {
    text-align: left;
    margin: 1rem 0 0 1rem;
    font-size: 0.8rem;
    width: 100%;
  }
  
  .hero-footer .tagline-text {
    text-align: left;
    margin: 0.5rem 0 0 1rem;
    font-size: 0.8rem;
    width: 100%;
  }
}

/* TABLET (768px - 991px) - EXACT spacing from backup */
@media (min-width: 768px) and (max-width: 991px) {
  /* HERO SECTION TOP SPACING */
  .section-home-header {
    padding-top: var(--hero-padding-mobile); /* 4rem from top */
    min-height: auto; /* Override any base min-height */
  }
  
  /* OVERRIDE BASE - Critical for tablet */
  .hero-layout {
    min-height: auto; /* Override base 100vh */
    height: auto;
    padding: 2vh 0 4vh 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
  }
  
  .hero-content {
    flex: none; /* Override base flex: 1 */
    display: flex;
    flex-direction: column;
    gap: 0;
    align-items: center;
    justify-content: flex-start;
    width: 100%;
  }
  
  .padding-global {
    padding-left: clamp(1.5rem, 4vw, 2.5rem);
    padding-right: clamp(1.5rem, 4vw, 2.5rem);
  }
  
  .hero-text {
    order: 1;
    text-align: center;
  }
  
  /* Tablet 3D element - no viewport breakout */
  .hero-visual {
    order: 2;
    margin: 0;
    height: clamp(320px, 35vh, 480px);
    width: 100%;
    max-width: 100%;
    position: relative;
    left: 0;
    transform: none;
    overflow: hidden;
    backface-visibility: hidden;
    z-index: var(--spline-z-index);
    /* Contain absolute positioned 3D element */
    position: relative;
  }
  
  /* Tablet 3D - Absolute positioning for native quality */
  .spline-hero-responsive {
    position: absolute;
    top: 35%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 140%;
    height: 140%;
    z-index: 1;
    overflow: hidden;
  }
  
  /* Tablet CTA - EXACT from backup with proper spacing */
  .hero-cta {
    order: 3;
    margin: clamp(1.5rem, 3vh, 2.5rem) 0 3.5rem 0; /* Bigger bottom margin */
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  
  /* Tablet H1 - BIGGER */
  .heading-style-h1.combo-tagline {
    font-size: clamp(4.5rem, 11vw, 7rem);
    line-height: clamp(1.0, 1.05, 1.1);
    text-align: center;
    margin: 0;
    max-width: 100%;
    word-wrap: break-word;
  }
  
  /* Subtitle centered */
  .text-size-regular.h3-landing-size {
    text-align: center;
  }
  
  /* Tablet COPYRIGHT - Use desktop size, fix order */
  .hero-footer {
    order: 4;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-top: auto;
  }
  
  /* TAGLINE FIRST - "A serious brand deserves..." */
  .hero-footer .tagline-text {
    order: 1;
    text-align: center;
    font-size: 1.32rem; /* Desktop size */
    line-height: 1.3;
    margin: 0;
    width: 100%;
  }
  
  /* COPYRIGHT SECOND - "© Web development agency" */
  .hero-footer .copyright-text {
    order: 2;
    text-align: center;
    font-size: 1.32rem; /* Desktop size */
    line-height: 1.3;
    margin: 1rem 0 0 0; /* Space between lines */
    width: 100%;
  }
}

/* Mobile copyright text - from backup */
@media (max-width: 767px) {
  .copyright-text {
    order: 4;
    text-align: left;
    margin: 1rem 0 0 1rem;
    font-size: 0.8rem;
  }
  
  .tagline-text {
    order: 5;
    text-align: left;
    margin: 0.5rem 0 0 1rem;
    font-size: 0.8rem;
  }
}

/* Removed duplicate - now inside main tablet media query above */

/* DESKTOP (≥992px) - Clean simple layout */
@media (min-width: 992px) {
  .hero-layout {
    padding: clamp(2rem, 4vh, 3.5rem) 0 2rem 0;
    min-height: 100vh;
  }
  
  .hero-content {
    padding: 0;
    flex-direction: row;
    align-items: center;
    gap: 4rem;
    height: 100%;
  }
  
  .hero-text {
    flex: 1;
    text-align: left;
    order: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
  
  .hero-visual {
    flex: 1;
    height: clamp(500px, 70vh, 800px);
    width: auto;
    left: auto;
    right: auto;
    order: 2;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  
  .spline-hero-responsive {
    transform: none;
    width: 100%;
    height: 100%;
    transform-origin: center center;
  }
  
  .hero-cta {
    display: none; /* Desktop uses navbar CTA */
  }
  
  .hero-footer {
    margin-top: auto;
  }
  
  .copyright-text,
  .tagline-text {
    text-align: left;
    margin: 0.5rem 0;
    font-size: 1rem;
  }
  
  /* Desktop tagline with "since 2024" right-aligned */
  .tagline-text {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  
  .since-year {
    font-size: 1rem;
    font-family: inherit; /* Match parent font */
    font-weight: inherit; /* Match parent weight */
    line-height: inherit; /* Match parent line-height */
  }
  
  /* Fix Webflow's justify-content: space-between */
  .heading-wrap {
    justify-content: flex-start;
    margin: 0;
    padding: 0;
    width: 100%;
    box-sizing: border-box;
  }
  
  /* Desktop H1 */
  .heading-style-h1.combo-tagline {
    font-size: clamp(3rem, 8vw, 8rem);
    line-height: 0.9;
    text-align: left;
    margin: 2rem 0 0 0;
  }
}

/* Hide "since 2024" on mobile/tablet - OUTSIDE desktop media query */
@media (max-width: 991px) {
  .desktop-only {
    display: none !important;
  }
  
  .tagline-text {
    display: block !important; /* Reset flex on smaller screens */
  }
}

/* ============================================================================
   ULTRA-WIDE RESPONSIVE 3D POSITIONING - CLEAN & SCALABLE
   ============================================================================ */

/* Progressive desktop enhancements - container sizing approach */
@media (min-width: 1200px) {
  .hero-visual {
    height: clamp(600px, 75vh, 900px);
  }
  
  .spline-hero-responsive {
    transform: none;
  }
}

@media (min-width: 1440px) {
  .container-large {
    max-width: 100rem;
  }
  
  .hero-visual {
    height: clamp(650px, 80vh, 950px);
  }
  
  .spline-hero-responsive {
    transform: none;
  }
}

@media (min-width: 1920px) {
  .hero-visual {
    height: clamp(700px, 85vh, 1000px);
  }
  
  .spline-hero-responsive {
    transform: none;
  }
}

/* Standard Desktop Adjustment */
@media (min-width: 992px) and (max-width: 2559px) {
  .hero-visual {
    transform: translateY(-5%);
  }
}

@media (min-width: 2560px) {
  .hero-visual {
    height: clamp(750px, 90vh, 1100px);
  }
  
  .spline-hero-responsive {
    transform: translateY(-5%);
  }
}

/* ============================================================================
   RESPONSIVE HEIGHT ADJUSTMENTS - SIMPLE & CLEAN
   ============================================================================ */

/* Removed - was breaking hero appearance */

/* ============================================================================
   SECTION HEADING FIX - HOMEPAGE SECTIONS (Featured Projects & Start Today CTA)
   ============================================================================ */
/* Homepage sections need proper sizing across all breakpoints */
.section-home-projects .heading-style-h1,
.call-to-action .heading-style-h1 {
  /* Ensure visibility */
  display: block;
  opacity: 1;
  visibility: visible;
  /* Base typography that won't break */
  color: #fff;
  text-transform: uppercase;
  font-family: Beba Neue, sans-serif;
  font-weight: 400;
  line-height: 0.9;
  text-align: center;
}

/* Desktop - BIGGER like original template */
@media (min-width: 992px) {
  .section-home-projects .heading-style-h1,
  .call-to-action .heading-style-h1,
  .section-pricing-header .heading-style-h1,
  .section-projects-header .heading-style-h1 {
    font-size: clamp(6rem, 12vw, 12rem); /* Much bigger for desktop */
    letter-spacing: -5px;
    text-align: center;
  }
}

/* Tablet */
@media (min-width: 768px) and (max-width: 991px) {
  .section-home-projects .heading-style-h1,
  .call-to-action .heading-style-h1,
  .section-pricing-header .heading-style-h1,
  .section-projects-header .heading-style-h1 {
    font-size: clamp(4rem, 10vw, 6rem);
    letter-spacing: -3px;
    text-align: center;
  }

  /* Add proper spacing between copyright lines on tablet */
  #w-node-_931a8721-e5d7-e191-1716-d3392515b2f6-30aec75a {
    margin-bottom: 0.75rem;
  }

  /* Tablet - minimal interference */
  .spline-hero-responsive {
    backface-visibility: hidden;
  }
}

/* Mobile - Match About Us page sizing (viewport-based) */
@media (max-width: 767px) {
  /* All page headings using h1 class */
  .section-home-projects .heading-style-h1,
  .call-to-action .heading-style-h1,
  .section-pricing-header .heading-style-h1,
  .section-projects-header .heading-style-h1 {
    font-size: 20vw !important;
    letter-spacing: -2px !important;
    text-align: center;
    line-height: 0.9;
  }

  /* All page headings using h2 class */
  .section-service-header .heading-style-h2,
  .section-blog-header .heading-style-h2,
  .section-contact-header .heading-style-h2 {
    font-size: 20vw !important;
    letter-spacing: -2px !important;
    text-align: center;
    line-height: 0.9;
  }
}

/* ============================================================================
   PAGE HEADER TITLES - SERVICES/BLOG/CONTACT PAGES (Desktop only)
   ============================================================================ */
/*
   These pages use .heading-style-h2 (not h1) for their header titles.
   Make them match pricing page size on desktop.
*/
@media (min-width: 992px) {
  .section-service-header .heading-style-h2,
  .section-blog-header .heading-style-h2,
  .section-contact-header .heading-style-h2 {
    font-size: clamp(7rem, 12vw, 12rem) !important;
    letter-spacing: -5px !important;
    text-transform: uppercase;
    line-height: 0.9;
  }
}

/* ============================================================================
   LEGAL PAGES HEADING FIXES (Terms, Privacy, Cookie Policy)
   ============================================================================ */
/*
   Fix collapsed/tiny headings on legal pages by providing proper responsive sizing.
   Mobile: Large viewport-based sizing (20vw)
   Desktop: Professional readable sizing with proper hierarchy
*/

/* Mobile and Tablet Responsive Layout (≤991px) */
@media (max-width: 991px) {
  /* Top padding to clear fixed navbar (mobile) */
  .section-legal {
    padding-top: 6rem;
  }

  /* Main page title (h1) - Large, centered, single line */
  .section-legal .heading-style-h1 {
    font-size: clamp(3.5rem, 12vw, 7rem) !important;
    letter-spacing: -2px !important;
    text-transform: uppercase;
    text-align: center;
    line-height: 0.9;
    white-space: nowrap;
  }

  /* "Last updated" text - centered */
  .section-legal .text-size-small.text-color-secondary {
    text-align: center;
  }

  /* Section titles (h3) - Left aligned, slightly bigger */
  .section-legal .heading-style-h3 {
    font-size: clamp(2.5rem, 7vw, 4.5rem) !important;
    letter-spacing: -1px !important;
    text-transform: uppercase;
    text-align: left;
    line-height: 1.1;
  }

  /* Subsection titles (h5) - Left aligned, slightly bigger */
  .section-legal .heading-style-h5 {
    font-size: 1.75rem !important;
    line-height: 1.2;
    text-align: left;
  }

  /* Section content - justified text */
  .section-legal .text-size-regular {
    text-align: justify;
  }

  /* Lists stay left-aligned */
  .section-legal .list-legal {
    text-align: left;
  }
}

/* Tablet - Centered Layout (768px - 991px) */
@media (min-width: 768px) and (max-width: 991px) {
  .section-legal {
    padding-top: 7rem;
  }

  /* Center the content container */
  .section-legal .container-large {
    display: flex;
    justify-content: center;
    align-items: center;
  }

  .section-legal .max-width-large {
    margin: 0 auto;
  }

  /* Main page title (h1) - Single line, centered, bigger */
  .section-legal .heading-style-h1 {
    font-size: clamp(4.5rem, 10vw, 7rem) !important;
    letter-spacing: -3px !important;
    text-transform: uppercase;
    line-height: 0.9;
    text-align: center;
    white-space: nowrap;
  }

  /* "Last updated" text - centered */
  .section-legal .text-size-small.text-color-secondary {
    text-align: center;
  }

  /* Section content - justified text */
  .section-legal .text-size-regular {
    text-align: justify;
  }

  /* Lists stay left-aligned */
  .section-legal .list-legal {
    text-align: left;
  }

  /* Section titles (h3) - Left aligned, bigger */
  .section-legal .heading-style-h3 {
    font-size: clamp(3rem, 6vw, 5rem) !important;
    letter-spacing: -2px !important;
    text-transform: uppercase;
    line-height: 1.1;
    text-align: left;
  }

  /* Subsection titles (h5) - Left aligned, bigger */
  .section-legal .heading-style-h5 {
    font-size: 2rem !important;
    line-height: 1.2;
    text-align: left;
  }
}

/* Desktop - Centered Layout (≥992px) */
@media (min-width: 992px) {
  .section-legal {
    padding-top: 8rem;
  }

  /* Center the content container */
  .section-legal .container-large {
    display: flex;
    justify-content: center;
    align-items: center;
  }

  .section-legal .max-width-large {
    margin: 0 auto;
  }

  /* Main page title (h1) - Single line, centered */
  .section-legal .heading-style-h1 {
    font-size: clamp(4rem, 8vw, 8rem) !important;
    letter-spacing: -3px !important;
    text-transform: uppercase;
    line-height: 0.9;
    text-align: center;
    white-space: nowrap;
  }

  /* "Last updated" text - centered */
  .section-legal .text-size-small.text-color-secondary {
    text-align: center;
  }

  /* Section content - justified text */
  .section-legal .text-size-regular {
    text-align: justify;
  }

  /* Lists stay left-aligned */
  .section-legal .list-legal {
    text-align: left;
  }

  /* Section titles (h3) - Left aligned */
  .section-legal .heading-style-h3 {
    font-size: clamp(3rem, 5vw, 5rem) !important;
    letter-spacing: -2px !important;
    text-transform: uppercase;
    line-height: 1.1;
    text-align: left;
  }

  /* Subsection titles (h5) - Left aligned */
  .section-legal .heading-style-h5 {
    font-size: 2rem !important;
    line-height: 1.2;
    text-align: left;
  }
}

/* ============================================================================
   WEBFLOW PRELOADER OVERRIDE - iOS 26 Liquid Glass Workaround
   ============================================================================ */

/* Ensure preloader appears above all elements */
.preloader {
  z-index: 9999999 !important;
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  background-color: var(--dark) !important;
}

/* Fix preloader progress bar centering - use viewport units for absolute positioning */
.preloader-wrapper {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
}

/* Show preloader initially, but don't block Webflow from hiding it */
.preloader:not([style*="display: none"]):not([style*="opacity: 0"]) {
  display: flex !important;
}

/* Hide navbar when preloader is active - CSS-based hiding survives iOS repaints */
.preloader:not([style*="display: none"]):not([style*="opacity: 0"]) ~ .page-wrapper .navbar {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  z-index: 1 !important;
}

/* iOS 26 Liquid Glass Fix: Make preloader background transparent
   Body background will handle the actual color (extends beneath Safari tabs)
   Same technique as burger menu - body extends beneath tabs, preloader doesn't */
@supports (-webkit-touch-callout: none) {
  @media (max-width: 991px) {
    .preloader {
      background-color: transparent !important;
    }
  }
}

/* ============================================================================
   IX2 ANIMATION PROTECTION - DO NOT OVERRIDE
   ============================================================================ */

/* Critical: Never override these properties on IX2 elements */
[data-w-id] {
  /* transform: inherit; - Let IX2 handle */
  /* opacity: inherit; - Let IX2 handle */
  /* visibility: inherit; - Let IX2 handle */
}

/* ============================================================================
   UTILITY CLASSES - RESPONSIVE HELPERS
   ============================================================================ */

/* Hide/Show classes for responsive design */
.mobile-hidden {
  display: none;
}

.desktop-hidden {
  display: none;
}

@media (max-width: 991px) {
  .mobile-hidden {
    display: none;
  }
  
  .desktop-hidden {
    display: block;
  }
}

@media (min-width: 992px) {
  .mobile-hidden {
    display: block;
  }
  
  .desktop-hidden {
    display: none;
  }
}

/* ============================================================================
   CTA BUTTON CONDITIONAL BEHAVIOR - MOBILE vs DESKTOP
   ============================================================================ */

/* Desktop: Show modal button, hide redirect button */
@media (min-width: 992px) {
  .desktop-modal-btn {
    visibility: visible;
    position: static;
  }
  
  .mobile-redirect-btn {
    visibility: hidden;
    position: absolute;
    pointer-events: none;
  }
}

/* Mobile/Tablet: Hide modal button, show redirect button */
@media (max-width: 991px) {
  .desktop-modal-btn {
    visibility: hidden;
    position: absolute;
    pointer-events: none;
  }
  
  .mobile-redirect-btn {
    visibility: visible;
    position: static;
  }
}

/* ============================================================================
   CONTACT MODAL - PRODUCTION-GRADE MOBILE UX
   ============================================================================ */

/* Modal Base Styles - Clean and Simple */
.modal-overlay {
  position: fixed;
  /* Modern inset shorthand for bulletproof centering */
  inset: 0;
  background-color: rgba(0, 0, 0, 0.8);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 9999;
  /* Flexbox centers content regardless of scroll position */
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease-out, visibility 0.3s ease-out;
  padding: 1.5rem;
  /* ✅ FIX: Constrain overlay to viewport height - prevent overflow beyond 100dvh */
  max-height: 100dvh;
  max-height: 100vh;
  overflow-y: auto;
}

.modal-overlay.active {
  opacity: 1;
  visibility: visible;
}

.modal-container {
  position: relative;
  width: 100%;
  max-width: 600px;
  /* ✅ FIX: Reduced from 90dvh to 85dvh to account for padding and prevent overflow */
  max-height: 85dvh;
  max-height: 85vh;
  /* Opening animation: scale up + slide up */
  transform: scale(0.9) translateY(30px);
  transform-origin: center center;
  transition: transform 0.3s ease-out;
  display: flex;
  flex-direction: column;
}

.modal-overlay.active .modal-container {
  transform: scale(1) translateY(0);
}

.modal-content {
  position: relative;
  background: var(--black, #000);
  border-radius: 12px;
  padding: 2rem 1.5rem;
  /* ✅ FIX: Use 100% height to fill container, let container control max-height */
  height: 100%;
  max-height: 100%;
  overflow-y: auto;
  border: 1px solid rgba(255, 255, 255, 0.1);
  /* ✅ FIX: Smooth scrolling on iOS */
  -webkit-overflow-scrolling: touch;
}

/* iOS 26 Liquid Glass - Solid black overlay to match liquid glass zones */
@supports (-webkit-touch-callout: none) {
  @media (max-width: 767px) {
    .modal-overlay {
      background-color: #000000;
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
    }
  }
}

/* Mobile responsive improvements */
@media (max-width: 767px) {
  .modal-overlay {
    /* ✅ FIX: Increase padding on mobile to create popup effect with visible space */
    padding: 2rem 1rem;
  }

  .modal-container {
    /* ✅ FIX: Reduced to 70dvh to create visible top/bottom space - looks like actual popup */
    max-height: 70dvh;
    max-height: 70vh;
  }

  .modal-content {
    padding: 1.5rem 1rem;
  }
}

.modal-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: none;
  border: none;
  color: #fff;
  font-size: 2rem;
  cursor: pointer;
  padding: 0.5rem;
  border-radius: 50%;
  transition: background-color 0.2s ease;
  z-index: 10;
}

.modal-close:hover {
  background-color: rgba(255, 255, 255, 0.1);
}

/* React Close Button - Premium Animated */
.modal-close-react {
  position: absolute;
  top: 1.5rem;
  right: 1.5rem;
  background: transparent;
  border: none;
  outline: none;
  color: #fff;
  cursor: pointer;
  padding: 0;
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10;
  transition: opacity 0.1s ease-out;
  width: auto;
  height: auto;
  /* Remove all browser default styles */
  -webkit-tap-highlight-color: transparent;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  box-shadow: none;
}

.modal-close-react:hover {
  opacity: 0.8;
}

.modal-close-react:active {
  opacity: 0.6;
}

.modal-close-react:focus {
  outline: none;
}

.modal-close-react:focus-visible {
  outline: none;
}

/* Menu Toggle Icon - Animated close icon */
.menu-toggle-icon {
  width: 28px;
  height: 28px;
  display: block;
}

.modal-header {
  /* CSS Grid for perfect centering with floating close button */
  display: grid;
  grid-template-columns: 1fr;
  place-items: center;
  margin-bottom: 2rem;
  padding-top: 1.7rem; /* Breathing room from close button */
  position: relative;
}

.modal-header h2 {
  margin-bottom: 1rem;
}

/* Form Styling - Preserve original Webflow styles exactly */
.modal-content .contact-form-block,
.modal-content .contact-form-wrapper,
.modal-content .contact-form {
  width: 100%;
}

/* DO NOT override .form-input - let Webflow handle it completely */
/* Original Webflow styles will apply:
   - border-style: none none solid (bottom border only)
   - border-color: var(--grey) 
   - background-color: transparent
   - color: var(--white)
*/

/* External Message Containers - Outside modal, no blur inheritance */
.external-message {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 99999;
  
  /* Original styling preserved */
  padding: 1rem;
  border-radius: 6px;
  text-align: center;
  min-width: 280px;
  max-width: 400px;
  
  /* Fast, clean animation */
  display: none;
  animation: messageShow 0.2s ease-out forwards;
}

.external-success {
  background: rgba(34, 197, 94, 0.1);
  border: 1px solid rgba(34, 197, 94, 0.3);
  color: #22c55e;
}

.external-error {
  background: rgba(239, 68, 68, 0.1);
  border: 1px solid rgba(239, 68, 68, 0.3);
  color: #ef4444;
}

/* Internal messages - fallback/hidden */
.modal-content .form-message-success,
.modal-content .form-message-error {
  display: none !important;
}

/* Message backdrop */
.message-backdrop {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 99998; /* Below message but above everything else */
  opacity: 0;
  animation: fadeIn 0.15s ease-out forwards;
}

.modal-content .form-message-success {
  background: rgba(34, 197, 94, 0.1);
  border: 1px solid rgba(34, 197, 94, 0.3);
  color: #22c55e;
}

.modal-content .form-message-error {
  background: rgba(239, 68, 68, 0.1);
  border: 1px solid rgba(239, 68, 68, 0.3);
  color: #ef4444;
}

/* Mobile Styles - Simple and Clean */
@media (max-width: 767px) {
  .modal-overlay {
    padding: 0.5rem;
  }
  
  .modal-content {
    padding: 1.5rem 1rem;
    border-radius: 8px;
  }
  
  .modal-header h2 {
    font-size: clamp(2.8rem, 6vw, 2.5rem);
  }
  
  /* Mobile message overlay adjustments */
  .modal-content .form-message-success,
  .modal-content .form-message-error {
    padding: 1.5rem 2rem;
    width: calc(100vw - 2rem);
    max-width: 400px;
    font-size: 1rem;
  }
}

/* Fast, clean animations */
@keyframes messageShow {
  from {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.95);
  }
  to {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* Tablet Styles */
@media (min-width: 768px) and (max-width: 991px) {
  .modal-content {
    padding: 3rem 2.5rem;
  }
  
  .modal-header {
    margin-bottom: 2.5rem;
  }
}

/* Desktop Styles */
@media (min-width: 992px) {
  .modal-overlay {
    padding: 2rem;
  }
  
  .modal-container {
    max-width: 700px;
  }
  
  .modal-content {
    padding: 4rem 3rem;
    border-radius: 16px;
  }
  
  .modal-header {
    margin-bottom: 3rem;
  }
}


/* Prevent zoom on iOS when focusing inputs - ENHANCED FIX v2.2 */
@media screen and (max-width: 991px) {
  /* ALL form inputs get consistent mobile treatment */
  .modal-content .form-input,
  .contact-form-wrapper .form-input,
  .contact-form .form-input,
  input.form-input,
  textarea.form-input {
    font-size: 16px !important; /* Prevents iOS zoom */
    -webkit-appearance: none; /* Remove iOS styling */
    appearance: none;
  }
  
  /* SENIOR FIX v2.2: Enhanced textarea consistency - SOLVES ZOOM OUT ISSUE */
  body .modal-content .contact-form-wrapper .form-input.is-text-area,
  body .contact-form-wrapper .form-input.is-text-area,
  body .modal-content .form-input.is-text-area,
  body .contact-form .form-input.is-text-area,
  body textarea.form-input.is-text-area {
    /* CRITICAL: Match regular input padding exactly */
    padding: 1rem !important;
    
    /* Consistent dimensions */
    min-height: 6rem !important;
    max-height: 12rem !important;
    height: 6rem !important;
    
    /* Mobile UX consistency */
    font-size: 16px !important;
    line-height: 1.4 !important;
    box-sizing: border-box !important;
    
    /* Smooth resize behavior */
    resize: vertical;
    transition: height 0.2s ease;
    
    /* Prevent viewport jumping */
    -webkit-appearance: none;
    appearance: none;
    border-radius: 0;
    
    /* Ensure proper text rendering */
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }
  
  /* Focus state consistency - no viewport shifts */
  .form-input:focus,
  .form-input.is-text-area:focus {
    outline: none;
    /* Let Webflow handle focus styling, but ensure no layout shifts */
    transform: none !important;
    zoom: 1 !important;
  }
}

/* Modal Animation */
@keyframes modalFadeIn {
  from {
    opacity: 0;
    transform: scale(0.9) translateY(30px);
  }
  to {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

@keyframes modalFadeOut {
  from {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
  to {
    opacity: 0;
    transform: scale(0.9) translateY(30px);
  }
}

/* ============================================================================
   DESKTOP NAVIGATION - FIX TEXT BREAKING AT 1174PX
   ============================================================================ */

/* Fix navigation spacing to prevent text breaking */
@media (min-width: 992px) {
  .nav-component-grid {
    grid-template-columns: auto 1fr !important;
  }
  
  /* Responsive gap - tighter spacing on smaller desktop widths */
  .nav-menu-content {
    gap: clamp(0.5rem, 1.5vw, 1.5rem) !important;
  }
}

@media (min-width: 992px) and (max-width: 1025px) {
  .nav-menu-content {
    gap: 0.6rem !important;
  }
}

@media (min-width: 1200px) {
  .nav-menu-content {
    gap: 1.5rem !important; /* Restore original Webflow spacing */
  }
}

/* ============================================================================
   PROJECT TITLE CENTER FIX - FORCE CENTERING FOR FIRST PROJECT
   ============================================================================ */
.project-name-wrap {
  text-align: center;
}

.project-name {
  text-align: center;
}

/* ============================================================================
   PROJECT VIEW BUTTON MOBILE POSITIONING FIX
   ============================================================================ */
/* Mobile breakpoint: Move view button UP to avoid title overlap */
@media screen and (max-width: 479px) {
  .project-collection-item .w-dyn-item .view-button-wrapper,
  .w-dyn-list .project-collection-item .view-button-wrapper {
    align-items: flex-end;
    padding-bottom: 30%;
  }
}

/* ============================================================================
   MOBILE MENU CENTERING FIX - CENTER ALL 7 NAVIGATION ELEMENTS
   ============================================================================ */
@media (max-width: 479px) {
  .navbar .nav-menu .nav-menu-content {
    justify-content: center;
    align-items: center;
    padding: 2rem 0 3rem 0;
    height: 100vh;
    gap: 1.5rem;
  }
}

@media (min-width: 480px) and (max-width: 767px) {
  .navbar .nav-menu .nav-menu-content {
    justify-content: center;
    align-items: center;
    padding: 2rem 0 3rem 0;
    height: 100vh;
    gap: 1.8rem;
  }
}

/* ============================================================================
   iOS 26 LIQUID GLASS FIX - CUSTOM ANIMATIONS FOR SMOOTH UX
   ============================================================================ */

/* Custom keyframe animation for menu OPEN - smooth fade in */
@keyframes menuBackgroundOpen {
  0% {
    background-color: var(--black);
  }
  100% {
    background-color: #313233;
  }
}

/* Custom keyframe animation for menu CLOSE - smooth fade out */
@keyframes menuBackgroundClose {
  0% {
    background-color: #313233;
  }
  100% {
    background-color: var(--black);
  }
}

@media (max-width: 767px) {
    /* iOS 26 VH unit behavior changed - now always takes window.outerHeight */
    .navbar .nav-menu .nav-menu-content {
      height: 100vh;
      padding: 2rem 0 3rem 0;
      justify-content: center;
      align-items: center;
      position: relative;
      top: 125px;
    }

    /* Force background to cover address bar area using window.outerHeight */
    /* CRITICAL: [data-nav-menu-open] selector beats Webflow's default styles */
    .navbar .nav-menu[data-nav-menu-open] {
      /* ✅ iOS 26 Liquid Glass: Extend BENEATH bottom tabs using safe-area-inset-bottom */
      height: calc(100vh + 250px + env(safe-area-inset-bottom)) !important;
      padding-bottom: env(safe-area-inset-bottom) !important;
      top: -125px !important;
      position: fixed !important;
      left: 0 !important;
      right: 0 !important;
      width: 100% !important;
      /* iOS 26 vertical shift fix - prevent Safari tab bar displacement bug */
      transform: translateZ(0) !important;
      -webkit-transform: translateZ(0) !important;
      will-change: transform !important;
    }

    /* Make Webflow background-navbar TRANSPARENT - we control the visuals with body background */
    .navbar .nav-menu .background-navbar {
      position: absolute !important;
      inset: 0 !important;
      height: 100% !important;
      width: 100% !important;
      z-index: 0 !important;
      background-color: transparent !important; /* ✅ Make Webflow bg invisible */
      opacity: 0 !important; /* ✅ Completely invisible */
    }
}

/* ============================================================================
   FOOTER - MOBILE/TABLET OVERFLOW FIX
   ============================================================================ */
/* Prevent horizontal overflow on mobile/tablet with proper responsive grid */
@media (max-width: 991px) {
  /* Prevent footer from creating horizontal scroll */
  .footer {
    overflow-x: hidden !important;
  }

  .footer-component-grid {
    grid-column-gap: 1rem;
    grid-row-gap: 4rem;
    width: 100%;
    box-sizing: border-box;
  }

  .footer-content-block {
    overflow: hidden;
    min-width: 0;
  }
}

/* ============================================================================
   FOOTER SOCIAL ICONS - RESPONSIVE LAYOUT (v2.1.29)
   ============================================================================
   CRITICAL: Icon spacing uses clamp() for fluid responsiveness across ALL mobile widths
   - Adapts to screens from 320px to 767px automatically
   - Prevents overflow on narrow screens (min 0.5rem)
   - Prevents bunching on wide screens (max 1.5rem)
   - DO NOT use fixed margins - they break on different mobile screen sizes
   ============================================================================ */

/* Mobile ONLY: Title above icons in horizontal row */
@media (max-width: 479px) {
  /* Fix parent containers to allow icons to display properly */
  .footer-component-grid {
    overflow: visible !important;
    position: relative !important;
    z-index: 1 !important;
  }

  .footer-content-block.mobile-links {
    display: flex !important;
    flex-flow: column nowrap !important;  /* Column to stack title above icons row */
    justify-content: flex-start !important;
    align-items: flex-start !important;  /* Left-align everything */
    width: 100% !important;
    gap: 2rem !important;  /* Gap between SOCIALS title and icons */
    padding: 0 !important;
    position: relative !important;
    z-index: 100 !important;
    overflow: visible !important;
  }

  /* SOCIALS title - visible only on mobile */
  .footer-socials-title {
    margin: 0 !important;
    padding: 0 !important;
    display: block !important;
    width: 100% !important;
  }

  /* Icons wrapper - break out to full viewport width for proper space-between */
  .footer-icons-wrapper {
    display: flex !important;
    flex-flow: row nowrap !important;  /* Single horizontal row */
    justify-content: space-between !important;  /* Distribute across full screen */
    align-items: center !important;
    width: calc(100vw - -2.8rem) !important;  /* Perfect pixel spacing - overflow contained by .footer */
    margin-left: calc(-1 * var(--padding-global, 2.5rem)) !important;  /* Pull to left edge */
    padding-left: var(--padding-global, 2.5rem) !important;  /* Add padding back for icons */
    padding-right: var(--padding-global, 2.5rem) !important;  /* Add padding back for icons */
    position: relative !important;
  }

  .footer-social-icon {
    margin: 0 !important;
    position: relative !important;
    z-index: 100 !important;
    flex-shrink: 0 !important;
  }
}

/* Tablet: SOCIALS title above, icons centered with space-between */
@media screen and (min-width: 480px) and (max-width: 991px) {
  #w-node-ed60a98e-9235-8a7e-a4fc-b8ac2b293998-4bac888f.footer-content-block.mobile-links {
    display: flex !important;
    flex-flow: column nowrap !important;  /* Column to stack title above icons row */
    grid-column: 1 / -1 !important;
    justify-content: flex-start !important;
    align-items: flex-start !important;
    width: 100% !important;
    gap: 1.5rem !important;  /* Gap between SOCIALS title and icons */
    padding: 0 !important;
    position: relative !important;
    z-index: 100 !important;
    overflow: visible !important;
  }

  /* SOCIALS title - visible on tablet */
  .footer-socials-title {
    margin: 0 !important;
    padding: 0 !important;
    display: block !important;
    width: 100% !important;
  }

  /* Icons wrapper - centered distribution like before */
  .footer-icons-wrapper {
    display: flex !important;
    flex-flow: row nowrap !important;
    justify-content: space-between !important;  /* Distribute across full width */
    align-items: center !important;
    width: 100% !important;
  }

  .footer-social-icon {
    margin: 0 !important;
    position: relative !important;
    z-index: 100 !important;
    flex-shrink: 0 !important;
  }
}

/* Desktop: 2x2 grid layout */
@media (min-width: 992px) {
  .footer-content-block.mobile-links {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 1fr 1fr;
    gap: 1.5rem;
    justify-items: center;
    align-items: center;
    padding: 0;
  }

  /* Hide SOCIALS: title on desktop */
  .footer-socials-title {
    display: none !important;
  }

  /* Icons wrapper - make it display contents to not affect grid layout */
  .footer-icons-wrapper {
    display: contents !important;
  }
}

/* ============================================================================
   FOOTER BOTTOM SECTION - RESPONSIVE LAYOUT (v2.1.25 - PRODUCTION READY)
   ============================================================================
   ⚠️ CRITICAL: This layout is PRODUCTION READY and TESTED
   - Privacy Policy, Cookie Policy, Terms of Service, Mexico City in 2x2 grid
   - Rights Reserved text spans full width at bottom
   - DO NOT modify this section unless absolutely necessary
   - DO NOT add conflicting flex/grid properties that break the layout
   - If making changes, test on ALL mobile widths (320px - 991px)
   ============================================================================ */

/* Mobile/Tablet: 2x2 grid layout + Rights Reserved below */
@media (max-width: 991px) {
  .bottom-content-wrapper {
    /* CRITICAL: Grid layout for legal links - DO NOT CHANGE */
    padding-top: 3rem;
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto auto auto;
    grid-column-gap: 2rem;
    grid-row-gap: 2rem;
    justify-items: start;
  }

  /* 2x2 Grid layout for legal links + Mexico City */
  .footer-privacy {
    grid-area: 1 / 1 / 2 / 2; /* Row 1, Column 1 */
  }

  .footer-cookies {
    grid-area: 1 / 2 / 2 / 3; /* Row 1, Column 2 */
  }

  .footer-terms {
    grid-area: 2 / 1 / 3 / 2; /* Row 2, Column 1 */
  }

  .mexico-city {
    grid-area: 2 / 2 / 3 / 3; /* Row 2, Column 2 */
    justify-self: start; /* Left align instead of right */
  }

  /* Rights Reserved spans full width on Row 3 with top padding */
  .footer-rights {
    grid-area: 3 / 1 / 4 / 3; /* Row 3, span both columns */
    justify-self: start; /* Left align the text */
    padding-top: 1rem; /* Space between grid elements and rights text */
  }
}

/* Desktop: Horizontal single line with restored top padding */
@media (min-width: 992px) {
  .bottom-content-wrapper {
    padding-top: 4rem;
    flex-flow: row;
    align-items: center;
  }

  .bottom-content-item.mexico-city {
    margin-left: auto;
  }
}

/* ============================================================================
   PROJECTS SECTION - STACKED CARD SCROLL EFFECT
   ============================================================================ */
/**
 * Agency-Z Signature Stacked Scroll Effect
 *
 * How it works:
 * - Each .project-collection-item is 100vh tall and position: sticky
 * - All cards stick to top: 0
 * - As you scroll, new cards OVERLAP previous ones
 * - IX2 transforms (rotateX, scale) animate during scroll
 * - Creates layered "deck of cards" reveal effect
 */

.project-collection-item {
  position: sticky !important;
  top: 0;
}

/* ============================================================================
   COOKIE CONSENT BANNER
   ============================================================================ */
.cookie-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 9998;
  background: rgba(13, 13, 13, 0.95);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  padding: 1.25rem 1.5rem;
  padding-bottom: calc(1.25rem + env(safe-area-inset-bottom, 0px));
  transform: translateY(100%);
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.cookie-banner-visible {
  transform: translateY(0);
}

.cookie-banner-hidden {
  transform: translateY(100%);
  transition: transform 0.4s cubic-bezier(0.7, 0, 0.84, 0);
}

.cookie-banner-content {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
}

.cookie-banner-text {
  color: var(--secondary-grey, #c6c9cc);
  font-family: 'Mona Sans', sans-serif;
  font-size: 0.875rem;
  font-weight: 300;
  line-height: 1.5;
  margin: 0;
}

.cookie-banner-link {
  color: #fff;
  text-decoration: none;
  border-bottom: 1px solid rgba(255, 255, 255, 0.3);
  transition: border-color 0.25s ease;
}

.cookie-banner-link:hover {
  border-color: #fff;
}

.cookie-banner-actions {
  display: flex;
  gap: 0.75rem;
  flex-shrink: 0;
}

.cookie-btn {
  font-family: 'Mona Sans', sans-serif;
  font-size: 0.8125rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 0.625rem 1.25rem;
  cursor: pointer;
  transition: all 0.3s ease;
  white-space: nowrap;
}

.cookie-btn-outline {
  background: transparent;
  color: var(--secondary-grey, #c6c9cc);
  border: 1px solid rgba(255, 255, 255, 0.2);
}

.cookie-btn-outline:hover {
  color: #fff;
  border-color: rgba(255, 255, 255, 0.5);
}

.cookie-btn-filled {
  background: #fff;
  color: #0d0d0d;
  border: 1px solid #fff;
}

.cookie-btn-filled:hover {
  background: rgba(255, 255, 255, 0.85);
}

/* Mobile: stack vertically */
@media (max-width: 767px) {
  .cookie-banner {
    padding: 1.25rem 1rem;
    padding-bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
  }

  .cookie-banner-content {
    flex-direction: column;
    text-align: center;
    gap: 1rem;
  }

  .cookie-banner-text {
    font-size: 0.8125rem;
  }

  .cookie-banner-actions {
    width: 100%;
  }

  .cookie-btn {
    flex: 1;
    padding: 0.75rem 1rem;
    font-size: 0.75rem;
  }
}

/* ============================================================================
   SERVICE CARDS — MOBILE TAP-TO-FLIP TRANSITION
   Only applies on mobile/tablet where IX2 hover is blocked by JS.
   Desktop uses IX2's own animation timing (1000ms outBack easing).
   ============================================================================ */
@media (max-width: 991px) {
  .card-wrapper {
    transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
  }
}

/* ============================================================================
   END CONSOLIDATED OVERRIDES
   ============================================================================ */