/* 헤더 계정 영역. 로그인 전에는 버튼 하나, 로그인 후에는 이름·반 표시와 로그아웃. */
.account{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:38px}
.account button{padding:7px 13px;font-size:13px}
.account .account-signin{background:var(--navy);border-color:var(--navy);color:#fff}
.account .account-signin:hover{background:#161c49;border-color:#161c49}
.account .account-switch{background:#fff;border-color:var(--line);color:var(--ink);font-weight:600}
.account-note{font-size:12px;color:var(--muted);line-height:1.4}
.account-chip{display:flex;flex-direction:column;line-height:1.3;padding:4px 12px;border:1px solid var(--line);border-radius:8px;background:#fff}
.account-chip b{font-size:13px;color:var(--ink)}
.account-chip small{font-size:11px;color:var(--muted)}
.account-warn{font-size:12px;color:#a33a2a;flex-basis:100%}
.account-sync{font-size:11px;color:var(--muted);line-height:1.3;white-space:nowrap}
.account-sync[data-sync="synced"]{color:#176c5f}
.account-sync[data-sync="error"],.account-sync[data-sync="conflict"]{color:#a33a2a}
.account-sync[data-sync="pending"],.account-sync[data-sync="syncing"]{color:#7a5b12}
.account-privacy{font-size:12px;padding:6px 10px}
.privacy-notice{margin:16px 0 0;border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px 16px}
.privacy-notice summary{cursor:pointer;font-weight:700;font-size:14px}
.privacy-notice h3{margin:12px 0 6px;font-size:15px}
.privacy-list{margin:0 0 8px;padding-left:18px}
.privacy-list li{margin:3px 0;font-size:14px}
.privacy-dialog .privacy-body{margin:0 0 12px}
.ops-filters{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:end;margin:8px 0}
.ops-filters label{margin:0;min-width:8rem}
.ops-smoke{margin-top:16px}
.ops-smoke ol{margin:8px 0 0;padding-left:18px}
.ops-smoke li{margin:4px 0;font-size:14px}
.sync-overlay{position:fixed;inset:0;z-index:40;background:#10183173;display:flex;align-items:center;justify-content:center;padding:20px}
.sync-dialog{max-width:720px;width:min(720px,100%);background:#fff;border-radius:14px;padding:22px 22px 18px;box-shadow:0 18px 40px #10183133}
.sync-dialog h2{margin:0 0 8px;font-size:20px}
.sync-dialog>p{margin:0 0 14px;color:var(--muted)}
.sync-choices{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}
.sync-choice{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--paper)}
.sync-choice h3{margin:0 0 6px;font-size:15px}
.sync-choice pre{margin:8px 0 0;max-height:140px;overflow:auto;font-size:12px;white-space:pre-wrap}
@media (max-width:900px){.account{width:100%;justify-content:flex-start}.account-note{display:none}.sync-choices{grid-template-columns:1fr}}

/* 교사용 명단 관리 화면 */
.admin-page{padding:32px max(5%,calc((100vw - 1100px)/2)) 64px}
.admin-page h1{margin:8px 0 4px}
.admin-page .lead{color:var(--muted);max-width:62ch}
.admin-card{border:1px solid var(--line);border-radius:12px;background:#fff;padding:20px;margin:20px 0}
.admin-card h2{margin:0 0 10px;font-size:19px}
.admin-card label{display:block;margin:12px 0 4px;font-size:14px;font-weight:600}
.admin-card textarea{width:100%;font-family:var(--mono);font-size:13px;padding:10px;border:1px solid var(--line);border-radius:8px}
.admin-code{display:inline-block;margin:6px 0;padding:6px 10px;border-radius:6px;background:var(--paper);font-family:var(--mono);font-size:13px}
.admin-table{overflow-x:auto;margin-top:12px}
.admin-table table{border-collapse:collapse;width:100%;font-size:13px}
.admin-table th,.admin-table td{border-bottom:1px solid var(--line);padding:6px 9px;text-align:left;white-space:nowrap}
.admin-table th{background:var(--paper);font-size:12px;color:var(--muted)}
.admin-table tr.state-new td{background:#f2fbf6}
.admin-table tr.state-update td{background:#fffaec}
.admin-table tr.state-error td{background:#fdf1ef}
.admin-table tr.state-same td{color:var(--muted)}
.admin-rows{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.admin-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:14px}

/* 교사 관리 공통 뼈대: 헤더 아래 반 선택 + 명단/보드/세션 내비게이션 */
.teacher-shell{position:sticky;top:78px;z-index:18;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 6px 16px #1724430c}
.teacher-shell-bar{padding:10px max(5%,calc((100vw - 1100px)/2));display:flex;align-items:center;justify-content:space-between;gap:16px 24px;flex-wrap:wrap}
.teacher-shell-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;min-width:0}
.teacher-shell-title{margin:0;font:700 11px var(--mono);letter-spacing:.12em;color:var(--teal);text-transform:uppercase}
.teacher-shell-nav{display:flex;gap:8px;flex-wrap:wrap}
.teacher-shell-nav a{text-decoration:none;font-size:13px;font-weight:700;padding:6px 12px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:#fff}
.teacher-shell-nav a:hover{border-color:#8c9bb6;background:#edf2fa}
.teacher-shell-nav a[aria-current="page"]{background:var(--navy);border-color:var(--navy);color:#fff}
.class-picker{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.class-picker-label{margin:0;font-size:13px;font-weight:700;white-space:nowrap}
.class-picker select{width:auto;min-width:12rem;margin:0;padding:7px 10px}
.class-picker-current{display:inline-block;padding:5px 11px;border-radius:30px;background:#e9f2ef;color:#176c5f;font-size:12px;font-weight:700;white-space:nowrap}
.teacher-context,.teacher-class-banner{margin:8px 0 18px}
.teacher-class-banner{font-size:clamp(22px,3vw,32px);letter-spacing:-.03em;line-height:1.3}
.teacher-class-banner strong{color:var(--navy)}
.teacher-placeholder{color:var(--muted)}
#presence-counts,#roster-counts,#question-totals{font-size:clamp(20px,2.6vw,28px)}
.student-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin-top:12px}
.student-card{display:flex;flex-direction:column;align-items:stretch;gap:4px;text-align:left;border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fff;width:100%}
.student-card p{margin:0;line-height:1.5}
.student-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.student-card-who{display:flex;align-items:center;gap:8px;min-width:0}
.student-card-who strong{font-size:15px;overflow-wrap:anywhere}
.student-card[data-help="1"]{border-color:#c46a2d;background:#fff8f0}
.student-card.is-selected{outline:3px solid #d79400;outline-offset:2px}
.presence-dot{width:9px;height:9px;border-radius:50%;background:#9aa7bb;flex:none}
.presence-dot.is-online{background:#176c5f}
.heatmap-legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin:8px 0 12px;font-size:12px;color:var(--muted)}
.heatmap-legend span{display:inline-flex;align-items:center;gap:6px}
.heatmap-legend span::before{content:"";width:12px;height:12px;border-radius:3px;border:1px solid #fff;box-shadow:0 0 0 1px #dce3ed}
.heatmap-legend [data-tone="done"]::before{background:#117365}
.heatmap-legend [data-tone="understood"]::before{background:#2d8a5c}
.heatmap-legend [data-tone="somewhat"]::before{background:#e6b325}
.heatmap-legend [data-tone="hard"]::before{background:#c45c3a}
.heatmap-legend [data-tone="empty"]::before{background:#e4eaf2}
.heatmap-wrap{overflow:auto;max-height:min(70vh,640px);margin-top:8px;border:1px solid var(--line);border-radius:10px;background:#fff}
.heatmap-table{border-collapse:collapse;font-size:11px;min-width:max-content}
.heatmap-table th,.heatmap-table td{padding:2px;text-align:center;white-space:nowrap}
.heatmap-table thead th{position:sticky;top:0;background:#fff;z-index:1}
.heatmap-table tbody th{position:sticky;left:0;background:#fff;text-align:left;padding:2px 8px;font-size:12px;z-index:1;min-width:7.5rem}
.heatmap-table thead th:first-child{z-index:2;text-align:left;padding:2px 8px}
.heatmap-topic{padding:4px 3px;min-width:22px;font:700 10px var(--mono);color:var(--muted)}
.heatmap-table th.is-filtered,.heatmap-topic[aria-pressed="true"]{background:#e9f2ef;color:#176c5f}
.heatmap-cell{display:block;width:14px;height:14px;border-radius:3px;margin:0 auto;background:#e4eaf2}
.heatmap-cell[data-tone="done"]{background:#117365}
.heatmap-cell[data-tone="understood"]{background:#2d8a5c}
.heatmap-cell[data-tone="somewhat"]{background:#e6b325}
.heatmap-cell[data-tone="hard"]{background:#c45c3a}
.heatmap-cell[data-tone="empty"]{background:#e4eaf2}
.student-detail{position:fixed;inset:0;z-index:32;background:#10183173;display:flex;justify-content:flex-end}
.student-detail[hidden]{display:none}
.student-detail-panel{width:min(420px,100%);background:#fff;padding:20px 20px 28px;overflow:auto;box-shadow:-12px 0 28px #10183122}
.student-detail-panel h2{margin:12px 0 8px;font-size:22px}
.student-detail-panel h3{margin:18px 0 8px;font-size:16px}
.student-detail-units,.student-detail-list{margin:0;padding-left:18px}
.student-detail-units li,.student-detail-list li{margin:4px 0}
@media (max-width:640px){
 .student-card-grid{grid-template-columns:1fr}
 .student-detail-panel{width:100%}
 .heatmap-cell{width:12px;height:12px}
}

/* 학생 따라가기 막대. 세션이 없거나 로그인 실패면 숨깁니다. */
.follow-ui{position:sticky;top:78px;z-index:19;background:#10243d;color:#e8eef6;border-bottom:1px solid #2c4566;box-shadow:0 8px 18px #10243d14}
.follow-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:8px max(5%,calc((100vw - 1100px)/2))}
.follow-status{margin:0;font-size:14px;font-weight:700}
.follow-rejoin{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.follow-attention{margin:0;padding:8px max(5%,calc((100vw - 1100px)/2)) 10px;background:#7a3d00;color:#fff8e8;font-size:13px;font-weight:700}
body.follow-active{scroll-padding-top:140px}
body.follow-active .lesson{scroll-margin-top:150px}
@media (max-width:640px){
 .teacher-shell{position:relative;top:auto}
 .teacher-shell-bar{padding:12px 5%}
 .class-picker select{min-width:0;width:100%}
 .follow-ui{top:auto;position:sticky}
 body.follow-active{scroll-padding-top:170px}
}
@media print{.follow-ui{display:none!important}}

/* 교사 단원 페이지 초점. 교사+활성 세션일 때만 보입니다. */
.teacher-focus-ui{position:sticky;top:78px;z-index:18;background:#e9f2ef;color:#176c5f;border-bottom:1px solid #b7d4cb}
.teacher-focus-status{margin:0;padding:8px max(5%,calc((100vw - 1100px)/2));font-size:13px;font-weight:700}
body.teacher-focus-live{scroll-padding-top:140px}
body.teacher-focus-live .lesson{scroll-margin-top:150px}
@media (max-width:640px){
 .teacher-focus-ui{top:auto}
 body.teacher-focus-live{scroll-padding-top:170px}
}
@media print{.teacher-focus-ui{display:none!important}}

/* 주제 끝 이해도·도움 요청. 완료 체크 아래에 JS가 붙입니다. */
.topic-signals{margin:10px 0 0;display:flex;flex-direction:column;gap:8px}
.understanding-note{margin:0;color:var(--muted);font-size:12px;line-height:1.45}
.understanding-choices{display:flex;flex-wrap:wrap;gap:8px}
.understanding-choices button{padding:7px 12px;font-size:13px}
.understanding-choices button[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff}
.hard-comment{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.hard-comment[hidden]{display:none}
.hard-comment-field{flex:1 1 100%;margin:0;font-size:13px;font-weight:600}
.hard-comment input{flex:1 1 16rem;min-width:0;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff}
.help-request[aria-pressed="true"]{background:#7a3d00;border-color:#7a3d00;color:#fff8e8}
.help-slot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.understanding-history{border:1px solid var(--line);border-radius:12px;background:#fff;padding:16px 18px;margin:0 0 20px}
aside.rail .understanding-history{margin:16px 0 0;padding:12px;font-size:13px}
aside.rail .understanding-history h2{font-size:14px}
.understanding-history h2{margin:0 0 6px;font-size:18px}
.understanding-history-list{margin:8px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.understanding-history-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.understanding-history-tag{font-size:12px;font-weight:700;color:#7a3d00;background:#fff4e5;border-radius:999px;padding:3px 9px}
.understanding-topic-row,.help-row{align-items:flex-start;flex-wrap:wrap}
.understanding-topic-row p,.help-row p{margin:4px 0 0;flex-basis:100%}
@media (max-width:640px){
 .understanding-choices button{flex:1 1 calc(50% - 8px);justify-content:center}
 .hard-comment{flex-direction:column;align-items:stretch}
}
@media print{
 .topic-signals,.understanding-history,.help-slot,.help-request{display:none!important}
}

/* 과제 정의·제출(M6). 교사 폼과 학생 단원 패널을 같은 카드 리듬으로 맞춥니다. */
.admin-card input[type="text"],.admin-card input[type="search"],.admin-card input[type="number"],.admin-card input[type="datetime-local"],.admin-card select{
 width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font:inherit
}
.assign-checks,.assign-filters{display:flex;flex-wrap:wrap;gap:8px 14px;margin:8px 0}
.assign-check{display:flex;align-items:center;gap:8px;margin:6px 0;font-weight:600}
.assign-dates{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.target-picker{max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:var(--paper)}
.assign-row{align-items:flex-start;flex-wrap:wrap}
.assign-row .actions{margin:8px 0 0}
.assign-sub-btn{width:100%;text-align:left;background:#fff;cursor:pointer}
.assign-detail h3{margin:12px 0 4px}
.assign-sources{display:flex;flex-direction:column;gap:12px;margin:12px 0}
.assign-source{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--paper)}
.assign-source h4{margin:0 0 6px;font-size:15px}
.assign-source pre{margin:6px 0 0;max-height:220px;overflow:auto;white-space:pre-wrap;font-size:12px}
.assign-review-form input{width:100%;margin:6px 0 10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px}
.assignment-panel{margin:24px 0}
.assignment-list{display:flex;flex-direction:column;gap:12px}
.assignment-card{border:1px solid var(--line);border-radius:12px;background:#fff;padding:16px 18px}
.assignment-card h3{margin:0 0 6px;font-size:18px}
.assignment-targets{margin:8px 0;padding-left:18px}
.assignment-targets li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin:4px 0}
.assignment-comment{margin:8px 0 0;padding:8px 10px;border-radius:8px;background:#e9f2ef;color:#176c5f;font-size:14px}
.assignment-chips{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px}
.assignment-chip{display:inline-flex;align-items:center;padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:var(--paper);font-size:12px;font-weight:600;color:var(--muted)}
@media (max-width:640px){
 .assign-dates{grid-template-columns:1fr}
 .target-picker{max-height:220px}
 .assignment-card{padding:14px}
}
@media print{.assignment-panel{break-inside:avoid}}

/* 교사 재검증·함께 풀기·수업 리포트(M7) */
.assign-sub-btn[data-reverify="mismatch"],.assign-source[data-reverify="mismatch"]{border-color:#c47a12;background:#fff8ec}
.assign-source[data-reverify="match"]{border-color:#176c5f}
.assign-source[data-reverify="skip"]{opacity:.92}
.reverify-badge{margin:6px 0;font-weight:700}
.reverify-output{max-height:140px}
.together-bars-list{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.together-bar{display:grid;grid-template-columns:minmax(7rem,1.4fr) minmax(80px,2fr) 2.2rem auto;align-items:center;gap:8px 10px}
.together-bar-label{font-size:13px;line-height:1.35}
.together-bar-track{height:12px;background:var(--paper);border:1px solid var(--line);border-radius:999px;overflow:hidden}
.together-bar-fill{height:100%;width:0;background:var(--teal);border-radius:999px}
.together-bar-count{font:700 13px var(--mono);text-align:right}
.together-bar[data-correct="1"] .together-bar-fill{background:#176c5f}
.together-bar[data-crowd="1"] .together-bar-fill{background:#c47a12}
.report-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.report-block{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--paper)}
.report-block h3{margin:0 0 8px;font-size:15px}
.report-list{margin:0;padding-left:18px}
.report-list li{margin:4px 0;font-size:14px}
@media (max-width:720px){
 .together-bar{grid-template-columns:1fr 3rem;grid-template-rows:auto auto}
 .together-bar-track{grid-column:1/-1}
 .report-grid{grid-template-columns:1fr}
}
