/* ============================================================================= * ui_template_button.css — 크기 여덟 단 · 단추 단 맞춤 · 글 링크 · 아이콘 단추(552-2) * 단 값(--ui-size-*)은 data-size 를 단 요소만 씀 — 입력 · 고르기 · 분할 · 탭도 같은 값을 읽음. * 단추 기본 꼴 · 색 · 마우스는 `ui_template_elements_styles.ts`(옛 자리 · 페이지 덮어쓰기 차례 그대로). * ========================================================================== */ :where([data-size="18"]) { --ui-size-h: 18px; --ui-size-font: var(--text-caption); --ui-size-px: 8px; --ui-size-icon: 12px; --ui-size-radius: 4px; --ui-size-gap: 4px; } :where([data-size="20"]) { --ui-size-h: 20px; --ui-size-font: var(--text-caption); --ui-size-px: 8px; --ui-size-icon: 14px; --ui-size-radius: 4px; --ui-size-gap: 4px; } :where([data-size="22"]) { --ui-size-h: 22px; --ui-size-font: var(--text-caption); --ui-size-px: 8px; --ui-size-icon: 14px; --ui-size-radius: 4px; --ui-size-gap: 4px; } :where([data-size="24"]) { --ui-size-h: 24px; --ui-size-font: var(--text-caption); --ui-size-px: 10px; --ui-size-icon: 14px; --ui-size-radius: 6px; --ui-size-gap: 4px; } :where([data-size="28"]) { --ui-size-h: 28px; --ui-size-font: var(--text-body-sm); --ui-size-px: 12px; --ui-size-icon: 16px; --ui-size-radius: var(--radius-buttons); --ui-size-gap: 6px; } :where([data-size="32"]) { --ui-size-h: 32px; --ui-size-font: var(--text-body-sm); --ui-size-px: 16px; --ui-size-icon: 16px; --ui-size-radius: var(--radius-buttons); --ui-size-gap: 6px; } :where([data-size="36"]) { --ui-size-h: 36px; --ui-size-font: var(--text-body-sm); --ui-size-px: 16px; --ui-size-icon: 18px; --ui-size-radius: var(--radius-buttons); --ui-size-gap: 8px; } :where([data-size="42"]) { --ui-size-h: 42px; --ui-size-font: var(--text-body-sm); --ui-size-px: 20px; --ui-size-icon: 20px; --ui-size-radius: var(--radius-buttons); --ui-size-gap: 8px; } /* 단추 — 높이 = 글 한 줄(줄 높이 1 = 1em) + 위아래 여백 + 테두리(아이콘은 글 높이 안에 맞춤) · 높이를 박지 않아 페이지 여백 덮어쓰기가 옛날처럼 먹음 여백 = 1em 기준이라 페이지가 글 크기를 바꿔도 높이 = 단 */ .ui-btn[data-size] { gap: var(--ui-size-gap); padding: calc((var(--ui-size-h) - 2px - 1em) / 2) var(--ui-size-px); font-size: var(--ui-size-font); line-height: 1; border-radius: var(--ui-size-radius); } /* 왼쪽 패널 양식(`.ui-panel-form` · overlay.css)의 옛 단추 규칙(글 12 · 줄 높이 normal · 여백 8)이 단을 덮지 않게 — 글 크기 · 옆 여백은 패널 꼴 그대로 · 높이만 단 */ .ui-panel-form .ui-btn[data-size]:not(.ui-help-btn, .ui-step-nav-btn) { padding-block: calc((var(--ui-size-h) - 2px - 1em) / 2); line-height: 1; } /* 숨김 — 단추 display 가 [hidden] 을 덮지 않게(공용 기본 꼴이 안 실린 곳에서도) */ :is(.ui-btn, .ui-icon-btn)[hidden] { display: none !important; } .ui-btn[data-size] > .ui-btn__icon { width: var(--ui-size-icon); height: var(--ui-size-icon); margin-block: calc((1em - var(--ui-size-icon)) / 2); } .ui-btn[data-size] > .ui-btn__icon svg { width: 100%; height: 100%; } /* 글 링크 — 테두리 · 바탕 없음 · 강조 글 · 밑줄 */ .ui-btn.ui-btn--link { padding-inline: 0; background: none; color: var(--color-accent); text-decoration: underline; } .ui-btn--link:is(:hover, [data-state="hover"]):not(:disabled) { color: var(--color-primary-hover); } /* 아이콘 단추 — 정사각 · 단 높이 = 너비 */ .ui-icon-btn { display: inline-grid; place-items: center; flex: none; box-sizing: border-box; width: var(--ui-size-h); height: var(--ui-size-h); padding: 0; border: 1px solid transparent; border-radius: var(--ui-size-radius); background: transparent; color: var(--color-text-secondary); font: inherit; font-size: var(--ui-size-font); line-height: 1; cursor: pointer; transition: background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast); } .ui-icon-btn svg { width: var(--ui-size-icon); height: var(--ui-size-icon); } .ui-icon-btn--outline { border-color: var(--color-border); background: var(--color-surface-raised); } .ui-icon-btn--filled { background: var(--color-primary); color: var(--color-primary-text); } .ui-icon-btn:is(:hover, [data-state="hover"]):not(:disabled) { background: var(--color-hover); color: var(--color-text); } .ui-icon-btn--filled:is(:hover, [data-state="hover"]):not(:disabled) { background: var(--color-primary-hover); color: var(--color-primary-text); } .ui-icon-btn[aria-pressed="true"] { background: var(--color-accent-soft); color: var(--color-accent); } /* 유리 — 그림 위에 뜸(색 = `.ui-btn--glass` 와 같은 공통 값) */ .ui-icon-btn--glass { border-color: color-mix(in srgb, var(--color-border) 65%, transparent); border-radius: var(--radius-pills); background: color-mix(in srgb, var(--color-surface-raised) 72%, transparent); color: var(--color-text-body); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); } .ui-icon-btn--glass:is(:hover, [data-state="hover"]):not(:disabled) { border-color: var(--color-primary); background: color-mix(in srgb, var(--color-primary) 82%, transparent); color: var(--color-primary-text); } .ui-icon-btn:is(:active, [data-state="active"]):not(:disabled) { translate: 0 1px; } .ui-icon-btn:disabled { opacity: 0.5; cursor: not-allowed; }