:root{--bg:#f6f7f9;--card:#fff;--line:#e3e6ea;--ink:#1c2024;--muted:#6b7280;--accent:#2563eb;--warn:#b45309;--encap:#7c3aed;--powder:#0d9488;--thead:#eef1f5;--hover:#f0f6ff;--missing:#fff7ed;--barbg:#eceff3}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:13px/1.45 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}a{color:inherit}header{display:flex;align-items:center;gap:18px;padding:10px 16px;background:var(--card);border-bottom:1px solid var(--line)}h1{font-size:15px;margin:0;font-weight:600;letter-spacing:.2px}nav{display:flex;gap:20px}nav button{border:0;background:none;font:inherit;color:var(--muted);padding:6px 2px;cursor:pointer;border-bottom:2px solid transparent}nav button.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.back{text-decoration:none;color:var(--muted);font-size:13px;font-weight:500;padding:4px 8px;border:1px solid var(--line);border-radius:6px}.back:hover{color:var(--accent);border-color:var(--accent)}main{padding:16px}.panel{display:block}.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:14px;margin-bottom:14px}textarea{width:100%;height:96px;font:12px/1.4 ui-monospace,Menlo,Consolas,monospace;padding:8px;resize:vertical}input[type=text],textarea{border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink)}input[type=text]{font:13px ui-monospace,Menlo,Consolas,monospace;padding:7px 9px;width:220px}select{font:13px -apple-system,Segoe UI,Roboto,sans-serif;padding:7px 9px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink)}select:disabled{opacity:.5}.field{flex-direction:column;gap:4px;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.chk,.field{display:flex}.chk{align-items:center;gap:6px;font-size:13px;color:var(--ink)}.chk,.chk input{cursor:pointer}.chkstrip{display:flex;justify-content:safe center;gap:8px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.chkstrip::-webkit-scrollbar{display:none}button.go{background:var(--accent);color:#fff;border:0;border-radius:6px;padding:8px 16px;font:inherit;font-weight:600;cursor:pointer}button.go:disabled{opacity:.5;cursor:default}button.go.alt{background:var(--card);color:var(--ink);border:1px solid var(--line);font-weight:500}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}.note{color:var(--muted);font-size:12px}.warn{color:var(--warn)}.scroll{overflow:auto;max-height:calc(100vh - 260px);border:1px solid var(--line);border-radius:8px;background:var(--card)}table{border-collapse:separate;border-spacing:0;font-size:12px;width:max-content;min-width:100%}td,th{padding:5px 8px;white-space:nowrap}td,th,thead th{border-bottom:1px solid var(--line);text-align:center}thead th{position:-webkit-sticky;position:sticky;top:0;z-index:2;background:var(--thead);font-weight:600}thead th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}thead th.sortable:hover{color:var(--accent)}tbody tr:hover>td{background:var(--hover)}td.n,th.n{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}td.pn{font-family:ui-monospace,Menlo,Consolas,monospace}td.pn a{color:var(--accent);text-decoration:none;cursor:pointer}td.pn a:hover{text-decoration:underline}td.desc{max-width:340px;overflow:hidden;text-overflow:ellipsis}td.desc,td.pt-lft{text-align:left}td>select{text-align:center;text-align-last:center}td:is(.desc,.pt-lft)>select{text-align:left;text-align-last:left}tr.missing td{background:var(--missing);color:var(--warn)}.sep{border-left:1px solid var(--line)}.kv{display:grid;grid-template-columns:auto auto;grid-gap:2px 24px;gap:2px 24px;align-items:baseline;justify-content:start}.kv dt{color:var(--muted)}.kv dd{margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.big{font-size:20px;font-weight:600}.bar{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--barbg);margin:8px 0 6px}.bar i{display:block;height:100%}.legend{display:flex;gap:12px;font-size:11px;color:var(--muted)}.legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:4px;vertical-align:middle}.empty{padding:26px;text-align:center;color:var(--muted)}.pager{margin:0 0 10px}.pager button.go{padding:5px 12px}.colpick{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.colgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));grid-gap:4px 16px;gap:4px 16px;margin-top:8px;max-height:240px;overflow:auto}.colgrid .chk{font-size:12px}button.link{border:0;background:none;font:inherit;font-size:12px;color:var(--accent);cursor:pointer;padding:0;text-decoration:underline}.signin-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.signin{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:28px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:10px}.signin h1{font-size:20px;font-weight:650;letter-spacing:-.01em;margin-bottom:2px}.signin input{font:13px -apple-system,Segoe UI,Roboto,sans-serif;padding:9px 10px;border:1px solid var(--line);border-radius:6px;width:100%;background:var(--card);color:var(--ink)}.signin .go{margin-top:4px}.signin .small{font-size:11px;text-align:center;margin:2px 0 0}.signin-err{color:var(--warn);font-size:12px;border:1px solid var(--warn);border-radius:6px;padding:8px 10px;background:var(--missing)}.usermenu{margin-left:auto;display:flex;align-items:center;gap:14px}.usermenu .signout{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:7px;padding:5px 10px;cursor:pointer}.usermenu .signout:hover{border-color:var(--accent)}.linkbtn{border:0;background:none;font:inherit;font-size:12px;color:var(--muted);cursor:pointer;padding:2px 4px}.linkbtn:hover:not(:disabled){color:var(--accent);text-decoration:underline}.linkbtn:disabled{opacity:.5;cursor:default}.linkbtn.danger:hover:not(:disabled){color:#dc2626}.landing-head{padding:64px 24px 24px;max-width:880px;margin:0 auto;background:radial-gradient(560px 220px at 18% -40px,color-mix(in srgb,var(--accent) 9%,transparent),transparent 70%)}.landing-head .overline{margin:0 0 8px;color:var(--accent);font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.landing-head h1{font-size:32px;font-weight:700;letter-spacing:-.02em}.landing-head p{margin:8px 0 0;color:var(--muted);font-size:15px}.landing-main{max-width:880px;margin:0 auto;padding:12px 24px 64px}.landing-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:16px;gap:16px}.app-card{display:flex;flex-direction:column;text-decoration:none;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 18px 16px;min-height:148px;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}.app-card .icon{width:40px;height:40px;border-radius:10px;font-size:20px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--tint,var(--accent)) 13%,transparent);border:1px solid color-mix(in srgb,var(--tint,var(--accent)) 22%,transparent);margin-bottom:12px}.app-card.live:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--tint,var(--accent)) 55%,var(--line));box-shadow:0 6px 20px -12px color-mix(in srgb,var(--tint,var(--accent)) 45%,transparent)}.app-card.soon{opacity:.65;cursor:default}.app-card .name{font-size:16px;font-weight:600;display:flex;align-items:center;gap:8px}.app-card .desc{margin-top:6px;font-size:13.5px;color:var(--muted);line-height:1.45}.app-card .open{margin-top:auto;padding-top:12px;font-size:12.5px;font-weight:600;color:var(--tint,var(--accent));opacity:0;transform:translateX(-3px);transition:opacity .12s ease,transform .12s ease}.app-card.live:hover .open{opacity:1;transform:none}.badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em}.badge.soon{background:color-mix(in srgb,var(--muted) 18%,transparent);color:var(--muted)}.badge.on{background:color-mix(in srgb,var(--tint,var(--accent)) 14%,transparent);color:var(--tint,var(--accent))}