/* 아벨학원 선생님 화면 (홈페이지와 다른 업무용 화면) */
body.admin{margin:0;background:#F4F3EF;font-family:'Noto Sans KR','Noto Sans CJK KR',system-ui,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;color:#141414;word-break:keep-all;-webkit-font-smoothing:antialiased}
.admin *{box-sizing:border-box}
.admin [hidden]{display:none!important}
.admin a{color:#2563EB}.admin a:hover{color:#1D4ED8}
.admin a:focus-visible,.admin button:focus-visible,.admin input:focus-visible,.admin select:focus-visible,.admin summary:focus-visible{outline:2px solid #2563EB;outline-offset:2px}
.admin h1,.admin h2,.admin h3{margin:0;letter-spacing:-0.02em}

/* 상단 바 */
.adm-top{position:sticky;top:0;z-index:10;background:#FFFFFF;border-bottom:1px solid #E4E1DB}
.adm-top-in{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 20px;padding:10px 24px}
.admin .adm-brand,.admin .adm-brand:hover{display:flex;align-items:center;gap:10px;text-decoration:none;color:#141414}
.adm-brand img{display:block;height:30px;width:auto}
.adm-brand strong{font-size:17px}
.adm-badge{display:inline-block;padding:2px 8px;border-radius:4px;background:#141414;color:#FFFFFF;font-size:12px;font-weight:700}
.adm-who{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;font-size:14px;color:#5C5C5C}
.adm-strip{height:3px;background:linear-gradient(90deg,#FF5A1F 0%,#FF5A1F 33.33%,#FFB400 33.33%,#FFB400 66.66%,#2563EB 66.66%,#2563EB 100%)}

/* 버튼 */
.a-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:0 16px;border:1px solid #141414;border-radius:8px;background:#FFFFFF;color:#141414;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap}
.a-btn:hover{background:#F7F6F3;color:#141414}
.a-btn.primary{background:#2563EB;border-color:#2563EB;color:#FFFFFF}.a-btn.primary:hover{background:#1D4ED8;border-color:#1D4ED8;color:#FFFFFF}
.a-btn.danger{border-color:#B42318;color:#B42318}.a-btn.danger:hover{background:#FEF3F2;color:#912018}
.a-btn.small{min-height:34px;padding:0 12px;font-size:13px}
.a-btn:disabled{opacity:.55;cursor:wait}

/* 레이아웃 */
.adm-layout{display:flex;align-items:flex-start;max-width:1320px;margin:0 auto}
.adm-nav{position:sticky;top:64px;flex:none;width:216px;display:flex;flex-direction:column;gap:4px;padding:24px 16px}
.adm-nav button{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 14px;border:0;border-radius:8px;background:transparent;font-family:inherit;font-size:15px;font-weight:500;color:#3D3D3D;text-align:left;cursor:pointer}
.adm-nav button:hover{background:#ECEAE4;color:#141414}
.adm-nav button[aria-selected="true"]{background:#141414;color:#FFFFFF;font-weight:700}
.adm-nav svg{flex:none}
.adm-main{flex:1 1 auto;min-width:0;padding:24px 24px 64px}
.view{display:flex;flex-direction:column;gap:20px}
.view-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
.view-head h1{font-size:26px;font-weight:700}
.view-note{margin:0;font-size:14px;line-height:1.6;color:#5C5C5C}

/* 카드 */
.card{background:#FFFFFF;border:1px solid #E4E1DB;border-radius:12px;padding:24px}
.card-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;margin-bottom:18px}
.card-head h2{font-size:18px;font-weight:700}
.card-sub{font-size:13px;color:#5C5C5C}
.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}

/* 요약 숫자 */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.kpi{background:#FFFFFF;border:1px solid #E4E1DB;border-radius:12px;padding:18px 20px;display:flex;flex-direction:column;gap:6px}
.kpi-label{font-size:14px;color:#5C5C5C}
.kpi-value{font-size:32px;font-weight:700;letter-spacing:-0.02em;line-height:1.2}
.kpi-value small{font-size:16px;font-weight:600;margin-left:2px}
.kpi-delta{font-size:13px;color:#5C5C5C}

/* 입력 */
.a-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px 16px;align-items:end}
.a-fld{display:flex;flex-direction:column;gap:6px;min-width:0}
.a-fld label{font-size:14px;font-weight:600}
.a-fld .hint{font-size:12px;color:#5C5C5C}
.a-input{height:42px;width:100%;padding:0 12px;border:1px solid #8A8A8A;border-radius:8px;background:#FFFFFF;font-family:inherit;font-size:15px;color:#141414}
.a-input:focus-visible{border-color:#2563EB}
.a-row{display:flex;gap:8px}
.a-msg{margin:14px 0 0;padding:12px 14px;border-radius:8px;font-size:14px;line-height:1.6}
.a-msg.ok{background:#E8F0FE;color:#1D4ED8}
.a-msg.err{background:#FDECE6;color:#8A2E0C}
.a-filters{display:flex;flex-wrap:wrap;gap:8px}
.a-filters .a-input{width:auto;min-width:120px}

/* 표 */
.tbl-wrap{overflow-x:auto;border:1px solid #E4E1DB;border-radius:10px}
.tbl{width:100%;border-collapse:collapse;font-size:14px;line-height:1.5}
.tbl th{position:sticky;top:0;background:#F7F6F3;font-weight:600;color:#3D3D3D;text-align:left;padding:10px 12px;white-space:nowrap}
.tbl td{padding:10px 12px;border-top:1px solid #ECE9E3;vertical-align:middle}
.tbl td.num,.tbl th.num{text-align:right;font-variant-numeric:tabular-nums}
.tbl tr.off td{color:#8A8A8A}
.tbl select{height:34px;padding:0 8px;border:1px solid #CFCBC3;border-radius:6px;font-family:inherit;font-size:14px;background:#FFFFFF}
.pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.pill.on{background:#E8F0FE;color:#1D4ED8}
.pill.off{background:#F2F0EB;color:#5C5C5C}
.subj{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:700}
.subj-ko{background:#FF5A1F;color:#141414}.subj-en{background:#FFB400;color:#141414}.subj-ma{background:#2563EB;color:#FFFFFF}
.empty{margin:0;padding:28px 16px;text-align:center;font-size:14px;color:#5C5C5C}

/* 월별 막대그래프 */
.legend{display:flex;flex-wrap:wrap;gap:16px;font-size:13px;color:#3D3D3D}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px}
.c-a{background:#FF5A1F}.c-b{background:#2563EB}
.chart{position:relative;display:grid;grid-template-columns:36px 1fr;grid-template-rows:220px auto;column-gap:8px}
.chart-y{position:relative;grid-row:1}
.chart-y span{position:absolute;right:0;transform:translateY(50%);font-size:12px;color:#5C5C5C;font-variant-numeric:tabular-nums}
.chart-plot{position:relative;grid-row:1;grid-column:2;border-bottom:1px solid #CFCBC3}
.chart-grid{position:absolute;left:0;right:0;height:1px;background:#ECE9E3}
.chart-cols{position:absolute;inset:0;display:flex;align-items:stretch}
.cg{flex:1 1 0;display:flex;align-items:flex-end;justify-content:center;gap:2px;border-radius:6px;cursor:default}
.cg:hover,.cg:focus-visible{background:rgba(20,20,20,.04)}
.bar{display:block;width:min(18px,30%);border-radius:4px 4px 0 0}
.chart-x{grid-row:2;grid-column:2;display:flex;padding-top:8px}
.chart-x span{flex:1 1 0;text-align:center;font-size:12px;color:#5C5C5C;white-space:nowrap}
.tip{position:absolute;z-index:5;pointer-events:none;min-width:150px;padding:10px 12px;border-radius:8px;background:#141414;color:#FFFFFF;font-size:13px;line-height:1.6;box-shadow:0 8px 24px rgba(0,0,0,.2)}
.tip b{font-size:15px}
.tip .k{display:inline-block;width:12px;height:2px;margin-right:6px;vertical-align:middle}
.tip .muted{color:#CFCFCF}
details.tbl-view{margin-top:16px}
details.tbl-view summary{cursor:pointer;font-size:14px;font-weight:600;color:#2563EB;padding:4px 0}
details.tbl-view .tbl-wrap{margin-top:10px}

/* 막대 목록 (학년·과목·시간대) */
.blist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.blist li{display:grid;grid-template-columns:96px 1fr 40px;align-items:center;gap:10px;font-size:14px}
.blist .name{color:#3D3D3D;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.blist .track{height:10px;border-radius:5px;background:#F2F0EB;overflow:hidden}
.blist .fill{display:block;height:100%;border-radius:0 5px 5px 0;background:#2563EB}
.blist .cnt{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}

/* 영상 목록 */
.vrow{display:grid;grid-template-columns:112px 1fr auto;gap:14px;align-items:center;padding:12px 0;border-top:1px solid #ECE9E3}
.vrow:first-child{border-top:0}
.vrow img{display:block;width:112px;aspect-ratio:16/9;object-fit:cover;border-radius:6px;background:#141414}
.vrow .meta{display:flex;flex-direction:column;gap:4px;min-width:0}
.vrow .meta strong{font-size:15px;overflow-wrap:anywhere}
.vrow .meta span{font-size:13px;color:#5C5C5C}
.vrow .acts{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.preview{display:flex;align-items:center;gap:12px;margin-top:12px;font-size:13px;color:#5C5C5C}
.preview img{width:128px;aspect-ratio:16/9;object-fit:cover;border-radius:6px;background:#141414}

/* 로그인 */
.adm-gate{display:flex;justify-content:center;padding:72px 16px}
.adm-gate .card{width:min(420px,100%);display:flex;flex-direction:column;gap:16px;padding:32px}

/* 좁은 화면: 왼쪽 메뉴를 위쪽 탭으로 */
@media (max-width:820px){
  .adm-layout{flex-direction:column}
  .adm-nav{position:static;width:100%;flex-direction:row;overflow-x:auto;padding:12px 16px 0;gap:6px}
  .adm-nav button{flex:none}
  .adm-main{padding:16px 16px 48px}
  .card{padding:18px}
  .vrow{grid-template-columns:88px 1fr}
  .vrow img{width:88px}
  .vrow .acts{grid-column:1 / -1;justify-content:flex-start}
}

/* ── 선생님 로그인·가입 ── */
.gate-card{width:min(440px,100%)}
.gate-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:10px;background:#F2F0EB}
.gate-tabs button{min-height:40px;border:0;border-radius:8px;background:transparent;font-family:inherit;font-size:14px;font-weight:600;color:#5C5C5C;cursor:pointer}
.gate-tabs button[aria-selected="true"]{background:#FFFFFF;color:#141414;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.gate-form{display:flex;flex-direction:column;gap:16px}
.slot-info{margin:0;padding:12px 14px;border-radius:8px;background:#F7F6F3;font-size:14px;line-height:1.6;color:#3D3D3D}
.slot-info.open{background:#E8F0FE;color:#1D4ED8}
.a-btn.big{min-height:46px;font-size:15px}

/* ── 메뉴 배지·대시보드 ── */
.nav-badge{margin-left:auto;min-width:22px;padding:1px 7px;border-radius:999px;background:#FF5A1F;color:#141414;font-size:12px;font-weight:700;text-align:center}
.adm-nav button[aria-selected="true"] .nav-badge{background:#FFB400}
.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px}
/* 학생 수강 과목 (켜고 끄는 단추) */
.subj-toggles{display:inline-flex;gap:4px}
.subj-tg{min-width:44px;min-height:34px;padding:0 8px;border:1px solid #CFCBC3;border-radius:6px;background:#FFFFFF;color:#5C5C5C;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer}
.subj-tg:hover{border-color:#141414;color:#141414}
.subj-tg[aria-pressed="true"].subj-ko{background:#FF5A1F;border-color:#FF5A1F;color:#141414}
.subj-tg[aria-pressed="true"].subj-en{background:#FFB400;border-color:#FFB400;color:#141414}
.subj-tg[aria-pressed="true"].subj-ma{background:#2563EB;border-color:#2563EB;color:#FFFFFF}
.subj-tg:disabled{opacity:.6;cursor:wait}
#stu-subj-alert .alert{margin-bottom:14px}
.sf-subjects{margin:0;padding:0;border:0;min-width:0}
.sf-subjects legend{padding:0;margin-bottom:6px;font-size:14px;font-weight:600}
.sf-subj-row{display:flex;flex-wrap:wrap;gap:6px 16px;min-height:42px;align-items:center}
.sf-subj-row label{display:inline-flex;align-items:center;gap:6px;font-size:15px;cursor:pointer}
.sf-subj-row input{width:18px;height:18px;accent-color:#2563EB}
.alert{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding:14px 18px;border-radius:10px;background:#FFF4E5;border:1px solid #FFD8A8;font-size:14px;line-height:1.6}
.mini-list{list-style:none;margin:0;padding:0}
.mini-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 12px;padding:10px 0;border-top:1px solid #ECE9E3;font-size:14px}
.mini-list li:first-child{border-top:0;padding-top:0}
.mini-list .sub{color:#5C5C5C;font-size:13px}
.link-btn{padding:0;border:0;background:none;font-family:inherit;font-size:inherit;font-weight:700;color:#2563EB;cursor:pointer;text-align:left}
.link-btn:hover{color:#1D4ED8;text-decoration:underline}
.pill.new{background:#FFE8DC;color:#8A2E0C}
.span-2{grid-column:span 2}.span-all{grid-column:1 / -1}
.a-textarea{height:auto;padding:10px 12px;line-height:1.6;resize:vertical}
details.fold summary{cursor:pointer;font-size:16px;font-weight:700}
details.fold[open] summary{margin-bottom:4px}

/* ── 신청서 자세히 보기 ── */
.a-dlg{width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 48px);padding:24px;border:0;border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.a-dlg::backdrop{background:rgba(20,20,20,.5)}
.dlg-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.dlg-head h2{font-size:20px}
.kv{margin:0;display:grid;grid-template-columns:max-content minmax(0,1fr);gap:10px 18px;font-size:15px;line-height:1.6}
.kv dt{color:#5C5C5C;font-weight:600}
.kv dd{margin:0;overflow-wrap:anywhere}
.kv dd.msg{white-space:pre-line;padding:10px 12px;border-radius:8px;background:#F7F6F3}
.dlg-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}

/* ── 일별 접속 막대그래프 ── */
.dg{flex:1 1 0;display:flex;align-items:flex-end;justify-content:center;border-radius:6px}
.dg:hover,.dg:focus-visible{background:rgba(20,20,20,.04)}
.dg .bar{width:min(16px,60%)}
.chart-x.sparse span:nth-child(even){visibility:hidden}

@media (max-width:560px){
  .span-2{grid-column:auto}
  .kv{grid-template-columns:1fr;gap:2px}
  .kv dd{margin-bottom:10px}
}

/* ── 공지 사진 ── */
.a-file{height:auto;padding:8px 10px}
.nt-preview{display:flex;flex-wrap:wrap;gap:10px}
.nt-thumb{position:relative;display:flex;flex-direction:column;gap:4px;width:132px;font-size:12px;color:#5C5C5C}
.nt-thumb img{display:block;width:132px;height:96px;object-fit:cover;border-radius:8px;border:1px solid #E4E1DB;background:#F7F6F3}
.pill.wait{background:#FFF4E5;color:#8A4B00}

/* ── 학생 관리: 소분류 탭 (학생 목록 / 클래스) ── */
.subtabs{display:inline-flex;align-self:flex-start;gap:4px;padding:4px;border-radius:10px;background:#E9E6DF}
.subtabs button{min-height:40px;padding:0 20px;border:0;border-radius:8px;background:transparent;font-family:inherit;font-size:15px;font-weight:600;color:#5C5C5C;cursor:pointer}
.subtabs button:hover{color:#141414}
.subtabs button[aria-selected="true"]{background:#FFFFFF;color:#141414;font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.subpanel{display:flex;flex-direction:column;gap:20px}

/* ── 클래스 ── */
.subj-etc{background:#F2F0EB;color:#141414}
.cls-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px;align-items:start}
.cls-side{position:sticky;top:84px;padding:18px}
.cls-side .card-head{margin-bottom:12px}
.cls-main{display:flex;flex-direction:column;gap:20px;min-width:0}
.cls-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.cls-item{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%;padding:10px 12px;border:1px solid #E4E1DB;border-radius:10px;background:#FFFFFF;font-family:inherit;text-align:left;cursor:pointer}
.cls-item:hover{border-color:#141414}
.cls-item[aria-current="true"]{border-color:#141414;background:#141414;color:#FFFFFF}
.cls-item-top{display:flex;align-items:center;gap:8px;min-width:0}
.cls-item-top strong{font-size:15px;overflow-wrap:anywhere}
.cls-item-sub{font-size:13px;color:#5C5C5C}
.cls-item[aria-current="true"] .cls-item-sub{color:#CFCFCF}
.cls-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px}
.cls-head-main{display:flex;align-items:center;gap:10px;min-width:0}
.cls-head-main h2{font-size:22px;font-weight:700;overflow-wrap:anywhere}
.stamp-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 12px}
.stamp-bar .a-fld{flex:1 1 260px}
.stamp-bar .a-btn{min-height:42px}
.stamp-n{display:inline-block;min-width:48px;padding:2px 10px;border-radius:999px;background:#FFF4E5;color:#8A4B00;font-weight:700;text-align:center}
.stamp-n.zero{background:#F2F0EB;color:#8A8A8A}
.pick-wrap{display:flex;flex-direction:column;gap:12px;margin-top:22px;padding-top:20px;border-top:1px solid #ECE9E3}
.pick-wrap h3{font-size:16px;font-weight:700}
.pick-list{max-height:260px;overflow:auto;border:1px solid #E4E1DB;border-radius:10px}
.pick-list ul{list-style:none;margin:0;padding:4px 0}
.pick{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;min-height:44px;padding:6px 14px;font-size:14px;cursor:pointer}
.pick:hover{background:#F7F6F3}
.pick input{width:18px;height:18px;margin:0;accent-color:#2563EB}
.pick .sub{color:#5C5C5C;font-size:13px}
.hw-prev{margin-top:2px;max-width:420px;font-size:13px;color:#5C5C5C;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.due-cell{white-space:nowrap}
.due{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.due-today{background:#FF5A1F;color:#141414}.due-soon{background:#FFE8DC;color:#8A2E0C}.due-later{background:#E8F0FE;color:#1D4ED8}.due-past{background:#F2F0EB;color:#5C5C5C}
@media (max-width:980px){
  .cls-layout{grid-template-columns:1fr}
  .cls-side{position:static}
  .cls-items{flex-direction:row;flex-wrap:wrap}
  .cls-item{width:auto}
}

/* ── 비밀번호 변경·재설정 ── */
.link-btn.forgot{align-self:center;min-height:36px;font-size:14px;font-weight:600}
.pw-forgot{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 8px;padding-top:12px;border-top:1px solid #ECE9E3;font-size:14px;color:#5C5C5C}
.pw-forgot .link-btn{font-size:14px;min-height:32px}
.link-btn:disabled{color:#8A8A8A;cursor:default;text-decoration:none}

/* ── 특강 구분 관리 ── */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.sp-form{max-width:560px}
.sp-form .a-btn{min-height:42px}
.sp-list{list-style:none;margin:16px 0 0;padding:0;border:1px solid #E4E1DB;border-radius:10px}
.sp-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;padding:10px 14px;border-top:1px solid #ECE9E3;font-size:15px}
.sp-list li:first-child{border-top:0}
.sp-name{font-weight:600;overflow-wrap:anywhere}
.sp-empty{color:#5C5C5C;font-size:14px!important}
.pill.sp{background:#FFF4E5;color:#8A4B00}
.stamp-n.full{background:#FFB400;color:#141414}
.pill.full{margin-left:6px;background:#FFE8DC;color:#8A2E0C}
.stamp-bar .a-btn.danger{margin-left:auto}

/* ── 클래스 목록 · 권한 ── */
.cls-grid-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.cls-tile{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:100%;height:100%;padding:16px 18px;border:1px solid #E4E1DB;border-radius:12px;background:#FFFFFF;font-family:inherit;text-align:left;cursor:pointer}
.cls-tile:hover{border-color:#141414;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.cls-tile .cls-item-top strong{font-size:16px}
.cls-tile .go{margin-top:auto;font-size:13px;font-weight:700;color:#2563EB}
.cls-tile.locked{background:#F7F6F3;cursor:not-allowed}
.cls-tile.locked:hover{border-color:#E4E1DB;box-shadow:none}
.cls-tile.locked .cls-item-top strong{color:#5C5C5C}
.lock-ico{position:absolute;top:14px;right:14px;font-size:16px}
.pill.lock{background:#ECEAE4;color:#5C5C5C}
.staff-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.staff-list li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:15px}
.staff-list .sub{font-size:13px;color:#5C5C5C}

/* ── 스탬프 규칙 · 상품 ── */
.rule-list{margin:0;padding:0 0 0 22px;display:flex;flex-direction:column;gap:2px}
.rule-list li{padding:6px 0;font-size:15px}
.rule-list li>.a-btn{margin-left:10px;vertical-align:middle}
.rule-text{overflow-wrap:anywhere}
.rule-form{max-width:640px;margin-top:14px}
.rule-form .a-btn{min-height:42px}
.prize-box{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-top:16px;padding:14px 16px;border-radius:10px;background:#FFF4E5;border:1px solid #FFD8A8}
.prize-label{font-size:14px;color:#8A4B00;font-weight:600}
.prize-box strong{font-size:16px}
.cls-head .a-row{flex-wrap:wrap}
@media (max-width:820px){
  .adm-layout{align-items:stretch}
  .stamp-bar .a-btn.danger{margin-left:0}
}

/* ── 강의실별 시간표 ── */
.tt-title{margin:0;font-size:15px;color:#3D3D3D}
.tt-card{padding:20px}
.tt-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.tt-days{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;border-radius:10px;background:#F2F0EB}
.tt-day{position:relative;display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:0;border-radius:8px;background:transparent;font-family:inherit;font-size:15px;font-weight:600;color:#5C5C5C;cursor:pointer}
.tt-day:hover{color:#141414}
.tt-day[aria-selected="true"]{background:#141414;color:#FFFFFF}
.tt-day-n{min-width:20px;padding:0 6px;border-radius:999px;background:rgba(0,0,0,.08);font-size:12px;font-weight:700;text-align:center}
.tt-day[aria-selected="true"] .tt-day-n{background:rgba(255,255,255,.2)}
.tt-day-warn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#FF5A1F;color:#141414;font-size:12px;font-weight:800}
.tt-scroll{overflow-x:auto;border:1px solid #E4E1DB;border-radius:10px}
.tt-grid{position:relative;display:grid;background:#FFFFFF}
.tt-corner,.tt-room{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:center;background:#F7F6F3;border-bottom:1px solid #E4E1DB;font-size:14px;font-weight:700;color:#141414}
.tt-room{border-left:1px solid #E4E1DB}
.tt-hour{position:relative;padding:2px 8px 0 0;border-top:1px solid #E4E1DB;font-size:12px;color:#5C5C5C;text-align:right;white-space:nowrap}
.tt-col{border-left:1px solid #E4E1DB;background:repeating-linear-gradient(to bottom,#E4E1DB 0 1px,transparent 1px var(--hour)),repeating-linear-gradient(to bottom,transparent 0 calc(var(--hour) / 2),#F2F0EB calc(var(--hour) / 2) calc(var(--hour) / 2 + 1px),transparent calc(var(--hour) / 2 + 1px) var(--hour))}
.tt-block{position:relative;z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:0;margin-top:1px;margin-bottom:1px;padding:4px 7px;border:1px solid transparent;border-left-width:4px;border-radius:6px;font-family:inherit;text-align:left;overflow:hidden;cursor:pointer;line-height:1.35}
.tt-block:hover{filter:brightness(.97);box-shadow:0 2px 8px rgba(0,0,0,.12);z-index:4}
.tt-block:focus-visible{z-index:5}
.tt-time{font-size:12px;font-weight:700;color:#3D3D3D;font-variant-numeric:tabular-nums}
.tt-what{font-size:13px;color:#141414}
.tt-what strong{font-weight:700}
.tt-memo{font-size:11px;color:#8A4B00}
/* 선생님 색: 배경은 옅게, 왼쪽 띠는 진하게 (글자는 모두 짙은 색이라 잘 읽혀요) */
.tt-t0{--tb:#FFE4DA;--tc:#E5481F}
.tt-t1{--tb:#FFF1C2;--tc:#C98A00}
.tt-t2{--tb:#DAF2E2;--tc:#1E8E4E}
.tt-t3{--tb:#DFE9FF;--tc:#2563EB}
.tt-t4{--tb:#ECE3FF;--tc:#7C3AED}
.tt-t5{--tb:#FFDFEC;--tc:#D61F69}
.tt-t6{--tb:#D3F1EE;--tc:#0E8A7E}
.tt-t7{--tb:#F0E4D6;--tc:#8F5A2B}
.tt-t8{--tb:#E4E8EE;--tc:#4B5768}
.tt-t9{--tb:#E9F4CC;--tc:#5E9A0C}
.tt-t-none{--tb:#F2F0EB;--tc:#8A8A8A}
.tt-block{background:var(--tb);border-left-color:var(--tc)}
.tt-who{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:#141414}
.tt-who::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--tc);flex:none}
.tt-count{font-size:12px;color:#3D3D3D}
.tt-students{display:none;font-size:12px;color:#3D3D3D;overflow-wrap:anywhere}
.tt-block.sel{box-shadow:0 0 0 2px #141414;z-index:5}
.tt-dot{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--tc);flex:none}
.tt-dot.big{width:18px;height:18px}
.tt-block.clash{border-color:#B42318;border-left-color:#B42318;box-shadow:0 0 0 1px #B42318 inset}
.tt-block.dim{opacity:.28}
/* 선생님 색 안내 · 선생님별 보기 */
.tt-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 12px}
.tt-legend-label{margin-right:4px;font-size:13px;font-weight:700;color:#5C5C5C}
.tt-chip{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border:1px solid #E4E1DB;border-radius:999px;background:#FFFFFF;font-family:inherit;font-size:14px;font-weight:600;color:#141414;cursor:pointer}
.tt-chip:hover{border-color:#141414}
.tt-chip.on{background:#141414;border-color:#141414;color:#FFFFFF}
.tt-me{padding:0 6px;border-radius:999px;background:#FF5A1F;color:#141414;font-size:11px;font-weight:800;line-height:18px}
/* 편집 모드 · 보기 전용 안내 */
.tt-modebar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:0 0 12px;padding:12px 16px;border-radius:10px;font-size:14px;line-height:1.6}
.tt-modebar.edit{background:#FFF4E5;border:1px solid #F5D0A9;color:#5A3200}
.tt-modebar.edit ul{margin:4px 0 0;padding-left:18px}
.tt-modebar.view{display:block;background:#F7F6F3;border:1px solid #E4E1DB;color:#3D3D3D}
#tt-flash{margin:0 0 12px}
/* 시간표 + 수업 정보 칸 */
.tt-main{display:flex;align-items:flex-start;gap:16px}
.tt-main .tt-scroll{flex:1 1 auto;min-width:0}
.tt-info{flex:0 0 300px;position:sticky;top:76px;max-height:calc(100vh - 96px);overflow:auto;padding:16px;border:1px solid #E4E1DB;border-radius:10px;background:#FFFFFF;font-size:14px;line-height:1.55}
.tt-info-cap{margin:0;font-size:15px;font-weight:700}
.tt-info-cap.small{font-size:12px;font-weight:700;color:#5C5C5C}
.tt-info-empty{margin:8px 0 0;color:#5C5C5C}
.tt-info-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.tt-info-head h2{margin:0;font-size:20px;font-weight:800;outline-offset:2px}
.tt-info-when{margin:4px 0 10px;font-weight:600;color:#3D3D3D;font-variant-numeric:tabular-nums}
.tt-info-who{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:10px 12px;border-radius:8px;background:var(--tb,#F7F6F3)}
.tt-info-who .tt-dot{width:10px;height:10px}
.tt-info-who .tt-info-sub{flex-basis:100%}
.tt-info-sub{font-size:12px;font-weight:500;color:#5C5C5C}
.tt-info-sec{margin-top:14px;padding-top:12px;border-top:1px solid #EFEDE8}
.tt-info-sec h3{margin:0 0 8px;font-size:15px;font-weight:700}
.tt-info-note{margin:8px 0 0;font-size:13px;color:#5C5C5C}
.tt-info-memo{margin:0;color:#8A4B00}
.tt-info-perm{margin:14px 0 0;padding:10px 12px;border-radius:8px;background:#F7F6F3;font-size:13px;color:#3D3D3D}
.tt-info-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.tt-info-acts.main{margin-top:16px}
.tt-info .a-msg{margin-top:10px}
.tt-stu-list{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:6px}
.tt-stu{display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:6px 8px}
.tt-stu-name{font-weight:700}
.tt-stu-acc{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:12px;color:#3D3D3D;min-width:0;overflow-wrap:anywhere}
.tt-stu-acc.none,.tt-stu-acc.gone{color:#8A8A8A}
.tt-ok{color:#1E8E4E;font-weight:800}
.tt-stu-sel{height:34px;font-size:13px;min-width:0;grid-column:2 / span 2}
.tt-stu-group{margin-top:4px;font-size:12px;font-weight:700;color:#8A8A8A}
.tt-stu-group:first-child{margin-top:0}
.tt-cls{display:flex;flex-direction:column;margin:0}
.tt-cls-name{font-weight:700}
.tt-cls-pick{display:flex;gap:6px}
.tt-cls-pick .a-input{flex:1;min-width:0;height:34px;font-size:13px}
/* 편집 모드: 꾹 눌러 끌기 */
.tt-grid.editing .tt-block,.tt-grid.editing .tt-col{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.tt-grid.editing .tt-block{cursor:grab}
.tt-grid.editing .tt-col{cursor:cell}
.tt-block.pressing{transform:scale(.97);transition:transform .45s ease}
.tt-block.dragging{z-index:20;opacity:.92;cursor:grabbing;box-shadow:0 10px 24px rgba(0,0,0,.25);outline:2px solid #141414}
.tt-block.to-trash{opacity:.45;outline-color:#B42318}
.tt-ghost{z-index:20;width:calc(100% - 4px);margin-left:2px;background:rgba(37,99,235,.12);border:2px dashed #2563EB;border-left-width:2px;pointer-events:none}
.tt-col.pressing{background-color:rgba(37,99,235,.06)}
body.tt-dragging{-webkit-user-select:none;user-select:none;cursor:grabbing}
.tt-trash{position:fixed;left:50%;bottom:20px;z-index:60;display:flex;align-items:center;gap:8px;padding:14px 22px;transform:translateX(-50%);border:2px dashed #B42318;border-radius:999px;background:#FFFFFF;color:#B42318;font-size:15px;font-weight:700;box-shadow:0 6px 20px rgba(0,0,0,.18)}
.tt-trash.over{background:#B42318;color:#FFFFFF;border-style:solid}
.tt-trash[hidden]{display:none}
.tt-toast{position:fixed;left:50%;bottom:20px;z-index:61;display:none;align-items:center;gap:14px;max-width:calc(100vw - 32px);padding:12px 16px 12px 18px;transform:translateX(-50%);border-radius:10px;background:#141414;color:#FFFFFF;font-size:14px;line-height:1.5;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.tt-toast.show{display:flex}
.tt-toast-undo{flex:none;min-height:36px;padding:0 12px;border:1px solid #FFFFFF;border-radius:8px;background:transparent;color:#FFFFFF;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
.tt-lock-note{margin:0 0 12px;padding:10px 12px;border-radius:8px;background:#F7F6F3;font-size:13px;color:#3D3D3D}
.tt-form-grid select:disabled,.tt-form-grid input:disabled{background:#F2F0EB;color:#5C5C5C;cursor:not-allowed}
/* 좁은 화면: 수업 정보는 아래에서 올라오는 칸 */
@media (max-width:1199px){
  .tt-info{display:none;position:fixed;left:0;right:0;bottom:0;top:auto;z-index:55;max-height:62vh;padding:16px 16px 24px;border-radius:16px 16px 0 0;border:0;box-shadow:0 -8px 28px rgba(0,0,0,.22)}
  .tt-info.open{display:block}
  .tt-main.has-sel .tt-scroll{margin-bottom:0}
}
.tt-warn{margin:0 0 12px;padding:12px 16px;border-radius:10px;background:#FDECE6;border:1px solid #F5C2B2;font-size:14px;line-height:1.6;color:#8A2E0C}
.tt-warn ul{margin:6px 0;padding-left:20px}
.tt-warn p{margin:0;color:#5C5C5C}
.tt-print-title{display:none}
.tt-io-row{flex-wrap:wrap}
.tt-io-row label.a-btn{cursor:pointer}
.tt-set-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;margin-top:20px}
.tt-set-grid h3{font-size:16px;font-weight:700;margin-bottom:4px}
.tt-set-list{list-style:none;margin:10px 0;padding:0;display:flex;flex-direction:column;gap:6px}
.tt-set-list li{display:flex;align-items:center;gap:8px}
.tt-set-list .a-input{height:38px}
.tt-trow{flex-direction:column;align-items:stretch!important;padding:8px 0;border-bottom:1px solid #EFEDE8}
.tt-trow-top,.tt-trow-link{display:flex;align-items:center;gap:8px}
.tt-trow-link{margin-top:6px;padding-left:26px}
.tt-link-label{flex:none;font-size:12px;font-weight:700;color:#5C5C5C}
.tt-set-list .tt-color{width:84px;flex:none}
.tt-set-list .tt-link{flex:1;min-width:0;font-size:13px}
.tt-used{flex:none;min-width:64px;font-size:12px;color:#5C5C5C}
.tt-dlg{width:min(640px,calc(100vw - 32px))}
.tt-form-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.tt-copy{margin:0;padding:12px 14px;border:1px solid #E4E1DB;border-radius:10px}
.tt-copy legend{padding:0 4px;font-size:14px;font-weight:600}
.tt-copy-days{display:flex;flex-wrap:wrap;gap:6px 14px}
.tt-copy-day{display:inline-flex;align-items:center;gap:6px;min-height:36px;font-size:15px;cursor:pointer}
.tt-copy-day input{width:18px;height:18px;accent-color:#2563EB}
.tt-copy-day.off{color:#8A8A8A}

/* 인쇄: 지금 고른 요일의 시간표만 */
@media print{
  .adm-top,.adm-nav,.view-head,#tt-head-note,#tt-empty,.tt-toolbar,#tt-warn,#tt-settings,#tt-io,#tt-mode,#tt-flash,.tt-info,.tt-toast,.tt-trash,.tt-legend-label,.tt-chip[data-t=""]{display:none!important}
  .tt-chip{min-height:24px;padding:0 8px;border-color:#E4E1DB!important;background:#FFFFFF!important;color:#141414!important;font-size:12px}
  .tt-dot,.tt-who::before{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .tt-count{display:none}
  .tt-students{display:block}
  .tt-block.sel{box-shadow:none}
  body.admin{background:#FFFFFF}
  .adm-main{padding:0}
  .tt-card{border:0;padding:0}
  .tt-print-title{display:block;margin:0 0 10px;font-size:18px}
  .tt-scroll{overflow:visible;border:0}
  .tt-block{break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .tt-col{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
