.toasts{z-index:300;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{pointer-events:auto;background:color-mix(in srgb, var(--bg-elevated) 88%, transparent);-webkit-backdrop-filter:blur(20px)saturate(180%);backdrop-filter:blur(20px)saturate(180%);border:1px solid var(--border);box-shadow:var(--shadow-lg);cursor:pointer;border-radius:14px;align-items:center;gap:10px;max-width:min(560px,100vw - 32px);padding:11px 16px;font-size:13.5px;font-weight:500;display:flex}.toast.success svg{color:var(--c-green)}.toast.error svg{color:var(--c-red)}.toast.warning svg{color:var(--c-orange)}.toast.info svg{color:var(--accent)}.toast-enter-active,.toast-leave-active{transition:all .25s cubic-bezier(.2,.9,.3,1.2)}.toast-enter-from,.toast-leave-to{opacity:0;transform:translateY(12px)scale(.96)}.confirm{background:var(--bg-elevated);width:380px;max-width:100%;box-shadow:var(--shadow-lg);border:1px solid var(--border);border-radius:20px;padding:24px;animation:.18s pop}:root{--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Segoe UI Variable", "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--bg:#f5f5f7;--bg-elevated:#fff;--surface:#fff;--surface-2:#f9f9fb;--surface-hover:#00000009;--surface-active:#0071e314;--sidebar:#f6f6f8d1;--text:#1d1d1f;--text-2:#6e6e73;--text-3:#a1a1a6;--border:#00000014;--border-strong:#00000024;--accent:#0071e3;--accent-hover:#0077ed;--accent-soft:#0071e31a;--on-accent:#fff;--focus:0 0 0 4px #0071e338;--shadow-sm:0 1px 2px #0000000a, 0 1px 1px #00000005;--shadow:0 4px 24px #0000000f, 0 1px 2px #0000000a;--shadow-lg:0 24px 64px #00000024, 0 2px 8px #0000000f;--overlay:#00000047;--c-gray:#8e8e93;--c-gray-bg:#8e8e9324;--c-blue:#0071e3;--c-blue-bg:#0071e31c;--c-green:#248a3d;--c-green-bg:#34c75926;--c-yellow:#a05a00;--c-yellow-bg:#fc03;--c-orange:#c93400;--c-orange-bg:#ff950029;--c-red:#d70015;--c-red-bg:#ff3b301f;--c-purple:#8944ab;--c-purple-bg:#af52de21;--c-teal:#0e7c86;--c-teal-bg:#30b0c724;--chart-1:#0071e3;--chart-2:#34c759;--chart-3:#ff9500;--chart-4:#af52de;--chart-5:#ff3b30;--chart-6:#30b0c7;--chart-7:#fc0;--chart-8:#8e8e93;--radius-sm:8px;--radius:12px;--radius-lg:18px;--sidebar-w:264px;--topbar-h:56px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#000;--bg-elevated:#1c1c1e;--surface:#1c1c1e;--surface-2:#232325;--surface-hover:#ffffff0d;--surface-active:#0a84ff29;--sidebar:#161618c7;--text:#f5f5f7;--text-2:#a1a1a6;--text-3:#6e6e73;--border:#ffffff17;--border-strong:#ffffff29;--accent:#0a84ff;--accent-hover:#409cff;--accent-soft:#0a84ff2e;--focus:0 0 0 4px #0a84ff59;--shadow-sm:0 1px 2px #00000080;--shadow:0 4px 24px #00000073;--shadow-lg:0 24px 64px #0009;--overlay:#0000008c;--c-gray:#98989d;--c-gray-bg:#98989d2e;--c-blue:#409cff;--c-blue-bg:#0a84ff33;--c-green:#30d158;--c-green-bg:#30d1582b;--c-yellow:#ffd60a;--c-yellow-bg:#ffd60a29;--c-orange:#ff9f0a;--c-orange-bg:#ff9f0a2b;--c-red:#ff453a;--c-red-bg:#ff453a2e;--c-purple:#bf5af2;--c-purple-bg:#bf5af22e;--c-teal:#40c8e0;--c-teal-bg:#40c8e02b;--chart-1:#0a84ff;--chart-2:#30d158;--chart-3:#ff9f0a;--chart-4:#bf5af2;--chart-5:#ff453a;--chart-6:#40c8e0;--chart-7:#ffd60a;--chart-8:#98989d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.006em;font-size:14px;line-height:1.45}#app{min-height:100%}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{letter-spacing:-.02em;margin:0;font-weight:650}h1{font-size:28px;line-height:1.15}h2{font-size:19px}h3{font-size:15px}p{margin:0 0 8px}hr{border:0;border-top:1px solid var(--border);margin:16px 0}::selection{background:var(--accent-soft)}code,kbd{font-family:var(--mono);font-size:12px}kbd{border:1px solid var(--border-strong);background:var(--surface-2);min-width:20px;height:20px;color:var(--text-2);border-radius:5px;justify-content:center;align-items:center;padding:0 5px;font-size:11px;display:inline-flex}.row{align-items:center;gap:8px;display:flex}.col{flex-direction:column;gap:8px;display:flex}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.between{justify-content:space-between}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:12px}.tiny{font-size:11px}.strong{font-weight:600}.mono{font-family:var(--mono)}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.right{text-align:right}.center{text-align:center}.grid{gap:16px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (width<=1100px){.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=720px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.mt-0{margin-top:0}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-pad{padding:20px}.card-head{align-items:center;gap:10px;padding:16px 20px 0;display:flex}.card-head h3{font-size:15px}.card-body{padding:16px 20px 20px}.section-title{text-transform:uppercase;letter-spacing:.04em;color:var(--text-2);margin:0 0 10px;font-size:12px;font-weight:600}.btn{height:32px;font:inherit;cursor:pointer;white-space:nowrap;background:var(--surface-hover);color:var(--text);border:1px solid #0000;border-radius:980px;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:550;transition:background .15s,box-shadow .15s,transform 50ms,color .15s;display:inline-flex}.btn:hover{background:color-mix(in srgb, var(--text) 9%, transparent);text-decoration:none}.btn:active{transform:scale(.98)}.btn:focus-visible{box-shadow:var(--focus);outline:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);color:var(--on-accent)}.btn.primary:hover{background:var(--accent-hover)}.btn.danger{background:var(--c-red-bg);color:var(--c-red)}.btn.danger:hover{background:color-mix(in srgb, var(--c-red) 22%, transparent)}.btn.ghost{background:0 0}.btn.ghost:hover{background:var(--surface-hover)}.btn.outline{background:var(--surface);border-color:var(--border-strong)}.btn.sm{height:26px;padding:0 10px;font-size:12px}.btn.lg{height:40px;padding:0 20px;font-size:15px}.btn.icon{width:32px;padding:0}.btn.sm.icon{width:26px}.btn svg{flex:none;width:16px;height:16px}.btn.sm svg{width:14px;height:14px}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field>label{color:var(--text-2);font-size:12px;font-weight:550}.field .req{color:var(--c-red);margin-left:2px}.field .help{color:var(--text-3);font-size:11.5px}.input,select.input,textarea.input{border:1px solid var(--border-strong);background:var(--surface);width:100%;height:36px;color:var(--text);font:inherit;border-radius:10px;padding:0 12px;font-size:14px;transition:border-color .15s,box-shadow .15s}textarea.input{resize:vertical;height:auto;min-height:92px;padding:10px 12px;line-height:1.5}.input:focus{border-color:var(--accent);box-shadow:var(--focus);outline:none}.input::placeholder{color:var(--text-3)}select.input{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238e8e93' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:32px}.input.sm{border-radius:8px;height:30px;font-size:13px}.search-input{position:relative}.search-input svg{width:15px;height:15px;color:var(--text-3);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.search-input .input{padding-left:32px}.checkbox{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:inline-flex}.checkbox input{width:16px;height:16px;accent-color:var(--accent);margin:0}.switch{flex:none;width:38px;height:22px;position:relative}.switch input{opacity:0;width:0;height:0}.switch span{background:var(--border-strong);cursor:pointer;border-radius:22px;transition:all .2s;position:absolute;inset:0}.switch span:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:all .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #00000040}.switch input:checked+span{background:#34c759}:root[data-theme=dark] .switch input:checked+span{background:#30d158}.switch input:checked+span:after{transform:translate(16px)}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;display:grid}.form-grid .full{grid-column:1/-1}@media (width<=720px){.form-grid{grid-template-columns:1fr}}.segmented{background:var(--surface-hover);border-radius:9px;gap:2px;padding:2px;display:inline-flex}.segmented button{color:var(--text-2);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:6px;height:26px;padding:0 12px;font-size:12.5px;font-weight:550;display:inline-flex}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.segmented button svg{width:14px;height:14px}.badge{white-space:nowrap;background:var(--c-gray-bg);height:22px;color:var(--c-gray);border-radius:980px;align-items:center;gap:5px;padding:0 9px;font-size:12px;font-weight:550;display:inline-flex}.badge .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.badge.gray{background:var(--c-gray-bg);color:var(--text-2)}.badge.blue{background:var(--c-blue-bg);color:var(--c-blue)}.badge.green{background:var(--c-green-bg);color:var(--c-green)}.badge.yellow{background:var(--c-yellow-bg);color:var(--c-yellow)}.badge.orange{background:var(--c-orange-bg);color:var(--c-orange)}.badge.red{background:var(--c-red-bg);color:var(--c-red)}.badge.purple{background:var(--c-purple-bg);color:var(--c-purple)}.badge.teal{background:var(--c-teal-bg);color:var(--c-teal)}.chip{background:var(--surface-hover);border-radius:7px;align-items:center;gap:4px;max-width:100%;height:24px;padding:0 9px;font-size:12.5px;display:inline-flex}.chip a{color:inherit}.table-wrap{overflow:auto}table.table{border-collapse:separate;border-spacing:0;width:100%;font-size:13.5px}.table th{z-index:1;text-align:left;color:var(--text-2);background:var(--surface);border-bottom:1px solid var(--border);white-space:nowrap;-webkit-user-select:none;user-select:none;padding:10px 12px;font-size:12px;font-weight:550;position:sticky;top:0}.table th.sortable{cursor:pointer}.table th.sortable:hover{color:var(--text)}.table td{border-bottom:1px solid var(--border);vertical-align:middle;max-width:420px;padding:10px 12px}.table tr:last-child td{border-bottom:0}.table tbody tr{transition:background .1s}.table tbody tr.clickable{cursor:pointer}.table tbody tr:hover{background:var(--surface-hover)}.table tbody tr.selected{background:var(--surface-active)}.table .check{width:36px}.divider{background:var(--border);height:1px}.empty{text-align:center;color:var(--text-2);padding:48px 24px}.empty .icon-wrap{background:var(--accent-soft);width:56px;height:56px;color:var(--accent);border-radius:16px;place-items:center;margin:0 auto 14px;display:grid}.empty .icon-wrap svg{width:26px;height:26px}.empty h3{color:var(--text);margin-bottom:4px}.kv{grid-template-columns:180px minmax(0,1fr);align-items:baseline;gap:10px 16px;display:grid}.kv dt{color:var(--text-2);font-size:12.5px}.kv dd{word-break:break-word;min-width:0;margin:0}@media (width<=720px){.kv{grid-template-columns:1fr;gap:2px 0}.kv dd{margin-bottom:8px}}.progress{background:var(--surface-hover);border-radius:6px;height:6px;overflow:hidden}.progress>span{background:var(--accent);border-radius:6px;height:100%;transition:width .4s;display:block}.spinner{border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg, var(--surface-hover) 25%, color-mix(in srgb, var(--text) 8%, transparent) 50%, var(--surface-hover) 75%);background-size:200% 100%;border-radius:8px;animation:1.2s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.fade-enter-active,.fade-leave-active{transition:opacity .18s,transform .18s}.fade-enter-from,.fade-leave-to{opacity:0;transform:translateY(4px)}.icon-tile{border-radius:10px;flex:none;place-items:center;width:36px;height:36px;display:grid}.icon-tile svg{width:18px;height:18px}.icon-tile.blue{background:var(--c-blue-bg);color:var(--c-blue)}.icon-tile.green{background:var(--c-green-bg);color:var(--c-green)}.icon-tile.orange{background:var(--c-orange-bg);color:var(--c-orange)}.icon-tile.red{background:var(--c-red-bg);color:var(--c-red)}.icon-tile.purple{background:var(--c-purple-bg);color:var(--c-purple)}.icon-tile.teal{background:var(--c-teal-bg);color:var(--c-teal)}.icon-tile.gray{background:var(--c-gray-bg);color:var(--text-2)}.icon-tile.yellow{background:var(--c-yellow-bg);color:var(--c-yellow)}.md{word-wrap:break-word;font-size:14.5px;line-height:1.65}.md>:first-child{margin-top:0}.md h1{margin:28px 0 12px;font-size:26px}.md h2{margin:28px 0 10px;font-size:20px}.md h3{margin:20px 0 8px;font-size:16px}.md p,.md ul,.md ol{margin:0 0 12px}.md ul,.md ol{padding-left:22px}.md li{margin:3px 0}.md code{background:var(--surface-hover);border-radius:5px;padding:1px 5px}.md pre{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;overflow:auto}.md pre code{background:0 0;padding:0}.md table{border-collapse:collapse;width:100%;margin:0 0 14px;font-size:13.5px}.md th,.md td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:8px 10px}.md th{color:var(--text-2);font-size:12.5px;font-weight:600}.md blockquote{background:var(--accent-soft);border:0;border-radius:12px;margin:0 0 14px;padding:12px 16px}.md blockquote p:last-child{margin:0}.md img{border-radius:10px;max-width:100%}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.dropdown{position:relative}.dropdown-menu{z-index:60;background:var(--bg-elevated);border:1px solid var(--border);min-width:200px;box-shadow:var(--shadow-lg);border-radius:12px;padding:6px;display:none;position:absolute;top:calc(100% + 4px);right:0}.dropdown:hover>.dropdown-menu,.dropdown:focus-within>.dropdown-menu,.dropdown-menu.open{display:block}.dropdown-menu:before{content:"";height:6px;position:absolute;top:-6px;left:0;right:0}.dropdown-menu>button,.dropdown-menu>a{width:100%;color:var(--text);font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-size:13.5px;display:flex}.dropdown-menu>button:hover,.dropdown-menu>a:hover{background:var(--surface-hover);text-decoration:none}.dropdown-menu>button svg,.dropdown-menu>a svg{width:16px;height:16px;color:var(--text-2)}.dropdown-menu .danger,.dropdown-menu .danger svg{color:var(--c-red)}.tabs{border-bottom:1px solid var(--border);gap:2px;margin-bottom:18px;display:flex;overflow-x:auto}.tabs button{height:38px;color:var(--text-2);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;align-items:center;gap:7px;padding:0 12px;font-size:13.5px;font-weight:550;display:inline-flex;position:relative}.tabs button svg{width:15px;height:15px}.tabs button:hover,.tabs button.active{color:var(--text)}.tabs button.active:after{content:"";background:var(--accent);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:10px;right:10px}.tabs .count{background:var(--surface-hover);color:var(--text-2);border-radius:10px;padding:0 6px;font-size:11px}.confirm-backdrop{z-index:250;background:var(--overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.confirm{background:var(--bg-elevated);width:380px;max-width:100%;box-shadow:var(--shadow-lg);border:1px solid var(--border);border-radius:20px;padding:24px}
