.m-shell{display:flex;flex-direction:column;height:100dvh;background:var(--bg);overflow:hidden}.m-shell button,.m-shell input,.m-shell select,.m-shell textarea{font:inherit;-webkit-tap-highlight-color:transparent}.m-topbar{z-index:5;min-height:calc(60px + env(safe-area-inset-top));padding:calc(10px + env(safe-area-inset-top)) 14px 10px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface);border-bottom:1px solid var(--border)}.m-topbar-title{display:flex;align-items:center;gap:10px;min-width:0}.m-topbar-title .m-brand{font-size:17px;font-weight:800;letter-spacing:-.4px;white-space:nowrap}.m-topbar-title .m-brand .x{color:var(--primary)}.m-topbar-title small{display:block;font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint)}.m-back-btn{width:40px;height:40px;flex:none;display:grid;place-items:center;border:1px solid var(--border);border-radius:12px;background:var(--surface-2);color:var(--text);font-size:17px;cursor:pointer}.m-topbar-balance{display:flex;flex-direction:column;align-items:flex-end;gap:1px;min-width:0}.m-topbar-balance span{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);white-space:nowrap}.m-topbar-balance strong{font-size:15px;color:var(--green-text);white-space:nowrap}.m-main{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.m-tabbar{z-index:6;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border-top:1px solid var(--border);background:var(--surface);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}.m-tabbar>button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;color:var(--text-faint);font-size:10.5px;font-weight:600;display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 2px;min-height:48px;border-radius:10px;cursor:pointer}.m-tabbar>button .ico{font-size:19px;line-height:1}.m-tabbar>button.active{color:var(--primary);background:color-mix(in srgb,var(--primary) 10%,transparent)}.m-more{padding:14px 12px calc(26px + env(safe-area-inset-bottom))}.m-more h2{margin:4px 2px 2px;font-size:22px}.m-more .m-more-sub{margin:0 2px 14px;font-size:12.5px;color:var(--text-dim)}.m-more-group{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;margin-bottom:14px}.m-more-group h3{margin:0;padding:11px 14px 7px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.m-more-item{width:100%;display:flex;align-items:center;gap:12px;padding:13px 14px;border:0;border-top:1px solid var(--border);background:none;color:var(--text);text-align:left;font-size:14.5px;cursor:pointer;min-height:52px}.m-more-item:active{background:var(--surface-2)}.m-more-item .ico{width:22px;text-align:center;font-size:16px;opacity:.9;flex:none}.m-more-item small{display:block;color:var(--text-faint);font-size:11.5px;margin-top:1px}.m-more-item .chev{margin-left:auto;color:var(--text-faint);flex:none}.m-more-item.danger{color:var(--red-text)}.m-adaptive{width:100%;min-width:0;min-height:100%;padding:14px 12px 26px;overflow-x:hidden}.m-adaptive>*{max-width:100%}.m-adaptive .cards{grid-template-columns:1fr!important;gap:10px}.m-adaptive .card{max-width:100%!important;border-radius:13px;padding:14px}.m-adaptive .card-value{font-size:24px}.m-adaptive .panel{max-width:100%!important;border-radius:13px}.m-adaptive .table-wrap{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.m-adaptive table.tbl{width:max-content;min-width:100%}.m-adaptive .tbl th,.m-adaptive .tbl td{padding:9px 11px;font-size:11px;white-space:nowrap}.m-adaptive .filterbar{padding:10px}.m-adaptive .filterbar .fb-row{align-items:stretch;flex-direction:column}.m-adaptive .filterbar .field,.m-adaptive .filterbar .field .input,.m-adaptive .filterbar .field select.input{width:100%!important;min-width:0!important}.m-adaptive .listview{min-height:auto}.m-adaptive .panel-head{padding:11px;flex-wrap:wrap;gap:8px}.m-adaptive .btn{min-height:44px}.m-adaptive .btn.sm{min-height:40px;padding:7px 10px}.m-adaptive .input,.m-adaptive select.input{min-height:44px;width:100%}.m-adaptive .input.sm,.m-adaptive select.input.sm{width:100%}.m-adaptive .section-title{margin-top:19px}.m-adaptive .grid2,.m-adaptive .grid3{grid-template-columns:1fr!important}.m-adaptive .recharts-responsive-container{min-width:0!important}.m-adaptive .content,.m-adaptive .content.listpage{overflow:visible;display:block;padding:0}.m-adaptive .code,.m-adaptive code{padding-top:1px;padding-bottom:1px;line-height:1.9;overflow-wrap:anywhere}.m-adaptive pre{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}:root{color-scheme:dark;--bg: #0a0f1c;--surface: #0f1626;--surface-2: #131c30;--sidebar: #0c1322;--border: #1e2a42;--text: #e6edf6;--text-dim: #8a98b0;--text-faint: #5b6880;--primary: #3b82f6;--primary-hover: #2f6fe0;--green: #22c55e;--green-dim: #14532d;--red: #ef4444;--amber: #f59e0b;--accent: #7aa2ff;--accent-soft: rgba(90, 130, 255, .12);--accent-text: #9db8ff;--panel: #0e1520;--bg-raised: rgba(120, 140, 180, .08);--amber-soft: rgba(245, 158, 11, .13);--amber-text: #fbbf24;--green-text: #4ade80;--red-text: #f87171;--nav-active-text: #cfe0ff;--overlay: rgba(0, 0, 0, .55);--row-hover: rgba(255, 255, 255, .02);--radius: 10px;--shadow: 0 1px 3px rgba(0, 0, 0, .4);--shadow-lg: 0 24px 64px rgba(0, 0, 0, .55);--shadow-pop: 0 12px 32px rgba(0, 0, 0, .45)}html[data-theme=light]{color-scheme:light;--bg: #f6f7f9;--surface: #ffffff;--surface-2: #f2f4f7;--sidebar: #ffffff;--border: #e3e7ed;--text: #0f1729;--text-dim: #566179;--text-faint: #8792a6;--primary: #2563eb;--primary-hover: #1d4ed8;--green: #15803d;--green-dim: #dcf2e4;--red: #dc2626;--amber: #b45309;--accent: #2563eb;--accent-soft: rgba(37, 99, 235, .12);--accent-text: #1d4ed8;--panel: #ffffff;--bg-raised: rgba(15, 23, 41, .05);--amber-soft: rgba(180, 83, 9, .12);--amber-text: #92400e;--green-text: #15803d;--red-text: #b91c1c;--nav-active-text: #1d4ed8;--overlay: rgba(15, 23, 41, .38);--row-hover: rgba(15, 23, 41, .03);--shadow: 0 1px 2px rgba(16, 24, 40, .06);--shadow-lg: 0 24px 64px rgba(16, 24, 40, .16);--shadow-pop: 0 12px 32px rgba(16, 24, 40, .14)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.app{display:grid;grid-template-columns:240px 1fr;height:100vh}.sidebar{background:var(--sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 12px;overflow-y:auto}.brand{display:flex;align-items:center;gap:8px;padding:8px 10px 18px}.brand-logo{font-size:20px;font-weight:800;letter-spacing:-.5px}.brand-logo .x{color:var(--primary)}.env-pill{font-size:10px;font-weight:700;padding:2px 7px;border-radius:999px;background:var(--green-dim);color:var(--green-text);border:1px solid color-mix(in srgb,var(--green) 45%,transparent)}.env-pill.test{background:color-mix(in srgb,var(--amber) 18%,transparent);color:var(--amber-text);border-color:color-mix(in srgb,var(--amber) 45%,transparent)}.nav-group{margin-top:14px}.nav-group-title{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);padding:6px 10px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:var(--text-dim);cursor:pointer;font-weight:500;border:none;background:none;width:100%;text-align:left;font-size:13.5px}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item.active{background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--nav-active-text)}.nav-item .ico{width:16px;text-align:center;opacity:.9}.sidebar-spacer{flex:1}.main{display:flex;flex-direction:column;overflow:hidden}.topbar{display:flex;align-items:center;gap:16px;padding:14px 24px;border-bottom:1px solid var(--border);background:var(--surface)}.topbar h1{font-size:18px;margin:0;font-weight:700}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px}.balance-pill{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:6px 14px;font-size:13px}.balance-pill b{color:var(--green)}.topbar-balance{display:flex;flex-direction:column;align-items:flex-end}.topbar-balance span{color:var(--text-dim);font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.topbar-balance strong{margin-top:2px;color:var(--green);font-size:13px}.balance-refresh{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:-8px;padding:0;border:0;border-radius:6px;background:none;color:var(--text-dim);font-size:14px;line-height:1;cursor:pointer}.balance-refresh:hover:not(:disabled){color:var(--text);background:var(--surface-2)}.balance-refresh:disabled{cursor:default}.balance-refresh.spinning{animation:balance-spin .6s linear infinite}@keyframes balance-spin{to{transform:rotate(360deg)}}.content{padding:24px;overflow-y:auto;flex:1;min-height:0}.content.listpage{overflow:hidden;display:flex}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.card-label{font-size:12px;color:var(--text-dim);display:flex;justify-content:space-between}.card-value{font-size:28px;font-weight:700;margin-top:8px;letter-spacing:-.5px}.card-sub{font-size:12px;color:var(--text-faint);margin-top:4px}.section-title{font-size:13px;font-weight:600;color:var(--text-dim);margin:26px 0 12px;text-transform:uppercase;letter-spacing:.05em}.progress{height:6px;background:var(--surface-2);border-radius:999px;overflow:hidden;margin-top:10px}.progress>div{height:100%;background:var(--green)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.panel-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.panel-head h2{font-size:15px;margin:0;font-weight:600}.table-wrap{overflow-x:auto}table.tbl{width:100%;border-collapse:collapse}.tbl th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);padding:10px 16px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface-2)}.tbl td{padding:11px 16px;border-bottom:1px solid var(--border);font-size:13px}.tbl tr:hover td{background:var(--row-hover)}.tbl .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--text-dim)}.empty{padding:40px;text-align:center;color:var(--text-faint)}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px}.badge.ok{background:color-mix(in srgb,var(--green) 13%,transparent);color:var(--green-text)}.badge.fail{background:color-mix(in srgb,var(--red) 13%,transparent);color:var(--red-text)}.badge.pending{background:color-mix(in srgb,var(--amber) 13%,transparent);color:var(--amber-text)}.badge.neutral{background:var(--surface-2);color:var(--text-dim)}.dot{width:7px;height:7px;border-radius:999px;display:inline-block}.dot.ok{background:var(--green)}.dot.fail{background:var(--red)}.btn{background:var(--primary);color:#fff;border:none;border-radius:8px;padding:9px 16px;font-size:13px;font-weight:600;cursor:pointer}.btn:hover{background:var(--primary-hover)}.btn.ghost{background:var(--surface-2);color:var(--text);border:1px solid var(--border)}.btn.ghost:hover{background:var(--border)}.btn.export-live,.btn.export-done{font-variant-numeric:tabular-nums;display:inline-flex;align-items:center;gap:7px}.export-spinner{width:12px;height:12px;flex:none;border-radius:50%;border:2px solid var(--border);border-top-color:var(--text);animation:export-spin .8s linear infinite}@keyframes export-spin{to{transform:rotate(360deg)}}.btn.export-done{color:var(--green);border-color:color-mix(in srgb,var(--green) 40%,transparent)}.btn.export-error{color:var(--red);border-color:color-mix(in srgb,var(--red) 40%,transparent)}.btn.sm{padding:5px 11px;font-size:12px}.btn.danger{background:var(--red)}.btn.danger:hover{background:color-mix(in srgb,var(--red) 85%,#000)}.input,select.input{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:9px 11px;font-size:13px;width:100%;outline:none}.input:focus{border-color:var(--primary)}.field{margin-bottom:12px}.field label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:6px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.row{display:flex;gap:10px;align-items:center}.spacer{flex:1}.msg{font-size:13px;margin:8px 0}.msg.err{color:var(--red-text)}.msg.ok{color:var(--green-text)}.with-filters{display:grid;grid-template-columns:240px 1fr;gap:16px;align-items:start}.filter-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.listview{display:flex;flex-direction:column;gap:14px;flex:1;min-height:0;width:100%}.filterbar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:10px}.filterbar .fb-row{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end}.input.sm,select.input.sm{padding:6px 9px;font-size:12px;width:auto}.panel.fill{display:flex;flex-direction:column;flex:1;min-height:0}.panel.fill .table-wrap{flex:1;min-height:0;overflow:auto}.panel-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid var(--border);background:var(--surface)}.panel-foot .totals{display:flex;flex-wrap:wrap;gap:16px;align-items:baseline}.panel-foot .pagesize{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim)}.panel-foot .pagesize select{width:auto;padding:5px 8px}@media (max-width: 820px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr;height:100dvh}.sidebar{flex-direction:row;align-items:center;gap:4px;overflow-x:auto;overflow-y:hidden;padding:8px 10px;border-right:none;border-bottom:1px solid var(--border);-webkit-overflow-scrolling:touch;scrollbar-width:none}.sidebar::-webkit-scrollbar{display:none}.brand{padding:0 10px 0 0;flex:none}.nav-group{display:flex;margin-top:0;flex:none;gap:2px}.nav-item{width:auto;white-space:nowrap;padding:7px 10px;font-size:12.5px}.sidebar-spacer{display:none}.topbar{padding:10px 14px;gap:10px}.topbar h1{font-size:16px}.content{padding:12px}.grid2{grid-template-columns:1fr}.cards{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.card{padding:14px}.card-value{font-size:22px}.with-filters{grid-template-columns:1fr}.tbl th,.tbl td{padding:8px 10px}.panel-head{flex-wrap:wrap;gap:8px;padding:10px 12px}.panel-foot{padding:8px 12px;gap:10px}.filterbar .fb-row{gap:8px}.content .row{flex-wrap:wrap}}@media (max-width: 480px){.balance-pill{display:none}.content{padding:10px}}@media (max-width: 768px){input,select,textarea,.input,.input.sm,select.input,select.input.sm{font-size:16px}button,.btn,input,select,textarea{touch-action:manipulation}.btn{min-height:44px}.btn.ghost.sm,.btn.sm{min-height:40px}.login-card .btn{min-height:48px}}.login-wrap{display:grid;place-items:center;height:100vh;padding:16px}.login-card{width:min(360px,100%);background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:32px;box-shadow:var(--shadow-lg)}.login-card h1{margin:0 0 4px;font-size:24px}.login-card p{color:var(--text-dim);margin:0 0 20px;font-size:13px}.qr{background:#fff;padding:12px;border-radius:8px;display:inline-block}.code{font-family:ui-monospace,monospace;background:var(--surface-2);padding:8px 10px;border-radius:6px;font-size:12px;word-break:break-all}.codeblock{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--surface-2);padding:12px 14px;border-radius:8px;font-size:12px;line-height:1.5;color:var(--text);white-space:pre-wrap;word-break:break-word;overflow-x:auto;margin:0}.col-picker{position:relative;display:inline-flex}.col-picker-active{color:var(--accent)}.col-picker-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.col-picker-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:41;min-width:200px;max-height:320px;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:8px;box-shadow:var(--shadow-pop);display:flex;flex-direction:column;gap:2px}.col-picker-pop label{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:5px 8px;border-radius:6px;cursor:pointer;white-space:nowrap}.col-picker-pop label:hover{background:var(--bg-raised)}.col-picker-pop label.locked{color:var(--text-faint);cursor:default}.col-picker-pop input{accent-color:var(--accent)}.col-picker-reset{margin-top:6px}.filter-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px 0 2px}.filter-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:3px 8px 3px 10px;background:var(--accent-soft);color:var(--accent-text);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:999px;cursor:pointer;white-space:nowrap}.filter-chip b{font-weight:600}.filter-chip .x{font-size:13px;line-height:1;opacity:.75}.filter-chip:hover .x{opacity:1}.filter-chips .clear-all{font-size:12px;color:var(--text-dim);background:none;border:0;cursor:pointer;padding:3px 6px;text-decoration:underline}.cell-reason{margin-top:4px;font-size:11px;line-height:1.35;color:var(--text-dim);max-width:220px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
