/* ============================================================
   Privé · 폼·버튼 공통 컴포넌트 (components.css)
   버튼/입력 표준을 이 파일 한 곳에서 관리(전 페이지 공유).
   theme.css 전역 토큰 + 폴백 기본값 → theme.css 없어도 동작.
   로드 순서: theme.css 다음, 페이지 인라인 <style> 앞.
   (특정 페이지가 고유 버튼을 쓰면 그 페이지 인라인이 우선)
   ============================================================ */
/* 버튼 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;padding:13px 20px;border-radius:10px;font-size:16px;font-weight:700;font-family:inherit;border:1.5px solid transparent;transition:.15s;width:auto}
.btn.full{width:100%}
.btn-primary{background:var(--accent,#BE8B2E);color:#fff}
.btn-primary:hover{background:var(--accent-d,#946E1B);transform:translateY(-1px)}
.btn-line{background:transparent;border-color:rgba(19,21,26,.17);color:var(--text-2,#4C463D)}
.btn-line:hover{border-color:var(--accent,#BE8B2E);color:var(--accent-d,#946E1B)}
.btn-ghost{background:transparent;color:var(--text-3,#7A7468);font-weight:600}
.btn-ghost:hover{color:var(--text,#1A1712)}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}
/* 폼 */
.field{margin-top:16px}
.field label{display:block;font-size:14px;font-weight:600;color:var(--text-2,#4C463D);margin-bottom:7px}
.field input,.field select{width:100%;padding:13px 14px;font-size:16px;font-family:inherit;color:var(--text,#1A1712);background:var(--surface,#FFFFFF);border:1.5px solid rgba(19,21,26,.17);border-radius:10px;transition:border-color .15s,box-shadow .15s}
.field input:focus,.field select:focus{outline:none;border-color:var(--accent,#BE8B2E);box-shadow:0 0 0 3px var(--accent-soft,rgba(190,139,46,.12))}
.field .err{color:#D64545;font-size:14px;margin-top:6px;display:none}
.field.invalid .err{display:block}
.field.invalid input{border-color:#D64545}
