:root{--bg: #0f1419;--surface: #1a2332;--surface-2: #243044;--border: #334155;--text: #e8eef6;--muted: #94a3b8;--accent: #3b82f6;--accent-hover: #2563eb;--ok: #22c55e;--bad: #ef4444;--warn: #f59e0b;--radius: 10px;--font: system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, sans-serif}*{box-sizing:border-box}html,body,#app,.app-root{min-height:100%}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--border);background:var(--surface-2);border-radius:8px;padding:.5rem .9rem}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:var(--accent-hover)}button.danger{background:#7f1d1d;border-color:#991b1b;color:#fff}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.55rem .75rem}label{display:block;font-size:.9rem;color:var(--muted);margin-bottom:.3rem}.field{margin-bottom:1rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.auth-card{width:min(420px,100%)}.auth-card h1{margin:0 0 .25rem;font-size:1.5rem}.auth-card .sub{color:var(--muted);margin-bottom:1.25rem}.layout{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:1.25rem 1rem;display:flex;flex-direction:column;gap:.35rem}.sidebar .brand{font-weight:700;font-size:1.15rem;margin-bottom:1rem;letter-spacing:.02em}.sidebar a{color:var(--text);padding:.45rem .65rem;border-radius:8px;text-decoration:none}.sidebar a.router-link-active{background:var(--surface-2);color:#fff}.sidebar a:hover{background:var(--surface-2);text-decoration:none}.main{padding:1.5rem;max-width:1100px}.page-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem}.page-header h1{margin:0;font-size:1.4rem}.muted{color:var(--muted)}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:.65rem .5rem;border-bottom:1px solid var(--border);vertical-align:top}.table th{color:var(--muted);font-weight:600;font-size:.85rem}.banner{padding:.85rem 1rem;border-radius:8px;margin-bottom:1rem;border:1px solid var(--border)}.banner--warn{background:#422006;border-color:#92400e}.banner--bad{background:#450a0a;border-color:#991b1b}.banner--ok{background:#052e16;border-color:#166534}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.stat .value{font-size:1.6rem;font-weight:700}.stat .label{color:var(--muted);font-size:.9rem}.row-actions{display:flex;gap:.5rem;flex-wrap:wrap}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9rem}.toast-stack{position:fixed;right:1rem;bottom:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:50;max-width:min(420px,calc(100vw - 2rem))}.toast{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:.75rem .9rem;cursor:pointer;display:grid;gap:.2rem}.toast--error{border-color:var(--bad)}.toast--success{border-color:var(--ok)}.toast__rid{color:var(--muted);font-size:.8rem;font-family:ui-monospace,monospace}.signature{display:inline-flex;align-items:center;gap:.45rem;font-weight:700;padding:.35rem .65rem;border-radius:999px;border:1px solid var(--border)}.signature--ok{color:var(--ok);border-color:#166534;background:#052e16}.signature--bad{color:#fecaca;border-color:#991b1b;background:#450a0a}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;z-index:40;padding:1rem}.dialog{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;width:min(520px,100%)}.dialog h2{margin-top:0}.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.greyed{opacity:.55}.tag{display:inline-block;font-size:.75rem;padding:.15rem .45rem;border-radius:999px;background:var(--surface-2);border:1px solid var(--border)}.locale-switch{display:flex;gap:.35rem}.locale-switch button.active{border-color:var(--accent);color:#fff}@media(max-width:800px){.layout{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--border)}}
