:root{--color-primary:#1d4ed8;--color-primary-dark:#1e3a8a;--color-success:#15803d;--color-danger:#b91c1c;--color-warning:#b45309;--color-bg:#f5f6f8;--color-surface:#fff;--color-border:#dbe0e6;--color-text:#1f2430;--color-text-muted:#5a6270;--radius:10px;--shadow:0 1px 3px #00000014, 0 1px 2px #0000000f;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body,#app{height:100%}body{background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.6}h1,h2,h3{margin:0 0 12px;line-height:1.35}h1{font-size:24px}h2{font-size:20px}h3{font-size:18px}p{margin:0 0 12px}a{color:var(--color-primary)}button,input,select,textarea{font-family:inherit;font-size:16px}button{cursor:pointer}.btn{border-radius:var(--radius);background:var(--color-primary);color:#fff;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:10px 22px;font-size:17px;font-weight:600;transition:background .15s;display:inline-flex}.btn:hover:not(:disabled){background:var(--color-primary-dark)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{color:var(--color-primary);border-color:var(--color-primary);background:#fff}.btn-secondary:hover:not(:disabled){background:#eef3ff}.btn-block{width:100%}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.field{margin-bottom:18px}.field label{margin-bottom:6px;font-weight:600;display:block}.field input,.field select{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;min-height:48px;color:var(--color-text);background:#fff;padding:10px 14px}.field input:focus,.field select:focus{outline:2px solid var(--color-primary);outline-offset:1px}.field .hint{color:var(--color-text-muted);margin-top:6px;font-size:14px}.alert{border-radius:var(--radius);margin-bottom:16px;padding:14px 16px;font-size:15px}.alert-error{color:var(--color-danger);background:#fef2f2;border:1px solid #fecaca}.alert-success{color:var(--color-success);background:#f0fdf4;border:1px solid #bbf7d0}.badge{border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:13px;font-weight:600;display:inline-flex}.badge-success{color:var(--color-success);background:#dcfce7}.badge-muted{color:var(--color-text-muted);background:#eef0f3}.progress-bar{background:#e7e9ee;border-radius:999px;height:10px;overflow:hidden}.progress-bar>span{background:var(--color-success);height:100%;transition:width .25s;display:block}.container{max-width:1080px;margin:0 auto;padding:20px 16px 60px}.container-narrow{max-width:480px;margin:0 auto;padding:40px 16px}.top-bar{background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:20;position:sticky;top:0}.top-bar-inner{justify-content:space-between;align-items:center;gap:12px;max-width:1080px;margin:0 auto;padding:12px 16px;display:flex}.top-bar .brand{color:var(--color-text);font-size:18px;font-weight:700;text-decoration:none}.top-bar nav{align-items:center;gap:8px;display:flex}.top-bar nav a,.top-bar nav button{border-radius:var(--radius);color:var(--color-text-muted);min-height:unset;background:0 0;border:none;padding:8px 14px;font-size:15px;text-decoration:none}.top-bar nav a.router-link-active,.top-bar nav a:hover,.top-bar nav button:hover{color:var(--color-text);background:#eef1f5}.empty-state{text-align:center;color:var(--color-text-muted);padding:60px 20px}.spinner-wrap{color:var(--color-text-muted);justify-content:center;padding:60px 0;display:flex}@media (width<=640px){body{font-size:16px}.container{padding:14px 12px 60px}}
