/* Shared UI tokens and component rules. */
:root{--ink:#20312b;--muted:#5c6d64;--line:#dce4df;--green:#23634c;--tint:#edf5f0;--bg:#f5f7f6;--radius:8px;--shadow:0 8px 28px #183e2917;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button,summary{cursor:pointer}button{touch-action:manipulation}button:disabled{opacity:.45;cursor:default}button,input,select,summary,a{outline-offset:3px}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid #23634c}button:hover:not(:disabled){background:#f0f5f2}input,select{accent-color:var(--green)}[hidden]{display:none!important}
.app{height:100dvh;display:flex;flex-direction:column;min-width:0}header{height:64px;flex-shrink:0;display:flex;align-items:center;gap:10px;padding:8px 16px;background:white;border-bottom:1px solid var(--line);position:relative;z-index:30}.app-mark{display:grid;place-items:center;background:var(--green);color:white;border-radius:9px;width:34px;height:34px;font-size:25px;font-weight:750;letter-spacing:-2px;flex-shrink:0}.app-mark>span{display:none}.project-heading{min-width:0;flex:1}#project-name{font-size:18px;font-weight:650;width:min(420px,100%);border:1px solid transparent;border-radius:4px;padding:2px 4px;margin-left:-4px;background:transparent}#project-name:hover,#project-name:focus{border-color:var(--line);background:var(--bg)}.save-indicators{display:flex;gap:12px;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;margin-top:2px}#cloud-status{overflow:hidden;text-overflow:ellipsis}#mobile-project-menu{display:flex;gap:10px;align-items:center}.button{border:1px solid #cbd8d0;border-radius:var(--radius);background:white;padding:9px 12px;font-weight:550;font-size:13px;min-height:36px;white-space:nowrap}.button.primary{background:var(--green);border-color:var(--green);color:white}.button.primary:hover:not(:disabled){background:#174c39}.button.full{width:100%;margin-top:8px}.header-actions{display:none;position:absolute;right:16px;top:calc(100% - 4px);width:280px;background:white;border:1px solid var(--line);border-radius:12px;padding:8px;box-shadow:var(--shadow);z-index:50}.actions-open .header-actions{display:grid;gap:2px}.header-actions .button{border:0;text-align:left;font-weight:450;min-height:40px;border-radius:6px}.menu-heading{font-size:12px;font-weight:600;color:var(--muted);padding:10px 12px 4px}
.project-nav{height:42px;flex-shrink:0;display:flex;align-items:stretch;padding:0 16px;gap:24px;background:white;border-bottom:1px solid var(--line)}.nav-tab{padding:0 2px;border:0;border-bottom:2px solid transparent;background:none;font-size:13px;color:var(--muted);white-space:nowrap}.nav-tab.active{color:var(--green);font-weight:650;border-bottom-color:var(--green)}.nav-tab span{display:inline-block;border-radius:5px;background:#eef2ef;padding:1px 5px;font-size:11px;margin-left:4px}.shortcut-button{margin-left:auto;background:none;border:0;color:var(--muted);font-size:12px;display:flex;align-items:center;gap:8px}.shortcut-button span{display:grid;place-items:center;border:1px solid var(--line);border-radius:4px;width:21px;height:21px}
#drawing-view{--left-panel-width:268px;--right-panel-width:288px;flex:1;min-height:0;position:relative;display:grid;grid-template-columns:var(--left-panel-width) minmax(0,1fr) var(--right-panel-width);overflow:hidden}#drawing-view.left-collapsed{--left-panel-width:0px}#drawing-view.right-collapsed{--right-panel-width:0px}.left-panel{grid-column:1;border-right:1px solid var(--line)}.right-panel{grid-column:3;border-left:1px solid var(--line)}.left-panel,.right-panel{background:white;overflow:auto;overscroll-behavior:contain;padding:0 14px 16px;position:relative;scrollbar-width:thin;scrollbar-color:#b6c6bc transparent}.panel-title{font-size:14px;font-weight:650;padding:16px 0;position:sticky;top:0;z-index:1;background:white;margin-bottom:2px}.panel-close{position:absolute;right:8px;top:9px;z-index:3;min-width:32px;min-height:32px;background:var(--bg);border:1px solid var(--line);border-radius:6px;font-size:18px;color:var(--muted)}.tool-section,.inspector-section{border-top:1px solid var(--line)}.tool-section summary,.inspector-section summary{list-style:none;font-weight:600;font-size:13px;padding:14px 20px 14px 0;position:relative}.tool-section summary::-webkit-details-marker,.inspector-section summary::-webkit-details-marker{display:none}.tool-section summary::after,.inspector-section summary::after{content:'›';position:absolute;right:2px;font-size:20px;top:10px;transition:transform .12s}.tool-section[open] summary::after,.inspector-section[open] summary::after{transform:rotate(90deg)}.section-body{padding:0 0 14px}.sheet-picker,.field{display:block;font-size:12px;font-weight:550;margin:0 0 10px;color:#43574b}.sheet-picker select,.field input,.field select,.scale-box input{display:block;width:100%;padding:8px 10px;margin-top:6px;min-height:36px;border:1px solid #cbd8d0;border-radius:6px;background:white;font-size:14px}.sheet-actions{display:flex;gap:6px}.sheet-actions button{flex:1;background:white;border:1px solid var(--line);border-radius:6px;padding:6px;font-size:12px;min-height:32px}.sheet-actions #remove-sheet{color:#924331}.sheet-card{margin:8px 0;color:var(--muted);font-size:12px}.sheet-card strong{display:none}.drawing-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.drawing-actions .button{font-size:12px;padding:8px 5px}.hint,.subtle{font-size:12px;color:var(--muted);line-height:1.55}.hint{margin:8px 0 0}.subtle{margin:5px 0 0}.device-type{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;margin:6px 0;border:1px solid var(--line);border-radius:8px;background:white;text-align:left;min-height:48px}.device-type strong{display:block;font-size:13px;font-weight:550}.device-type small{font-size:11px;display:block;color:var(--muted);margin-top:2px}.type-icon{width:32px;height:32px;display:grid;place-items:center;font-size:19px;border-radius:8px;flex-shrink:0}.device-type .add{margin-left:auto;font-size:19px;color:var(--muted)}.device-type.selected,.floor-tools button.selected,#calibrate.selected{background:var(--tint);border-color:var(--green);color:var(--green)}#library{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}#library .device-type{margin:0;min-height:56px;display:grid;grid-template-columns:25px 1fr;gap:7px;padding:8px}#library .type-icon{width:25px;height:27px;font-size:17px}#library .device-type strong{font-size:12px;line-height:1.35}#library .device-type small,#library .device-type .add{display:none}.inspector-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}#library+.field{margin-top:12px}.floor-tools{display:grid;grid-template-columns:1fr 1fr;gap:6px}.floor-tools button{background:white;border:1px solid var(--line);padding:9px;border-radius:6px;font-size:13px}.layer{display:flex;align-items:center;gap:8px;padding:9px 0;font-size:12px}.layer input,.camera-visibility input{width:16px;height:16px;flex-shrink:0}.layer b{margin-left:auto;color:var(--muted);font-size:12px;font-weight:500}
.studio{grid-column:2;display:flex;flex-direction:column;min-width:0;min-height:0;position:relative;overflow:hidden}.studio-bar{height:46px;flex-shrink:0;display:flex;align-items:center;gap:8px;padding:5px 12px;border-bottom:1px solid var(--line);background:#fbfcfb}.drawing-info{display:flex;align-items:center;gap:8px;min-width:0;flex:1;overflow:hidden}.drawing-info strong{font-size:13px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-dot{background:#428e65;width:6px;height:6px;border-radius:50%;display:inline-block;flex-shrink:0}.panel-controls{display:flex;gap:4px;margin-left:auto;flex-shrink:0}.panel-toggle{height:34px;background:white;border:1px solid var(--line);border-radius:6px;font-size:12px;font-weight:550;padding:5px 9px;white-space:nowrap}.panel-toggle[aria-expanded=true]{background:var(--tint);border-color:#a9c5b5;color:var(--green)}.focus-button{color:var(--muted)}.zoom{display:flex;align-items:center;gap:1px;flex-shrink:0;border:1px solid var(--line);border-radius:6px;background:white;height:34px;padding:2px}.zoom button{background:none;border:0;border-radius:4px;min-width:26px;height:28px;padding:0 5px;font-size:16px}.zoom span{min-width:37px;text-align:center;font-size:12px;font-variant-numeric:tabular-nums}.zoom #fit{font-size:12px;border-left:1px solid var(--line);border-radius:0;min-width:34px}.canvas-shell{flex:1;min-height:0;position:relative;overflow:hidden;background:#fffefa}#plan{display:block;width:100%;height:100%;background:#fffefa;touch-action:none;user-select:none}#plan[data-tool=camera],#plan[data-tool=reader],#plan[data-tool=sensor],#plan[data-tool=smoke],#plan[data-tool=wire],#plan[data-tool=note],#plan[data-tool=measure],#plan[data-tool=wall],#plan[data-tool=door],#plan[data-tool=window],#plan[data-tool=room],#plan[data-tool=calibrate]{cursor:crosshair}#plan[data-tool=pan],#plan.pan-ready{cursor:grab}#plan.panning{cursor:grabbing}.toolbox{position:absolute;bottom:36px;left:50%;transform:translateX(-50%);display:flex;gap:2px;align-items:center;padding:5px;background:#fffffffa;border:1px solid #cbd8d0;border-radius:12px;box-shadow:0 4px 20px #203d2520;z-index:4;max-width:calc(100% - 24px)}.toolbox button{width:48px;min-width:40px;height:48px;border:0;background:none;border-radius:7px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.toolbox svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.toolbox small{font-size:10px;line-height:1}.toolbox button.selected{background:#e5f0e9;color:var(--green)}.toolbox>span{width:1px;height:28px;background:var(--line);margin:0 4px;flex-shrink:0}.canvas-foot{position:absolute;bottom:5px;left:14px;right:14px;display:flex;justify-content:space-between;gap:12px;font-size:11px;line-height:20px;color:#526556;pointer-events:none}.canvas-foot span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#fffefaed;border-radius:3px;padding:0 3px}.canvas-foot>span:last-child{flex-shrink:0}.studio-summary{height:28px;flex-shrink:0;display:flex;align-items:center;gap:16px;padding:0 12px;background:#fbfcfb;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}.studio-summary strong{color:var(--ink);font-weight:550}.summary-right{margin-left:auto}.panel-edge-toggle{position:absolute;top:50%;transform:translateY(-50%);z-index:5;width:20px;min-height:46px;background:#fffffff2;color:var(--muted);border:1px solid var(--line);font-size:18px;box-shadow:0 2px 8px #244d2510}.panel-edge-toggle.edge-left{left:0;border-radius:0 7px 7px 0}.panel-edge-toggle.edge-right{right:0;border-radius:7px 0 0 7px}#edge-left{left:0;border-radius:0 7px 7px 0}#edge-right{right:0;border-radius:7px 0 0 7px}.panel-edge-toggle[aria-expanded=true]{display:none}
.inspector-item{padding:6px 0 16px}.inspector-item h3{font-size:18px;margin:10px 0 4px;line-height:1.3}.item-id{display:block;font-size:12px;color:var(--muted);margin-bottom:18px;overflow-wrap:anywhere}.inspector-item .field{margin-top:14px}.inspector-item .button{width:100%;margin-top:12px}.camera-visibility{display:flex;align-items:center;gap:8px;margin:14px 0;font-size:13px}.danger{display:block;width:100%;margin-top:10px;padding:9px;border:1px solid #eed7d0;border-radius:6px;background:#fff6f3;color:#98482f;font-size:13px}.inspector-empty{padding:20px 0 28px}.inspector-empty>span{font-size:28px;color:#557361}.inspector-empty h3{font-size:15px;margin:12px 0 6px}.inspector-empty p{font-size:13px;line-height:1.6;color:var(--muted)}.overview-row{display:flex;gap:8px;align-items:center;font-size:13px;padding:9px 0}.overview-row b{margin-left:auto;font-weight:550}.overview-color{width:7px;height:7px;border-radius:2px}.scale-box{padding-top:16px;margin-top:16px;border-top:1px solid var(--line)}.scale-box label{font-size:13px;font-weight:550}.scale-box small{display:block;font-size:12px;color:var(--muted);font-weight:400;margin-top:3px}.edit-handle{cursor:grab}.edit-handle:active{cursor:grabbing}.device{cursor:grab}.device.selected circle.ring{stroke:#264734;stroke-width:2;stroke-dasharray:3 3}.annotation{cursor:pointer}.wire-line{cursor:pointer}.wire-line:hover{stroke-width:6}
.page-view{flex:1;min-height:0;overflow:auto;padding:28px clamp(16px,3vw,44px);width:100%}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.page-heading h1{font-size:26px;font-weight:650;margin:0;letter-spacing:-.6px}.page-heading .subtle{font-size:13px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px}.stat{padding:18px 20px;background:white;border:1px solid var(--line);border-radius:10px}.stat small{font-size:12px;color:var(--muted);font-weight:550}.stat strong{display:block;font-size:28px;font-weight:650;margin-top:8px;letter-spacing:-.6px;font-variant-numeric:tabular-nums}.table-card{border:1px solid var(--line);border-radius:10px;background:white;overflow:auto}table{width:100%;min-width:760px;border-collapse:collapse;text-align:left}th{font-size:12px;font-weight:600;letter-spacing:.3px;color:#496052;background:#f7faf8;padding:16px;white-space:nowrap}td{padding:16px;border-top:1px solid var(--line);font-size:13px;font-variant-numeric:tabular-nums}td:first-child{min-width:190px}td strong{font-weight:550}td small{display:block;font-size:12px;color:var(--muted);margin-top:4px}td input{width:78px;padding:7px;border:1px solid #cbd8d0;border-radius:5px}tbody tr:hover{background:#f8fbf9}.table-footer{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px;border-top:1px solid var(--line);font-size:12px;line-height:1.6;color:var(--muted);min-width:760px}.table-footer strong{font-size:22px;color:var(--green);white-space:nowrap}.task-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.task-column{padding:14px;background:#edf2ef;border:1px solid var(--line);border-radius:10px;min-height:270px}.task-column h3{display:flex;justify-content:space-between;font-size:12px;margin:0 0 16px;padding:4px}.task-column h3 span{font-weight:500;background:white;padding:1px 6px;border-radius:4px}.task-card{background:white;border:1px solid var(--line);border-radius:8px;padding:16px;margin-bottom:10px}.task-card small{font-size:11px;color:var(--muted)}.task-card h4{font-size:14px;line-height:1.5;margin:8px 0;overflow-wrap:anywhere}.task-card p{font-size:12px;color:var(--muted);line-height:1.5}.task-card select{border:1px solid var(--line);border-radius:5px;background:white;padding:7px;font-size:12px;max-width:100%}.task-card button{float:right;color:#934b34;border:0;background:none;font-size:12px;padding:8px}.empty-column{text-align:center;color:var(--muted);font-size:13px;margin:64px 0}.mobile-only{display:none}
#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);padding:12px 18px;background:#203e30;color:white;border-radius:9px;box-shadow:var(--shadow);z-index:100;display:none;max-width:calc(100vw - 24px);font-size:13px;line-height:1.5}dialog{width:440px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 32px);overflow:auto;border:1px solid var(--line);border-radius:14px;background:white;color:var(--ink);padding:24px;box-shadow:0 24px 100px #183e2930}dialog::backdrop{background:#142a2159;backdrop-filter:blur(2px)}dialog h2{font-size:21px;font-weight:650;letter-spacing:-.3px;line-height:1.3;margin:0 0 18px}dialog p{font-size:13px;line-height:1.6}dialog label{display:block;font-size:13px;margin-top:16px}dialog input:not([type=checkbox]),dialog select{display:block;width:100%;padding:9px 10px;border:1px solid #cbd8d0;border-radius:6px;margin-top:6px;background:white;font-size:14px;min-height:38px}dialog input[type=checkbox]{width:17px;height:17px;margin:0;flex-shrink:0}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.scan-heading{display:flex;align-items:center;justify-content:space-between;gap:14px}.scan-heading h2{margin:0}.shortcut-list{margin:18px 0 0;font-size:13px}.shortcut-list>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.shortcut-list dd{margin:0;text-align:right}kbd{display:inline-block;background:var(--bg);border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:2px 5px;font-size:11px;color:#43574b}.cloud-dialog{width:100%;min-width:0}#cloud-dialog{width:600px}#cloud-list{max-height:50dvh;overflow:auto;display:grid;gap:8px;margin-top:16px}#cloud-list .button{text-align:left;white-space:normal;overflow-wrap:anywhere;line-height:1.5}#floor-dialog{max-height:90dvh}
/* Import and tracing dialogs. */
#scan-dialog{width:min(900px,calc(100vw - 24px))}.scan-content{display:flex;flex-direction:column;gap:12px;min-width:0}.scan-content .hint,.trace-content .hint,.pdf-content .hint{margin:0}.scan-stage{position:relative;background:#eef2ef;align-self:center;max-width:100%;line-height:0;overflow:hidden;border-radius:7px}.scan-stage canvas,.scan-stage img{display:block;max-width:100%;max-height:52dvh;width:auto;height:auto;object-fit:contain}.scan-stage svg{position:absolute;inset:0;width:100%;height:100%;touch-action:none;user-select:none}.scan-stage [data-corner]{cursor:grab}.scan-options,.scan-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.scan-options label{display:flex;align-items:center;gap:8px;margin:0;font-size:13px}.scan-options select{width:auto;margin:0}.scan-actions .primary{margin-left:auto}#scan-dialog [hidden]{display:none!important}
#trace-dialog{width:min(968px,calc(100vw - 24px))}.trace-content{display:grid;gap:12px;min-width:0}.trace-options,.trace-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.trace-options label{display:grid;gap:0;margin:0;font-size:13px}.trace-options input{width:150px}.trace-stage{position:relative;line-height:0;max-height:48dvh;justify-self:center;max-width:100%}.trace-stage canvas{display:block;max-width:100%;max-height:48dvh;width:auto;height:auto}.trace-stage svg{position:absolute;inset:0;width:100%;height:100%;cursor:pointer}.trace-actions .primary{margin-left:auto}#trace-list{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-height:180px;overflow:auto;margin-top:10px}#trace-list label{display:flex;align-items:center;gap:6px;font-size:12px;margin:0;min-height:36px}.trace-content summary{font-size:13px}
#pdf-dialog{width:min(940px,calc(100vw - 24px))}.pdf-content{display:grid;gap:12px;min-width:0}.pdf-selection,.pdf-navigation{display:flex;align-items:end;flex-wrap:wrap;gap:10px}.pdf-selection label{display:grid;flex:1;min-width:140px;margin:0;font-size:13px}.pdf-navigation{justify-content:space-between;align-items:center;font-size:13px}#pdf-thumbnails{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;min-height:80px;max-height:42dvh;overflow:auto;padding:2px}#pdf-thumbnails label{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:center;margin:0;padding:10px;border:1px solid var(--line);border-radius:8px;font-size:13px;cursor:pointer}#pdf-thumbnails label:has(input:checked){border-color:var(--green);background:var(--tint)}#pdf-thumbnails canvas{grid-column:1/-1;max-width:100%;height:150px;object-fit:contain;justify-self:center;background:white}.pdf-content .dialog-actions{margin:0}
@media(max-width:1400px){.drawing-info{display:none}.summary-right{display:none}}
@media(max-width:1100px){#drawing-view{display:block}.studio{height:100%}#drawing-view>.left-panel,#drawing-view>.right-panel{position:absolute;top:46px;bottom:0;width:min(300px,82vw);z-index:15;box-shadow:var(--shadow)}.left-panel{left:0}.right-panel{right:0}.panel-edge-toggle{width:22px}.save-indicators #save-status{display:none}.stats{gap:10px}.stat{padding:16px}.task-columns{gap:12px}}
@media(max-width:600px){header{height:60px;padding:7px 10px;gap:8px}.app-mark{display:none}#project-name{font-size:16px}.save-indicators{font-size:11px;margin-top:3px}header>.button{min-height:40px;padding:8px 10px;font-size:12px}#mobile-project-menu{gap:6px}.header-actions{right:8px;width:min(280px,calc(100vw - 16px))}.header-actions .button{min-height:44px;font-size:14px}.project-nav{height:42px;padding:0 10px;gap:20px}.nav-tab{font-size:13px}.shortcut-button{font-size:0;gap:0}.shortcut-button span{font-size:13px;width:25px;height:25px}.studio-bar{height:48px;gap:5px;padding:4px 6px}.panel-controls{margin-left:0;gap:3px}.panel-toggle{height:40px;padding:4px 7px;font-size:12px}.zoom{margin-left:auto;height:40px}.zoom button{height:34px;min-width:24px;padding:0 3px}.zoom span{min-width:32px;font-size:11px}.zoom #fit{min-width:28px;font-size:11px}#drawing-view>.left-panel,#drawing-view>.right-panel{top:48px;width:min(310px,90vw)}.panel-close{min-height:38px;min-width:38px;top:5px}.panel-title{padding:16px 0}.tool-section summary,.inspector-section summary{min-height:44px}.drawing-actions .button{min-height:44px;font-size:12px}.sheet-actions button{min-height:38px}.field input,.field select,.sheet-picker select,.scale-box input{font-size:16px;min-height:44px}.floor-tools button,.right-panel .button,.danger{min-height:44px}.device-type{min-height:52px}.layer{min-height:40px}.toolbox{bottom:34px;padding:4px;gap:0;max-width:calc(100% - 16px);border-radius:10px}.toolbox button{width:40px;min-width:37px;height:44px}.toolbox svg{width:18px;height:18px}.toolbox small{font-size:9px}.toolbox>span{margin:0 3px}.canvas-foot{left:6px;right:6px;font-size:11px;bottom:4px}.canvas-foot>span:last-child{display:none}.studio-summary{height:26px;gap:14px;font-size:11px}.page-view{padding:20px 12px}.page-heading{align-items:start;gap:10px;margin-bottom:18px}.page-heading h1{font-size:24px}.page-heading .button{min-height:42px}.page-heading .subtle{font-size:12px}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.stat{padding:14px}.stat small{font-size:11px}.stat strong{font-size:24px}.mobile-only{display:block;margin-bottom:10px}td,th{padding:12px}td:first-child,th:first-child{position:sticky;left:0;background:white;z-index:1;min-width:160px;box-shadow:1px 0 var(--line)}th:first-child{background:#f7faf8}td input{font-size:16px}.task-columns{grid-template-columns:1fr}.task-column{min-height:160px}.task-card select{font-size:16px;min-height:40px}.task-card button{min-height:40px}.empty-column{margin:24px 0}dialog{width:calc(100vw - 16px);max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);padding:16px;border-radius:12px}dialog h2{font-size:20px}dialog input:not([type=checkbox]),dialog select{font-size:16px;min-height:44px}dialog .button{min-height:44px}.scan-heading{gap:10px}.scan-stage canvas,.scan-stage img{max-height:42dvh}.scan-options{gap:8px}.scan-actions{display:grid;grid-template-columns:1fr 1fr}.scan-actions .primary{margin:0}.trace-options input{width:130px}.trace-stage,.trace-stage canvas{max-height:38dvh}#trace-list{grid-template-columns:1fr}.trace-actions .primary{width:100%;margin:0}.pdf-navigation{gap:6px;font-size:11px}.pdf-navigation .button{font-size:11px;padding:8px}#pdf-thumbnails{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:38dvh}#pdf-thumbnails canvas{height:120px}.shortcut-list{font-size:12px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

#plan:focus-visible{outline:2px solid #23634c;outline-offset:-2px}.table-card td:nth-child(n+3),.table-card th:nth-child(n+3){text-align:right}

.save-short{display:none}@media(max-width:600px){.shortcut-button{display:none}.save-long{display:none}.save-short{display:inline}.project-nav{gap:20px}}

#trace-dialog .trace-options label{flex:0 0 150px;max-width:calc(50% - 5px)}#trace-dialog .trace-options input{width:100%}@media(max-width:600px){#trace-dialog .trace-options label{flex:1 1 140px}}

/* Menus hold occasional actions; the canvas keeps the primary controls. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.action-menu{position:fixed;inset:auto;margin:0;padding:6px;width:250px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);overflow:auto;border:1px solid var(--line);border-radius:10px;background:white;color:var(--ink);box-shadow:0 10px 36px #183e2928}
.action-menu:popover-open{display:grid;gap:2px}.action-menu button,.inspector-item .action-menu .button{width:100%;min-height:38px;margin:0;padding:9px 12px;border:0;border-radius:5px;background:transparent;text-align:left;white-space:normal;font-size:13px;font-weight:450}.action-menu button:hover:not(:disabled),.action-menu button:focus-visible{background:var(--tint)}.action-menu .danger{color:#98482f}.menu-divider{height:1px;background:var(--line);margin:5px 8px}.menu-heading{padding:8px 12px 4px}.section-body>.button.full{margin:0}.studio-picker{min-width:80px;flex:1;max-width:280px}.studio-picker select{width:100%;height:34px;padding:4px 26px 4px 9px;border:1px solid var(--line);border-radius:6px;background:white;font-size:13px;text-overflow:ellipsis}.panel-controls{margin-left:auto}
.inspector-item{position:relative}.inspector-item h3{padding-right:42px}.item-menu-trigger{position:absolute;right:0;top:6px;width:34px;height:34px;border:1px solid var(--line);border-radius:6px;background:white;font-size:20px;letter-spacing:1px;line-height:1}
.canvas-controls{position:absolute;bottom:36px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;z-index:4;max-width:calc(100% - 16px)}.toolbox{position:static;transform:none;max-width:none;flex-shrink:0}.history-controls{display:flex;align-items:center;padding:5px;background:#fffffffa;border:1px solid #cbd8d0;border-radius:12px;box-shadow:0 4px 20px #203d2520;gap:2px}.history-controls button{width:34px;height:40px;border:0;background:none;border-radius:6px;display:grid;place-items:center}.history-controls svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.history-controls small{display:none}
@media(max-width:600px){.studio-bar{height:90px;display:grid;grid-template-columns:1fr auto;grid-template-rows:38px 40px;gap:4px 6px}.studio-picker{max-width:none;min-width:0}.studio-picker select{height:38px;font-size:14px}.studio-bar>[data-menu-trigger]{grid-column:2;grid-row:1;height:38px}.panel-controls{grid-column:1;grid-row:2;margin:0}.zoom{grid-column:2;grid-row:2}#drawing-view>.left-panel,#drawing-view>.right-panel{top:90px}.canvas-controls{bottom:34px;gap:5px}.toolbox{padding:4px}.toolbox button{width:38px;min-width:34px}.history-controls{padding:4px 2px;border-radius:10px;gap:0}.history-controls button{width:30px;height:44px}.action-menu button,.inspector-item .action-menu .button{min-height:44px;font-size:14px}.item-menu-trigger{width:38px;height:38px}}

#library{display:block;margin-top:12px}.library-group{margin:0 0 14px}.library-group-title{font-size:11px;font-weight:600;color:var(--muted);margin:0 0 6px}.library-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.type-icon.symbol-code{font-size:10px;font-weight:700;letter-spacing:-.3px}#library .symbol-code{font-size:9px}#plan.placing-device{cursor:crosshair}.library-search input{font-size:14px}.inspector-item .type-icon{font-size:13px}#camera-placement-settings{margin-top:12px}@media(max-width:600px){.library-search input{font-size:16px}}

.library-group{margin:0;border-top:1px solid #edf1ee}.library-group>summary{font-size:12px;color:var(--muted);font-weight:550;padding:11px 18px 11px 0;min-height:38px}.library-group>summary::after{top:5px;font-size:18px}.library-grid{padding-bottom:12px}.library-group[open]>summary{color:var(--ink)}

.tool-section .library-group:not([open])>summary::after{transform:none}
.library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#library .device-type{grid-template-columns:25px minmax(0,1fr)}#library .device-type strong{overflow-wrap:anywhere}

.door-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px}.door-controls .button{padding:9px 6px}

.intrusion-properties{margin-top:18px}.intrusion-properties summary{padding-bottom:4px}.assignment-notices{border-left:3px solid #bd8c42;background:#fff8eb;padding:6px 10px;margin:12px 0}.assignment-notices p{margin:4px 0;color:#805a28;font-size:12px;line-height:1.45}.schedule-controls{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.schedule-controls .field{min-width:170px;margin:0}.schedule-controls .field:nth-child(2){flex:1;max-width:420px}.assignment-summary{font-size:13px;color:var(--green);margin:0 0 0 auto}.assignment-summary.needs-review{color:#805a28}.schedule-hint{margin:14px 0}.intrusion-table{min-width:1100px}.schedule-device{border:0;padding:0;background:none;text-align:left;color:var(--green);text-decoration:underline;text-underline-offset:3px;font-weight:550;white-space:normal}.schedule-checks{min-width:170px;font-size:12px;line-height:1.6;color:#805a28}.schedule-checks span{display:block}.assignment-complete{color:var(--green)}.intrusion-table td{vertical-align:top}.project-nav{overflow-x:auto}.nav-tab{flex-shrink:0}@media(max-width:600px){.project-nav{gap:14px}.schedule-controls .field{min-width:0;flex:1}.schedule-controls .field:nth-child(2){flex:1}.schedule-controls .assignment-summary{width:100%;margin:0}.schedule-device{min-height:36px}.intrusion-properties .inspector-grid input{min-width:0}.intrusion-table td:first-child,.intrusion-table th:first-child{min-width:170px;max-width:200px}}

.table-card .intrusion-table td,.table-card .intrusion-table th{text-align:left}

.cable-length{display:flex;flex-direction:column;gap:4px;margin:12px 0 18px}.cable-length strong{font-size:24px;color:#285e47}.cable-length span{font-size:12px;color:#6a7668}.route-point{display:grid;grid-template-columns:20px minmax(0,1fr) minmax(0,1fr) 30px;gap:6px;align-items:center;margin-bottom:8px}.route-point input{width:100%;min-width:0;padding:8px;border:1px solid #d8dfd2;border-radius:5px}.inspector-section>.button{width:100%;margin:5px 0}.inspector-section>.schedule-device{display:block;margin:8px 0}.cable-section{margin-top:32px}.cable-section h2{font-size:20px;margin-bottom:8px}.cable-route-details{margin-top:20px}.cable-route-details>summary{cursor:pointer;font-weight:600;padding:12px 0}.cable-route-table{min-width:850px}#cable-checks{margin-bottom:16px}#cable-checks>.schedule-device{display:block;margin:6px 0}.cable-section .table-card{overflow-x:auto}.route-point-list{margin-top:12px}

.cable-draft-controls{position:absolute;top:14px;left:50%;transform:translateX(-50%);z-index:8;display:flex;gap:8px;align-items:center;padding:8px;border:1px solid #d8dfd2;border-radius:10px;background:#fffefa;box-shadow:0 4px 15px #163c2520;white-space:nowrap}.cable-draft-controls[hidden]{display:none}.cable-draft-controls span{font-size:12px}@media(max-width:500px){.cable-draft-controls{top:8px;gap:5px}.cable-draft-controls span{display:none}.cable-draft-controls .button{padding:9px}}

#pdf-export-dialog{width:min(920px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:24px;overflow:auto}#pdf-options{border:0;padding:0;margin:0}.pdf-export-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px 22px}.pdf-export-grid h3{font-size:13px;margin:16px 0 10px}.pdf-check{display:flex;align-items:center;gap:9px;padding:7px 0;font-size:13px}.pdf-check input{accent-color:#285e47;width:16px;height:16px}.pdf-export-grid .field input,.pdf-export-grid .field select{width:100%;min-width:0}.pdf-status{min-height:20px;font-size:13px;color:#285e47}.pdf-preview-controls{display:flex;justify-content:center;align-items:center;gap:18px;padding:18px 0 10px}.pdf-preview-scroll{border:1px solid #d8dfd2;border-radius:8px;background:#e8ebe7;padding:12px;overflow:auto}#pdf-page{display:block;width:100%;height:auto;background:#fff;box-shadow:0 2px 10px #163c2520}.pdf-preview-controls span{font-size:12px}@media(max-width:550px){#pdf-export-dialog{padding:16px}.pdf-export-grid{gap:12px;grid-template-columns:1fr}#pdf-export-dialog .dialog-actions{flex-wrap:wrap}#pdf-export-dialog .dialog-actions .button{flex:1;white-space:nowrap}.pdf-preview-scroll{padding:4px}}

.video-table{min-width:1200px}.video-table-card{overflow-x:auto}.video-table td:last-child{min-width:220px}.video-table td:last-child span{display:block;margin-bottom:5px;font-size:12px}.video-table td small{display:block;font-size:11px;color:#6a7668;margin-top:4px}.video-table th:first-child,.video-table td:first-child{position:sticky;left:0;background:#fffefa;z-index:1;min-width:190px}.detail-result{font-size:13px;line-height:1.65;padding:10px;background:#edf3ed;border-radius:7px}#video-estimates{padding:12px 14px;background:#edf3ed;border-radius:8px;margin:14px 0}

.access-components small{display:block;font-size:11px;color:#6a7668;margin:3px 0 12px}.access-table td{vertical-align:top}.access-table .schedule-device{display:block;margin-bottom:4px}#access-view .field{min-width:200px}#inspector textarea{width:100%;min-width:0;resize:vertical;padding:9px;border:1px solid #d7dece;border-radius:6px;font:inherit}

#assembly-launcher{margin:12px 0 8px}#assembly-launcher[hidden]{display:none}#assembly-dialog{width:min(520px,calc(100vw - 28px));padding:22px;max-height:calc(100dvh - 28px);overflow:auto}.assembly-actions{display:flex;flex-wrap:wrap;gap:8px}.assembly-actions .button{font-size:12px}.assembly-template-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:8px 0 16px}.assembly-template-actions .subtle{font-size:12px}#door-diagram-dialog{width:min(1000px,calc(100vw - 28px));padding:24px;max-height:calc(100dvh - 28px);overflow:auto}.door-diagram-scroll{overflow:auto;border:1px solid #d8dfd2;border-radius:10px;background:#f3f6f3;margin:16px 0}.door-diagram-scroll svg{display:block;max-width:none;font-family:system-ui,sans-serif}.diagram-node{cursor:pointer}.diagram-node:hover rect,.diagram-node:focus rect{stroke:#285e47;stroke-width:3}.diagram-node:focus{outline:none}#door-diagram-connections{font-size:12px;line-height:1.6}#door-diagram-connections p{padding:8px 0;border-bottom:1px solid #e0e5df}#assembly-form .field input,#assembly-form .field select{width:100%;min-width:0}@media(max-width:550px){#assembly-dialog,#door-diagram-dialog{padding:16px}.assembly-actions .button{flex:1}.page-heading:has(#place-door-assembly-access){align-items:flex-start;gap:12px;flex-wrap:wrap}#door-diagram-dialog .scan-heading h2{font-size:17px}}

/* Vendor identity stays visible without adding another drawing toolbar. */
.access-profile-badge{display:inline-block;font-size:10px;font-weight:700;line-height:1.5;letter-spacing:.02em;color:#4b6789;background:#eaf0f7;border:1px solid #d8e2ee;border-radius:4px;padding:2px 6px;margin:0 0 5px;vertical-align:middle}.device-type small{display:block;color:var(--muted,#65746b);font-size:10px;margin-top:3px;overflow-wrap:anywhere}.access-table .access-profile-badge{display:table;margin-bottom:5px}.inspector-section a{color:#37688f;text-decoration:underline;text-underline-offset:2px}#access-profile-field{margin-bottom:12px}

.library-grid:has([data-product]){grid-template-columns:1fr}.device-type[data-product]{min-height:52px}#library .device-type[data-product] small{display:block}

/* Door configuration keeps project setup inside the Inspector workflow. */
.config-door-launcher{margin:6px 0 14px}#door-config-dialog{width:min(920px,calc(100vw - 28px));max-height:calc(100dvh - 28px);padding:0;overflow:auto}#door-config-form>.scan-heading{padding:22px 24px 14px;margin:0}.config-tabs{display:flex;gap:4px;padding:0 24px;border-bottom:1px solid var(--line);background:#fff;position:sticky;top:0;z-index:2}.config-tabs button{border:0;border-bottom:3px solid transparent;padding:12px 15px;background:transparent;color:var(--muted);font-weight:650;min-height:44px}.config-tabs button[aria-selected=true]{color:var(--green);border-color:var(--green)}.config-content{padding:20px 24px}.config-content h3{font-size:14px;margin:20px 0 6px}.config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}.config-grid .field{margin:0 0 10px;min-width:0}.config-grid input,.config-grid select,.config-grid textarea{width:100%;min-width:0}.config-requirements{display:flex;flex-wrap:wrap;gap:12px 24px;margin:16px 0}.config-requirements label{display:flex;align-items:center;gap:8px;font-size:13px}.config-component,.config-order-card,.expansion-board{border:1px solid var(--line);border-radius:10px;background:#fff;padding:14px;margin:12px 0}.config-component-choice{display:flex;align-items:flex-start;gap:10px;cursor:pointer;min-height:36px}.config-component-choice input{margin-top:4px;width:17px;height:17px}.config-component-choice strong{font-size:13px;line-height:1.5}.config-component-choice small,.expansion-board small{display:block;color:var(--muted);font-size:11px;line-height:1.6}.config-component details{margin:10px 0 0}.config-component summary{font-size:12px;font-weight:650;padding:10px 0;cursor:pointer}.config-component [data-config-details]{padding:12px 0 0 27px}.config-footer{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--line);padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:14px;z-index:2}.config-footer p{margin:0;font-size:12px;line-height:1.5;color:#965d27}.config-footer button{flex-shrink:0}.config-review-group{margin:12px 0;border:1px solid var(--line);border-radius:9px;padding:0 14px}.config-review-group>summary{display:flex;justify-content:space-between;gap:12px;cursor:pointer;padding:15px 0;font-weight:650;font-size:13px}.config-review-group>summary>span:last-child{font-size:11px;color:var(--muted);font-weight:500}.config-review-issue{padding:12px 0;border-top:1px solid var(--line);line-height:1.5}.config-review-issue p{margin:0;font-size:13px}.config-review-issue small{display:block;font-size:11px;color:var(--muted);margin:4px 0}.text-button{border:0;background:transparent;color:var(--green);padding:6px 0;text-decoration:underline;font-size:12px;cursor:pointer}#controller-expansion-dialog{width:min(720px,calc(100vw - 28px));padding:22px;max-height:calc(100dvh - 28px);overflow:auto}.expansion-board .button{margin-top:8px}.config-order-card h3{margin-top:0}.config-content a{color:#37688f;text-decoration:underline}#door-config-dialog [hidden]{display:none!important}@media(max-width:600px){#door-config-form>.scan-heading{padding:16px}.config-tabs{padding:0 12px}.config-tabs button{padding:12px 11px;font-size:12px}.config-content{padding:16px}.config-grid{grid-template-columns:1fr;gap:2px}.config-component [data-config-details]{padding-left:0}.config-footer{padding:12px 16px;align-items:stretch;flex-direction:column;gap:8px}.config-footer button{width:100%}#door-config-title{font-size:18px}#controller-expansion-dialog{padding:16px}}

.config-content .field textarea{display:block;box-sizing:border-box;width:100%;min-height:72px;margin-top:6px;padding:10px 11px;border:1px solid #d7ddd7;border-radius:6px;background:#fff;color:#283c31;font:inherit;line-height:1.5;resize:vertical}

@media(max-width:600px){.config-tabs button{flex:1;white-space:nowrap;padding-left:5px;padding-right:5px}}

/* Access project review stays within the existing schedule workflow. */
.readiness-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 20px}.readiness-summary>div{display:flex;flex-direction:column;gap:6px;padding:16px;background:var(--surface,#fff);border:1px solid var(--line,#d8dfdc);border-radius:12px}.readiness-summary strong{font-size:26px;line-height:1.1}.readiness-summary span{font-size:13px;color:#576b63}.readiness-doors{display:grid;gap:16px}.readiness-card{padding:20px;border:1px solid #d8dfdc;border-radius:12px;background:#fff;margin-bottom:12px;min-width:0}.readiness-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.readiness-heading h2{margin:0;font-size:17px}.readiness-heading h2 button{font-size:inherit;font-weight:650}.readiness-heading p{margin:5px 0 12px}.readiness-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:16px}.readiness-groups details{border:1px solid #dce3df;border-radius:8px;min-width:0;align-self:start}.readiness-groups summary{padding:12px;cursor:pointer;font-size:13px;font-weight:600;min-height:44px}.readiness-groups summary span{float:right;font-size:12px;margin-left:8px;color:#52665e}.readiness-groups ul{padding:0 16px 0 30px;font-size:13px;line-height:1.6}.readiness-groups li{margin:8px 0;overflow-wrap:anywhere}.readiness-groups .hint{padding:0 12px}.readiness-clear{background:#f7faf8}.readiness-card button{white-space:normal;text-align:left}.readiness-card>summary{cursor:pointer;min-height:44px;font-weight:600}.readiness-card .schedule-device{display:inline}.readiness-card .assignment-summary{margin:8px 0}.readiness-heading>.button{white-space:nowrap}.readiness-doors .subtle{overflow-wrap:anywhere}#assembly-dialog{max-height:calc(100dvh - 28px);overflow:auto}#assembly-form>.dialog-actions{position:sticky;bottom:-1px;background:#fff;padding-top:12px}#assembly-hub-fields[hidden],#assembly-shared-fields[hidden]{display:none}
@media(max-width:650px){.readiness-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.readiness-card{padding:14px}.readiness-heading{flex-direction:column;gap:4px}.readiness-groups{grid-template-columns:minmax(0,1fr)}.readiness-groups summary{padding:12px 10px}.readiness-summary>div{padding:12px}.readiness-card .button{min-height:44px}#assembly-dialog input,#assembly-dialog select{min-height:44px;font-size:16px}}

.access-cable-connections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.access-cable-connections .readiness-card{margin-bottom:0}.access-cable-connections h2{font-size:16px}.access-cable-connections details{margin:12px 0;font-size:13px}.access-cable-connections li{line-height:1.5;margin-bottom:8px}.access-cable-connections>p{grid-column:1/-1}.access-cable-connections p{overflow-wrap:anywhere}.access-cable-status{font-size:12px;white-space:nowrap;padding:5px 8px;border-radius:6px;background:#eef4f1;color:#285e47}.access-cable-connections .assembly-actions{margin-top:12px}#access-cable-planning>details{margin-top:16px}#access-route-dialog{width:min(660px,calc(100vw - 28px));padding:24px;max-height:calc(100dvh - 28px);overflow:auto}#access-route-dialog .scan-heading h2{font-size:20px}#access-route-dialog .field input,#access-route-dialog .field select{width:100%;min-width:0}#access-route-pathway-fields[hidden]{display:none}.access-route-preview svg{display:block;width:100%;height:auto;max-height:260px;border:1px solid #d8dfdc;border-radius:8px;background:#fafbf9}.access-route-preview:empty{display:none}#access-route-form>.dialog-actions{position:sticky;bottom:0;padding-top:12px;background:#fff}#access-route-context{overflow-wrap:anywhere;font-size:14px}#access-cable-planning .table-card{overflow-x:auto}
@media(max-width:800px){.access-cable-connections{grid-template-columns:minmax(0,1fr)}}@media(max-width:550px){#access-route-dialog{padding:16px}#access-route-dialog input,#access-route-dialog select{font-size:16px;min-height:44px}.access-cable-connections .button{min-height:44px}.access-cable-connections .readiness-heading{gap:8px}}

#access-route-target-fields[hidden]{display:none}

#drawing-search-dialog{width:min(660px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow:auto;padding:24px}#drawing-search-query{width:100%}.drawing-search-result{display:flex;flex-direction:column;gap:6px;padding:14px;width:100%;border:1px solid #dce4df;border-radius:8px;background:#fff;margin-bottom:8px;text-align:left;cursor:pointer;color:#263f34}.drawing-search-result:hover,.drawing-search-result:focus-visible{background:#f0f6f3;border-color:#397a61}.drawing-search-result span{font-size:12px;color:#65776e}.drawing-search-result strong{font-size:14px;overflow-wrap:anywhere}.selection-mode-banner{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:6;display:flex;align-items:center;gap:12px;max-width:calc(100% - 24px);padding:8px 12px;border:1px solid #cbd9d1;border-radius:10px;background:#fffefa;box-shadow:0 3px 14px #223a2620;font-size:12px}.selection-mode-banner[hidden]{display:none}.selection-mode-banner .button{white-space:nowrap}.locked-layer-banner{padding:12px;border:1px solid #d9e2dd;border-radius:8px;background:#f1f5f2;margin-bottom:16px;font-size:13px}#group-align,#group-duplicate{margin-bottom:12px}#view-actions small{color:#6b7a71;margin-left:12px}#drawing-lock-controls input{accent-color:#28674f}@media(max-width:550px){#drawing-search-dialog{padding:16px}#drawing-search-dialog input{font-size:16px;min-height:44px}.drawing-search-result{min-height:54px}.selection-mode-banner{width:calc(100% - 24px);font-size:11px}.selection-mode-banner .button{min-height:40px}}
