*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1a1530;background:#fff}.screen{max-width:48rem;margin:0 auto;padding:1.25rem}h1{font-size:2rem;margin:0 0 .5rem}h2{font-size:1.5rem}.state{font-size:1.5rem;font-weight:600;margin:0 0 1rem}.state-connected{color:#2f7a5a}.state-dropped{color:#1a1530;background:#f5e9d2;border:2px solid #C9892B;border-radius:.5rem;padding:.75rem 1rem}.action{display:block;width:100%;min-height:60px;font-size:1.75rem;font-weight:600;color:#fff;background:#6b35a7;border:0;border-radius:.75rem}.action:active:not(:disabled){background:#5c2d90}.action:disabled{opacity:.5}.notice,.error{font-size:1.5rem;line-height:1.4;padding:1rem;border-radius:.5rem}.notice{color:#1a1530;background:#f5e9d2}.error{color:#b0382f;background:#f7e4e1}.latest{margin:1.5rem 0;text-align:center}.mm{font-size:4.5rem;font-weight:700;line-height:1.1;margin:0}.mm.empty{font-size:2rem;font-weight:400;color:#666}.metres{font-size:2.5rem;margin:0}.history{list-style:none;margin:0;padding:0;font-size:1.25rem;font-variant-numeric:tabular-nums}.history li{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid #ddd}.capture{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;overflow:hidden;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.laser-bar{position:relative;display:flex;align-items:center;gap:.5rem;min-height:48px;padding:0 .5rem;border-bottom:1px solid #ddd;background:#fff;z-index:2}.light-button{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:none;border:0;padding:0}.light{width:20px;height:20px;border-radius:50%;background:#b0382f;border:2px solid #1A1530}.light-green .light{background:#2f7a5a}.laser-label{font-size:1rem;font-weight:600}.laser-menu{position:absolute;top:100%;left:.5rem;width:min(22rem,calc(100vw - 1rem));padding:.75rem;background:#fff;border:1px solid #1A1530;border-radius:.75rem;box-shadow:0 4px 16px #1a153040}.laser-menu .notice,.laser-menu .error{font-size:1rem;margin:0}.latest-reading{margin:.75rem 0 0;font-size:1.25rem;font-weight:600}.workspace{flex:1;min-height:0;display:flex}.drawing{flex:1;min-width:0;min-height:0;touch-action:none;background:#fafafa}.plan{display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.wall-hit{stroke:transparent;pointer-events:stroke}.wall{stroke:#1a1530;stroke-width:4;pointer-events:none}.wall.drawn{stroke:#c9892b;stroke-dasharray:10 6}.wall.calculated{stroke:#2f7d8c;stroke-dasharray:3 5}.wall.critical{stroke:#1f7a45;stroke-width:7;stroke-dasharray:none}.wall.selected{stroke:#6b35a7;stroke-width:8;stroke-dasharray:none}.wall-label{font-size:14px;font-weight:700;fill:#1a1530;paint-order:stroke;stroke:#fafafa;stroke-width:4px;pointer-events:none}.wall-label.drawn{font-weight:400;font-style:italic;fill:#8a5a0f}.wall-label.calculated{font-weight:400;font-style:italic;fill:#1f5f6b}.wall-label.critical{fill:#1f7a45}.gap line{stroke:#b0382f;stroke-width:4}.gap circle{fill:none;stroke:#b0382f;stroke-width:3}.corner-hit{fill:transparent}.corner{fill:#6b35a7;stroke:#fff;stroke-width:2;pointer-events:none}.corner.selected{fill:#1a1530}.corner-close{fill:none;stroke:#2f7a5a;stroke-width:3;pointer-events:none}.panel{height:13rem;overflow-y:auto;padding:.5rem;border-top:1px solid #ddd;background:#fff}.panel .action{min-height:48px;font-size:1.125rem;padding:0 1rem;width:auto}.panel .buttons{display:flex;gap:.5rem}.panel .buttons .action{flex:1}.field .toggle{flex:none;display:flex;align-items:center;gap:.5rem;min-height:48px}.field .toggle input{width:28px;min-height:0;height:28px;margin:0;accent-color:#6B35A7}.field{display:flex;align-items:flex-end;gap:.5rem;margin-bottom:.5rem}.field label{flex:1;font-weight:600}.field input{display:block;width:100%;min-height:48px;margin-top:.25rem;font-size:1.25rem;padding:0 .5rem;border:2px solid #1A1530;border-radius:.5rem}.closure{margin:0 0 .5rem;padding:.5rem .75rem;font-size:1.25rem;font-weight:700;border-radius:.5rem}.closure.ok{color:#2f7a5a;padding:.5rem 0}.closure.error{color:#b0382f;background:#f5e9d2;border:2px solid #C9892B}.opening-gap{stroke:#fafafa;stroke-width:10;pointer-events:none}.opening-line{stroke:#1a1530;stroke-width:2;fill:none;pointer-events:none}.opening.door .opening-line.leaf{stroke-width:3}.opening.door .opening-line.arc{stroke-width:1.5;stroke-dasharray:4 3}.opening.problem .opening-line,.opening.problem .opening-label{stroke:#b0382f;color:#b0382f}.opening.problem .opening-label{fill:#b0382f;stroke:#fafafa}.opening.selected .opening-line{stroke:#6b35a7;stroke-width:4}.opening.selected .opening-line.arc{stroke-width:2}.opening-label{font-size:12px;font-weight:700;fill:#1a1530;paint-order:stroke;stroke:#fafafa;stroke-width:3px;pointer-events:none}.opening-label.offset{font-weight:400}.opening.selected .opening-label{fill:#6b35a7}.panel .message{font-size:1rem;padding:.5rem .75rem;margin:0 0 .5rem}.opening-fields{flex-wrap:wrap}.opening-fields label{min-width:7rem}.opening-fields label.active input{border-color:#6b35a7;box-shadow:0 0 0 3px #d9c6ee}.panel .buttons{margin-bottom:.5rem}.opening.problem.selected .opening-line,.opening.problem.selected .opening-label{stroke:#b0382f}.opening.problem.selected .opening-label{fill:#b0382f;stroke:#fafafa}.tray{flex:none;width:6rem;display:flex;flex-direction:column;gap:.25rem;padding:.25rem;overflow-y:auto;border-right:1px solid #ddd;background:#fff}.tray-item{flex:none;min-width:48px;min-height:64px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.125rem;padding:.25rem;font-size:.75rem;font-weight:600;line-height:1.1;text-align:center;color:#1a1530;border:2px solid #1A1530;border-radius:.5rem;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.tray-item.dragging{border-color:#6b35a7;background:#efe5f8}.tray-ghost{position:fixed;z-index:10;transform:translate(-50%,-50%);color:#6b35a7;pointer-events:none}.service{pointer-events:none}.service-hit{fill:transparent}.service-body{fill:#e9e3f2;fill-opacity:.8;stroke:#1a1530;stroke-width:2}.service-icon{color:#1a1530}.service-label{font-size:12px;font-weight:400;fill:#1a1530;paint-order:stroke;stroke:#fafafa;stroke-width:3px}.service.selected .service-body{stroke:#6b35a7;stroke-width:4}.service.selected .service-label{fill:#6b35a7}.service.selected .service-icon{color:#6b35a7}.service.problem .service-body{fill:#f7e4e1;stroke:#b0382f}.service.problem .service-label{fill:#b0382f}.service.problem .service-icon{color:#b0382f}.panel{height:18rem}@media(max-width:600px){.panel{height:22rem}.service-fields{display:grid;grid-template-columns:repeat(3,1fr);align-items:end}.service-fields label{min-width:0;font-size:.8rem;line-height:1.15}}
