:root{--color-brand:#4a86a0;--color-brand-dark:#3a6d84;--color-brand-light:#74a7bd;--color-brand-soft:#edf5f8;--color-brand-deep:#345d70;--color-accent:#2f6f8a;--color-accent-soft:#e3f0f5;--color-accent-line:#c5dde7;--color-text:#1b2a33;--color-muted:#5a6a74;--color-border:#d7e2e8;--color-bg:#f4f7f9;--color-surface:#fff;--color-danger:#b91c1c;--color-danger-soft:#fdecec;--color-success:#15803d;--color-success-soft:#e8f5ec;--radius:8px}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);margin:0;font:15px/1.6 Noto Sans TC,Microsoft JhengHei,PingFang TC,system-ui,sans-serif}a{color:var(--color-brand-dark)}h1{margin:0 0 16px;font-size:22px}h2{margin:0 0 12px;font-size:18px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:24px}.narrow{max-width:420px;margin:24px auto}.form{gap:14px}.field,.form{flex-direction:column;display:flex}.field{gap:4px}.field label{font-size:14px;font-weight:600}.req{color:var(--color-danger);margin-left:2px;font-weight:700}.required-note{color:var(--color-muted);margin:0;font-size:13px}.required-note .req{margin:0 2px 0 0}.field input:not([type=checkbox]):not([type=radio]),.field select,.field textarea,.input{font:inherit;border:1px solid var(--color-border);background:#fff;border-radius:6px;padding:9px 11px}.field input:not([type=checkbox]):not([type=radio]):focus,.field select:focus,.field textarea:focus,.input:focus{outline:2px solid var(--color-brand-soft);border-color:var(--color-brand)}.field .error{color:var(--color-danger);font-size:13px}.field .hint{color:var(--color-muted);font-size:13px}.field.invalid input,.field.invalid select{border-color:var(--color-danger)}.checkbox{align-items:flex-start;gap:8px;font-size:14px;display:flex}.btn{font:inherit;border:1px solid var(--color-brand);background:var(--color-brand);color:#fff;cursor:pointer;border-radius:6px;padding:10px 16px;font-weight:600}.btn:hover:not(:disabled){background:var(--color-brand-dark)}.btn:disabled{opacity:.6;cursor:default}.btn.secondary{color:var(--color-brand);background:#fff}.btn.secondary:hover:not(:disabled){background:var(--color-brand-soft)}.btn.danger{color:var(--color-danger);border-color:var(--color-danger);background:#fff}.alert{border-radius:6px;padding:10px 14px;font-size:14px}.alert.error{background:var(--color-danger-soft);color:var(--color-danger)}.alert.success{background:var(--color-success-soft);color:var(--color-success)}.alert.info{background:var(--color-brand-soft);color:var(--color-text)}.btn.small{padding:6px 12px;font-size:13px}.btn.cta{background:linear-gradient(135deg,var(--color-brand) 0,var(--color-brand-deep) 100%);border-color:var(--color-brand-deep);color:#fff;font-weight:700;box-shadow:0 4px 14px #345d704d}.btn.cta:hover:not(:disabled){background:linear-gradient(135deg,var(--color-brand-dark) 0,#284a5a 100%);box-shadow:0 6px 18px #345d7061}.muted{color:var(--color-muted)}.links{justify-content:space-between;font-size:14px;display:flex}.admin-page{flex-direction:column;gap:14px;min-width:0;display:flex}.admin-page h1{margin:0;font-size:20px}.admin-table{border-collapse:collapse;border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;width:100%;font-size:14px;overflow:hidden}.admin-table td,.admin-table th{text-align:left;border-bottom:1px solid var(--color-border);vertical-align:top;padding:8px 10px}.admin-table th{white-space:nowrap;background:#eef4f7;font-weight:600}.admin-table tr:last-child td{border-bottom:0}.admin-table .num{text-align:right}.admin-table td{min-width:5em}.admin-table .nowrap,.admin-table .num,.admin-table td .btn,.admin-table td button,.tag{white-space:nowrap}.admin-table td.wide{min-width:14em}.admin-table .small,.tag{font-size:12px}.table-wrap{overflow-x:auto}.tag{background:var(--color-bg);color:var(--color-muted);border-radius:99px;padding:1px 8px;display:inline-block}.tag.ok{background:var(--color-success-soft);color:var(--color-success)}.tag.bad{background:var(--color-danger-soft);color:var(--color-danger)}.tag.info{background:var(--color-brand-soft);color:var(--color-brand)}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.panel input,.panel select,.panel textarea,.toolbar input,.toolbar select{font:inherit;border:1px solid var(--color-border);background:#fff;border-radius:6px;padding:6px 10px}.panel{border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;flex-direction:column;gap:10px;padding:14px;display:flex}.btn.sm{padding:4px 10px;font-size:13px}.actions{flex-wrap:wrap;gap:6px;display:flex}
