/* components.css — SHOUTERZ 공식 가이드 컴포넌트 (소프트 카드)
   ref: design/shoiter-design-guide.md §3 · 토큰: tokens.css */

/* ===== 상단 앱바 (§top bar) ===== */
.appbar{display:flex;align-items:center;height:54px;padding:0 6px}
.appbar__btn{width:42px;height:42px;display:flex;align-items:center;justify-content:center;color:var(--g-900);background:none;border:0;cursor:pointer}
.appbar__btn--r{color:var(--g-500)}
.appbar__title{flex:1;text-align:center;font-size:16px;font-weight:600;color:var(--g-900)}
.appbar__ti{width:22px;height:22px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}

/* ===== 단계 진행바 (§4.1 stepbar, 활성 point-text) ===== */
.stepbar{display:flex;gap:6px;padding:2px 20px 18px}
.stepbar i{height:4px;flex:1;border-radius:var(--r-pill);background:var(--g-300)}
.stepbar i.on{background:var(--point-text)}

/* ===== 화면 헤딩 ===== */
.htitle{font-size:18px;font-weight:800;letter-spacing:-.3px;line-height:1.4;color:var(--navy-900)}
.hsub{color:var(--g-700);font-size:13.5px;margin:8px 0 20px;line-height:1.5}

/* ===== 소프트 카드 (§3.1) ===== */
.card{background:var(--white);border:1px solid var(--g-400);border-radius:var(--r-card);box-shadow:var(--sh-card);padding:18px}

/* ===== 상태 점 + 중립 텍스트 (§3.2 — 채운 배지 금지) ===== */
.status{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--g-700)}
.status .dot{width:6px;height:6px;border-radius:50%;background:var(--g-500);flex:0 0 auto}
.status .dot--ok{background:var(--success)}
.status .dot--wait{background:var(--warning)}
.status .dot--err{background:var(--error)}

/* ===== 플랫폼 선택 카드 (그리드) ===== */
.pf-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pf-card{position:relative;background:var(--white);border:1px solid var(--g-400);border-radius:var(--r-card);box-shadow:var(--sh-card);
  padding:18px 14px;display:flex;flex-direction:column;align-items:center;gap:10px;cursor:pointer;text-decoration:none}
.pf-card.is-sel{border:1.5px solid var(--point-text)}
.pf-card.is-dim{opacity:.5;pointer-events:none}
.pf-card__av{width:46px;height:46px;border-radius:50%;background:var(--point-bg);display:grid;place-items:center;font-weight:800;font-size:15px;color:var(--point-text);overflow:hidden}
.pf-card__av img{width:100%;height:100%;object-fit:cover}
.pf-card__nm{font-size:14px;font-weight:500;color:var(--g-900)}
.pf-card__chk{position:absolute;top:10px;right:10px;color:var(--point-text)}

/* ===== 입력 필드 (§3.4) ===== */
.field{margin-bottom:16px}
.field__label{display:block;font-size:13px;font-weight:500;color:var(--g-700);margin-bottom:7px}
.field__input{width:100%;height:48px;border-radius:var(--r-inp);background:var(--white);border:1px solid var(--g-400);
  padding:0 14px;font-size:14px;font-family:var(--font-sans);color:var(--g-900);outline:none}
.field__input::placeholder{color:var(--g-600)}
.field__input:focus{border:1.5px solid var(--point-text);box-shadow:0 0 0 3px var(--point-bg)}
.field__input[readonly]{background:var(--g-200)}
.field__input.is-error{border:1.5px solid var(--error);box-shadow:0 0 0 3px var(--error-bg)}
.field__err{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--error);margin-top:6px}

/* 보안/도움 힌트 박스 */
.hintbox{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--g-700);background:var(--g-200);border-radius:var(--r-inp);padding:11px 12px}
.hintbox .ti{width:16px;height:16px;stroke:currentColor;stroke-width:1.8;fill:none;flex:0 0 auto}

/* ===== 히어로 / 금액 (§3.9) ===== */
.hero-amt{background:var(--navy-600);border-radius:18px;padding:20px;text-align:center}
.hero-amt__lbl{font-size:13px;color:var(--navy-800);font-weight:600}
.hero-amt__val{font-size:30px;font-weight:800;letter-spacing:-1.2px;color:var(--navy-800);margin:6px 0 8px;font-feature-settings:'tnum'}
.hero-amt__meta{font-size:12px;color:var(--navy-800)}

/* ===== 버튼 (§3.3 / 버튼색은 --btn 별도 지정) ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;cursor:pointer;font-family:var(--font-sans);
  font-weight:700;font-size:15px;line-height:1;transition:background .15s}
.btn--cta{width:100%;height:52px;border-radius:var(--r-cta);font-size:16px;background:var(--btn);color:#fff}
.btn--cta:hover{background:var(--btn-strong)}
.btn--cta:disabled{background:var(--g-300);color:var(--g-700);cursor:not-allowed}
.btn--pill{padding:10px 18px;border-radius:var(--r-pill);background:var(--btn);color:#fff}
.btn--pill.is-disabled{background:var(--g-300);color:var(--g-700)}
.btn--outline{padding:12px 16px;border-radius:var(--r-inp);background:var(--white);border:1px solid var(--g-400);color:var(--navy-900);font-weight:600}
.btn--ghost{background:transparent;color:var(--g-700);font-weight:500;font-size:14px}
.btn:focus-visible{outline:3px solid var(--point-bg);outline-offset:2px}

/* ===== 하단 고정 CTA 영역 ===== */
.bottom-cta{position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:var(--max-width,480px);
  padding:14px 16px calc(14px + env(safe-area-inset-bottom));background:var(--white);border-top:1px solid var(--g-300);z-index:50}
.bottom-cta .btn--ghost{display:block;width:100%;margin-top:10px}
