:root{--bg: #f5f6f8;--surface: #ffffff;--surface-2: #eef1f5;--border: #dde2e8;--text: #1b1f24;--text-muted: #5f6b78;--primary: #2f6fed;--primary-hover: #255dcb;--primary-contrast: #ffffff;--danger: #d23f3f;--danger-bg: #fdecec;--success: #248f55;--success-bg: #e6f6ec;--info-bg: #e8effd;--warning: #8a5a00;--warning-bg: #fff4d6;--radius: 12px;--shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 1px 3px rgba(16, 24, 40, .08);--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #0f1318;--surface: #171c23;--surface-2: #1f262f;--border: #2a333e;--text: #e6e9ee;--text-muted: #98a3af;--primary: #5b8def;--primary-hover: #7aa2f2;--primary-contrast: #0b1220;--danger: #f07171;--danger-bg: #3a1f22;--success: #4cc37d;--success-bg: #17311f;--info-bg: #1d2a44;--warning: #f2c165;--warning-bg: #3a2d12;--shadow: 0 1px 2px rgba(0, 0, 0, .4);color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}app-root{display:flex;flex-direction:column;min-height:100vh}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{line-height:1.25;margin:0 0 .5rem}h1{font-size:1.75rem}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:0 0 1rem}.container{width:100%;max-width:1120px;margin:0 auto;padding:0 16px}.page{flex:1;padding-top:1.5rem;padding-bottom:2.5rem}.page-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.page-header p{color:var(--text-muted);margin:0}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem;align-items:start}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow)}.card+.card{margin-top:1rem}.card-subtitle{color:var(--text-muted);margin-bottom:1.25rem;font-size:.95rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.55rem 1rem;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}.btn:hover{background:var(--surface-2);text-decoration:none}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-contrast)}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,transparent)}.btn-danger:hover:not(:disabled){background:var(--danger-bg)}.btn-sm{padding:.35rem .7rem;font-size:.9rem}.btn-lg{padding:.75rem 1.4rem;font-size:1.05rem}.btn-icon{padding:.35rem .55rem;line-height:1}.field{display:flex;flex-direction:column;gap:.3rem;margin-bottom:1rem}.field label,legend{font-weight:500;font-size:.95rem}.hint{color:var(--text-muted);font-size:.85rem;margin:0}.input,select.input,textarea.input{width:100%;padding:.55rem .7rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit}textarea.input{resize:vertical;min-height:90px}.input:focus{outline:2px solid color-mix(in srgb,var(--primary) 45%,transparent);outline-offset:1px;border-color:var(--primary)}.input.ng-invalid.ng-touched{border-color:var(--danger)}.field-error{color:var(--danger);font-size:.85rem;margin:0}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 1rem}.form-actions{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center;margin-top:.5rem}fieldset{border:1px solid var(--border);border-radius:8px;padding:1rem;margin:0 0 1rem}.auth-card{max-width:440px;margin:2rem auto}.auth-card .lead{color:var(--text-muted);margin-bottom:1.25rem}.auth-switch{text-align:center;margin:1rem 0 0;color:var(--text-muted)}.alert{padding:.75rem 1rem;border-radius:8px;border:1px solid transparent;margin-bottom:1rem}.alert-error{background:var(--danger-bg);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}.alert-info{background:var(--info-bg)}.alert-warning{background:var(--warning-bg);color:var(--warning)}.spinner{display:inline-block;width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-.15em}@keyframes spin{to{transform:rotate(360deg)}}.loading{display:flex;align-items:center;justify-content:center;gap:.5rem;color:var(--text-muted);padding:2.5rem 0}.empty{text-align:center;padding:3rem 1rem;color:var(--text-muted)}.empty h3{color:var(--text)}.toasts{position:fixed;bottom:1rem;right:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:100;width:min(360px,calc(100vw - 2rem))}.toast{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem 1rem;border-radius:8px;background:var(--surface);border:1px solid var(--border);border-left-width:4px;box-shadow:0 6px 20px #00000026;animation:toast-in .2s ease-out}.toast[data-kind=success]{border-left-color:var(--success)}.toast[data-kind=error]{border-left-color:var(--danger)}.toast[data-kind=info]{border-left-color:var(--primary)}.toast-close{margin-left:auto;background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1.2rem;line-height:1;padding:0}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-bottom:1rem}.toolbar .input{width:auto;flex:1 1 200px;min-width:180px}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.table{width:100%;border-collapse:collapse;font-size:.95rem}.table th,.table td{text-align:left;padding:.7rem .9rem;border-bottom:1px solid var(--border);vertical-align:top}.table thead th{background:var(--surface-2);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);white-space:nowrap}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover td{background:color-mix(in srgb,var(--surface-2) 55%,transparent)}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table .actions{text-align:right;white-space:nowrap}.sort-btn{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer;text-transform:inherit;letter-spacing:inherit}.sort-btn:hover,.sort-btn.active{color:var(--text)}.chip{display:inline-block;padding:.1rem .55rem;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);font-size:.8rem;margin:0 .25rem .25rem 0;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.badge{display:inline-block;padding:.1rem .6rem;border-radius:999px;font-size:.8rem;font-weight:600;background:var(--info-bg);color:var(--primary)}.pagination{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:1rem;flex-wrap:wrap;color:var(--text-muted);font-size:.9rem}.pagination .pages{display:flex;gap:.5rem;align-items:center}.muted{color:var(--text-muted)}.small{font-size:.875rem}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.truncate{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
