:root,[data-theme=light]{--bg: #f5f7fb;--surface: #ffffff;--surface-alt: #f8fafc;--border: #e6e8ee;--tx-900: #0f172a;--tx-600: #334155;--tx-400: #64748b;--tx-200: #94a3b8;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-alpha: rgba(37, 99, 235, .08);--success-bg: #ecfdf5;--success-fg: #047857;--danger-bg: #fef2f2;--danger-fg: #b91c1c;--warning-bg: #fffbeb;--warning-fg: #b45309;--shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 1px 3px rgba(15, 23, 42, .06);--skeleton-from: #eef2f7;--skeleton-mid: #f7f9fc;--login-gradient: linear-gradient(135deg, #1e3a8a 0%, #2563eb 100%);--login-shadow: 0 20px 60px rgba(15, 23, 42, .25);--hover-row: #fafbff;--btn-secondary-hover: #f1f5f9;--pill-bg: #f1f5f9;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}[data-theme=dark]{--bg: #0f1117;--surface: #1a1d27;--surface-alt: #22252f;--border: #2d3040;--tx-900: #e8eaed;--tx-600: #b0b5c0;--tx-400: #7c8294;--tx-200: #4a4f5e;--primary: #5b8def;--primary-hover: #4a7de8;--primary-alpha: rgba(91, 141, 239, .12);--success-bg: #0d2818;--success-fg: #34d399;--danger-bg: #2a1215;--danger-fg: #f87171;--warning-bg: #2a2008;--warning-fg: #fbbf24;--shadow: 0 1px 3px rgba(0, 0, 0, .3), 0 1px 2px rgba(0, 0, 0, .2);--skeleton-from: #22252f;--skeleton-mid: #2d3040;--login-gradient: linear-gradient(135deg, #0a0e1a 0%, #141930 100%);--login-shadow: 0 20px 60px rgba(0, 0, 0, .5);--hover-row: #22252f;--btn-secondary-hover: #2d3040;--pill-bg: #22252f}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--tx-900);font-size:14px;line-height:1.5;transition:background .25s ease,color .25s ease}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:12px 24px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow);transition:background .25s ease,border-color .25s ease;position:sticky;top:0;z-index:1000}[data-theme=light] .topbar{background:#ffffffd9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}[data-theme=dark] .topbar{background:#1a1d27d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.topbar .brand{font-weight:700;font-size:16px;letter-spacing:.5px;display:flex;align-items:center}.brand-logo{height:32px;width:auto;display:block}.brand-logo-dark{display:none}.brand-logo-light,[data-theme=dark] .brand-logo-dark{display:block}[data-theme=dark] .brand-logo-light{display:none}.topbar nav a{color:var(--tx-600);font-weight:500;padding:6px 12px;border-radius:6px;transition:color .15s,background .15s,transform .1s;position:relative}.topbar nav a:active{transform:scale(.97)}.topbar nav a.active{color:var(--primary);background:var(--primary-alpha);font-weight:600}.topbar .user{display:flex;align-items:center;gap:12px;color:var(--tx-900)}.network-banner{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:9999;display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-radius:99px;font-size:13px;font-weight:500;box-shadow:0 10px 25px -5px #0000001a,0 8px 10px -6px #0000001a;animation:slideUp .3s cubic-bezier(.16,1,.3,1) forwards;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}@keyframes slideUp{0%{transform:translate(-50%,150%);opacity:0}to{transform:translate(-50%);opacity:1}}.network-banner-offline{background:#dc2626e6;color:#fff;border:1px solid rgba(255,255,255,.2)}.network-banner-slow{background:#eab308e6;color:#422006;border:1px solid rgba(255,255,255,.2)}[data-theme=dark] .network-banner-offline{background:#ef4444e6}[data-theme=dark] .network-banner-slow{background:#ca8a04e6;color:#fefce8}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;border:none;cursor:pointer;transition:background .3s ease,transform .2s ease}[data-theme=light] .theme-toggle{background:#f0f0f0;color:#555}[data-theme=light] .theme-toggle:hover{background:#e2e2e2;transform:scale(1.08)}[data-theme=dark] .theme-toggle{background:#333;color:#ccc}[data-theme=dark] .theme-toggle:hover{background:#444;transform:scale(1.08)}.theme-toggle svg{width:18px;height:18px;fill:currentColor;transition:transform .4s cubic-bezier(.34,1.56,.64,1)}.theme-toggle:hover svg{transform:rotate(25deg) scale(1.1)}.main{flex:1;padding:24px;max-width:1200px;width:100%;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:16px}.page-header h1{margin:0 0 4px;font-size:22px;font-weight:700}.page-header .subtitle{color:var(--tx-400);font-size:13px}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;box-shadow:var(--shadow);transition:background .25s ease,border-color .25s ease}.card+.card{margin-top:16px}.grid>.card{margin-top:0}.card h2{font-size:15px;margin:0 0 12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:8px;border:1px solid transparent;font-weight:500;font-size:13px;transition:background .15s,border-color .15s,color .15s}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-primary:disabled{background:var(--tx-200);cursor:not-allowed}.btn-secondary{background:var(--surface);color:var(--tx-600);border-color:var(--border)}.btn-secondary:hover{background:var(--btn-secondary-hover)}.btn-link{background:transparent;color:var(--primary);padding:4px 8px}.btn-link:hover{background:var(--primary-alpha)}.input,.select{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--tx-900);font-size:13px;transition:background .25s ease,border-color .25s ease,color .25s ease}.input:focus,.select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.field{display:flex;flex-direction:column;gap:6px}.field label{font-weight:500;color:var(--tx-600);font-size:13px}.field .hint{font-size:12px;color:var(--tx-400)}.field .error{font-size:12px;color:var(--danger-fg)}.grid{display:grid;gap:16px}.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(max-width:768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}table.data{width:100%;border-collapse:separate;border-spacing:0}table.data th,table.data td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);font-size:13px}table.data th{background:var(--surface-alt);color:var(--tx-600);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.4px}table.data tr:last-child td{border-bottom:0}table.data tr:hover td{background:var(--hover-row)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600}.badge-success{background:var(--success-bg);color:var(--success-fg)}.badge-neutral{background:var(--pill-bg);color:var(--tx-600)}.badge-warning{background:var(--warning-bg);color:var(--warning-fg)}.badge-danger{background:var(--danger-bg);color:var(--danger-fg)}.login-shell{min-height:100vh;display:grid;place-items:center;background:var(--login-gradient);padding:24px;position:relative}.login-card{border-radius:14px;padding:32px;width:100%;max-width:380px;box-shadow:var(--login-shadow);transition:background .25s ease,border-color .25s ease}[data-theme=light] .login-card{background:#ffffffd9;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.5)}[data-theme=dark] .login-card{background:#1a1d27d9;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1)}.login-card h1{margin:0 0 6px;font-size:22px}.login-card .subtitle{color:var(--tx-400);font-size:13px;margin-bottom:24px}.login-theme-toggle{position:absolute;top:20px;right:20px}.empty{padding:32px;text-align:center;color:var(--tx-400)}.skeleton{background:linear-gradient(90deg,var(--skeleton-from) 25%,var(--skeleton-mid) 50%,var(--skeleton-from) 75%);background-size:200% 100%;animation:shimmer 1.4s linear infinite;border-radius:6px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fee-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:6px;background:var(--pill-bg);color:var(--tx-600);font-size:11px;font-weight:500;margin:2px 4px 2px 0}.toolbar{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:12px}.success-banner{background:var(--success-bg);color:var(--success-fg);border-radius:10px;padding:20px;text-align:center;margin-bottom:16px}.success-banner .check{width:48px;height:48px;border-radius:50%;background:#fff;color:var(--success-fg);display:inline-flex;align-items:center;justify-content:center;margin-bottom:8px;font-size:24px}[data-theme=dark] .success-banner .check{background:var(--surface)}.glass-toast{background:var(--surface)!important;border:1px solid var(--border)!important;color:var(--tx-900)!important;box-shadow:var(--shadow)!important;backdrop-filter:blur(12px)!important;-webkit-backdrop-filter:blur(12px)!important}[data-theme=dark] .glass-toast{background:#1a1d27b3!important}[data-theme=light] .glass-toast{background:#ffffffb3!important}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0006;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .2s ease}.modal-content{background:var(--surface);border-radius:12px;padding:24px;width:90%;max-width:400px;box-shadow:0 20px 40px #0003;transform:scale(.95);animation:scaleUp .2s ease forwards;color:var(--tx-900)}.modal-content h3{margin:0 0 8px;font-size:18px;font-weight:600}.modal-content p{color:var(--tx-600);margin:0 0 24px;font-size:14px}.modal-actions{display:flex;justify-content:flex-end;gap:12px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleUp{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.table-responsive{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.sticky-col{position:sticky;left:0;z-index:1;background:var(--surface);border-right:1px solid var(--border)}thead .sticky-col{z-index:11}.mobile-menu-btn{display:none;background:transparent;border:none;color:var(--tx-900);padding:8px;border-radius:6px;cursor:pointer;align-items:center;justify-content:center}.mobile-menu-btn:hover{background:var(--surface-alt)}.nav-links{position:absolute;left:50%;transform:translate(-50%);display:flex;gap:16px;align-items:center}.mobile-only-signout,.mobile-drawer-header{display:none}@media(max-width:768px){.mobile-menu-btn{display:inline-flex}.nav-links{position:fixed;top:0;left:-280px;transform:none;width:280px;height:100vh;background:var(--surface);flex-direction:column;padding:70px 16px 16px;box-shadow:20px 0 40px #00000026;z-index:999;border-right:1px solid var(--border);transition:left .35s cubic-bezier(.16,1,.3,1);align-items:stretch;border-radius:0 16px 16px 0}.mobile-drawer-header{display:block}.desktop-only-signout{display:none}.mobile-only-signout{display:block;width:100%;margin-top:auto}.nav-links.open{left:0}.nav-links a{width:100%;padding:14px 16px;border-radius:8px;margin-bottom:4px;font-size:15px}.mobile-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:998;opacity:0;pointer-events:none;transition:opacity .3s ease}.mobile-overlay.open{opacity:1;pointer-events:auto}.topbar{padding:12px 16px}.topbar .user{gap:8px}.topbar .user>span{display:none}.main{padding:16px}.sticky-col{max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-header{flex-direction:column;align-items:flex-start;gap:12px}.toolbar{flex-direction:column;align-items:stretch;gap:12px}.toolbar>div{flex-direction:column;align-items:stretch!important}.toolbar input,.toolbar select{max-width:100%!important;width:100%}.modal-content{width:95%;padding:20px}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--tx-200);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--tx-400)}*{scrollbar-width:thin;scrollbar-color:var(--tx-200) transparent}
