:root{color-scheme:light;--page:#f9f9f7;--surface:#fcfcfb;--surface-2:#f0efec;--text-primary:#0b0b0b;--text-secondary:#52514e;--muted:#898781;--gridline:#e1e0d9;--border:rgba(11,11,11,0.10);--good:#0ca30c;--critical:#d03b3b;--bar:#2a78d6;--bar-track:#ece9e3}@media (prefers-color-scheme:dark){:root:where(:not([data-theme=light])){color-scheme:dark;--page:#0d0d0d;--surface:#1a1a19;--surface-2:#262624;--text-primary:#ffffff;--text-secondary:#c3c2b7;--muted:#898781;--gridline:#2c2c2a;--border:rgba(255,255,255,0.10);--good:#0ca30c;--critical:#d03b3b;--bar:#3987e5;--bar-track:#2c2c2a}}:root[data-theme=dark]{color-scheme:dark;--page:#0d0d0d;--surface:#1a1a19;--surface-2:#262624;--text-primary:#ffffff;--text-secondary:#c3c2b7;--muted:#898781;--gridline:#2c2c2a;--border:rgba(255,255,255,0.10);--good:#0ca30c;--critical:#d03b3b;--bar:#3987e5;--bar-track:#2c2c2a}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--page);color:var(--text-primary);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.5}header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);background:var(--surface);position:-webkit-sticky;position:sticky;top:0;z-index:10}header h1{font-size:18px;font-weight:650;margin:0}.header-actions{display:flex;align-items:center;gap:8px}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text-primary);border-radius:8px;padding:6px 12px}button:hover{background:var(--surface-2)}.tabs{display:flex;gap:4px;padding:12px 24px 0;border-bottom:1px solid var(--border);background:var(--surface)}.tabs button{background:none;border-radius:8px 8px 0 0;padding:8px 16px;color:var(--text-secondary);border:none;border-bottom:2px solid transparent}.tabs button.active{color:var(--text-primary);font-weight:600;border-bottom-color:var(--bar)}main{max-width:1100px;margin:0 auto;padding:24px}.summary{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:20px;color:var(--text-secondary)}.summary .count{font-weight:650;color:var(--text-primary)}.window-picker{align-items:center;gap:10px;margin-bottom:16px}.presets,.window-picker{display:flex;flex-wrap:wrap}.presets{gap:6px}.presets button.active{border-color:var(--bar);color:var(--text-primary);font-weight:600}.custom-window{display:flex;align-items:center;gap:6px;margin-left:auto}.custom-window input{width:76px;background:var(--page)}.custom-window input,.custom-window select{padding:6px 8px;border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font:inherit}.custom-window select{background:var(--surface)}@media (max-width:600px){.custom-window{margin-left:0;width:100%}.custom-window input{flex:1 1;min-width:0}}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));grid-gap:12px;gap:12px}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.card .name{font-weight:600;word-break:break-word}.badge{display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:14px}.badge .dot{width:10px;height:10px;border-radius:50%;flex:none}.badge.online{color:var(--good)}.badge.online .dot{background:var(--good)}.badge.offline{color:var(--critical)}.badge.offline .dot{background:var(--critical)}.card .meta{font-size:13px;color:var(--muted)}table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}td,th{text-align:left;padding:10px 14px;border-bottom:1px solid var(--gridline)}th{font-weight:600;color:var(--text-secondary);font-size:13px;background:var(--surface-2)}tr:last-child td{border-bottom:none}td.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}th .th-sort{display:inline-flex;align-items:center;gap:5px;border:none;background:none;padding:0;border-radius:0;font:inherit;color:inherit;cursor:pointer}th .th-sort:hover{color:var(--text-primary);background:none}th .sort-indicator{font-size:10px;line-height:1}.cell-bar{display:flex;flex-direction:column;gap:4px;min-width:120px}.cell-bar .track{height:6px;background:var(--bar-track);border-radius:3px;overflow:hidden}.cell-bar .fill{height:100%;background:var(--bar);border-radius:3px}.cell-bar .label{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:13px;color:var(--text-primary)}.cell-bar .label.muted{color:var(--muted)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}.table-wrap{container-type:inline-size;overflow-x:auto}.cell-window{display:none}@container (max-width: 600px){.table-wrap table,.table-wrap tbody,.table-wrap td,.table-wrap th,.table-wrap thead,.table-wrap tr{display:block}.table-wrap table{border:none;border-radius:0;overflow:visible;background:none}.table-wrap thead tr{display:flex;flex-wrap:wrap;gap:6px;padding:0 0 10px}.table-wrap th{border:none;padding:0;background:none}.table-wrap th .th-sort{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:6px 10px}.table-wrap th[aria-sort] .th-sort{color:var(--text-primary);border-color:var(--bar)}.table-wrap tbody tr{border:1px solid var(--border);border-radius:10px;margin-bottom:10px;padding:12px 14px;background:var(--surface)}.table-wrap tbody tr:last-child{margin-bottom:0}.table-wrap td{border:none;padding:8px 0;white-space:normal}.table-wrap td.name{font-weight:600;word-break:break-word;padding-top:0}.table-wrap td.num{display:flex;align-items:baseline;gap:12px;text-align:left}.table-wrap td.num .cell-window{display:block;flex:none;font-size:13px;color:var(--text-secondary)}.table-wrap td.num .cell-bar{flex:1 1;min-width:0}}.footnote{margin-top:14px}.footnote,footer{font-size:13px;color:var(--muted)}footer{text-align:center;padding:20px}.error-banner{background:var(--critical);color:#fff;padding:10px 16px;border-radius:8px;margin-bottom:16px;font-weight:600}.loading{color:var(--muted);padding:20px 0}.login-page{min-height:100vh;max-width:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:32px;width:320px;box-shadow:0 10px 30px rgba(0,0,0,.06)}.login-card h1{font-size:18px;margin:0 0 4px}.login-card .sub{margin:0 0 24px}.login-card .sub,.login-card label{color:var(--text-secondary);font-size:14px}.login-card label{display:block;margin-bottom:14px}.login-card input{display:block;width:100%;margin-top:6px;padding:9px 12px;border:1px solid var(--border);border-radius:8px;background:var(--page);color:var(--text-primary);font:inherit}.login-card button{width:100%;padding:10px;border:none;border-radius:8px;background:var(--bar);color:#fff;font:inherit;font-weight:600;cursor:pointer}.login-card .error{color:var(--critical);font-size:14px;margin-bottom:12px;font-weight:600}.install-banner{position:fixed;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom, 0px));display:flex;align-items:center;gap:12px;max-width:440px;margin:0 auto;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 12px 32px rgba(0,0,0,.16);z-index:50}.install-banner .app-icon{width:44px;height:44px;border-radius:10px;flex:none}.install-banner .copy{flex:1 1;min-width:0}.install-banner .title{font-weight:600;font-size:14px}.install-banner .hint{font-size:13px;color:var(--text-secondary);margin-top:2px}.install-banner .actions{display:flex;align-items:center;gap:6px;flex:none}.install-banner .install-btn{border:none;background:var(--bar);color:#fff;font-weight:600;padding:8px 14px}.install-banner .install-btn:hover{background:var(--bar);filter:brightness(1.06)}.install-banner .dismiss{border:none;background:none;color:var(--muted);font-size:20px;line-height:1;padding:4px 6px;border-radius:8px}.install-banner .dismiss:hover{background:var(--surface-2);color:var(--text-primary)}