/* 디자인 토큰 · 성적표(교무수첩) 톤. 마지막에 불러와서 기존 스타일을 정리해요. */
:root{
  --navy:#0B1F3A;--navy2:#13294b;--gold:#E8B100;--gold-soft:#FBF3D4;
  --bg:#EEF0F4;--card:#fff;--ink:#16202f;--mut:#5d6879;--line:#dde1e8;--line2:#c9d0db;
  --good:#1b7355;--goodbg:#e6f3ed;--warn:#9a5a00;--warnbg:#fbf0dc;--bad:#a8372c;--badbg:#f9e8e5;
  --r:8px;--r-sm:5px;
  --font:"Pretendard Variable","Pretendard","Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",system-ui,sans-serif;
}
html{scroll-padding-top:64px}
body{font-family:var(--font);font-size:15px;line-height:1.6;color:var(--ink);background:var(--bg);font-feature-settings:"tnum" 1,"ss05" 0;-webkit-font-smoothing:antialiased;letter-spacing:-.005em}
h1,h2,h3{font-family:var(--font)}
::selection{background:var(--gold-soft)}
:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:var(--r-sm)}

/* 상단 바 */
header.top{background:var(--navy);box-shadow:0 1px 0 rgba(255,255,255,.06) inset}
header.top .in{padding:9px 16px}
header.top .btn.ghost{color:#fff;border-color:rgba(255,255,255,.45)}header.top .btn.ghost:hover{background:rgba(255,255,255,.12);border-color:#fff}header.top .pubtag{color:#FFE066}
.brand{font-weight:700;letter-spacing:-.01em;font-size:15px}
.brand i{width:24px;height:24px;border-radius:4px;line-height:24px;font-size:13px;font-weight:800}

/* 구획: 같은 모양 카드를 반복하지 않고, 종이 위의 얇은 구획으로 */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:none;padding:18px 20px;margin:14px 0}
.card h2{font-size:15px;font-weight:700;letter-spacing:-.01em;margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.card h3{font-size:13px;font-weight:700;color:var(--mut);margin:16px 0 6px;letter-spacing:0}
.card .row.between>h2{border-bottom:0;padding-bottom:0;margin-bottom:0}

/* 버튼: 사각형, 한 화면에 눈에 띄는 주 버튼은 하나 */
.btn{border-radius:var(--r-sm);font-weight:600;min-height:42px;padding:9px 16px;letter-spacing:-.005em;transition:background-color .12s,border-color .12s,color .12s}
.btn:hover{background:var(--navy2)}
.btn.gold{background:var(--gold);color:#241a00}.btn.gold:hover{background:#d6a300}
.btn.ghost{background:transparent;color:var(--navy);border:1px solid var(--line2)}.btn.ghost:hover{background:#fff;border-color:var(--navy)}
.btn.danger{background:transparent;color:var(--bad);border:1px solid #e3b9b3}.btn.danger:hover{background:var(--badbg)}
.btn.sm{min-height:32px;padding:4px 11px;font-size:13px;border-radius:var(--r-sm)}
.btn:disabled{opacity:.45;cursor:not-allowed}

/* 표시 이름표 */
.chip{border-radius:3px;padding:2px 7px;font-size:12px;font-weight:600;background:#e9edf3;color:#2c3a52;letter-spacing:0}
.chip.gold{background:var(--gold-soft);color:#6b4f00}

/* 입력 */
input[type=text],input[type=password],input[type=number],input[type=date],input[type=datetime-local],select,textarea{border:1px solid var(--line2);border-radius:var(--r-sm);padding:9px 11px;min-height:42px;background:#fff;transition:border-color .12s}
input:hover,select:hover,textarea:hover{border-color:#9aa6b8}
input:focus,select:focus,textarea:focus{outline:2px solid var(--navy);outline-offset:-1px;border-color:var(--navy)}
label.f{font-size:13px;font-weight:600;color:#33415a;margin:12px 0 4px}
.err{border-radius:var(--r-sm);border-left:3px solid var(--bad)}.ok{border-radius:var(--r-sm);border-left:3px solid var(--good)}

/* 탭: 알약 대신 밑줄 */
.tabs{gap:2px;padding:0;border-bottom:1px solid var(--line2);margin:6px 0 4px}
.tabs button{background:transparent;border-radius:0;padding:10px 14px;font-weight:600;color:var(--mut);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .12s}
.tabs button:hover{color:var(--navy)}
.tabs button.on{background:transparent;color:var(--navy);border-bottom-color:var(--navy)}

/* 표: 장부처럼 */
table.t{font-size:14px;font-variant-numeric:tabular-nums}
table.t th{font-size:12px;font-weight:600;color:var(--mut);border-bottom:1px solid var(--navy);padding:7px 8px;white-space:nowrap}
table.t td{padding:9px 8px;border-bottom:1px solid #e8ebf0}
table.t tbody tr:hover td,table.t tr:hover td{background:#f7f8fb}
tr.hint td{background:var(--gold-soft)!important;color:#6b4f00;font-size:12.5px;border-bottom:1px solid #eadfb0}

/* 진행 막대·수치 */
.bar{height:6px;border-radius:2px;background:#e3e7ee}.bar>i{border-radius:2px;background:var(--navy)}
.stat{background:#f4f6f9;border-radius:var(--r-sm)}.stat b{font-variant-numeric:tabular-nums}
.trait{border-left:3px solid var(--line2);padding:4px 0 4px 12px}
.list>*{border-top:1px solid #e8ebf0}

/* 시험 D-day 영역: 눈금자 하나가 이 화면의 기억 포인트 */
.hero{background:var(--navy);border-radius:var(--r);padding:20px 22px 34px;position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;left:22px;right:22px;bottom:14px;height:8px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.45) 0 1px,transparent 1px 10px);border-bottom:1px solid rgba(255,255,255,.35);opacity:.9}
.dday{font-size:60px;font-weight:800;letter-spacing:-.045em;font-variant-numeric:tabular-nums;color:var(--gold)}
.phase{background:rgba(255,255,255,.08);border-radius:var(--r-sm)}
.todo{border-radius:var(--r-sm);font-weight:600;transition:background-color .12s}.todo:hover{background:#f1f3f7}
.wk{border:1px solid var(--line2);border-radius:var(--r-sm)}.wk.now{border-color:var(--navy);box-shadow:inset 0 -3px 0 var(--gold)}.wk b{font-variant-numeric:tabular-nums;font-weight:800}

/* OMR */
.omr .q{padding:10px 6px}
.omr .q.cur{background:#f8f4e2}
.bubble{border:1.5px solid #9fabbf;font-weight:700;transition:background-color .1s,border-color .1s}
.bubble:hover{border-color:var(--navy)}
.omr .qh .pt,.omr .qh .pt{background:var(--gold-soft);color:#6b4f00;border-radius:3px;font-weight:600;padding:1px 7px}

/* 인증 안내 */
.cert-ban{background:var(--gold-soft);border:1px solid #e3cf86;border-left:4px solid var(--gold)}
.cert-ban h2{border-bottom:0;padding-bottom:0}

/* 전광판·보드 카드 */
.bcard{border-radius:var(--r);background:var(--navy)}.bcard .dd{font-weight:800;font-variant-numeric:tabular-nums}
.banner{border-radius:var(--r)}

/* 동영상 막대(학원 전용 플레이어) */
.yp{border-radius:var(--r)}

@media(max-width:560px){.card{padding:16px}.dday{font-size:50px}.tabs button{padding:9px 11px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* 수업 현황판 */
.tk-sum{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--line2);border-radius:var(--r-sm);margin:4px 0 14px;overflow:hidden}
.tk-sum button{background:#fff;border:0;border-right:1px solid var(--line);padding:12px 14px;text-align:left;cursor:pointer;font:inherit;display:flex;flex-direction:column;gap:2px;transition:background-color .12s}
.tk-sum button:last-child{border-right:0}.tk-sum button:hover{background:#f7f8fb}
.tk-sum button.on{background:var(--navy);color:#fff}.tk-sum b{font-size:26px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.1}.tk-sum span{font-size:12.5px;color:var(--mut)}.tk-sum button.on span{color:#c8d2e4}
.tk-fil{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.tk-fil label.f{margin-top:0}
.tk-th button{all:unset;cursor:pointer;display:inline-flex;gap:3px;align-items:center;font-size:12px;font-weight:600;color:var(--mut);white-space:nowrap}.tk-th button:hover,.tk-th button[aria-sort]{color:var(--navy)}.tk-th button:focus-visible{outline:2px solid var(--navy)}.tk-ar{font-size:9px}
.tk-r{cursor:pointer}.tk-r:hover td{background:#f4f6fa}
.tk-grp td{background:#e9edf3;font-weight:700;font-size:13px;padding:7px 8px;border-bottom:1px solid var(--line2)}
.tk-m{display:inline-flex;align-items:center;gap:7px;font-variant-numeric:tabular-nums}.tk-b{width:64px;height:6px;background:#e3e7ee;border-radius:2px;overflow:hidden;display:inline-block}.tk-b i{display:block;height:100%;background:var(--navy)}
.tk-m.bad .tk-b i{background:var(--bad)}.tk-m.warn .tk-b i{background:var(--gold)}.tk-m.good .tk-b i{background:var(--good)}.tk-m.bad b{color:var(--bad)}
.tk-f{display:inline-block;font-size:12px;font-weight:600;padding:2px 7px;border-radius:3px;white-space:nowrap}.tk-f.bad{background:var(--badbg);color:var(--bad)}.tk-f.warn{background:var(--warnbg);color:var(--warn)}.tk-f.good{background:var(--goodbg);color:var(--good)}
.tk-old{color:var(--bad);font-weight:600}
@media(max-width:700px){.tk-sum{grid-template-columns:repeat(2,1fr)}.tk-sum button:nth-child(2){border-right:0}.tk-sum button:nth-child(-n+2){border-bottom:1px solid var(--line)}.tk-fil{grid-template-columns:1fr 1fr}}

/* Progress Racing · 메타인지 */
.rc-track{position:relative;height:56px;margin:14px 6px 8px;border-bottom:2px solid var(--navy);background:repeating-linear-gradient(90deg,transparent 0 calc(10% - 1px),#dfe3ea calc(10% - 1px) 10%)}
.rc-h{position:absolute;width:14px;height:14px;border-radius:50%;background:#8d99ae;border:2px solid #fff;box-sizing:border-box}.rc-h.me{background:var(--gold);width:18px;height:18px;border:2px solid var(--navy);margin:-2px 0 0 -2px;z-index:2}
.rc-avg{position:absolute;top:-6px;bottom:0;border-left:1.5px dashed var(--navy)}.rc-avg em{position:absolute;top:-14px;left:4px;font-style:normal;font-size:11px;color:var(--navy);white-space:nowrap;font-weight:600}
.rc-end{position:absolute;right:0;top:0;bottom:0;border-right:3px solid var(--navy)}
.rc-stats{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--line2);border-radius:var(--r-sm);margin-top:10px}.rc-stats>div{padding:9px 10px;border-right:1px solid var(--line)}.rc-stats>div:last-child{border-right:0}
.rc-stats span{display:block;font-size:12px;color:var(--mut)}.rc-stats b{font-size:21px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.rc-stats small{font-size:12px;font-weight:500;color:var(--mut);margin-left:1px}
.mi-row{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line2);border-radius:var(--r-sm)}.mi-c{padding:12px;border-right:1px solid var(--line)}.mi-c:last-child{border-right:0}
.mi-c span{display:block;font-size:12px;color:var(--mut)}.mi-c b{font-size:30px;font-weight:800;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.mi-c small{font-size:13px;font-weight:500;color:var(--mut)}.mi-c em{font-style:normal;font-size:12px;color:var(--mut)}
.mi-c.me{box-shadow:inset 0 -3px 0 var(--gold)}.mi-c.sys{box-shadow:inset 0 -3px 0 var(--navy)}.mi-c.act{box-shadow:inset 0 -3px 0 var(--good)}
.mi-read{margin:10px 0;padding:10px 12px;background:var(--gold-soft);border-left:3px solid var(--gold);font-size:14px}
.mi-f{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}.mi-f summary{cursor:pointer;font-weight:600;padding:6px 0}
@media(max-width:560px){.rc-stats{grid-template-columns:repeat(3,1fr)}.rc-stats>div:nth-child(3){border-right:0}.rc-stats>div:nth-child(-n+3){border-bottom:1px solid var(--line)}.mi-c b{font-size:24px}}

/* 교사 Progress Racing */
.rr-head,.rr{display:grid;grid-template-columns:28px 150px 1fr 110px;gap:10px;align-items:center}.rr-head{padding:4px 0;border-bottom:1px solid var(--navy)}
.rr{padding:6px 0;border-bottom:1px solid #e8ebf0}.rr-n{font-weight:800;color:var(--mut);font-variant-numeric:tabular-nums}.rr-name{font-weight:700}.rr-name small{display:block;font-weight:400;font-size:12px;color:var(--mut)}
.rr-t{position:relative;height:22px;background:#eef0f4;border-radius:2px}.rr-h{display:flex;align-items:center;justify-content:flex-end;height:100%;border-radius:2px;transition:width .6s cubic-bezier(.2,.7,.2,1)}.rr-h.up{background:var(--navy)}.rr-h.dn{background:#7d8aa3}.rr-h b{color:#fff;font-size:12px;padding:0 7px;font-variant-numeric:tabular-nums}
.rr-avg{position:absolute;top:-3px;bottom:-3px;border-left:2px dashed var(--gold);z-index:2}.rr-d{font-size:13px;color:var(--mut);font-variant-numeric:tabular-nums}.rr-d small{font-size:11px}
.rr-big .rr{padding:12px 0}.rr-big .rr-name{font-size:22px}.rr-big .rr-t{height:36px}.rr-big .rr-h b{font-size:18px}.rr-big .rr-n{font-size:22px}.rr-big .card h2{font-size:24px}.rr-big .rr-d{font-size:16px}.rr-big .rr{grid-template-columns:40px 220px 1fr 140px}
@media(max-width:700px){.rr-head,.rr,.rr-big .rr{grid-template-columns:24px 90px 1fr}.rr-d,.rr-head span:last-child{display:none}}
.mi-c b,.mi-c em{display:block}
.rr-h b{white-space:nowrap}.rr-h.lo{position:relative;overflow:visible}.rr-h.lo b{position:absolute;left:100%;color:var(--ink)}
.fb-chips{display:flex;flex-wrap:wrap;gap:6px}.fb-chip{cursor:pointer;border:1px solid var(--line2);background:#fff;padding:5px 10px;font-size:13px}.fb-chip.gold{background:var(--gold-soft);border-color:var(--gold)}
.tk-qr{display:grid;grid-template-columns:90px 1fr auto 100px auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid #e8ebf0}.tk-q h2{border-bottom:0}
@media(max-width:700px){.tk-qr{grid-template-columns:1fr auto}.tk-qr span.mut{display:none}}

/* 사진 · 상담 */
.tk-av{display:inline-flex;width:28px;height:28px;border-radius:50%;background:#dfe4ec;color:#44526b;font-weight:700;font-size:13px;align-items:center;justify-content:center;margin-right:8px;vertical-align:middle;overflow:hidden}.tk-av img{width:100%;height:100%;object-fit:cover}
.cs-box h3{margin-top:18px}.cs-photo{display:flex;gap:14px;align-items:center;margin:8px 0 12px}.cs-face{width:96px;height:96px;border-radius:6px;background:#dfe4ec;display:flex;align-items:center;justify-content:center;overflow:hidden;flex:none}.cs-face img{width:100%;height:100%;object-fit:cover}.cs-face i{font-style:normal;font-size:34px;font-weight:700;color:#7d8aa3}
.cs-pctl{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.cs-form textarea{margin-top:8px}.cs-row{border-top:1px solid var(--line);padding:9px 0}.cs-body{white-space:pre-wrap;margin-top:4px;font-size:14px}

/* 성장 프로필 */
.gr-box{margin:10px 0 4px}
.gr-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:1px;background:var(--line,#dfe3ea);border:1px solid var(--line,#dfe3ea);border-radius:var(--r)}
.gr-kpi>div{background:#fff;padding:10px 12px}.gr-kpi b{display:block;font-size:20px;color:var(--navy)}.gr-kpi span{font-size:12px;color:#6b7686}
.gr-trs{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.gr-tt{font-size:13px;font-weight:600;margin-bottom:2px}.gr-svg{width:100%;height:60px;display:block}.gr-empty{font-size:13px;color:#6b7686;padding:10px 0}
.gr-d{font-size:12px;font-weight:600;color:#6b7686}.gr-d.up{color:#1f7a4d}.gr-d.down{color:#b3402a}
.gr-yrs{display:flex;gap:18px;flex-wrap:wrap;margin-top:6px}.gr-yrs b{font-size:18px;color:var(--navy);margin-right:6px}.gr-yrs span{font-size:12px;color:#6b7686}
.gr-ev{font-size:13px;padding:5px 0;border-bottom:1px solid #eef0f4}.gr-ev b{color:var(--navy);margin-right:6px}.gr-ev.observe{border-left:3px solid var(--gold);padding-left:8px}

/* AI 도우미 */
#ai_chat{position:fixed;right:16px;bottom:16px;z-index:60}
.ch-fab{background:var(--navy);color:#fff;border:0;border-radius:999px;padding:12px 18px;font-weight:600;box-shadow:0 4px 14px rgba(11,31,58,.3);min-height:44px;cursor:pointer}
.ch-box{width:min(380px,calc(100vw - 32px));height:min(520px,calc(100vh - 100px));background:#fff;border:1px solid #dfe3ea;border-radius:var(--r);box-shadow:0 12px 32px rgba(11,31,58,.22);display:flex;flex-direction:column;padding:12px;gap:8px}
.ch-h{display:flex;gap:8px;align-items:center}.ch-h .btn{margin-left:auto}
.ch-log{flex:1;overflow:auto;display:flex;flex-direction:column;gap:8px}
.ch-m{padding:8px 10px;border-radius:var(--r);font-size:14px;line-height:1.5;max-width:92%}.ch-m.me{background:var(--navy);color:#fff;align-self:flex-end}.ch-m.ai{background:#f1f3f7}
.ch-in{display:flex;gap:6px}.ch-in input{flex:1;min-height:40px}

/* 접었다 펴는 구역 */
.fold{border-top:1px solid #e6e9ef}.fold:last-of-type{border-bottom:1px solid #e6e9ef}
.fold>summary{cursor:pointer;list-style:none;padding:11px 2px;font-weight:700;color:var(--navy);display:flex;align-items:center;gap:8px;min-height:44px}
.fold>summary::-webkit-details-marker{display:none}
.fold>summary::before{content:"▸";font-size:12px;color:#6b7686;transition:transform .15s}
.fold[open]>summary::before{transform:rotate(90deg)}
.fold-s{font-weight:400;font-size:12px;color:#6b7686;margin-left:auto}
.fold-b{padding:2px 2px 14px}
@media (prefers-reduced-motion:reduce){.fold>summary::before{transition:none}}

.es-row{border:1px solid var(--line,#d9dee7);border-left:5px solid #c0392b;border-radius:10px;padding:10px 12px;margin:10px 0}
.es-row.ok{border-left-color:#1e8e5a}.es-top{margin-bottom:6px}
.es-l{margin:3px 0;line-height:1.6}.es-lab{display:inline-block;min-width:54px;color:#667;font-size:12px}
.es-ok{color:#1e8e5a;font-weight:600}.es-bad{color:#c0392b;font-weight:600}
@media (prefers-color-scheme:dark){.es-ok{color:#5fd49b}.es-bad{color:#ff8a80}}

/* 로그인: 비밀번호 보기 · 로그인 유지 */
.pwbox{position:relative}.pwbox input{width:100%;padding-right:48px}
.pwbox .eye{position:absolute;right:2px;top:50%;transform:translateY(-50%);width:44px;height:44px;border:0;background:none;color:var(--mut);display:flex;align-items:center;justify-content:center;border-radius:10px}
.pwbox .eye:focus-visible{outline:2px solid var(--gold)}.pwbox .eye[aria-pressed="true"]{color:var(--navy)}
.keep{display:flex;align-items:center;gap:8px;margin-top:12px;font-weight:600;cursor:pointer}.keep input{width:20px;height:20px}
.keephint{margin:4px 0 0}
.pubtag{background:#fff3e0;color:#b45309;padding:2px 8px;border-radius:99px;font-weight:700}
/* 학부모 초대 */
.invbox{display:flex;gap:14px;align-items:center;flex-wrap:wrap;background:#f4f7fc;border-radius:14px;padding:12px;margin-top:8px}
.invqr{width:132px;height:132px;background:#fff;border-radius:10px;padding:4px;flex:none}.invqr svg{width:100%;height:100%;display:block}
.invcode{font:800 26px/1.2 ui-monospace,Menlo,monospace;letter-spacing:.14em;color:var(--navy)}.invsm{font:700 15px ui-monospace,Menlo,monospace;letter-spacing:.1em}
/* 학부모 화면 */
.pk{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.pk .chip{cursor:pointer;border:0;font-size:14px;padding:6px 14px}.pk .chip.on{background:var(--navy);color:#fff}
.pbig{display:flex;align-items:baseline;gap:8px}.pbig b{font-size:40px;letter-spacing:-.03em;color:var(--navy)}
.pbar{height:10px;border-radius:99px;background:#e8edf5;overflow:hidden}.pbar i{display:block;height:100%;background:var(--gold)}
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.pgrid>div{background:#f4f7fc;border-radius:12px;padding:10px;text-align:center}.pgrid b{display:block;font-size:22px;color:var(--navy)}
.ptip{background:#fff8e1;border-radius:12px;padding:12px;border-left:4px solid var(--gold)}

/* 진도 비교표: 범위·정렬 */
.rr2{grid-template-columns:28px 170px 1fr 110px 64px}.rr-w{font-weight:800;text-align:center;font-variant-numeric:tabular-nums}.rr-w small{font-weight:400;color:var(--mut)}.rr-w.ok{color:var(--good)}
.rr-seg{display:inline-flex;gap:4px;background:#eef2f8;border-radius:99px;padding:3px}.rr-seg .chip{border:0;cursor:pointer;background:none}.rr-seg .chip.on{background:var(--navy);color:#fff}
@media(max-width:700px){.rr2,.rr-big .rr2{grid-template-columns:24px 110px 1fr 44px}.rr2 .rr-d,.rr-head.rr2 span:nth-child(4){display:none}}
/* 워크북 사진 인증 */
.wb-plan{border:1px solid var(--line);border-radius:12px;padding:12px;margin-top:10px}.wb-steps{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.wb-steps span{background:#eef2f8;border-radius:8px;padding:2px 9px;font-size:13px;font-weight:700}
.wb-grid{border-collapse:collapse;width:100%;font-size:14px}.wb-grid th,.wb-grid td{border:1px solid var(--line);padding:6px 8px;text-align:center;white-space:nowrap}.wb-grid thead th{background:#f4f7fc}.wb-grid tbody th{text-align:left;background:#fff;position:sticky;left:0}
.wb-grid td.wb-p{background:#fff3c4}.wb-grid td.wb-ok{background:var(--goodbg);color:var(--good);font-weight:800}.wb-grid td.wb-x{background:#fde8e6;color:var(--bad);font-weight:800}.wb-grid td a{text-decoration:none;color:inherit;display:block}
.wb-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}.wb-c{margin:0}.wb-c.wb-ok{outline:2px solid var(--good)}.wb-c.wb-x{outline:2px solid var(--bad)}
.wb-ph{display:flex;gap:6px;margin:8px 0;overflow:auto}.wb-ph img{height:170px;width:auto;max-width:100%;border-radius:8px;border:1px solid var(--line);background:#fff}
/* 학생 워크북 */
.wbs-lad{display:flex;flex-direction:column;gap:8px;margin-top:8px}.wbs-s{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:#f4f7fc}
.wbs-s i{flex:none;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:800;background:#dfe6f1;color:var(--mut)}
.wbs-s.ok i{background:var(--good);color:#fff}.wbs-s.pending i{background:var(--gold);color:var(--navy)}.wbs-s.redo{background:#fde8e6}.wbs-s.redo i{background:var(--bad);color:#fff}
.wbs-s.cur{background:#fff8e1;outline:2px solid var(--gold)}.wbs-s.lock{opacity:.5}.wbs-s .grow{flex:1}

.wb-grid th.wb-ls{background:#e8edf5;color:var(--navy);font-size:13px}
.brand{white-space:nowrap}
/* 서술형 AI 검토 */
.ai-bar{margin:10px 0 4px;padding:10px 12px;background:#EFEDFC;border-radius:var(--r)}
.ai-box{margin:8px 0 2px;padding:8px 10px;border-radius:var(--r-sm);background:#F5F4FD;border-left:3px solid #4B3FB5;font-size:14px}
.ai-box.ai-ok{border-left-color:#1b7355;background:#eef7f2}.ai-box.ai-no{border-left-color:#a8372c;background:#fbf1ef}.ai-box.ai-un{border-left-color:#9a5a00;background:#fbf5e8}
.ai-badge{display:inline-block;background:#4B3FB5;color:#fff;font-size:11px;font-weight:700;border-radius:999px;padding:1px 8px;margin-right:4px}
/* 리허설: 재시험 */
.retake-ban{background:#EFEDFC;border-left:4px solid #4B3FB5}
.rhint{background:#F5F4FD;border-radius:var(--r-sm);padding:6px 10px;color:#3b3190}
td.wrong{color:#9a5a00;font-weight:700;white-space:nowrap}

.wi{border-top:1px solid #E6EAF2;padding:8px 0}.wi:first-of-type{border-top:0}.wh{display:flex;gap:6px;align-items:center}.wa{font-size:14px;margin:4px 0}.wi .rhint{font-size:13px}.okd{margin-top:8px}.okd summary{cursor:pointer;color:#2757D6;font-weight:600;font-size:14px}
