:root{
    --bg:#ffffff; --surface:#ffffff; --surface-2:#f7f9fc; --border:#e4e9f0; --border-strong:#d4dbe6;
    --ink:#1a2432; --muted:#5b6676; --faint:#93a0b2;
    --accent:#0E6BA8; --accent-2:#16A6BD; --accent-weak:#e6f0f8;
    --good:#12805c; --good-weak:#e2f5ec; --warn:#9a6a12; --warn-weak:#fbf0d8; --bad:#c0392b; --bad-weak:#fdecea;
    --radius:12px; --radius-sm:8px; --pill:999px;
    --shadow:0 1px 2px rgba(20,40,80,.05), 0 6px 20px rgba(20,40,80,.05);
  }
  /* 흰 배경 단일 테마로 고정 (다크 모드에서도 흰 배경 유지) */

  *{ box-sizing:border-box; }
  body{ margin:0; background:var(--bg); color:var(--ink);
    font-family:"Pretendard","Apple SD Gothic Neo",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
    font-size:14px; line-height:1.5; -webkit-font-smoothing:antialiased; }
  .num{ font-variant-numeric:tabular-nums; }
  button{ cursor:pointer; font-family:inherit; }
  .hide{ display:none !important; }

  /* ── 헤더바 ── */
  .topbar{ background:var(--surface); border-bottom:1px solid var(--border); position:sticky; top:0; z-index:20; }
  .topbar-in{ width:100%; max-width:none; margin:0; padding:0 22px; display:flex; align-items:center; gap:18px; height:60px; }
  .nav-title{ font-weight:800; font-size:15px; color:var(--ink); padding-left:16px; border-left:1px solid var(--border); }
  @media (max-width:820px){ .nav-title{ display:none; } }
  .brand{ display:flex; align-items:center; gap:11px; }
  .brand .badge{ width:34px; height:34px; border-radius:9px; background:var(--accent); display:flex; align-items:center; justify-content:center; }
  .brand .badge svg{ width:64%; height:64%; }
  .brand .wm{ font-size:17px; font-weight:800; letter-spacing:-.2px; }
  .brand .wm .ai{ color:var(--accent); }
  .brand .tag{ font-size:10px; font-weight:800; letter-spacing:1.5px; color:var(--faint); margin-top:1px; }
  .spacer{ flex:1; }
  .stats{ display:flex; align-items:stretch; gap:0; border:1px solid var(--border); border-radius:10px; overflow:hidden; background:var(--surface-2); }
  .stat{ padding:6px 15px; display:flex; flex-direction:column; gap:1px; border-right:1px solid var(--border); }
  .stat:last-child{ border-right:0; }
  .stat .l{ font-size:10.5px; font-weight:700; color:var(--faint); letter-spacing:.2px; }
  .stat .v{ font-size:14px; font-weight:800; }
  .stat .v small{ color:var(--faint); font-weight:600; }
  .contract{ color:var(--accent); }
  .admin-chip{ display:inline-flex; align-items:center; gap:7px; font-size:12.5px; font-weight:700; color:var(--muted); padding:7px 12px; border:1px solid var(--border-strong); border-radius:var(--pill); background:var(--surface); }
  .admin-chip .ic{ width:16px; height:16px; border-radius:50%; background:var(--accent-weak); color:var(--accent); display:inline-flex; align-items:center; justify-content:center; font-size:10px; }

  /* 좌측 사이드바 레이아웃 */
  .layout{ width:100%; margin:0; display:flex; align-items:flex-start; }
  .sidebar{ flex:0 0 216px; width:216px; padding:18px 12px; border-right:1px solid var(--border); background:var(--surface); align-self:stretch; min-height:calc(100vh - 61px); }
  .side-group{ margin-bottom:16px; }
  .sg-title{ font-size:11px; font-weight:800; letter-spacing:.4px; color:var(--faint); padding:6px 12px 4px; }
  .side-item{ display:block; width:100%; text-align:left; border:0; background:none; padding:9px 12px 9px 22px; font-size:13.5px; font-weight:600; color:var(--muted); border-radius:8px; }
  .side-item:hover{ background:var(--surface-2); color:var(--ink); }
  .side-item[aria-selected="true"]{ background:var(--accent-weak); color:var(--accent); font-weight:800; }
  main{ flex:1; min-width:0; padding:22px; }
  @media (max-width:820px){
    .layout{ flex-direction:column; }
    .sidebar{ width:auto; flex:none; border-right:0; border-bottom:1px solid var(--border); min-height:0; display:flex; flex-wrap:wrap; gap:4px 10px; padding:10px 14px; }
    .side-group{ margin-bottom:0; }
    .sg-title{ width:100%; padding:2px 4px; }
  }

  /* 헤드 */
  .page-head{ display:flex; align-items:center; gap:12px; margin-bottom:16px; flex-wrap:wrap; }
  .page-title{ font-size:20px; font-weight:800; letter-spacing:-.3px; }
  .crumb{ font-size:12.5px; color:var(--faint); font-weight:600; }
  .ph-spacer{ flex:1; }

  .card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); }

  /* 버튼 */
  .btn{ border:1px solid var(--accent); background:var(--accent); color:#fff; font-weight:700; font-size:13px; padding:8px 15px; border-radius:9px; white-space:nowrap; }
  .btn:hover{ filter:brightness(1.05); }
  .btn.sm{ padding:6px 12px; font-size:12.5px; }
  .btn.ghost{ background:var(--surface); color:var(--accent); }
  .btn.ghost:hover{ background:var(--accent-weak); filter:none; }
  .btn.neutral{ background:var(--surface); color:var(--ink); border-color:var(--border-strong); }
  .btn.neutral:hover{ border-color:var(--accent); color:var(--accent); background:var(--surface); }
  .btn.danger{ background:var(--surface); color:var(--bad); border-color:var(--bad); }
  .btn.danger:hover{ background:var(--bad-weak); }
  .back-link{ border:0; background:none; color:var(--muted); font-weight:700; font-size:13px; padding:4px 2px; display:inline-flex; align-items:center; gap:6px; }
  .back-link:hover{ color:var(--accent); }

  /* 검색바 */
  .filterbar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:14px 16px; }
  .fld{ display:flex; flex-direction:column; gap:4px; }
  .fld label{ font-size:10.5px; font-weight:800; color:var(--faint); letter-spacing:.2px; padding-left:2px; }
  select.inp, input.inp{ border:1px solid var(--border-strong); border-radius:8px; padding:8px 11px; font-size:13px; font-family:inherit; background:var(--surface); color:var(--ink); }
  select.inp{ min-width:120px; }
  input.inp{ min-width:200px; }
  .inp:focus{ outline:2px solid var(--accent-weak); border-color:var(--accent); }
  .filterbar .grow{ flex:1; }

  /* 테이블 */
  .tbl-wrap{ overflow-x:auto; }
  table.grid{ width:100%; border-collapse:collapse; font-size:13.5px; }
  table.grid thead th{ background:var(--surface-2); color:var(--muted); font-size:11.5px; font-weight:800; letter-spacing:.2px; text-align:center; padding:11px 12px; border-bottom:1px solid var(--border); border-right:1px solid var(--border); white-space:nowrap; }
  table.grid tbody td{ padding:11px 12px; border-bottom:1px solid var(--border); border-right:1px solid var(--border); text-align:center; vertical-align:middle; }
  table.grid th:last-child, table.grid td:last-child{ border-right:0; }
  table.grid tbody tr:last-child td{ border-bottom:0; }
  table.grid tbody tr:hover td{ background:var(--surface-2); }
  .t-left{ text-align:left !important; }
  .lnk{ background:none; border:0; color:var(--ink); font-weight:700; font-size:13.5px; font-family:inherit; cursor:pointer; text-align:left; padding:0; }
  .lnk:hover{ color:var(--accent); text-decoration:underline; }
  .muted{ color:var(--muted); }
  .faint{ color:var(--faint); }

  /* 상태 배지 */
  .badge2{ display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:800; padding:3px 10px; border-radius:var(--pill); white-space:nowrap; }
  .badge2.ok{ color:var(--good); background:var(--good-weak); }
  .badge2.no{ color:var(--bad); background:var(--bad-weak); }
  .badge2.wait{ color:var(--warn); background:var(--warn-weak); }
  .badge2.on{ color:var(--accent); background:var(--accent-weak); }
  .cnt{ font-weight:800; font-variant-numeric:tabular-nums; }
  .cnt.g{ color:var(--good); } .cnt.r{ color:var(--bad); }

  /* 상세 메타 그리드 */
  .meta-grid{ display:grid; grid-template-columns:repeat(4, 1fr); border:1px solid var(--border); border-radius:10px; overflow:hidden; }
  .meta-grid .mrow{ display:contents; }
  .mcell{ padding:11px 14px; border-bottom:1px solid var(--border); border-right:1px solid var(--border); font-size:13.5px; }
  .mcell.k{ background:var(--surface-2); color:var(--muted); font-weight:800; font-size:12px; }
  .meta-grid .mcell:nth-child(4n){ border-right:0; }
  .mcell.full{ grid-column:2 / -1; }
  .mcell.kk{ grid-column:1; }

  /* Q&A 상세 메타(행별 배치) */
  .qmeta{ border:1px solid var(--border); border-radius:10px; overflow:hidden; }
  .qm-row{ display:flex; border-bottom:1px solid var(--border); }
  .qm-row:last-child{ border-bottom:0; }
  .qm-cell{ flex:1; display:flex; min-width:0; border-right:1px solid var(--border); }
  .qm-cell:last-child{ border-right:0; }
  .qm-k{ flex:0 0 92px; background:var(--surface-2); color:var(--muted); font-weight:800; font-size:12px; padding:11px 14px; display:flex; align-items:center; }
  .qm-v{ flex:1; padding:11px 14px; font-size:13.5px; display:flex; align-items:center; min-width:0; }
  @media (max-width:700px){ .qm-row{ flex-direction:column; } .qm-cell{ border-right:0; border-bottom:1px solid var(--border); } .qm-cell:last-child{ border-bottom:0; } }
  .lecmeta .qm-k{ flex:0 0 108px; justify-content:center; text-align:center; }
  /* 강의 상세 편집: input처럼 테두리 있게 보이기 */
  .lecmeta.formmeta .qm-v{ padding:7px 10px; }
  .lecmeta.formmeta .qm-v .inp{ border:1px solid var(--border-strong); background:var(--surface); border-radius:8px; width:100%; min-width:0; padding:7px 10px; font-size:13px; height:auto; }
  .lecmeta.formmeta .qm-v .inp:focus{ outline:2px solid var(--accent-weak); border-color:var(--accent); outline-offset:0; }
  /* 신규등록 폼: 테이블(세로 구분선) 안에 입력필드 삽입 */
  .formmeta .qm-k{ flex:0 0 104px; white-space:nowrap; }
  .formmeta .qm-v{ padding:0; }
  /* 학원강의관리 검색: 테이블형 필터 */
  .filtermeta .qm-k{ flex:0 0 82px; background:var(--surface-2); color:var(--muted); font-weight:800; font-size:11.5px; padding:0 10px; display:flex; align-items:center; justify-content:center; text-align:center; }
  .filtermeta .qm-v{ flex:1; padding:8px 10px; display:flex; gap:6px; align-items:center; flex-wrap:wrap; min-width:0; }
  .filtermeta .qm-v .inp{ padding:6px 9px; font-size:12.5px; }
  .filtermeta select.inp{ min-width:86px; }
  .filtermeta input.inp{ min-width:110px; flex:1; }
  .filter-foot{ display:flex; justify-content:flex-end; gap:8px; margin-top:12px; }
  /* 강의 상세: 인강(동영상) */
  .video-box{ position:relative; aspect-ratio:16/9; width:100%; max-width:460px; background:#0f1a2b; border-radius:12px; overflow:hidden; display:flex; align-items:center; justify-content:center; flex:0 0 auto; }
  .video-box .vb-play{ width:54px; height:54px; border-radius:50%; background:rgba(255,255,255,.14); border:2px solid rgba(255,255,255,.75); color:#fff; display:flex; align-items:center; justify-content:center; font-size:19px; }
  .video-box .vb-title{ position:absolute; left:14px; right:14px; bottom:12px; color:#fff; font-weight:700; font-size:13px; text-shadow:0 1px 3px rgba(0,0,0,.6); }
  .video-box .vb-badge{ position:absolute; top:12px; left:12px; background:rgba(0,0,0,.45); color:#fff; font-size:10.5px; font-weight:800; padding:3px 9px; border-radius:var(--pill); }
  .video-wrap{ display:flex; gap:20px; flex-wrap:wrap; align-items:flex-start; }
  .video-meta{ display:flex; gap:8px; flex-wrap:wrap; }
  .video-meta .vchip{ font-size:11.5px; font-weight:700; color:var(--muted); border:1px solid var(--border-strong); border-radius:var(--pill); padding:3px 10px; }
  .video-meta .vchip.q{ color:var(--accent); border-color:var(--accent-weak); background:var(--accent-weak); }
  .attach-box{ border:1.5px dashed var(--border-strong); border-radius:12px; padding:22px; text-align:center; background:var(--surface-2); }
  .attach-box .ab-ic{ font-size:26px; }
  .attach-box .ab-t{ font-weight:800; margin:6px 0 3px; }
  .attach-box .ab-s{ font-size:12.5px; color:var(--muted); margin-bottom:14px; }
  .mat-cap{ font-size:12px; color:var(--faint); font-weight:700; }
  /* Q&A: AI vs 교수 답변 비교 */
  .cmp-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
  .cmp-card{ border:1px solid var(--border); border-radius:12px; overflow:hidden; display:flex; flex-direction:column; background:var(--surface); }
  .cmp-card.ai{ border-color:var(--accent-weak); }
  .cmp-card.prof{ border-color:var(--good-weak); }
  .cmp-h{ padding:11px 14px; font-weight:800; font-size:13px; display:flex; align-items:center; gap:8px; border-bottom:1px solid var(--border); }
  .cmp-card.ai .cmp-h{ background:var(--accent-weak); color:var(--accent); }
  .cmp-card.prof .cmp-h{ background:var(--good-weak); color:var(--good); }
  .cmp-b{ padding:14px; font-size:13.5px; line-height:1.7; flex:1; white-space:pre-wrap; color:var(--ink); }
  .cmp-b.empty{ color:var(--faint); }
  .cmp-ta{ flex:1; margin:14px; min-height:160px; resize:vertical; font-size:13.5px; line-height:1.7; }
  .cmp-f{ padding:10px 14px; border-top:1px solid var(--border); display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:12px; color:var(--muted); }
  @media (max-width:760px){ .cmp-grid{ grid-template-columns:1fr; } }
  /* 종합반 편성 */
  .bun-vid{ display:flex; align-items:center; gap:11px; padding:11px 14px; border-bottom:1px solid var(--border); }
  .bun-vid:last-child{ border-bottom:0; }
  .bv-sub{ font-size:11px; font-weight:800; color:var(--muted); background:var(--surface-2); border:1px solid var(--border); border-radius:var(--pill); padding:2px 9px; flex:0 0 auto; }
  .bv-name{ flex:1; font-weight:600; min-width:0; }
  .bv-name small{ display:block; color:var(--faint); font-weight:600; font-size:11.5px; margin-top:1px; }
  .bv-shared{ font-size:11px; font-weight:800; color:var(--accent); background:var(--accent-weak); border-radius:var(--pill); padding:2px 9px; flex:0 0 auto; }
  .bv-shared.solo{ color:var(--faint); background:var(--surface-2); }
  .pick-grp-h{ font-weight:800; font-size:12.5px; color:var(--muted); padding:10px 4px 4px; border-top:1px solid var(--border); margin-top:4px; }
  .pick-grp:first-child .pick-grp-h{ border-top:0; margin-top:0; }
  .pick{ display:flex; align-items:center; gap:10px; padding:8px 12px; border-radius:8px; }
  .pick:hover{ background:var(--surface-2); }
  .pick input{ width:16px; height:16px; accent-color:var(--accent); flex:0 0 auto; }
  .pick .p-name{ font-weight:600; }
  .pick .in-tag{ font-size:10.5px; font-weight:800; color:var(--good); background:var(--good-weak); border-radius:var(--pill); padding:1px 8px; }
  .in-use{ font-size:10.5px; font-weight:800; color:var(--good); background:var(--good-weak); border-radius:var(--pill); padding:2px 8px; margin-left:6px; white-space:nowrap; }
  .formmeta .qm-v .inp{ width:100%; border:0; background:transparent; border-radius:0; padding:11px 14px; font-size:13.5px; height:100%; }
  .formmeta .qm-v .inp:focus{ outline:2px solid var(--accent); outline-offset:-2px; }
  .formmeta .qm-v.pad{ padding:12px 14px; display:block; }

  .sec-title{ font-size:14px; font-weight:800; margin:22px 0 10px; display:flex; align-items:center; gap:8px; }
  .sec-title .bar{ width:3px; height:15px; background:var(--accent); border-radius:2px; }
  .qbody{ font-size:14px; line-height:1.75; color:var(--ink); padding:14px 16px; background:var(--surface-2); border:1px solid var(--border); border-radius:10px; white-space:pre-wrap; }
  .answer-box{ padding:14px 16px; background:var(--good-weak); border:1px solid var(--border); border-radius:10px; }
  .answer-box .ah{ display:flex; align-items:center; gap:8px; margin-bottom:8px; font-size:12px; font-weight:800; color:var(--good); }
  .answer-box .ab{ font-size:14px; line-height:1.7; color:var(--ink); }
  textarea.inp{ width:100%; border:1px solid var(--border-strong); border-radius:10px; padding:12px 14px; font-size:14px; font-family:inherit; background:var(--surface); color:var(--ink); resize:vertical; min-height:96px; }

  /* AI 추천 */
  .ai-head{ display:flex; align-items:center; gap:10px; margin:22px 0 10px; flex-wrap:wrap; }
  .ai-head .t{ font-size:14px; font-weight:800; }
  .ai-head .src{ font-size:11.5px; color:var(--faint); font-weight:700; }
  .ai-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; }
  .ai-card{ border:1px solid var(--border); border-radius:12px; background:var(--surface); overflow:hidden; display:flex; flex-direction:column; }
  .ai-card.best{ border-color:var(--accent); box-shadow:0 0 0 1px var(--accent); }
  .ai-top{ display:flex; align-items:center; gap:8px; padding:11px 14px; border-bottom:1px solid var(--border); background:var(--surface-2); }
  .ai-model{ font-weight:800; font-size:13.5px; }
  .ai-badge{ margin-left:auto; font-size:11px; font-weight:800; padding:2px 9px; border-radius:var(--pill); background:var(--accent-weak); color:var(--accent); }
  .ai-best-tag{ font-size:10px; font-weight:800; color:#fff; background:var(--accent); padding:2px 7px; border-radius:var(--pill); }
  .ai-body{ padding:12px 14px; font-size:13px; line-height:1.65; color:var(--ink); flex:1; }
  .ai-match{ height:6px; border-radius:4px; background:var(--surface-2); margin:2px 14px 0; overflow:hidden; }
  .ai-match i{ display:block; height:100%; background:linear-gradient(90deg,var(--accent),var(--accent-2)); }
  .ppair{ padding:0 14px 12px; display:flex; flex-direction:column; gap:8px; }
  .plist{ font-size:12px; }
  .plist .ph{ font-weight:800; margin-bottom:3px; display:flex; align-items:center; gap:5px; }
  .plist.pro .ph{ color:var(--good); } .plist.con .ph{ color:var(--bad); }
  .plist ul{ margin:0; padding-left:16px; color:var(--muted); }
  .ai-foot{ padding:10px 14px; border-top:1px solid var(--border); display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  .chip{ font-size:11px; font-weight:700; padding:3px 9px; border-radius:var(--pill); border:1px solid var(--border-strong); color:var(--muted); background:var(--surface); }
  .chip.law{ color:var(--accent); border-color:var(--accent-weak); background:var(--accent-weak); }
  .chip.lec{ color:var(--accent-2); }
  .ai-adopt{ margin-left:auto; }
  .ai-note{ margin-top:12px; padding:12px 14px; border:1px dashed var(--border-strong); border-radius:10px; font-size:12.5px; color:var(--muted); background:var(--surface-2); }
  .ai-note b{ color:var(--ink); }
  .ai-unknown{ padding:16px; border:1px solid var(--warn); background:var(--warn-weak); border-radius:12px; color:var(--warn); font-weight:700; font-size:13.5px; }
  .esc-banner{ display:flex; align-items:center; gap:8px; background:var(--warn-weak); border:1px solid var(--warn); color:var(--warn); font-weight:700; font-size:13px; padding:11px 14px; border-radius:10px; margin-bottom:16px; }
  .esc-banner b{ color:var(--warn); }

  .detail-foot{ display:flex; gap:8px; margin-top:22px; padding-top:16px; border-top:1px solid var(--border); }
  .detail-foot .right{ margin-left:auto; display:flex; gap:8px; }

  /* 강의 상세 폼 */
  .form-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px 20px; }
  .form-grid .f-full{ grid-column:1 / -1; }
  .form-stack{ display:flex; flex-direction:column; gap:14px; }
  .form-stack .grid2{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px 20px; }
  .form-stack .grid3{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px 20px; }
  .form-stack .inp{ width:100%; }
  .frow{ display:flex; flex-direction:column; gap:5px; }
  .frow > label{ font-size:11.5px; font-weight:800; color:var(--muted); }
  .frow .val{ font-size:14px; font-weight:600; padding:9px 12px; background:var(--surface-2); border:1px solid var(--border); border-radius:8px; }
  .form-grid .inp{ width:100%; }
  .checks{ display:flex; gap:22px; flex-wrap:wrap; padding:14px 16px; border:1px solid var(--border); border-radius:10px; background:var(--surface-2); }
  .chk{ display:flex; align-items:center; gap:9px; font-weight:700; font-size:13.5px; }
  .chk input{ width:17px; height:17px; accent-color:var(--accent); }
  .chk .desc{ font-weight:500; font-size:12px; color:var(--faint); }

  /* 파일 업로드 */
  .filedrop{ display:flex; align-items:center; gap:12px; padding:14px 16px; border:1.5px dashed var(--border-strong); border-radius:10px; background:var(--surface-2); cursor:pointer; }
  .filedrop:hover{ border-color:var(--accent); background:var(--accent-weak); }
  .fd-ic{ width:34px; height:34px; border-radius:8px; background:var(--accent-weak); color:var(--accent); display:flex; align-items:center; justify-content:center; font-size:16px; font-weight:800; flex:0 0 auto; }
  .fd-txt{ font-size:13px; color:var(--muted); }
  .fd-txt b{ color:var(--accent); }
  .fd-name{ margin-top:9px; font-size:12.5px; color:var(--ink); font-weight:600; display:flex; align-items:center; gap:8px; }
  .fd-name:empty{ display:none; }
  .fd-name .rm{ color:var(--bad); cursor:pointer; font-weight:800; font-size:11.5px; border:1px solid var(--bad); background:var(--bad-weak); border-radius:var(--pill); padding:1px 9px; }

  /* 자료(추가정보) 목록 */
  .matlist{ border:1px solid var(--border); border-radius:10px; overflow:hidden; margin-bottom:12px; }
  .matlist:empty{ display:none; }
  .mat-row{ display:flex; align-items:center; gap:12px; padding:11px 14px; border-bottom:1px solid var(--border); font-size:13.5px; }
  .mat-row:last-child{ border-bottom:0; }
  .mat-ic{ width:32px; height:32px; border-radius:8px; background:var(--accent-weak); color:var(--accent); display:flex; align-items:center; justify-content:center; font-size:14px; font-weight:800; flex:0 0 auto; }
  .mat-main{ flex:1; min-width:0; }
  .mat-name{ font-weight:700; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .mat-name a{ color:var(--accent); text-decoration:none; }
  .mat-meta{ font-size:12px; color:var(--muted); margin-top:2px; }
  .mat-type{ flex:0 0 auto; font-size:11.5px; font-weight:800; color:var(--muted); background:var(--surface-2); border:1px solid var(--border); border-radius:var(--pill); padding:2px 10px; }
  .mat-size{ flex:0 0 auto; font-size:12px; color:var(--faint); min-width:64px; text-align:right; }
  .mat-row .rm{ flex:0 0 auto; color:var(--bad); cursor:pointer; font-weight:800; font-size:11.5px; border:1px solid var(--bad); background:var(--bad-weak); border-radius:var(--pill); padding:2px 10px; }

  /* ── 강의관리: 안내 + 아코디언 트리 (단과/종합반 › 교수 › 단원+동영상) ── */
  .sub-hint{ font-size:12.5px; color:var(--muted); margin:0 0 14px; padding-left:2px; }
  .sub-hint b{ color:var(--accent); }
  .tree{ display:flex; flex-direction:column; padding:6px; }
  .trow{ display:flex; align-items:center; gap:10px; padding:11px 12px; cursor:pointer; border-radius:8px; user-select:none; }
  .trow:hover{ background:var(--surface-2); }
  .tcaret{ width:15px; text-align:center; color:var(--muted); font-size:11px; transition:transform .15s; flex:0 0 auto; }
  .tnode.open > .trow .tcaret{ transform:rotate(90deg); }
  .tdot{ width:8px; height:8px; border-radius:50%; flex:0 0 auto; }
  .tlv1 > .trow{ font-weight:800; font-size:15px; }
  .tlv1 > .trow .tdot{ background:var(--accent); }
  .tlv2 > .trow{ font-weight:700; font-size:13.5px; }
  .tlv2 > .trow .tdot{ background:var(--accent-2); }
  .tkicker{ font-size:10px; font-weight:800; letter-spacing:.4px; color:var(--faint); border:1px solid var(--border); border-radius:var(--pill); padding:1px 8px; flex:0 0 auto; }
  .tkicker.trk{ color:#fff; background:var(--accent); border-color:var(--accent); }
  .tkicker.trk2{ color:#fff; background:var(--accent-2); border-color:var(--accent-2); }
  .tsubj{ font-size:11.5px; font-weight:700; color:var(--muted); }
  .tmeta{ margin-left:auto; font-size:11.5px; color:var(--faint); font-weight:700; }
  .tchildren{ margin-left:15px; border-left:1px solid var(--border); padding-left:6px; display:none; }
  .tnode.open > .tchildren{ display:block; }
  .tleaf{ display:flex; align-items:center; gap:10px; padding:9px 12px; margin-left:29px; border-radius:8px; }
  .tleaf:hover{ background:var(--surface-2); }
  .lu-chap{ font-size:11px; font-weight:800; color:var(--accent); background:var(--accent-weak); border-radius:var(--pill); padding:2px 9px; flex:0 0 auto; min-width:38px; text-align:center; }
  .lu-play{ width:22px; height:22px; border-radius:6px; background:var(--accent-weak); color:var(--accent); display:flex; align-items:center; justify-content:center; font-size:10px; flex:0 0 auto; }
  .lu-name{ flex:1; font-weight:600; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .lu-dur{ font-size:12px; color:var(--muted); font-variant-numeric:tabular-nums; flex:0 0 auto; }
  .lu-open{ flex:0 0 auto; border:1px solid var(--border-strong); background:var(--surface); color:var(--muted); font-weight:700; font-size:11.5px; border-radius:8px; padding:4px 10px; }
  .lu-open:hover{ border-color:var(--accent); color:var(--accent); }
  .tree-empty{ padding:26px; text-align:center; color:var(--faint); }
  /* 세그먼트 토글 (기준정보 카테고리) */
  .seg{ display:inline-flex; border:1px solid var(--border-strong); border-radius:10px; overflow:hidden; margin-bottom:16px; }
  .seg button{ border:0; background:var(--surface); padding:9px 18px; font-size:13.5px; font-weight:700; color:var(--muted); border-right:1px solid var(--border); }
  .seg button:last-child{ border-right:0; }
  .seg button:hover{ color:var(--ink); }
  .seg button[aria-selected="true"]{ background:var(--accent); color:#fff; }
  /* 2단 토글: 상위(대)=accent, 하위(중·교수)=accent-2 */
  #lecSeg, #qnaTypeSeg{ margin-bottom:8px; }
  .seg.seg-prof button[aria-selected="true"]{ background:var(--accent-2); color:#fff; }
  /* 강의유형 그룹(큰 단원) 헤더 행 */
  table.grid tbody tr.grp td{ text-align:left; background:var(--accent-weak); color:var(--accent); font-weight:800; font-size:13px; padding:9px 14px; }
  table.grid tbody tr.grp td .gcnt{ color:var(--muted); font-weight:700; font-size:12px; margin-left:8px; }
  table.grid tbody tr.grp td .gbar{ display:inline-block; width:3px; height:13px; background:var(--accent); border-radius:2px; vertical-align:-2px; margin-right:8px; }
  /* 정보관리 인라인 편집 */
  .base-inp{ width:100%; border:1px solid var(--border-strong); border-radius:8px; padding:7px 10px; font-size:13px; font-family:inherit; background:var(--surface); color:var(--ink); }
  .base-act{ display:inline-flex; gap:6px; justify-content:center; }
  .icode{ font-variant-numeric:tabular-nums; color:var(--muted); font-weight:700; }
  .newtag{ font-size:10.5px; font-weight:800; color:var(--accent); background:var(--accent-weak); border-radius:var(--pill); padding:1px 8px; }
  /* 신규등록 폼: 대/중/소 레벨 뱃지 */
  .lv-tag{ font-size:9.5px; font-weight:800; margin-left:7px; padding:1px 7px; border-radius:var(--pill); flex:0 0 auto; }
  .lv-tag.lv1{ color:#fff; background:var(--accent); }
  .lv-tag.lv2{ color:#fff; background:var(--accent-2); }
  .lv-tag.lv3{ color:var(--muted); background:var(--surface-2); border:1px solid var(--border-strong); }
  /* 읽기전용 값(수정 폼에서 대중소 관리 대상 필드) */
  .ro-v{ display:inline-block; padding:8px 11px; font-weight:700; color:var(--muted); background:var(--surface-2); border:1px dashed var(--border-strong); border-radius:8px; }

  /* 모달(자람AI 대기 영상 동기화 등) */
  .modal-overlay{ position:fixed; inset:0; background:rgba(15,22,32,.5); display:flex; align-items:center; justify-content:center; z-index:1000; padding:24px; }
  .modal-box{ background:var(--surface); border:1px solid var(--border); border-radius:14px; width:min(880px,96vw); max-height:86vh; display:flex; flex-direction:column; box-shadow:0 18px 50px rgba(0,0,0,.25); overflow:hidden; }
  .modal-head{ display:flex; align-items:center; gap:8px; padding:16px 18px; border-bottom:1px solid var(--border); }
  .modal-box .tbl-wrap{ padding:8px 12px 16px; }

  /* 페이징 */
  .pager{ display:flex; justify-content:center; gap:4px; padding:14px 0 2px; }
  .pager:empty{ display:none; }
  .pg-btn{ min-width:30px; height:30px; border:1px solid var(--border-strong); background:var(--surface); color:var(--muted); font-weight:700; font-size:12.5px; border-radius:8px; padding:0 8px; }
  .pg-btn:hover:not(:disabled){ border-color:var(--accent); color:var(--accent); }
  .pg-btn.on{ background:var(--accent); color:#fff; border-color:var(--accent); }
  .pg-btn:disabled{ opacity:.4; cursor:default; }

  .foot-note{ text-align:center; color:var(--faint); font-size:12px; padding:26px 0 12px; }

  /* 관리자 로그인 게이트 */
  #adminGate{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px; background:var(--surface-2); }
  .gate-card{ width:100%; max-width:384px; background:var(--surface); border:1px solid var(--border); border-radius:16px; box-shadow:var(--shadow); padding:32px 30px; }
  .gate-brand{ display:flex; align-items:center; gap:11px; margin-bottom:24px; }
  .gate-brand .badge{ width:40px; height:40px; border-radius:11px; background:var(--accent); display:flex; align-items:center; justify-content:center; }
  .gate-brand .badge svg{ width:64%; height:64%; }
  .gate-brand .wm{ font-size:17px; font-weight:800; }
  .gate-brand .wm .ai{ color:var(--accent); }
  .gate-brand .tag{ font-size:10px; font-weight:800; letter-spacing:1.5px; color:var(--faint); margin-top:1px; }
  .gate-title{ font-size:21px; font-weight:800; letter-spacing:-.3px; }
  .gate-sub{ font-size:13px; color:var(--muted); margin:5px 0 22px; }
  .gate-label{ display:block; font-size:12px; font-weight:800; color:var(--muted); margin:0 0 6px 2px; }
  .gate-inp{ width:100%; margin-bottom:14px; }
  .gate-err{ font-size:12.5px; color:var(--bad); background:var(--bad-weak); border:1px solid var(--bad); border-radius:8px; padding:9px 12px; margin-bottom:13px; }
  .gate-btn{ width:100%; padding:12px; font-size:14px; margin-top:4px; }
  .gate-hint{ text-align:center; font-size:12px; color:var(--faint); margin-top:16px; }
  .gate-hint b{ color:var(--muted); }

  @media (max-width:900px){ .ai-grid{ grid-template-columns:1fr; } .meta-grid{ grid-template-columns:1fr 1fr; } .meta-grid .mcell:nth-child(4n){ border-right:1px solid var(--border); } .meta-grid .mcell:nth-child(2n){ border-right:0; } .form-grid{ grid-template-columns:1fr; } .form-stack .grid2, .form-stack .grid3{ grid-template-columns:1fr; } .stats{ display:none; } }
/* ── 자람AI 처리 상태 ── */
.ai-status{ margin-top:14px; padding:12px 14px; border:1px solid #e2e8f0; border-radius:10px; background:#f8fafc; }
.ai-status-head{ font-size:12.5px; font-weight:800; color:#334155; margin-bottom:10px; display:flex; align-items:center; gap:8px; }
.ai-status-row{ display:flex; flex-wrap:wrap; gap:8px; }
.ai-stg{ display:flex; align-items:center; gap:6px; padding:5px 10px; border-radius:999px; font-size:12px; font-weight:700; border:1px solid transparent; }
.ai-stg .dot{ width:7px; height:7px; border-radius:50%; }
.ai-stg.wait{ background:#eef2f7; color:#64748b; } .ai-stg.wait .dot{ background:#94a3b8; }
.ai-stg.run{ background:#e0f2fe; color:#0369a1; } .ai-stg.run .dot{ background:#0ea5e9; animation:aiblink 1s infinite; }
.ai-stg.done{ background:#e7f8f0; color:#047857; } .ai-stg.done .dot{ background:#10b981; }
.ai-stg.fail{ background:#fdecec; color:#c0392b; } .ai-stg.fail .dot{ background:#e74c3c; }
.ai-status-meta{ margin-top:8px; font-size:11.5px; color:#94a3b8; }
@keyframes aiblink{ 0%,100%{opacity:1} 50%{opacity:.3} }
.btn.xs{ padding:3px 9px; font-size:11px; border-radius:7px; margin-left:auto; }

/* 현재 진행 단계(크게) */
.ai-phase{ display:inline-flex; align-items:center; gap:7px; padding:6px 13px; border-radius:999px; font-size:13px; font-weight:800; margin-right:4px; }
.ai-phase.wait{ background:#eef2f7; color:#475569; } .ai-phase.wait .dot{ background:#94a3b8; }
.ai-phase.run{ background:#dbeafe; color:#1d4ed8; } .ai-phase.run .dot{ background:#2563eb; animation:aiblink 1s infinite; }
.ai-phase.done{ background:#dcfce7; color:#15803d; } .ai-phase.done .dot{ background:#16a34a; }
.ai-phase.fail{ background:#fee2e2; color:#b91c1c; } .ai-phase.fail .dot{ background:#dc2626; }
.ai-phase .dot{ width:8px; height:8px; border-radius:50%; }
/* 전체 진행률 바 */
.ai-bar{ flex-basis:100%; height:8px; background:#eef2f7; border-radius:999px; overflow:hidden; }
.ai-bar-fill{ height:100%; background:linear-gradient(90deg,#2563eb,#0ea5e9); border-radius:999px; transition:width .4s ease; }
.ai-bar-fill.fail{ background:#dc2626; }
/* 진행중: 폭이 안 변해도 흐르는 줄무늬로 계속 갱신중임을 표시 */
.ai-bar-fill.live{
  background-image:
    repeating-linear-gradient(45deg, rgba(255,255,255,.30) 0 10px, rgba(255,255,255,0) 10px 20px),
    linear-gradient(90deg,#2563eb,#0ea5e9);
  background-size:40px 100%, 100% 100%;
  animation:aistripe .8s linear infinite;
}
@keyframes aistripe{ from{ background-position:0 0, 0 0; } to{ background-position:40px 0, 0 0; } }
/* 자동 갱신 인디케이터 + 회전 스피너 */
.ai-live{ display:inline-flex; align-items:center; gap:4px; color:#2563eb; font-weight:700; }
.ai-live .spin{ display:inline-block; animation:aispin 1.1s linear infinite; }
.spin{ display:inline-block; animation:aispin 1.1s linear infinite; }
@keyframes aispin{ to{ transform:rotate(360deg); } }
