:root{font-family:"Aptos","Segoe UI","Helvetica Neue",Arial,sans-serif;color:#253e36;background:#f5f6f2;font-size:15px;font-synthesis:none;--ink:#253e36;--muted:#708078;--line:#e0e6dd;--green:#355d48}
*{box-sizing:border-box}
body{margin:0}
button,input,select{font:inherit}
a{color:inherit}
button{cursor:pointer;min-height:42px;border-radius:8px;padding:10px 16px;border:1px solid var(--line);background:white;color:var(--ink);transition:background .15s,border-color .15s}
button:hover:not(:disabled){background:#eaf0e7;border-color:#a9bca7}
button:disabled{opacity:.42;cursor:not-allowed}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #91b58a;outline-offset:4px}
input:focus,select:focus{outline:2px solid #91b58a;outline-offset:2px}
[hidden]{display:none!important}
.topbar{height:88px;padding:0 max(28px,4vw);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#fafbf8;gap:20px}
.brand{display:inline-flex;gap:12px;align-items:center;text-decoration:none;font-size:24px;font-weight:700;letter-spacing:-1px;white-space:nowrap}
.brand-symbol{font-size:37px;line-height:1;color:#6d8d60;font-weight:400}
.brand-light{font-weight:400;color:#73856e}
nav{display:flex;gap:12px;align-items:center}
.quiet{background:transparent;border-color:transparent;color:#67776a;font-size:13px}
.account{display:flex;align-items:center;gap:8px;border-left:1px solid var(--line);padding-left:18px;font-size:13px}
.account-dot{width:6px;height:6px;border-radius:50%;background:#809c74;display:inline-block;flex-shrink:0}
main{max-width:1512px;margin:auto;padding:0 40px}
#notice{margin:20px 0 0;padding:14px 18px;border:1px solid #d9ddbc;background:#f4f4e3;color:#58613e;border-radius:10px;overflow-wrap:anywhere;line-height:1.6}
#notice:empty{display:none}
.login-layout{display:grid;grid-template-columns:1.15fr 1fr;align-items:center;min-height:calc(100vh - 88px);max-width:1190px;margin:auto;gap:80px;padding:48px 0}
.login-story{position:relative;padding:12px 0 0}
.login-story h1{font-family:Georgia,"Palatino Linotype",serif;font-size:clamp(58px,5.8vw,84px);font-weight:400;letter-spacing:-4px;line-height:1.03;margin:24px 0}
.login-card{background:#fff;border:1px solid #e2e8dc;border-radius:18px;box-shadow:0 18px 60px #283b2410;padding:46px 44px}
.login-card h2{font-family:Georgia,"Palatino Linotype",serif;font-weight:400;font-size:37px;letter-spacing:-1px;margin:0 0 30px}
label{display:grid;gap:9px;font-size:12px;font-weight:600;margin:20px 0 9px}
input,select{width:100%;min-height:48px;padding:12px 14px;border:1px solid #dce3d8;border-radius:8px;color:var(--ink);background:#fcfdfb;line-height:1.5}
input::placeholder{color:#98a196;font-size:13px}
.password-field{position:relative}
.password-field input{padding-right:50px}
#toggle-password{position:absolute;right:4px;top:3px;width:42px;height:42px;padding:10px;border:0;background:transparent;color:#788972}
#toggle-password svg{width:21px;height:21px;display:block}
#toggle-password .eye-closed{display:none}
#toggle-password[aria-pressed="true"] .eye-open{display:none}
#toggle-password[aria-pressed="true"] .eye-closed{display:block}
.primary{background:var(--green);color:white;border-color:var(--green);font-size:13px;font-weight:600}
.primary:hover:not(:disabled){background:#264b39;color:white;border-color:#264b39}
.login-submit{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:28px;min-height:49px;padding:12px 18px}
.login-submit span:last-child{font-size:20px;font-weight:400}
.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:38px 0 30px}
.page-heading h1{font-family:Georgia,"Palatino Linotype",serif;font-weight:400;font-size:37px;letter-spacing:-1px;margin:10px 0}
.connection{display:flex;align-items:center;gap:10px;flex-shrink:0}
.status-pill{display:inline-flex;align-items:center;gap:8px;font-size:12px;padding:9px 13px;border-radius:24px;background:#eeeee8;color:#7c8171;white-space:nowrap}
.status-pill:before{content:"";width:6px;height:6px;background:currentColor;border-radius:50%}
.status-pill[data-online="true"]{color:#497347;background:#e8f0e2}
.workspace-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;align-items:start}
.panel{padding:25px;border:1px solid var(--line);border-radius:12px;background:#fff;min-width:0}
.instrument-panel{padding:23px 18px;background:#f9faf6}
.section-heading{margin-bottom:24px;display:flex;justify-content:space-between;align-items:center;gap:12px}
.section-heading h2{font-size:16px;font-weight:600;margin:0;letter-spacing:-.3px}
.devices{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 14px;scrollbar-width:thin;scrollbar-color:#b2c2a7 transparent;touch-action:pan-x;cursor:grab;user-select:none}
.device-card{border:1px solid #e0e6db;border-radius:9px;padding:16px;background:white;overflow-wrap:anywhere;position:relative;flex:0 0 205px;text-align:left;cursor:grab}
.device-card[aria-pressed="true"]{border-color:#739668;background:#edf3e6;box-shadow:inset 0 0 0 1px #739668}
.devices>.muted{flex:0 0 185px;margin:0;padding:14px;align-self:center}
.rail-navigation{display:flex;gap:5px}
.rail-navigation button{width:34px;min-height:30px;padding:3px;font-size:16px;background:transparent}
.active-device{font-size:13px;color:#63785b}
.device-card strong{display:block;font-size:13px;font-weight:600;padding-right:10px}
.device-card:after{content:"";position:absolute;right:12px;top:19px;width:5px;height:5px;border-radius:50%;background:#bdc4b7}
.device-card[data-available="true"]:after{background:#649354}
.device-card small{display:block;font-size:11px;line-height:1.8;color:#718067;margin-top:7px}
.muted{color:#87917e;font-size:11px;line-height:1.8}
.columns{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1fr);gap:22px;align-items:stretch}
.command-panel label:first-child{margin-top:0}
.device-note{border-left:2px solid #c7d6b9;padding-left:12px;font-size:11px;line-height:1.8;color:#7d8874;margin:18px 0}



summary{cursor:pointer;font-size:12px;color:#76856c;line-height:1.7}
pre{font-family:Consolas,"Cascadia Code",monospace;white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;line-height:1.75;background:#f5f7f1;padding:14px;border-radius:7px;max-height:280px;overflow:auto}
.check{display:flex;align-items:flex-start;gap:10px;font-size:11px;color:#7d8874;line-height:1.65;font-weight:400;margin:18px 0}
.check input{width:16px;height:16px;min-height:16px;margin:2px 0;flex-shrink:0;accent-color:var(--green)}

.release{display:block;margin:12px auto -8px;font-size:11px}
.results{font-size:13px;color:#718067;line-height:1.8;overflow-wrap:anywhere}
.results[data-empty="true"]{border:1px dashed #dbe3d2;border-radius:9px;background:#fafbf7;text-align:center;padding:50px 22px;margin-top:24px;color:#99a38f}
.results[data-empty="true"]:before{content:"";display:block;width:30px;height:25px;border:1px solid #bdcdb0;border-radius:5px;margin:0 auto 16px;background:linear-gradient(transparent 48%,#d9e2cf 49%,#d9e2cf 52%,transparent 53%)}
.reading{margin-top:20px;border-bottom:1px solid #edf0e8;padding-bottom:8px}
.reading strong{font-size:12px;font-weight:600;color:var(--ink)}
.reading small{display:block;font-size:10px;color:#95a087;margin-top:5px}
.history-panel{margin-top:22px}
.history-panel .results[data-empty="true"]{padding:24px}
.history-panel .results[data-empty="true"]:before{display:none}
.job{padding:16px 0;border-bottom:1px solid #edf0e8}
.job summary{color:#50674a;font-size:12px}
.job a{display:inline-block;margin:8px 0;font-size:12px}
@media(min-width:1600px){.login-layout{gap:125px}}
@media(max-width:1100px){main{padding:0 25px}.login-layout{gap:40px}.login-card{padding:35px 30px}.workspace-layout{gap:16px}.columns{grid-template-columns:1fr}.readings-panel{min-height:230px}.instrument-panel{padding:22px 16px}.page-heading{align-items:flex-start}.connection{flex-direction:column;align-items:flex-end}.panel{padding:22px}}
@media(max-width:760px){.topbar{height:72px;padding:0 20px}.brand{font-size:20px}.brand-symbol{font-size:30px}main{padding:0 20px}.login-layout{display:block;min-height:0;padding:32px 0}.login-story{padding:0}.login-story h1{font-size:50px;letter-spacing:-2px;margin:14px 0}.login-story h1 br{display:none}.login-story h1 br:after{content:" "}.optics{display:none}.login-card{margin-top:28px;padding:30px 25px}.login-card h2{font-size:32px}.workspace-layout{grid-template-columns:1fr}.page-heading{padding:28px 0 24px;display:block}.page-heading h1{font-size:31px}.connection{flex-direction:row;align-items:center;justify-content:space-between;margin-top:16px}.columns{gap:16px}.history-panel{margin-top:16px}.account{padding-left:10px}nav{gap:2px}nav .quiet{padding:8px;font-size:11px}#user{max-width:90px;overflow:hidden;text-overflow:ellipsis}}
@media(max-width:420px){.topbar{height:auto;min-height:72px;flex-wrap:wrap;gap:8px;padding:14px 20px}nav{margin-left:auto}.history-panel .section-heading{align-items:flex-start;flex-direction:column}.login-story h1{font-size:43px}}
@media(prefers-reduced-motion:reduce){button{transition:none}}
.optics{display:block;width:100%;max-width:500px;height:auto;margin:40px 0 0 -12px}
#workspace{padding-bottom:40px;display:grid;grid-template-columns:175px minmax(0,1fr);gap:30px}
.workspace-content{min-width:0}
.workspace-nav{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:36px 0;position:sticky;top:0;align-self:start}
.workspace-nav button{display:flex;align-items:center;gap:12px;text-align:left;border-color:transparent;background:transparent;font-size:14px;padding:13px 15px;color:#73816b}
.workspace-nav button[aria-pressed="true"]{color:#355d48;background:#e7eddf;font-weight:600}
.workspace-nav svg{width:18px;height:18px;stroke:currentColor;stroke-width:1.5;fill:none;flex-shrink:0}
.blank-panel{min-height:420px}
.ticket-layout{display:grid;grid-template-columns:1fr 1fr;gap:22px}
textarea{font:inherit;width:100%;padding:12px 14px;border:1px solid #dce3d8;border-radius:8px;color:var(--ink);background:#fcfdfb;resize:vertical;line-height:1.7}
textarea:focus{outline:2px solid #91b58a;outline-offset:2px}
#ticket-submit{margin-top:20px}
#ticket-status{font-size:13px;line-height:1.7;color:#587148}
.ticket{padding:16px 0;border-bottom:1px solid var(--line)}
.ticket h3{font-size:14px;margin:0 0 8px;overflow-wrap:anywhere}
.ticket small{font-size:11px;color:#7d8874}
.ticket p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.8;color:#66775d}
@media(max-width:1100px){.ticket-layout{grid-template-columns:1fr}}
@media(max-width:1100px){#workspace{grid-template-columns:150px minmax(0,1fr);gap:20px}}
@media(max-width:760px){#workspace{display:block}.workspace-nav{position:static;flex-direction:row;padding:20px 0 0;gap:5px;overflow-x:auto}.workspace-nav button{flex-shrink:0;padding:10px;font-size:12px;gap:7px}.workspace-nav svg{width:16px;height:16px}}
.control-group{margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}
.control-group h3{font-size:14px;font-weight:600;margin:0 0 16px}
.control-rows{display:grid;gap:16px}
.operation-row{display:flex;align-items:flex-end;gap:12px;min-width:0}
.operation-row>label,.operation-fields{flex:1;min-width:0}
.operation-row label{margin:0;min-width:0}
.operation-fields{display:flex;gap:10px}
.operation-fields>label{flex:1}
.operation-row button{flex-shrink:0;font-size:12px;min-height:46px}
.operation-row select,.operation-row input{font-size:13px}
.operation-row[data-unavailable="true"] label{color:#a0a69b}
input:disabled,select:disabled{background:#f1f3ee;color:#a0a69b;cursor:not-allowed;border-color:#e5e8e1;opacity:1}
.connection-actions{display:flex;flex-wrap:wrap;gap:8px}
.connection-actions button{min-height:39px;padding:8px 12px}
.group-confirm{margin-bottom:0}
.device-help{margin-top:24px;border-top:1px solid var(--line);padding-top:16px}
.operation-feedback{margin-top:22px;border-left:3px solid #8b9e7e;background:#f3f5ef;padding:14px 16px;border-radius:4px}
.operation-feedback strong,.operation-feedback small{display:block;line-height:1.7}
.operation-feedback strong{font-size:13px}.operation-feedback small{font-size:11px;color:#75816d}
.operation-feedback pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:280px;overflow:auto;font-size:12px;line-height:1.65}
.operation-feedback[data-state="failed"],.operation-feedback[data-state="unknown"],.operation-feedback[data-state="rejected"]{border-color:#b87964;background:#faf1eb}
.photo-heading{margin-top:30px;padding-top:24px;border-top:1px solid var(--line)}
.photo-gallery{display:grid;gap:20px}.photo-gallery figure{margin:0;min-width:0}
.photo-gallery img{display:block;width:100%;max-height:420px;object-fit:contain;background:#18201b;border-radius:8px}
.photo-gallery figcaption{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:10px;font-size:12px}
.photo-gallery small{color:#75816d}.photo-gallery a{color:#355d48}.photo-gallery p{font-size:12px;color:#99654f}
.photo-gallery figure{padding:16px;border:1px solid var(--line);border-radius:12px}
.photo-gallery figcaption{padding:0 0 14px}.photo-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.photo-pair h3{font-size:12px;font-weight:500;margin:0 0 8px}.photo-controls{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin:16px 0 10px}
.photo-controls label{display:grid;gap:5px;font-size:12px}.photo-controls input{width:100px;padding:8px}
.photo-controls button{padding:9px 12px}.photo-controls a{font-size:12px;padding:9px 0}
.photo-gallery small{display:block;margin-top:6px}
@media(max-width:700px){.photo-pair{grid-template-columns:1fr}}
@media(max-width:480px){.operation-row{flex-wrap:wrap}.operation-row>label,.operation-fields{flex-basis:100%}.operation-row>button{width:100%}.connection-actions .operation-row>button{width:auto}}
@media(max-width:760px){.optics{width:220px;margin:22px 0 0;max-height:105px}.login-story{display:flex;flex-wrap:wrap;align-items:center;column-gap:20px}.login-story h1{flex:1;min-width:250px}}
