*{box-sizing:border-box}:root{font-family:"Segoe UI","Microsoft YaHei",sans-serif;color:#243445;background:#eef1f4;font-size:14px}body{margin:0;height:100dvh;display:flex;flex-direction:column}button,input,textarea{font:inherit}button{min-height:38px;padding:7px 13px;border:1px solid #c5ced6;border-radius:6px;background:#fff;color:#304759;cursor:pointer;white-space:nowrap}button:hover:not(:disabled){border-color:#207495;background:#edf7fa}button:disabled{color:#89939d;background:#edf0f2;cursor:not-allowed}button.primary{background:#186784;color:#fff;border-color:#186784}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #78bbd4;outline-offset:2px}.topbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:20px;padding:12px 20px;background:#fff;border-bottom:1px solid #ccd5de;flex-shrink:0}.brand{display:flex;align-items:center;gap:10px;min-width:180px}.brand img{width:36px;height:36px;object-fit:contain}.brand b{font-size:21px}.brand small{display:block;color:#697988;font-size:12px}.target{display:flex;gap:10px;align-items:center;flex:1}.target strong{font-size:16px}.badge{font-size:12px;padding:5px 9px;border-radius:4px;background:#e8edf1;color:#647585}.badge.ready{background:#e0f0e8;color:#27644b}.badge.waiting{background:#fff0d7;color:#926017}.badge.offline{background:#e8ebef;color:#69717d}nav{display:flex;gap:6px;flex-wrap:wrap}.account{display:flex;gap:12px;align-items:center;padding:8px 20px;background:#f7f9fa;border-bottom:1px solid #d6dde3;flex-shrink:0}#login{display:flex;gap:10px;align-items:center}input:not([type=checkbox]),textarea{border:1px solid #bcc8d1;border-radius:5px;padding:8px;background:#fff;min-width:0}#login input{width:145px}input[type=checkbox]{width:17px;height:17px;vertical-align:middle;accent-color:#186784}#status{font-size:13px;color:#607585}.layout{display:grid;grid-template-columns:188px minmax(0,1fr) 265px;gap:12px;padding:12px;flex:1;min-height:0}.layout.hide-side{grid-template-columns:188px minmax(0,1fr)}.stations,.workspace,.sidepanel{background:#fff;border:1px solid #d4dce3;border-radius:8px;min-width:0;overflow:auto}.stations{padding:12px}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}h2{font-size:14px;margin:0 0 12px}.section-title h2{margin:0}.section-title span{color:#7a8b98}#devices{display:grid;gap:7px}.device{text-align:left;width:100%;padding:10px;min-height:65px;white-space:normal}.device strong{display:block}.device small{display:block;margin-top:5px;color:#75818a}.device.selected{background:#edf6f9;border-color:#277997;box-shadow:inset 3px 0 #277997}.device .ready{color:#327958}.workspace{display:flex;flex-direction:column;overflow:hidden}.channelbar{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:9px 12px;border-bottom:1px solid #d5dde4;flex-wrap:wrap}.channelbar [role=tablist]{display:flex;gap:5px}.channelbar [aria-selected=true]{color:#176580;background:#e6f2f7;border-color:#5b98af}#screen{position:relative;flex:1;min-height:360px;background:#e5eaee;overflow:auto;display:flex;align-items:center;justify-content:center}#desktop{display:block;width:100%;height:100%;position:absolute;inset:0;object-fit:contain;user-select:none}#empty{color:#71808c;text-align:center;padding:25px}#notice{margin:0;padding:9px 13px;color:#365467;background:#f5f8fa;border-top:1px solid #d9e1e6;min-height:39px;font-size:13px}#console-panel{padding:10px 12px;border-top:1px solid #d7e0e6}.input-row{display:flex;gap:5px;flex-wrap:wrap;margin:6px 0}.input-row input{flex:1}.sidepanel>section{padding:14px;border-bottom:1px solid #e1e5e9}.sidepanel p,.sidepanel small,#console-panel small{color:#70808d;font-size:12px;line-height:1.7}.sidepanel small{display:block;margin-top:7px}.sidepanel button{margin-bottom:5px}textarea{width:100%;height:115px;resize:vertical}#activity{list-style:none;margin:0;padding:0;font-size:12px;color:#647687}#activity li{border-bottom:1px solid #edf0f2;padding:7px 0;overflow-wrap:anywhere}[hidden]{display:none!important}:fullscreen .account{display:none}:fullscreen .layout{padding:5px}:fullscreen #screen{min-height:0}body:fullscreen{height:100dvh}@media(max-width:1200px){.topbar{flex-wrap:wrap;gap:8px}.brand{min-width:140px}.layout{grid-template-columns:160px minmax(0,1fr) 225px}.layout.hide-side{grid-template-columns:160px minmax(0,1fr)}}@media(max-width:850px){body{height:auto;min-height:100dvh}.layout,.layout.hide-side{grid-template-columns:135px minmax(0,1fr)}.sidepanel{grid-column:1/-1}.account,#login{flex-wrap:wrap}.topbar{position:sticky}#screen{min-height:480px}.channelbar{gap:5px}nav{width:100%}button{min-height:40px}}#log-results{overflow-wrap:anywhere;font-size:12px}.activity label{display:block;margin:8px 0}.activity label input,.activity label select{width:100%;margin-top:3px;min-height:34px}.account{flex-wrap:wrap}#latency{color:#365467}

#screen.original-size{display:block}#screen.original-size #desktop{position:relative;inset:auto;width:auto;height:auto;max-width:none;max-height:none;object-fit:none}
#file-list{max-height:240px;overflow:auto}#file-list button{display:block;width:100%;text-align:left;white-space:normal;overflow-wrap:anywhere}#file-root{width:100%;min-height:36px}#file-path{overflow-wrap:anywhere}

/* A disabled primary action must not look available. */
button.primary:disabled{color:#697681;background:#e5e9ed;border-color:#c5ced6;cursor:not-allowed;box-shadow:none}
.connection-guide{display:flex;align-items:center;gap:10px;padding:10px 20px;background:#eef6fa;border-bottom:1px solid #cbdde7;flex-shrink:0;flex-wrap:wrap}
.connection-guide strong{color:#244d64;white-space:nowrap}
#connection-help{flex:1;min-width:180px;line-height:1.6;color:#365467}
.connection-guide[data-state=offline],.connection-guide[data-state=waiting]{background:#fff7e9;border-color:#ead3a7}
@media(max-width:850px){.connection-guide{padding:10px 12px;gap:6px}#connection-help{flex-basis:100%;order:3}}

/* Keep the primary label readable while the pointer rests on it. */
button.primary:hover:not(:disabled){color:#fff;background:#145974;border-color:#145974}

/* Fullscreen prioritizes the remote desktop; panels remain available after exiting. */
:fullscreen .stations,:fullscreen .sidepanel,:fullscreen .connection-guide{display:none}
:fullscreen .layout,:fullscreen .layout.hide-side{grid-template-columns:minmax(0,1fr);gap:0}
:fullscreen .topbar{padding:6px 10px;gap:8px}
:fullscreen .brand small{display:none}
:fullscreen .workspace{min-height:0}
@media(max-width:850px){body:fullscreen{height:100dvh;min-height:0}:fullscreen .layout{min-height:0}:fullscreen .channelbar{padding:5px 8px}:fullscreen .channelbar [role=tablist]{flex-wrap:wrap}}

/* Keep the remote text field usable in a narrow browser panel. */
@media(max-width:850px){#console-panel .input-row input{flex-basis:100%;width:100%}}

#clipboard-panel{padding:10px 12px;border-top:1px solid #d7e0e6}#clipboard-panel h2{margin-bottom:6px}#clipboard-panel textarea{height:80px}#clipboard-panel small{color:#70808d;font-size:12px;line-height:1.7}
:root{--safety-warning:#9d4310}
.safety-tools{display:flex;gap:8px;flex-wrap:wrap;padding:8px}.focus-view.layout{grid-template-columns:minmax(0,1fr)}.focus-view>.stations,.focus-view>.sidepanel{display:none}
#dashboard,#management{padding:16px;border:1px solid #bdcbd8;border-radius:8px;background:#f7fafc;color:#172d41}#dashboard pre,#management pre,dialog pre{white-space:pre-wrap;word-break:break-word;max-height:40vh;overflow:auto}#management textarea{display:block;width:100%;min-height:100px}dialog{max-width:min(720px,90vw);max-height:85vh;overflow:auto;border:2px solid var(--safety-warning);border-radius:10px;padding:24px}dialog::backdrop{background:#0008}dialog button{margin:6px}#dashboard article{border-bottom:1px solid #ccd7df}#management label{display:block;margin:10px 0}
@media(max-width:600px){.layout{grid-template-columns:minmax(0,1fr)}.layout>.stations{display:none}.channelbar{flex-wrap:wrap}.safety-tools{padding:4px}.workspace{min-width:0}}
@media(max-width:600px){.layout>.stations.open-stations{display:block;position:fixed;z-index:20;left:8px;top:70px;bottom:16px;width:210px;overflow:auto;background:#f7fafc;box-shadow:0 2px 30px #0006}.layout>.sidepanel{grid-column:1}}

.site-filing{flex-shrink:0;text-align:center;padding:6px 12px;background:#fff;border-top:1px solid #ccd5de;color:#536575;font-size:12px}.site-filing a{color:#315f78;text-underline-offset:2px}
