/* Study2Play 운영 관리자 Web — 관리자 고유 스타일(W5, docs/45 §3.2 A-01~A-09).
   공통 뼈대·버튼·입력·카드·표·배지·탭·지표·다이얼로그는 /web/design-system/components.css 가 그린다.
   이 파일은 토큰(--s2p-*)만 쓴다. 색 코드를 직접 쓰지 않는다(docs/45 D-01).
   뷰는 S2P.shell 의 .s2p-main__inner 안 #views.adm 에 그린다. */

/* ===== 바탕 ===== */
body { margin: 0; background: var(--s2p-color-bg); color: var(--s2p-color-text); font-size: var(--s2p-text-body); line-height: var(--s2p-leading-body); }
[hidden] { display: none !important; }
.adm, .adm * { box-sizing: border-box; }
.adm a:not(.s2p-btn):not(.s2p-tab) { color: var(--s2p-color-link); }
.adm :focus-visible { outline: var(--s2p-focus-ring-width) solid var(--s2p-focus-ring-color); outline-offset: var(--s2p-focus-ring-offset); }
.adm code { font-family: ui-monospace, Consolas, monospace; font-size: 0.92em; }
.adm p { margin: 0; }
.adm h2, .adm h3, .adm h4, .adm h5 { line-height: var(--s2p-leading-tight); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* ===== 화면 머리: 제목은 상단바 h1 하나. 본문은 도움말·주 행동만 ===== */
.adm .s2p-page-head { align-items: center; margin-bottom: var(--s2p-space-4); }
.adm .s2p-page-head:empty { display: none; }

/* ===== 카드: 카드 하나 = 결정 하나 ===== */
.adm .card {
  background: var(--s2p-color-surface);
  border: 1px solid var(--s2p-color-border-subtle);
  border-radius: var(--s2p-radius);
  box-shadow: var(--s2p-shadow-sm);
  padding: var(--s2p-space-5);
  margin-bottom: var(--s2p-space-5);
  min-width: 0;
}
.adm .card.narrow { max-width: 520px; margin: var(--s2p-space-8) auto; }
.adm .card > h2:first-child, .adm .card > h3:first-child, .adm .card-head { margin-top: 0; }
.adm h2 { font-size: var(--s2p-text-title-sm); font-weight: var(--s2p-weight-bold); margin: 0 0 var(--s2p-space-2); }
.adm h3 { font-size: var(--s2p-text-body-lg); font-weight: var(--s2p-weight-bold); margin: var(--s2p-space-5) 0 var(--s2p-space-2); color: var(--s2p-color-text); }
.adm .section-title { font-size: var(--s2p-text-body-lg); font-weight: var(--s2p-weight-bold); margin: var(--s2p-space-6) 0 var(--s2p-space-3); }
.adm .section-title:first-child { margin-top: 0; }
.adm .card-head, .adm .detail-head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: var(--s2p-space-3); margin-bottom: var(--s2p-space-3); }
.adm .card-head h2, .adm .detail-head h2 { margin: 0; }
.adm .desc { font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); margin-top: var(--s2p-space-1); }
.adm .muted { color: var(--s2p-color-text-muted); font-size: var(--s2p-text-caption); }
.adm .mt { margin-top: var(--s2p-space-4); }

/* ===== 도움말 "?" (A-09): 긴 안내문은 제목 옆에서 접는다(.s2p-help, components.css). 여기는 놓는 자리의 여백만 ===== */
.adm .s2p-help { margin: var(--s2p-space-1) 0 var(--s2p-space-3); }
.adm .s2p-page-head .s2p-help { margin: 0; }

/* ===== 입력: 토큰 테두리(입력 경계 4.76:1) ===== */
.adm label { font-size: var(--s2p-text-caption); font-weight: var(--s2p-weight-semibold); color: var(--s2p-color-text); }
.adm :where(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), select, textarea) {
  display: block; width: 100%;
  min-height: var(--s2p-control-height);
  padding: var(--s2p-space-2) var(--s2p-space-3);
  border: 1px solid var(--s2p-color-border-input);
  border-radius: var(--s2p-radius-sm);
  background: var(--s2p-color-surface);
  color: var(--s2p-color-text);
  font: inherit; font-size: var(--s2p-text-body);
}
.adm :where(input, select, textarea):focus-visible { outline: var(--s2p-focus-ring-width) solid var(--s2p-focus-ring-color); outline-offset: 1px; border-color: var(--s2p-color-primary); }
.adm :where(input, select, textarea):disabled { background: var(--s2p-color-surface-muted); color: var(--s2p-color-text-muted); cursor: not-allowed; }
.adm :where(input, select, textarea)[aria-invalid="true"] { border-color: var(--s2p-color-danger); }
.adm textarea { resize: vertical; }
.adm input[type="checkbox"], .adm input[type="radio"] { width: 16px; height: 16px; accent-color: var(--s2p-color-primary); }
.adm input[type="file"] { font: inherit; font-size: var(--s2p-text-body); max-width: 100%; }
.adm input::placeholder, .adm textarea::placeholder { color: var(--s2p-color-text-subtle); }
.adm .form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr)); gap: var(--s2p-space-3) var(--s2p-space-4); margin-bottom: var(--s2p-space-3); }
.adm .filter-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(160px, 100%), 1fr)); gap: var(--s2p-space-3) var(--s2p-space-4); margin-bottom: var(--s2p-space-2); }
.adm .form-group { display: flex; flex-direction: column; gap: var(--s2p-space-1); min-width: 0; }
.adm .form-group.full { grid-column: 1 / -1; }
.adm .field-label { font-size: var(--s2p-text-caption); font-weight: var(--s2p-weight-semibold); }
.adm .check-line, .adm .check-row label, .adm label.check-inline { display: inline-flex; gap: var(--s2p-space-2); align-items: center; font-size: var(--s2p-text-body); font-weight: var(--s2p-weight-regular); }
.adm .check-row { display: flex; flex-wrap: wrap; gap: var(--s2p-space-2) var(--s2p-space-4); }
.adm .ai-batch-settings label.check-inline { align-items: flex-start; }
.adm .btn-row { display: flex; flex-wrap: wrap; gap: var(--s2p-space-2); margin-top: var(--s2p-space-3); align-items: center; }
.adm .btn-row > label { display: inline-flex; gap: var(--s2p-space-2); align-items: center; font-weight: var(--s2p-weight-regular); font-size: var(--s2p-text-body); }

/* 링크처럼 보이는 버튼 */
.adm .s2p-btn.adm-linklike { border-color: transparent; background: transparent; color: var(--s2p-color-link); text-decoration: underline; padding: 0 var(--s2p-space-1); min-height: 0; }

/* ===== 상태 메시지: 글자 + 배경 토큰(색만으로 전달하지 않는다 — 문장이 상태를 말한다) ===== */
.adm .status-msg, .adm .output-status {
  margin-top: var(--s2p-space-3); padding: var(--s2p-space-2) var(--s2p-space-3);
  border-radius: var(--s2p-radius-sm); border: 1px solid var(--s2p-color-border-subtle);
  background: var(--s2p-color-surface-muted); color: var(--s2p-color-neutral-text);
  font-size: var(--s2p-text-caption); font-weight: var(--s2p-weight-semibold);
}
.adm [data-state="loading"].status-msg, .adm [data-state="loading"].output-status { background: var(--s2p-color-info-light); color: var(--s2p-color-info-text); border-color: transparent; }
.adm [data-state="success"].status-msg, .adm [data-state="success"].output-status { background: var(--s2p-color-success-light); color: var(--s2p-color-success-strong); border-color: transparent; }
.adm [data-state="error"].status-msg, .adm [data-state="error"].output-status { background: var(--s2p-color-danger-light); color: var(--s2p-color-danger-text); border-color: transparent; }
.adm .note-box {
  margin-bottom: var(--s2p-space-3); padding: var(--s2p-space-3) var(--s2p-space-4);
  border: 1px solid var(--s2p-color-warning); border-left-width: 4px; border-radius: var(--s2p-radius-sm);
  background: var(--s2p-color-warning-light); color: var(--s2p-color-warning-text); font-size: var(--s2p-text-caption);
}
.adm .result-line { font-weight: var(--s2p-weight-bold); color: var(--s2p-color-success-text); margin-bottom: var(--s2p-space-2); }

/* ===== 칩(상태 필터)·문서 탭: 공통 .s2p-chips/.s2p-chip(aria-pressed)과 .s2p-tab(aria-pressed·aria-current)을 쓴다. 간격만 이 화면 몫 ===== */
.adm .s2p-chips { margin: var(--s2p-space-2) 0 var(--s2p-space-3); }
.adm [role="tabpanel"] { min-width: 0; }

/* ===== 표(.queue-table): 행은 DOM 으로 table 에 바로 붙는다(tbody 없음) ===== */
.adm .queue-table {
  display: block; width: 100%; max-width: 100%; overflow-x: auto;
  margin-top: var(--s2p-space-3); border-collapse: collapse;
  font-size: var(--s2p-text-caption);
  background: var(--s2p-color-surface);
  border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm);
}
.adm .queue-table caption { text-align: left; font-weight: var(--s2p-weight-semibold); padding: var(--s2p-space-2) var(--s2p-space-3); color: var(--s2p-color-text); }
:where(.adm .queue-table) :where(th, td) { /* 특이성 0: 펼침 행 등 공통 컴포넌트(.s2p-table__more)가 덮을 수 있게 */
  padding: var(--s2p-space-2) var(--s2p-space-3); text-align: left; vertical-align: top;
  border-bottom: 1px solid var(--s2p-color-border-subtle);
  white-space: nowrap;
}
.adm .queue-table th { background: var(--s2p-color-surface-muted); color: var(--s2p-color-text-muted); font-weight: var(--s2p-weight-semibold); }
.adm .queue-table tr:hover > td { background: var(--s2p-color-surface-muted); }
.adm .queue-table tr.selected > td { background: var(--s2p-color-primary-light); }
.adm .queue-table td.num, .adm .queue-table th.num, .adm .coverage-num { text-align: right; font-variant-numeric: tabular-nums; }
.adm .queue-table input[type="checkbox"] { width: 16px; height: 16px; }
.adm .queue-table td.overdue, .adm .rate-low { color: var(--s2p-color-danger-text); font-weight: var(--s2p-weight-bold); }
.adm .row-actions { display: flex; flex-wrap: wrap; gap: var(--s2p-space-2); align-items: center; }
.adm .stem-cell, .adm .status-cell, .adm .expertise-list { display: flex; flex-direction: column; gap: 3px; white-space: normal; min-width: 120px; }
.adm .stem-cell.wide { min-width: 220px; max-width: 360px; }
.adm .status-cell.compact { min-width: 0; }
.adm .status-cell.author-cell { min-width: 9em; }
.adm .author-cell .author-nick { white-space: nowrap; }
.adm .expertise-line { display: flex; flex-wrap: wrap; gap: var(--s2p-space-2); align-items: center; }
.adm .note-text { white-space: pre-wrap; overflow-wrap: anywhere; font-size: var(--s2p-text-caption-sm); }
.adm .rate-note { font-size: var(--s2p-text-caption-sm); color: var(--s2p-color-text-muted); display: block; }
.adm .bulk-bar { display: flex; flex-wrap: wrap; gap: var(--s2p-space-2); align-items: center; margin-top: var(--s2p-space-3); }
.adm .bulk-count { font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); }
.adm .pager { display: flex; gap: var(--s2p-space-2); align-items: center; margin-top: var(--s2p-space-3); }

/* ===== 배지(글자로 상태를 말한다) ===== */
.adm .badge, .adm .type-badge, .adm .std-badge, .adm .state-badge, .adm .perm-badge, .adm .signal-badge, .adm .author-badge {
  display: inline-flex; align-items: center; width: fit-content;
  padding: 1px var(--s2p-space-2); border-radius: var(--s2p-radius-pill);
  font-size: var(--s2p-text-caption-sm); font-weight: var(--s2p-weight-semibold); white-space: nowrap; line-height: 1.6;
  background: var(--s2p-color-neutral-light); color: var(--s2p-color-neutral-text);
}
.adm .type-badge, .adm .author-badge { background: var(--s2p-color-info-light); color: var(--s2p-color-info-text); }
.adm .std-badge, .adm .state-badge, .adm .perm-badge { background: var(--s2p-color-success-light); color: var(--s2p-color-success-strong); }
.adm .state-badge.off, .adm .signal-badge.signal-reports, .adm .signal-badge.signal-low-correct-rate, .adm .signal-badge.signal-wrong-choice-dominant { background: var(--s2p-color-danger-light); color: var(--s2p-color-danger-text); }
.adm .state-badge.wait, .adm .perm-badge.warn, .adm .signal-badge { background: var(--s2p-color-warning-light); color: var(--s2p-color-warning-text); }
.adm .perm-badge.no { background: var(--s2p-color-neutral-light); color: var(--s2p-color-neutral-text); }
.adm .perm-badges, .adm .stats-signals { display: flex; flex-wrap: wrap; gap: var(--s2p-space-1); }
.adm .perm-badges { flex-direction: column; }

/* DEC-171: report review card and recommendations. */
.adm .adm-ai-card {
  display: flex; flex-direction: column; gap: var(--s2p-space-3);
  padding: var(--s2p-space-4); margin-bottom: var(--s2p-space-4);
  border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm);
  background: var(--s2p-color-surface-muted); overflow-wrap: anywhere; min-width: 0;
}
.adm .adm-ai-card[hidden] { display: none; }
.adm .adm-ai-card p { margin: 0; }
.adm .adm-ai-settings { display: flex; flex-direction: column; gap: var(--s2p-space-2); min-width: 0; }
.adm .adm-ai-settings label { display: flex; align-items: flex-start; gap: var(--s2p-space-2); }
.adm .adm-ai-settings input[type="checkbox"] { flex: 0 0 auto; width: auto; margin-top: var(--s2p-space-1); }
.adm .adm-ai-settings > button { align-self: flex-start; }
.adm .signal-badge.ai-valid { background: var(--s2p-color-danger-light); color: var(--s2p-color-danger-text); }
.adm .signal-badge.ai-invalid { background: var(--s2p-color-success-light); color: var(--s2p-color-success-strong); }
.adm .signal-badge.ai-unsure { background: var(--s2p-color-warning-light); color: var(--s2p-color-warning-text); }
.adm .report-ai-review { min-width: 180px; max-width: 360px; white-space: normal; overflow-wrap: anywhere; }
.adm #reportTable .stem-cell { max-width: 280px; overflow-wrap: anywhere; }

/* ===== 대시보드(A-02): 처리할 일 / 현황 ===== */
.adm .s2p-stats { margin-bottom: var(--s2p-space-2); }
.adm .s2p-stat { position: relative; }
.adm .s2p-stat .tile-count { display: block; }
.adm .tile-lines { display: flex; flex-direction: column; gap: 2px; font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); }
.adm .coverage-zero { background: var(--s2p-color-danger-light); color: var(--s2p-color-danger-text); font-weight: var(--s2p-weight-bold); }
.adm .s2p-table-wrap { overflow-x: auto; max-width: 100%; border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); }

/* ===== 문항 편집기: 좌 폼 / 우 미리보기 2열(A-04) ===== */
.adm .editor-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--s2p-space-5); align-items: start; }
.adm .choice-row { display: grid; grid-template-columns: auto 2em minmax(0, 1fr) auto; gap: var(--s2p-space-2); align-items: start; margin-bottom: var(--s2p-space-2); }
.adm .choice-no { font-weight: var(--s2p-weight-bold); color: var(--s2p-color-text-muted); }
/* DEC-173: a choice is a rich field (box + [수식] bar), so the radio, the number and [삭제] line up with its first line */
.adm .choice-row > input[type="radio"] { margin: calc((var(--s2p-control-height) - 16px) / 2) 0 0; }
.adm .choice-row > .choice-no { line-height: var(--s2p-control-height); }
.adm .choice-row > [data-act="removeChoice"] { margin-top: calc((var(--s2p-control-height) - 32px) / 2); }
.adm .accepted-row { display: grid; grid-template-columns: 2em minmax(0, 1fr) auto; gap: var(--s2p-space-2); align-items: center; margin-bottom: var(--s2p-space-2); }
.adm .ox-pick { display: flex; gap: var(--s2p-space-3); flex-wrap: wrap; }
.adm .ox-pick label { display: inline-flex; gap: var(--s2p-space-2); align-items: center; font-size: var(--s2p-text-body-lg); font-weight: var(--s2p-weight-bold); padding: var(--s2p-space-2) var(--s2p-space-4); border: 1px solid var(--s2p-color-border-input); border-radius: var(--s2p-radius-sm); background: var(--s2p-color-surface); cursor: pointer; }

/* ===== 미리보기(흰 시험지, 진한 글자 — docs/45 §3.0-7 대비 수정) ===== */
.adm .preview-card, .adm .block-preview {
  background: var(--s2p-color-surface); color: var(--s2p-color-text);
  border: 1px solid var(--s2p-color-border); border-radius: var(--s2p-radius-sm);
  padding: var(--s2p-space-4); font-size: var(--s2p-text-body-lg); line-height: 1.7;
}
.adm .preview-card { position: sticky; top: calc(var(--s2p-topbar-height) + var(--s2p-space-4)); }
.adm .block-preview { margin-top: var(--s2p-space-4); }
.adm .preview-card h4, .adm .block-preview h4 { font-size: var(--s2p-text-body); margin: 0 0 var(--s2p-space-2); color: var(--s2p-color-text); }
.adm .preview-card h5, .adm .block-preview h5 { font-size: var(--s2p-text-caption); margin: var(--s2p-space-3) 0 var(--s2p-space-1); color: var(--s2p-color-text-muted); }
.adm .preview-card .muted-ink { font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); }
.adm .preview-stem { white-space: pre-wrap; margin: var(--s2p-space-2) 0; }
.adm .block-preview p { margin: var(--s2p-space-2) 0; }
.adm .block-preview .block-math { margin: var(--s2p-space-2) 0; }
.adm .block-preview .block-inline-math, .adm .block-preview .block-figure-img { max-width: 100%; }
.adm .block-preview .block-figure { margin: var(--s2p-space-3) 0; }
.adm .block-preview .block-figure figcaption { font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); margin-top: var(--s2p-space-1); }
.adm .block-preview table { border-collapse: collapse; margin: var(--s2p-space-3) 0; }
.adm .block-preview th, .adm .block-preview td { border: 1px solid var(--s2p-color-border-input); padding: 5px 9px; text-align: left; }
.adm .block-preview th { background: var(--s2p-color-surface-muted); }
.adm .block-preview .block-box { border: 1px solid var(--s2p-color-border-input); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-2) var(--s2p-space-3); margin: var(--s2p-space-3) 0; }
.adm .block-preview .block-box-label { font-weight: var(--s2p-weight-bold); color: var(--s2p-color-text-muted); margin-bottom: var(--s2p-space-1); }
.adm .block-preview .block-list { list-style: none; margin: var(--s2p-space-2) 0; padding-left: 1.4em; }
.adm .block-preview .block-list li { margin: 3px 0; }
.adm .block-preview .block-list-marker { color: var(--s2p-color-link); font-weight: var(--s2p-weight-semibold); }
.adm .block-preview .block-blank { display: inline-block; min-width: 2.5em; border-bottom: 1px solid currentColor; }
.adm .block-preview .mark-bold { font-weight: var(--s2p-weight-bold); }
.adm .block-preview .mark-underline { text-decoration: underline; text-underline-offset: 3px; }
.adm .block-preview .mark-italic { font-style: italic; }
.adm .block-choice { display: flex; gap: var(--s2p-space-2); margin: var(--s2p-space-2) 0; }
.adm .block-choice-no { min-width: 1.4em; font-weight: var(--s2p-weight-semibold); }
.adm .block-choice-body { flex: 1; min-width: 0; }
.adm .block-choice.correct .block-choice-no { color: var(--s2p-color-success-text); }
.adm .stats-key { display: inline-flex; align-items: center; gap: 2px; }
.adm .correct-mark { display: inline-flex; align-items: center; gap: 2px; margin-left: var(--s2p-space-2); padding: 1px 7px; border-radius: var(--s2p-radius-pill); background: var(--s2p-color-success-light); color: var(--s2p-color-success-strong); font-size: var(--s2p-text-caption-sm); font-weight: var(--s2p-weight-bold); }
.adm .block-rationale { margin: var(--s2p-space-1) 0; color: var(--s2p-color-text-muted); }

/* ===== 검토(DEC-096) ===== */
.adm .review-meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(160px, 100%), 1fr)); gap: var(--s2p-space-2) var(--s2p-space-4); margin-bottom: var(--s2p-space-3); }
.adm .review-meta-item { font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); }
.adm .review-meta-item.wide { grid-column: 1 / -1; }
.adm .review-meta-item span { font-weight: var(--s2p-weight-semibold); margin-right: var(--s2p-space-1); }
.adm .review-meta-item strong { font-weight: var(--s2p-weight-regular); color: var(--s2p-color-text); word-break: break-all; }
.adm .approval-banner { border: 1px solid var(--s2p-color-primary); border-left-width: 4px; background: var(--s2p-color-info-light); color: var(--s2p-color-info-text); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-2) var(--s2p-space-3); margin: var(--s2p-space-3) 0; font-size: var(--s2p-text-caption); }
.adm .approval-banner.teacher-pair { border-color: var(--s2p-color-warning); background: var(--s2p-color-warning-light); color: var(--s2p-color-warning-text); }
.adm .returned-banner { border-color: var(--s2p-color-danger); background: var(--s2p-color-danger-light); color: var(--s2p-color-danger-text); }
.adm .approval-approved { margin-top: var(--s2p-space-1); font-size: var(--s2p-text-caption); color: var(--s2p-color-success-strong); }
.adm .review-note { font-size: var(--s2p-text-caption); color: var(--s2p-color-warning-text); background: var(--s2p-color-warning-light); border: 1px solid var(--s2p-color-warning); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-2) var(--s2p-space-3); margin: var(--s2p-space-2) 0; }
.adm mark.evidence-mark { background: var(--s2p-color-warning-light); color: inherit; padding: 0 1px; border-radius: 2px; box-shadow: inset 0 -2px 0 var(--s2p-color-warning); }
.adm .review-actions { border-top: 1px solid var(--s2p-color-border); margin-top: var(--s2p-space-4); padding-top: var(--s2p-space-3); display: flex; flex-wrap: wrap; gap: var(--s2p-space-3); align-items: center; }
.adm .review-actions label { display: inline-flex; gap: var(--s2p-space-2); align-items: center; font-size: var(--s2p-text-caption); font-weight: var(--s2p-weight-regular); }
.adm .review-evidence label { display: inline-flex; gap: var(--s2p-space-2); align-items: center; font-weight: var(--s2p-weight-regular); }

/* ===== 정보 칸·상세 ===== */
.adm .info-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr)); gap: var(--s2p-space-2) var(--s2p-space-4); margin: var(--s2p-space-3) 0 var(--s2p-space-1); }
.adm .info-item { display: flex; flex-direction: column; gap: 2px; font-size: var(--s2p-text-caption); min-width: 0; }
.adm .info-item span { font-size: var(--s2p-text-caption-sm); font-weight: var(--s2p-weight-semibold); color: var(--s2p-color-text-muted); }
.adm .info-item strong { font-weight: var(--s2p-weight-semibold); word-break: break-all; }
.adm .family-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr)); gap: var(--s2p-space-3); margin-top: var(--s2p-space-3); }
.adm .family-card { background: var(--s2p-color-surface-muted); border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-3) var(--s2p-space-4); min-width: 0; }
.adm .family-card ul { list-style: none; margin: var(--s2p-space-2) 0 0; padding: 0; font-size: var(--s2p-text-caption); }
.adm .family-card li { margin: 2px 0; }
.adm .family-head { display: flex; justify-content: space-between; align-items: center; gap: var(--s2p-space-2); margin-bottom: var(--s2p-space-2); }
.adm .id-line { display: flex; gap: var(--s2p-space-2); align-items: center; margin-bottom: var(--s2p-space-2); flex-wrap: wrap; }
.adm .id-line code { font-size: var(--s2p-text-caption-sm); word-break: break-all; color: var(--s2p-color-text-muted); }
.adm .msg-list { display: flex; flex-direction: column; gap: var(--s2p-space-3); margin-top: var(--s2p-space-3); }
.adm .msg-item { border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-3) var(--s2p-space-4); background: var(--s2p-color-surface-muted); }
.adm .msg-item.admin { border-color: var(--s2p-color-primary); background: var(--s2p-color-primary-light); }
.adm .msg-meta { font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); margin-bottom: var(--s2p-space-1); }
.adm .msg-body { white-space: pre-wrap; word-break: break-word; }
.adm .calc-box { border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-3) var(--s2p-space-4); background: var(--s2p-color-surface-muted); margin: var(--s2p-space-2) 0; font-size: var(--s2p-text-caption); }
.adm .calc-box .formula { font-weight: var(--s2p-weight-semibold); margin-top: var(--s2p-space-2); word-break: break-word; }
.adm .issued-code { font-family: ui-monospace, Consolas, monospace; font-size: var(--s2p-text-title-sm); font-weight: var(--s2p-weight-bold); letter-spacing: 1px; }
.adm .donation-code, .adm .src-hash { font-family: ui-monospace, Consolas, monospace; }
.adm .donation-code { font-weight: var(--s2p-weight-bold); letter-spacing: 1px; }
.adm .src-hash { font-size: var(--s2p-text-caption-sm); word-break: break-all; }
.adm .src-table .src-name { white-space: normal; min-width: 160px; }
.adm .billing-family { margin-bottom: var(--s2p-space-3); }
.adm .learn-child { margin-bottom: var(--s2p-space-4); }

/* ===== 로그인·2단계 인증 ===== */
.adm .key-box { font-family: ui-monospace, Consolas, monospace; font-size: var(--s2p-text-title-sm); letter-spacing: 1px; padding: var(--s2p-space-3); border-radius: var(--s2p-radius-sm); background: var(--s2p-color-surface-muted); border: 1px dashed var(--s2p-color-primary); word-break: break-all; margin: var(--s2p-space-2) 0; }
.adm .recovery-list { columns: 2; list-style: none; font-family: ui-monospace, Consolas, monospace; padding: var(--s2p-space-3); background: var(--s2p-color-surface-muted); border-radius: var(--s2p-radius-sm); margin: var(--s2p-space-2) 0; }
.adm .steps { margin: var(--s2p-space-3) 0 var(--s2p-space-3) var(--s2p-space-5); padding: 0; font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); }
.adm .steps li { margin: var(--s2p-space-1) 0; }
.adm .auth-brand { display: flex; align-items: center; gap: var(--s2p-space-2); margin-bottom: var(--s2p-space-4); font-weight: var(--s2p-weight-bold); color: var(--s2p-color-text-muted); }
.adm .auth-brand .s2p-icon { color: var(--s2p-color-primary); }
.adm .card.narrow > .desc { margin-bottom: var(--s2p-space-4); }
.adm .card.narrow h1 { font-size: var(--s2p-text-title); margin: 0 0 var(--s2p-space-2); line-height: var(--s2p-leading-tight); }

/* ===== 통계 신호(DEC-099)·청사진(DEC-100)·작업 카드(DEC-102)·노출(DEC-101) ===== */
.adm .stats-choices { display: flex; flex-direction: column; gap: 3px; min-width: 150px; }
.adm .stats-choice { display: flex; align-items: center; gap: 5px; font-size: var(--s2p-text-caption-sm); }
.adm .stats-choice-label { min-width: 3.2em; }
.adm .stats-bar { flex: 1; min-width: 50px; } /* 막대 모양은 공통 .s2p-progress */
.adm .stats-choice-count { min-width: 2.2em; text-align: right; }
.adm .stats-key { color: var(--s2p-color-success-text); font-weight: var(--s2p-weight-bold); white-space: nowrap; }
.adm .stats-actions { display: flex; gap: var(--s2p-space-2); }
.adm .blueprint-totals { margin: var(--s2p-space-3) 0 0; font-size: var(--s2p-text-caption); font-weight: var(--s2p-weight-semibold); }
.adm .blueprint-warnings { margin: var(--s2p-space-3) 0 0; padding-left: var(--s2p-space-5); color: var(--s2p-color-danger-text); font-size: var(--s2p-text-caption); }
.adm .blueprint-table, .adm .exposure-table { margin-top: var(--s2p-space-4); }
.adm .blueprint-cell { display: flex; flex-direction: column; gap: 2px; }
.adm .blueprint-counts { font-weight: var(--s2p-weight-bold); }
.adm .blueprint-draft, .adm .blueprint-hold { font-size: var(--s2p-text-caption-sm); color: var(--s2p-color-text-muted); }
.adm .blueprint-state { display: inline-block; margin-top: 2px; padding: 1px 6px; border-radius: var(--s2p-radius-pill); font-size: var(--s2p-text-caption-sm); font-weight: var(--s2p-weight-bold); width: fit-content; }
.adm .blueprint-diff-empty { background: var(--s2p-color-danger-light); }
.adm .blueprint-diff-short { background: var(--s2p-color-warning-light); }
.adm .blueprint-diff-met { background: var(--s2p-color-success-light); }
.adm .blueprint-state-empty { background: var(--s2p-color-danger); color: var(--s2p-color-on-primary); }
.adm .blueprint-state-short { background: var(--s2p-color-warning-light); color: var(--s2p-color-warning-text); border: 1px solid var(--s2p-color-warning); }
.adm .blueprint-state-met { background: var(--s2p-color-success-light); color: var(--s2p-color-success-strong); }
/* DEC-170: 단원 연결 현황(출제 청사진 탭) */
.adm .coverage-box { border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-3) var(--s2p-space-4); margin-top: var(--s2p-space-5); min-width: 0; }
.adm .coverage-box > summary { cursor: pointer; font-weight: var(--s2p-weight-bold); font-size: var(--s2p-text-body); }
.adm .coverage-box h3 { margin: var(--s2p-space-4) 0 0; font-size: var(--s2p-text-body); overflow-wrap: anywhere; }
.adm .coverage-table { margin-top: var(--s2p-space-3); }
.adm .coverage-table tr.coverage-warn > td { background: var(--s2p-color-warning-light); }
.adm .coverage-table tr.selected > td { background: var(--s2p-color-primary-light); }
.adm .coverage-table td.coverage-unmapped-count { color: var(--s2p-color-danger-text); font-weight: var(--s2p-weight-bold); }
.adm .coverage-table td.coverage-nocap { color: var(--s2p-color-danger-text); font-weight: var(--s2p-weight-semibold); }
.adm .coverage-unmapped-table td.coverage-stem { white-space: normal; min-width: 200px; max-width: 420px; overflow-wrap: anywhere; }
.adm .coverage-unmapped-table td.coverage-skill { overflow-wrap: anywhere; white-space: normal; max-width: 160px; }
.adm .coverage-link { display: flex; flex-wrap: wrap; gap: var(--s2p-space-2); align-items: center; min-width: 240px; white-space: normal; }
.adm .coverage-link select { flex: 1 1 220px; min-width: 0; max-width: 100%; }
.adm .coverage-link .status-msg { flex: 1 1 100%; margin: 0; }
.adm .tasks-list, .adm .ai-list { display: flex; flex-direction: column; gap: var(--s2p-space-3); margin-top: var(--s2p-space-3); }
.adm .exposure-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: var(--s2p-space-3); margin-top: var(--s2p-space-3); }
.adm .task-card, .adm .exposure-card { background: var(--s2p-color-surface); border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-3) var(--s2p-space-4); font-size: var(--s2p-text-caption); min-width: 0; }
.adm .task-card h4, .adm .exposure-card h4 { margin: 0 0 var(--s2p-space-2); font-size: var(--s2p-text-body); }
.adm .task-card p, .adm .exposure-card p { margin: 3px 0; }
.adm .task-actions { display: flex; flex-wrap: wrap; gap: var(--s2p-space-2); margin: var(--s2p-space-2) 0 var(--s2p-space-1); }
.adm .task-stems { margin-top: var(--s2p-space-2); font-size: var(--s2p-text-caption-sm); }
.adm .task-stems ul { margin: var(--s2p-space-2) 0 0; padding-left: var(--s2p-space-5); }
.adm .task-empty, .adm .exposure-empty { color: var(--s2p-color-warning-text); font-weight: var(--s2p-weight-semibold); }
.adm .exposure-warning { color: var(--s2p-color-danger-text); font-weight: var(--s2p-weight-bold); }

/* ===== 회원 통계(DEC-144) ===== */
.adm .trend-box { margin-top: var(--s2p-space-3); overflow-x: auto; }
.adm .trend-svg { display: block; max-width: 100%; height: auto; }
.adm .trend-svg .trend-grid line { stroke: var(--s2p-color-border); stroke-width: 1; }
.adm .trend-svg .trend-axis text { fill: var(--s2p-color-text-muted); font-size: 11px; }
.adm .trend-svg .trend-bar { fill: var(--s2p-color-primary); }
.adm .trend-svg .trend-bar:hover { fill: var(--s2p-color-primary-hover); }
.adm .trend-table-wrap { max-height: 300px; overflow: auto; margin-top: var(--s2p-space-2); }
.adm .share-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: var(--s2p-space-2) var(--s2p-space-5); margin-top: var(--s2p-space-2); }
.adm .share-grid .share-wide { grid-column: 1 / -1; }
.adm .share-table { margin-top: var(--s2p-space-2); }
.adm .share-table td.share-cell { min-width: 150px; }
.adm .share-bar { display: inline-block; width: 90px; margin-right: var(--s2p-space-2); vertical-align: middle; }
.adm .share-table td.share-empty { white-space: normal; color: var(--s2p-color-text-muted); }

/* ===== AI 초안(DEC-129)·출처(DEC-130)·성취기준(DEC-150) ===== */
.adm .ai-card { background: var(--s2p-color-surface); border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-4); display: flex; flex-direction: column; gap: var(--s2p-space-3); min-width: 0; }
.adm .ai-card[data-status="REGISTERED"] { border-color: var(--s2p-color-success); border-left-width: 4px; }
.adm .ai-card[data-status="DISCARDED"] { background: var(--s2p-color-surface-muted); }
.adm .ai-head { display: flex; flex-wrap: wrap; gap: var(--s2p-space-2) var(--s2p-space-3); align-items: center; font-size: var(--s2p-text-caption); }
.adm .ai-card .block-preview { margin-top: 0; overflow-x: auto; }
.adm .ai-plain { white-space: pre-wrap; }
.adm .ai-answer { font-size: var(--s2p-text-caption); font-weight: var(--s2p-weight-semibold); }
.adm .ai-checks { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s2p-space-1); font-size: var(--s2p-text-caption); }
.adm .ai-checks li { border-radius: var(--s2p-radius-sm); padding: 5px 9px; word-break: break-word; }
.adm .ai-checks li.error { background: var(--s2p-color-danger-light); color: var(--s2p-color-danger-text); }
.adm .ai-checks li.warn { background: var(--s2p-color-warning-light); color: var(--s2p-color-warning-text); }
.adm .ai-checks li.ok { background: var(--s2p-color-success-light); color: var(--s2p-color-success-strong); }
.adm .ai-verify { font-size: var(--s2p-text-caption); border: 1px solid var(--s2p-color-border); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-2) var(--s2p-space-3); display: flex; flex-direction: column; gap: 3px; word-break: break-word; }
.adm .ai-verify.agree { border-color: var(--s2p-color-success); }
.adm .ai-verify.disagree { border-color: var(--s2p-color-warning); background: var(--s2p-color-warning-light); }
.adm .ai-meta { font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); word-break: break-word; }
.adm .ai-edit { border-top: 1px dashed var(--s2p-color-border); padding-top: var(--s2p-space-3); display: flex; flex-direction: column; gap: var(--s2p-space-3); }
.adm .ai-choice-row { display: grid; grid-template-columns: auto 2em minmax(0, 1fr); gap: var(--s2p-space-2); align-items: center; margin-bottom: var(--s2p-space-2); }
.adm .ai-edit textarea { min-height: 4em; }
.adm .ai-card .status-msg { margin-top: 0; }
.adm .prov-box { border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-3) var(--s2p-space-4); margin: var(--s2p-space-4) 0 0; min-width: 0; }
.adm .prov-box legend { font-size: var(--s2p-text-caption); font-weight: var(--s2p-weight-bold); padding: 0 var(--s2p-space-2); }
.adm .prov-card { border: 1px solid var(--s2p-color-border); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-2) var(--s2p-space-3); margin: var(--s2p-space-3) 0; background: var(--s2p-color-surface-muted); color: var(--s2p-color-text); font-size: var(--s2p-text-caption); }
.adm .prov-card h5 { margin: 0 0 var(--s2p-space-2); font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); }
/* DEC-153: intake tab, source material list, author lines and the student-line preview (text states, not colour alone) */
.adm .intake-modes label { margin-top: var(--s2p-space-1); }
.adm .intake-modes p { margin: 2px 0 var(--s2p-space-2) 26px; }
.adm .intake-info { font-size: var(--s2p-text-caption); border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-2) var(--s2p-space-3); display: flex; flex-direction: column; gap: 3px; word-break: break-word; }
.adm .intake-info a, .adm .mat-url { word-break: break-all; }
.adm .src-materials { margin-top: var(--s2p-space-4); border-top: 1px solid var(--s2p-color-border-subtle); padding-top: var(--s2p-space-3); }
.adm .src-materials h3, .adm .src-materials h4 { margin: 0 0 var(--s2p-space-2); }
.adm .src-materials form { margin-top: var(--s2p-space-4); }
.adm .prov-card .prov-line { margin: var(--s2p-space-1) 0 0; font-size: var(--s2p-text-caption); }
.adm .credit-preview { border: 1px dashed var(--s2p-color-border); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-2) var(--s2p-space-3); margin-top: var(--s2p-space-3); background: var(--s2p-color-surface); }
.adm .credit-preview strong { font-size: var(--s2p-text-caption-sm); color: var(--s2p-color-text-muted); }
.adm .credit-preview .credit-line { margin: var(--s2p-space-1) 0 0; font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); }
.adm .credit-preview .credit-none { margin: var(--s2p-space-1) 0 0; font-size: var(--s2p-text-caption-sm); color: var(--s2p-color-text-muted); }
.adm .ai-standard-info { border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-2) var(--s2p-space-3); font-size: var(--s2p-text-caption); display: flex; flex-direction: column; gap: var(--s2p-space-2); word-break: break-word; }
.adm .ai-standard-info summary { cursor: pointer; font-weight: var(--s2p-weight-semibold); }
.adm .ai-standard-info details p { margin-top: var(--s2p-space-2); white-space: pre-wrap; }
.adm .ai-standard-msg[data-state="error"] { color: var(--s2p-color-danger-text); }
.adm .ai-batch { min-width: 0; }
.adm .ai-batch-fields { border: 0; padding: 0; margin: 0; min-width: 0; }
.adm .ai-batch-table td.stmt { white-space: normal; min-width: 220px; max-width: 420px; }
.adm .ai-batch-table td.skill-cell { white-space: normal; min-width: 120px; }
.adm .ai-batch-table select { width: auto; max-width: 220px; min-height: var(--s2p-control-height-sm); padding: 2px var(--s2p-space-2); font-size: var(--s2p-text-caption); }
.adm .ai-batch-plan { font-size: var(--s2p-text-caption); font-weight: var(--s2p-weight-semibold); margin-top: var(--s2p-space-3); overflow-wrap: anywhere; }
.adm .ai-batch-progress td.state { white-space: normal; min-width: 160px; }
.adm .ai-batch-summary { font-size: var(--s2p-text-caption); font-weight: var(--s2p-weight-bold); margin-top: var(--s2p-space-3); padding: var(--s2p-space-3) var(--s2p-space-4); border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); overflow-wrap: anywhere; }

/* DEC-154: [AI 일괄 생성] 탭(하루 한도·운영자 메모·성취기준 자세히)과 [교육과정] 탭. 상태는 글자로도 말한다(색만으로 전달하지 않는다). */
.adm .ai-own-values { margin-top: var(--s2p-space-2); }
.adm .ai-limit-box { border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-3) var(--s2p-space-4); margin: var(--s2p-space-4) 0; min-width: 0; }
.adm .ai-limit-line { font-size: var(--s2p-text-body); font-weight: var(--s2p-weight-bold); overflow-wrap: anywhere; }
.adm .ai-limit-form { display: flex; flex-wrap: wrap; gap: var(--s2p-space-2) var(--s2p-space-3); align-items: flex-end; margin-top: var(--s2p-space-3); }
.adm .ai-limit-form .form-group { width: 220px; max-width: 100%; }
.adm .ai-batch-settings { margin-top: var(--s2p-space-4); }
.adm .ai-batch-table details.std-more summary { cursor: pointer; font-size: var(--s2p-text-caption-sm); color: var(--s2p-color-link); }
.adm .ai-batch-table details.std-more .std-more-body { white-space: normal; display: flex; flex-direction: column; gap: var(--s2p-space-2); margin-top: var(--s2p-space-2); font-size: var(--s2p-text-caption-sm); max-width: 420px; }
.adm .ai-batch-table details.std-more p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.adm .ai-batch-table details.std-more details summary { color: var(--s2p-color-text-muted); font-weight: var(--s2p-weight-semibold); }
.adm .cur-table td.stmt, .adm .cur-table td.cur-skills-cell, .adm .cur-table td.cur-domain { white-space: normal; }
.adm .cur-table td.stmt { min-width: 240px; max-width: 460px; }
.adm .cur-table td.cur-skills-cell { min-width: 120px; max-width: 220px; }
.adm .cur-table td.cur-domain { min-width: 100px; max-width: 180px; }
.adm .cur-table tr.retired td { color: var(--s2p-color-text-muted); }
.adm .cur-table tr.cur-detail td { white-space: normal; background: var(--s2p-color-surface-muted); }
.adm .cur-detail-box { display: flex; flex-direction: column; gap: var(--s2p-space-3); font-size: var(--s2p-text-caption); max-width: 760px; min-width: 0; }
.adm .cur-detail-box p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.adm .cur-detail-box summary { cursor: pointer; font-weight: var(--s2p-weight-semibold); }
.adm .cur-edit { border-top: 1px dashed var(--s2p-color-border); padding-top: var(--s2p-space-3); display: flex; flex-direction: column; gap: var(--s2p-space-3); }
.adm .cur-edit .form-group { width: 240px; max-width: 100%; }
.adm .cur-skills { border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-2) var(--s2p-space-3); min-width: 0; }
.adm .cur-skills legend { font-size: var(--s2p-text-caption-sm); font-weight: var(--s2p-weight-semibold); padding: 0 var(--s2p-space-2); color: var(--s2p-color-text-muted); }
.adm .cur-skills .check-row { flex-direction: column; gap: var(--s2p-space-1); }
.adm .cur-skills .muted { font-size: var(--s2p-text-caption-sm); }
.adm .cur-import { border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-3) var(--s2p-space-4); margin-top: var(--s2p-space-5); min-width: 0; }
.adm .cur-import > summary { cursor: pointer; font-weight: var(--s2p-weight-bold); font-size: var(--s2p-text-body); }
.adm .cur-import h3 { margin-top: var(--s2p-space-4); font-size: var(--s2p-text-body); }
.adm .cur-samples td.cur-sample-text { white-space: pre-wrap; min-width: 240px; max-width: 520px; overflow-wrap: anywhere; }
.adm .cur-import .desc { overflow-wrap: anywhere; }
.adm .cur-apply-box { margin-top: var(--s2p-space-3); }
.adm .cur-retry-row { margin-top: var(--s2p-space-1); }

/* ===== 확인 대화상자(<dialog class="s2p-dialog">) ===== */
.s2p-dialog .form-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s2p-space-3); }
.s2p-dialog .form-group { display: flex; flex-direction: column; gap: var(--s2p-space-1); }
.s2p-dialog label { font-size: var(--s2p-text-caption); font-weight: var(--s2p-weight-semibold); }
.s2p-dialog :where(input, select, textarea) {
  display: block; width: 100%; min-height: var(--s2p-control-height);
  padding: var(--s2p-space-2) var(--s2p-space-3);
  border: 1px solid var(--s2p-color-border-input); border-radius: var(--s2p-radius-sm);
  background: var(--s2p-color-surface); color: var(--s2p-color-text); font: inherit; font-size: var(--s2p-text-body);
}
.s2p-dialog .dialog-desc { color: var(--s2p-color-text-muted); white-space: pre-line; }
.s2p-dialog .dialog-error { color: var(--s2p-color-danger-text); font-size: var(--s2p-text-caption); font-weight: var(--s2p-weight-semibold); min-height: 1.2em; margin: var(--s2p-space-2) 0 0; }

/* ===== 개발 콘솔(?dev=1 에서만) ===== */
.dev-bar { background: var(--s2p-color-warning-light); border-bottom: 1px solid var(--s2p-color-warning); padding: var(--s2p-space-2) var(--s2p-space-5); font-size: var(--s2p-text-caption); color: var(--s2p-color-warning-text); }
.dev-bar .row { display: flex; gap: var(--s2p-space-2); align-items: center; flex-wrap: wrap; }
.dev-bar input { width: 260px; max-width: 100%; padding: 3px var(--s2p-space-2); border: 1px solid var(--s2p-color-border-input); border-radius: var(--s2p-radius-sm); font: inherit; }
.dev-bar pre { margin-top: var(--s2p-space-2); max-height: 220px; overflow: auto; background: var(--s2p-color-surface); color: var(--s2p-color-text); padding: var(--s2p-space-2); font-size: var(--s2p-text-caption-sm); }

/* ===== 좁은 화면 ===== */
@media (max-width: 900px) {
  .adm .editor-grid { grid-template-columns: minmax(0, 1fr); }
  .adm .preview-card { position: static; }
}
@media (max-width: 600px) {
  .adm .card { padding: var(--s2p-space-4); }
  .adm .card.narrow { margin: var(--s2p-space-4) auto; }
  .adm .recovery-list { columns: 1; }
  .adm .choice-row { grid-template-columns: auto 1.6em minmax(0, 1fr); }
  .adm .choice-row > .s2p-btn { grid-column: 1 / -1; justify-self: end; }
  .adm .accepted-row { grid-template-columns: 2em minmax(0, 1fr); }
  .adm .accepted-row > .s2p-btn { grid-column: 1 / -1; justify-self: end; }
  .adm .share-bar { width: 44px; margin-right: 6px; }
  .adm .share-table th, .adm .share-table td { padding: 6px 5px; }
}

/* develop 2026-11-06(파일로 등록 CSV 양식) 에서 넘어온 규칙 — 토큰으로 옮김 */
.adm .block-preview .block-preview-meta { font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); margin: 0 0 var(--s2p-space-2); }
.adm .csv-guide { margin-top: var(--s2p-space-3); border: 1px solid var(--s2p-color-border); border-radius: var(--s2p-radius-sm); padding: var(--s2p-space-2) var(--s2p-space-4); font-size: var(--s2p-text-caption); min-width: 0; word-break: break-word; }
.adm .csv-guide summary { cursor: pointer; font-weight: 600; }
.adm .csv-guide ul { margin: var(--s2p-space-2) 0 var(--s2p-space-1); padding-left: 20px; }
.adm .csv-guide li { margin: var(--s2p-space-1) 0; }
/* 파일 목록: "등록 불가" 사유·발문 요약·결과는 표를 옆으로 밀지 않고 줄바꿈한다. */
.adm #blockFileTable td:nth-child(2), .adm #blockFileTable td:nth-child(9), .adm #blockFileTable td:nth-child(11) { white-space: normal; min-width: 12em; max-width: 28em; word-break: keep-all; overflow-wrap: anywhere; }

/* ===== DEC-162 문항 작성: 개정 자동 안내·작성 기본값·레이아웃 견본(모양은 /web/question-composer/composer.css) ===== */
.adm .ed-hint { margin: 2px 0 0; font-size: var(--s2p-text-caption); color: var(--s2p-color-text-muted); overflow-wrap: anywhere; }
.adm .ed-hint[data-state="error"] { color: var(--s2p-color-danger-text); font-weight: var(--s2p-weight-semibold); }
.adm .ed-hint[data-state="success"] { color: var(--s2p-color-success-text); font-weight: var(--s2p-weight-semibold); }
.adm .ed-hint[data-state="loading"] { color: var(--s2p-color-info-text); }
.adm .ed-defaults { margin: 0 0 var(--s2p-space-3); padding: var(--s2p-space-2) var(--s2p-space-3); border: 1px dashed var(--s2p-color-border); border-radius: var(--s2p-radius-sm); }
.adm .ed-defaults .btn-row { margin-top: 0; }
.adm .ed-layout { min-width: 0; }
.adm .ed-composer-parts, .adm .ed-rationales { min-width: 0; }
.adm .preview-card .qc-paper { font-size: inherit; }

/* ===== DEC-162 교육과정 새 고시 알림·갱신 방법 ===== */
.adm .cur-notice { margin: var(--s2p-space-2) 0 var(--s2p-space-3); padding: var(--s2p-space-2) var(--s2p-space-3); border: 1px solid var(--s2p-color-border-subtle); border-radius: var(--s2p-radius-sm); background: var(--s2p-color-surface-muted); }
.adm .cur-notice .btn-row { margin-top: var(--s2p-space-2); }
.adm .cur-notice__status { margin: 0; font-size: var(--s2p-text-caption); color: var(--s2p-color-neutral-text); overflow-wrap: anywhere; }
.adm .cur-notice__newer { margin: var(--s2p-space-2) 0 0; font-size: var(--s2p-text-body); font-weight: var(--s2p-weight-semibold); overflow-wrap: anywhere; }
.adm .cur-notice__newer a { color: var(--s2p-color-link); }
.adm .cur-guide { margin: var(--s2p-space-2) 0 var(--s2p-space-3); padding: var(--s2p-space-2) var(--s2p-space-3); border: 1px solid var(--s2p-color-border); border-radius: var(--s2p-radius-sm); background: var(--s2p-color-surface); min-width: 0; }
.adm .cur-guide > summary { cursor: pointer; font-weight: var(--s2p-weight-bold); color: var(--s2p-color-link); }
.adm .cur-guide__steps { margin: var(--s2p-space-2) 0 0; padding-left: 1.4em; font-size: var(--s2p-text-caption); overflow-wrap: anywhere; }
.adm .cur-guide__steps > li { margin: var(--s2p-space-2) 0; }
.adm .cur-guide__steps ul { margin: var(--s2p-space-1) 0 0; padding-left: 1.2em; }
.adm .cur-guide a { color: var(--s2p-color-link); }
