:root{--color-bg:#f8fafc;--color-surface:#fff;--color-border:#e2e8f0;--color-text:#0f172a;--color-text-muted:#64748b;--color-text-faint:#94a3b8;--color-primary:#4f46e5;--color-primary-hover:#4338ca;--color-primary-soft:#eef2ff;--color-danger:#dc2626;--color-danger-hover:#b91c1c;--color-danger-soft:#fef2f2;--color-success:#16a34a;--color-success-soft:#f0fdf4;--color-warning:#d97706;--color-warning-soft:#fffbeb;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-sm:0 1px 2px #0f172a0f;--shadow-md:0 4px 12px #0f172a14;--shadow-lg:0 20px 45px #0f172a29;font-family:Instrument Sans,ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:600}h1{font-size:1.5rem}h2{font-size:1.125rem}p{margin:0}a{color:var(--color-primary)}button,.btn{border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:.4rem;padding:.55rem 1rem;font-family:inherit;font-size:.875rem;font-weight:500;transition:background-color .15s,border-color .15s,box-shadow .15s,transform 50ms;display:inline-flex}button:hover,.btn:hover{background:var(--color-primary-hover)}button:active,.btn:active{transform:translateY(1px)}button:disabled,.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}button:focus-visible,.btn:focus-visible,input:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}button[type=button]{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}button[type=button]:hover{background:var(--color-bg);border-color:var(--color-text-faint)}button.danger,.btn-danger{background:var(--color-danger);color:#fff;border-color:#0000}button.danger:hover,.btn-danger:hover{background:var(--color-danger-hover)}.btn-icon{flex:none;width:2rem;height:2rem;padding:.4rem;font-size:.9375rem;line-height:1}.button-link{border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);align-items:center;padding:.45rem .9rem;font-size:.8125rem;font-weight:500;text-decoration:none;transition:background-color .15s;display:inline-flex}.button-link:hover{background:var(--color-bg)}input,textarea,select{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;color:var(--color-text);padding:.55rem .7rem;font-family:inherit;font-size:.9rem;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus,select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}input::placeholder,textarea::placeholder{color:var(--color-text-faint)}label{color:var(--color-text-muted);flex-direction:column;gap:.35rem;font-size:.8125rem;font-weight:500;display:flex}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:1.5rem}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.page-header .actions{gap:.5rem;display:flex}.page-header p{color:var(--color-text-muted);margin-top:.25rem;font-size:.875rem}.table-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:auto hidden}table{border-collapse:collapse;width:100%;font-size:.875rem}th,td{text-align:left;padding:.75rem .9rem}thead th{background:var(--color-bg);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--color-border);font-size:.6875rem;font-weight:600}tbody tr{border-bottom:1px solid var(--color-border);transition:background-color .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:var(--color-bg)}tbody tr.needs-update{background:var(--color-danger-soft)}tbody tr.needs-update:hover{background:#fde3e3}.actions{justify-content:flex-end;gap:.5rem;display:flex}.badge{border-radius:999px;align-items:center;padding:.3rem .7rem;font-size:.75rem;font-weight:600;display:inline-flex}.badge-success{background:var(--color-success-soft);color:var(--color-success)}.badge-danger{background:var(--color-danger-soft);color:var(--color-danger-hover)}.alert{border-radius:var(--radius-sm);padding:.75rem 1rem;font-size:.875rem}.alert-error{background:var(--color-danger-soft);color:var(--color-danger-hover)}.error{color:var(--color-danger);font-size:.875rem}.field-error{color:var(--color-danger);font-size:.75rem}.muted{color:var(--color-text-faint)}.empty-state{text-align:center;color:var(--color-text-muted);background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius-md);padding:3rem 1.5rem}.topbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:10;justify-content:space-between;align-items:center;padding:.85rem 1.5rem;display:flex;position:sticky;top:0}.topbar-left{align-items:center;gap:2rem;display:flex}.topbar-brand{letter-spacing:-.01em;color:var(--color-text);align-items:center;gap:.5rem;font-size:1.05rem;font-weight:700;text-decoration:none;display:flex}.topbar-brand .mark{border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;justify-content:center;align-items:center;width:28px;height:28px;font-size:.8125rem;font-weight:700;display:inline-flex}.topbar-nav{gap:.25rem;display:flex}.topbar-nav a{border-radius:var(--radius-sm);color:var(--color-text-muted);padding:.5rem .85rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:background-color .15s,color .15s}.topbar-nav a:hover{background:var(--color-bg);color:var(--color-text)}.topbar-nav a.router-link-active{background:var(--color-primary-soft);color:var(--color-primary)}.topbar-right{align-items:center;gap:1rem;display:flex}.topbar-user{color:var(--color-text-muted);align-items:center;gap:.6rem;font-size:.8125rem;display:flex}.topbar-user .avatar{background:var(--color-primary-soft);width:30px;height:30px;color:var(--color-primary);border-radius:50%;justify-content:center;align-items:center;font-size:.8125rem;font-weight:700;display:inline-flex}.app-main{max-width:1440px;margin:0 auto;padding:2rem 1.5rem 4rem}@media (width<=720px){.topbar-left{gap:1rem}.topbar-nav{display:none}}
