/*
 * This is a manifest file that'll be compiled into application.css.
 *
 * With Propshaft, assets are served efficiently without preprocessing steps. You can still include
 * application-wide styles in this file, but keep in mind that CSS precedence will follow the standard
 * cascading order, meaning styles declared later in the document or manifest will override earlier ones,
 * depending on specificity.
 *
 * Consider organizing styles into separate files for maintainability.
 */

/* Mobile scroll support */
main.overflow-auto,
.overflow-auto,
.overflow-x-auto {
  -webkit-overflow-scrolling: touch;
}

/* Pagy pagination spacing */
nav.pagy {
  display: flex;
  gap: 4px;
}
/* 폼 컨트롤 대비 — DaisyUI 기본값이 AA 에 못 미쳐 컴포넌트 레벨에서 덮는다.
   토큰(--color-base-content)을 내려서는 못 푼다: 기본값이 그 토큰의 **불투명도**로
   정의돼 있어 토큰을 어둡게 해도 20%/50% 라는 비율이 그대로 남는다.
   이 블록은 레이어 밖(unlayered)이라 @layer base 의 preflight·@layer components 의
   DaisyUI 규칙을 순서와 무관하게 이긴다.

   placeholder  base-content 50% -> 60%  (3.67 -> 5.15, 본문 기준 4.5)
   테두리        base-content 20% -> 50%  (1.57 -> 3.67, 비텍스트 기준 3.0)
   근거·등급표 = docs/hub/DESIGN_SYSTEM.md §대비 */
.input::placeholder,
.select::placeholder,
.textarea::placeholder,
input.input::placeholder,
textarea.textarea::placeholder {
  color: color-mix(in oklab, var(--color-base-content) 60%, transparent);
}

.input,
.select,
.textarea,
.checkbox,
.radio,
.toggle {
  border-color: color-mix(in oklab, var(--color-base-content) 50%, transparent);
}

/* 필수 필드 시각화 */
input:required:invalid:not(:focus),
select:required:invalid:not(:focus),
textarea:required:invalid:not(:focus) {
  border-color: #ef4444;
}
.required-mark {
  color: #991B1B;
  font-weight: bold;
}

nav.pagy a,
nav.pagy span {
  min-width: 36px;
  min-height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Mobile: overflow-hidden 해제로 스크롤 보장 */
@media (max-width: 1023px) {
  body, html { overflow: auto !important; height: auto !important; }
  .h-screen { height: auto !important; min-height: 100vh; }
  .overflow-hidden { overflow: auto !important; }
}

/* X30: 위 전역 규칙의 body overflow:auto 가 position:sticky 를 깨므로(GNB·컴포저 스티키 미작동)
   X30 페이지(data-theme=x30-*)만 body overflow 를 복구. Hub 앱셸(다른 테마)은 위 규칙 그대로 유지. */
@media (max-width: 1023px) {
  html[data-theme^="x30"] body { overflow: visible !important; }
}

/* Details chevron rotation */
details[open] > summary .transition-transform {
  transform: rotate(90deg);
}
