@page{size:A4 portrait;margin:12.7mm}.print-options label.inline,.print-courses label.inline{display:inline-flex;font-size:.95rem}.print-options fieldset.plain{display:block}.print-courses{margin:12px 0;display:flex!important;flex-wrap:wrap;gap:4px 0}.print-courses legend{width:100%}.print-root{display:none}.print-preview{overflow-x:auto;padding:16px 0;background:var(--surface);border-radius:8px}.sheet{--sheet-head: #d9d9d9;width:210mm;min-height:297mm;margin:0 auto 16px;padding:12.7mm;background:#fff;color:#000;box-shadow:0 1px 4px #00000040;font-family:DFKai-SB,BiauKai,標楷體,Kaiti TC,STKaiti,TW-Kai,AR PL UKai TW,AR PL UKai TW MBE,"Noto Serif TC",serif;font-size:12pt;line-height:1.25}.sheet-title{font-size:16pt;font-weight:400;text-align:center;margin:0 0 4mm}.sheet-subtitle{text-align:center;margin:-2mm 0 3mm}.sheet-grid{border-collapse:collapse;margin:0 auto;table-layout:fixed}.sheet-grid th,.sheet-grid td{border:1px solid #000000;text-align:center;vertical-align:middle;padding:0 2px;height:7mm;overflow:hidden;white-space:nowrap}.sheet-grid .sheet-head{background:var(--sheet-head);font-weight:400;height:15mm;white-space:normal}.sheet-blocks .sheet-grid col{width:2.5cm}.sheet-blocks .sheet-mark{font-size:11pt}.sheet-blocks .sheet-mark-long{font-size:8pt;line-height:1;white-space:normal}.sheet-wide{width:100%}.sheet-matrix .sheet-grid th:nth-child(1),.sheet-list .sheet-grid th:nth-child(1){width:12mm}.sheet-matrix .sheet-grid th:nth-child(2),.sheet-list .sheet-grid th:nth-child(2){width:26mm}.sheet-matrix .sheet-grid th:nth-child(3){width:22mm}.sheet-matrix .sheet-head div{white-space:nowrap}.sheet-list .sheet-note{width:40%}.sheet-small{font-size:10pt}@media print{#root{display:none!important}.print-root{display:block}html,body{background:#fff!important}.sheet{width:auto;min-height:0;margin:0;padding:0;box-shadow:none;break-after:page;-webkit-print-color-adjust:exact;print-color-adjust:exact}.sheet:last-child{break-after:auto}.sheet-grid tr{break-inside:avoid}}:root{--bg: #ffffff;--surface: #f6f7f9;--fg: #1a1a1a;--muted: #666666;--border: #d9dce1;--accent: #2457c5;--accent-fg: #ffffff;--danger: #b42318;--notice-bg: #fff6e0;--notice-fg: #6b4a00;color-scheme:light dark;font-family:system-ui,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;line-height:1.5}@media(prefers-color-scheme:dark){:root{--bg: #121212;--surface: #1d1f23;--fg: #eeeeee;--muted: #9a9a9a;--border: #3a3d44;--accent: #7aa2ff;--accent-fg: #0d1526;--danger: #ff8a80;--notice-bg: #3a2f12;--notice-fg: #f5d68a}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg)}h1{font-size:1.5rem}h2{font-size:1.1rem}.page{max-width:960px;margin:0 auto;padding:24px 16px}.muted{color:var(--muted)}.small{font-size:.875rem}.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--surface)}.spacer{flex:1}.auth-card{max-width:400px;margin:48px auto;padding:24px 16px}.form{display:grid;gap:14px;margin:16px 0}.form label{display:grid;gap:4px;font-size:.9rem}input{font:inherit;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--fg)}button{font:inherit;padding:8px 14px;border:0;border-radius:6px;background:var(--accent);color:var(--accent-fg);cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button.link{background:none;color:var(--accent);padding:0}.row{margin-top:16px;display:flex;gap:16px;align-items:center}.error{color:var(--danger);margin:0}.notice{background:var(--notice-bg);color:var(--notice-fg);padding:8px 12px;border-radius:6px}.notice p{margin:0}.page-notice{border-radius:0;text-align:center}.qr{display:block;margin:12px auto;background:#fff;padding:8px;border-radius:6px}.secret{display:block;word-break:break-all;padding:8px;background:var(--surface);border-radius:6px}.nav{display:flex;gap:14px;flex-wrap:wrap}.nav a{color:var(--fg);text-decoration:none;padding:2px 0;border-bottom:2px solid transparent}.nav a.active{border-bottom-color:var(--accent)}.topbar{flex-wrap:wrap}.narrow{max-width:560px}.panel{border:1px solid var(--border);border-radius:8px;padding:4px 16px 12px;margin:16px 0}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:.92rem}.table th,.table td{text-align:left;vertical-align:top;padding:8px 6px;border-bottom:1px solid var(--border)}.table tr.inactive td{color:var(--muted)}.table .actions{white-space:nowrap}.table .actions .link+.link{margin-left:12px}.chips{list-style:none;margin:0;padding:0;display:grid;gap:4px}.chip{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}.badge{display:inline-block;padding:0 6px;border-radius:4px;background:var(--surface);border:1px solid var(--border);font-size:.8rem}.success{color:#1a7f37;margin:0}@media(prefers-color-scheme:dark){.success{color:#7ee2a8}}button.secondary{background:var(--surface);color:var(--fg);border:1px solid var(--border)}button.danger{background:var(--danger);color:#fff}.row.end{justify-content:flex-end}.row.tight{margin-top:0;gap:8px}.row.tight input{flex:1}label.inline{display:inline-flex;gap:6px;align-items:center;margin-right:16px}select,textarea{font:inherit;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--fg)}fieldset.plain{border:0;padding:0;margin:0;display:grid;gap:8px}fieldset.plain legend{font-size:.9rem;margin-bottom:4px}.plain-list{list-style:none;padding:0;display:grid;gap:8px}.dialog{border:1px solid var(--border);border-radius:10px;padding:16px 20px;max-width:min(520px,calc(100vw - 32px));background:var(--bg);color:var(--fg)}.dialog[open]:not(:modal){position:fixed;top:0;right:0;bottom:0;left:0;margin:auto;height:fit-content;z-index:10;box-shadow:0 0 0 100vmax #00000059}.dialog::backdrop{background:#00000059}.page.wide{max-width:1200px}h3{font-size:1rem;margin:16px 0 6px}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 16px}.grid2 .span2{grid-column:1 / -1}.grid2 label{display:grid;gap:4px;font-size:.9rem}.subpanel{background:var(--surface);border-radius:8px;padding:12px;margin-top:12px}input.short{width:6em}.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0}.filters input[type=search]{flex:1 1 220px}a.button{display:inline-block;font:inherit;padding:8px 14px;border-radius:6px;background:var(--accent);color:var(--accent-fg);text-decoration:none}a.button.secondary{background:var(--surface);color:var(--fg);border:1px solid var(--border)}.id-display{font-size:1.1rem;letter-spacing:.08em}.badge+.badge{margin-left:4px}.row.tight input.short{flex:0 0 6em}textarea{width:100%}textarea.mono,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem}label.button{display:inline-block;font:inherit;padding:8px 14px;border-radius:6px;cursor:pointer}label.button.secondary{background:var(--surface);color:var(--fg);border:1px solid var(--border)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.table.mapping select{min-width:9em;font-size:.85rem}.summary{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px}.summary .link.active{text-decoration:underline;font-weight:600}.badge.action-insert{border-color:#1a7f37}.badge.action-update{border-color:var(--accent)}.badge.action-review,.badge.action-invalid,.badge.action-duplicate{border-color:var(--danger)}.stack{display:grid;gap:6px;align-content:center}.table-wrap.scroll{max-height:320px;overflow-y:auto}.nowrap{white-space:nowrap}details.panel>summary{cursor:pointer;list-style:none}details.panel>summary::-webkit-details-marker{display:none}.inline-h{display:inline}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--border);margin:16px 0 0}.tabs button{background:none;color:var(--fg);border-radius:6px 6px 0 0;border:1px solid transparent;border-bottom:0}.tabs button.active{border-color:var(--border);background:var(--surface);font-weight:600}.bulkbar{background:var(--surface);padding:8px;border-radius:6px;margin:8px 0}.table.matrix th.col{min-width:8.5em;vertical-align:bottom}select.cell{font-size:.85rem;padding:4px 6px;width:100%}select.cell-yes{background:#e6f4ea;color:#0b4f1f}select.cell-no{background:#fde8e8;color:#7a1010}select.cell-pending{background:#fff4d6;color:#6b4a00}select.cell-na{color:var(--muted)}@media(prefers-color-scheme:dark){select.cell-yes{background:#173d24;color:#b7f0c9}select.cell-no{background:#4a1a1a;color:#ffc9c9}select.cell-pending{background:#3a2f12;color:#f5d68a}}pre.message{white-space:pre-wrap;word-break:break-word;font-family:inherit;background:var(--surface);border-radius:6px;padding:10px 12px;margin:6px 0}.messages{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.message-card{border:1px solid var(--border);border-radius:8px;padding:10px 12px}.pre{white-space:pre-wrap}.badge.change-new,.badge.change-changed{border-color:var(--accent)}.badge.change-withdrawn{border-color:var(--danger)}.dialog label.grid-label{display:grid;gap:4px;margin:8px 0 12px;font-size:.9rem}.plain-list.tight-list{gap:2px;margin:4px 0 0}.audit-table code{font-size:.8rem}.audit-table td{vertical-align:top}.error-log td.message{min-width:16em;overflow-wrap:anywhere}
