/*
 * reset.css — 최소한의 브라우저 기본 스타일 초기화.
 * 로드 순서: reset -> tokens -> typography -> layout (header.php 에서 고정)
 */

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

html, body, div, span, h1, h2, h3, h4, h5, h6, p,
ul, ol, li, dl, dt, dd, figure, figcaption,
form, fieldset, legend, table, th, td {
  margin: 0;
  padding: 0;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  min-height: 100vh;
  line-height: 1.5;
}

ul, ol {
  list-style: none;
}

img, picture, video, canvas, svg {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
  text-decoration: none;
  background-color: transparent;
}

button, input, select, textarea {
  font: inherit;
  color: inherit;
  background: none;
  border: none;
  outline: none;
}

button {
  cursor: pointer;
}

button:disabled {
  cursor: not-allowed;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

fieldset {
  border: none;
}

:focus-visible {
  outline: 2px solid var(--main-color, #2aabe1);
  outline-offset: 2px;
}

[hidden] {
  display: none !important;
}

/* QA 수정: prefers-reduced-motion 전역 안전장치. home.js 는 배너 자동재생 자체를 이미 멈추지만,
   그 밖의 장식성 transition/animation(배너 슬라이드 이동, 카드 hover 이동, GNB 패널 등장, 아코디언
   화살표 회전 등)은 CSS 에만 있어 JS 로 막을 수 없으므로 여기서 전역으로 짧게 줄인다. 로딩 스피너는
   "진행 중" 신호를 잃지 않도록 애니메이션을 유지한다(대신 base 계층에서 한 번만 예외 처리). */
@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;
  }

  .state-block__spinner,
  .btn.is-loading::after {
    animation-duration: 1.2s !important;
    animation-iteration-count: infinite !important;
  }
}
