:root{--ink:#1b2c31;--muted:#718086;--line:#e1e7e7;--bg:#f5f7f8;--teal:#117b72;--teal-soft:#e9f5f1;--amber:#b98124;--nav:#142d34;--danger:#b53c3c;font:14px/1.5 'Segoe UI',system-ui,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:white;color:var(--ink);border-radius:7px;padding:8px 12px;transition:background .12s}button:hover{background:#edf3f1}button:disabled{opacity:.45;cursor:not-allowed}button.primary,.primary{background:var(--teal);border-color:var(--teal);color:white}button.primary:hover{background:#09665f}input,select,textarea{padding:10px 11px;border:1px solid #d6dfe0;border-radius:7px;background:#fff;color:var(--ink);min-width:0}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid #4ba99c;outline-offset:2px}input[type=file]{padding:7px;max-width:100%}textarea{width:100%;font-family:Consolas,monospace;font-size:12px}label{display:grid;gap:6px;font-weight:600;font-size:12px}label small{font-weight:400}h1,h2,h3,h4,p{margin:0}h1{font-size:24px;letter-spacing:-.7px;font-weight:650}h2{font-size:25px;letter-spacing:-.7px;font-weight:650}h3{font-size:15px}h4{font-size:10px;letter-spacing:1.6px}small,.muted{color:var(--muted)}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--teal);font-weight:700;margin-bottom:8px}.sr{position:absolute;width:1px;height:1px;overflow:hidden}.rail{position:fixed;inset:0 auto 0 0;width:220px;background:var(--nav);color:#a9bfc3;padding:30px 18px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:#fff;font-size:24px;font-weight:650;letter-spacing:-.7px;margin-bottom:55px}.brand>span{font-size:23px}.brand:first-letter{color:#83d6c4}.brand-sub{display:block;font-size:8px;letter-spacing:1.6px;font-weight:500;color:#95b2b9}.brand-icon{display:grid;place-items:center;background:var(--teal);color:white;width:44px;height:44px;border-radius:12px;font-size:26px;font-weight:700}.nav-label{font-size:9px;letter-spacing:2px;padding:0 12px;margin-bottom:14px;color:#78959c}.nav-item{background:none;border:0;color:#aec1c6;text-align:left;padding:12px 11px;margin-bottom:7px;display:flex;gap:10px;font-size:12px}.nav-item span{font-size:18px;width:20px;line-height:20px}.nav-item:hover,.nav-item.selected{background:#24434b;color:#fff}.nav-item.selected{box-shadow:inset 3px 0 #74d6ba}.rail-bottom{margin-top:auto;border-top:1px solid #315058;padding:22px 8px 0;font-size:11px}.rail-bottom p{font-size:10px;line-height:1.9;color:#7e9ca4;margin:14px 0}.rail-bottom i{display:inline-block;background:#7cdbc0;border-radius:50%;width:6px;height:6px;margin-right:7px}.subtle{background:none;color:#b4c9ce;border:0;padding:0;font-size:11px}.workspace{margin-left:220px}header{height:103px;background:#fff;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:20px 32px;gap:20px}.breadcrumb{font-size:11px;color:var(--muted);margin-bottom:4px}.breadcrumb span{margin-left:10px}.header-actions{display:flex;align-items:center;gap:9px}.header-actions select{max-width:230px;font-size:12px}.header-actions button{font-size:12px}.statusbar{padding:9px 32px;display:flex;gap:22px;align-items:center;background:#fff;border-bottom:1px solid var(--line);font-size:10px;color:var(--muted)}.statusbar button{padding:0;background:none;border:0;font-size:10px}.status-spacer{flex:1}.connection{display:flex;align-items:center;gap:7px}.connection i{background:#c1cace;width:6px;height:6px;border-radius:50%}.connection i.online{background:#3a9a75}.connection i.warning{background:#d19432}main{padding:28px 32px 16px}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.page-heading .muted{font-size:12px;margin-top:5px}.seg{padding:3px;display:flex;gap:2px;background:#e8eded;border:1px solid #dde4e3;border-radius:8px}.seg button{background:none;border:0;font-size:11px;padding:7px 15px;color:var(--muted)}.seg button.on{background:#fff;color:var(--ink);box-shadow:0 1px 4px #102c3414}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}.metrics>div{background:white;border:1px solid var(--line);border-radius:9px;padding:15px 18px;display:flex;justify-content:space-between;align-items:center}.metrics span{font-size:11px;color:var(--muted)}.metrics strong{font-size:25px;font-weight:600}.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:18px;align-items:start}.map-card{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:white;min-width:0}.map-toolbar{display:flex;align-items:center;gap:6px;padding:11px 13px;border-bottom:1px solid var(--line)}.map-toolbar>button{font-size:10px;padding:6px 8px;white-space:nowrap}.floor-tabs{display:flex;gap:3px;flex:1;overflow:auto}.floor-tabs button{border:0;font-size:11px;padding:6px 12px;white-space:nowrap}.floor-tabs button.on{background:var(--teal-soft);color:var(--teal);font-weight:650}.map-tools{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:9px 12px}.toolset{display:flex;gap:4px}.toolset button{font-size:10px;padding:6px 8px;border-color:transparent}.toolset button.on{color:var(--teal);background:var(--teal-soft)}#mapHint{font-size:10px;color:var(--muted);margin-left:auto;text-align:right}#mapWrap{position:relative;height:490px;background:#eef1eb}#map{width:100%;height:100%;display:block;touch-action:none}.map-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;gap:15px;background:#f1f4ef}.map-empty>span{font-size:42px;color:#789892}.map-empty p{font-size:12px;color:var(--muted);line-height:1.8}.map-empty[hidden]{display:none}.map-legend{position:absolute;bottom:18px;left:16px;display:flex;gap:14px;padding:9px 12px;background:#ffffffeb;border:1px solid var(--line);border-radius:6px;font-size:9px;color:var(--muted)}.map-legend span{display:flex;gap:5px;align-items:center}.map-legend i{width:12px;height:9px}.map-legend .published{border:1.5px solid var(--teal);background:#dbede5}.map-legend .draft{border:1.5px dashed var(--amber)}.map-legend .device{width:7px;height:7px;border-radius:50%;background:#5b62b2}.zoom{position:absolute;right:15px;bottom:17px;display:flex;flex-direction:column;box-shadow:0 2px 8px #1232;border-radius:7px;background:white}.zoom button{border:0;border-radius:0;padding:5px 11px;font-size:14px}.zoom button:last-child{font-size:10px}#scale{position:absolute;top:14px;left:16px;font-size:9px;color:#6a7c77;background:#ffffffbf;padding:4px 7px;border-radius:3px}.map-footer{padding:10px 14px;display:flex;justify-content:space-between;font-size:9px;color:var(--muted);border-top:1px solid var(--line)}.inspector{background:white;border:1px solid var(--line);border-radius:10px;overflow:hidden}.inspector-title{padding:16px;border-bottom:1px solid var(--line)}.inspector-title h3{margin-bottom:5px}.text-button{background:none;border:0;color:var(--teal);font-size:10px;padding:0}#inspector{padding:15px}#inspector p{font-size:11px;color:var(--muted);line-height:1.8}#inspector label{margin-bottom:12px}#inspector input,#inspector select{font-size:11px;width:100%}.selection-icon{width:37px;height:37px;display:grid;place-items:center;background:var(--teal-soft);color:var(--teal);font-size:24px;border-radius:8px;margin-bottom:12px}.inspector-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:13px}.inspector-actions button{font-size:10px;padding:7px 9px}.danger{color:var(--danger)}.area-list{padding:15px;border-top:1px solid var(--line)}.list-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.list-heading span{font-size:10px;color:var(--muted);background:var(--bg);border-radius:3px;padding:1px 5px}.area-list>input{font-size:10px;width:100%;margin-bottom:12px}.area-item{width:100%;padding:10px 9px;display:flex;align-items:center;justify-content:space-between;border:1px solid transparent;margin-bottom:5px;text-align:left;border-radius:6px;font-size:11px}.area-item.on{background:var(--teal-soft);border-color:#b2d4c8}.area-item small{display:block;font-size:9px;margin-top:2px}.tag{font-size:8px;letter-spacing:.3px;border:1px solid #bddacf;border-radius:4px;padding:2px 5px;color:var(--teal);white-space:nowrap}.tag.draft{color:var(--amber);border-color:#ead9bb;background:#fffbf3}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.full{grid-column:1/-1}.note{padding:12px;background:var(--teal-soft);border:1px solid #d3e7df;border-radius:6px;font-size:11px;line-height:1.8;color:#446c61}.warning-note{background:#fff8e9;border-color:#eddfbd;color:#8b6a2f}.error{color:var(--danger);font-size:12px}.section-heading{display:flex;justify-content:space-between;gap:20px;margin:24px 0 14px}.section-heading .muted{font-size:11px}table{border-collapse:collapse;width:100%;font-size:12px;background:white}th,td{border-bottom:1px solid var(--line);padding:13px;text-align:left}th{font-size:10px;font-weight:650;color:var(--muted);background:#f8faf9}td small{display:block;font-size:10px}table button{font-size:10px;padding:6px 8px}.data-card{border:1px solid var(--line);border-radius:9px;background:white;overflow:hidden;margin:18px 0}.data-card .note{margin:16px}.empty-message{text-align:center;padding:45px 20px;color:var(--muted);font-size:12px}footer{margin:10px 32px 0;padding:15px 0 23px;border-top:1px solid var(--line);font-size:10px;color:#a0a9ab}footer>span{margin-left:12px}.footer-right{float:right}.login{min-height:100vh;display:grid;place-items:center;background:radial-gradient(ellipse at 75% 20%,#dbece4,transparent 50%),#edf2ef}.login[hidden],#shell[hidden],[hidden]{display:none!important}.login-card{width:min(440px,90vw);background:white;padding:40px;border:1px solid #dce6df;border-radius:14px;box-shadow:0 20px 80px #234b3510}.login-card h1{font-size:34px;line-height:1.2;margin-bottom:18px}.login-card .eyebrow{margin-top:24px}.login-card>.muted{font-size:13px;line-height:1.8;margin-bottom:24px}.login-card .primary{width:100%;margin:14px 0 18px;display:flex;justify-content:space-between;padding:11px}.login-card small{font-size:10px}.login-card #loginError{font-size:11px;color:var(--danger)}dialog{width:min(610px,94vw);max-height:90vh;padding:25px;border:1px solid var(--line);border-radius:12px;box-shadow:0 20px 100px #0003}dialog::backdrop{background:#102b3575;backdrop-filter:blur(3px)}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.modal-head h2{font-size:22px}.modal-head button{border:0;font-size:17px;padding:0 5px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px;padding-top:16px;border-top:1px solid var(--line)}#modalError{margin-top:12px}#modalBody>.note{margin:15px 0}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#173f36;color:white;box-shadow:0 3px 15px #0002;border-radius:8px;padding:13px 22px;font-size:12px;z-index:30;max-width:80vw}.map-label{font:600 1px 'Segoe UI',sans-serif;paint-order:stroke;stroke:#fff;stroke-width:.2;pointer-events:none;text-anchor:middle}.fence{cursor:pointer;vector-effect:non-scaling-stroke}.vertex{cursor:grab;vector-effect:non-scaling-stroke}.drawing{pointer-events:none}.room-table{max-height:270px;overflow:auto}.form-separator{border:0;border-top:1px solid var(--line);margin:20px 0}.copy-token{font-family:Consolas,monospace;overflow-wrap:anywhere;padding:12px;background:#eff5f1;user-select:all}.file-label{font-size:11px}.small-help{font-size:10px;color:var(--muted);margin-top:8px}.chip{font-size:10px;background:var(--bg);border:1px solid var(--line);padding:3px 7px;border-radius:4px}.version-info{font-size:10px;color:var(--muted);margin-bottom:10px}@media(min-width:1650px){#mapWrap{height:600px}.map-layout{grid-template-columns:minmax(0,1fr) 320px}}@media(max-width:1150px){.rail{width:178px;padding:25px 12px}.workspace{margin-left:178px}header,main{padding-left:22px;padding-right:22px}.statusbar{padding-left:22px;padding-right:22px}.map-layout{grid-template-columns:minmax(0,1fr) 255px}#mapHint{display:none}.header-actions select{max-width:160px}.brand>span{font-size:20px}.nav-item{font-size:11px}.metrics span{font-size:10px}}@media(max-width:850px){.rail{position:static;width:100%;flex-direction:row;gap:5px;align-items:center;padding:12px}.rail .brand{margin:0 auto 0 0;font-size:16px}.brand-sub,.nav-label,.rail-bottom{display:none}.nav-item{margin:0;padding:8px;font-size:0}.nav-item span{font-size:20px}.workspace{margin-left:0}header{height:auto;flex-wrap:wrap;padding:18px}header h1{font-size:21px}.header-actions{width:100%}.header-actions select{flex:1;max-width:none}.statusbar{padding:9px 18px;gap:12px}#coordinateLabel{display:none}main{padding:20px 18px}.map-layout{grid-template-columns:1fr}.inspector{display:grid;grid-template-columns:1fr 1fr}.inspector-title{grid-column:1/-1}.area-list{border-top:0;border-left:1px solid var(--line)}#mapWrap{height:430px}.metrics{gap:7px}.metrics>div{padding:12px;display:block}.metrics strong{display:block}.page-heading h2{font-size:21px}.page-heading{gap:12px}.page-heading .seg{flex-shrink:0}.seg button{padding:6px 9px}.field-grid{gap:12px}footer{margin:10px 18px}.map-footer span:last-child{display:none}.data-card{overflow:auto}#liveDevices{overflow:auto}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.timeline{display:flex;overflow:auto;gap:3px;margin:18px 0;padding-bottom:10px}.timeline-block{min-width:210px;padding:14px;border-radius:7px;border-left:4px solid var(--teal);background:#e8f3ed;display:grid;gap:7px;font-size:11px}.timeline-block.uncertain{background:#fff4dc;border-color:#c69737}.timeline-block span,.timeline-block small{font-size:10px;color:var(--muted)}
.map-reference-switch{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 13px;border-bottom:1px solid var(--line)}.map-reference-switch>span{font-size:11px;color:var(--muted)}#googlePanel{background:#f8faf8}.google-search{display:flex;gap:8px;padding:12px;border-bottom:1px solid var(--line)}.google-search input{flex:1;min-width:0;font-size:12px}.google-search button{font-size:11px;white-space:nowrap}#googleCanvas{height:490px;width:100%;background:#e9eee9}#googleCanvas img{max-width:none}#googleError{margin:12px}.google-setup{padding:30px;max-width:660px}.google-setup h3{font-size:21px;margin:10px 0}.google-setup p,.google-setup li{font-size:12px;line-height:1.9}.google-setup ol{padding-left:20px;margin:16px 0}.google-setup code{font-size:11px;overflow-wrap:anywhere}.google-setup a{font-size:12px;color:var(--teal);margin-right:15px}.google-setup button{font-size:11px;margin-top:15px}.google-floor-controls{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:12px;border-top:1px solid var(--line)}.google-floor-controls button{font-size:11px}.google-floor-controls label{display:flex;align-items:center;gap:8px;font-size:10px}.google-floor-controls input{width:90px;accent-color:var(--teal)}#googleAlignmentStatus{font-size:10px;color:var(--muted);flex-basis:100%}.google-help{padding:0 13px 13px;font-size:10px;color:var(--muted);line-height:1.7}@media(min-width:1650px){#googleCanvas{height:600px}}@media(max-width:850px){#googleCanvas{height:430px}.google-search{flex-wrap:wrap}.google-search input{flex-basis:100%}.google-setup{padding:20px}.map-reference-switch{flex-wrap:wrap}.map-toolbar{flex-wrap:wrap}.floor-tabs{flex-basis:100%}}
@media(max-width:600px){.rail{flex-wrap:wrap}.rail .brand{flex:0 0 100%;margin-bottom:8px}.rail .nav-item{flex:1;min-width:0}.page-heading{align-items:flex-start;flex-wrap:wrap}.page-heading>.seg{margin-left:auto}}
