:root{--color-bg: #f5f6fa;--color-card: #ffffff;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-success: #059669;--color-danger: #dc2626;--color-warning: #d97706;--color-text: #1f2937;--color-text-muted: #6b7280;--font-sans: "Noto Sans SC", -apple-system, BlinkMacSystemFont, sans-serif;--radius: 12px;--shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);min-height:100vh;line-height:1.6}#app{min-height:100vh}a{color:var(--color-primary);text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.6rem 1.2rem;border-radius:8px;border:none;font-weight:500;font-size:.95rem;transition:background .2s}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn-success{background:var(--color-success);color:#fff}.btn-danger{background:var(--color-danger);color:#fff}.btn-outline{background:transparent;border:1px solid var(--color-primary);color:var(--color-primary)}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.35rem;font-weight:500;color:var(--color-text)}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.6rem .75rem;border:1px solid #e5e7eb;border-radius:8px;font-size:1rem}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb26}.card{background:var(--color-card);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.page{max-width:1200px;margin:0 auto;padding:1.5rem}.page-title{font-size:1.5rem;font-weight:600;margin-bottom:1rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid #e5e7eb}th{font-weight:600;color:var(--color-text-muted);font-size:.875rem}.badge{display:inline-block;padding:.2rem .6rem;border-radius:9999px;font-size:.8rem;font-weight:500}.badge-pending{background:#fef3c7;color:#92400e}.badge-success{background:#d1fae5;color:#065f46}.badge-danger{background:#fee2e2;color:#991b1b}.alert{padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem}.alert-error{background:#fee2e2;color:#991b1b}.alert-success{background:#d1fae5;color:#065f46}
