/* generated by scripts/site-plans.ts from src/ui/editor/editor.css: the plan drawing's rules */
.canvas { display: block; width: 100%; height: 100%; touch-action: none; user-select: none; -webkit-user-select: none; }
.canvas .underlay { pointer-events: none; }
.canvas .hit, .canvas .ophit, .canvas .roomhit { fill: transparent; }
.canvas .hit { pointer-events: fill; cursor: pointer; }
.canvas .region { fill: var(--pen-soft); pointer-events: none; }
.canvas .wall { fill: var(--wall); pointer-events: none; }
.canvas .wall.sel { fill: var(--pen); }
.canvas .divider { stroke: var(--fx); stroke-width: 1.5; stroke-dasharray: 7 5; vector-effect: non-scaling-stroke; pointer-events: none; }
.canvas .divider.sel { stroke: var(--pen); stroke-width: 2.5; }
.canvas .divider.fdiv { stroke: var(--power); stroke-width: 2; stroke-dasharray: 2 4; }
.canvas .divider.fdiv.both { stroke-dasharray: 8 4; }
.canvas .divider.fdiv.sel { stroke: var(--pen); }
.canvas .ftint { stroke: none; fill-opacity: .2; pointer-events: none; }
.canvas .fpat { stroke: none; pointer-events: none; }
.canvas .patl { stroke: var(--ink-2); stroke-width: 0.008; opacity: .35; }
.canvas .ophit { pointer-events: fill; cursor: ew-resize; }
.canvas .win { fill: var(--win); stroke: var(--wall); stroke-width: 1; vector-effect: non-scaling-stroke; }
.canvas .winl, .canvas .jamb { stroke: var(--wall); stroke-width: 1; vector-effect: non-scaling-stroke; }
.canvas .leaf { stroke: var(--wall); stroke-width: 2; vector-effect: non-scaling-stroke; }
.canvas .swing { fill: none; stroke: var(--fx); stroke-width: 1; stroke-dasharray: 3 3; vector-effect: non-scaling-stroke; }
.canvas .opl, .canvas .garage { stroke: var(--fx); stroke-width: 1.2; stroke-dasharray: 2 4; vector-effect: non-scaling-stroke; }
.canvas .slide { fill: var(--sheet); stroke: var(--wall); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.canvas .slideghost { fill: none; stroke: var(--fx); stroke-width: 1; stroke-dasharray: 3 3; vector-effect: non-scaling-stroke; }
.canvas .slidearrow { fill: none; stroke: var(--fx); stroke-width: 1; vector-effect: non-scaling-stroke; }
.canvas .op.sel .leaf, .canvas .op.sel .winl, .canvas .op.sel .jamb, .canvas .op.sel .swing, .canvas .op.sel .opl, .canvas .op.sel .slide { stroke: var(--pen); }
.canvas .op.sel .win { stroke: var(--pen); fill: var(--pen-soft); }
.canvas .fix { cursor: move; }
.canvas .fixtures.faint { opacity: .5; }
.canvas .fixtures.faint .fix { cursor: pointer; }
.canvas .fx { fill: var(--fx-fill); stroke: var(--fx); stroke-width: 1; vector-effect: non-scaling-stroke; }
.canvas .fx2 { fill: var(--sheet); stroke: var(--fx); stroke-width: 1; vector-effect: non-scaling-stroke; }
.canvas .fxl { fill: none; stroke: var(--fx); stroke-width: 1; vector-effect: non-scaling-stroke; }
.canvas .fxd { fill: none; stroke: var(--fx); stroke-width: 1; stroke-dasharray: 4 3; vector-effect: non-scaling-stroke; pointer-events: none; }
.canvas .arrow { fill: none; stroke: var(--fx); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.canvas .arrowdot { fill: var(--fx); }
.canvas .hatchl { stroke: var(--fx); stroke-width: 0.012; opacity: .55; }
.canvas .hatchfill { stroke: none; pointer-events: none; }
.canvas .glass { fill: var(--win); stroke: var(--fx); stroke-width: 1; vector-effect: non-scaling-stroke; }
.canvas .flame { fill: var(--warn); fill-opacity: .75; stroke: none; pointer-events: none; }
.canvas .svcw { fill: var(--water); stroke: var(--sheet); stroke-width: 1; vector-effect: non-scaling-stroke; pointer-events: none; }
.canvas .svcP { fill: var(--power); stroke: var(--sheet); stroke-width: 1; vector-effect: non-scaling-stroke; pointer-events: none; }
.canvas .svcp { fill: var(--sheet); stroke: var(--power); stroke-width: 2; vector-effect: non-scaling-stroke; pointer-events: none; }
.canvas .over { fill: none; stroke: var(--ink-3); stroke-width: 1.2; stroke-dasharray: 6 4; vector-effect: non-scaling-stroke; pointer-events: none; }
.canvas .fix.sel .fx { stroke: var(--pen); stroke-width: 2; fill: var(--pen-soft); }
.canvas .fix.clash .fx { stroke: var(--warn); stroke-width: 2; stroke-dasharray: 5 3; }
.canvas .fxt { font-weight: 500; fill: var(--ink-2); text-anchor: middle; dominant-baseline: central; pointer-events: none; }
.canvas .mmark { fill: var(--pen); stroke: var(--sheet); stroke-width: 1.5; vector-effect: non-scaling-stroke; pointer-events: none; }
.canvas .room, .canvas .floor { cursor: move; }
.canvas .unroom { cursor: pointer; }
.canvas .roomhit { pointer-events: fill; }
.canvas .rname { font-weight: 600; fill: var(--ink); text-anchor: middle; }
.canvas .rarea { fill: var(--ink-3); text-anchor: middle; }
.canvas .rname, .canvas .rarea { paint-order: stroke; stroke: var(--bg); stroke-width: 3.5px; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.canvas .room.sel .rname, .canvas .room.sel .rarea { fill: var(--pen); }
.canvas .unroom .rname { fill: var(--ink-3); font-style: italic; font-weight: 500; }
.canvas .unroom:hover .rname { fill: var(--pen); }
.canvas .fname { font-weight: 600; text-anchor: middle; }
.canvas .farea { fill: var(--ink-3); text-anchor: middle; }
.canvas .floor.sel .fname { text-decoration: underline; }
.canvas .wfin { fill: none; stroke-width: 4; stroke-linecap: butt; vector-effect: non-scaling-stroke; pointer-events: none; }
.canvas .wfinu { fill: none; stroke: var(--ink-3); stroke-opacity: .45; stroke-width: 6; vector-effect: non-scaling-stroke; pointer-events: none; }
.canvas .dim { pointer-events: none; }
.canvas .dim[data-dim] .dbg { pointer-events: fill; cursor: text; }
.canvas .dim[data-dim]:hover .dbg { stroke: var(--pen); stroke-width: 1; vector-effect: non-scaling-stroke; }
.canvas .dl, .canvas .dtick { stroke: var(--pen); stroke-width: 1; vector-effect: non-scaling-stroke; }
.canvas .dbg { fill: var(--sheet); }
.canvas .dt { font-weight: 600; fill: var(--pen); text-anchor: middle; dominant-baseline: central; }
.canvas .dim.chain .dl, .canvas .dim.chain .dtick, .canvas .dim.total .dl, .canvas .dim.total .dtick { stroke: var(--ink-3); }
.canvas .dim.chain .dt, .canvas .dim.total .dt { fill: var(--ink-2); }
.canvas .dim.total .dt { font-weight: 600; }
.canvas .dim.chain .dbg, .canvas .dim.total .dbg { fill: var(--bg); }
.canvas .wlen { fill: var(--ink-3); text-anchor: middle; dominant-baseline: central; pointer-events: none; }
.canvas .handle { fill: var(--sheet); stroke: var(--pen); stroke-width: 2; vector-effect: non-scaling-stroke; cursor: grab; }
.canvas .ghost { stroke: var(--pen); opacity: .55; pointer-events: none; }
.canvas .ghostv { stroke: var(--pen); stroke-width: 2; stroke-dasharray: 7 5; vector-effect: non-scaling-stroke; pointer-events: none; }
.canvas .mpt { fill: var(--pen); pointer-events: none; }
.canvas.tool-wall, .canvas.tool-divider, .canvas.tool-floorline, .canvas.tool-measure { cursor: crosshair; }
.canvas.tool-door .hit, .canvas.tool-window .hit, .canvas.tool-opening .hit { cursor: copy; }
.canvas .meas { cursor: pointer; }
.canvas .meas line { stroke: var(--ink-3); stroke-width: 1px; vector-effect: non-scaling-stroke; }
.canvas .meas line.ext { stroke: var(--rule); }
.canvas .meas text.times { fill: var(--ink-3); font-weight: 500; }
.canvas .meas rect { fill: var(--chrome); stroke: var(--ink-3); stroke-width: 1px; vector-effect: non-scaling-stroke; }
.canvas .meas text { fill: var(--ink); text-anchor: middle; dominant-baseline: central; font-weight: 600; pointer-events: none; }
.canvas .meas.empty rect { stroke: var(--pen); stroke-dasharray: 3 2; }
.canvas .meas.empty text { fill: var(--pen); }
.canvas .meas.worked text { fill: var(--ink-2); font-style: italic; font-weight: 500; }
.canvas .meas.off line, .canvas .meas.off rect { stroke: var(--warn); }
.canvas .meas.off text { fill: var(--warn); }
.canvas .meas.sel rect { fill: var(--pen); stroke: var(--pen); }
.canvas .meas.sel text { fill: var(--pen-ink); }
.canvas .meas.sel line { stroke: var(--pen); stroke-width: 2px; }
