:root{--font-size:14px;--background:#f7f7fb;--foreground:#0f172a;--card:#ffffff;--card-foreground:#0f172a;--popover:#ffffff;--popover-foreground:#0f172a;--primary:#030213;--primary-foreground:#ffffff;--secondary:#f4f4f7;--secondary-foreground:#0f172a;--muted:#ececf0;--muted-foreground:#717182;--accent:#e9ebef;--accent-foreground:#0f172a;--destructive:#d4183d;--destructive-foreground:#ffffff;--border:rgba(0,0,0,0.1);--input:transparent;--input-background:#f3f3f5;--switch-background:#cbced4;--ring:#b3b3c2;--radius:10px;--radius-sm:calc(var(--radius) - 4px);--radius-md:calc(var(--radius) - 2px);--radius-lg:var(--radius);--radius-xl:calc(var(--radius) + 4px);--sidebar:#fafafc;--sidebar-foreground:#0f172a;--sidebar-primary:var(--primary);--sidebar-primary-foreground:#ffffff;--sidebar-accent:#f3f4f6;--sidebar-accent-foreground:#111827;--sidebar-border:#e5e7eb;--sidebar-ring:var(--ring);--bg:var(--background);--panel:var(--card);--text:var(--foreground);--subtle:var(--muted-foreground);--font-12:12px;--font-13:13px;--font-14:14px;--font-16:16px;--font-18:18px;--font-20:20px;--lh-tight:1.2;--lh-base:1.5;--lh-relaxed:1.6;--space-4:4px;--space-6:6px;--space-8:8px;--space-10:10px;--space-12:12px;--space-14:14px;--space-16:16px;--space-20:20px;--space-24:24px;--h-24:24px;--h-28:28px;--h-32:32px;--h-36:36px;--h-40:40px;--h-44:44px;--h-48:48px;--shadow-card:0 1px 2px rgba(15,23,42,0.04),0 2px 4px rgba(15,23,42,0.06);--table-data-font:12.5px;--badge-font-size:10.5px;--badge-py:1.75px;--badge-px:7px;--badge-font-weight:400;--badge-radius:6.75px;--btn-font-size:12.25px;--btn-font-weight:500;--btn-py:7px;--btn-px:10.5px;--btn-radius:var(--badge-radius);--iconbtn-size:var(--h-32);--iconbtn-radius:var(--btn-radius);--icon-size:14px}html{font-size:var(--font-size)}*{box-sizing:border-box}body,html{margin:0;padding:0;max-width:100vw;overflow-x:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;background:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:#2563eb;text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font-family:inherit}.app-popup-overlay{position:fixed;inset:0;background:rgba(15,23,42,0);backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0);display:flex;align-items:center;justify-content:center;padding:32px 16px;z-index:1000;opacity:0;transition:opacity .38s ease,background .38s ease,backdrop-filter .38s ease,-webkit-backdrop-filter .38s ease}.app-popup-overlay:not(.closing){opacity:1;background:rgba(15,23,42,.38);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.app-popup-overlay.closing{backdrop-filter:blur(0)}.app-popup-overlay.closing,.app-popup-overlay.entering{opacity:0;background:rgba(15,23,42,0);-webkit-backdrop-filter:blur(0)}.app-popup-overlay.entering{backdrop-filter:blur(0)}.app-popup{background:var(--card,#fff);color:var(--foreground,#0f172a);border:1px solid var(--border,#e2e8f0);width:-moz-fit-content;width:fit-content;max-width:560px;border-radius:22px;box-shadow:0 24px 60px -12px rgba(0,0,0,.35),inset 0 0 0 1px rgba(255,255,255,.04);transform:translateY(20px) scale(.94);opacity:0;transition:transform .38s cubic-bezier(.22,.9,.3,1.13),opacity .38s ease}.app-popup:not(.closing){transform:translateY(0) scale(1);opacity:1}.app-popup.closing{transform:translateY(10px) scale(.92);opacity:0}.app-popup.entering{transform:translateY(20px) scale(.94);opacity:0}@media (prefers-reduced-motion:reduce){.app-popup,.app-popup-overlay{transition:none!important;opacity:1!important;transform:none!important}}.btn{--btn-bg:var(--secondary);--btn-fg:var(--foreground);--btn-bd:var(--border);--btn-hover-bg:#e5e7eb;display:flex;align-items:center;gap:8px;font-size:var(--btn-font-size);font-weight:var(--btn-font-weight);padding:var(--btn-py) var(--btn-px);border-radius:var(--btn-radius);border:1px solid var(--btn-bd);background:var(--btn-bg);color:var(--btn-fg);cursor:pointer;line-height:1;transition:background .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease;text-decoration:none}.btn:hover{background:var(--btn-hover-bg)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{--btn-bg:var(--primary);--btn-fg:var(--primary-foreground);--btn-bd:var(--primary);--btn-hover-bg:#111028}.btn-ghost{--btn-bg:#ffffff;--btn-fg:var(--foreground);--btn-bd:var(--border);--btn-hover-bg:#f3f4f6}.btn-danger{--btn-bg:var(--destructive);--btn-fg:var(--destructive-foreground);--btn-bd:var(--destructive);--btn-hover-bg:#b60f31}.btn-outline{--btn-bg:transparent;--btn-fg:var(--foreground);--btn-bd:var(--border);--btn-hover-bg:var(--secondary)}.btn-dark{--btn-bg:var(--foreground);--btn-fg:var(--background);--btn-bd:var(--foreground);--btn-hover-bg:#1e293b}.btn-sm{padding:5px 8px;font-size:11.75px}.btn-lg{padding:10px 16px;font-size:14px}.btn-group{display:inline-flex;gap:6px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);background:var(--secondary);color:var(--foreground);border-radius:var(--iconbtn-radius);width:var(--iconbtn-size);height:var(--iconbtn-size);cursor:pointer;transition:background .18s ease,color .18s ease,border-color .18s ease}.icon-btn:hover{background:#e5e7eb}.icon-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}.icon-primary:hover{background:#111028}.icon-ghost{background:#fff}.icon-outline{background:transparent}.icon-danger{background:var(--destructive);border-color:var(--destructive);color:var(--destructive-foreground)}.icon-danger:hover{background:#b60f31}.icon-dark{background:var(--foreground);border-color:var(--foreground);color:var(--background)}.icon-dark:hover{background:#1e293b}.icon-sm{width:32px;height:32px}.icon-lg{width:40px;height:40px}.btn.is-loading,.icon-btn.is-loading{position:relative}.btn-spinner{position:absolute;right:8px;width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.btn-block{width:100%}.btn-icon{display:inline-flex;width:var(--icon-size);height:var(--icon-size);align-items:center;justify-content:center}.confirm-modal{min-width:280px;width:100%;display:flex;flex-direction:column;justify-content:center;gap:12px;padding:20px;background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-popover)}.confirm-header{font-weight:600;font-size:15px;text-align:center}.confirm-desc{font-size:13px;line-height:1.4;color:#475569;text-align:center}.confirm-actions{display:flex;justify-content:center;gap:8px;margin-top:4px}.tabBtn:focus-visible{outline:2px solid #0f172a;outline-offset:2px}.confirm-modal{animation:confirmPop .22s cubic-bezier(.18,.89,.32,1.28)}@keyframes confirmPop{0%{transform:translateY(4px) scale(.96);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.confirm-actions button:focus-visible{outline:2px solid #0f172a;outline-offset:2px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin:0 0 20px;flex-wrap:wrap}.page-header-center{justify-content:center;text-align:center}.page-header-compact{margin-bottom:12px}.page-header-main{display:flex;flex-direction:column;gap:6px;min-width:240px}.page-header-titleRow{display:flex;align-items:center;gap:10px}.page-header-icon{display:inline-flex;width:28px;height:28px;border-radius:8px;background:var(--secondary);align-items:center;justify-content:center;color:var(--primary)}.page-header-title{font-size:30px;line-height:36px;font-weight:700;margin:0}.page-header-subtitle{margin:0;font-size:14px;line-height:20px;color:#4b5563;max-width:820px}.page-header-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.page-header-actions .btn{height:32px;padding:0 12px;font-size:12.25px;line-height:1;display:inline-flex;align-items:center}@media (max-width:640px){.page-header{flex-direction:column;align-items:stretch}.page-header-actions{margin-left:0}}.icon-wrapper{display:inline-flex;width:var(--icon-size);height:var(--icon-size);align-items:center;justify-content:center;line-height:1}.icon-wrapper>svg{width:100%;height:100%}.skel{display:inline-block;background:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0 37%,#f1f5f9 63%);background-size:400% 100%;animation:skel 1.2s ease-in-out infinite;border-radius:4px}@keyframes skel{0%{background-position:0 0}to{background-position:100% 0}}.page-enter-transition{opacity:0;transform:translateY(6px);transition:opacity 1s ease,transform .3s cubic-bezier(.22,.9,.3,1.13)}.page-enter-transition.in{opacity:1;transform:translateY(0)}