/* 학관시 「할 일 목록」(site/ingang-todo.js) — 색은 학관시 토큰(--red2 · --g/--a/--d/--b) · 상태 4색: 아직 회색 · 완료 초록 · 진행 중 주황 · 안 함 빨강 */
#pane-todo{--td-or:#d9480f;--td-or-bg:#fff0e6}
#pane-todo .sp,#tdmBox .sp,#tdpmBox .sp{flex:1}
.td-l{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:12px;align-items:start}
.td-main{padding:14px;min-width:0}
.td-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.td-head select{font:inherit;font-size:13.5px;padding:8px 10px;border:1.5px solid var(--line);border-radius:9px;background:#fff}
.td-t td,.td-t th{padding:9px 8px}
.td-sort{border:0;background:none;font:inherit;font-weight:800;color:#888;cursor:pointer;padding:0;white-space:nowrap}
.td-nm{font-weight:800;color:var(--ink);text-decoration:none}
.td-ps{display:inline-flex;align-items:center;gap:6px;font-weight:700}
.td-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#bbb;flex:0 0 auto}
.td-dot.d-none{background:#e03131}.td-dot.d-doing{background:#f08c00}.td-dot.d-done{background:#2f9e44}
.td-re{font-size:11px;padding:2px 7px}
.td-f{padding:14px;display:flex;flex-direction:column;gap:6px}
.td-fh{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.td-lb{display:block;font-size:12.5px;font-weight:800;color:#777;margin-top:6px}
.td-lb input,.td-lb select{display:block;width:100%;margin-top:4px}
.td-in,.td-fq select,.td-fq input,.td-lb input,.td-lb select{font:inherit;font-size:14px;padding:8px 10px;border:1.5px solid var(--line);border-radius:9px;background:#fff;min-width:0}
.td-in{width:100%}
.td-fq{display:flex;gap:6px}.td-fq input{flex:1;min-width:0}.td-fq select{flex:0 0 auto}
.td-fs{display:flex;flex-direction:column;gap:6px;font-size:13.5px}
.td-fs label{display:flex;align-items:center;gap:6px;cursor:pointer}
@media (max-width:1000px){.td-l{grid-template-columns:1fr}.td-f{order:-1}}

/* 상세 */
.td-sh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.td-st{margin:0}.td-st small{font-size:14px;color:#888;font-weight:800}
.td-prog{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:10px}
.td-pb{display:flex;align-items:center;gap:8px;font-size:13px;min-width:0;flex:1 1 260px}
.td-pb>span{font-weight:800;color:#555;white-space:nowrap}.td-pb small{color:#888;white-space:nowrap}
.td-bar{flex:1;min-width:60px;height:10px;border-radius:10px;background:#eee;overflow:hidden;display:inline-block;vertical-align:middle}
.td-bar i{display:block;height:100%;background:var(--g-fg);border-radius:10px}
.td-bar.sm{width:70px;flex:0 0 70px;height:7px}
.td-cnts{display:flex;gap:6px;flex-wrap:wrap}
.td-tabs{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.td-seg{display:inline-flex;border:1.5px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;flex-wrap:nowrap}
.td-seg.td-wrap{flex-wrap:wrap}
.td-seg button{border:0;background:#fff;font:inherit;font-size:13.5px;font-weight:800;color:#666;padding:8px 14px;cursor:pointer;border-right:1px solid var(--line);white-space:nowrap}
.td-seg button:last-child{border-right:0}
.td-seg button.on{background:var(--red2);color:#fff}
.td-lb2{font-size:13px;font-weight:800;color:#666;display:flex;align-items:center;gap:6px}
.td-lb2 select{font:inherit;font-size:13.5px;padding:6px 8px;border:1.5px solid var(--line);border-radius:8px}
.td-dr{display:flex;align-items:center;gap:6px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 12px;margin-bottom:10px}
.td-dr input,.td-dr select{font:inherit;font-size:13.5px;padding:6px 8px;border:1.5px solid var(--line);border-radius:8px;min-width:0}
.td-lbl{font-size:14.5px;margin-left:4px}
.td-pl{font-size:12.5px;font-weight:800;color:#888}
.td-prs button.p-none.on{background:#e03131}.td-prs button.p-doing.on{background:#f08c00}.td-prs button.p-done.on{background:#2f9e44}

.td-wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;align-items:start}
.td-col{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px;min-height:120px;display:flex;flex-direction:column;gap:6px;min-width:0}
.td-col.today{border-color:var(--red2);box-shadow:inset 0 3px 0 var(--red2)}
.td-col.drop,.td-mc.drop{background:var(--b-bg)}
.td-ch{display:flex;align-items:center;gap:4px;font-size:13px;color:#555}
.td-ch small{color:#999;font-weight:800}
.td-none{color:#bbb;font-size:12px;text-align:center;padding:10px 0}
.td-card{position:relative;display:grid;grid-template-columns:22px minmax(0,1fr);gap:6px;border:1.5px solid var(--line);border-left-width:4px;border-radius:10px;padding:7px 7px 6px;background:#fff;cursor:pointer;min-width:0}
.td-card.drag{opacity:.4}
.td-card.drop{border-color:var(--b-fg)}
.td-card.s-none{border-left-color:#bbb}
.td-card.s-done{border-left-color:var(--g-fg);background:#f6fcf8}
.td-card.s-doing{border-left-color:#f08c00;background:#fffaf2}
.td-card.s-skip{border-left-color:#e03131;background:#fff6f6}
.td-ck{width:22px;height:22px;border-radius:50%;border:2px solid #ccc;background:#fff;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:transparent}
.td-ck svg.i{width:13px;height:13px}
.td-card.s-done .td-ck{background:var(--g-fg);border-color:var(--g-fg);color:#fff}
.td-cb{min-width:0;display:flex;flex-direction:column;gap:2px}
.td-no{font-size:11px;color:#999;font-weight:800}
.td-sc{margin-left:4px;font-size:10.5px;padding:1px 6px;border-radius:10px;background:#f0f0f2;color:#777}
.s-done .td-sc{background:var(--g-bg);color:var(--g-fg)}.s-doing .td-sc{background:#fff0e0;color:#b35c00}.s-skip .td-sc{background:var(--d-bg);color:var(--d-fg)}
.td-tt{font-size:13.5px;line-height:1.35;overflow-wrap:anywhere}
.s-done .td-tt{text-decoration:line-through;color:#888}
.td-rp,.td-cm{font-size:11.5px;color:#888;overflow-wrap:anywhere}
.td-cm{color:var(--b-fg)}
.td-ev{display:flex;gap:6px;font-size:11.5px;color:#666;align-items:center}
.td-ev svg.i{width:13px;height:13px}
.td-acts{grid-column:1/-1;display:flex;gap:2px;justify-content:flex-end;border-top:1px dashed #eee;padding-top:4px}
.td-ab{border:0;background:none;padding:4px;border-radius:6px;color:#888;cursor:pointer;display:inline-flex;align-items:center;gap:4px;font:inherit;font-size:12px;font-weight:700}
.td-ab:hover{background:#f4f4f6;color:#333}
.td-card.wide{grid-template-columns:26px minmax(0,1fr) auto;align-items:center;padding:10px 12px}
.td-card.wide .td-acts{grid-column:auto;border-top:0;padding-top:0}
.td-card.wide .td-tt{font-size:15px}
.td-dy{min-height:0}
@media (max-width:900px){.td-wk{grid-template-columns:1fr}.td-col{min-height:0}.td-card.wide{grid-template-columns:26px minmax(0,1fr)}.td-card.wide .td-acts{grid-column:1/-1}}

.td-mo{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.td-mw{text-align:center;font-size:12px;font-weight:800;color:#888;padding:4px 0}
.td-mc{background:#fff;border:1px solid var(--line);border-radius:8px;min-height:92px;padding:4px;cursor:pointer;min-width:0;overflow:hidden}
.td-mc.out{background:#fafafa;opacity:.55}
.td-mc.today{border-color:var(--red2)}
.td-md{display:flex;justify-content:space-between;align-items:center;font-size:12px}
.td-mn{font-size:10.5px;color:#888;font-weight:800}
.td-mi{display:flex;align-items:center;gap:3px;font-size:11px;border-radius:5px;padding:2px 3px;margin-top:2px;background:#f7f7f9;min-width:0}
.td-mi small{color:#999;font-size:10px;flex:0 0 auto}
.td-mi span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.td-mi em{font-style:normal;font-size:10px;font-weight:800;border-radius:8px;padding:1px 5px;flex:0 0 auto}
.td-mi em.ok{background:var(--g-bg);color:var(--g-fg)}.td-mi em.no{background:var(--d-bg);color:var(--d-fg)}
@media (max-width:700px){.td-mc{min-height:54px}.td-mi{display:none}.td-mn{display:block}}

/* 결과 */
.td-rc{padding:14px}
.td-rbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.td-rbar input{font:inherit;font-size:13.5px;padding:6px 8px;border:1.5px solid var(--line);border-radius:8px;min-width:0}
.td-sum{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:8px}
.td-sum>div{background:#f7f7f9;border-radius:10px;padding:8px;text-align:center;min-width:0}
.td-sum small{display:block;font-size:11.5px;color:#888;font-weight:800}.td-sum b{font-size:18px}
.td-sum .g b{color:var(--g-fg)}.td-sum .a b{color:#b35c00}.td-sum .d b{color:var(--d-fg)}
.td-stack{display:flex;height:12px;border-radius:12px;overflow:hidden;background:#eee;margin-bottom:12px}
.td-stack i{display:block;height:100%}.td-stack .g{background:var(--g-fg)}.td-stack .a{background:#f08c00}.td-stack .d{background:#e03131}.td-stack .n{background:#ccc}
.td-bars{display:grid;gap:3px;align-items:end;height:170px}
.td-bars.hour{grid-template-columns:repeat(24,minmax(0,1fr))}
.td-bars.weekday{grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
.td-bc{display:flex;flex-direction:column;align-items:center;height:100%;min-width:0}
.td-bw{flex:1;width:100%;position:relative;display:flex;align-items:flex-end;justify-content:center}
.td-bw i{position:absolute;bottom:0;left:15%;right:15%;border-radius:4px 4px 0 0}
.td-bw i.t{background:var(--b-fg);opacity:.85}
.td-bars.weekday .td-bw i.t{background:var(--b-bg);opacity:1}.td-bars.weekday .td-bw i.g{background:var(--g-fg);left:30%;right:30%}
.td-bc small{font-size:10.5px;color:#888}.td-bc b{font-size:10.5px;min-height:14px}
.td-ser{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(80px,2fr) 44px;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid #f2f2f2;font-size:13.5px}
.td-ser small{color:#777}
.td-ta{width:100%;font:inherit;font-size:14px;border:1.5px solid var(--line);border-radius:10px;padding:10px}
@media (max-width:700px){.td-sum{grid-template-columns:repeat(4,minmax(0,1fr))}.td-ser{grid-template-columns:minmax(0,1fr) 44px}.td-ser small,.td-ser .td-bar{grid-column:1/-1}}

/* 진행 창 · 범위 창 */
.mdl-box.td-pbox{max-width:520px}
.td-ph{display:flex;align-items:flex-start;gap:8px}
.td-ph h3{margin:2px 0 12px}
.td-ph small{color:#888;font-weight:800}
.td-x{border:0;background:#f4f4f6;border-radius:8px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto}
.td-stb{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.td-stb button{font:inherit;font-size:15px;font-weight:900;padding:14px 6px;border-radius:12px;border:2px solid var(--line);background:#fff;cursor:pointer;color:#555}
.td-stb .st-done.on{background:var(--g-bg);border-color:var(--g-fg);color:var(--g-fg)}
.td-stb .st-doing.on{background:#fff0e0;border-color:#f08c00;color:#b35c00}
.td-stb .st-skip.on{background:var(--d-bg);border-color:var(--d-fg);color:var(--d-fg)}
.td-undo{display:block;margin:8px 0 0;font-size:13px}
.td-why{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}
.td-why small{width:100%;color:#888;font-weight:800}
.td-h4{font-size:14px;font-weight:900;margin:16px 0 8px}
.td-h4 small{font-weight:600;font-size:11.5px}
.td-evb{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.td-evl{display:flex;flex-direction:column;gap:8px}
.td-evi{border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.td-evi small{color:#888;display:flex;align-items:center;gap:4px}
.td-evi img{max-width:100%;max-height:220px;border-radius:8px;margin-top:6px;display:block}
.td-evi audio{width:100%;margin-top:6px}
.td-evi p{margin:4px 0 0;font-size:14px;white-space:pre-wrap}
.td-scb{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
#tdscBox .td-seg{margin:4px 0 6px}

/* 추가 창 */
.mdl-box.td-mbox{max-width:1000px;padding:18px 20px 14px}
.td-mh{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.td-mh h3{margin:0}.td-mh h3 small{font-size:13.5px;color:#888;font-weight:800}
.td-mg{display:grid;grid-template-columns:290px minmax(0,1fr);gap:16px}
.td-ml,.td-mr{min-width:0}
.td-mode{width:100%;margin-bottom:10px}.td-mode button{flex:1}
.td-cal{border:1px solid var(--line);border-radius:12px;padding:8px;background:#fff}
.td-calh{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.td-calg{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.td-calg .w{font-size:11.5px;color:#999;font-weight:800;padding:3px 0}
.td-calg button{border:0;background:none;font:inherit;font-size:13px;padding:6px 0;border-radius:8px;cursor:pointer;color:#333}
.td-calg button.o{color:#ccc}
.td-calg button.r{background:#fdeaec}
.td-calg button.h{font-weight:900;color:var(--red)}
.td-calg button.e{background:var(--red2);color:#fff}
.td-calg button.t{box-shadow:inset 0 0 0 1.5px var(--b-fg)}
.td-calg button:disabled{opacity:.3;cursor:default}
.td-rg{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.td-note{font-size:12.5px;margin-top:8px}
.td-days{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.td-days b{font-size:13.5px;margin-right:4px}
.td-dc{width:34px;height:34px;border-radius:50%;border:1.5px solid var(--line);background:#fff;font:inherit;font-weight:800;cursor:pointer;color:#555}
.td-dc.on{background:var(--red2);border-color:var(--red2);color:#fff}
.td-tb{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;align-items:center}
.td-tb .btn.on{background:#1a1a1a;color:#fff;border-color:#1a1a1a}
.td-tpw{position:relative}
.td-tpl{position:absolute;top:100%;left:0;z-index:5;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.12);padding:8px;min-width:220px;display:flex;flex-direction:column;gap:2px}
.td-tpl b{font-size:12px;color:#888;padding:2px 6px}
.td-tpl button{border:0;background:none;font:inherit;font-size:13.5px;text-align:left;padding:7px 8px;border-radius:7px;cursor:pointer}
.td-tpl button:hover{background:#f4f4f6}
.td-tpl hr{border:0;border-top:1px solid #eee;margin:4px 0}
.td-paste{border:1.5px dashed var(--b-fg);border-radius:12px;padding:8px;margin-bottom:8px;background:var(--b-bg)}
.td-paste textarea{width:100%;font:inherit;font-size:14px;border:1.5px solid var(--line);border-radius:8px;padding:8px;resize:vertical}
.td-pa{display:flex;gap:8px;align-items:center;margin-top:6px;flex-wrap:wrap}
.td-its{display:flex;flex-direction:column;gap:8px}
.td-it{border:1.5px solid var(--line);border-radius:12px;padding:10px;background:#fff}
.td-it.over{border-color:var(--d-fg)}
.td-ith{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:6px;font-size:13.5px}
.td-cx{border:0;background:none;padding:0 0 0 2px;cursor:pointer;color:inherit;vertical-align:middle}
.td-cx svg.i{width:12px;height:12px}
.td-ib{border:1.5px solid var(--line);background:#fff;border-radius:8px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:#666}
.td-ib.on{background:#1a1a1a;color:#fff;border-color:#1a1a1a}
.td-itr{display:grid;grid-template-columns:minmax(0,200px) minmax(0,1fr);gap:6px}
.td-itr select,.td-tw input{font:inherit;font-size:14px;padding:9px 10px;border:1.5px solid var(--line);border-radius:9px;background:#fff;min-width:0;width:100%}
.td-tw{position:relative}
.td-tw input{padding-right:52px}
.td-n{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:11.5px;color:#aaa;font-weight:800}
.td-it.over .td-tw input{border-color:var(--d-fg)}
.td-it.over .td-n{color:var(--d-fg)}
.td-err{color:var(--d-fg);font-size:12.5px;font-weight:800;margin-top:4px}
.td-set{margin-top:8px;background:#f7f7f9;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:8px}
.td-sr{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13.5px}
.td-sr input,.td-sr select{font:inherit;font-size:13.5px;padding:6px 8px;border:1.5px solid var(--line);border-radius:8px;background:#fff;min-width:0}
.td-tg{display:inline-flex;align-items:center;gap:5px;font-weight:800;min-width:64px}
.td-num{width:72px}
.td-prev{margin-top:10px;border:1px solid var(--line);border-radius:12px;padding:8px 10px;background:#fafafa}
.td-pvh{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;margin-bottom:6px;font-size:13.5px}
.td-pv{max-height:200px;overflow:auto;display:flex;flex-direction:column;gap:2px;margin-bottom:4px}
.td-pv div{display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px;font-size:13px;padding:3px 0;border-bottom:1px solid #f0f0f0}
.td-pv span{color:#888;font-weight:800}.td-pv b{font-weight:600;overflow-wrap:anywhere}
.td-ma{align-items:center;margin-top:12px}
@media (max-width:820px){.td-mg{grid-template-columns:1fr}.td-itr{grid-template-columns:1fr}.td-keys{display:none}.mdl-box.td-mbox{padding:14px}}

/* 인쇄 — 책상용 A4 · 월간 가로 · 주간·일간 세로 · 학생마다 쪽 나눔(named page) */
@page tdland{size:A4 landscape;margin:9mm}
@page tdport{size:A4 portrait;margin:10mm}
@media print{
  body.td-printing #printArea{display:block}
  #printArea .td-pr{break-after:page;page-break-after:always;font-family:"Pretendard",sans-serif;color:#000}
  #printArea .td-pr:last-child{break-after:auto;page-break-after:auto}
  #printArea .td-pr.land{page:tdland}
  #printArea .td-pr.port{page:tdport}
}
#printArea .td-prh{display:flex;align-items:baseline;gap:12px;border-bottom:2px solid #000;padding-bottom:6px;margin-bottom:8px}
#printArea .td-prh h2{margin:0;font-size:20px}#printArea .td-prh h2 small{font-size:13px;font-weight:600}
#printArea .td-prh .sp{flex:1}
#printArea .td-chg{font-size:12px;border:1px solid #000;padding:2px 6px}
#printArea .td-pr table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:11.5px}
#printArea .td-pr th,#printArea .td-pr td{border:1px solid #888;padding:4px;vertical-align:top;white-space:normal;color:#000;background:#fff}
#printArea .td-pr.k-week td{height:220mm}
#printArea .td-pm td{height:30mm}
#printArea .td-pm td.o{background:#f4f4f4}
#printArea .td-pm .dn{display:block;font-size:11px}
#printArea .td-pi{display:flex;gap:4px;align-items:flex-start;margin:2px 0;line-height:1.3;overflow-wrap:anywhere}
#printArea .td-pi .bx{width:11px;height:11px;border:1.2px solid #000;flex:0 0 auto;margin-top:2px}
#printArea .td-pday .td-pi{font-size:15px;padding:8px 0;border-bottom:1px solid #ccc}
#printArea .td-pday .td-pi .bx{width:16px;height:16px}
#printArea .td-pser{font-size:11.5px;margin-top:6px}
#printArea .td-pf{font-size:10.5px;color:#333;margin-top:6px;text-align:right}
#printArea .td-pgh{text-align:center;padding-top:80mm}
#printArea .td-pgh h1{font-size:30px;margin:0 0 10px}
/* 화면에서 인쇄 미리보기(시험 스크린샷) — body.td-printing.td-preview 이면 화면에도 인쇄 틀만 */
body.td-printing.td-preview #app,body.td-printing.td-preview .mdl{display:none!important}
body.td-printing.td-preview #printArea{display:block;background:#fff;padding:10px}
body.td-printing.td-preview #printArea .td-pr{border:1px dashed #aaa;margin-bottom:16px;padding:10px}
