:root{--bg:#eef2f7;--navy:#0f2a47;--blue:#0369a1;--line:#d5dde8;--mut:#64748b;--ok:#15803d;--bad:#b91c1c}
*{box-sizing:border-box}body{margin:0;font-family:-apple-system,"Noto Sans KR","Malgun Gothic",sans-serif;background:var(--bg);color:#0f172a;font-size:15px}
.top{background:var(--navy);color:#fff;padding:12px 18px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.top b{font-size:18px}.top .sp{flex:1}.top small{opacity:.75}
.tabs{display:flex;gap:4px;padding:0 12px;background:var(--navy);overflow-x:auto}
.tab{color:#cbd5e1;padding:10px 14px;cursor:pointer;border-bottom:3px solid transparent;font-size:14px;white-space:nowrap;text-decoration:none}
.tab.on{color:#fff;border-color:#38bdf8}
main{max-width:1100px;margin:0 auto;padding:16px}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px}
h2{margin:0 0 10px;font-size:17px}h3{margin:0 0 6px;font-size:15px}
label{display:block;font-size:13px;color:var(--mut);margin:10px 0 4px}
input,select,textarea{width:100%;padding:10px 12px;border:1px solid #b6c2d2;border-radius:8px;font-size:15px;background:#fff;font-family:inherit}
button{background:var(--blue);color:#fff;border:0;border-radius:8px;padding:10px 16px;font-size:15px;font-weight:700;cursor:pointer}
button.g{background:#fff;color:var(--blue);border:1.5px solid var(--blue)}button.sm{padding:5px 10px;font-size:13px}
button.red{background:var(--bad)}button:disabled{opacity:.4;cursor:not-allowed}
.row{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.row>*{flex:1;min-width:130px}.row>button{flex:none}
table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:7px 8px;border-bottom:1px solid #e8edf3;text-align:left;vertical-align:top}
th{background:#f4f7fb;color:var(--mut);position:sticky;top:0}td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
tr.sub td{background:#f8fafc;font-weight:700}tr.tot td{background:#e0f2fe;font-weight:700}
.pill{display:inline-block;padding:1px 8px;border-radius:99px;background:#e0f2fe;color:#075985;font-size:12px}
.pill.warn{background:#fef3c7;color:#92400e}.pill.ok{background:#dcfce7;color:#166534}.pill.bad{background:#fee2e2;color:#991b1b}
.mut{color:var(--mut);font-size:13px}.scroll{max-height:62vh;overflow:auto}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:14px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px}.kpi small{color:var(--mut)}.kpi b{display:block;font-size:22px;margin-top:4px}
.kpi.alert{border-color:#f59e0b;background:#fffbeb}
.ov{position:fixed;inset:0;background:#0f172a99;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.md{background:#fff;border-radius:14px;padding:20px;width:100%;max-width:460px;max-height:90vh;overflow:auto}
.err{color:var(--bad);font-size:13px;min-height:18px;margin-top:8px}
.stmt{max-width:760px;margin:0 auto}
@media print{.top,.tabs,.noprint,#modal{display:none!important}body{background:#fff}main{padding:0}.card{border:0}}

main{padding-bottom:64px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:12px}
.legend{margin:6px 0 0;font-size:12px;color:var(--mut)}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin:0 4px 0 10px}
.kpi small{display:block}
h1{margin:0 0 4px;font-size:22px;text-align:center;letter-spacing:6px}
table.box th{background:#f4f7fb;width:1%;white-space:nowrap}table.box th,table.box td{border:1px solid var(--line)}
/* 하단 띠 알림 */
#tick{position:fixed;left:0;right:0;bottom:0;height:42px;background:var(--navy);color:#fff;display:flex;align-items:center;gap:10px;padding:0 10px;z-index:40;box-shadow:0 -2px 8px #0003}
#tick.alert{background:#7f1d1d}
#tick .lab{background:#fff;color:var(--navy);border-radius:6px;padding:3px 10px;font-size:13px;white-space:nowrap;flex:none}
#tick.alert .lab{color:#991b1b}
#tick .trk{flex:1;overflow:hidden;white-space:nowrap;min-width:0}
#tick .mv{display:inline-flex;animation:tickmove linear infinite}
#tick .trk:hover .mv{animation-play-state:paused}
#tick .h{display:inline-flex;align-items:center;gap:18px;padding-right:18px;min-width:100%;font-size:15px}
#tick .h i{opacity:.5;font-style:normal;font-size:10px}
#tick a{color:#fff;text-decoration:none;font-weight:700}#tick a:hover{text-decoration:underline}
#tick button{flex:none}
@keyframes tickmove{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){#tick .mv{animation:none}#tick .trk{overflow-x:auto}}
@media print{#tick{display:none!important}}

.rl{display:flex;align-items:center;gap:6px;margin:0;color:#cbd5e1;font-size:12px}.rl select{width:auto;padding:4px 8px;font-size:13px}

/* 분석 화면 */
tr.pv{cursor:pointer}tr.pv:hover td{background:#f0f9ff}
.shr{height:8px;background:#e2e8f0;border-radius:99px;min-width:80px}.shr i{display:block;height:8px;background:#0369a1;border-radius:99px}
.crumbs{margin:0 0 6px}.crumb{cursor:pointer}
.chip{display:inline-flex;align-items:center;background:#e0f2fe;border-radius:99px;padding:2px 4px 2px 10px;margin:0 6px 4px 0;font-size:13px}

/* 캘린더 */
.cal{overflow-x:auto}.calh{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));text-align:center;font-size:12px;color:var(--mut);padding:4px 0}.calh .sun{color:#dc2626}.calh .sat{color:#2563eb}
.calg{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}
.calw{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:6px}.calw .cd{border:1px solid var(--line);border-radius:8px}
.cd{padding:4px 5px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer;min-height:92px;background:#fff;overflow:hidden}
.cd:hover{background:#f8fafc}.cd.out{background:#f8fafc;color:#94a3b8}.cd.today{background:#eff6ff}.cd.sel{outline:2px solid var(--blue);outline-offset:-2px}
.cd>b{font-size:12px;display:block;margin-bottom:2px}.cd.today>b{color:var(--blue)}
.ce{font-size:11px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:4px;margin-bottom:2px;color:#0f172a}
.ce i{flex:none;width:7px;height:7px;border-radius:50%;background:var(--c)}
.kchip{display:inline-flex;align-items:center;gap:5px;margin:0 12px 4px 0;font-size:13px;color:#0f172a;cursor:pointer}.kchip i{width:10px;height:10px;border-radius:3px}

/* 상대방 링크 화면(시험) */
body.rcpt .top,body.rcpt .tabs,body.rcpt #tick{display:none}
body.rcpt main{padding-bottom:24px}

/* 자동기입 스위치 */
.autobar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;padding:10px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}
button.sw{display:inline-flex;align-items:center;gap:10px;border-radius:99px;padding:6px 16px 6px 6px;font-size:15px;color:#fff;border:0}
button.sw .knob{width:26px;height:26px;border-radius:50%;background:#fff;display:inline-block}
button.sw.on{background:#16a34a}button.sw.off{background:#d97706;flex-direction:row-reverse;padding:6px 6px 6px 16px}
button.sw.lock{background:#64748b;opacity:1;cursor:not-allowed}
.swchip{display:inline-block;padding:1px 9px;border-radius:99px;font-size:12px;font-weight:700;color:#fff}
.swchip.on{background:#16a34a}.swchip.off{background:#d97706}.swchip.lock{background:#64748b}
.unref{background:#fffbeb;border:1px solid #f59e0b;border-radius:10px;padding:10px;margin:0 0 10px}.unref.late{background:#fef2f2;border-color:#fca5a5}

/* 메시지함 */
.bdg{display:inline-block;min-width:18px;padding:0 6px;border-radius:99px;background:#dc2626;color:#fff;font-size:11px;font-weight:700;text-align:center}
.guide{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:6px 10px;font-size:13px;color:#1e3a8a;margin-top:8px}
.msgwrap{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:12px;align-items:start}@media(max-width:760px){.msgwrap{grid-template-columns:1fr}}
.mrow{padding:8px;border-radius:8px;cursor:pointer;border:1px solid transparent}.mrow:hover{background:#f8fafc}.mrow.sel{background:#e0f2fe;border-color:#7dd3fc}.mpv{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.bubs{max-height:48vh;overflow:auto;display:flex;flex-direction:column;gap:8px;padding:4px}
.bub{max-width:88%;padding:8px 12px;border-radius:12px;font-size:14px;line-height:1.5;background:#fff;border:1px solid var(--line)}
.bub.in{align-self:flex-start}.bub.out{align-self:flex-end;background:#dbeafe;border-color:#93c5fd}.bub.notice{align-self:center;background:#fef9c3;border-color:#fde047;max-width:96%}.bub.sys{align-self:center;background:#dcfce7;border-color:#86efac;max-width:96%}
.slipbox{margin-top:6px;padding:8px;background:#f8fafc;border:1px dashed #94a3b8;border-radius:8px;font-size:13px}
