:root{--tac-gold-a:#ffb549;--tac-gold-b:#c67d30;--tac-gold-a-10:#fff8ed;--tac-gold-a-20:#fff0db;--tac-gold-c-10:#fdfbf3;--tac-cream:#fcf1d5;--tac-brown:#421500;--tac-maroon:#691615;--gradient-gold:linear-gradient(90deg, #f0a42e 0%, #ffb549 18%, #eed484 50%, #ffb549 80%, #e99b2b 100%);--neutral-50:#fbf8f4;--neutral-200:#e7dfd5;--neutral-300:#d2c7ba;--neutral-500:#7e7064;--neutral-600:#5c4f45;--status-success:#3f7a3a;--status-success-bg:#e8f1e3;--status-danger:#b43630;--status-danger-bg:#f8e6e3;--text-primary:var(--tac-brown);--text-secondary:var(--neutral-600);--text-muted:var(--neutral-500);--text-link:var(--tac-gold-b);--surface-subtle:var(--tac-gold-c-10);--border-default:var(--neutral-200);--border-strong:var(--neutral-300);--action-primary:var(--tac-gold-a);--action-primary-hover:#f2a53a;--focus-ring:0 0 0 3px #c67d3059;--overlay-scrim:#2a14068c;--shadow-lg:0 12px 32px #42150029;--font-sans:"Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}body{background:var(--neutral-50);color:var(--text-primary);font-family:var(--font-sans);margin:0}button,input{font:inherit;color:inherit}.field{flex-direction:column;gap:6px;font-size:14px;display:flex}.field-label{font-weight:500}.field input{border:1px solid var(--border-strong);background:#fff;border-radius:4px;height:40px;padding:0 12px}.field-lg input{height:48px;font-size:16px}.field input:focus{border-color:var(--tac-gold-b);box-shadow:var(--focus-ring);outline:none}.field input[aria-invalid=true]{border-color:var(--status-danger)}.field-helper{color:var(--text-muted);font-size:12px}.field-error{color:var(--status-danger);font-size:12px}.btn{background:var(--action-primary);height:40px;color:var(--tac-brown);cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;gap:6px;padding:0 18px;font-weight:500;display:inline-flex}.btn:hover{background:var(--action-primary-hover)}.btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.btn:disabled{opacity:.6;cursor:default}.btn-lg{height:48px;font-size:16px}.btn-sm{height:32px;padding:0 12px;font-size:13px}.btn-outline{border-color:var(--border-strong);background:#fff}.btn-outline:hover{background:var(--tac-gold-a-10)}.btn-ghost{background:0 0}.btn-ghost:hover{background:var(--tac-gold-a-10)}.link-button{color:var(--text-link);cursor:pointer;background:0 0;border:0;padding:8px;font-size:14px}.alert-danger{background:var(--status-danger-bg);color:var(--status-danger);border-radius:4px;gap:8px;padding:10px 12px;font-size:13px;line-height:1.6;display:flex}.login-page{background:#fff;justify-content:center;align-items:center;min-height:100vh;padding:48px 24px;display:flex}.login-form{flex-direction:column;gap:20px;width:100%;max-width:380px;display:flex}.login-logo{align-self:flex-start;height:36px}.login-title{letter-spacing:.06em;margin:12px 0 4px;font-size:24px}.login-subtitle{color:var(--text-secondary);margin:0;font-size:14px}.shell{min-height:100vh;display:flex}.sidebar{border-right:1px solid var(--border-default);background:#fff;flex-direction:column;flex:none;width:224px;height:100vh;display:flex;position:sticky;top:0}.sidebar:before{content:"";background:var(--gradient-gold);height:4px}.sidebar-brand{letter-spacing:.08em;color:var(--text-muted);flex-direction:column;gap:6px;padding:20px 20px 8px;font-size:12px;display:flex}.sidebar-brand img{align-self:flex-start;height:28px}.sidebar nav{flex-direction:column;flex:1;gap:2px;padding:16px 12px;display:flex}.nav-item{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:4px;height:40px;padding:0 12px;font-size:14px}.nav-item[aria-current=page]{background:var(--tac-gold-a-20);font-weight:700}.sidebar-user{border-top:1px solid var(--border-default);align-items:center;gap:10px;padding:16px 20px;display:flex}.avatar{background:var(--tac-cream);border-radius:50%;flex:none;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:flex}.sidebar-user-text{flex-direction:column;flex:1;min-width:0;font-size:14px;line-height:1.35;display:flex}.sidebar-user-text small{color:var(--text-muted);font-size:12px}.sidebar-version{color:var(--text-muted);font-variant-numeric:tabular-nums;padding:0 20px 12px;font-size:11px}.content{flex:1;min-width:0}.page{flex-direction:column;gap:20px;max-width:1100px;padding:28px 32px 48px;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.page-header h1{letter-spacing:.06em;margin:0 0 4px;font-size:24px}.page-header p{color:var(--text-secondary);margin:0;font-size:13px}@media (width<=1099px){.shell{flex-direction:column}.sidebar{border-right:0;border-bottom:1px solid var(--border-default);flex-direction:row;align-items:center;width:auto;height:auto;position:static}.sidebar:before,.sidebar-brand span,.sidebar-version{display:none}.sidebar-brand{padding:12px 16px}.sidebar nav{flex-direction:row;padding:0 8px}.sidebar-user{border-top:0;padding:8px 16px}.page{padding:20px 16px 40px}}.table-wrap{border:1px solid var(--border-default);background:#fff;border-radius:6px;overflow-x:auto}.table-wrap table{border-collapse:collapse;width:100%;min-width:720px;font-size:14px}.table-wrap th{text-align:left;letter-spacing:.04em;color:var(--text-secondary);border-bottom:1px solid var(--border-default);background:var(--surface-subtle);white-space:nowrap;padding:10px 16px;font-size:12px;font-weight:500}.table-wrap td{border-bottom:1px solid var(--border-default);padding:14px 16px}.table-wrap tr:last-child td{border-bottom:0}.muted{color:var(--text-secondary);font-variant-numeric:tabular-nums}.dialog-backdrop{z-index:1000;background:var(--overlay-scrim);justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.dialog{width:100%;box-shadow:var(--shadow-lg);background:#fff;border-radius:6px;flex-direction:column;gap:16px;padding:24px;display:flex}.dialog-header{justify-content:space-between;align-items:center;display:flex}.dialog-header h2{margin:0;font-size:18px}.dialog-close{cursor:pointer;width:32px;height:32px;color:var(--text-muted);background:0 0;border:0;font-size:20px}.dialog-actions{justify-content:flex-end;gap:12px;display:flex}.dialog-note{color:var(--text-secondary);font-size:13px}.toast{z-index:1100;background:var(--status-success-bg);width:340px;max-width:calc(100vw - 32px);color:var(--status-success);box-shadow:var(--shadow-lg);border-radius:6px;padding:14px 16px;font-size:14px;position:fixed;bottom:80px;right:24px}.page-wide{max-width:none}.field-sm{gap:4px;font-size:13px}.field-sm input{height:32px;padding:0 10px;font-size:13px}.filter-panel{border:1px solid var(--border-default);background:#fff;border-radius:6px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));align-items:end;gap:12px 16px;padding:16px 20px;display:grid}.filter-actions{gap:8px;display:flex}.result-bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.result-count{font-size:14px;font-weight:500}.chip{background:var(--tac-gold-a-20);border-radius:999px;align-items:center;gap:4px;height:24px;padding:0 8px;font-size:12px;display:inline-flex}.chip button{cursor:pointer;color:var(--text-muted);background:0 0;border:0;padding:0;font-size:14px;line-height:1}.records-table{font-variant-numeric:tabular-nums;min-width:1040px}.records-table td{white-space:nowrap;padding:12px}.records-table th{padding:10px 12px}.records-table tbody tr:hover{background:var(--tac-gold-c-10)}.mono{color:var(--text-secondary);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}.mono.repeated{color:var(--neutral-300)}.collector-duty{color:var(--tac-maroon);font-weight:700}.badge{border-radius:999px;align-items:center;height:22px;padding:0 8px;font-size:12px;font-weight:500;display:inline-flex}.badge-success{background:var(--status-success-bg);color:var(--status-success)}.badge-danger{background:var(--status-danger-bg);color:var(--status-danger)}.badge-warning{color:#8a5a0b;background:#fdf0d8}.badge-info{color:#2f5d86;background:#e6eef6}.badge-neutral{background:var(--neutral-200);color:var(--neutral-600)}.row-actions{gap:4px;display:flex}.btn-xs{height:28px;padding:0 8px;font-size:12px;font-weight:400}.empty-state{text-align:center;color:var(--text-secondary);flex-direction:column;align-items:center;gap:8px;padding:48px 24px;font-size:13px;display:flex}.empty-state strong{color:var(--text-primary);font-size:15px;font-weight:500}.pager{justify-content:flex-end;align-items:center;gap:12px;font-size:14px;display:flex}.preview{flex-wrap:wrap;gap:24px;display:flex}.preview-main{flex-direction:column;flex:380px;gap:12px;min-width:0;display:flex}.preview-stage{background:var(--neutral-200);border-radius:6px;justify-content:center;align-items:center;height:420px;display:flex;position:relative;overflow:hidden}.preview-stage img{object-fit:contain;max-width:100%;max-height:100%}.preview-nav{border:1px solid var(--border-strong);cursor:pointer;background:#fff;border-radius:50%;width:40px;height:40px;font-size:22px;line-height:1;position:absolute;top:50%;transform:translateY(-50%)}.preview-prev{left:12px}.preview-next{right:12px}.preview-pos{background:var(--tac-brown);color:#fff;border-radius:999px;padding:2px 10px;font-size:12px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.preview-thumbs{gap:8px;display:flex}.preview-thumbs button{background:var(--tac-cream);width:56px;height:56px;color:var(--tac-gold-b);cursor:pointer;border:2px solid #0000;border-radius:4px}.preview-thumbs button[aria-current=true]{border-color:var(--tac-gold-b)}.preview-side{flex-direction:column;flex:240px;gap:16px;display:flex}.preview-meta{margin:0}.preview-meta div{border-bottom:1px solid var(--border-default);justify-content:space-between;gap:12px;padding:9px 0;font-size:14px;display:flex}.preview-meta dt{color:var(--text-muted)}.preview-meta dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-weight:500}.preview-file{color:var(--text-secondary);word-break:break-all;margin:0;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px}.preview-actions{flex-direction:column;gap:8px;margin-top:auto;display:flex}.preview-actions a{text-decoration:none}.btn.disabled{opacity:.6;pointer-events:none}
