@font-face{font-family:Kallax Label;src:url(BarlowCondensed-Bold.e476562e.ttf) format("truetype");font-weight:400 700;font-style:normal;font-display:swap}:root{color-scheme:light dark;--wall: #334155;--lattice: #94a3b8;--disabled: #64748b;--danger: #dc2626;--ok: #16a34a;--accent: #2563eb;--label-font: "Kallax Label", system-ui, sans-serif;--gap: 1.25rem}@media(prefers-color-scheme:dark){:root{--wall: #cbd5e1;--lattice: #475569}}body{display:flex;flex-direction:column;align-items:center;gap:var(--gap);box-sizing:border-box;height:100vh;height:100dvh;margin:0;padding:2rem 1rem;font:1rem/1.5 system-ui,sans-serif}h1{margin:0;font-size:1.25rem}main{flex:1;min-height:0;width:100%;display:flex;gap:var(--gap)}#stage{position:relative;flex:1;min-width:0;min-height:0}#grid{position:absolute;inset:0}#grid svg{display:block;width:100%;height:100%;touch-action:manipulation}#grid:not(:empty)+#placeholder{display:none}#placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:1rem;text-align:center;pointer-events:none}#placeholder .mark,#cut-body .mark{width:2.5rem;height:2.5rem}.body{fill:var(--wall);pointer-events:none}.lattice{fill:var(--lattice);opacity:.3;pointer-events:none}.preview{pointer-events:none}.preview .ghost{fill:var(--danger)}.preview .ghost.add{fill:var(--ok)}.preview .stencil{fill:#000}.wall{cursor:pointer}.wall>.face{fill:transparent;pointer-events:all}.wall[data-locked]{cursor:not-allowed}.cell>rect{fill:transparent;pointer-events:all;cursor:text}.label{fill:var(--wall);font-family:var(--label-font);text-anchor:start;pointer-events:none}#grid svg[data-pane=labels] .body{fill:var(--disabled)}#grid svg[data-pane=labels] .lattice{display:none}#grid svg[data-pane=labels] .wall{cursor:default}#grid svg[data-pane=geometry] .label{fill:var(--disabled)}#grid svg[data-pane=geometry] .cell>rect{cursor:pointer}.editor{position:fixed;resize:none;box-sizing:border-box;font-family:var(--label-font);color:var(--wall);background:Canvas;border:1px solid var(--accent);border-radius:.25rem}#tray,#trays{flex:0 0 auto;box-sizing:border-box;display:flex;flex-direction:column;gap:.75rem;min-height:0;padding:.75rem;border-radius:.75rem;background:color-mix(in srgb,var(--wall) 8%,transparent)}#tray,#trays{width:max-content;min-width:12rem;max-width:min(30vw,24rem)}#controls{display:none;align-items:center;gap:.5rem}#controls select,#controls button{box-sizing:border-box;height:2.75rem;color:inherit;background:none;border:1px solid var(--lattice);border-radius:.375rem}#controls select{flex:1 1 0;min-width:0;padding:0 .25rem;font:inherit}#controls button{flex:0 0 auto;width:2.75rem;padding:0;font:inherit;font-size:1.1rem;cursor:pointer}#controls button:disabled{color:var(--disabled);border-color:var(--disabled);cursor:not-allowed}@media(hover:hover){#controls button:not(:disabled):hover{border-color:var(--accent)}}@media(hover:hover){#controls #delete-current:not(:disabled):hover{color:var(--danger);border-color:var(--danger)}}#tray h2,#trays h2{display:flex;align-items:baseline;gap:.5rem;margin:0;font-size:1rem}#trays h2{font-size:.9rem}#tray-name{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#rename{visibility:hidden;padding:0;font:inherit;font-size:1rem;color:inherit;background:none;border:0;opacity:.7;cursor:pointer}#tray:hover #rename,#tray:focus-within #rename,#rename[data-default]{visibility:visible}@media(hover:hover){#rename:hover{opacity:1}}@media(hover:none){#rename{visibility:visible}}.rename-editor{flex:1;min-width:0;box-sizing:border-box;padding:0 .25rem;font:inherit;font-size:1rem;font-weight:700;color:var(--wall);background:Canvas;border:1px solid var(--accent);border-radius:.25rem}#foot{margin-top:auto;display:flex;flex-direction:column;gap:.5rem}#list,#panes{display:flex;flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none}#list{flex:1 1 auto;min-height:0;overflow-y:auto}#list li{display:flex;gap:.25rem}#list button[data-tray]{flex:1 1 auto;width:auto;min-width:0}#list .remove{display:none;flex:0 0 auto;width:auto;color:var(--disabled)}#list li:hover .remove,#list li:focus-within .remove{display:block}@media(hover:none){#list .remove{display:block}}@media(hover:hover){#list li{position:relative}#list .remove{position:absolute;top:0;bottom:0;right:0}#list .remove:hover{color:var(--danger)}#list li:hover button[data-tray],#list li:focus-within button[data-tray]{max-width:calc(100% - 2rem)}}#list button,#panes button{display:block;width:100%;box-sizing:border-box;overflow:hidden;padding:.35rem .5rem;font:inherit;font-size:.9rem;color:inherit;text-align:left;white-space:nowrap;text-overflow:ellipsis;background:none;border:1px solid transparent;border-radius:.375rem;cursor:pointer}#panes button{display:flex;align-items:center;justify-content:space-between;gap:.5rem}@media(hover:hover){#list button[data-tray]:hover,#panes button:hover{border-color:var(--lattice)}}#list button[data-tray][aria-current=true],#panes button[aria-current=true]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent)}.mark{display:block;flex:0 0 auto;width:.9em;height:.9em}.mark svg{display:block;width:100%;height:100%}.mark[data-state=ready]{color:var(--ok)}.mark[data-state=busy]{color:var(--accent);animation:spin 1s linear infinite}.mark[data-state=none]{opacity:.3}@keyframes spin{to{transform:rotate(1turn)}}@media(prefers-reduced-motion:reduce){.mark[data-state=busy],#bar{animation:none}}#new,#action{box-sizing:border-box;height:3rem;line-height:calc(3rem - 2px)}#new{flex:0 0 auto;padding:0 .5rem;font:inherit;font-size:.9rem;color:inherit;background:none;border:1px dashed var(--lattice);border-radius:.375rem;cursor:pointer}#new:disabled{color:var(--disabled);border-color:var(--disabled);cursor:not-allowed}@media(hover:hover){#new:not(:disabled):hover{border-color:var(--accent)}}#grid svg[data-frozen]{pointer-events:none;opacity:.5}#grid svg[data-frozen] .wall>.face,#grid svg[data-frozen] .cell>rect{pointer-events:none}#action{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 1.5rem;font:inherit;font-weight:600;color:#fff;background:var(--accent);border:1px solid transparent;border-radius:.5rem;cursor:pointer}#action:disabled{background:var(--disabled);cursor:not-allowed}@media(hover:hover){#action:not(:disabled):hover{background:color-mix(in srgb,var(--accent) 85%,#000)}}#bar{width:100%;height:.5rem;overflow:hidden;background:#94a3b840;border-radius:999px;animation:breathe 1.6s ease-in-out infinite}#bar>i{display:block;height:100%;background:var(--accent);transform:scaleX(0);transform-origin:left center}@keyframes breathe{50%{opacity:.5}}#message,#placeholder-text{margin:0}#message{min-height:1.5em;font-size:.85rem;max-width:0;min-width:100%}#placeholder-text{max-width:24rem;font-size:1rem}#message.error,#placeholder-text.error{color:var(--danger)}#cut{--cut-height: min(76dvh, calc(100dvh - 8rem) );--cut-width: min(94vw, 68rem);width:fit-content;box-sizing:border-box;max-width:var(--cut-width);padding:1rem;border:1px solid var(--lattice);border-radius:.75rem;background:Canvas;color:var(--wall)}#cut::backdrop{background:#00000080}#cut h2{margin:0;padding-right:1.5rem;font-size:1.1rem}#cut>p{margin:.25rem 0 .75rem;font-size:.85rem;opacity:.8}#cut:not(:has(#cut-body>svg)){width:min(var(--cut-width),34rem)}#cut:not(:has(#cut-body>svg)) #cut-body{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;height:min(var(--cut-height),22rem)}#cut-body p{margin:0;text-align:center}.cut-drawing{display:block;height:var(--cut-height);width:auto;max-width:100%}.cut-drawing .section{fill:var(--wall)}.cut-drawing .dimension{stroke:var(--accent);stroke-width:.25}.cut-drawing .leader{stroke:var(--accent);stroke-width:.12;stroke-dasharray:.7 .7;opacity:.6}.cut-drawing .measure{fill:var(--accent);font-size:var(--cut-em, 2.4px);text-anchor:middle}.cut-drawing .plan{fill:none;stroke:var(--lattice);stroke-width:.2}#cut-close{position:absolute;top:.35rem;right:.35rem;padding:.25rem .35rem;font:inherit;font-size:1.25rem;line-height:1;color:inherit;background:none;border:0;opacity:.55;cursor:pointer}@media(hover:hover){#cut-close:hover{opacity:1}}#confirm{width:fit-content;max-width:min(90vw,22rem);padding:1rem;border:1px solid var(--lattice);border-radius:.75rem;background:Canvas;color:var(--wall)}#confirm::backdrop{background:#00000080}#confirm h2{margin:0;font-size:1rem}#confirm-name{margin:.5rem 0 0;font-weight:600;overflow-wrap:anywhere}#confirm-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.75rem}#confirm-actions button{padding:.35rem .75rem;font:inherit;font-size:.9rem;color:inherit;background:none;border:1px solid var(--lattice);border-radius:.375rem;cursor:pointer}#confirm-actions #confirm-delete{color:#fff;background:var(--danger);border-color:transparent}@media(hover:hover){#confirm-actions #confirm-cancel:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:var(--accent)}}@media(hover:hover){#confirm-actions #confirm-delete:hover{background:color-mix(in srgb,var(--danger) 85%,#000)}}@media(max-width:850px){:root{--gap: .75rem}body{position:fixed;inset:0;height:auto;padding:.75rem;overflow:hidden}body>h1{display:none}main{flex-direction:column}#tray{width:auto;min-width:0;max-width:none}#panes,#trays,#tray #heading{display:none}#tray #heading:has(.rename-editor){display:flex}#controls{width:100%;display:flex;flex-wrap:wrap-reverse}#controls #pick-pane{flex:1 0 max-content}#tray-controls{display:flex;gap:.5rem;flex:1 1 max-content}#controls #pick-tray{flex:1 1 max-content;min-width:0}#message{max-height:4.5em;overflow-y:auto}#message:empty{display:none}}
