:root{font-family:Inter,"Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;color:#20354a;background:#f3f6f9;font-synthesis:none;font-size:16px;--teal:#078e96;--navy:#162d43;--border:#e2e9ef}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.43}button,a,input{touch-action:manipulation}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #42c5cb;outline-offset:3px}svg{width:23px;height:23px;flex-shrink:0}button{transition:background .15s,box-shadow .15s}#app{min-height:100vh;display:flex}.sidebar{width:238px;flex-shrink:0;background:linear-gradient(165deg,#1b334c,#12283c);color:#e6edf5;padding:31px 15px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:2}.brand{color:inherit;text-decoration:none;display:flex;align-items:center;gap:8px;padding:0 10px;white-space:nowrap}.brand b{font-size:28px;letter-spacing:-1px;color:#fff}.brand span{font-size:21px;font-weight:700;color:#61dde0}.brand-caption{font-size:12px;letter-spacing:4px;color:#869eaf;margin:8px 11px 40px}.sidebar nav{display:grid;gap:8px}.sidebar nav button{position:relative;border:0;background:none;border-radius:7px;padding:16px 17px;display:flex;align-items:center;gap:13px;color:#c1cddd;text-align:left;font-weight:600}.sidebar nav button:hover{background:#254258}.sidebar nav button[aria-current]{color:white;background:linear-gradient(100deg,#0ca6ad,#078f99);box-shadow:0 5px 18px #05182730}.sidebar nav small{font-size:11px;border:1px solid #ffffff45;border-radius:3px;padding:2px 4px;margin-left:auto;white-space:nowrap}.sidebar-bottom{margin-top:auto;padding:20px 12px 0;font-size:15px;color:#b7c9d6}.sidebar-bottom p{font-size:13px;color:#7992a7;margin:10px 0 24px}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#5ad4bb;margin-right:6px}.version{font-size:11px;letter-spacing:1.7px;color:#718ba2}.workspace{margin-left:238px;width:calc(100% - 238px)}.topbar{height:86px;background:#fff;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;padding:0 38px;gap:16px}.company{display:flex;align-items:center;gap:18px;font-size:15px;color:#6c7b8b}.company strong{font-size:16px;color:#294156}.divider{height:19px;width:1px;background:#dbe3e9;display:inline-block;margin:0 3px}.environment{font-size:13px;color:#05818a;background:#e8f7f7;border:1px solid #cfebeb;border-radius:4px;padding:4px 8px;white-space:nowrap}.profile{display:flex;align-items:center;gap:11px;background:none;border:0;text-align:left;font-size:15px}.profile small{display:block;margin-top:4px;color:#8c98a4;font-size:12px}.avatar{width:35px;height:35px;display:grid;place-items:center;background:#edf3f7;border:1px solid #dce6ee;color:#566f85;border-radius:50%;font-weight:600}main{padding:24px 38px 30px;max-width:1800px;margin:auto}.demo-notice{display:flex;gap:10px;align-items:center;color:#627789;font-size:13px;margin:0 0 29px}.notice-mark{font-size:11px;letter-spacing:1px;border:1px solid #bbd4df;color:#557f90;padding:3px 5px;border-radius:3px}.demo-date{margin-left:auto;white-space:nowrap;color:#92a0ac}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:25px}.eyebrow{font-size:11px;letter-spacing:2.3px;font-weight:700;color:#8196a6;margin-bottom:8px}h1{font-size:28px;letter-spacing:1px;margin:0 0 9px;color:#19354d}h2{margin:0;font-size:16px}.page-heading p{margin:0;color:#82919f;font-size:15px;line-height:1.7}.button{display:inline-flex;align-items:center;justify-content:center;gap:9px;border-radius:6px;border:1px solid transparent;padding:11px 17px;font-weight:600;font-size:15px;min-height:40px;white-space:nowrap}.button svg{width:16px;height:16px}.secondary{background:white;border-color:#d7e2e9;color:#586f80}.secondary:hover{background:#f0f7f8}.primary{background:var(--teal);color:white;box-shadow:0 3px 6px #078e9619}.primary:hover{background:#087a81}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-bottom:27px}.two-cards{grid-template-columns:repeat(2,minmax(0,1fr));max-width:690px}.stat{border:1px solid #dbecee;background:linear-gradient(110deg,#eef9f9,#faffff);display:flex;text-align:left;gap:16px;padding:21px 22px;border-radius:9px;position:relative;align-items:center;min-height:126px}.stat-icon{width:43px;height:47px;display:grid;place-items:center;color:#06969b}.stat-icon svg{width:32px;height:32px}.stat-label{font-size:15px;font-weight:600;display:block}.stat strong{font-size:32px;display:block;line-height:1.4;font-weight:650;font-variant-numeric:tabular-nums;color:#0b5d6a}.stat strong small{font-size:13px;margin-left:9px;color:#8b9da5;font-weight:400}.stat-subtitle{font-size:12px;color:#7c919e;white-space:normal;line-height:1.6}.stat-arrow{position:absolute;right:16px;top:15px;color:#b2c8cd}.stat.incomplete,.stat.unknown{background:linear-gradient(110deg,#fff8ed,#fffcf7);border-color:#f1e7d6}.stat.incomplete .stat-icon,.stat.unknown .stat-icon{color:#dc9a30}.stat.incomplete strong,.stat.unknown strong{color:#a37635}.stat.processing{background:#f0f7ff;border-color:#deebf8}.stat.processing .stat-icon,.stat.processing strong{color:#4481b9}.stat.failed{background:#fff4f3;border-color:#f0e0de}.stat.failed .stat-icon,.stat.failed strong{color:#c56c64}.stat.issued .stat-icon,.stat.issued strong{color:#298f73}.stat.active{outline:2px solid var(--teal);outline-offset:2px}.stat:hover{box-shadow:0 3px 12px #17384b0b}.list-panel{background:white;border:1px solid var(--border);border-radius:9px;box-shadow:0 4px 20px #243e5303;overflow:hidden}.panel-heading{padding:22px 24px 0;display:flex;justify-content:space-between;align-items:center}.panel-heading h2{font-size:16px}.panel-heading h2 span{font-size:12px;margin-left:7px;font-weight:400;background:#f0f4f7;border-radius:4px;padding:3px 6px;color:#7b8d9a}.panel-heading>span{font-size:12px;color:#99a4ad}.filters{padding:22px 24px;display:flex;align-items:center;gap:13px;flex-wrap:wrap}.search{position:relative;flex:1;min-width:200px}.search svg{position:absolute;left:12px;top:13px;width:17px;height:17px;color:#8a9cad}input[type=search]{height:44px;width:100%;border:1px solid #dae4eb;border-radius:5px;padding:8px 12px 8px 37px;color:#385269;background:#fcfdfe;font-size:15px}input::placeholder{color:#94a3b1}.date-filters{display:flex;align-items:center;gap:10px;font-size:13px;color:#6c7f90}input[type=date]{height:44px;min-width:155px;border:1px solid #dae4eb;border-radius:5px;padding:6px 9px;color:#4f667b;background:#fff;font-size:13px}.presets{display:flex;gap:5px}.presets button{background:#f7f9fb;border:1px solid #e3e9ef;border-radius:4px;font-size:13px;padding:10px 12px;color:#6d8294}.presets button[aria-pressed=true]{color:#07828c;background:#e9f7f7;border-color:#cde9e9}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap}th{font-size:13px;color:#718393;font-weight:500;background:#f6f8fa;border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:13px 17px}td{padding:19px 17px;font-size:15px;border-bottom:1px solid #edf1f5}tbody tr:last-child td{border-bottom:0}.check-cell{width:48px;padding-left:24px;padding-right:8px}input[type=checkbox]{width:16px;height:16px;accent-color:var(--teal);vertical-align:middle;cursor:pointer}input:disabled{cursor:not-allowed}.selected-row{background:#f3fbfb}.numeric{text-align:right;font-variant-numeric:tabular-nums}.amount{font-weight:600;color:#455c70}.muted{color:#657b8c;font-size:13px}.document-link{background:transparent;border:0;padding:0;font-weight:600;color:#345a72;font-size:15px}.document-link:hover{text-decoration:underline}.text-button{padding:3px 0;color:#078b96;font-size:13px;background:none;border:0}.text-button:hover{text-decoration:underline}.badge{display:inline-block;font-size:12px;padding:5px 10px;border-radius:4px;background:#e8f7f5;color:#188f87;white-space:nowrap}.badge.incomplete,.badge.unknown{color:#b18232;background:#fff3da}.badge.processing{color:#4888c1;background:#eaf3fd}.badge.failed{color:#c26661;background:#fceceb}.badge.issued{color:#308f76;background:#e6f6ee}.platform{font-size:12px;color:#a28a53;background:#faf6e9;border-radius:4px;padding:4px 7px}.platform.confirmed{color:#488b71;background:#eaf7f0}.invoice-number{font-size:12px;color:#657f92}#selection-footer{border-top:1px solid var(--border);padding:19px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fdfefe}.selection-summary{display:flex;align-items:center;gap:10px;font-size:13px;color:#79909f}.selection-summary strong{font-size:17px;color:#244c62;margin-left:8px;letter-spacing:.3px}.selection-count{font-size:16px;font-weight:700;color:#078e96}.record-hint{font-size:13px;color:#8d9ba7;line-height:1.7}.footnote{display:flex;justify-content:space-between;gap:12px;margin-top:22px;font-size:12px;color:#9ba8b2}.footnote-dot{margin:0 8px}.filter-error,.active-filter{padding:0 24px 15px;margin:0;font-size:15px;color:#b16c40}.active-filter{color:#2c8c94}.active-filter button{background:none;border:0;color:#688796;margin-left:8px}.empty-state{text-align:center;padding:48px 20px;color:#94a4af}.empty-state svg{display:block;margin:0 auto 14px;width:32px;height:32px}.empty-state strong{display:block;color:#5b7487}.empty-state p{font-size:13px}.empty-state .button{margin-top:8px}.skip-link{position:fixed;top:-100px;background:white;padding:12px;z-index:10}.skip-link:focus{top:8px}dialog{border:1px solid #dce6ec;border-radius:12px;padding:0;width:min(620px,calc(100% - 28px));max-height:90vh;box-shadow:0 24px 100px #102a4450;color:#29465c}dialog::backdrop{background:#102b4966;backdrop-filter:blur(3px)}dialog.wide-dialog{width:min(820px,calc(100% - 28px))}.dialog-heading{padding:25px 28px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;gap:20px}.dialog-heading h2{font-size:22px}.dialog-heading p{font-size:15px;color:#8194a3;margin:9px 0 0}.close-button{background:#f4f7f9;border:0;border-radius:50%;width:30px;height:30px;font-size:23px;color:#8599a7}.detail-body{padding:24px 28px}.detail-status{display:flex;align-items:center;gap:12px;font-size:13px;color:#8a9eac}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:23px 15px;margin:26px 0}.detail-grid dt{font-size:13px;color:#8a9aa7;margin-bottom:6px}.detail-grid dd{font-size:15px;margin:0;line-height:1.6;overflow-wrap:anywhere}.line-item{padding:17px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;gap:10px;font-size:15px}.totals{margin:20px 0}.totals div{display:flex;justify-content:space-between;padding:7px 0;font-size:15px}.totals div:last-child{font-size:17px;font-weight:700;margin-top:8px}.totals dd{margin:0}.detail-warning{background:#fff8e9;border:1px solid #f5e9c8;border-radius:5px;font-size:15px;color:#96733d;padding:13px 15px;line-height:1.8}.detail-note{font-size:13px;background:#eff7fa;padding:13px;color:#607f94;line-height:1.8;overflow-wrap:anywhere}.dialog-footer{border-top:1px solid var(--border);padding:17px 28px;display:flex;justify-content:flex-end;gap:10px;background:#fbfcfd}.info-copy{padding:15px 28px 24px;font-size:15px;line-height:1.9}.preview-context{display:flex;gap:14px;align-items:center;margin-bottom:22px;font-size:15px}.preview-total{display:flex;align-items:center;justify-content:space-between;margin:22px 0;font-size:15px}.preview-total strong{font-size:24px}.confirm-label{display:flex;align-items:center;gap:10px;font-size:15px;line-height:1.8;margin-top:20px}.confirm-label input{flex-shrink:0}#approve-error{color:#b75b55;font-size:15px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%) translateY(20px);max-width:calc(100% - 30px);background:#18394c;color:white;padding:14px 22px;box-shadow:0 8px 30px #1234;border-radius:7px;font-size:15px;z-index:20;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}#toast.visible{opacity:1;transform:translateX(-50%)}
@media(min-width:1600px){main{padding-top:32px}.filters{gap:20px}.search{min-width:260px}.stat{padding:24px 28px}}
@media(max-width:1250px){.sidebar{width:205px;padding:29px 10px}.brand b{font-size:24px}.brand span{font-size:18px}.workspace{margin-left:205px;width:calc(100% - 205px)}main{padding:22px}.topbar{padding:0 22px}.sidebar nav small{display:none}.cards{gap:10px}.stat{padding:18px 12px;gap:8px}.stat-subtitle{font-size:11px}.stat-icon{width:30px}.stat-arrow{display:none}.company{gap:10px}.demo-date{display:none}.filters{gap:12px}.search{flex-basis:100%}.date-filters{flex:1}}
@media(max-width:800px){.sidebar{position:static;width:100%;padding:17px 17px 10px}.brand-caption,.sidebar-bottom{display:none}.brand{padding:0 0 15px}.sidebar nav{display:flex;gap:6px;overflow:auto}.sidebar nav button{padding:11px 12px;font-size:15px;white-space:nowrap;gap:7px}.sidebar nav svg{width:17px;height:17px}#app{display:block}.workspace{margin:0;width:100%}.topbar{height:74px;padding:0 18px}.company{flex-wrap:wrap;font-size:12px;gap:7px;max-width:65%}.company strong{font-size:15px}.company .divider{display:none}.profile{gap:7px}.profile small{font-size:11px}.profile>span:last-child{display:none}.avatar{width:28px;height:28px}.environment{font-size:11px}main{padding:19px 16px}.demo-notice{font-size:12px;line-height:1.7;margin-bottom:23px;align-items:flex-start}.page-heading{align-items:flex-start}.page-heading .button{font-size:12px;padding:9px;min-height:36px;margin-top:18px}h1{font-size:25px}.page-heading p{font-size:13px;max-width:230px}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.stat{min-height:112px;padding:15px 12px;gap:10px}.stat strong{font-size:28px}.stat-subtitle{font-size:11px}.stat-icon svg{width:28px;height:28px}.panel-heading{padding:20px 16px 0}.panel-heading>span{display:none}.filters{padding:18px 16px}.date-filters{gap:7px;flex-wrap:wrap}.date-filters>span:first-child{flex-basis:100%;margin-bottom:3px}.date-filters input{min-width:0;width:calc((100% - 35px)/2)}.presets{width:100%}.presets button{flex:1}.footnote{flex-direction:column;font-size:11px;gap:9px}#selection-footer{padding:16px;flex-wrap:wrap}.selection-summary{gap:7px}.selection-summary strong{font-size:16px}#preview{margin-left:auto}.detail-body{padding:20px}.dialog-heading{padding:22px 20px}.dialog-footer{padding:16px 20px}.preview-context{flex-wrap:wrap}.detail-grid{gap:18px 12px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Row feedback is separate from checkbox selection. */
#table tbody tr > td { transition: background-color .15s ease; }
#table tbody tr:hover > td:not(.empty-state),
#table tbody tr:focus-within > td:not(.empty-state) { background-color: #e8f5f7; }
#table tbody tr.selected-row > td { background-color: #edf8f7; }
#table tbody tr.selected-row:hover > td,
#table tbody tr.selected-row:focus-within > td { background-color: #d7eeed; }
#table tbody tr:hover > td:first-child:not(.empty-state),
#table tbody tr:focus-within > td:first-child:not(.empty-state) { box-shadow: inset 3px 0 #078e96; }
@media(max-width:800px) {
  input[type=search], input[type=date] { font-size:16px; }
  .topbar { height:auto; min-height:86px; padding-top:12px; padding-bottom:12px; }
  .page-heading { flex-wrap:wrap; }
  .page-heading .button { margin-top:0; }
}

/* Keep release identity visible at the lower left, even on tall pages. */
.sidebar { height:100dvh; }
.sidebar-bottom { flex-shrink:0; }
.version { color:#d3e6ef; font-size:13px; letter-spacing:.3px; line-height:1.7; }
.build-time { color:#a9c2d3; font-size:12px; line-height:1.7; margin-top:6px; }
.build-time time { color:#d3e6ef; font-variant-numeric:tabular-nums; }
@media(max-width:800px) {
  .sidebar { height:auto; }
  .sidebar-bottom { display:block; position:fixed; bottom:0; left:0; right:0; padding:7px 16px; background:#162d43; z-index:5; }
  .sidebar-bottom > .status-dot, .sidebar-bottom > p { display:none; }
  .sidebar-bottom { font-size:0; }
  .sidebar-bottom .version { display:inline-block; margin-right:14px; font-size:12px; }
  .build-time { display:inline-block; margin-top:0; font-size:11px; }
  .build-time br { display:none; }
  .workspace { padding-bottom:66px; }
}

.legal-links { display:flex; gap:18px; flex-wrap:wrap; }
.legal-links a, .legal-footer a { color:#087b84; text-underline-offset:4px; font-size:14px; }
.footnote { flex-wrap:wrap; align-items:center; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.legal-page { background:#f3f6f9; font-size:16px; line-height:1.9; }
.legal-header { max-width:960px; margin:0 auto; padding:28px 24px; display:flex; justify-content:space-between; gap:16px; }
.legal-header a { color:#087b84; text-underline-offset:4px; }
.legal-header a:first-child { color:#19354d; font-size:22px; font-weight:700; text-decoration:none; }
.legal-content { max-width:960px; margin:0 auto; padding:40px 48px; background:white; border:1px solid #dce6ed; border-radius:10px; overflow-wrap:anywhere; }
.legal-content h1 { font-size:28px; line-height:1.5; margin:0 0 20px; }
.legal-content h2 { font-size:21px; margin:32px 0 12px; padding-top:18px; border-top:1px solid #e2e9ef; }
.legal-content p { margin:14px 0; }
.legal-content li { margin:12px 0; }
.legal-content a { color:#087b84; text-underline-offset:4px; }
.legal-footer { max-width:960px; margin:0 auto; padding:24px; display:flex; gap:20px; justify-content:space-between; flex-wrap:wrap; color:#607989; }
.legal-footer nav { display:flex; gap:22px; }
.legal-footer [aria-current] { font-weight:700; }
@media(max-width:800px) {
  .legal-content { margin:0 12px; padding:24px; }
  .legal-content h1 { font-size:25px; }
  .legal-header { padding:20px 16px; font-size:14px; }
}

.connection-lead { color:#657d8e; }
.connection-notice { background:#fff6e5; border:1px solid #eddbad; border-radius:8px; padding:20px 24px; margin:24px 0; }
.connection-notice strong { color:#8b641d; }
.connection-notice p { margin:6px 0 0; color:#806e4c; }
.connection-summary { display:grid; grid-template-columns:1fr 1fr; gap:24px; padding:24px; margin:24px 0; background:#f4f8fa; border-radius:8px; }
.connection-summary dt { font-size:13px; color:#708696; }
.connection-summary dd { font-size:16px; margin:5px 0 0; font-weight:600; }
.connection-steps { padding-left:26px; }
.connection-steps li { padding:8px 0 8px 8px; }
.connection-steps p { margin:5px 0; color:#617788; }
.connection-actions { display:flex; align-items:center; flex-wrap:wrap; gap:24px; margin-top:30px; }
.connection-actions .button { padding:14px 22px; font-size:16px; }
.connection-help { font-size:14px; color:#667e8e; }
.danger { background:#b34d49; color:white; }
.connection-entry-links { display:grid; gap:12px; margin:24px 0; }
.connection-entry-links a { padding:16px; border:1px solid #d5e7eb; border-radius:6px; color:#087b84; text-underline-offset:4px; }
@media(max-width:600px) { .connection-summary { grid-template-columns:1fr; padding:20px; gap:16px; } .connection-actions { align-items:stretch; flex-direction:column; gap:14px; } }
