/* 3-9 수시 결과 — 면접 캠프(camp.css)의 틀을 그대로 따른다: 검정 왼쪽 판·사진·밑줄 입력 칸, 얇은 테두리 상자(장소 예약 탭과 같은 px).
   색 바탕 알림·칩·왼쪽 색 띠·그림자 금지. 판정은 글자 색과 도장으로만. */
:root{
  --ink:#14181d; --paper:#fff; --sub:#5f6672; --faint:#98a0ad; --line:#e3e6ea; --line2:#c9ced6;
  --accent:#9d3427; --wash:#f6f7f8; --amber:#9a6a1c; --blue:#2f5fd0;
}
*{margin:0;padding:0;box-sizing:border-box}
[hidden]{display:none !important}
html,body{min-height:100%}
body{font-family:"Apple SD Gothic Neo",-apple-system,"Malgun Gothic",sans-serif;color:var(--ink);background:var(--paper);
  font-size:15px;line-height:1.62;-webkit-font-smoothing:antialiased}
button,input,textarea,select{font:inherit;color:inherit}
button{background:none;border:none;cursor:pointer}
a{color:inherit}
h1,h2,h3,h4{font-weight:700;letter-spacing:-.02em}
table{border-collapse:collapse;width:100%}
.num{font-variant-numeric:tabular-nums}

/* ================= 로그인 — 사진·일정 없이 가운데 상자 하나(면접 캠프 첫 화면과 헷갈리지 않게) ================= */
.gate{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--wash);padding:24px 16px}
.gate-box{width:min(380px,100%);background:#fff;border:1px solid var(--line2);padding:30px 30px 18px}
.gate-head{display:flex;align-items:center;gap:12px;margin-bottom:24px}
.gate-cat{width:54px;height:54px;object-fit:contain;flex:none}
.kicker{font-size:12px;color:var(--faint);letter-spacing:.04em;font-weight:600}
.brand{font-size:27px;line-height:1.15;margin-top:1px}
.mode{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line2);margin-bottom:18px}
.mode button{height:38px;font-size:14px;font-weight:600;color:var(--sub)}
.mode button+button{border-left:1px solid var(--line2)}
.mode button:hover{color:var(--ink)}
.mode button.on{background:var(--ink);color:#fff}
.gate .hint{font-size:12.5px;color:var(--sub);margin:0 0 16px;line-height:1.65;word-break:keep-all}
.f{display:block;margin-bottom:14px}
.f span{display:block;font-size:12.5px;color:var(--sub);font-weight:600;margin-bottom:5px}
.f input{width:100%;height:46px;border:1px solid var(--line2);padding:0 12px;font-size:17px;letter-spacing:.03em;background:#fff;outline:none;border-radius:0;font-variant-numeric:tabular-nums}
.f input::placeholder{color:#c3c8cf;letter-spacing:.03em}
.f input:focus{border-color:var(--ink)}
#loginBtn{width:100%;height:46px;background:var(--ink);color:#fff;font-size:15px;font-weight:700;margin-top:4px}
#loginBtn:hover{background:#000}
#loginBtn:disabled{opacity:.5}
.err{color:var(--accent);font-size:13px;margin-top:12px;line-height:1.55;word-break:keep-all}
.gate-foot{display:flex;justify-content:space-between;align-items:center;margin-top:22px;padding-top:12px;border-top:1px solid var(--line);font-size:12px;color:var(--faint)}
.gate-foot a{color:var(--faint);text-decoration:none}
.gate-foot a:hover{color:var(--accent)}
@media(max-width:420px){.gate{align-items:flex-start;padding-top:40px}.gate-box{padding:24px 20px 16px}}

/* ================= 머리줄·탭 ================= */
.top{display:flex;align-items:center;gap:18px;padding:14px clamp(16px,3vw,40px);background:var(--ink);color:#e8ecf1;flex-wrap:wrap}
.top .who b{font-size:16px;color:#fff}
.top .who span{font-size:12.5px;color:#98a4b3;margin-left:8px}
.top .next{margin-left:auto;font-size:12.5px;color:#98a4b3;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.top .next b{font-size:19px;color:#e8a598;font-variant-numeric:tabular-nums}
.top .next em{font-style:normal;color:#dfe4ea;font-weight:600}
.top button{font-size:12.5px;color:#98a4b3;padding:4px 2px}
.top button:hover{color:#fff}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);padding:0 clamp(16px,3vw,40px);overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{padding:13px 14px 11px;font-size:14px;font-weight:600;color:var(--sub);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tabs button:hover{color:var(--ink)}
.tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}
.tabs button i{font-style:normal;font-size:12px;color:var(--accent);margin-left:5px;font-weight:700}
.tabs .tabs-r{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:12.5px;color:var(--faint);white-space:nowrap;padding-left:16px}
.tabs .tabs-r button{padding:4px 0;font-size:12.5px;font-weight:600;color:var(--sub);border:0;margin:0}
.tabs .tabs-r button:hover{color:var(--accent)}
main{max-width:min(1180px,94vw);margin:0 auto;padding:22px 0 90px}
main.wide{max-width:min(1760px,96vw)}
@media(max-width:980px){main,main.wide{max-width:100%;padding:16px 16px 80px}}

/* ================= 상자 — 장소 예약 탭(.rv-box)과 같은 px ================= */
.bx{border:1px solid var(--line);background:#fff;padding:14px 18px 16px;min-width:0;margin-bottom:16px}
.bh{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;min-height:37px;padding-bottom:8px;margin-bottom:12px;border-bottom:1px solid var(--line2);font-size:14.5px;font-weight:700}
.bh img{width:28px;height:28px;flex:none;object-fit:contain;margin-left:-2px}
.bh .bh-a{margin-left:auto;display:inline-flex;align-items:center;gap:12px;font-size:12.5px;font-weight:400;color:var(--sub);flex-wrap:wrap}
.bh .bh-a b{color:var(--ink)}
.cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:stretch}
.cols>.bx{margin-bottom:0}
.cols+.bx,.cols+.cols{margin-top:16px}
@media(max-width:860px){.cols{grid-template-columns:1fr}}
@media(max-width:700px){.bx{padding:12px 12px 14px}}
.muted{color:var(--faint);font-size:12.5px}
.sub{color:var(--sub);font-size:13.5px}
.red{color:var(--accent)}
.note-list{font-size:12.5px;color:var(--sub);padding-left:18px;line-height:1.75}
.empty{padding:16px 2px;font-size:13px;color:var(--faint)}

/* 표 — 모든 칸 선, 머리 크게·가운데 */
.t{font-size:13.5px}
.t th,.t td{border:1px solid var(--line2);padding:7px 9px;vertical-align:middle}
.t thead th{height:42px;padding:0 8px;background:var(--wash);font-size:14px;font-weight:700;text-align:center;white-space:nowrap}
.t td.c{text-align:center}
.t td.n{text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}
.t td.nm{white-space:nowrap;text-align:center}
.t td.nm .lnk{text-decoration:none;font-weight:700;color:var(--ink);font-size:13.5px}
.t td.nm .lnk:hover{color:var(--accent)}
.t tbody th{background:var(--wash);font-weight:700;text-align:center;white-space:nowrap}
.t-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* 숫자 현황 표 */
.stat td{text-align:center;padding:10px 6px}
.stat td b{display:block;font-size:24px;line-height:1.15;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.stat td span{font-size:12px;color:var(--faint)}
.stat td.go{cursor:pointer}
.stat td.go:hover{background:var(--wash)}

/* 결과 글자 색 */
.st-pass,.st-fill{color:var(--accent);font-weight:700}
.st-s1{color:var(--blue);font-weight:700}
.st-wait{color:var(--amber);font-weight:700}
.st-fail,.st-s1f,.st-skip{color:var(--faint)}
.st-none{color:var(--sub)}
.st-due{color:var(--accent);font-weight:700}

/* 단추 — 얇은 테두리, 고르면 검정 */
.btn{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;border:1px solid var(--line2);background:#fff;font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap}
.btn:hover{border-color:var(--ink)}
.btn.dark{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.dark:hover{background:#000}
.btn:disabled{opacity:.45;cursor:default}
.lnk{font-size:12.5px;color:var(--sub);text-decoration:underline;text-underline-offset:3px;padding:0}
.lnk:hover{color:var(--accent)}
.filters{display:flex;gap:4px;flex-wrap:wrap}
.filters button{height:28px;padding:0 10px;border:1px solid var(--line);background:#fff;font-size:12.5px;color:var(--sub)}
.filters button:hover{border-color:var(--ink);color:var(--ink)}
.filters button.on{background:var(--ink);border-color:var(--ink);color:#fff}

/* ================= 발표 달력(가로 시간 줄) ================= */
.tl{position:relative;min-height:60px}
.tl svg{display:block;overflow:visible}
.tl .ax{stroke:var(--ink);stroke-width:1}
.tl .tk{stroke:var(--line2);stroke-width:1}
.tl .mo{font-size:12px;font-weight:700;fill:var(--ink)}
.tl .ref{stroke:var(--faint);stroke-width:1;stroke-dasharray:2 3}
.tl .ref-t{font-size:11px;fill:var(--faint)}
.tl .today{stroke:var(--accent);stroke-width:1.2;stroke-dasharray:4 3}
.tl .today-t{font-size:11px;font-weight:700;fill:var(--accent)}
.tl .mk{cursor:pointer}
.tl .mk text{font-size:12px;fill:var(--ink);font-weight:600}
.tl .mk .dt{font-size:10.5px;fill:var(--faint);font-weight:400}
.tl .mk:hover text{fill:var(--accent)}
.dot{stroke-width:1.6}
.dot.d-none{fill:#fff;stroke:var(--ink)}
.dot.d-pass{fill:var(--accent);stroke:var(--accent)}
.dot.d-s1{fill:#fff;stroke:var(--blue);stroke-width:2.4}
.dot.d-wait{fill:var(--amber);stroke:var(--amber)}
.dot.d-fail{fill:var(--line2);stroke:var(--line2)}
.dot.d-exam{fill:#fff;stroke:var(--blue);stroke-width:2}
.dot.d-due{fill:#fff;stroke:var(--accent);stroke-width:2.4}
.tl-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--sub);margin-top:6px}
.tl-legend svg{vertical-align:-2px;margin-right:4px}
.tl-und{font-size:12.5px;color:var(--sub);margin-top:8px}

/* ================= 원서 한 장(수험표) ================= */
.tks{display:flex;flex-direction:column;gap:10px}
.tk{border:1px solid var(--line2);background:#fff;position:relative}
.tk.flash{outline:2px solid var(--accent);outline-offset:2px}
.tk-row{display:grid;grid-template-columns:104px minmax(0,1fr) 176px;min-height:112px}
.tk-date{border-right:1px dashed var(--line2);padding:14px 10px 12px 14px;display:flex;flex-direction:column;gap:2px}
.tk-date .md{font-size:26px;font-weight:800;line-height:1.05;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.tk-date .wd{font-size:12.5px;color:var(--sub);font-variant-numeric:tabular-nums}
.tk-date .dd{font-size:12.5px;font-weight:700;margin:6px 0 0;color:var(--ink);font-variant-numeric:tabular-nums}
.tk-date .dd.past{color:var(--faint);font-weight:600}
.tk-date .dd.soon{color:var(--accent)}
.tk-date .cf{font-size:11.5px;color:var(--faint)}
.tk-date .lb{font-size:11.5px;font-weight:700;color:var(--blue);margin-bottom:1px}
.tk-date .st2{display:flex;flex-direction:column;gap:1px;margin-top:7px;padding-top:6px;border-top:1px dotted var(--line2);font-size:11.5px;color:var(--sub);font-variant-numeric:tabular-nums}
.tk-date .st2 .ex{color:var(--blue);font-weight:600}
.tk-date .md.unk{font-size:15px;font-weight:700;color:var(--faint);line-height:1.4}
.tk-body{padding:13px 16px 12px;min-width:0}
.tk-u{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.tk-u b{font-size:17px;letter-spacing:-.02em}
.tk-u .k{font-size:12px;color:var(--faint)}
.tk-u .src{font-size:12px;color:var(--sub)}
.tk-unit{font-size:13.5px;color:var(--sub);margin-top:1px;word-break:keep-all}
.tk-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;margin-top:8px;font-size:12.5px;color:var(--sub)}
.tk-meta .exam{font-variant-numeric:tabular-nums}
.tk-meta .exam b{color:var(--ink);font-weight:700;letter-spacing:.02em;cursor:pointer;border-bottom:1px dotted var(--line2)}
.tk-meta .exam b:hover{color:var(--accent);border-bottom-color:var(--accent)}
.tk-meta a{color:var(--sub);text-underline-offset:3px}
.tk-meta a:hover{color:var(--accent)}
.tk-s1{font-size:12px;color:var(--faint);margin-top:6px;line-height:1.6}
.tk-s1 i{font-style:normal;color:var(--sub);font-weight:600;margin-right:6px}
.tk-memo{font-size:13px;margin-top:6px;color:var(--ink)}
.tk-memo:before{content:"메모 ";color:var(--faint);font-size:12px}
.tk-res{border-left:1px dashed var(--line2);padding:10px 12px 12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center}
.tk-res .who{font-size:11.5px;color:var(--faint);line-height:1.5}
.tk-res .who .red{font-weight:700}
.tk-res .pend{font-size:14px;color:var(--faint);font-weight:600}
.tk-res .due{font-size:13px;color:var(--accent);font-weight:700;line-height:1.5}
.tk-res .acts{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
@media(max-width:700px){
  .tk-row{grid-template-columns:84px minmax(0,1fr)}
  .tk-res{grid-column:1 / -1;border-left:0;border-top:1px dashed var(--line2);flex-direction:row;justify-content:space-between;padding:10px 14px;text-align:left}
  .tk-res .stamp{transform:rotate(-8deg) scale(.82);margin:-8px 0}
  .tk-date{padding:12px 8px 10px 12px}
  .tk-date .md{font-size:21px}
  .tk-body{padding:12px 12px 10px}
}

/* 도장 — 면접 캠프 「참 잘했어요」 도장처럼 기울여 찍는다 */
.stamp{display:block;transform:rotate(-9deg);user-select:none}
.stamp text{font-family:inherit;font-weight:800}
.stamp-txt{font-size:20px;font-weight:800;line-height:1.2}
.stamp-txt small{display:block;font-size:12.5px;font-weight:700}

/* 결과 고르기(수험표 아래로 펼침) */
.ed{border-top:1px solid var(--line2);padding:14px 16px 16px;background:#fff}
.ed-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.ed-row>.l{width:44px;flex:none;font-size:12px;color:var(--faint);font-weight:700}
.seg{display:inline-flex;flex-wrap:wrap}
.seg button{height:34px;padding:0 13px;border:1px solid var(--line2);margin-right:-1px;background:#fff;font-size:13.5px;font-weight:600;color:var(--sub);position:relative}
.seg button:hover{color:var(--ink);z-index:1;border-color:var(--ink)}
.seg button.on{background:var(--ink);border-color:var(--ink);color:#fff;z-index:2}
.ed input[type=number],.ed input[type=text],.ed input[type=date],.ed select{height:34px;border:1px solid var(--line2);padding:0 9px;font-size:13.5px;background:#fff;outline:none;border-radius:0}
.ed input:focus,.ed select:focus{border-color:var(--ink)}
.ed input[type=number]{width:84px}
.ed .memo{flex:1;min-width:200px}
.ed .unit{font-size:13px;color:var(--sub)}
.ed-foot{display:flex;align-items:center;gap:8px;margin-top:4px;flex-wrap:wrap}
.ed-foot .msg{font-size:12.5px;color:var(--accent);margin-left:6px}
.ed-foot .r{margin-left:auto;display:flex;gap:8px;align-items:center}
@media(max-width:700px){.ed{padding:12px}.ed-row>.l{width:100%}.seg button{padding:0 10px;font-size:13px}}

/* 이력 */
.hist{border-top:1px dashed var(--line2);padding:10px 16px 12px;font-size:12.5px;color:var(--sub)}
.hist table td{padding:3px 12px 3px 0;border:0;vertical-align:top}
.hist table td:first-child{color:var(--faint);white-space:nowrap;font-variant-numeric:tabular-nums}

/* 오늘 구분 줄 */
.today-line{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;color:var(--accent);margin:4px 0}
.today-line:before,.today-line:after{content:"";flex:1;border-top:1px dashed var(--accent)}

/* 등록할 대학 */
.enr label{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid var(--line);font-size:14px;cursor:pointer}
.enr label:last-of-type{border-bottom:0}
.enr input{width:17px;height:17px;accent-color:var(--ink)}
.enr label b{font-weight:700}
.enr label span{color:var(--sub);font-size:13px}

/* 원서 더하기 */
.addf{display:grid;grid-template-columns:1.1fr 1.6fr 1fr 150px 96px auto;gap:8px;align-items:end}
.addf label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--faint);font-weight:600;min-width:0}
.addf input,.addf select{height:34px;border:1px solid var(--line2);padding:0 9px;font-size:13.5px;background:#fff;outline:none;width:100%;border-radius:0;color:var(--ink);font-weight:400}
.addf input:focus,.addf select:focus{border-color:var(--ink)}
.addf .btn{height:34px}
@media(max-width:860px){.addf{grid-template-columns:1fr 1fr}.addf .btn{grid-column:1 / -1}}

/* ================= 선생님: 결과 보드 ================= */
.board{font-size:13px}
.board th,.board td{border:1px solid var(--line2)}
.board thead th{height:42px;background:var(--wash);font-size:14px;font-weight:700;text-align:center;padding:0 8px;white-space:nowrap}
.board td.no{width:44px;text-align:center;color:var(--faint);font-variant-numeric:tabular-nums}
.board td.nm{width:76px;font-weight:700;white-space:nowrap;padding:0 10px}
.board td.nm button{font-weight:700;padding:6px 0}
.board td.nm button:hover{color:var(--accent)}
.board td.cells{padding:6px 7px}
.board td.sum{width:52px;text-align:center;font-variant-numeric:tabular-nums}
.board td.enr{width:120px;padding:0 10px;font-size:12.5px;white-space:nowrap}
.cellrow{display:flex;gap:5px;flex-wrap:wrap}
/* 칸 하나 = 원서 한 장: 윗줄 대학, 아랫줄 결과. 결과마다 바탕색(선생님 지시 10/25 — 한눈에 구분) */
.cell{width:112px;min-height:50px;height:auto;padding-top:5px !important;padding-bottom:5px !important;flex:none;border:1px solid var(--line);background:#fff;display:flex;flex-direction:column;justify-content:center;
  padding:0 8px;text-align:left;position:relative;line-height:1.25;color:var(--ink)}
.cell .cu{display:block;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.02em}
.cell .cr{display:block;font-size:13.5px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.cell:hover{outline:2px solid var(--ink);outline-offset:-1px;z-index:1}
.cell .cn{display:block;margin-top:3px;padding-top:3px;border-top:1px dotted rgba(0,0,0,.18)}
.cell .cn i{display:block;font-style:normal;font-size:12px;font-weight:700;line-height:1.4;letter-spacing:-.03em;white-space:nowrap;color:#1f45a8;font-variant-numeric:tabular-nums}
.cell .cn i.fin{color:var(--ink)}
.cell .cn i.bad{color:var(--accent);font-weight:800}
.cell .cn i.past{color:var(--faint);font-weight:500;font-size:11px}
.cell .cw{display:block;font-size:11px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.03em;margin-top:1px;color:#5a3d06}
.cell .cw.est{font-weight:600;opacity:.85}
.cell.c-none .cr{color:var(--faint);font-weight:600;font-size:12.5px}
.cell.c-due{box-shadow:inset 0 0 0 2px var(--accent);border-color:var(--accent)}
.cell.c-due .cr{color:var(--accent)}
.cell.c-pass{background:#9d3427;border-color:#9d3427;color:#fff}
.cell.c-pass .cu{color:rgba(255,255,255,.86)}
.cell.c-fill{background:#f6d9d2;border-color:#dba597;color:#7f2418}
.cell.c-s1{background:#dfe8fc;border-color:#a9bdee;color:#1f45a8}
.cell.c-wait{background:#fcefd2;border-color:#e3c27c;color:#7a5210}
.cell.c-fail{background:#e6e9ed;border-color:#cdd2d9;color:#5f6672}
.cell.c-s1f{background:#eef0f3;border-color:#d7dbe1;color:#7d8592}
.cell.c-skip{background:#fff;border:1px dashed #b9c0ca;color:#98a0ad}
.cell.late{box-shadow:inset 0 0 0 2px var(--accent)}
.cell .uc{position:absolute;top:-4px;right:-4px;width:10px;height:10px;border-radius:50%;background:var(--accent);border:2px solid #fff}
.board-legend{display:flex;gap:8px 16px;flex-wrap:wrap;font-size:12px;color:var(--sub);margin-top:12px;align-items:center}
.board-legend .lg{display:inline-flex;align-items:center;gap:6px}
.board-legend .cell{width:auto;height:26px;padding:0 9px;display:inline-flex}
.board-legend .cell .cr{font-size:12px}

/* 학생별 */
.grid{display:grid;grid-template-columns:232px minmax(0,1fr);gap:16px;align-items:start}
@media(max-width:860px){.grid{grid-template-columns:1fr}}
.roster{border:1px solid var(--line);background:#fff;position:sticky;top:12px;max-height:calc(100vh - 24px);overflow-y:auto}
.roster .r-find{padding:8px;border-bottom:1px solid var(--line2);position:sticky;top:0;background:#fff;z-index:2}
.roster .r-find input{width:100%;height:32px;border:1px solid var(--line);padding:0 9px;font-size:13px;outline:none}
.roster .r-find input:focus{border-color:var(--ink)}
.roster button.r{display:flex;width:100%;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;font-size:13.5px}
.roster button.r:hover{background:var(--wash)}
.roster button.r.on{background:var(--ink);color:#fff}
.roster .r-no{width:20px;font-size:11.5px;color:var(--faint);font-variant-numeric:tabular-nums}
.roster .r-nm{font-weight:600}
.roster .r-sub{margin-left:auto;font-size:11.5px;color:var(--faint);font-variant-numeric:tabular-nums;white-space:nowrap}
.roster .r-sub .red{font-weight:700}
.roster button.r.on .r-sub,.roster button.r.on .r-no{color:#b9c2cd}
.roster button.r.on .r-sub .red{color:#e8a598}
@media(max-width:860px){.roster{position:static;max-height:260px}}
.shead{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.shead h2{font-size:22px}
.shead h2 small{font-size:13px;color:var(--faint);font-weight:600;margin-left:6px}
.shead .kv{font-size:12.5px;color:var(--sub)}
.shead .kv b{color:var(--ink)}
.shead .nav{margin-left:auto;display:flex;gap:6px}

/* 대학·발표일 */
.ut td{font-size:13px}
.ut td.u b{font-weight:700}
.ut td.u small{display:block;font-size:11.5px;color:var(--faint)}
.ut td.s1{font-size:12px;color:var(--sub);max-width:280px}
.ut td.who{font-size:12.5px;max-width:300px}
.ut td.who span{white-space:nowrap}
.ut tr.past td{background:#fcfcfd}
.ut tr.edit td{background:#fff}
.ut .ued{display:grid;grid-template-columns:150px 110px 110px minmax(0,1fr);gap:8px 10px;align-items:end;padding:6px 2px}
.ut .ued label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--faint);font-weight:600}
.ut .ued label.w{grid-column:1 / -1}
.ut .ued input,.ut .ued select,.ut .ued textarea{height:34px;border:1px solid var(--line2);padding:0 9px;font-size:13px;background:#fff;outline:none;width:100%;color:var(--ink);font-weight:400;border-radius:0}
.ut .ued textarea{height:64px;padding:7px 9px;resize:vertical;line-height:1.55}
.ut .ued .orig{grid-column:1 / -1;font-size:12px;color:var(--faint);line-height:1.65;font-weight:400}
.ut .ued .row{grid-column:1 / -1;display:flex;gap:8px;align-items:center}
@media(max-width:860px){.ut .ued{grid-template-columns:1fr 1fr}}

/* 확인 필요 */
.chk td.ch{font-size:13px}
.chk td.ch s{color:var(--faint)}

.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(10px);background:var(--ink);color:#fff;font-size:13px;padding:9px 16px;opacity:0;pointer-events:none;transition:opacity .16s,transform .16s;z-index:50;max-width:90vw}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

@media print{
  .top,.tabs,.gate,.ed,.acts,.addf,.toast,.no-print{display:none !important}
  main{max-width:100%;padding:0}
  .bx{break-inside:avoid}
}

/* 주간 일정판 — 7칸, 오늘 칸 강조. 종류는 글자 색으로만(발표 빨강·면접 파랑·실기 노랑·수시 공통 검정) */
.wk-cap{font-size:13px;color:var(--sub);margin:12px 0 6px}
.wk-cap:first-of-type{margin-top:0}
.wk-cap b{color:var(--ink);font-size:14px;margin-right:4px}
.wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line2)}
.wk-day{border-right:1px solid var(--line2);min-width:0;display:flex;flex-direction:column}
.wk-day:last-child{border-right:0}
.wk-h{height:38px;display:flex;align-items:center;justify-content:center;gap:5px;background:var(--wash);border-bottom:1px solid var(--line2);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}
.wk-h span{color:var(--sub);font-weight:600;font-size:12.5px}
.wk-h em{font-style:normal;font-size:11.5px;color:#fff;background:var(--accent);padding:1px 6px;font-weight:700}
.wk-day.today{box-shadow:inset 0 0 0 2px var(--accent)}
.wk-day.today .wk-h{color:var(--accent)}
.wk-day.past .wk-b{opacity:.62}
.wk-b{padding:6px 7px 8px;display:flex;flex-direction:column;gap:6px;min-height:96px}
.wk-none{font-size:12px;color:var(--faint);text-align:center;margin-top:24px}
.wk-ev{font-size:12.5px;line-height:1.45;padding-bottom:6px;border-bottom:1px dotted var(--line2);word-break:keep-all}
.wk-ev:last-child{border-bottom:0;padding-bottom:0}
.wk-ev b{font-weight:700}
.wk-k{font-size:11px;font-weight:800;margin-right:4px}
.wk-k.k-ann{color:var(--accent)}
.wk-k.k-int{color:var(--blue)}
.wk-k.k-prac{color:var(--amber)}
.wk-k.k-susi{color:var(--ink)}
.wk-w{color:var(--sub)}
.wk-who{display:flex;flex-wrap:wrap;gap:2px 7px;margin-top:2px}
.wk-who button{font-size:12.5px;font-weight:600;padding:0;color:var(--ink)}
.wk-who button:hover{color:var(--accent);text-decoration:underline}
.wk-nav{display:inline-flex;gap:4px}
.wk-nav .btn{height:28px;padding:0 10px;font-size:12px}
@media(max-width:860px){.wk{grid-template-columns:1fr}.wk-day{border-right:0;border-bottom:1px solid var(--line2)}.wk-b{min-height:0}.wk-none{margin:4px 0;text-align:left}}

/* 학급 종합 그래프 — 얇은 선·글자 검정, 색은 막대·조각에만(결과 보드 칸과 같은 뜻의 색) */
.vz3{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1.15fr) minmax(0,1fr);border:1px solid var(--line2)}
.vz-p{padding:12px 16px 14px;min-width:0}
.vz-p+.vz-p{border-left:1px solid var(--line2)}
.vz-cap{font-size:13.5px;font-weight:700;margin-bottom:10px}
.vz-cap .muted{font-weight:400;font-size:12px}
.vz-pie{display:flex;align-items:center;gap:16px}
.vz-donut{flex:none;overflow:visible}
.vz-donut path,.vz-donut circle{cursor:default}
.vz-donut [data-goto]{cursor:pointer}
.vz-donut path:hover{opacity:.82}
.vz-big{font-size:30px;font-weight:800;fill:var(--ink);letter-spacing:-.02em}
.vz-u{font-size:14px;font-weight:700}
.vz-sub{font-size:12px;fill:var(--sub);font-weight:600}
.vz-lg{flex:1;min-width:0;font-size:12.5px}
.vz-lg td{padding:3px 0;border-bottom:1px solid var(--line);white-space:nowrap}
.vz-lg tr:last-child td{border-bottom:0}
.vz-lg td:first-child{white-space:normal;word-break:keep-all;line-height:1.35}
.vz-lg td.n{text-align:right;padding-left:8px;font-variant-numeric:tabular-nums;color:var(--sub)}
.vz-lg td.n b{color:var(--ink);font-size:13.5px;margin-right:1px}
.vz-lg td.p{text-align:right;width:40px;color:var(--faint);font-variant-numeric:tabular-nums}
.vz-lg td .muted{font-size:11.5px}
.vz-lg tr.go{cursor:pointer}
.vz-lg tr.go:hover td{color:var(--accent)}
.vz-sw{display:inline-block;width:10px;height:10px;margin-right:6px;vertical-align:-1px}
.vz-sw.hatch{background:repeating-linear-gradient(45deg,#9d3427 0 2px,#fff 2px 4.2px);outline:1px solid #9d3427;outline-offset:-1px}
.vz-m{padding:7px 0 9px;border-bottom:1px solid var(--line)}
.vz-m:last-child{border-bottom:0}
.vz-m.go{cursor:pointer}
.vz-m.go:hover .vz-mh span:first-child{color:var(--accent)}
.vz-mh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:12.5px;margin-bottom:5px}
.vz-mh span:last-child{color:var(--sub);white-space:nowrap;font-variant-numeric:tabular-nums}
.vz-mh b{font-size:15px;color:var(--ink)}
.vz-mh em{font-style:normal;color:var(--accent);font-weight:700;margin-left:4px}
.vz-bar{height:8px;background:#e8ebef}
.vz-bar i{display:block;height:100%;background:var(--ink)}
.vz-key{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;color:var(--sub);margin-bottom:6px;align-items:center}
.vz-key>span>i:not(.vz-sw){display:inline-block;width:14px;height:2px;margin-right:6px;vertical-align:4px}
.vz-key b{color:var(--ink)}
.vz-col .vz-key{margin:8px 0 0}
.vz-line,.vz-col{min-width:0}
.vz-line svg,.vz-col svg{display:block}
.vz-grid{stroke:#eceef1;stroke-width:1}
.vz-axl{stroke:var(--line2);stroke-width:1}
.vz-ax{font-size:11px;fill:var(--faint);font-variant-numeric:tabular-nums}
.vz-ax.cur{fill:var(--accent);font-weight:700}
.vz-ln{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.vz-ln.dash{stroke-dasharray:4 4}
.vz-today{stroke:var(--accent);stroke-width:1}
.vz-tl{font-size:11px;fill:var(--accent);font-weight:700}
.vz-end{font-size:12px;fill:var(--sub);font-weight:700}
.vz-val{font-size:11px;fill:var(--sub);font-weight:700;font-variant-numeric:tabular-nums}
.vz-cross{stroke:var(--ink);stroke-width:1;opacity:.35}
.vz-col svg [data-wkof]{cursor:pointer}
.vz-tip{position:fixed;z-index:60;max-width:320px;background:#fff;border:1px solid var(--ink);padding:6px 9px;font-size:12.5px;line-height:1.5;color:var(--ink);pointer-events:none;word-break:keep-all}
@media(max-width:1180px){.vz3{grid-template-columns:1fr 1fr}.vz-p:nth-child(3){grid-column:1/-1;border-left:0;border-top:1px solid var(--line2)}}
@media(max-width:700px){.vz3{grid-template-columns:1fr}.vz-p+.vz-p{border-left:0;border-top:1px solid var(--line2)}.vz-pie{flex-direction:column;align-items:stretch}.vz-donut{align-self:center}}
