:root{--bg-0: #111213;--bg-1: #1a1b1e;--bg-2: #222428;--bg-3: #2c2f35;--bg-4: #363a42;--accent: #e8692a;--accent-dim: #b34e1c;--accent-glow: rgba(232, 105, 42, .15);--text-0: #f0ede8;--text-1: #b8b4ad;--text-2: #7a7670;--text-3: #4a4843;--border: rgba(255,255,255,.07);--border-md: rgba(255,255,255,.12);--green: #3eb580;--yellow: #d4a017;--red: #d95f5f;--blue: #4a90d9;--mono: "IBM Plex Mono", monospace;--sans: "Noto Sans TC", sans-serif;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 4px rgba(0,0,0,.4);--shadow-md: 0 4px 16px rgba(0,0,0,.5)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;background:var(--bg-0);color:var(--text-0);font-family:var(--sans);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit;color:var(--text-0);background:var(--bg-3);border:1px solid var(--border-md);border-radius:var(--radius-md);outline:none;transition:border-color .15s}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-1)}::-webkit-scrollbar-thumb{background:var(--bg-4);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-2)}.mono{font-family:var(--mono)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;font-family:var(--mono)}.badge-open{background:#4a90d926;color:#6aabf0}.badge-in_progress{background:#e8692a26;color:#f0895a}.badge-pending_parts{background:#d4a01726;color:#e8ba3a}.badge-resolved{background:#3eb58026;color:#5dd09a}.badge-closed{background:#7a767026;color:#9a9690}.badge-cancelled{background:#d95f5f26;color:#e87878}.priority-low{color:var(--text-2)}.priority-medium{color:var(--blue)}.priority-high{color:var(--yellow)}.priority-urgent{color:var(--red)}.card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius-md);font-size:13px;font-weight:500;transition:all .15s;white-space:nowrap}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#f07530}.btn-ghost{background:transparent;border:1px solid var(--border-md);color:var(--text-1)}.btn-ghost:hover{background:var(--bg-3);border-color:var(--border-md)}.btn-danger{background:#d95f5f26;color:var(--red);border:1px solid rgba(217,95,95,.3)}.btn-danger:hover{background:#d95f5f40}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:12px;color:var(--text-2);text-transform:uppercase;letter-spacing:.06em}.form-input{padding:9px 12px;width:100%}.form-textarea{padding:9px 12px;width:100%;resize:vertical;min-height:100px}.form-select{padding:9px 12px;width:100%}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fadeUp .25s ease both}.data-table{width:100%;border-collapse:collapse}.data-table th{text-align:left;padding:10px 14px;font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);border-bottom:1px solid var(--border);white-space:nowrap}.data-table td{padding:12px 14px;border-bottom:1px solid var(--border);color:var(--text-1);vertical-align:middle}.data-table tbody tr{transition:background .1s}.data-table tbody tr:hover{background:var(--bg-2);cursor:pointer}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:20px;height:20px;border:2px solid var(--bg-4);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}
