/* 공개 화면(접수·입장·채점) 폼 스타일 — 테마 토큰 기반 */
.sm-form { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; max-width: 760px; }
.sm-form__section { border-top: 2px solid var(--rule-strong); padding-top: 16px; min-width: 0; }
.sm-form__section h2 { font-size: 18px; margin-bottom: 12px; }
.sm-field { display: grid; gap: 6px; margin-bottom: 14px; min-width: 0; }
.sm-field label { font-size: 17px; font-weight: 700; }
.sm-field label .req { color: var(--accent); margin-left: 2px; }
.sm-field .hint { font-size: 16px; color: var(--ink-3); }
.sm-input, .sm-select, .sm-textarea { width: 100%; min-height: 48px; padding: 10px 12px; border: 1px solid var(--rule); background: var(--bg); font-size: 18px; }
.sm-textarea { min-height: 140px; resize: vertical; line-height: 1.6; }
.sm-input:focus, .sm-select:focus, .sm-textarea:focus { outline: 2px solid var(--accent); outline-offset: 0; border-color: var(--accent); }
.sm-input.is-error, .sm-textarea.is-error { border-color: var(--accent); background: #fff2ef; }
.sm-row { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.sm-check { display: flex; align-items: flex-start; gap: 10px; font-size: 18px; line-height: 1.5; padding: 12px; border: 1px solid var(--rule); }
.sm-check input { width: 20px; height: 20px; margin-top: 2px; accent-color: var(--accent); flex: none; }
.sm-check a { color: var(--ink); }
.sm-file { display: grid; gap: 8px; }
.sm-file__slot { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 10px; border: 1px dashed var(--rule); font-size: 17px; min-width: 0; }
.sm-file__slot input { font-size: 17px; min-width: 0; max-width: 100%; flex: 1 1 180px; }
.sm-file__preview { width: 56px; height: 42px; object-fit: cover; background: var(--surface); flex: none; }
.sm-count { font-family: var(--font-num); font-size: 16px; color: var(--ink-3); text-align: right; }
.sm-alert { padding: 14px 16px; border-left: 4px solid var(--accent); background: #fff2ef; font-size: 18px; margin-bottom: 16px; }
.sm-alert--info { border-left-color: var(--ink); background: var(--surface); }
.sm-alert ul { list-style: disc; padding-left: 18px; }
.sm-notice-box { padding: 14px 16px; background: var(--surface); font-size: 18px; line-height: 1.6; margin-bottom: 20px; }
.sm-form__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.sm-form__actions .sm-btn { flex: 1 1 200px; }

/* 접수 완료 / 조회 결과 */
.sm-result { max-width: 640px; }
.sm-result__no { font-family: var(--font-num); font-size: clamp(40px, 8vw, 72px); font-weight: 800; letter-spacing: -0.03em; color: var(--accent); line-height: 1; margin: 8px 0 16px; }
.sm-result .sm-facts > div { grid-template-columns: 110px 1fr; }
.sm-status-badge { display: inline-block; padding: 6px 12px; font-size: 18px; font-weight: 800; background: var(--ink); color: var(--bg); }
.sm-status-badge--passed, .sm-status-badge--final { background: var(--accent); }
.sm-status-badge--failed { background: var(--surface); color: var(--ink-3); }
.sm-steps-h { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; background: var(--rule); border: 1px solid var(--rule); margin: 16px 0; }
.sm-steps-h > div { background: var(--bg); padding: 10px 8px; font-size: 16px; text-align: center; color: var(--ink-3); }
.sm-steps-h > div.on { background: var(--ink); color: var(--bg); font-weight: 700; }
.sm-steps-h > div.done { background: var(--surface); color: var(--ink); }

/* 접수증 인쇄 */
@media print {
  .sm-header, .sm-footer, .sm-bottombar, .no-print, .sm-login-msg { display: none !important; }
  body { padding: 0; background: #fff; }
  .sm-page { border: 0; }
}
