:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#252c27;background:#f7f8f7;font-synthesis:none;--muted:#7b827d;--line:#e6e9e6;--red:#ab5046}
*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0}button:disabled{opacity:.5;cursor:wait}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid #779d83;outline-offset:3px}[hidden]{display:none!important}
.shell{max-width:1060px;margin:auto;padding:0 28px}.topbar{min-height:84px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{font-size:19px;font-weight:600;white-space:nowrap}.top-actions{display:flex;align-items:center;gap:12px}.small{font-size:12px}.muted{color:var(--muted)}.quiet{color:#59675e;background:transparent;padding:8px 10px;border-radius:6px;font-size:13px;white-space:nowrap}.quiet:hover{background:#edf0ed}main{padding:28px 0 36px}h2{font-size:15px;font-weight:600;margin:0}p{line-height:1.6}.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:12px}section+section{margin-top:28px}.bot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:22px}.bot-head{display:flex;align-items:center;gap:12px}.bot-name{font-size:16px;font-weight:550}.bot-account{font-size:12px;color:var(--muted);margin-top:7px}.badge{margin-left:auto;border-radius:5px;padding:5px 9px;font-size:12px;white-space:nowrap;background:#edf4ee;color:#4a7855}.badge.bad{background:#fbeeea;color:var(--red)}.badge.wait{background:#faf3e5;color:#a7752f}.badge.neutral{background:#f1f2f1;color:#7e827a}.bot-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:14px;margin-top:18px}.bot-bottom .quiet{background:#edf3ee;color:#477150}.host-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.metric-label{color:#707a72;font-size:12px}.metric-value{font-size:32px;line-height:1.2;font-weight:550;letter-spacing:-.04em;margin:14px 0 18px;font-variant-numeric:tabular-nums}.uptime{font-size:25px;margin:20px 0}.engine-status{color:#6d7c70;font-size:12px}progress{width:100%;height:4px;border:0;border-radius:4px;overflow:hidden;margin:0 0 10px;display:block;accent-color:#8ba18f}progress::-webkit-progress-bar{background:#f0f2ef}progress::-webkit-progress-value{background:#8ba18f;border-radius:4px}progress::-moz-progress-bar{background:#8ba18f}progress.high::-webkit-progress-value{background:#c89469}.disk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px}.disk{display:flex;align-items:center;gap:16px;padding:18px 22px}.disk-icon{font-size:15px;font-weight:550;color:#6c786e}.disk-content{flex:1;min-width:0}.disk-top{display:flex;justify-content:space-between;gap:10px;font-size:12px;margin-bottom:10px}.disk progress{margin:0}.events{list-style:none;padding:0 4px 0 0;margin:0;max-height:240px;overflow-y:auto;overscroll-behavior:contain}.events li{display:flex;align-items:center;gap:10px;padding:11px 0;font-size:12px;border-bottom:1px solid #eff1ef}.events li:first-child{padding-top:0}.events li:last-child{border:0;padding-bottom:0}.events time{margin-left:auto;font-size:11px;color:#8c968e;white-space:nowrap}.event-dot{width:6px;height:6px;flex-shrink:0;background:#87a18e;border-radius:50%}.event-dot.bad{background:#c08778}.alert{padding:14px 18px;background:#fbefeb;color:#a25043;border:1px solid #f0ddd6;border-radius:8px;margin-bottom:22px;font-size:13px}.loading{color:var(--muted);font-size:13px;grid-column:1/-1}.primary{background:#476651;color:white;padding:13px 20px;border-radius:7px;font-size:14px;font-weight:500}.primary:hover{background:#385642}.full{width:100%}.login-page{min-height:100svh;display:grid;place-items:center;padding:24px 20px}.login-card{width:100%;max-width:380px;background:white;border:1px solid var(--line);border-radius:12px;padding:30px}.login-card .brand{margin-bottom:28px}.login-card label{font-size:13px;display:block;margin:18px 0 8px;color:#5c685f}.login-card input{width:100%;border:1px solid #dfe5df;border-radius:7px;padding:12px;background:white;outline:none;font-size:14px;color:#2b362d}.login-card input:focus{border-color:#7c9a85;box-shadow:0 0 0 2px #edf3ee}.login-card input::placeholder{color:#b0b8b2}.form-error{color:var(--red);font-size:12px;min-height:20px;margin:12px 0}dialog{border:1px solid var(--line);border-radius:12px;padding:24px;max-width:390px;width:calc(100% - 32px);color:#253129}dialog::backdrop{background:#18251c65}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.icon-button{font-size:24px;background:transparent;color:#768076;width:32px;height:32px;line-height:1}.qr-frame{min-height:250px;display:flex;align-items:center;justify-content:center;flex-direction:column;border:1px solid var(--line);border-radius:8px;background:white;padding:12px}.qr-frame img{width:230px;max-width:100%;height:auto}.qr-frame p{text-align:center;color:var(--muted);font-size:13px}.scan-note{font-size:12px;color:#6e7b70;margin:16px 0}#qr-expiry:empty{display:none}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#304537;color:white;padding:12px 20px;border-radius:8px;font-size:13px;max-width:90%;z-index:10}.stale .metric-value{color:#a1a799}
@media(max-width:700px){.shell{padding:0 18px}.topbar{min-height:72px;gap:8px}.brand{font-size:17px}.top-actions{gap:0}#updated{display:none}.quiet{padding:8px}main{padding-top:24px}.bot-grid{grid-template-columns:1fr;gap:12px}.host-grid{grid-template-columns:1fr 1fr;gap:12px}.host-grid .metric:last-child{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;align-items:center}.host-grid .metric:last-child .uptime{grid-row:1/3;grid-column:2;margin:0;text-align:right}.card{padding:18px}.metric-value{font-size:30px}.disk-grid{grid-template-columns:1fr;gap:12px}.events li{gap:8px;font-size:11px}.events time{font-size:10px}.login-card{padding:28px}.bot-bottom{align-items:flex-start}.bot-bottom .small{line-height:1.6}}

/* Fit the dashboard to the viewport; paginate history instead of scrolling. */
.dashboard-page{height:100dvh}.dashboard-page .shell{height:100%;max-width:1120px;padding:0 20px;display:flex;flex-direction:column}.dashboard-page .topbar{min-height:54px;flex-shrink:0}.dashboard-page .brand{font-size:17px}.dashboard-page main{flex:1;min-height:0;padding:16px 0;display:flex;flex-direction:column;gap:16px}.dashboard-page section{flex-shrink:0;margin:0}.dashboard-page h2{font-size:13px}.dashboard-page .section-title{margin-bottom:8px;min-height:22px}.dashboard-page .card{padding:14px;border-radius:8px}.dashboard-page .bot-grid,.dashboard-page .host-grid{gap:10px}.dashboard-page .bot-name{font-size:14px}.dashboard-page .bot-account{font-size:11px;margin-top:4px}.dashboard-page .badge{font-size:11px;padding:4px 8px}.dashboard-page .bot-bottom{padding-top:8px;margin-top:8px;gap:8px}.dashboard-page .bot-bottom .small{font-size:11px}.dashboard-page .metric-value{font-size:27px;margin:8px 0 10px}.dashboard-page .uptime{font-size:23px}.dashboard-page progress{margin-bottom:6px}.dashboard-page .disk-grid{margin-top:10px;gap:10px}.dashboard-page .disk{padding:10px 14px;gap:12px}.dashboard-page .disk-top{font-size:11px;margin-bottom:6px}.dashboard-page .disk progress{margin:0}.dashboard-page .alert{margin:0;padding:8px 12px;font-size:12px;flex-shrink:0}.dashboard-page .events-panel{flex:1;min-height:68px;display:flex;flex-direction:column}.dashboard-page .events-card{flex:1;min-height:0;padding:6px 14px;display:flex}.dashboard-page .events{flex:1;min-height:0;height:100%;max-height:none;padding:0;overflow:visible}.dashboard-page .events li{height:30px;padding:0;gap:8px;white-space:nowrap}.dashboard-page .events li>span:nth-child(2){min-width:0;overflow:hidden;text-overflow:ellipsis}.event-pager{display:flex;align-items:center;gap:8px}.event-pager button{padding:0 8px;height:22px;font-size:18px;line-height:1}.event-pager button:disabled{cursor:default;opacity:.3}.view-tabs{display:none}
@media(max-width:700px){.dashboard-page .shell{padding:0 12px}.dashboard-page .topbar{min-height:50px}.dashboard-page .brand{font-size:16px}.dashboard-page main{gap:12px;padding:12px 0}.dashboard-page .card{padding:11px}.dashboard-page .bot-grid{gap:8px}.dashboard-page .host-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.dashboard-page .host-grid .metric:last-child{grid-column:auto;display:block}.dashboard-page .host-grid .metric:last-child .uptime{text-align:left;margin:8px 0 10px}.dashboard-page .metric-label{font-size:11px}.dashboard-page .metric-value{font-size:24px}.dashboard-page .metric-value.uptime{font-size:17px;line-height:29px;white-space:nowrap;letter-spacing:-.04em}.dashboard-page .metric .small,.dashboard-page .engine-status{font-size:10px}.dashboard-page .disk-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}.dashboard-page .disk{padding:9px;gap:8px}.dashboard-page .disk-top{display:block;font-size:10px}.dashboard-page .disk-top .muted{display:none}.dashboard-page .events-card{padding:4px 10px}.dashboard-page .events li{font-size:11px}.dashboard-page .bot-bottom{align-items:center}.dashboard-page .bot-bottom .small{line-height:1.4}}
/* Short viewports use section tabs so controls remain reachable without clipping. */
@media(max-height:620px){.dashboard-page .topbar{min-height:44px}.view-tabs{display:flex;gap:8px;padding-top:8px;flex-shrink:0}.view-tabs .active{background:#e8eee9;color:#365e42}.dashboard-page main{padding-top:12px;gap:10px}.dashboard-page [data-section]{display:none}.dashboard-page:not([data-view]) [data-section="robots"],.dashboard-page[data-view="robots"] [data-section="robots"],.dashboard-page[data-view="host"] [data-section="host"]{display:block}.dashboard-page[data-view="activity"] [data-section="activity"]{display:flex}dialog{padding:14px}.qr-frame{min-height:0;padding:4px}.qr-frame img{width:min(200px,35dvh)}.scan-note{margin:8px 0}#qr-account{margin:8px 0}.primary{padding:10px 16px}}

.host-actions{display:flex;align-items:center;gap:8px}.host-actions .quiet{padding:2px 8px;font-size:12px}.power-note{font-size:14px;color:#a25043}#power-message{font-size:14px}#cancel-shutdown{margin-top:10px}@media(max-width:400px){#host-name{display:none}}
