/* ========================================
   RISK_NOTE - 모바일 사용자 전용 스타일
   공통 부분은 common/, components/ 로 분리됨
   - variables.css: CSS 변수
   - reset.css: 리셋/기본 스타일
   - utilities.css: 유틸리티 클래스
   - components/: 뱃지, 버튼, 폼, 테이블, 카드, 서명, 캘린더{
    max-width: 480px;
    margin: 0 auto;
    min-height: 100vh;
    background: var(--u-bg-card);
    position: relative;
}
.app-header .back-btn {
    width: 32px; height: 32px;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.25rem; color: var(--u-ink); cursor: pointer;
    background: none; border: none;
}
.app-header .title {
    font-size: 1.0625rem; font-weight: 600; color: var(--u-ink);
}
.app-tab-bar .tab-item {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 8px 0 6px;
    white-space: nowrap;
    font-size: 0.6875rem;
    color: var(--u-ink-muted);
    cursor: pointer;
    text-decoration: none;
}
.app-tab-bar .tab-item .tab-icon {
    font-size: 1.25rem;
    margin-bottom: 2px;
}
.app-tab-bar .tab-item.active {
    color: var(--u-accent);
    font-weight: 600;
}
.site-info-card .label {
    font-size: 0.75rem;
    color: var(--u-ink-light);
    margin-bottom: 2px;
}
.site-info-card .value {
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--u-ink);
    margin-bottom: 10px;
}
.site-info-card .value:last-child {
    margin-bottom: 0;
}

/* 폼/셀렉트는 u-form-group / u-form-input / u-form-select 단일화 (user_components.css). 옛 .form-* 정의 제거 (2026-05-12). */

/* ── 역할 선택 라디오 ── */
.role-selector {
    display: flex;
    gap: 10px;
}

/* 버튼은 u-btn / u-btn-primary / u-btn-secondary 단일화 (user_components.css). 옛 .btn-* 정의 제거 (2026-05-12). */

/* ── 링크 텍스트 ── */
.auth-link {
    text-align: center;
    padding: 16px 0;
    font-size: 0.875rem;
    color: var(--u-ink-light);
}

/* 알림은 RN.alert() JS 헬퍼 / 안내문구는 u-hint 통일. 옛 .hint-text · .alert-* 정의 제거 (2026-05-12). */

/* ── 자동완성 드롭다운 ── */
.autocomplete-wrap {
    position: relative;
}
.autocomplete-list.show {
    display: block;
}

/* 텍스트 영역은 u-form-textarea 단일화 (user_components.css). 옛 .form-textarea 정의 제거 (2026-05-12). */

.calendar-grid .day-cell.today {
    background: var(--u-accent);
    color: var(--u-on-accent);
    font-weight: 700;
    border-radius: 50%;
}
.calendar-detail .detail-title {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--u-ink);
    margin-bottom: 8px;
}

/* .list-card 는 사용자단(rn_user/rn_safe_mgr/rn_oversight) 사용 0건 — admin.css 의 fnc_mgr 용 정의가 별도 유지. 사용자단 dead 정의 제거 (2026-05-12). */

/* 뱃지는 u-badge 단일화 (user_components.css). 옛 .badge / .badge-* 정의 제거 (2026-05-12). */

/* ── 섹션 구분 ── */
.section-title {
    font-size: 0.9375rem;
    font-weight: 700;
    color: var(--u-ink);
    padding: 16px 0 8px;
    border-bottom: 2px solid var(--u-ink);
    margin-bottom: 12px;
}

/* ── 필터 바 ── */
.filter-bar {
    display: flex;
    gap: 8px;
    margin-bottom: 12px;
    padding: 12px 0;
}
.filter-bar select {
    height: 36px;
    padding: 0 28px 0 10px;
    border: 1px solid var(--u-border);
    border-radius: 8px;
    font-size: 0.8125rem;
    background: var(--u-bg-card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath fill='%236B6660' d='M5 7L0 2h10z'/%3E%3C/svg%3E") no-repeat right 8px center;
    -webkit-appearance: none;
    appearance: none;
}

/* ── 위험도 표시 ── */
.risk-level {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.8125rem;
    font-weight: 600;
}
.risk-dot.high { background: var(--u-safety-text); }
.risk-dot.medium { background: var(--u-warning); }
.risk-dot.low { background: var(--u-success-strong); }
.score-selector .score-btn.selected {
    border-color: var(--u-accent);
    background: var(--u-accent);
    color: var(--u-on-accent);
}
.risk-result.high { background: var(--u-safety-soft); color: var(--u-safety-text); border: 2px solid var(--u-safety-soft); }
.risk-result.medium { background: var(--u-warning-soft); color: var(--u-warning-strong); border: 2px solid var(--u-warning); }
.risk-result.low { background: var(--u-success-soft); color: var(--u-success-strong); border: 2px solid var(--u-success-soft); }
.type-selector .type-btn.selected {
    border-color: var(--u-accent);
    background: var(--u-accent-soft);
    color: var(--u-accent);
}

/* 테이블은 u-table 단일화 (user_components.css). 옛 .data-table 정의 제거 (2026-05-12). */

/* ── 서명 영역 ── */
.signature-area {
    border: 2px dashed var(--u-border);
    border-radius: 12px;
    padding: 16px;
    margin: 12px 0;
    text-align: center;
}
.signature-area.safety {
    border-color: var(--u-accent);
}
.signature-area.rep {
    border-color: var(--u-rep);
}
.signature-area.worker {
    border-color: var(--u-success);
}

/* ── 체크 리스트 ── */
.check-list .check-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 0;
    border-bottom: 1px solid var(--u-bg);
}
.check-list .check-item:last-child { border-bottom: none; }
.check-list .check-item input[type="checkbox"] {
    width: 20px; height: 20px;
    margin-top: 2px;
    flex-shrink: 0;
    accent-color: var(--u-accent);
}
.opinion-type-selector .type-card.selected {
    border-color: var(--u-accent);
    background: var(--u-accent-soft);
}
/* 등급 버튼은 common/u_components.css 의 .rv-risk-seg* 단일 정본 (2026-07-29).
   여기 있던 .grade-selector .grade-btn · .grade-btn 두 벌은 소비처 0 이라 제거. */

/* 인라인 버튼은 u-btn-sm / u-btn-outline / u-btn-danger 단일화 (user_components.css). 옛 .btn-sm/.btn-outline/.btn-danger 정의 제거 (2026-05-12). */

/* 빈 상태는 .u-empty 단일 컴포넌트 사용 (user_components.css L475). 옛 .empty-state 정의 제거 (2026-05-12). */

/* ── 사진 업로드 ── */
.photo-upload {
    display: flex;
    gap: 8px;
    margin: 8px 0;
}
.photo-upload .photo-btn {
    width: 80px; height: 80px;
    border: 2px dashed var(--u-border);
    border-radius: 10px;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    font-size: 0.75rem; color: var(--u-ink-muted);
    cursor: pointer; background: var(--u-bg-gray);
}
.photo-upload .photo-btn .photo-icon {
    font-size: 1.5rem;
    margin-bottom: 4px;
}
.photo-upload .photo-preview {
    width: 80px; height: 80px;
    border-radius: 10px;
    background: var(--u-border);
    position: relative;
}

/* ── 법적 체크 카드 ── */
.legal-check {
    padding: 10px 0;
    border-bottom: 1px solid var(--u-bg);
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 0.875rem;
}
.legal-check:last-child { border-bottom: none; }
.legal-check .legal-name { color: var(--u-ink); }
.legal-check .legal-status { font-weight: 600; }
.sub-tabs .sub-tab.active {
    color: var(--u-accent);
    border-bottom-color: var(--u-accent);
}

/* 역할별 테마 클래스(.theme-safety/mgr/worker/rep)는 운영 JSP 사용 0건 — 폐기된 rn_assess/rn_report 옛 목업에만 잔재. 정의 제거 (2026-05-12). */

/* ── 유틸리티 ── */
.mt-8 { margin-top: 8px; }
.mt-12 { margin-top: 12px; }
.mt-16 { margin-top: 16px; }
.mb-8 { margin-bottom: 8px; }
.mb-16 { margin-bottom: 16px; }
.mb-24 { margin-bottom: 24px; }
.text-center { text-align: center; }
.text-sm { font-size: 0.8125rem; }
.text-gray { color: var(--u-ink-muted); }
.text-red { color: var(--u-danger); }
.text-blue { color: var(--u-info-strong); }
.text-green { color: var(--u-success); }
.fw-600 { font-weight: 600; }
.fw-700 { font-weight: 700; }
.flex { display: flex; }
.flex-between { display: flex; justify-content: space-between; align-items: center; }
.gap-8 { gap: 8px; }
.gap-12 { gap: 12px; }
.popup-overlay.active {
    display: block;
}
.marker-dot.accent { background: var(--u-accent); }
.marker-diamond.mgr { background: var(--u-info-strong); }
.marker-sm.ink-light { background: var(--u-ink-light); }
.date-detail.show { display: block; }
.detail-card.report-card {
    border-color: var(--u-info-strong);
}
.detail-card.report-card .dc-title {
    color: var(--u-info-strong);
}

/* .no-record = common/utilities.css 단일 출처(2026-07-21, 동일 중복 제거) */
.greeting-card.worker {
    background: linear-gradient(135deg, var(--u-success-soft), var(--u-bg-card));
    border: 1px solid var(--u-success-soft);
}
.greeting-card.rep {
    background: linear-gradient(135deg, var(--u-rep-soft), var(--u-bg-card));
    border: 1px solid var(--u-rep-soft);
}

/* TBM 카드는 rn_safe_mgr/tbm_form.jsp 의 페이지 전용 CSS 에서 정의 (assess-card 톤).
   여기에 있던 .tbm-card / .tc-bell / .tc-tasks / .tc-hazards / .tc-link / .tc-arrow 정의는
   사용처 없는 죽은 코드였고{
    padding: 20px;
    border-radius: 12px;
    background: var(--u-bg-card);
    border: 1px solid var(--u-border);
    text-align: center;
    font-size: 0.8125rem; color: var(--u-ink-light);
}

/* 결과주지 위험 카드 */
.risk-item {
    display: flex; align-items: flex-start; gap: 12px;
    padding: 14px;
    border-radius: 12px;
    background: var(--u-bg-card);
    border: 1px solid var(--u-border);
    margin-bottom: 8px;
}
.risk-item.level-very-high { border-color: var(--u-danger-a20); }
.risk-item.level-high { border-color: var(--u-safety-text-a20); }
.risk-item .ri-dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
    margin-top: 5px;
}
.ri-dot.high { background: var(--u-safety-text); }
.ri-dot.medium { background: var(--u-warning); }
.ri-dot.low { background: var(--u-success-strong); }
.risk-item .ri-hazard {
    font-size: 0.875rem; font-weight: 600; color: var(--u-ink);
}
.risk-item .ri-measure {
    font-size: 0.75rem; color: var(--u-ink-light); margin-top: 3px;
}
.shortcut-card.warn { border-color: var(--u-warning); background: var(--u-warning-soft); }
@keyframes pulse-dot {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.4; }
}
.sp-step.done {
    background: var(--u-success-soft); border: 1px solid var(--u-success-soft); color: var(--u-success);
}
.sp-step.pending {
    background: var(--u-bg); border: 1px solid var(--u-border); color: var(--u-ink-muted);
}

/* ========================================
   슬라이드업 애니메이션 (공통)
   ======================================== */
@keyframes slideUp {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}
.app-body.animate > * { animation: slideUp 0.3s ease-out both; }
.app-body.animate > *:nth-child(2) { animation-delay: 0.05s; }
.app-body.animate > *:nth-child(3) { animation-delay: 0.1s; }
.app-body.animate > *:nth-child(4) { animation-delay: 0.15s; }
.app-body.animate > *:nth-child(5) { animation-delay: 0.2s; }
.app-body.animate > *:nth-child(6) { animation-delay: 0.25s; }

/* 평가 카드 내부 레이아웃 */
.assess-card { cursor: pointer; }
.assess-card .card-top { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px; }
.assess-card .card-top .left-info .date { font-size: 0.75rem; color: var(--u-ink-muted); margin-bottom: 2px; }
.assess-card .card-top .left-info .name { font-size: 0.9375rem; font-weight: 700; color: var(--u-ink); }
.assess-card .card-top .left-info .category { font-size: 0.75rem; color: var(--u-ink-light); margin-top: 2px; }
.assess-card .card-top .right-info { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.assess-card .card-bottom { display: flex; justify-content: space-between; align-items: center; }
.assess-card .card-bottom .risk-count { font-size: 0.75rem; color: var(--u-ink-muted); }
.assess-card .card-bottom .report-included { font-size: 0.75rem; color: var(--u-accent); font-weight: 600; }
.assess-card .card-bottom .report-none { font-size: 0.75rem; color: var(--u-border-strong); }
.industry-grid .ind-btn.selected {
    border-color: var(--u-accent); background: var(--u-accent-soft); color: var(--u-accent);
} .cause-card.selected {
    border-color: var(--u-accent); background: var(--u-accent-soft);
}
.cause-card .c-name { font-size: 0.875rem; font-weight: 600; color: var(--u-ink); }
.cause-card .c-arrow { color: var(--u-ink-light); font-size: 0.875rem; }
.eval-method-tabs .m-tab {
    flex: 1; padding: 10px 0; border: 1.5px solid var(--u-border); border-radius: 10px;
    background: var(--u-bg-card); font-size: 0.8125rem; font-weight: 600;
    color: var(--u-ink-light); cursor: pointer; text-align: center;
}
.eval-method-tabs .m-tab.selected {
    border-color: var(--u-accent); background: var(--u-accent-soft); color: var(--u-accent);
}
.risk-block .hint { font-size: 0.6875rem; color: var(--u-ink-muted); margin-top: 4px; }
@keyframes popIn { 0%{transform:scale(0)} 60%{transform:scale(1.15)} 100%{transform:scale(1)} }

/* ========================================
   평가 상세 (assessment_view)
   ======================================== */

.info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.info-item .info-label { font-size: 0.75rem; color: var(--u-ink-light); margin-bottom: 2px; }
.info-item .info-value { font-size: 0.875rem; font-weight: 600; color: var(--u-ink); }
.hazard-detail-row .d-label { color: var(--u-ink-light); }
.hazard-detail-row .d-value { color: var(--u-ink); font-weight: 600; }
.status-done { color: var(--u-success); }
.bottom-actions .btn { flex: 1; height: 48px; }
.confirm-overlay.show { display: flex; }
.confirm-box .c-title { font-size: 1rem; font-weight: 700; color: var(--u-ink); margin-bottom: 8px; }
.report-list-card .card-top .r-status { font-size: 0.75rem; font-weight: 600; }
.sign-indicators .sign-dot.done {
    border-color: var(--u-success); background: var(--u-success-soft); color: var(--u-success);
}
.form-label {
    display: block;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--u-ink-light);
    margin-bottom: 6px;
}
.complete-overlay.active { display: block; }
.mode-near-miss.active { display: block; }
.mode-opinion.active { display: block; }
.task-item .dot {
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--u-accent);
    flex-shrink: 0;
}
.health-btn.ok.selected {
    border-color: var(--u-success);
    background: var(--u-success-soft);
    color: var(--u-success);
}
.health-btn.issue.selected {
    border-color: var(--u-danger);
    background: var(--u-safety-soft);
    color: var(--u-danger);
}
.health-note.show { display: block; }
.sign-hint.hidden { display: none; }
.complete-screen.active { display: block; }
.detail-screen.hidden { display: none; }
.mb-4 { margin-bottom: 4px; }

/* ========================================
   사이드 메뉴 (햄버거)
   ======================================== */

/* 햄버거 버튼·막대 = safe_layout.css `.u-mgr-header .hamburger-btn` 한 벌(버튼은 그 머리 안에만 있다). */
.side-overlay.open { display: block; }
.side-panel.open { right: 0; }
