/* ============================================================================= * ui_template_input.css — 입력 · 고르기 크기 단 · 상태 · 단위 붙음 · 슬라이더(552-2) * 기본 꼴(42 · 여백 · 화살표)은 `ui_template_elements_styles.ts`(옛 자리 · 덮어쓰기 차례 그대로). * 단 값(--ui-size-*)은 `ui_template_button.css` 한 곳. * ========================================================================== */ /* 크기 단 — 높이를 박음(칸은 글 줄 높이가 브라우저마다 달라 여백 식으로는 안 맞음) */ .ui-input[data-size]:not(textarea), .ui-select[data-size] { height: var(--ui-size-h); padding-block: 0; font-size: var(--ui-size-font); line-height: normal; } .ui-input[data-size] { padding-inline: 8px; } .ui-select[data-size] { padding-inline: 8px 26px; background-position: right 8px center; } .ui-input[data-size]:is([data-size="36"], [data-size="42"]) { padding-inline: 14px; } .ui-select[data-size]:is([data-size="36"], [data-size="42"]) { padding-inline: 14px 36px; background-position: right 12px center; } .ui-input[data-size]:is([data-size="18"], [data-size="20"], [data-size="22"], [data-size="24"]), .ui-select[data-size]:is([data-size="18"], [data-size="20"], [data-size="22"], [data-size="24"]) { border-radius: var(--ui-size-radius); } textarea.ui-input { resize: vertical; } /* 상태 — 마우스 · 막힘 · 오류(옛 --error 같이) */ .ui-input:is(:hover, [data-state="hover"]):not(:disabled, :focus), .ui-select:is(:hover, [data-state="hover"]):not(:disabled, :focus) { border-color: var(--color-border-strong); } .ui-input:disabled { opacity: 0.5; cursor: not-allowed; } .ui-input:is(.is-error, [aria-invalid="true"]):not(:focus), .ui-select:is(.is-error, [aria-invalid="true"]):not(:focus) { border-color: var(--color-danger); } /* 단위 붙음 — 칸 안 오른쪽 글 · 칸 폭은 부르는 쪽 몫 */ .ui-input-unit { position: relative; display: flex; } .ui-input-unit > .ui-input { flex: 1; min-width: 0; padding-right: calc(8px + 2.5em); } .ui-input-unit__text { position: absolute; top: 50%; right: 8px; transform: translateY(-50%); font-size: var(--text-caption); color: var(--color-text-secondary); pointer-events: none; } /* 슬라이더 — [이름 | 막대 | 값 글] 3열 */ .ui-slider { display: grid; grid-template-columns: auto minmax(40px, 1fr) auto; align-items: center; gap: 8px; min-height: var(--ui-size-h); font-size: var(--text-caption); color: var(--color-text-secondary); } .ui-slider__range { width: 100%; margin: 0; accent-color: var(--color-accent); cursor: pointer; } .ui-slider__range:is(:hover, [data-state="hover"]):not(:disabled) { accent-color: var(--color-primary-hover); } .ui-slider__range:disabled { opacity: 0.5; cursor: not-allowed; } .ui-slider__label { white-space: nowrap; } .ui-slider__value { min-width: 3em; text-align: right; font-variant-numeric: tabular-nums; color: var(--color-text); } /* 숨김 — display 가 [hidden] 을 덮지 않게(공용 기본 꼴이 안 실린 곳 · 페이지 꾸밈 위에서도) */ :is(.ui-input-unit, .ui-slider)[hidden] { display: none !important; }