@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css");
/* NES — 공통 디자인 시스템. 딥네이비 + 스파르타레드 포인트, Pretendard */

/* 감춘 것은 어느 화면에서든 감춰야 한다.
   .side a{display:flex} 같은 규칙이 [hidden]을 이겨서, 조교 화면에서 숨겨 둔
   「강사 창구」·「관리자」 링크가 그대로 보였다. 화면마다 따로 적지 않도록 여기 한 줄로 둔다. */
[hidden]{display:none !important}
:root{
  --navy:#0F2C4C; --ink-navy:#0A1F38; --red:#B90920; --coral:#E23A4E;
  --data:#2E6BE6; --green:#12A150; --amber:#F5A524;
  --ink:#14202e; --muted:#5c6a7d; --line:#e4e8ee; --card:#ffffff; --bg:#f5f7fa; --mist:#eef2f7;
  --radius:14px; --shadow:0 1px 3px rgba(15,44,76,.08),0 6px 20px rgba(15,44,76,.06);
  --font:"Pretendard","Malgun Gothic",system-ui,-apple-system,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--data);text-decoration:none}
h1,h2,h3{letter-spacing:-.02em;margin:0 0 .4em}
.wrap{max-width:1100px;margin:0 auto;padding:24px}
.muted{color:var(--muted)}
.center{text-align:center}

/* 버튼 */
.btn{display:inline-flex;align-items:center;gap:8px;justify-content:center;border:0;border-radius:10px;
  padding:11px 18px;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit;background:var(--navy);color:#fff;transition:.15s}
.btn:hover{filter:brightness(1.08)}
.btn.red{background:var(--red)}
.btn.ghost{background:transparent;color:var(--navy);border:1.5px solid var(--line)}
.btn.sm{padding:7px 12px;font-size:13px;border-radius:8px}
.btn.lg{padding:15px 26px;font-size:17px}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* 카드 */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,1fr)} .g3{grid-template-columns:repeat(3,1fr)} .g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:800px){.g2,.g3,.g4{grid-template-columns:1fr}}

/* 폼 */
label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin:12px 0 5px}
input,select,textarea{width:100%;padding:11px 13px;border:1.5px solid var(--line);border-radius:10px;font-size:15px;font-family:inherit;background:#fff;color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--navy)}

/* 배지·태그 */
/* 좁은 화면에서 '미등원'·'대기' 같은 짧은 배지가 세로로 쪼개지지 않게 한다 */
.tag{display:inline-block;white-space:nowrap;font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--mist);color:var(--navy)}
.tag.red{background:#fdeaec;color:var(--red)} .tag.green{background:#e6f6ee;color:var(--green)} .tag.amber{background:#fef4e2;color:#a56a00}
.tag.data{background:#e8f0ff;color:var(--data)}

/* 상단바 */
.topbar{background:var(--navy);color:#fff;padding:12px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.topbar .brand{font-weight:800;font-size:18px;display:flex;align-items:center;gap:9px}
.topbar .brand .dot{color:#fff;background:var(--red);width:10px;height:10px;border-radius:3px;display:inline-block;transform:rotate(45deg)}
.topbar a,.topbar button{color:#cfe0f3}
.topbar .nav{display:flex;gap:16px;align-items:center;font-size:14px;font-weight:600}

/* 테이블 */
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}
th{color:var(--muted);font-weight:700;font-size:12.5px;background:var(--mist)}
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px}

/* 게이지 */
/* span으로 쓰면 inline이 되어 height가 먹지 않고 카드 밖으로 넘친다 — 항상 블록으로 둔다 */
.gauge{display:block;height:8px;background:var(--mist);border-radius:99px;overflow:hidden}
.gauge>i{display:block;height:100%;background:var(--data);border-radius:99px}
.gauge>i.full{background:var(--red)}

/* KPI */
.kpi{padding:18px 20px}
.kpi .n{font-size:30px;font-weight:800;color:var(--navy);font-variant-numeric:tabular-nums}
.kpi .l{font-size:13px;color:var(--muted);font-weight:600}
.kpi .n .u{font-size:16px;color:var(--muted)}

/* 로고 마크 (인라인 SVG용) */
.logomark{width:26px;height:26px;flex:none}

/* 토스트 */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--ink-navy);color:#fff;padding:12px 20px;border-radius:10px;font-weight:600;box-shadow:var(--shadow);z-index:9999;opacity:0;transition:.2s}
.toast.show{opacity:1}

/* ============================================================
   프로그램 껍데기 (shell) — 좌측 메뉴 + 본문
   대분류는 5개로 고정한다: 대시보드 · 수업 · 학생 · 숙제와 프린트 · 기록
   화면을 새로 만들지 말고 이 안의 '뷰'로 붙인다(주소를 늘리지 않기 위함).
   ============================================================ */
.shell{display:grid;grid-template-columns:216px minmax(0,1fr);min-height:calc(100vh - 56px)}
.side{background:var(--ink-navy);padding:14px 10px;display:flex;flex-direction:column;gap:2px}
.side .grp{color:#7f97b5;font-size:11px;font-weight:800;letter-spacing:.04em;padding:14px 12px 6px}
.side a,.side button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  background:none;border:0;color:#cfe0f3;font:inherit;font-size:14px;font-weight:700;
  padding:10px 12px;border-radius:9px;cursor:pointer;text-decoration:none;line-height:1.3}
.side a:hover,.side button:hover{background:rgba(255,255,255,.08);color:#fff}
.side [aria-current="page"]{background:var(--navy);color:#fff;box-shadow:inset 3px 0 0 var(--red)}
.side .ic{width:18px;text-align:center;flex:0 0 18px;opacity:.9}
.side .num{margin-left:auto;background:var(--red);color:#fff;border-radius:999px;
  font-size:11px;font-weight:800;padding:1px 7px;min-width:20px;text-align:center}
.side .num.zero{background:rgba(255,255,255,.14);color:#9fb6d2}
.side .foot{margin-top:auto;padding:10px 12px;color:#7f97b5;font-size:11.5px;font-weight:600}
.main{padding:22px 26px;min-width:0}
@media(max-width:820px){
  .shell{grid-template-columns:1fr}
  .side{flex-direction:row;overflow-x:auto;padding:8px;gap:4px}
  .side .grp,.side .foot{display:none}
  .side a,.side button{width:auto;white-space:nowrap}
  .main{padding:16px 14px}
}

/* 대시보드 카드 */
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:18px}
.kpi{background:var(--card);border:1.5px solid var(--line);border-radius:12px;padding:13px 15px;
     text-align:left;font-family:inherit;cursor:pointer;width:100%;display:block}
.kpi:hover{border-color:var(--navy)}
.kpi .k{font-size:12.5px;color:var(--muted);font-weight:700}
.kpi .v{font-size:27px;font-weight:800;color:var(--navy);font-variant-numeric:tabular-nums;line-height:1.15}
.kpi.warn{border-color:var(--red)} .kpi.warn .v{color:var(--red)}
@media(max-width:820px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ══ 1등급학원 로그인 뒤 화면 — 디자인·폰 최적화 (2026-10-01 대표 「로그인 한 후 … 1. 모바일에 최적화」) ══
   홈페이지와 같은 기준: Pretendard · 흰 머리글 · 막대 세 개 로고 · 청록 #00C2C2(선택·주요 단추) · 빨강은 경고에만.
   화면마다 따로 적은 머리글 색(흰 글씨)을 여기서 한 번에 덮는다. */
:root{--font:"Pretendard Variable","Pretendard","Malgun Gothic",system-ui,-apple-system,"Segoe UI",sans-serif;
  --navy:#1a1a1a;--ink-navy:#111;--ink:#1a1a1a;--muted:#6b6b6b;--line:#e8e8e8;--bg:#f5f5f5;--mist:#f2f4f4;--teal:#00C2C2;--teal-t:#00a3a3;--teal-bg:#E6FAFA}
.btn{background:var(--teal);border-radius:10px}
.btn.ghost{color:#1a1a1a}
input:focus,select:focus,textarea:focus{border-color:var(--teal)}
.lg-bars{display:inline-flex;align-items:flex-end;gap:3px;height:22px;flex:none}
.lg-bars i{display:block;width:6px;border-radius:2px}
.lg-bars i:nth-child(1){height:9px;background:#c8c8c8}.lg-bars i:nth-child(2){height:15px;background:#5e5e5e}.lg-bars i:nth-child(3){height:22px;background:#00C2C2}
.topbar .wm{font-size:17px;font-weight:700;letter-spacing:-.045em;color:#1a1a1a;white-space:nowrap}.topbar .wm em{font-style:normal;font-weight:500;color:#525252}
.topbar .brand .role{font-size:13px;font-weight:600;color:#00a3a3;white-space:nowrap}
html .topbar{position:sticky;top:0;z-index:40;background:#fff;color:#1a1a1a;border-bottom:1px solid var(--line);padding:10px 20px;min-height:52px}
html .topbar .brand{gap:9px;color:#1a1a1a;white-space:nowrap;min-width:0}
html .topbar .brand svg{display:none}
html .topbar a,html .topbar button,html .topbar .nav a{color:#3a3a3a!important}
html .topbar .nav{gap:12px;min-width:0}
html .topbar .nav .who,html .topbar .who,html .topbar #who,html .topbar #meInfo{color:#1a1a1a!important;font-weight:600;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html .topbar .logout,html .topbar #btnLogout,html .topbar #logout{border:1px solid var(--line);border-radius:999px;padding:6px 12px;background:#fff;font-size:13px;font-weight:700;white-space:nowrap}
html .topbar :focus-visible{outline-color:var(--teal)}
/* 왼쪽 큰 메뉴 — 밝게 */
.side{background:#fff;border-right:1px solid var(--line)}
.side .grp{color:#9a9a9a}
.side a,.side button{color:#3a3a3a}
.side a:hover,.side button:hover{background:var(--mist);color:#1a1a1a}
.side [aria-current="page"]{background:var(--teal-bg);color:#007f7f;box-shadow:inset 3px 0 0 var(--teal)}
.side .num.zero{background:#eee;color:#8a8a8a}
.side .foot{color:#9a9a9a}
/* 관리자 탭 */
.tabs button[aria-selected="true"]{color:#1a1a1a;border-bottom-color:var(--teal)!important}
/* ── 휴대폰 ── */
@media(max-width:820px){
  .side{position:sticky;top:52px;z-index:30;border-right:0;border-bottom:1px solid var(--line);padding:8px 10px;gap:6px;scrollbar-width:none}
  .side::-webkit-scrollbar{display:none}
  .side a,.side button{border:1px solid var(--line);border-radius:999px;padding:8px 14px;min-height:40px;font-size:14px}
  .side [aria-current="page"]{box-shadow:none;border-color:var(--teal)}
  .side .ic{display:none}
  /* 세 묶음(학생 정보 입력 · 1. 수업 관리 · 2. 결과 기록)이 폰에서도 보이게 — 단추 줄 사이에 작은 이름표 */
  .side .grp:not([hidden]){display:flex;align-items:center;flex:none;padding:0 2px 0 10px;white-space:nowrap;font-size:11.5px;letter-spacing:0;color:#00a3a3}
  .side .grp:first-child{padding-left:2px}
}
@media(max-width:640px){
  html .topbar{padding:8px 14px;gap:8px}
  .topbar .wm{font-size:16px}.topbar .brand .role{font-size:12px}
  html .topbar .nav{gap:8px}
  html .topbar .nav .who,html .topbar .who,html .topbar #who,html .topbar #meInfo{max-width:30vw;font-size:12.5px}
  html .topbar #livetxt{display:none}
  html .topbar .nav{overflow-x:auto;scrollbar-width:none}
  .main,.wrap{padding-left:14px;padding-right:14px}
  .card{padding:16px;border-radius:14px}
  input,select,textarea{font-size:16px;min-height:44px}
  .btn{min-height:42px}
  .tbl-wrap{-webkit-overflow-scrolling:touch}
  .tabs button{padding:10px 12px;font-size:14px}
}
