:root{color:#242424;font-synthesis:none;text-rendering:optimizelegibility;background:#f5f5f5;font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{background:#f5f5f5;min-width:320px;min-height:100vh;margin:0}button{font:inherit}.app-shell{min-height:100vh}.app-bar{z-index:10;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffffff0;border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;gap:24px;height:64px;padding:0 max(24px,50vw - 620px);display:flex;position:sticky;top:0}.app-name{align-items:center;gap:12px;font-size:16px;font-weight:600;display:flex}.app-icon{border-radius:7px;width:32px;height:32px;display:block}.app-actions{align-items:center;gap:16px;display:flex}.last-updated{color:#616161;font-size:12px}.refresh-button{color:#fff;cursor:pointer;background:#0f6cbd;border:1px solid #0f6cbd;border-radius:4px;justify-content:center;align-items:center;gap:8px;min-width:86px;height:34px;padding:0 14px;font-weight:600;display:inline-flex}.refresh-button:hover:not(:disabled){background:#115ea3;border-color:#115ea3}.refresh-button:active:not(:disabled){background:#0c3b5e}.refresh-button:focus-visible,.copy-button:focus-visible,.host-card:focus-visible,.icon-button:focus-visible,.secondary-button:focus-visible,.gpu-view-switch button:focus-visible{outline-offset:2px;outline:2px solid #0f6cbd}.refresh-button:disabled{opacity:.65;cursor:wait}.refresh-icon{transform-origin:50%;border:2px solid;border-left-color:#0000;border-radius:50%;flex:0 0 15px;width:15px;height:15px;display:block;position:relative}.refresh-icon:after{content:"";border-top:3px solid #0000;border-bottom:3px solid #0000;border-right:5px solid;width:0;height:0;position:absolute;top:-1px;left:-3px;transform:rotate(22deg)}.spinning{animation:.9s linear infinite spin}.content{width:min(1240px,100% - 48px);margin:0 auto;padding:40px 0 56px}.message-bar{color:#a4262c;background:#fdf3f4;border:1px solid #f1bbbc;border-radius:6px;margin-bottom:16px;padding:12px 16px;font-size:14px}.host-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.host-card{cursor:pointer;background:#fff;border:1px solid #e0e0e0;border-radius:10px;min-width:0;padding:24px;transition:box-shadow .18s,transform .18s;position:relative;overflow:hidden;box-shadow:0 2px 4px #0000000f,0 1px 2px #0000000a}.host-card>*{z-index:1;position:relative}.host-card:after{content:"";z-index:0;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:contain;width:122px;height:122px;position:absolute;bottom:42px;right:10px}.host-card.system-linux{background:linear-gradient(145deg,#fff 55%,#f2f9f4)}.host-card.system-linux:after{opacity:.12;background-image:url(/host-linux.png)}.host-card.system-macos{background:linear-gradient(145deg,#fff 55%,#f4f6f9)}.host-card.system-macos:after{opacity:.14;background-image:url(/host-macos.png)}.host-card.system-windows{background:linear-gradient(145deg,#fff 55%,#f0f6fc)}.host-card.system-windows:after{opacity:.14;background-image:url(/host-windows.png)}.host-card:hover{transform:translateY(-1px);box-shadow:0 5px 12px #00000017,0 2px 4px #0000000d}.host-card:active{transform:translateY(0)}.card-header{justify-content:space-between;align-items:flex-start;gap:16px;min-height:58px;display:flex}.card-header h2{color:#242424;margin:0 0 6px;font-size:20px;font-weight:600;line-height:1.25}.domain{color:#616161;overflow-wrap:anywhere;font-size:13px}.host-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.system-label{color:#616161;background:#ffffffbf;border:1px solid #e0e0e0;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:600}.status-badge{border-radius:12px;flex:none;align-items:center;gap:6px;height:24px;padding:0 9px;font-size:12px;font-weight:600;display:inline-flex}.status-dot{background:currentColor;border-radius:50%;width:6px;height:6px}.status-badge.online{color:#0e700e;background:#f1faf1}.status-badge.offline{color:#c50f1f;background:#fdf3f4}.status-badge.checking{color:#8a6100;background:#fff8e3}.status-badge.checking .status-dot{animation:1s ease-in-out infinite pulse}.card-divider{background:#ebebeb;height:1px;margin:20px 0}.address-section{flex-direction:column;gap:18px;min-height:106px;display:flex}.ip-group{gap:8px;display:grid}.field-label,.metrics dt{color:#616161;font-size:12px}.ip-list{gap:6px;display:grid}.ip-value{background:#fafafa;border:1px solid #e0e0e0;border-radius:5px;align-items:center;gap:8px;min-height:34px;padding:4px 4px 4px 10px;display:flex}.ip-value code{overflow-wrap:anywhere;color:#323130;flex:1;min-width:0;font-family:Consolas,SFMono-Regular,monospace;font-size:12px}.copy-button{color:#424242;cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;place-items:center;width:28px;height:28px;display:grid}.copy-button:hover{background:#e5e5e5}.copy-button:active{background:#d6d6d6}.copy-button.copied{color:#0e700e}.copy-icon{width:14px;height:14px;display:block;position:relative}.copy-icon:before,.copy-icon:after{content:"";background:#fafafa;border:1.5px solid;border-radius:1.5px;width:8px;height:9px;position:absolute}.copy-icon:before{top:3px;left:1px}.copy-icon:after{top:0;left:4px}.check-icon{font-size:16px;font-weight:600}.empty-value{color:#8a8886;font-size:13px}.loading-lines{gap:12px;display:grid}.loading-lines span{background:linear-gradient(90deg,#f3f2f1,#faf9f8,#f3f2f1) 0 0/200% 100%;border-radius:5px;width:100%;height:34px;animation:1.5s linear infinite shimmer}.loading-lines span:last-child{width:78%}.metrics{grid-template-columns:1.35fr .8fr .9fr;gap:12px;margin:0;display:grid}.metrics div{min-width:0}.metrics dt{margin-bottom:5px}.metrics dd{color:#323130;overflow-wrap:anywhere;margin:0;font-size:13px;font-weight:600}.drawer-layer{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000047;justify-content:flex-end;animation:.16s ease-out fade-in;display:flex;position:fixed;inset:0}.details-drawer{background:#fff;border-left:1px solid #d1d1d1;grid-template-rows:auto 1fr;width:min(900px,100vw - 40px);height:100%;animation:.2s cubic-bezier(.2,.8,.2,1) drawer-in;display:grid;box-shadow:-12px 0 36px #00000026}.drawer-header{border-bottom:1px solid #e5e5e5;justify-content:space-between;align-items:center;gap:16px;min-height:82px;padding:20px 24px;display:flex}.drawer-header h2{margin:0 0 4px;font-size:21px;font-weight:600}.drawer-header p{color:#616161;margin:0;font-size:13px}.icon-button{color:#424242;cursor:pointer;background:0 0;border:0;border-radius:4px;place-items:center;width:34px;height:34px;display:grid}.icon-button:hover{background:#f0f0f0}.close-button{font-family:Segoe UI,sans-serif;font-size:25px;font-weight:300;line-height:1}.drawer-content{min-height:0;padding:28px 24px 40px;overflow-y:auto}.drawer-footer{background:#fafafa;border-top:1px solid #e5e5e5;justify-content:flex-end;align-items:center;min-height:62px;padding:13px 24px;display:flex}.secondary-button{color:#242424;cursor:pointer;background:#fff;border:1px solid #d1d1d1;border-radius:4px;min-height:34px;padding:0 14px;font-weight:600}.secondary-button:hover:not(:disabled){background:#f5f5f5;border-color:#b3b3b3}.secondary-button:disabled{color:#a0a0a0;cursor:wait}.details-loading{color:#616161;justify-content:center;align-items:center;gap:12px;min-height:220px;font-size:14px;display:flex}.spinner{border:2px solid #d6e7f5;border-top-color:#0f6cbd;border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}.details-error{color:#a4262c;background:#fdf3f4;border:1px solid #f1bbbc;border-radius:8px;flex-direction:column;justify-content:center;align-items:flex-start;gap:9px;min-height:220px;padding:28px;display:flex}.details-error strong{font-size:16px}.details-error span{color:#6e1e23;margin-bottom:8px;font-size:13px}.section-heading{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:14px;display:flex}.section-heading h3{margin:0;font-size:16px;font-weight:600}.section-heading>span{color:#707070;font-size:12px}.usage-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.usage-tile{background:#fafafa;border:1px solid #e0e0e0;border-radius:8px;min-width:0;padding:16px}.usage-heading{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.usage-heading span{color:#616161;font-size:12px}.usage-heading strong{font-variant-numeric:tabular-nums;font-size:19px;font-weight:600}.progress-track{background:#e5e5e5;border-radius:3px;height:5px;margin-top:13px;overflow:hidden}.progress-track span{border-radius:inherit;background:#0f6cbd;height:100%;transition:width .25s;display:block}.usage-detail{overflow-wrap:anywhere;color:#707070;font-variant-numeric:tabular-nums;margin-top:8px;font-size:11px}.gpu-section{margin-top:32px}.gpu-section-heading{align-items:center}.gpu-heading-actions{align-items:center;gap:12px;display:flex}.gpu-heading-actions>span{color:#707070;font-size:12px}.gpu-view-switch{background:#f5f5f5;border:1px solid #d1d1d1;border-radius:5px;align-items:center;height:30px;padding:2px;display:inline-flex}.gpu-view-switch button{color:#616161;cursor:pointer;background:0 0;border:0;border-radius:3px;height:24px;padding:0 9px;font-size:11px;font-weight:600}.gpu-view-switch button:hover{color:#242424;background:#e8e8e8}.gpu-view-switch button[aria-pressed=true]{color:#0f548c;background:#fff;box-shadow:0 1px 2px #0000001f}.gpu-table-wrap{background:#fff;border:1px solid #e0e0e0;border-radius:8px;overflow-x:auto}.gpu-table{border-collapse:collapse;table-layout:auto;width:100%;min-width:690px;font-size:12px}.gpu-table th{color:#616161;letter-spacing:.02em;text-align:center;white-space:nowrap;background:#f5f5f5;border-bottom:1px solid #d6d6d6;height:36px;padding:0 10px;font-size:10px;font-weight:600}.gpu-table td{color:#323130;vertical-align:middle;white-space:nowrap;border-bottom:1px solid #ededed;height:42px;padding:5px 10px}.gpu-table tbody tr:last-child td{border-bottom:0}.gpu-table tbody tr:hover{background:#fafafa}.gpu-selectable-row{cursor:pointer;outline:none}.gpu-selectable-row:hover{background:#f5f9fc!important}.gpu-selectable-row:focus-visible{box-shadow:inset 0 0 0 2px #0f6cbd}.gpu-selectable-row[aria-selected=true]{background:#edf6fc}.gpu-table code{color:#424242;background:#f0f0f0;border-radius:3px;padding:2px 5px;font-family:Consolas,monospace;font-size:10px}.gpu-name-cell{min-width:190px;font-weight:600}.vram-cell{font-variant-numeric:tabular-nums}.table-meter{align-items:center;gap:7px;min-width:98px;display:flex}.table-meter-track{background:#e5e5e5;border-radius:3px;flex:none;width:58px;height:5px;overflow:hidden}.table-meter-track>span{border-radius:inherit;background:#0f6cbd;height:100%;display:block}.table-meter strong{font-variant-numeric:tabular-nums;text-align:right;min-width:28px;font-size:11px;font-weight:600}.gpu-list{gap:12px;display:grid}.gpu-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:18px;box-shadow:0 1px 2px #0000000a}.gpu-selectable-card{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer}.gpu-selectable-card:hover{background:#f8fbfe;border-color:#b6d6ef}.gpu-selectable-card:focus-visible{outline-offset:2px;outline:2px solid #0f6cbd}.gpu-selectable-card.selected{background:#edf6fc;border-color:#75b5e7;box-shadow:0 0 0 1px #75b5e7}.gpu-card-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.gpu-card h4{margin:7px 0 0;font-size:14px;font-weight:600}.gpu-index{color:#707070;align-items:center;gap:7px;font-size:11px;display:flex}.gpu-index code{color:#424242;background:#f0f0f0;border-radius:4px;padding:2px 6px;font-family:Consolas,monospace}.gpu-chip{color:#0f548c;background:#eaf3fa;border-radius:12px;flex:none;padding:4px 8px;font-size:11px;font-weight:600}.gpu-metrics{grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;display:grid}.gpu-metrics .usage-tile{padding:13px}.gpu-metrics .usage-heading strong{font-size:15px}.gpu-empty{color:#707070;text-align:center;background:#fafafa;border:1px dashed #d1d1d1;border-radius:8px;padding:26px;font-size:13px}.gpu-process-panel{background:#fff;border:1px solid #d6e4ef;border-radius:8px;margin-top:18px;overflow:hidden}.gpu-process-header{background:#f8fbfe;border-bottom:1px solid #e5e5e5;justify-content:space-between;align-items:center;gap:16px;min-height:66px;padding:13px 15px;display:flex}.gpu-process-header h4{margin:0 0 5px;font-size:14px;font-weight:600}.gpu-process-header span{color:#616161;font-size:11px}.gpu-process-header code{color:#0f548c;background:#e8f1f8;border-radius:3px;padding:2px 5px;font-family:Consolas,monospace}.gpu-process-state{color:#616161;justify-content:center;align-items:center;gap:10px;min-height:120px;font-size:13px;display:flex}.gpu-process-state .spinner{width:17px;height:17px}.gpu-process-error{color:#a4262c;background:#fdf3f4;border:1px solid #f1bbbc;border-radius:6px;margin:14px;padding:13px 15px;font-size:12px}.gpu-process-empty{color:#707070;text-align:center;padding:26px 16px;font-size:13px}.gpu-process-table-wrap{overflow-x:auto}.gpu-process-table{border-collapse:collapse;table-layout:auto;width:100%;min-width:650px;font-size:12px}.gpu-process-table th{color:#616161;text-align:left;white-space:nowrap;background:#fafafa;border-bottom:1px solid #e0e0e0;height:34px;padding:0 12px;font-size:10px;font-weight:600}.gpu-process-table td{color:#323130;white-space:nowrap;border-bottom:1px solid #ededed;max-width:360px;height:40px;padding:6px 12px}.gpu-process-table tbody tr:last-child td{border-bottom:0}.gpu-process-table tbody tr:hover{background:#fafafa}.gpu-process-table code{color:#424242;font-family:Consolas,monospace;font-size:11px}.gpu-process-command{text-overflow:ellipsis;display:block;overflow:hidden}.gpu-process-note{color:#707070;background:#fafafa;border-top:1px solid #ededed;margin:0;padding:9px 12px;font-size:10px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.35}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes fade-in{0%{opacity:0}}@keyframes drawer-in{0%{opacity:.7;transform:translate(36px)}}@media (width<=1000px){.host-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=680px){.app-bar{height:58px;padding:0 16px}.last-updated{display:none}.app-actions{gap:8px}.content{width:calc(100% - 32px);padding:24px 0 40px}.host-grid{grid-template-columns:1fr;gap:16px}.host-card{padding:20px}.details-drawer{width:100%}.drawer-header{padding:16px 18px}.drawer-content{padding:22px 18px 32px}.drawer-footer{padding:13px 18px}.usage-grid,.gpu-metrics{grid-template-columns:1fr}.gpu-section-heading{align-items:flex-start}.gpu-heading-actions{flex-direction:column;align-items:flex-end;gap:7px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
