/* ===== GLOBAL CSS VARIABLES ===== */
/* This file contains all CSS custom properties (variables) used across the entire project */
/* Include this file FIRST before any other stylesheets */

:root {
  --container-max: 1200px;
  /* ===== COLORS ===== */
  
  /* Primary Colors */
  --color-dark: #0a1628;
  --color-white: #ffffff;
  --color-black: #000000;
  
  /* Text Colors */
  --color-text: #333333;
  --color-text-light: #666666;
  --color-text-lighter: #999999;
  
  /* Background Colors */
  --color-bg: #f5f5f5;
  --color-bg-light: #f0f4f8;
  --color-bg-dark: #0a1628;
  
  /* Blue Palette */
  --color-blue-base: #004098;
  --color-blue-vivid: #0089ff;
  --color-blue-light: #eaeef4;
  --color-blue-light2: #5A7296;
  --color-blue-light3: #D8E0ED;
  --color-blue-dark: rgba(19,51,95,.95);
  --color-blue-dark2: #1D3A65;
  --color-blue-gnavborder: #4C6EA2;
  
  /* Gray Palette */
  --color-gray-base: #b2b2b2;
  --color-gray-dark: #5d5d5d;
  --color-gray-dark2: #707070;
  --color-gray-dark3: #656C74;
  --color-gray-light: #f4f4f4;
  --color-gray-light2: #c4c4c4;
  
  /* Red Palette */
  --color-red-base: #c90000;
  --color-red-vivid: #ff3300;
  
  /* Border Colors */
  --color-border: #cccccc;
  --color-border-light: #e5e5e5;
  --color-border-dark: #D6E1F0;
  
  /* ===== TYPOGRAPHY ===== */
  
  /* Font Families */
  --font-family: Helvetica, Arial, Tahoma, sans-serif;
  --font-family-ja: "Hiragino Kaku Gothic ProN", "ヒラギノ角ゴ ProN W3", "Meiryo", "メイリオ", sans-serif;
  --font-family-icon: "svgicon";
  
  /* Font Sizes */
  --text-xs: 0.75rem;      /* 12px */
  --text-sm: 0.875rem;     /* 14px */
  --text-body: 1rem;       /* 16px */
  --text-base: 1rem;       /* 16px */
  --text-lg: 1.125rem;     /* 18px */
  --text-xl: 1.25rem;      /* 20px */
  --text-2xl: 1.5rem;      /* 24px */
  --text-3xl: 2rem;        /* 32px */
  --text-4xl: 2.5rem;      /* 40px */
  --text-5xl: 3rem;        /* 48px */
  
  /* Font Weights */
  --font-weight-light: 300;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-extrabold: 800;
  
  /* Line Heights */
  --line-height-tight: 1.2;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.6;
  --line-height-loose: 1.8;
  
  /* Letter Spacing */
  --letter-spacing-tight: -0.02em;
  --letter-spacing-normal: 0;
  --letter-spacing-wide: 0.03em;
  --letter-spacing-wider: 0.05em;
  
  /* ===== SPACING ===== */
  
  --spacing-xs: 4px;
  --spacing-sm: 8px;
  --spacing-md: 16px;
  --spacing-lg: 24px;
  --spacing-xl: 32px;
  --spacing-2xl: 40px;
  --spacing-3xl: 48px;
  --spacing-4xl: 60px;
  --spacing-5xl: 80px;
  
  /* ===== LAYOUT ===== */
  
  /* Container Widths */
  --container-max-width: 1200px;
  --container-narrow: 1080px;
  --container-wide: 1400px;
  
  /* Header Heights */
  --header-height-pc: 150px;
  --header-height-pc-scrolled: 110px;
  --header-height-sp: 50px;
  --header-height-tablet: 70px;
  
  /* ===== BORDERS ===== */
  
  --border-radius-sm: 4px;
  --border-radius-md: 8px;
  --border-radius-lg: 12px;
  --border-radius-xl: 16px;
  --border-radius-2xl: 20px;
  --border-radius-3xl: 24px;
  --border-radius-full: 9999px;
  
  --border-width: 1px;
  --border-width-thick: 2px;
  
  /* ===== SHADOWS ===== */
  
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
  --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07);
  --shadow-lg: 0 8px 15px rgba(0, 0, 0, 0.1);
  --shadow-xl: 0 12px 24px rgba(0, 0, 0, 0.12);
  --shadow-2xl: 0 20px 40px rgba(0, 0, 0, 0.15);
  
  /* ===== TRANSITIONS ===== */
  
  --transition-fast: 0.15s ease;
  --transition-base: 0.3s ease;
  --transition-slow: 0.5s ease;
  --transition-ease: cubic-bezier(0.17, 0.935, 0.305, 1);
  
  /* ===== Z-INDEX ===== */
  
  --z-dropdown: 100;
  --z-sticky: 101;
  --z-fixed: 102;
  --z-modal-backdrop: 103;
  --z-modal: 104;
  --z-popover: 105;
  --z-tooltip: 106;
  
  /* ===== BREAKPOINTS (for reference in JS) ===== */
  
  --breakpoint-sm: 576px;
  --breakpoint-md: 768px;
  --breakpoint-lg: 960px;
  --breakpoint-xl: 1200px;
  --breakpoint-2xl: 1400px;
  
  /* ===== OPACITY ===== */
  
  --opacity-disabled: 0.5;
  --opacity-hover: 0.8;
  --opacity-light: 0.6;
  --opacity-lighter: 0.4;
  
  /* ===== MISC ===== */
  
  --focus-ring: 0 0 0 3px rgba(0, 137, 255, 0.3);
  --focus-ring-color: rgba(0, 137, 255, 0.3);
}

/* ===== DARK MODE SUPPORT (Optional) ===== */
@media (prefers-color-scheme: dark) {
  :root {
    /* Uncomment and customize if dark mode is needed */
    /* --color-dark: #ffffff;
    --color-white: #0a1628;
    --color-text: #e5e5e5;
    --color-bg: #1a1a1a; */
  }
}

/* ===== PRINT STYLES ===== */
@media print {
  :root {
    --color-dark: #000000;
    --color-white: #ffffff;
    --shadow-sm: none;
    --shadow-md: none;
    --shadow-lg: none;
    --shadow-xl: none;
    --shadow-2xl: none;
  }
}

/* ========================================
   Prevent Horizontal Overflow
   ======================================== */
html, body {
  overflow-x: hidden;
}

/* ========================================
   Global Background Image Settings
   ======================================== */
/* Prevent background images from repeating across all pages */
[style*="background-image"],
.page-banner,
.np-card,
.product-card,
.hero-section,
.banner-section {
  background-repeat: no-repeat !important;
  background-size: cover !important;
  background-position: center !important;
}

/* ========================================
   Trademark Symbol Styling
   ======================================== */
/* Style trademark symbols to appear as subscript at baseline */
.tm-symbol,
sup.tm {
  font-size: 0.6em;
  vertical-align: baseline;
  position: relative;
  top: 0.1em;
  line-height: 0;
}

/* ========================================
   Local Navigation - Heading Alignment Fix
   ======================================== */
/* Set minimum height for parent headings so underlines align even when text wraps */
.ly_localNav .menuLv2 > li.parent > a {
  display: flex;
  align-items: flex-start;
}

/* ========================================
   Local Navigation - Company Banner
   ======================================== */
.localnav-banner {
  background: #000;
  color: #fff;
  padding: 40px 0;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 150px;
}

.localnav-banner-inner {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 2%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 40px;
}

.localnav-banner-logo {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 200px;
}

.banner-logo-img {
  width: 281px;
  height: auto;
  margin-bottom: 8px;
}

.banner-logo-tagline {
  font-size: 1.4rem;
  font-weight: 400;
  color: #fff;
  margin: 0;
  text-align: center;
}

.localnav-banner-text {
  flex: 1;
}

.banner-company-name {
  font-size: 2.4rem;
  font-weight: 700;
  color: #fff;
  margin: 0 0 8px 0;
  line-height: 1.3;
}

.banner-description {
  font-size: 2rem;
  color: rgba(255, 255, 255, 0.85);
  margin: 0;
  line-height: 1.6;
}

/* Responsive */
@media (max-width: 767px) {
  .localnav-banner-inner {
    flex-direction: column;
    gap: 20px;
    text-align: center;
  }
  
  .banner-company-name {
    font-size: 2rem;
  }
  
  .banner-description {
    font-size: 1.4rem;
  }

  .banner-logo-img {
  width: 190px;
}
}

/* ========================================
   Scroll Reveal Animations
   ======================================== */
.reveal {
  position: relative;
  opacity: 0;
  transition: opacity 1s ease, transform 1s ease !important; /* Only animate these */
}

.reveal.active {
  transform: translateY(0) translateX(0);
  opacity: 1;
}

.slide-up {
  transform: translateY(150px);
}

.slide-down {
  transform: translateY(-150px);
}

.slide-left {
  transform: translateX(150px);
}

.slide-right {
  transform: translateX(-150px);
}

.scroll-header {
  transform-origin: top left;
  transition: transform 0.3s ease;
}

.scroll-header.scrolled {
  transform: scale(0.63);
}

/* Accessibility */
@media (prefers-reduced-motion: reduce) {
  .reveal {
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* ========================================
   Video Section - Header Hide on Scroll
   Used on home.html and product-mabs.html
   ======================================== */
.ly_header,
.ly_globalNav {
  transition: transform 500ms cubic-bezier(0.4, 0, 0.2, 1);
}

body.is-story-focused .ly_header,
body.is-story-focused .ly_globalNav {
  transform: translateY(-200px);
}
