/* ============================================================
   Design tokens — restrained, professional motion
   ============================================================ */

:root {
  --one-ease: cubic-bezier(0.4, 0, 0.2, 1);
  --one-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --one-hover-dur: 0.4s;
  --one-hover-shadow: 0 12px 28px -12px rgba(0, 0, 0, 0.12);
  --one-hover-shadow-soft: 0 8px 20px -10px rgba(0, 0, 0, 0.08);
}

/* ============================================================
   AOS — 스크롤 시 숨김 → 등장
   ============================================================ */

/* 기본 AOS fade 계열 거리·이징 오버라이드 */
[data-aos] {
  transition-property: opacity, transform;
  transition-duration: var(--aos-duration, 800ms);
  transition-delay: var(--aos-delay, 0ms);
  transition-timing-function: var(--one-ease-out) !important;
  pointer-events: auto;
  will-change: opacity, transform;
}

[data-aos].aos-animate {
  will-change: auto;
}

[data-aos="fade-up"] {
  transform: translate3d(0, 24px, 0) !important;
}

[data-aos="fade-up"].aos-animate {
  transform: translate3d(0, 0, 0) !important;
}

[data-aos="fade-down"] {
  transform: translate3d(0, -24px, 0) !important;
}

[data-aos="fade-down"].aos-animate {
  transform: translate3d(0, 0, 0) !important;
}

[data-aos="fade-left"] {
  transform: translate3d(16px, 0, 0) !important;
}

[data-aos="fade-left"].aos-animate {
  transform: translate3d(0, 0, 0) !important;
}

[data-aos="fade-right"] {
  transform: translate3d(-16px, 0, 0) !important;
}

[data-aos="fade-right"].aos-animate {
  transform: translate3d(0, 0, 0) !important;
}

[data-aos="fade-in"] {
  transform: translate3d(0, 8px, 0) !important;
}

[data-aos="fade-in"].aos-animate {
  transform: translate3d(0, 0, 0) !important;
}

[data-aos="zoom-in"] {
  transform: scale(0.98) !important;
}

[data-aos="zoom-in"].aos-animate {
  transform: scale(1) !important;
}

/* 스크롤 전 숨김 상태 강제 (AOS 기본 + 보강) */
[data-aos^="fade"]:not(.aos-animate),
[data-aos="zoom-in"]:not(.aos-animate) {
  opacity: 0 !important;
}

[data-aos^="fade"].aos-animate,
[data-aos="zoom-in"].aos-animate {
  opacity: 1 !important;
}

@media (max-width: 768px) {
  [data-aos="fade-up"] {
    transform: translate3d(0, 16px, 0) !important;
  }

  [data-aos="fade-left"] {
    transform: translate3d(12px, 0, 0) !important;
  }

  [data-aos="fade-right"] {
    transform: translate3d(-12px, 0, 0) !important;
  }
}

/* ============================================================
   Pressable — subtle click feedback
   ============================================================ */

.one-pressable {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
  user-select: none;
  -webkit-user-select: none;
  transform: translateZ(0);
  transition:
    transform 0.28s var(--one-ease),
    opacity 0.25s var(--one-ease),
    box-shadow 0.35s var(--one-ease),
    filter 0.3s var(--one-ease);
}

.one-pressable.is-pressed {
  transform: scale(0.985) translateZ(0);
  opacity: 0.94;
  transition-duration: 0.12s;
}

.one-pressable.is-pressed.one-pressable--soft {
  transform: none;
  opacity: 0.78;
}

.one-pressable--card.is-pressed {
  transform: scale(0.992) translateY(1px) translateZ(0);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.05);
}

.one-pressable--fab.is-pressed {
  transform: scale(0.96) translateZ(0);
}

.one-pressable--tab.is-pressed {
  transform: none;
  opacity: 0.82;
}

.one-pressable--icon.is-pressed {
  transform: scale(0.94) translateZ(0);
}

.one-pressable--primary.is-pressed {
  transform: scale(0.98) translateZ(0);
  filter: brightness(0.97);
}

.one-pressable::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(circle at var(--press-x, 50%) var(--press-y, 50%), rgba(255, 255, 255, 0.14) 0%, transparent 62%);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s var(--one-ease);
}

.one-pressable.is-pressed::after {
  opacity: 1;
}

.one-pressable:not([style*="position"]) {
  position: relative;
}

.one-pressable .one-pressable.is-pressed {
  transform: none;
  opacity: 1;
}

/* 헤더·로고 — press/hover 효과 없음 */
.one-header .one-pressable,
.one-header .one-pressable.is-pressed,
.mb-header .one-pressable,
.mb-header .one-pressable.is-pressed,
.one-brand.one-pressable,
.one-brand.one-pressable.is-pressed {
  transform: none !important;
  opacity: 1 !important;
  filter: none !important;
}

.one-header .one-pressable::after,
.mb-header .one-pressable::after,
.one-brand.one-pressable::after {
  display: none;
}

/* ============================================================
   Hover — desktop pointer, calm & refined
   ============================================================ */

@media (hover: hover) and (pointer: fine) {
  .one-pressable:not(.is-pressed):hover,
  .one-hoverable:hover {
    transition-duration: var(--one-hover-dur);
    transition-timing-function: var(--one-ease);
  }

  /* 링크·네비 — 색상만 */
  .one-pressable--soft:not(.is-pressed):hover {
    transform: none;
    opacity: 0.82;
  }

  .one-header .one-gnb__item,
  .one-header .one-gnb__submenu a,
  .mb-header .nav a {
    transform: none !important;
    opacity: 1 !important;
  }

  /* 카드·타일 — 미세한 리프트 */
  .one-pressable--card:not(.is-pressed):hover,
  .one-hoverable--tile:not(.is-pressed):hover {
    transform: translateY(-3px) translateZ(0);
    box-shadow: var(--one-hover-shadow);
  }

  .service-cards .card.one-pressable--card:not(.is-pressed):hover {
    transform: none;
    box-shadow: 0 16px 36px -16px rgba(0, 37, 235, 0.14);
  }

  .one-prefooter-cta__btn.one-hoverable--lift:not(.is-pressed):hover {
    transform: translateY(-2px) translateZ(0);
    box-shadow: 0 20px 40px -14px rgba(0, 0, 0, 0.4);
    filter: none;
  }

  /* 탭 */
  .one-pressable--tab:not(.is-pressed):hover {
    transform: none;
    opacity: 0.88;
  }

  /* 아이콘·SNS */
  .one-pressable--icon:not(.is-pressed):hover,
  .one-sns.one-pressable--soft:not(.is-pressed):hover {
    transform: scale(1.04) translateZ(0);
    opacity: 0.85;
  }

  /* FAB */
  .one-pressable--fab:not(.is-pressed):hover {
    transform: translateY(-2px) translateZ(0);
    box-shadow: 0 12px 28px -8px rgba(0, 0, 0, 0.14);
  }

  /* 이미지 카드 */
  .one-hoverable--media {
    display: block;
    overflow: hidden;
    border-radius: inherit;
    transition: transform var(--one-hover-dur) var(--one-ease), box-shadow 0.4s var(--one-ease);
  }

  .one-hoverable--media:not(.is-pressed):hover {
    transform: translateY(-2px) translateZ(0);
    box-shadow: var(--one-hover-shadow-soft);
  }

  .one-hoverable--media .one-card__img,
  .one-hoverable--media > img,
  .one-hoverable--media .gall_img img,
  .one-hoverable--tile .gall_img img {
    transition: transform 0.6s var(--one-ease-out);
    transform: scale(1) translateZ(0);
  }

  .one-hoverable--media:hover .one-card__img,
  .one-hoverable--media:hover > img,
  .one-hoverable--media:hover .gall_img img,
  .one-hoverable--tile:hover .gall_img img {
    transform: scale(1.03) translateZ(0);
  }

  .one-hoverable--media:hover .one-card__name,
  .one-hoverable--media:hover .one-card__client {
    color: var(--blue, #3e67fa);
    transition: color 0.35s var(--one-ease);
  }

  /* 밑줄 링크 */
  .one-hoverable--link {
    position: relative;
    text-decoration: none !important;
  }

  .one-hoverable--link::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0.12em;
    width: 100%;
    height: 1px;
    background: currentColor;
    opacity: 0.4;
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform 0.4s var(--one-ease);
    pointer-events: none;
  }

  .one-hoverable--link:hover::after,
  .one-hoverable--link:focus-visible::after {
    transform: scaleX(1);
    transform-origin: left center;
  }

  /* 게시판 행 */
  .one-hoverable--row td {
    transition: background 0.35s var(--one-ease);
  }

  .one-hoverable--row:hover td {
    background: rgba(62, 103, 250, 0.035) !important;
  }

  .one-hoverable--row:hover td:first-child {
    box-shadow: inset 2px 0 0 rgba(62, 103, 250, 0.45);
  }

  /* 통계 */
  .one-hoverable--stat:not(.is-pressed):hover {
    transform: none;
  }

  .one-hoverable--stat .ao-stat-value,
  .one-hoverable--stat .one-stat__value {
    transition: color 0.35s var(--one-ease);
  }

  .one-hoverable--stat:hover .ao-stat-value,
  .one-hoverable--stat:hover .one-stat__value {
    color: var(--blue, #3e67fa);
  }

  /* 페이지네이션 */
  .pg_page.one-hoverable--soft:not(.is-pressed):hover,
  .pg_current.one-hoverable--soft:not(.is-pressed):hover {
    transform: none;
    opacity: 0.75;
    box-shadow: none;
  }

  /* 폼 포커스 */
  .one-hoverable--field:focus-within {
    transform: none;
    transition: box-shadow 0.35s var(--one-ease);
    box-shadow: 0 4px 16px -8px rgba(62, 103, 250, 0.12);
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-aos] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .one-pressable,
  .one-pressable.is-pressed {
    transform: none !important;
    transition: opacity 0.15s ease !important;
  }

  .one-hoverable:hover,
  .one-hoverable--media:hover .one-card__img,
  .one-hoverable--media:hover > img,
  .one-hoverable--tile:hover .gall_img img {
    transform: none !important;
    box-shadow: none !important;
    filter: none !important;
  }
}
