:root {
  /* Colors - Professional Medical Care Theme */
  --color-primary: #4A90A4;
  /* Calm Medical Blue */
  --color-primary-light: #D6EAF0;
  --color-secondary: #7CB342;
  /* Soft Green for Care */
  --color-accent: #E57373;
  /* Soft Red for highlights */
  --color-text-main: #000000;
  /* Dark Gray instead of pure black */
  --color-text-light: #6B6B6B;
  --color-bg-light: #FFFFFF;
  --color-white: #FFFFFF;
  --color-border: #E8E8E8;

  /* Fonts */
  --font-main: "Zen Kaku Gothic New",
    "Helvetica Neue",
    Arial,
    "Hiragino Kaku Gothic ProN",
    "Hiragino Sans",
    Meiryo,
    sans-serif;

  /* Spacing */
  --spacing-xs: 4px;
  --spacing-sm: 8px;
  --spacing-md: 16px;
  --spacing-lg: 32px;
  --spacing-xl: 64px;
  --spacing-xxl: 100px;

  /* Container */
  --container-width: 1800px;
  /* Expanded for modern wide screens */
  --content-width: 1440px;
  /* Main content width */

  /* Missing variables mapping */
  --color-text: var(--color-text-main);
  --color-bg: var(--color-bg-light);
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body *:not(.hero):not(.hero *):not(.sub-hero):not(.sub-hero *):not(.hero-slider):not(.hero-slider *):not(.listing-hero):not(.listing-hero *):not(.news-hero):not(.news-hero *):not(.contact-hero):not(.contact-hero *):not(.facility-hero):not(.facility-hero *):not(.recruit-hero):not(.recruit-hero *):not(.housing-hero):not(.housing-hero *):not(.nursing-hero):not(.nursing-hero *):not(.caregiving-hero):not(.caregiving-hero *):not(.realestate-hero):not(.realestate-hero *) {
  box-shadow: none !important;
  text-shadow: none !important;
}

body * {
  border-radius: 0 !important;
}

img[src=""],
img:not([src]) {
  visibility: hidden;
}

.custom-cursor,
.custom-cursor-follower {
  border-radius: 50% !important;
}

.fullscreen-menu-title-link {
  border-radius: 50% !important;
}

.tel-link {
  border-radius: 25px !important;
}

.tel-icon {
  border-radius: 4px !important;
}

.housing-feature-kicker,
.housing-step-num {
  border-radius: 50% !important;
}

.nursing-step-num {
  border-radius: 50% !important;
}

.caregiving-step-num,
.recruit-step-num,
.recruit-support-icon,
.recruit-cta-option-icon,
.point-number {
  border-radius: 50% !important;
}

.fade-slider-dots,
.fade-slider-dots:hover {
  transform: translateX(-50%) !important;
}

.fade-dot:hover {
  transform: none !important;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: 'Noto Sans JP', "Helvetica Neue", "Helvetica", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Arial", "Yu Gothic", "Meiryo", sans-serif;
  font-size: 16px;
  line-height: 1.8;
  color: var(--color-text);
  background-color: var(--color-bg);
  margin: 0;
  padding: 0;
  -webkit-font-smoothing: antialiased;
  letter-spacing: 0.05em;
  -moz-osx-font-smoothing: grayscale;
}

a {
  text-decoration: none;
  color: inherit;
  transition: opacity 0.3s;
}

a:hover {
  opacity: 0.8;
}

ul {
  list-style: none;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

.container {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
}

/* Utility Classes */
.text-center {
  text-align: center;
}

.flex {
  display: flex;
}

.grid {
  display: grid;
}

.hidden {
  display: none;
}

.mt-4 {
  margin-top: var(--spacing-xl);
}

.mb-4 {
  margin-bottom: var(--spacing-xl);
}

/* Responsive improvements */
@media (max-width: 768px) {
  .container {
    padding: 0 var(--spacing-md);
  }

  .section {
    padding: var(--spacing-lg) 0;
  }

  .section-title {
    font-size: 24px;
  }

  .section-subtitle {
    font-size: 0.9rem;
  }
}

@media (max-width: 480px) {
  .container {
    padding: 0 var(--spacing-sm);
  }

  .section {
    padding: var(--spacing-md) 0;
  }

  .section-title {
    font-size: 21px;
  }

  body {
    font-size: 0.95rem;
  }
}

/* ========================================
   Accessibility Enhancements
   ======================================== */

/* Respect user's motion preferences */
@media (prefers-reduced-motion: reduce) {

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Improved Focus States for Keyboard Navigation */
:focus-visible {
  outline: 3px solid var(--color-primary);
  outline-offset: 3px;
  border-radius: 4px;
}

/* Remove default focus outline only when focus-visible is supported */
:focus:not(:focus-visible) {
  outline: none;
}

/* High contrast mode support */
@media (prefers-contrast: high) {
  :root {
    --color-border: #000000;
    --color-text-light: #333333;
  }
}
