:root{--c-ink-900:#012232;--c-ink-700:#1f3a4b;--c-ink-500:#496a7c;--c-ink-400:#6b8595;--c-ink-300:#9ab0bd;--c-line-200:#d9e3e9;--c-line-100:#e9eff3;--c-bg-soft:#f4f8fa;--c-bg-softer:#ebf1f5;--c-surface:#fff;--c-surface-2:#fafcfd;--c-accent:#0191ae;--c-accent-600:#017e96;--c-accent-700:#015f73;--c-accent-50:#e6f4f8;--c-accent-100:#cce9f1;--c-success:#15803d;--c-success-bg:#ecfdf3;--c-warn:#b45309;--c-warn-bg:#fef6e7;--c-danger:#b91c1c;--c-danger-bg:#fef2f2;--c-info:#1d4ed8;--c-info-bg:#eef4ff;--c-violet:#6d28d9;--c-violet-bg:#f5f0ff;--font-sans:"Inter Tight","Geist","Söhne","Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--font-mono:"JetBrains Mono","Geist Mono",ui-monospace,"SF Mono",Menlo,Monaco,Consolas,monospace;--r-xs:4px;--r-sm:6px;--r-md:8px;--r-lg:12px;--r-xl:16px;--r-pill:999px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-7:32px;--s-8:40px;--s-10:56px;--row-h:44px;--field-h:36px;--shadow-sm:0 1px 0 rgba(15,23,42,.04),0 1px 2px rgba(15,23,42,.04);--shadow-md:0 4px 12px rgba(15,23,42,.06),0 1px 0 rgba(15,23,42,.04);--shadow-lg:0 12px 32px rgba(15,23,42,.1),0 2px 8px rgba(15,23,42,.06);--shadow-pop:0 16px 48px rgba(15,23,42,.16);--side-w:244px;--side-w-collapsed:64px;--top-h:56px}[data-density=compact]{--row-h:36px;--field-h:32px;--s-4:12px;--s-6:18px}[data-density=comfy]{--row-h:56px;--field-h:40px;--s-4:20px;--s-6:32px}[data-radius=square]{--r-sm:2px;--r-md:4px;--r-lg:6px;--r-xl:8px;--r-pill:4px}[data-radius=round]{--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:20px}[data-radius=pill]{--r-sm:999px;--r-md:999px;--r-lg:999px;--r-xl:999px}*{box-sizing:border-box}#root,body,html{height:100%;margin:0}body{-webkit-font-smoothing:antialiased;background:#f4f8fa;background:var(--c-bg-soft);color:#012232;color:var(--c-ink-900);font-family:Inter Tight,Geist,Söhne,Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-family:var(--font-sans);font-size:14px;line-height:1.45;text-rendering:optimizeLegibility}button,input,select,textarea{font-family:inherit}a{color:#015f73;color:var(--c-accent-700);text-decoration:none}a:hover{text-decoration:underline}.mono,.num,.tab-num,time{font-feature-settings:"tnum";font-family:JetBrains Mono,Geist Mono,ui-monospace,SF Mono,Menlo,Monaco,Consolas,monospace;font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap}.btn{align-items:center;border:1px solid transparent;border-radius:8px;border-radius:var(--r-md);cursor:pointer;display:inline-flex;font-size:13px;font-weight:500;gap:8px;height:36px;height:var(--field-h);padding:0 14px;transition:background .12s,border-color .12s,color .12s;white-space:nowrap}.btn:disabled,.btn[aria-disabled=true]{cursor:not-allowed;opacity:.55}.btn .ic{height:16px;width:16px}.btn-primary{background:#012232;background:var(--c-ink-900);border-color:#012232;border-color:var(--c-ink-900);color:#fff}.btn-primary:hover{background:#000}.btn-accent{background:#0191ae;background:var(--c-accent);border-color:#0191ae;border-color:var(--c-accent);color:#fff}.btn-accent:hover{background:#017e96;background:var(--c-accent-600)}.btn-secondary{background:#fff;background:var(--c-surface);border-color:#d9e3e9;border-color:var(--c-line-200);color:#1f3a4b;color:var(--c-ink-700)}.btn-secondary:hover{background:#ebf1f5;background:var(--c-bg-softer)}.btn-ghost{background:transparent;color:#496a7c;color:var(--c-ink-500)}.btn-ghost:hover{background:#ebf1f5;background:var(--c-bg-softer);color:#012232;color:var(--c-ink-900)}.btn-danger{background:#fff;background:var(--c-surface);border-color:#d9e3e9;border-color:var(--c-line-200);color:#b91c1c;color:var(--c-danger)}.btn-danger:hover{background:#fef2f2;background:var(--c-danger-bg);border-color:#fca5a5}.btn-icon{justify-content:center;padding:0;width:36px;width:var(--field-h)}.btn-sm{font-size:12px;height:28px;padding:0 10px}.field{align-items:center;background:#fff;background:var(--c-surface);border:1px solid #d9e3e9;border:1px solid var(--c-line-200);border-radius:8px;border-radius:var(--r-md);color:#012232;color:var(--c-ink-900);display:flex;font-size:13px;height:36px;height:var(--field-h);padding:0 12px;transition:border-color .12s,box-shadow .12s;width:100%}.field:focus,.field:focus-within{border-color:#0191ae;border-color:var(--c-accent);box-shadow:0 0 0 3px #e6f4f8;box-shadow:0 0 0 3px var(--c-accent-50);outline:none}.field:disabled,.field[aria-disabled=true]{background:#f4f8fa;background:var(--c-bg-soft);color:#6b8595;color:var(--c-ink-400);cursor:not-allowed}.field.is-error{border-color:#b91c1c;border-color:var(--c-danger)}.field.is-error:focus,.field.is-error:focus-within{box-shadow:0 0 0 3px #fef2f2;box-shadow:0 0 0 3px var(--c-danger-bg)}.field::placeholder{color:#9ab0bd;color:var(--c-ink-300)}.field-label{color:#496a7c;color:var(--c-ink-500);display:block;font-size:12px;font-weight:500;letter-spacing:.005em;margin-bottom:6px}.field-helper{color:#6b8595;color:var(--c-ink-400);font-size:11.5px;margin-top:4px}.field-helper.is-error{color:#b91c1c;color:var(--c-danger)}textarea.field{height:auto;line-height:1.5;min-height:84px;padding:10px 12px;resize:vertical}select.field{-webkit-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,#6b8595 0),linear-gradient(135deg,#6b8595 50%,transparent 0);background-image:linear-gradient(45deg,transparent 50%,var(--c-ink-400) 50%),linear-gradient(135deg,var(--c-ink-400) 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 12px) 50%;background-repeat:no-repeat;background-size:5px 5px;padding-right:32px}.card{background:#fff;background:var(--c-surface);border:1px solid #d9e3e9;border:1px solid var(--c-line-200);border-radius:12px;border-radius:var(--r-lg)}.card-header{align-items:center;border-bottom:1px solid #e9eff3;border-bottom:1px solid var(--c-line-100);display:flex;justify-content:space-between;padding:14px 16px}.card-title{color:#1f3a4b;color:var(--c-ink-700);font-size:13px;font-weight:600;letter-spacing:-.005em}.card-body{padding:16px}.card-footer{align-items:center;border-top:1px solid #e9eff3;border-top:1px solid var(--c-line-100);display:flex;gap:8px;justify-content:flex-end;padding:12px 16px}.badge{align-items:center;background:#ebf1f5;background:var(--c-bg-softer);border:1px solid #d9e3e9;border:1px solid var(--c-line-200);border-radius:999px;border-radius:var(--r-pill);color:#1f3a4b;color:var(--c-ink-700);display:inline-flex;font-size:11.5px;font-weight:500;gap:6px;height:22px;letter-spacing:.005em;padding:0 8px;white-space:nowrap}.badge .dot{background:currentColor;border-radius:50%;height:6px;opacity:.9;width:6px}.badge-success{background:#ecfdf3;background:var(--c-success-bg);border-color:#bbf7d0;color:#15803d;color:var(--c-success)}.badge-warn{background:#fef6e7;background:var(--c-warn-bg);border-color:#fce2a6;color:#b45309;color:var(--c-warn)}.badge-danger{background:#fef2f2;background:var(--c-danger-bg);border-color:#fecaca;color:#b91c1c;color:var(--c-danger)}.badge-info{background:#eef4ff;background:var(--c-info-bg);border-color:#c7d7fe;color:#1d4ed8;color:var(--c-info)}.badge-violet{background:#f5f0ff;background:var(--c-violet-bg);border-color:#ddd6fe;color:#6d28d9;color:var(--c-violet)}.badge-neutral{background:#ebf1f5;background:var(--c-bg-softer);border-color:#d9e3e9;border-color:var(--c-line-200);color:#496a7c;color:var(--c-ink-500)}.badge-accent{background:#e6f4f8;background:var(--c-accent-50);border-color:#cce9f1;border-color:var(--c-accent-100);color:#015f73;color:var(--c-accent-700)}.chip{align-items:center;background:#fff;background:var(--c-surface);border:1px solid #d9e3e9;border:1px solid var(--c-line-200);border-radius:999px;border-radius:var(--r-pill);color:#496a7c;color:var(--c-ink-500);cursor:pointer;display:inline-flex;font-size:12.5px;font-weight:500;gap:6px;height:28px;padding:0 12px;transition:background .12s,color .12s,border-color .12s}.chip:hover{background:#ebf1f5;background:var(--c-bg-softer);color:#012232;color:var(--c-ink-900)}.chip.is-active{background:#012232;background:var(--c-ink-900);border-color:#012232;border-color:var(--c-ink-900);color:#fff}.chip-count{font-family:JetBrains Mono,Geist Mono,ui-monospace,SF Mono,Menlo,Monaco,Consolas,monospace;font-family:var(--font-mono);font-size:11px;opacity:.7}.avatar{align-items:center;background:linear-gradient(180deg,#e2e8f0,#cbd5e1);border-radius:50%;color:#1f3a4b;color:var(--c-ink-700);display:inline-flex;flex-shrink:0;font-size:11.5px;font-weight:600;height:32px;justify-content:center;letter-spacing:.01em;width:32px}.avatar-sm{font-size:10px;height:24px;width:24px}.avatar-lg{font-size:15px;height:48px;width:48px}.avatar-xl{font-size:22px;height:72px;width:72px}.avatar-c1{background:linear-gradient(180deg,#fee4e2,#fecdca);color:#b42318}.avatar-c2{background:linear-gradient(180deg,#fef0c7,#fedf89);color:#b54708}.avatar-c3{background:linear-gradient(180deg,#d1fadf,#a6f4c5);color:#067647}.avatar-c4{background:linear-gradient(180deg,#cce9f1,#9cd3e1);color:#015f73}.avatar-c5{background:linear-gradient(180deg,#e9d7fe,#d6bbfb);color:#6927da}.avatar-c6{background:linear-gradient(180deg,#fce7f6,#f9c9e8);color:#9f1ab1}.tbl{border-collapse:separate;border-spacing:0;font-size:13px;width:100%}.tbl thead th{background:#fafcfd;background:var(--c-surface-2);border-bottom:1px solid #d9e3e9;border-bottom:1px solid var(--c-line-200);color:#6b8595;color:var(--c-ink-400);font-size:11.5px;font-weight:500;letter-spacing:.04em;padding:10px 12px;position:sticky;text-align:left;text-transform:uppercase;top:0}.tbl tbody td{border-bottom:1px solid #e9eff3;border-bottom:1px solid var(--c-line-100);color:#1f3a4b;color:var(--c-ink-700);height:44px;height:var(--row-h);padding:0 12px;vertical-align:middle}.tbl tbody tr:hover td{background:#f4f8fa;background:var(--c-bg-soft)}.tbl tbody tr:last-child td{border-bottom:0}.tbl .row-actions{display:inline-flex;gap:4px;opacity:0;transition:opacity .12s}.tbl tbody tr:hover .row-actions{opacity:1}.kbd{align-items:center;background:#fff;background:var(--c-surface);border:1px solid #d9e3e9;border:1px solid var(--c-line-200);border-radius:4px;box-shadow:0 1px 0 #d9e3e9;box-shadow:0 1px 0 var(--c-line-200);color:#496a7c;color:var(--c-ink-500);display:inline-flex;font-family:JetBrains Mono,Geist Mono,ui-monospace,SF Mono,Menlo,Monaco,Consolas,monospace;font-family:var(--font-mono);font-size:10.5px;height:18px;justify-content:center;min-width:18px;padding:0 4px}.divider{background:#e9eff3;background:var(--c-line-100);height:1px;margin:16px 0}.section-title{color:#6b8595;color:var(--c-ink-400);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.page{margin:0 auto;max-width:1480px;padding:24px 28px 56px}.page-header{align-items:flex-end;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:24px}.page-title{color:#012232;color:var(--c-ink-900);font-size:22px;font-weight:600;letter-spacing:-.015em;margin:0}.page-subtitle{color:#496a7c;color:var(--c-ink-500);font-size:13px;margin:4px 0 0}.col,.flex{display:flex}.col{flex-direction:column}.grow{flex:1 1;min-width:0}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-6{gap:24px}.items-center{align-items:center}.items-start{align-items:flex-start}.between{justify-content:space-between}.end{justify-content:flex-end}.text-muted{color:#496a7c;color:var(--c-ink-500)}.text-tertiary{color:#6b8595;color:var(--c-ink-400)}.text-xs{font-size:11.5px}.text-sm{font-size:12.5px}.fw-500{font-weight:500}.fw-600{font-weight:600}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-dot{border-radius:50%;display:inline-block;height:8px;width:8px}.segment{background:#ebf1f5;background:var(--c-bg-softer);border:1px solid #d9e3e9;border:1px solid var(--c-line-200);border-radius:8px;border-radius:var(--r-md);display:inline-flex;gap:0;padding:2px}.segment-item{align-items:center;background:transparent;border:0;border-radius:6px;border-radius:calc(var(--r-md) - 2px);color:#496a7c;color:var(--c-ink-500);cursor:pointer;display:inline-flex;font-size:12.5px;font-weight:500;gap:6px;height:28px;padding:0 12px;transition:background .12s,color .12s}.segment-item.is-active{background:#fff;background:var(--c-surface);box-shadow:0 1px 0 rgba(15,23,42,.04),0 1px 2px rgba(15,23,42,.04);box-shadow:var(--shadow-sm);color:#012232;color:var(--c-ink-900)}.tabs{border-bottom:1px solid #d9e3e9;border-bottom:1px solid var(--c-line-200);display:flex;gap:0}.tabs-item{background:transparent;border:0;color:#496a7c;color:var(--c-ink-500);cursor:pointer;font-size:13px;font-weight:500;height:38px;padding:0 14px;position:relative;transition:color .12s}.tabs-item.is-active,.tabs-item:hover{color:#012232;color:var(--c-ink-900)}.tabs-item.is-active{font-weight:600}.tabs-item.is-active:after{background:#012232;background:var(--c-ink-900);border-radius:2px;bottom:-1px;content:"";height:2px;left:8px;position:absolute;right:8px}.modal-overlay{animation:ds-overlay-in .14s ease;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:rgba(15,23,42,.4);display:grid;inset:0;padding:24px;place-items:center;position:fixed;z-index:1000}@keyframes ds-overlay-in{0%{opacity:0}to{opacity:1}}.modal{animation:ds-modal-in .18s cubic-bezier(.2,.7,.3,1);background:#fff;background:var(--c-surface);border:1px solid #d9e3e9;border:1px solid var(--c-line-200);border-radius:12px;border-radius:var(--r-lg);box-shadow:0 16px 48px rgba(15,23,42,.16);box-shadow:var(--shadow-pop);display:flex;flex-direction:column;max-height:calc(100vh - 48px);overflow:hidden;width:100%}@keyframes ds-modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.modal-sm{max-width:420px}.modal-md{max-width:560px}.modal-lg{max-width:760px}.modal-xl{max-width:960px}.modal-header{align-items:center;border-bottom:1px solid #e9eff3;border-bottom:1px solid var(--c-line-100);display:flex;justify-content:space-between;padding:16px 20px}.modal-title{color:#012232;color:var(--c-ink-900);font-size:15px;font-weight:600;margin:0}.modal-body{overflow-y:auto;padding:20px}.modal-footer{align-items:center;border-top:1px solid #e9eff3;border-top:1px solid var(--c-line-100);display:flex;gap:8px;justify-content:flex-end;padding:12px 20px}.toast-viewport{bottom:24px;display:flex;flex-direction:column;gap:8px;max-width:calc(100vw - 48px);position:fixed;right:24px;width:360px;z-index:1100}.toast{align-items:flex-start;animation:ds-toast-in .18s cubic-bezier(.2,.7,.3,1);background:#fff;background:var(--c-surface);border:1px solid #d9e3e9;border:1px solid var(--c-line-200);border-radius:8px;border-radius:var(--r-md);box-shadow:0 12px 32px rgba(15,23,42,.1),0 2px 8px rgba(15,23,42,.06);box-shadow:var(--shadow-lg);display:flex;gap:10px;padding:12px 14px}@keyframes ds-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.toast-icon{flex-shrink:0;height:18px;margin-top:1px;width:18px}.toast-success .toast-icon{color:#15803d;color:var(--c-success)}.toast-error .toast-icon{color:#b91c1c;color:var(--c-danger)}.toast-warn .toast-icon{color:#b45309;color:var(--c-warn)}.toast-info .toast-icon{color:#1d4ed8;color:var(--c-info)}.toast-body{flex:1 1;min-width:0}.toast-title{color:#012232;color:var(--c-ink-900);font-size:13px;font-weight:600}.toast-message{color:#496a7c;color:var(--c-ink-500);font-size:12.5px;margin-top:2px;word-break:break-word}.toast-close{background:transparent;border:0;color:#6b8595;color:var(--c-ink-400);cursor:pointer;padding:2px}@keyframes ds-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton{animation:ds-shimmer 1.4s infinite;background:linear-gradient(90deg,#ebf1f5,#e2e8f0 50%,#ebf1f5);background:linear-gradient(90deg,var(--c-bg-softer) 0,#e2e8f0 50%,var(--c-bg-softer) 100%);background-size:200% 100%;border-radius:6px}.switch{align-items:center;cursor:pointer;display:inline-flex;position:relative}.switch input{cursor:pointer;inset:0;opacity:0;position:absolute}.switch-track{background:#d9e3e9;background:var(--c-line-200);border-radius:999px;height:18px;transition:background .15s;width:32px}.switch-thumb{background:#fff;border-radius:50%;box-shadow:0 1px 0 rgba(15,23,42,.04),0 1px 2px rgba(15,23,42,.04);box-shadow:var(--shadow-sm);height:14px;left:2px;position:absolute;top:2px;transition:left .15s;width:14px}.switch input:checked~.switch-track{background:#0191ae;background:var(--c-accent)}.switch input:checked~.switch-thumb{left:16px}.switch-label{margin-left:8px}.cbx,.switch-label{color:#1f3a4b;color:var(--c-ink-700);font-size:13px}.cbx{align-items:center;cursor:pointer;display:inline-flex;gap:8px;-webkit-user-select:none;user-select:none}.cbx input{-webkit-appearance:none;appearance:none;background:#fff;background:var(--c-surface);border:1px solid #d9e3e9;border:1px solid var(--c-line-200);border-radius:4px;cursor:pointer;display:inline-grid;flex-shrink:0;height:16px;place-items:center;transition:background .12s,border-color .12s;width:16px}.cbx input:checked{background:#0191ae;background:var(--c-accent);border-color:#0191ae;border-color:var(--c-accent)}.cbx input:checked:after{border-bottom:2px solid #fff;border-left:2px solid #fff;content:"";height:5px;transform:rotate(-45deg) translate(1px,-1px);width:9px}.cbx input[type=radio]{border-radius:50%}.cbx input[type=radio]:checked:after{background:#fff;border:0;border-radius:50%;height:6px;transform:none;width:6px}@keyframes ds-spin{to{transform:rotate(1turn)}}.spinner{animation:ds-spin .8s linear infinite;border:2px solid #d9e3e9;border-top-color:#0191ae;border:2px solid var(--c-line-200);border-radius:50%;border-top-color:var(--c-accent);height:16px;width:16px}.spinner-lg{border-width:3px;height:28px;width:28px}.pagination{align-items:center;display:inline-flex;gap:4px}.pagination button{background:#fff;background:var(--c-surface);border:1px solid #d9e3e9;border:1px solid var(--c-line-200);border-radius:6px;border-radius:var(--r-sm);color:#1f3a4b;color:var(--c-ink-700);cursor:pointer;font-size:12.5px;height:28px;min-width:28px;padding:0 8px}.pagination button:hover:not(:disabled){background:#ebf1f5;background:var(--c-bg-softer)}.pagination button.is-active{background:#012232;background:var(--c-ink-900);border-color:#012232;border-color:var(--c-ink-900);color:#fff}.pagination button:disabled{cursor:not-allowed;opacity:.4}.form-row{grid-gap:14px;display:grid;gap:14px}.form-row-2{grid-template-columns:1fr 1fr}.form-row-3{grid-template-columns:repeat(3,1fr)}@media (max-width:640px){.form-row-2,.form-row-3{grid-template-columns:1fr}}.shell-main::-webkit-scrollbar{width:10px}.shell-main::-webkit-scrollbar-thumb{background:rgba(15,23,42,.12);border:2px solid #f4f8fa;border:2px solid var(--c-bg-soft);border-radius:10px}.shell-main::-webkit-scrollbar-track{background:transparent}