/* admin-plus.css — 관리자 화면 보강(2026-10-12). admin.html 의 기존 토큰(--vio·--navy·--line·--card …)만 쓰고
   :root 변수를 새로 정의하지 않는다(assets/onae-theme.css 토큰과 충돌 방지). 모든 클래스는 ap- 로 시작. */
.ap-top{margin-bottom:8px}
.ap-nav{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:10px 12px;margin-bottom:14px;box-shadow:var(--shadow-1)}
.ap-group{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}
.ap-gl{font-size:11.5px;font-weight:800;color:var(--muted);margin-right:2px;white-space:nowrap}
.ap-navbtn{display:none}
.ap-h2{font-size:19px;color:var(--navy);margin-bottom:6px}
.ap-empty{text-align:center;padding:28px 12px!important;color:var(--muted);line-height:1.7}
.ap-pager{display:flex;align-items:center;gap:8px;justify-content:center;margin:10px 0;font-size:12.5px;color:var(--muted);flex-wrap:wrap}
.ap-pager:empty{display:none}
.ap-listfoot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;font-size:12px}
.ap-listfoot select{width:auto;padding:6px 8px;font-size:12.5px}
.ap-check{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:var(--muted);margin:0;cursor:pointer}
.ap-check input{width:18px;height:18px;margin:0}
/* 진행률 */
.ap-prog .ap-ph{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.ap-prog h3{font-size:15px;color:var(--navy)}
.ap-prog .ap-ph .muted{font-size:12px}
.ap-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.ap-kpis>div{background:var(--tint-vio);border:1px solid var(--line);border-radius:var(--radius-md);padding:11px 8px;text-align:center;min-width:0}
.ap-kpis b{display:block;font-size:21px;color:var(--navy);font-variant-numeric:tabular-nums}
.ap-kpis span{display:block;font-size:11.5px;color:var(--muted);font-weight:700;margin-top:2px}
.ap-bars{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;height:112px;margin-top:12px;align-items:end}
.ap-bar{position:relative;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;min-width:0}
.ap-bar i{display:block;width:70%;max-width:34px;background:linear-gradient(180deg,var(--vio),var(--mint));border-radius:6px 6px 2px 2px;margin-bottom:34px}
.ap-bar span{position:absolute;bottom:16px;font-size:11px;color:var(--muted)}
.ap-bar b{position:absolute;bottom:0;font-size:12px;color:var(--navy);font-variant-numeric:tabular-nums}
.ap-tests{margin-top:12px}
.ap-sub{font-size:12px;font-weight:800;color:var(--navy);margin-bottom:6px}
.ap-trow{display:flex;align-items:center;gap:8px;font-size:12.5px;margin:4px 0;min-width:0}
.ap-tn{flex:0 0 38%;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;color:var(--navy)}
.ap-tt{flex:1;height:10px;background:var(--line);border-radius:5px;overflow:hidden;min-width:40px}
.ap-tt i{display:block;height:100%;background:linear-gradient(90deg,var(--vio),var(--mint))}
.ap-tv{flex:0 0 auto;color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}
@media(max-width:640px){
 .ap-navbtn{display:inline-block}
 .ap-nav{display:none;flex-direction:column;gap:10px}
 .ap-nav.ap-open{display:flex}
 .ap-group .btn{flex:1 1 auto}
 .ap-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
 .ap-tn{flex-basis:44%}
}
@media print{.ap-nav,.ap-navbtn,.ap-pager{display:none!important}}
/* [R3-W1 2026-10-14] 학생 화면과 같은 모양: 로고 표기(마이베스트 NEXT, NEXT 보라)·버튼 44px·평평한 막대(그라데이션 없음)·포커스 링 */
.logo{letter-spacing:0!important;font-size:18px}
.logo span{color:var(--vio)!important}
.btn,.btn.sm,.ap-nav .btn{min-height:44px}
.ap-bar i{background:var(--vio)!important}
#teacher-entry{min-height:44px}
.btn:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #5A4BD6;outline-offset:2px}
.pbar i,.rbar .tr i,.minibar i,.ap-tt i{background:var(--vio)!important}
.ap-next{border:2px solid var(--vio)}
.ap-nextl{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ap-nextl li{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.ap-nextl li:first-child{border-top:0}
.ap-nextl li>div{flex:1;min-width:0}
.ap-nextl b{display:block;font-size:15px;color:var(--navy)}
.ap-nextl span{display:block;font-size:13px;color:var(--muted);line-height:1.55;margin-top:2px}
@media(max-width:520px){.ap-nextl li{flex-direction:column;align-items:stretch}.ap-nextl .btn{width:100%}}
