:root{--bg:#fff;--bg-soft:#f6f7f9;--bg-sunken:#eef0f3;--border:#dcdfe4;--border-soft:#e8eaed;--text:#1a1d21;--text-dim:#5b6470;--text-faint:#8b94a0;--accent:#2fa36b;--accent-ink:#238053;--accent-soft:#e6f4ec;--warn:#b45309;--ok:#047857;--danger:#dc2626;--edited:#f59e0b;--approved:#10b981;--term-instrument:#2563eb;--term-chemical:#059669;--term-regulation:#7c3aed;--term-unit:#d97706;--term-process:#0891b2;--term-qc:#dc2626;--term-other:#64748b;--row-h:26px;--font:"Segoe UI", system-ui, -apple-system, "Noto Sans TC", "Microsoft JhengHei", sans-serif}:root[data-theme=dark]{--bg:#16181c;--bg-soft:#1d2025;--bg-sunken:#23272e;--border:#343a43;--border-soft:#2a2f37;--text:#e6e9ee;--text-dim:#a7b0bd;--text-faint:#78828f;--accent:#35b477;--accent-ink:#6fd3a2;--accent-soft:#1b3a2b}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--text);background:var(--bg);font-size:13px}button,input,select,textarea{font:inherit;color:inherit}button{background:var(--bg-soft);border:1px solid var(--border);cursor:pointer;border-radius:4px;padding:3px 9px}button:hover:not(:disabled){background:var(--bg-sunken)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:linear-gradient(180deg, var(--accent), var(--accent-ink));border-color:var(--accent-ink);color:#fff}button.primary:hover:not(:disabled){filter:brightness(1.05);background:linear-gradient(180deg, var(--accent), var(--accent-ink))}button.danger{color:var(--danger)}input[type=text],input[type=search],input[type=password],input[type=email],select,textarea{background:var(--bg);border:1px solid var(--border);border-radius:4px;width:100%;padding:3px 6px}.app{grid-template:"top top top"40px"side main panel"1fr/264px 1fr 340px;height:100vh;display:grid}.app.no-panel{grid-template-columns:264px 1fr 0}.topbar{border-bottom:1px solid var(--border);background:var(--bg-soft);grid-area:top;align-items:center;gap:10px;padding:0 10px;display:flex}.topbar .brand{letter-spacing:.3px;font-weight:700}.topbar .spacer{flex:1}.topbar .meta{color:var(--text-dim);font-size:12px}.badge{border:1px solid var(--border);color:var(--text-dim);border-radius:3px;padding:1px 5px;font-size:11px}.badge.warn{color:var(--warn);border-color:var(--warn)}.sidebar{border-right:1px solid var(--border);background:var(--bg-soft);grid-area:side;min-width:0;overflow:auto}.main{grid-area:main;min-width:0;padding:14px 22px 120px;overflow:auto}.panel{border-left:1px solid var(--border);background:var(--bg-soft);grid-area:panel;min-width:0;overflow:auto}.tree-search{border-bottom:1px solid var(--border-soft);background:var(--bg-soft);padding:6px;position:sticky;top:0}.tree-node{-webkit-user-select:none;user-select:none}.tree-row{height:var(--row-h);cursor:pointer;white-space:nowrap;align-items:center;gap:4px;padding:0 6px;display:flex;overflow:hidden}.tree-row:hover{background:var(--bg-sunken)}.tree-row.active{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.tree-row .caret{width:12px;color:var(--text-faint);flex:0 0 12px}.tree-row .label{text-overflow:ellipsis;overflow:hidden}.tree-row .count{color:var(--text-faint);margin-left:auto;font-size:11px}.tree-row.level-0{padding-left:6px;font-weight:600}.tree-row.level-1{padding-left:18px}.tree-row.level-2{padding-left:30px}.tree-row.level-3{padding-left:42px;font-weight:400}.doc-title{margin:0 0 2px;font-size:18px;font-weight:700}.doc-sub{color:var(--text-dim);margin-bottom:14px}.block{margin:0 0 10px;scroll-margin-top:60px}.block.heading-1{margin-top:26px;font-size:19px;font-weight:700}.block.heading-2{margin-top:20px;font-size:16px;font-weight:700}.block.heading-3{margin-top:16px;font-size:14px;font-weight:700}.block.list{padding-left:20px;position:relative}.block.list .marker{color:var(--text-faint);position:absolute;left:0}.block.caption{color:var(--text-dim);border-left:2px solid var(--border);padding-left:8px;font-size:12px}.pair{border-left:2px solid #0000;margin-left:-8px;padding:1px 0 1px 6px;display:block}.pair:hover{border-left-color:var(--border);background:var(--bg-soft)}.pair.focused{border-left-color:var(--accent);background:var(--accent-soft)}.pair .en{color:var(--text-dim);line-height:1.45}.pair .zh{border-radius:3px;outline:none;min-height:1.4em;padding:0 2px;line-height:1.6}.pair .zh:focus{background:var(--bg);box-shadow:0 0 0 2px var(--accent)}.pair .zh.empty:before{content:"（未翻譯）";color:var(--text-faint)}.pair.status-edited .zh{border-bottom:1px dashed var(--edited)}.pair.status-approved .zh{border-bottom:1px solid var(--approved)}.term{cursor:help;border-bottom:2px solid;border-radius:2px;padding:0 1px}.doc-image{margin:12px 0}.doc-image img{border:1px solid var(--border-soft);border-radius:3px;max-width:100%;display:block}.doc-image .cap{color:var(--text-faint);margin-top:3px;font-size:11px}table.doc-table{border-collapse:collapse;max-width:100%;margin:10px 0;font-size:12px}table.doc-table td{border:1px solid var(--border);vertical-align:top;padding:3px 6px}table.doc-table td .en{color:var(--text-dim)}.page-mark{color:var(--text-faint);border-top:1px dashed var(--border);text-align:right;margin:18px 0 10px;font-size:11px}.panel-tabs{border-bottom:1px solid var(--border);background:var(--bg-soft);z-index:2;display:flex;position:sticky;top:0}.panel-tabs button{background:0 0;border:0;border-bottom:2px solid #0000;border-radius:0;flex:1;padding:8px 4px}.panel-tabs button.active{border-bottom-color:var(--accent);color:var(--accent-ink);font-weight:600}.panel-body{padding:10px}.field{margin-bottom:8px}.field label{color:var(--text-dim);margin-bottom:2px;font-size:11px;display:block}.row{align-items:center;gap:6px;display:flex}.row.wrap{flex-wrap:wrap}.hint{color:var(--text-faint);overflow-wrap:anywhere;font-size:11px;line-height:1.5}.term-item{border-bottom:1px solid var(--border-soft);align-items:center;gap:6px;padding:3px 0;display:flex}.dot{border-radius:50%;flex:0 0 8px;width:8px;height:8px}.hits{border:1px solid var(--border);border-radius:4px;max-height:300px;margin-top:6px;overflow:auto}.hit{border-bottom:1px solid var(--border-soft);padding:4px 6px;font-size:12px}.hit .before{color:var(--text-faint);text-decoration:line-through}.hit .after{color:var(--ok)}.toast{background:var(--text);color:var(--bg);z-index:50;border-radius:5px;padding:8px 14px;font-size:12px;position:fixed;bottom:16px;right:16px}@media print{.sidebar,.panel,.topbar{display:none!important}.app{height:auto;display:block}.main{padding:0;overflow:visible}.pair:hover,.pair.focused{background:0 0;border-left-color:#0000}}.boot{background:linear-gradient(160deg,#f4f7f9,#e3eaef);place-items:center;display:grid;position:fixed;inset:0}.boot-msg{color:#47576a;font-size:13px}.form-error{color:var(--danger);margin-bottom:8px;font-size:12px}.gate{--brand:#2fa36b;--brand-dark:#238053;--gate-ink:#16202a;--gate-ink-2:#47576a;--gate-line:#d9e0e7;--gate-surface:#fff;--gate-danger:#c0392b;z-index:100;color:var(--gate-ink);background:linear-gradient(160deg,#f4f7f9,#e3eaef);justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0;overflow-y:auto}.gate-box{background:var(--gate-surface);border-radius:16px;width:100%;max-width:380px;padding:28px 24px 24px;box-shadow:0 12px 40px #16202a24}.gate-logo{width:auto;height:34px;margin:0 auto 18px;display:block}.gate-title{text-align:center;margin:0 0 6px;font-size:20px}.gate-desc{color:var(--gate-ink-2);text-align:center;margin:0 0 18px;font-size:13px;line-height:1.6}.gate-fields{flex-direction:column;gap:12px;display:flex}.gate-fields label{color:var(--gate-ink-2);margin-bottom:5px;font-size:13px;font-weight:600;display:block}.gate-fields input{border:1px solid var(--gate-line);background:var(--gate-surface);width:100%;min-height:48px;color:var(--gate-ink);border-radius:10px;padding:10px 12px;font-size:16px}.gate-fields input:focus{outline:2px solid var(--brand);outline-offset:-1px}.gate-err{color:var(--gate-danger);background:#fdecea;border-radius:8px;margin:14px 0 0;padding:10px 12px;font-size:13px;line-height:1.6}.gate-submit{width:100%;min-height:48px;font:inherit;border:1px solid var(--brand-dark);background:linear-gradient(180deg, var(--brand), var(--brand-dark));color:#fff;cursor:pointer;border-radius:10px;margin-top:18px;padding:12px;font-size:16px;font-weight:600}.gate-submit:hover:not(:disabled){filter:brightness(1.05);background:linear-gradient(180deg, var(--brand), var(--brand-dark))}.gate-submit:disabled{opacity:.55;cursor:progress}.gate-note{color:#7d8b9b;text-align:center;margin:14px 0 0;font-size:12px;line-height:1.6}.scrim{z-index:30;background:#00000059;border:0;padding:0;position:fixed;inset:0}.only-narrow{display:none}@media (width<=1100px){.app,.app.no-panel{grid-template-columns:248px 1fr;grid-template-areas:"top top""side main"}.panel{z-index:40;width:min(360px,92vw);transition:transform .18s ease-out;position:fixed;top:0;bottom:0;right:0;transform:translate(101%);box-shadow:-2px 0 12px #0000001f}.panel.open{transform:none}}@media (width<=760px){body{font-size:14px}.app,.app.no-panel{grid-template-columns:1fr;grid-template-areas:"top""main"}.only-narrow{display:inline-flex}.topbar{gap:6px;padding:0 8px}.topbar .meta{font-size:11px}.sidebar{z-index:40;width:min(300px,86vw);transition:transform .18s ease-out;position:fixed;top:0;bottom:0;left:0;transform:translate(-101%);box-shadow:2px 0 12px #0000001f}.sidebar.open{transform:none}.main{padding:12px 14px 96px}.tree-row{height:38px}.pair{padding:3px 0 3px 6px}.pair .en{font-size:13px}.pair .zh{min-height:1.6em;font-size:15px;line-height:1.7}.pair input[type=checkbox]{width:18px;height:18px}.block.heading-1{font-size:20px}.block.heading-2{font-size:17px}.block.heading-3{font-size:15px}table.doc-table{max-width:100%;display:block;overflow-x:auto}.topbar button,.panel-body button{min-height:32px}.toast{text-align:center;bottom:12px;left:12px;right:12px}.tax-row{display:none}.tax-row.open{display:flex}.tax-row input{width:100%!important}.tax-row>span{flex:45%}}@media (width<=400px){.topbar .meta{display:none}}.preview-overlay{z-index:60;background:#3a3d42;flex-direction:column;display:flex;position:fixed;inset:0}.preview-bar{color:#fff;background:#1a1d21;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex}.preview-bar .grow{flex:1}.preview-bar button{color:#fff;background:#fff2;border-color:#fff4}.preview-bar button:hover:not(:disabled){background:#fff3}.preview-frame{background:#f2f3f5;border:0;flex:1;width:100%}@media (width<=760px){.preview-bar{flex-wrap:wrap;gap:6px}.preview-bar strong{flex:1 0 100%}}.term.formula{border-bottom-style:dotted}
