:root{color:#1f2937;background:#f3f4f6;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:13px}*{box-sizing:border-box}body{margin:0}button{font:inherit;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:4px 10px}@media (hover:hover){button:hover:not(:disabled){background:#f3f4f6}}button:disabled{opacity:.45;cursor:default}button.danger{color:#b91c1c;border-color:#fca5a5}input,select,textarea{font:inherit;border:1px solid #d1d5db;border-radius:6px;width:100%;padding:4px 6px}input:disabled{color:#9ca3af;background:#f3f4f6}h1{margin:0 0 12px;font-size:16px}h2{text-transform:uppercase;letter-spacing:.05em;color:#6b7280;margin:0 0 8px;font-size:12px}h3{margin:12px 0 4px;font-size:12px}.app{grid-template-columns:250px 1fr 320px;height:100vh;display:grid}aside{background:#fff;padding:12px;overflow:auto}aside.left{border-right:1px solid #e5e7eb}aside.right{border-left:1px solid #e5e7eb}main{flex-direction:column;min-width:0;min-height:0;display:flex}.panel{margin-bottom:18px}.toolbar{background:#fff;border-bottom:1px solid #e5e7eb;align-items:center;gap:8px;padding:8px 12px;display:flex}.spacer{flex:1}.muted{color:#6b7280}.hint{color:#9ca3af;font-size:11px}.notes{color:#4b5563;white-space:pre-wrap;font-size:12px}.badge{border-radius:99px;margin-left:6px;padding:1px 6px;font-size:11px;display:inline-block}.badge.warn{color:#92400e;background:#fef3c7}.error{color:#991b1b;cursor:pointer;background:#fee2e2;padding:6px 12px}.auth{place-items:center;min-height:100dvh;padding:16px;display:grid}.auth-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;flex-direction:column;gap:4px;width:min(360px,100%);padding:20px;display:flex}.auth-card input{padding:8px;font-size:16px}.auth-card button.primary{color:#fff;background:#2563eb;border-color:#2563eb;margin-top:6px;padding:8px}.auth-error{color:#b91c1c;margin:4px 0}.account{justify-content:space-between;align-items:baseline;gap:6px;margin-bottom:12px;display:flex}.account h1{margin:0}.account a{color:#6b7280;cursor:pointer;margin-left:8px;font-size:11px}.account a:hover{text-decoration:underline}.empty{color:#6b7280;flex:1;place-items:center;display:grid}.rooms,.catalog,.checks,.plain{margin:0;padding:0;list-style:none}.dot{background:#f59e0b;border-radius:50%;width:6px;height:6px}.catalog li{justify-content:space-between;align-items:center;gap:6px;padding:3px 0;display:flex}.catalog small{color:#9ca3af}.catalog button{padding:1px 8px;font-size:12px}.checks li{cursor:pointer;border-radius:6px;margin-bottom:3px;padding:5px 6px}.checks li.error{background:#fee2e2}.checks li.warning{background:#fef3c7}.checks li.info{color:#4b5563;background:#f3f4f6}.plain li{margin-bottom:6px}.raw-note{white-space:pre-wrap;background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;padding:6px;font-size:11px}.field{flex-direction:column;gap:2px;margin-bottom:8px;display:flex}.field span{color:#6b7280;font-size:11px}.field input[type=color]{height:28px;padding:2px}.grid3{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.check{align-items:center;gap:6px;margin-bottom:6px;display:flex}.check input{width:auto}.gaps{color:#4b5563;background:#f9fafb;border-radius:6px;margin-bottom:10px;padding:6px;font-size:12px}.buttons{gap:6px;margin-top:8px;display:flex}.add-form{flex-direction:column;gap:6px;display:flex}.canvas{touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;background:#e5e7eb;flex:1;width:100%;min-height:0;display:block}.canvas text{text-anchor:middle;dominant-baseline:middle;font-family:inherit}.canvas *{vector-effect:non-scaling-stroke}.wall{fill:#4b5563}.floor{fill:#fafaf9}.grid-line{fill:none;stroke:#e7e5e4;stroke-width:1px}.opening-gap{fill:#fafaf9}.unconfirmed .opening-gap,.unconfirmed .closet{stroke:#f59e0b;stroke-width:1.5px;stroke-dasharray:4 3}.closet{fill:#ece8e1;stroke:#4b5563;stroke-width:1px}.closet-label{fill:#78716c}.window-pane{stroke:#0284c7;stroke-width:1.5px}.door-leaf{stroke:#b45309;stroke-width:3px}.door-arc{fill:none;stroke:#9ca3af;stroke-width:1px}.dim text{fill:#374151}.dim .compass{fill:#9ca3af;font-weight:600}.gap-lines line{stroke:#2563eb;stroke-width:1px}.gap-lines text{fill:#2563eb;dominant-baseline:auto}.item{cursor:move}.item-body{fill:#d6c4a2;stroke:#6b5a3e;stroke-width:1.5px}.item.hypothetical .item-body{fill:#bfdbfe;fill-opacity:.7;stroke:#2563eb}.item.flag-warning .item-body{stroke:#d97706;stroke-width:2.5px}.item.flag-error .item-body{stroke:#dc2626;stroke-width:2.5px}.item.selected .item-body{stroke:#2563eb;stroke-width:2.5px}.item-label{pointer-events:none;fill:#1f2937}.handle{fill:#fff;stroke:#2563eb;stroke-width:1.5px}.handle-hit{fill:#0000;stroke:none}.rotate-stem{stroke:#2563eb;stroke-width:1px}.lock{pointer-events:none}.item.locked{cursor:default}.house-floor{fill:#fff}.ext-wall{fill:none;stroke:#1f2937;stroke-linejoin:miter;vector-effect:none!important}.room-obj{cursor:pointer}.room-obj.locked{cursor:default}.room-band{fill:#9ca3af;fill-opacity:.35;pointer-events:none}.wall-band{fill:#4b5563}.wall-band.unconfirmed{fill:#9ca3af}.room-floor{fill:#0000;stroke:#6b7280;stroke-width:1px}.room-obj:hover .room-floor{fill:#3b82f614}.room-obj.flag-warning .room-floor{stroke:#d97706;stroke-width:2.5px}.room-obj.flag-error .room-floor{stroke:#dc2626;stroke-width:2.5px}.room-obj .opening-gap{fill:#fff}.room-obj .closet{fill:#e7e5e499}.room-label text{fill:#1f2937;paint-order:stroke;stroke:#fdfcfa;stroke-width:3px;font-weight:600}.room-label text+text{fill:#4b5563;font-weight:400}.crumbs{align-items:center;gap:6px;display:flex}.crumbs a,.link{color:#2563eb;cursor:pointer}.rotate-row{align-items:center;gap:4px;margin-bottom:10px;display:flex}.rotate-row span{color:#6b7280;margin-right:2px;font-size:11px}.rotate-row button{padding:2px 7px;font-size:12px}.view-rot{align-items:center;gap:4px;display:inline-flex}.rotate-handle{cursor:grab}.rotate-disc{fill:#fff;stroke:#2563eb;stroke-width:1.5px}.rotate-handle:hover .rotate-disc{fill:#eff6ff}.rotate-glyph{fill:#2563eb;pointer-events:none;font-weight:700}.rooms li{cursor:default;padding:0;display:block}.rooms .room-row{cursor:pointer;border-radius:6px;align-items:center;gap:6px;padding:6px 8px;display:flex}.rooms .room-row small{color:#9ca3af;margin-left:auto}.rooms .room-row:hover{background:#f3f4f6}.rooms .room-row.active{background:#dbeafe}.rooms li.child>.room-row{margin-left:14px}.layouts{margin:2px 0 6px;padding:0 0 0 30px;list-style:none}.rooms li.child .layouts{padding-left:36px}.layouts .layout{cursor:pointer;border-radius:6px;align-items:center;gap:6px;padding:4px 6px;font-size:12px;display:flex;position:relative}.layouts .layout:hover{background:#f3f4f6}.layouts .layout.active{background:#eef2ff;font-weight:600}.layouts .layout.drop-target{box-shadow:inset 0 2px #2563eb}.layouts .layout small{color:#9ca3af;margin-left:auto}.layouts .layout input{padding:1px 4px;font-size:12px}.layouts .layout.new{color:#2563eb}.layouts .layout.new:hover{background:0 0;text-decoration:underline}.layouts .layout.creating:hover{background:0 0}.modal-backdrop{z-index:50;background:#11182759;place-items:center;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:10px;width:min(440px,92vw);max-height:85vh;padding:18px 20px;overflow:auto;box-shadow:0 20px 50px #00000040}.modal h3{margin:0 0 8px;font-size:15px}.modal .modal-body{color:#374151;font-size:13px;line-height:1.45}.modal .modal-body ul{margin:8px 0 0;padding-left:18px}.modal .buttons{justify-content:flex-end;margin-top:16px}.modal button.primary{color:#fff;background:#2563eb;border-color:#2563eb}.modal button.danger{color:#fff;background:#dc2626;border-color:#dc2626}.layout-icon{text-align:center;color:#d97706;width:12px}.layout-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.layout-menu-btn{background:0 0;border:none;padding:0 6px;font-size:12px;line-height:16px}.layout-menu{z-index:10;background:#fff;border:1px solid #e5e7eb;border-radius:8px;flex-direction:column;min-width:140px;padding:4px;display:flex;position:absolute;top:100%;right:0;box-shadow:0 6px 20px #0000001f}.layout-menu button{text-align:left;border:none;padding:6px 8px;font-size:12px}.where{color:#6b7280;font-size:11px}.layout-crumb{color:#4338ca;font-weight:600}.search{margin-bottom:8px;position:relative}.search input{box-sizing:border-box;width:100%;padding-right:24px}.search .clear{color:#4b5563;cursor:pointer;background:#e5e7eb;border:none;border-radius:50%;width:18px;height:18px;padding:0;font-size:13px;line-height:18px;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.search .clear:hover{color:#111827;background:#d1d5db}button.primary{color:#fff;background:#2563eb;border-color:#2563eb}@media (hover:hover){button.primary:hover:not(:disabled){background:#1d4ed8}}button.mini{padding:1px 8px;font-size:12px}.menu-backdrop{z-index:9;position:fixed;inset:0}.added{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;font-size:12px;display:flex}.app.phone{height:100dvh;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);-webkit-tap-highlight-color:transparent;flex-direction:column;display:flex}.phone button{touch-action:manipulation;min-height:36px;padding:6px 12px}.phone input,.phone select,.phone textarea{padding:7px 8px;font-size:16px}.phone .hint{font-size:12px}.m-top{z-index:30;padding:6px 8px;padding-top:max(6px, env(safe-area-inset-top));background:#fff;border-bottom:1px solid #e5e7eb;align-items:center;gap:4px;display:flex;position:relative}.m-top .crumbs{white-space:nowrap;min-width:0;font-size:14px;overflow:hidden}.m-top .crumbs>*{text-overflow:ellipsis;flex-shrink:1;overflow:hidden}.m-top .crumbs a{flex-shrink:0}.m-top>button{border:none;min-width:40px;padding:4px 8px;font-size:18px}.m-menu{z-index:40;background:#fff;border:1px solid #e5e7eb;border-radius:10px;flex-direction:column;gap:2px;min-width:220px;padding:6px;display:flex;position:absolute;top:100%;right:8px;box-shadow:0 8px 24px #00000026}.m-menu button{text-align:left;border:none;font-size:15px}.m-menu-row{align-items:center;gap:6px;padding:2px 0 2px 12px;font-size:15px;display:flex}.m-menu-row span{flex:1}.m-menu-row button{border:1px solid #d1d5db;font-size:18px}.m-menu hr{border:none;border-top:1px solid #e5e7eb;width:100%;margin:4px 0}.m-menu .hint{padding:2px 12px}.m-main{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.m-actions{z-index:10;white-space:nowrap;background:#fff;border-radius:12px;gap:6px;padding:6px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0000002e}.sheet{z-index:20;background:#fff;border-radius:14px 14px 0 0;flex-direction:column;height:55%;display:flex;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -8px 24px #00000026}.sheet.full{border-radius:0;height:100%}.sheet-head{touch-action:none;border-bottom:1px solid #f3f4f6;align-items:center;gap:4px;padding:14px 8px 6px 14px;display:flex;position:relative}.sheet-head .grabber{background:#d1d5db;border-radius:2px;width:36px;height:4px;margin-left:-18px;position:absolute;top:6px;left:50%}.sheet-head strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.sheet-head button{border:none;min-width:40px;font-size:18px}.sheet-body{overscroll-behavior:contain;flex:1;min-height:0;padding:12px 14px;overflow:auto}.m-tabs{padding-bottom:env(safe-area-inset-bottom);background:#fff;border-top:1px solid #e5e7eb;display:flex}.m-tabs button{color:#6b7280;background:#fff;border:none;border-radius:0;flex-direction:column;flex:1;align-items:center;gap:2px;min-height:52px;padding:6px 0 4px;font-size:11px;display:flex;position:relative}.m-tabs button.active{color:#2563eb}.m-tab-icon{font-size:18px;line-height:1}.m-badge{color:#fff;background:#dc2626;border-radius:99px;min-width:16px;padding:0 5px;font-size:10px;line-height:16px;position:absolute;top:4px;left:56%}.phone .rooms .room-row{padding:10px 8px;font-size:15px}.phone .layouts .layout{padding:8px 6px;font-size:14px}.phone .layouts .layout input{padding:4px 6px;font-size:16px}.phone .layout-menu-btn{min-width:40px;min-height:32px;font-size:16px}.phone .layout-menu{min-width:190px}.phone .layout-menu button{padding:10px 12px;font-size:15px}.phone button.mini{min-height:32px;font-size:14px}.phone .catalog li{padding:6px 0;font-size:14px}.phone .checks li{padding:10px;font-size:14px}.phone .search .clear{width:26px;height:26px;min-height:0;padding:0}.phone .field span{font-size:12px}
