*{box-sizing:border-box} :root{font-family:Segoe UI,Arial,sans-serif;color:#173d40;background:#eef4f3;font-size:15px;--teal:#087f80;--line:#d8e4e2}body{margin:0;height:100dvh;display:flex;flex-direction:column;overflow:hidden}[hidden]{display:none!important}button,input,select,textarea{font:inherit}button{min-height:42px;border:1px solid var(--line);border-radius:9px;padding:9px 14px;background:white;color:#21484b;cursor:pointer;font-weight:600}button:hover{background:#e6f3f0;border-color:#8abeb7}button:disabled{opacity:.48;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #32acac;outline-offset:2px}.primary{background:var(--teal);border-color:var(--teal);color:white}.primary:hover{background:#086a6b}.danger{color:#ac4141;background:#fff5f3;border-color:#edceca}.topbar{height:76px;flex-shrink:0;display:flex;align-items:center;gap:24px;padding:0 24px;background:#103b40;color:#edf8f5;border-bottom:3px solid #2c9993}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;font-weight:750;font-size:21px;letter-spacing:2px}.brand small{display:block;font-size:9px;letter-spacing:2.8px;margin-top:4px;opacity:.65}.monogram{display:grid;place-items:center;width:38px;height:38px;border:2px solid #57bcb2;border-radius:11px;font-size:26px;color:#8ae3d2}.identity{display:flex;flex-direction:column;gap:5px;flex:1;min-width:0}.identity strong{font-size:16px}.identity span{font-size:12px;opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.connection{font-size:12px;color:#a6eed3}.connection.off{color:#ffc88a}.mode{border:1px solid #508284;border-radius:5px;font-size:11px;padding:5px 8px}.icon-button{background:transparent;border:1px solid #547b7c;color:white;font-size:24px;padding:0;width:42px}.preview{background:#fff0cd;color:#7c5508;font-size:12px;letter-spacing:.4px;padding:9px 24px;text-align:center}.notice{padding:9px 20px;background:#fff3dc;color:#6d5020;flex-shrink:0;font-size:13px}main{display:grid;grid-template-columns:minmax(0,1fr) 400px;flex:1;min-height:0;gap:1px;background:var(--line)}.map-area{min-width:0;display:flex;flex-direction:column;background:#e5eeeb;position:relative}.map-toolbar{height:62px;padding:10px 14px;display:flex;align-items:center;gap:10px;background:#f8fbfa;border-bottom:1px solid var(--line)}.map-toolbar button{font-size:12px;padding:8px 11px;min-height:36px}.segmented{display:flex;gap:3px;flex:1}.segmented button{background:transparent;border-color:transparent}.segmented .active{background:#dbeee8;border-color:#c0dcd4;color:#11655d}#panel-toggle{display:none}.map-viewport{position:relative;flex:1;min-height:0;overflow:hidden}iframe{width:100%;height:100%;border:0;background:#d3e7e4}.map-loading{position:absolute;inset:0;display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;background:#e6efed;color:#345e60}.map-loading p{font-size:13px}.spinner{height:30px;width:30px;border:3px solid #c3dbd6;border-top-color:var(--teal);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.map-footer{padding:8px 14px;display:flex;align-items:center;gap:12px;font-size:11px;background:#f8fbfa;border-top:1px solid var(--line);min-height:34px}#freshness{margin-left:auto;color:#687f80}#performance{color:#086b65}.panel{background:#fbfdfc;display:flex;flex-direction:column;min-height:0;box-shadow:-4px 0 16px #193c4310}.panel-title{display:flex;align-items:center;justify-content:space-between;padding:23px 24px 16px}.eyebrow{font-size:10px;letter-spacing:1.5px;font-weight:700;color:#668983}h1{font-size:25px;margin:6px 0}h2{font-size:20px;line-height:1.4;margin:8px 0 14px}h3{font-size:16px;line-height:1.5;margin:6px 0}.count{min-width:29px;min-height:29px;background:#e2efeb;color:#1d7265;border-radius:9px;display:grid;place-items:center;font-size:13px;font-weight:700}#tabs{display:flex;flex-wrap:wrap;gap:5px;padding:0 16px 14px;border-bottom:1px solid var(--line)}#tabs button{font-size:12px;padding:7px 10px;min-height:34px;background:transparent;border-color:transparent}#tabs .active{background:#dceee9;color:#096a61;border-color:#cae2db}#tabs b{font-size:11px;margin-left:3px}#panel-content{overflow-y:auto;flex:1;min-height:0;padding:18px;scrollbar-width:thin}.task-card,.record,.settings-card{border:1px solid var(--line);border-radius:12px;padding:16px;background:white;margin-bottom:12px}.task-card.selected{border-color:#75b3a8;box-shadow:0 3px 15px #1f7b6510}.task-head{display:flex;align-items:center;gap:8px;justify-content:space-between;font-size:10px;letter-spacing:.6px;color:#6a8582}.state{border-radius:5px;padding:4px 7px;background:#eff3f1;color:#61716c;font-size:10px;letter-spacing:.3px}.state.running{background:#d9efea;color:#1b7164}.state.failed{color:#ab4747;background:#fce5e5}.state.completed{color:#27795b;background:#e3f3e9}.description{font-size:14px;color:#536d6c;white-space:pre-wrap;line-height:1.65;margin:10px 0 16px}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.actions button{flex:1}.task-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.task-actions .start,.task-actions .feedback{grid-column:1/-1}.feedback{font-weight:500}.task-title-button{border:0;padding:0;min-height:0;text-align:left;display:block;background:transparent;width:100%}.task-title-button:hover{background:none}p{line-height:1.6}.muted,.empty{font-size:13px;color:#6b8380;line-height:1.8}.empty{padding:26px 18px;text-align:center}.operation-label{font-size:11px;color:#81908b;margin:14px 0 6px}.bubble{background:#eef5f1;border:1px solid #dae9e1;border-radius:12px 12px 12px 3px;padding:13px 15px;margin:0 0 12px;overflow-wrap:anywhere}.bubble h3{font-size:12px;color:#26776a}.bubble p{white-space:pre-wrap;margin:6px 0;font-size:14px}.bubble button{font-size:12px;background:transparent;min-height:30px;padding:3px 8px}#pending-bar{background:#fff1d9;padding:10px 18px;font-size:12px}#pending-bar p{margin:2px}.setup{width:min(560px,92vw);margin:7vh auto;background:#fff;padding:35px;border:1px solid var(--line);border-radius:18px;box-shadow:0 12px 40px #29464110;overflow:auto}.setup h1{font-size:32px}.setup p{color:#627c79}label{display:block;font-size:13px;font-weight:600;margin:12px 0 7px}input,textarea,select{display:block;width:100%;min-height:44px;padding:10px 12px;border:1px solid #bdd3cc;border-radius:8px;background:#fff;color:#254c4b}textarea{resize:vertical}dialog{width:min(600px,94vw);max-height:88dvh;padding:26px;border:1px solid #d2e2dc;border-radius:16px;color:#234947;box-shadow:0 15px 70px #062b3540;overflow:auto}dialog::backdrop{background:#102f4266;backdrop-filter:blur(3px)}#form-error,#compose-error{color:#a33d30;font-size:13px}.chosen-location{font-size:19px;background:#e2f2ea;padding:14px;border-radius:9px;margin-top:10px}.search-results{max-height:210px;overflow:auto}.search-results button{display:block;width:100%;text-align:left;margin:5px 0;font-size:13px}.argument{border-top:1px solid var(--line);margin:14px 0;padding-top:2px}.readonly{padding:12px;background:#eef4f2;border-radius:8px;white-space:pre-wrap}.team-person{font-size:13px;margin:6px 0;color:#57716b}.settings-card button{width:100%;margin-top:8px}.settings-card select{margin-top:8px}#plan{position:absolute;inset:0;background:#f2f7f3;display:flex;flex-direction:column}.plan-controls{display:flex;gap:9px;padding:10px;align-items:center}.plan-controls select{width:250px}.plan-controls span{font-size:11px;color:#6b817b}#floor-map{flex:1;width:100%;min-height:0;touch-action:none;cursor:grab}.map-only{grid-template-columns:1fr!important}.map-only .panel{display:none}
@media(max-width:1100px){main{grid-template-columns:minmax(0,1fr) 355px}.topbar{padding:0 15px;gap:15px}.brand{font-size:18px}.identity strong{font-size:14px}.map-footer{flex-wrap:wrap}.map-toolbar{gap:4px;padding:8px}#measure{font-size:11px}}

#mobile-switch{display:none}#panel-toggle{display:none!important}#location-status{font-size:10px;color:#466f68;max-width:35%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#location-status:empty{display:none}
#tabs{flex-wrap:nowrap;overflow-x:auto;flex-shrink:0;padding:0 12px 8px;scrollbar-width:thin;overscroll-behavior-x:contain}#tabs button{flex-shrink:0;white-space:nowrap;min-height:42px}.panel-title{padding:16px 18px 10px}
@media(max-width:900px) and (min-height:521px){
 main{display:flex;flex-direction:column;overflow:hidden}.map-area{height:40%;min-height:180px;flex-shrink:0}.panel{flex:1;min-height:0;overflow:hidden}#panel-content{overflow:auto}.map-footer{min-height:25px;padding:4px 10px}.map-footer #freshness{display:none}.map-toolbar{height:48px}.plan-controls span{display:none}
}
@media(max-width:620px),(max-width:1100px) and (max-height:520px){
 body{height:100dvh;overflow:hidden;padding-bottom:env(safe-area-inset-bottom)}
 .topbar{height:50px;padding:0 10px;padding-top:env(safe-area-inset-top);gap:8px}.brand{font-size:12px;letter-spacing:1px}.brand small{display:none}.monogram{width:26px;height:26px;font-size:19px}.identity strong{font-size:12px}.identity span{font-size:10px}.connection{font-size:10px;white-space:nowrap}.mode{display:none}.icon-button{min-height:34px;height:34px;width:34px;font-size:20px}.preview{font-size:10px;padding:4px 8px}.notice{padding:6px 10px;font-size:12px;max-height:20dvh;overflow:auto}
 main{display:flex;flex-direction:column;min-height:0;overflow:hidden}#mobile-switch{display:flex;gap:4px;padding:4px 8px;flex-shrink:0;background:#edf5f1;border-bottom:1px solid var(--line)}#mobile-switch button{flex:1;min-height:40px;font-size:12px;padding:7px}#mobile-switch .active{background:#d4eae3;border-color:#91beb0;color:#155b50}
 main:not(.mobile-map) .map-area{display:none}main.mobile-map .panel{display:none}.map-area,.panel{flex:1;min-height:0;height:auto;overflow:hidden}.map-toolbar{height:44px;min-height:44px;padding:4px 8px}.map-toolbar button{min-height:36px;font-size:11px}.map-footer{min-height:24px;padding:4px 8px;font-size:10px;flex-wrap:nowrap}#freshness,#measure{display:none!important}#location-status{max-width:60%}
 .panel-title{padding:8px 12px}.panel-title .eyebrow{display:none}h1{font-size:18px;margin:0}.count{min-height:24px;min-width:24px;font-size:11px}#tabs{padding:0 8px 5px;gap:2px}#tabs button{font-size:11px;padding:6px 8px;min-height:40px}#panel-content{overflow-y:auto;padding:10px;overscroll-behavior-y:contain}.task-card,.record,.settings-card{padding:12px}.description{font-size:13px;margin:8px 0 12px;line-height:1.5}.task-actions{gap:6px}.task-actions button{min-height:44px}.bubble{padding:10px 12px}.plan-controls{padding:5px;gap:5px}.plan-controls select{min-width:0;width:auto;flex:1;font-size:12px}.plan-controls span{display:none}.plan-controls button{font-size:11px;padding:6px}dialog{padding:16px;max-height:90dvh;width:96vw}.setup{margin:16px auto;padding:22px}.setup h1{font-size:25px}
}

@media(max-width:1100px) and (max-height:520px){
 .topbar{height:42px}.panel-title{display:none}#mobile-switch{padding:3px 8px}#mobile-switch button{min-height:38px;padding:5px}#tabs{padding-top:3px}#tabs button{min-height:38px}#panel-content{padding:8px 10px}.task-actions{grid-template-columns:repeat(4,minmax(0,1fr))}.task-actions .start,.task-actions .feedback{grid-column:auto}.description{margin:6px 0 9px}.task-card{padding:10px}.operation-label{margin:2px 0 5px}
}
.app-drawer{margin:0 auto 0 0;height:100dvh;max-height:100dvh;width:min(360px,92vw);border:0;border-radius:0 22px 22px 0;padding:20px;box-shadow:8px 0 35px #0003}.app-drawer header,.shell-dialog header{display:flex;justify-content:space-between;align-items:center;gap:16px}.app-drawer>button{display:block;width:100%;text-align:left;margin:8px 0;min-height:48px}.app-drawer>button:last-child{margin-top:28px}.shell-dialog{width:min(1000px,94vw);max-width:94vw;max-height:90dvh;padding:22px}.shell-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:24px;height:min(600px,65dvh)}.shell-layout nav{display:flex;flex-direction:column;gap:8px;overflow:auto}.shell-layout nav[hidden]{display:none}.shell-layout nav button{text-align:left;flex-shrink:0}.shell-content{overflow:auto;min-width:0;padding:6px}.shell-page>button{display:block;width:100%;text-align:left;margin:8px 0}.shell-page form{display:flex;gap:8px;flex-wrap:wrap}.shell-page form input,.shell-page form textarea{flex:1;min-width:120px}.shell-page [aria-pressed=true],.shell-layout .active{background:#d4eae3;border-color:#65a898}.chat-log{max-height:38dvh;overflow:auto}.chat-log p{white-space:pre-wrap;overflow-wrap:anywhere;padding:10px;border-radius:12px;background:#e6f0ed}
:root[data-theme=night]{--line:#435960;--ink:#e4efed;--muted:#aac0bc;color:#e4efed;background:#15252a}
[data-theme=night] body,[data-theme=night] .panel,[data-theme=night] dialog,[data-theme=night] .setup{background:#1d3036;color:#e4efed}
[data-theme=night] button,[data-theme=night] input,[data-theme=night] textarea,[data-theme=night] select{background:#293e45;color:#e4efed;border-color:#4c656c}
[data-theme=night] .topbar,[data-theme=night] .map-toolbar,[data-theme=night] .map-footer,[data-theme=night] #mobile-switch,[data-theme=night] .plan-controls{background:#20373e;color:#e4efed}
[data-theme=night] .settings-card,[data-theme=night] .task-card,[data-theme=night] .message,[data-theme=night] .chat-log p{background:#263e45;color:#e4efed;border-color:#435960}
[data-theme=night] #floor-map{background:#cadbd7}[data-theme=night] .muted,[data-theme=night] .eyebrow,[data-theme=night] .identity span{color:#aac0bc}
[data-theme=night] button.active,[data-theme=night] button[aria-pressed=true]{background:#28584f;color:#edfff9}
@media(max-width:650px){.shell-dialog{padding:14px}.shell-layout{display:flex;flex-direction:column;gap:12px;height:72dvh}.shell-layout nav{flex-direction:row;flex-shrink:0}.shell-content{flex:1}.shell-dialog header h2{font-size:19px}}
[data-theme=night] .record,[data-theme=night] .bubble,[data-theme=night] .readonly,[data-theme=night] .chosen-location{background:#263e45;color:#e4efed;border-color:#435960}
[data-theme=night] .description,[data-theme=night] .team-person,[data-theme=night] .empty,[data-theme=night] .operation-label,[data-theme=night] .setup p{color:#b8ceca}
[data-theme=night] .bubble h3,[data-theme=night] #performance{color:#8fdec5}
[data-theme=night] button.primary{background:#087f80;color:white}[data-theme=night] button.danger{background:#513237;color:#ffb9b9}
[data-theme=night] #pending-bar,[data-theme=night] .notice{background:#4e4028;color:#ffe2ac}
.controls-dialog label{display:block}.controls-dialog button{margin:5px}.shell-content form{margin-bottom:16px}

/* Kivy WorkspacePanels: 72px vertical rail and separate detail panel. */
@media(min-width:851px){
 main{grid-template-columns:minmax(0,1fr) clamp(397px,38vw,512px);gap:4px}
 .panel{display:grid;grid-template-columns:72px minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr);margin:8px 8px 8px 0;border-radius:16px;overflow:hidden}
 #tabs{grid-column:1;grid-row:1/4;display:flex;flex-direction:column;flex-wrap:nowrap;padding:6px;gap:8px;overflow-y:auto;overflow-x:hidden;border-right:1px solid var(--line);border-bottom:0}
 #tabs button{white-space:normal;min-height:54px;font-size:11px;padding:6px 2px;width:60px;position:relative;flex-shrink:0}
 #tabs button[data-tab=settings]{margin-top:auto}
 #tabs b{position:absolute;top:2px;right:2px}
 .panel-title{grid-column:2;grid-row:1;padding:12px}.panel-title .eyebrow{display:none}
 .panel-title h1{font-size:18px}#pending-bar{grid-column:2;grid-row:2}
 #panel-content{grid-column:2;grid-row:3;padding:12px;min-height:0}
 .topbar{height:52px}.map-toolbar{height:46px}.map-footer{min-height:26px}
 .shell-layout{grid-template-columns:30% minmax(0,1fr);gap:0}
 .shell-layout nav{padding:10px;gap:5px}.shell-content{padding:20px}
}
.app-drawer[open]{display:flex;flex-direction:column;gap:12px;padding:16px}
.drawer-project{font-size:26px;font-weight:700;text-align:center;color:var(--teal);overflow-wrap:anywhere;padding:12px 0 22px;border-bottom:1px solid var(--line)}
.drawer-body{overflow:auto;flex:1;min-height:0;padding:4px}
.drawer-body>button{width:100%;text-align:left;min-height:48px;margin:0 0 12px;border-radius:12px;box-shadow:2px 2px 4px #0001}
.app-drawer .drawer-settings{margin:0;width:100%;flex-shrink:0}
.shell-content{position:relative;isolation:isolate}.shell-content::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--settings-photo) center/contain no-repeat;opacity:.2}

:root{--settings-photo:url("/client/settings-background.png")}

.settings-option{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 0;border-bottom:1px solid var(--line)}.settings-option input{width:22px;height:22px;flex-shrink:0}.shell-layout nav button:last-child{margin-top:auto}

.rail-icon{display:none}@media(min-width:851px){.rail-icon{display:block;font-size:24px;line-height:26px}#tabs button{min-height:64px}}

/* Desktop home and operation are separate states; mobile layout is unchanged. */
#workspace.desktop-home{grid-template-columns:minmax(0,1fr)}
#workspace.desktop-home #panel{display:none}
#workspace.desktop-home #measure,#workspace.desktop-home #panel-toggle{display:none}
#startup{position:fixed;inset:0;z-index:10000;background:#122127;color:white;display:grid;place-items:center}
#startup-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.startup-status{position:absolute;bottom:5%;left:8%;right:8%;background:#10252cbb;padding:18px 24px;border-radius:6px}
.startup-status strong{font-size:24px;letter-spacing:5px}.startup-status p{margin:8px 0}.startup-status button{font-size:12px}

#startup-video{object-fit:contain}#startup-progress{display:block;width:100%;height:12px;accent-color:#35b8bc;margin:12px 0}.startup-status{left:12%;right:12%;bottom:3.5%;background:#10252c88}

@media(min-width:851px) and (pointer:fine){
 .topbar .brand,.topbar #mode,.topbar #connection,.topbar #fullscreen{display:none}
 .map-toolbar{display:none}
 .topbar .identity #operation-name:empty{display:none}
}

.desktop-app-heading{display:none}#desktop-tools{display:flex;align-items:center;gap:8px}
@media(min-width:851px) and (pointer:fine){
 .topbar{position:relative;min-height:60px;height:60px;padding:0 12px;display:flex;justify-content:space-between}
 .desktop-app-heading{display:block;position:absolute;left:50%;transform:translateX(-50%);max-width:36%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:20px;pointer-events:none;color:var(--accent,currentColor)}
 .topbar #connection{display:inline-flex;font-size:12px;white-space:nowrap;max-width:150px;overflow:hidden}
 #desktop-tools{max-width:32%;flex-shrink:0}.topbar .identity{margin-left:auto;max-width:28%;text-align:right;overflow:hidden}
 .topbar .identity strong,.topbar .identity span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

.desktop-window-controls{display:flex;margin-left:auto;gap:4px}.desktop-window-controls button{width:44px;height:44px;font-size:24px;padding:0}.desktop-window-controls button:last-child:hover{background:#b52424;color:white}.desktop-native .topbar .identity{display:none}

body:not(.desktop-native) .desktop-app-heading{display:none}

/* Kivy StationShell / WorkspacePanels layout: shared browser and Electron. */
#operation-header{height:52px;flex:none;display:flex;align-items:center;gap:20px;padding:8px 16px;background:var(--surface,#f5f9f8);color:var(--text,#173d40);border-bottom:1px solid var(--line)}
#operation-caption{max-width:42%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#operation-status{font-size:13px}#wall-clock{margin-left:auto;font-size:13px;white-space:nowrap}
.drawer-menu{width:48px;margin:8px;border:0;background:transparent;font-size:25px}.app-drawer header{justify-content:center}.drawer-project{text-align:center;font-size:25px;font-weight:700;line-height:1.25;min-height:84px;display:grid;place-content:center;overflow-wrap:anywhere;padding:12px;color:var(--accent)}
.app-drawer button:not(.drawer-menu){min-height:48px;border-radius:12px;box-shadow:2px 2px 0 #00000015,-2px -2px 0 #ffffff12;text-align:left}.drawer-operations{padding:0 0 8px 16px;display:grid;gap:6px}.drawer-operations button{font-size:13px}.app-drawer .drawer-settings{margin-top:auto}
.shell-dialog{width:min(1100px,92vw);height:88dvh;padding:0;border:2px solid var(--accent,#378c88);border-radius:12px;overflow:hidden}.shell-dialog>header{display:flex;align-items:center;justify-content:space-between;padding:6px 20px;border-bottom:1px solid var(--line);height:50px}.shell-dialog>header h2{font-size:19px;margin:0}.shell-dialog>header button{font-size:24px;min-width:44px;padding:0;background:transparent;border:0}.shell-layout{height:calc(100% - 50px);display:grid;grid-template-columns:30% minmax(0,1fr);overflow:hidden}.shell-layout>nav{display:flex;flex-direction:column;padding:10px;gap:5px;overflow:auto}.shell-layout>nav button{min-height:46px;background:transparent;border:0;text-align:left}.shell-layout>nav button.active{background:var(--accent,#41918c);color:white}.shell-layout>nav button:last-child{margin-top:auto}.shell-content{overflow:auto;min-height:0;padding:20px}.settings-section{margin-bottom:28px;border-bottom:1px solid var(--line);padding-bottom:20px}.settings-section h3{font-size:21px;color:var(--accent);margin:12px 0 24px}.settings-option{display:flex;justify-content:space-between;align-items:center;min-height:54px;gap:16px}.settings-option input{width:22px;height:22px;accent-color:var(--accent)}.settings-section input[type=range]{width:80%;accent-color:var(--accent)}.settings-section output{margin:12px}.theme-swatches{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.theme-swatches button{border-bottom:10px solid var(--swatch);min-height:65px}.theme-swatches button[aria-pressed=true]{outline:3px solid var(--accent)}
.scada-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.sensor-value{font-size:22px}.asset-error{color:#b24b26;border:1px solid;padding:10px}.team-person{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:40px}.timer-badge{color:white;padding:5px 8px;border-radius:6px;font-variant-numeric:tabular-nums}.timer-warning{border-left:4px solid #e5a820}
.workspace-list{max-height:36%;overflow:auto;flex-shrink:0;display:flex;flex-direction:column;gap:6px}.workspace-list-row{display:flex;flex-direction:column;align-items:flex-start;min-height:68px;text-align:left;flex:none}.workspace-list-row small{font-weight:400;margin-top:6px}.workspace-list-row.selected{background:var(--accent);color:white}.workspace-detail{flex:1;min-height:0;overflow:auto;padding-top:12px}.workspace-detail .task-title-button{pointer-events:none}.workspace-detail .task-actions{display:flex;flex-direction:column;gap:8px}
@media(min-width:851px) and (pointer:fine){
 #workspace{grid-template-columns:minmax(150px,1fr) minmax(325px,32%);gap:80px;padding:8px;background:var(--surface,#edf4f2)}
 #workspace.desktop-home{grid-template-columns:minmax(0,1fr);gap:0;padding:0}
 .panel{position:relative;overflow:visible;min-width:0;border-radius:0 16px 16px 0;background:var(--surface,#f5f9f8)}
 #tabs{position:absolute;left:-72px;top:0;bottom:0;width:72px;overflow:auto;display:flex;flex-direction:column;align-items:stretch;padding:4px;gap:3px;border-radius:16px 0 0 16px;background:var(--surface,#f5f9f8)}
 #tabs button{min-height:48px;flex-shrink:0;white-space:normal;font-size:10px;padding:5px 2px;position:relative;border:0;border-radius:10px}#tabs button b{position:absolute;top:3px;right:1px;font-size:10px}#tabs button[data-tab=settings]{margin-top:auto}.rail-icon{display:block;font-size:24px;line-height:26px}#tabs button[data-tab=history]{font-size:9px}#rail-collapse{font-size:25px;min-height:32px!important}
 .panel-title{padding:10px 12px}.panel-title .eyebrow{display:none}.panel-title h1{font-size:18px;margin:4px 0}
 #panel-content{display:flex;flex-direction:column;min-height:0;padding:10px;gap:8px}.task-card{padding:14px}.map-footer{font-size:11px}
 #workspace.panel-collapsed:not(.desktop-home){grid-template-columns:minmax(150px,1fr) 0;gap:80px}#workspace.panel-collapsed .panel>:not(#tabs){display:none}
 .plan-controls{flex-wrap:wrap}.plan-controls select{max-width:240px}.plan-controls span{display:none}
}
[data-theme=night] #operation-header,[data-theme=night] .panel,[data-theme=night] #tabs{background:#172b30;color:#e2f1ef}[data-theme=night] #workspace{background:#102126}[data-theme=night] #plan{background:#152b2b}[data-theme=night] #floor-map text{fill:#bddbd5}
@media(max-width:850px){.shell-layout{grid-template-columns:32% minmax(0,1fr)}.shell-content{padding:12px}.theme-swatches{gap:6px}.scada-grid{grid-template-columns:1fr}#wall-clock{display:none}#rail-collapse{display:none}.workspace-list{max-height:160px}.workspace-detail{overflow:visible;flex:none}}

.sensor-entry{position:absolute;right:16px;bottom:48px;background:#a62030;color:white;z-index:3}.sensor-banner{position:absolute;right:16px;bottom:100px;width:min(470px,90%);background:#401721;color:white;padding:16px;border-radius:10px;z-index:4}.sensor-banner p{margin:5px 0}.sensor-banner button{font-size:13px}.map-area:has(#plan[hidden]) .sensor-banner,.map-area:has(#plan[hidden]) .sensor-entry{display:none}.plan-controls{flex-wrap:wrap;gap:5px}.plan-controls button{min-width:40px;padding:7px;font-size:12px}.plan-controls select{width:auto;max-width:220px;font-size:13px}.circuit-option{display:flex;align-items:center;margin:0;gap:5px}.circuit-option input{width:18px;min-height:18px}.question-dialog{width:min(780px,90vw)}.equipment-dialog{width:min(820px,90vw)}

/* Shared SCADA layout: readings on both sides of the authored device symbol. */
.scada-stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(110px,.95fr) minmax(0,1fr);gap:12px;min-height:300px;max-height:62vh}
.scada-side{overflow:auto;min-width:0}.scada-tile{display:grid;grid-template-columns:minmax(0,1fr) auto 12px;align-items:center;gap:7px;padding:12px 9px;margin:6px 0;border-radius:8px;font-size:13px}.scada-tile strong{font-size:15px}.scada-symbol{display:flex;flex-direction:column;justify-content:center;align-items:center;min-width:0}.scada-symbol img{width:80%;height:200px;object-fit:contain}.sensor-dot{color:#9ba4a9}.sensor-dot[data-signal=good]{color:#31d96c}.sensor-dot[data-signal=manual]{color:#f5b440}
@media(max-width:600px){.scada-stage{grid-template-columns:1fr 1fr;max-height:none}.scada-symbol{grid-column:1/-1;grid-row:1}.scada-symbol img{height:100px}}

.recording-preview{display:block;width:100%;max-height:48vh;background:#111;margin-top:12px}.recording-preview[hidden]{display:none}
/* Kivy SettingPopup: left/bottom, 40% width and 60% height. */
.shell-dialog.settings-dialog{inset:auto auto 1px 1px;margin:0;width:40vw;min-width:min(580px,98vw);height:60dvh;min-height:min(430px,94dvh);max-width:98vw;max-height:94dvh}
.settings-dialog .shell-layout{gap:0}.settings-dialog .shell-content{padding:14px}.settings-dialog .shell-layout>nav{padding:8px}.settings-dialog .shell-layout>nav button{font-size:14px;min-height:42px}
#notice{display:flex;align-items:center;justify-content:space-between;gap:12px}#notice button{min-height:30px;padding:0 8px;background:transparent;border:0;font-size:21px}
.recording-error{display:flex;align-items:center;gap:12px;color:#a33d30;padding:8px 0}.recording-error button{margin-left:auto}.recording-preview{width:100%;max-height:35vh}
/* Vertical deck cards share the same SVG renderer and metre coordinates. */
#plan{--plan-ink:#284844;--plan-surface:#eef4f2;display:block;background:var(--plan-surface)}
.floor-card{position:absolute;left:16px;right:64px;top:12%;height:76%;border:1px solid #7caaa877;border-radius:20px;background:var(--plan-surface);overflow:hidden}
#floor-map{display:block;width:100%;height:100%;background:transparent;touch-action:none;-webkit-tap-highlight-color:transparent;user-select:none}
#floor-map [role=button]:focus{outline:none}#floor-map [role=button]:focus-visible{outline:2px solid var(--accent)}
.floor-badge{position:absolute;right:10px;top:10px;max-width:55%;padding:8px 12px;border-radius:10px;background:#cde1dce8;color:#21484b;font-size:16px;pointer-events:none;white-space:pre-line}
.floor-preview{position:absolute;left:28px;right:76px;width:auto;height:calc(12% - 14px);min-height:0;padding:0;border-radius:20px;background:#dfeae6;overflow:hidden;font-weight:500}
.floor-preview-up{top:0}.floor-preview-down{bottom:0}.floor-preview svg{width:100%;height:100%;pointer-events:none}.floor-preview span{position:absolute;right:10px;top:4px;padding:4px 10px;background:#d8e9e4ed;border-radius:7px;font-size:14px}.floor-preview-up span{top:auto;bottom:4px}
.floor-edge{position:absolute;right:4px;top:18%;bottom:18%;width:48px;display:flex;flex-direction:column;justify-content:space-between;touch-action:none;user-select:none}
.floor-edge button{height:42%;min-height:48px;font-size:32px;padding:0;background:transparent;border:0;color:var(--accent,#087f80)}
#plan .plan-controls{position:absolute;left:16px;bottom:8px;display:flex;gap:14px;padding:0;background:transparent;z-index:2;flex-wrap:nowrap}
#plan .plan-controls button{height:46px;min-width:150px;padding:10px 14px;font-size:15px;border-radius:14px;background:#dfebe7;color:#21484b;text-align:left}
#plan #plan-style{width:310px}#plan .plan-controls button[aria-pressed=true]{background:#c7ded8;border-color:var(--accent)}
.plan-tip,.plan-context{position:absolute;z-index:6;max-width:min(280px,90%);border-radius:8px;padding:8px 12px;font-size:14px;background:#102c2ce8;color:white;overflow-wrap:anywhere;box-shadow:0 3px 12px #0002}
.plan-tip{pointer-events:none}.plan-context{padding:8px;min-width:200px;background:#eef5f2;color:#234947}.plan-context strong{display:block;padding:7px}.plan-context button{display:block;width:100%;background:transparent;border:0;text-align:left;font-size:14px}
[data-theme=night] #plan{--plan-ink:#c9deda;--plan-surface:#182a2e}[data-theme=night] #floor-map{background:transparent}
[data-theme=night] .floor-preview{background:#263a3f}[data-theme=night] .floor-badge,[data-theme=night] .floor-preview span,[data-theme=night] #plan .plan-controls button,[data-theme=night] .plan-context{background:#294047;color:#d9ebe8}
@media(max-width:650px){#plan #plan-style{width:auto;min-width:150px}#plan .plan-controls button{min-width:100px;font-size:13px}.floor-card{left:8px;right:52px}.floor-preview{left:16px;right:60px}.floor-edge{right:0;width:44px}.floor-badge{font-size:13px}.shell-dialog.settings-dialog{width:98vw}.settings-dialog .shell-layout{display:grid;grid-template-columns:32% minmax(0,1fr)}}
/* Kivy ScadaView: 88% x 90%, independent reading columns, centered symbol. */
#detail.scada-dialog{width:88vw;max-width:96vw;height:90dvh;max-height:94dvh;overflow:hidden;display:flex;flex-direction:column;padding:14px;gap:8px}
#detail.scada-dialog:not([open]){display:none}#detail.scada-dialog #detail-title{margin:0;min-height:42px;text-align:center}
#detail.scada-dialog #detail-body{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
.scada-dialog .scada-stage{flex:1;min-height:0;max-height:none;grid-template-columns:32% 30% 32%;justify-content:space-between;gap:0}
.scada-dialog .scada-side{overflow:auto;padding:4px 0}.scada-dialog .scada-tile{display:grid;grid-template-columns:minmax(0,.59fr) minmax(0,.41fr) 14px;gap:6px;height:54px;border-radius:0;padding:8px;margin:0 0 6px;font-size:14px}.scada-dialog .scada-tile strong{text-align:right;font-size:16px}
.scada-dialog .scada-symbol img{width:82%;height:60%;max-height:60vh}.scada-dialog .scada-summary{min-height:44px;margin:0}.scada-dialog .scada-legend{font-size:13px;margin:8px 0}
.scada-dialog .actions{min-height:46px;flex-shrink:0}.scada-dialog #detail-close{min-height:48px;flex-shrink:0}.scada-dialog .segmented{flex:none}
@media(max-width:650px){.scada-dialog .scada-stage{grid-template-columns:1fr 1fr;overflow:auto}.scada-dialog .scada-symbol{grid-column:1/-1;grid-row:1}.scada-dialog .scada-symbol img{height:120px}.scada-dialog .scada-tile{font-size:12px}.scada-dialog .scada-tile strong{font-size:13px}}

.circuit-dialog{width:min(480px,90vw);max-height:80dvh}.circuit-option{display:flex;align-items:center;gap:12px;padding:12px;border-bottom:1px solid var(--line)}.circuit-option input{width:22px;height:22px;flex:none}.circuit-swatch{width:32px;height:4px;flex:none}

/* Kivy information cards occupy the right edge, leaving the plan visible. */
#detail.info-dialog{margin:0 0 0 auto;width:min(520px,48vw);max-width:96vw;height:100dvh;max-height:100dvh;border-radius:20px 0 0 20px;display:flex;flex-direction:column;padding:16px;gap:12px}
#detail.info-dialog::backdrop{background:transparent;backdrop-filter:none}
#detail.info-dialog:not([open]){display:none}.info-dialog #detail-body{overflow:auto;flex:1;min-height:0}.info-dialog #detail-title{margin:0;font-size:22px}.info-dialog #detail-close{flex:none}.info-subtitle{font-size:16px;overflow-wrap:anywhere}
.info-row{display:grid;grid-template-columns:38% minmax(0,1fr);gap:12px;padding:12px 8px;white-space:pre-wrap;overflow-wrap:anywhere}.info-row:nth-child(even){background:color-mix(in srgb,currentColor 5%,transparent)}.info-row strong{font-size:13px}.info-row span{font-size:14px}.card-tabs{display:flex;gap:6px;overflow-x:auto;min-height:54px;padding:3px 0 10px}.card-tabs button{white-space:nowrap;flex:none;min-width:110px}.card-tabs .active{background:var(--accent);color:white}.card-section p{white-space:pre-wrap}.card-section{padding:4px 0}
@media(max-width:700px){#detail.info-dialog{width:96vw}}

/* Fixed settings heading/photo, independently scrolling contents. */
.shell-pane{position:relative;min-width:0;min-height:0;display:flex;flex-direction:column;isolation:isolate;overflow:hidden}
.shell-pane>.shell-content{flex:1;min-height:0}
.settings-page-title{flex:none;margin:0;padding:14px 20px;border-bottom:1px solid var(--line);color:var(--accent);font-size:23px}
.settings-dialog .shell-pane::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--settings-photo) center/contain no-repeat;opacity:.2}
.settings-dialog .shell-content::before{display:none}
.settings-dialog .shell-content{background:transparent}
.settings-section h3{border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:12px}
.settings-option{border-bottom:0;gap:12px}
.settings-option input[role="switch"]{appearance:none;-webkit-appearance:none;flex:none;width:44px;height:25px;min-height:25px;padding:0;border:1px solid var(--line);border-radius:20px;background:#73838b;position:relative;cursor:pointer;transition:background .15s}
.settings-option input[role="switch"]::before{content:"";position:absolute;width:19px;height:19px;top:2px;left:2px;border-radius:50%;background:white;box-shadow:0 1px 3px #0004;transition:transform .15s}
.settings-option input[role="switch"]:checked{background:var(--accent)}
.settings-option input[role="switch"]:checked::before{transform:translateX(19px)}
.settings-option input[role="switch"]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.settings-option input[role="switch"]:disabled{cursor:default;opacity:.65}
.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}
.permission-grid .settings-option{font-size:14px}
.profile-photo{display:flex;justify-content:center;align-items:center;min-height:110px;margin:12px 0;color:var(--muted)}
.profile-photo img{display:block;max-width:100%;max-height:240px;object-fit:contain;border-radius:8px}
.plan-operation-list{display:flex;flex-direction:column;border-left:2px solid var(--accent);margin-left:10px;padding-left:6px;max-height:38vh;overflow:auto}
.plan-operation-list[hidden]{display:none}
@media(max-width:600px){.permission-grid{gap:0 10px}.permission-grid .settings-option{font-size:12px}.settings-page-title{padding:10px 14px}}
