/* A readable workbench: the canvas keeps its space; tools become drawers. */
:root{
  font-size:100%;--text:clamp(.875rem,.83rem + .18vw,1rem);
  --caption:clamp(.75rem,.71rem + .14vw,.875rem);
  --heading:clamp(1.125rem,.95rem + .5vw,1.5rem);
  --edge:clamp(.75rem,1.2vw,1.5rem);--tap:2.75rem;
  -webkit-text-size-adjust:100%;text-size-adjust:100%;
}
:root[data-text-size="large"]{font-size:112.5%}
body{font-size:var(--text);line-height:1.55;min-width:0}
button,input,select,textarea{font-family:inherit;line-height:1.4}
button{touch-action:manipulation}
.app-header{height:auto;min-height:5.25rem;padding:.75rem var(--edge);gap:1rem;flex-wrap:wrap}
.brand strong{font-size:1.5rem}.brand small{font-size:.625rem}.brand img{width:2.5rem;height:2.5rem}
.project-heading{min-width:0;flex:1 1 12rem;gap:.25rem}
.project-heading input{font-size:1rem;width:100%;max-width:24rem;min-height:1.75rem}
.save-state,.project-heading .save-state{font-size:var(--caption)}
.header-actions{gap:.5rem;flex-wrap:wrap;margin-left:auto}
.header-actions .button,.quiet-button,.button{font-size:var(--text);min-height:var(--tap);padding:.6rem .85rem}
.icon-button{min-width:var(--tap);min-height:var(--tap)}
.project-bar{min-height:2.75rem;height:auto;padding:.5rem var(--edge);font-size:var(--caption);gap:1rem}
.project-bar-right,.breadcrumb,.brand-credit,.version-badge{font-size:var(--caption)}
.workspace{grid-template-columns:minmax(16rem,18vw) minmax(0,1fr) minmax(18rem,20vw);gap:var(--edge);padding:0 var(--edge);height:calc(100dvh - 11.5rem);min-height:42rem}
.editor{grid-column:auto;grid-row:auto;height:auto;max-height:none;min-height:0}.library,.inspector{border-radius:.8rem;min-width:0}
.header-actions #projects-button,.header-actions #save-button{display:inline-flex;align-items:center;gap:.4rem}
.compact-label{display:none}
.touch-canvas-help{display:none}
.panel-heading,.library .panel-heading,.inspector .panel-heading{padding:1rem 1rem .75rem;gap:.5rem;flex-shrink:0}
.panel-heading h1,.panel-heading h2,.library .panel-heading h1,.inspector .panel-heading h2{font-size:var(--heading);overflow-wrap:anywhere}
.panel-heading h1 span,.mini-badge{font-size:.6875rem}
.eyebrow,.library .eyebrow{font-size:.625rem;line-height:1.6;letter-spacing:.08em;margin-bottom:.35rem}
.library-tabs,.library .library-tabs{margin:0 1rem;gap:1.25rem;flex-shrink:0}
.library-tabs button,.library .library-tabs button{font-size:var(--text);min-height:var(--tap)}
.search-field,.library .search-field{margin:.75rem;padding:.5rem;min-height:var(--tap);flex-shrink:0}
.search-field input,.library .search-field input{font-size:1rem;min-width:0}.search-field kbd{display:none}
.categories,.library .categories{padding:0 .75rem .75rem;gap:.25rem;flex-shrink:0}
.category-button,.library .category-button{font-size:var(--caption);padding:.6rem .4rem;min-height:var(--tap);gap:.45rem}
.category-button .icon,.library .category-button .icon{display:inline-block;width:1rem;height:1rem}
.section-label,.library .section-label{padding:.75rem;font-size:var(--text);gap:.4rem;flex-shrink:0}.tiny-note{font-size:.6875rem}
.catalog-grid,.library .catalog-grid{padding:0 .75rem .75rem;gap:.6rem;min-height:8rem;overscroll-behavior:contain}
.object-card,.library .object-card{padding:.5rem;touch-action:pan-y;cursor:pointer}
.object-preview,.library .object-preview{height:clamp(4.5rem,6vw,6rem)}
.object-card strong,.library .object-card strong{font-size:var(--caption);line-height:1.5;overflow-wrap:anywhere}
.object-card small,.library .object-card small{font-size:.6875rem;white-space:normal;line-height:1.5}
.object-card .add-item{display:none}.library-footer,.library .library-footer{font-size:var(--caption);padding:.75rem;flex-shrink:0}
.layer-group{font-size:var(--caption)}.layer-row{font-size:var(--text);min-height:var(--tap);gap:.5rem}.layer-row small{font-size:var(--caption)}
.editor-heading{height:auto;min-height:4.5rem;padding:.6rem .15rem;gap:.5rem;flex-wrap:wrap}
.editor-heading h2{font-size:var(--heading);letter-spacing:.04em}.editor-heading .eyebrow{font-size:.625rem}
.editor-heading>div:first-child{margin-right:auto}.floor-select{padding:.15rem .3rem;gap:.25rem;max-width:100%}
.floor-select select{font:inherit;font-size:1rem;min-height:var(--tap);max-width:6rem}.floor-select .icon-button{width:var(--tap);height:var(--tap)}
.canvas-toolbar{flex-direction:column;align-items:stretch;padding:.5rem;gap:.5rem;min-height:0;flex-shrink:0}
.drawing-tools{display:flex;gap:.25rem;flex-wrap:wrap;justify-content:flex-start;min-width:0}
.tool{min-width:var(--tap);width:var(--tap);height:var(--tap);padding:.65rem;flex-shrink:0}.tool .icon{width:1.15rem;height:1.15rem}
.tool-divider{height:1.5rem;margin:0 .15rem}
#room-shape{min-height:var(--tap);max-width:8rem;font-size:var(--caption);padding:.5rem}
.view-tabs{align-self:flex-end;width:auto;margin-left:0;gap:.15rem;justify-content:stretch}
.view-tabs button{font-size:var(--caption);min-height:2.5rem;padding:.5rem .75rem;justify-content:center;flex:1}
.view-tabs .icon{width:1rem;height:1rem}
.viewport{min-height:18rem;isolation:isolate}.canvas-shell{min-height:29rem}
.canvas-badge{top:.75rem;left:.75rem;font-size:var(--caption)}.canvas-badge small{font-size:.625rem}
.zoom-controls{height:auto;bottom:.75rem;right:.75rem;padding:.2rem;gap:.1rem;max-width:calc(100% - 1.5rem)}
.zoom-controls button{min-width:2.5rem;min-height:2.5rem;padding:.4rem}#zoom-value{font-size:var(--caption);min-width:3rem}
.zoom-controls button .icon{width:1rem;height:1rem}.compass{right:.75rem;top:.75rem}
.scale-bar{font-size:.6875rem;bottom:.8rem;left:.75rem}
.tool-hint{font-size:var(--caption);bottom:4rem;max-width:calc(100% - 1.5rem);width:auto;white-space:normal;line-height:1.5;padding:.35rem .6rem}
.canvas-status{padding:.35rem .6rem;gap:.3rem;flex-wrap:wrap;flex-shrink:0}
.canvas-status>div{gap:.2rem .8rem;flex-wrap:wrap}.canvas-status label{font-size:var(--caption);min-height:2.5rem;gap:.4rem}
.canvas-status input{width:1rem;height:1rem}.canvas-status>span{font-size:.6875rem}.canvas-status .grid-option{display:flex!important}
.three-tools,.viewport[data-view="split"] .three-tools{top:.65rem;right:.65rem;padding:.3rem .4rem;gap:.35rem;font-size:var(--caption);flex-wrap:wrap;max-width:calc(100% - 1.3rem)}
.viewport[data-view="split"] .three-tools{top:2.75rem}.three-tools label{display:flex;align-items:center;gap:.35rem;min-height:2.5rem}
.three-tools input{width:1rem;height:1rem}.three-tools button{font-size:var(--caption);min-height:2.5rem;min-width:2.5rem;padding:.35rem}.three-hint{font-size:var(--caption);bottom:.75rem}
.project-summary{padding:.75rem .2rem;min-height:5rem;gap:.75rem 1.5rem;flex-wrap:wrap;flex-shrink:0}
.summary-metric>div>span{font-size:var(--caption)}.summary-metric strong{font-size:clamp(1.25rem,1rem + .5vw,1.6rem)}.summary-metric strong small{font-size:var(--caption)}
.summary-note{display:none}.summary-metric .metric-icon{display:none}.project-summary>.quiet-button{font-size:var(--caption);min-height:var(--tap);padding:.5rem;margin-left:auto}
.clearance-button{font-size:var(--caption);min-height:var(--tap);white-space:normal}
.inspector #inspector-content{display:block;padding:0 1rem;min-height:0;overflow:auto;flex:1;overscroll-behavior:contain}
.inspector-section{padding:1rem 0}.inspector-section h3{font-size:var(--text);line-height:1.5;gap:.5rem;flex-wrap:wrap}.inspector-section h3 small{font-size:.625rem}
.field-grid{gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr))}
.field>span,.field-label,.inspector .field>span,.inspector .field-label{font-size:var(--caption);line-height:1.5}.field-input,.inspector .field-input{min-height:var(--tap)}
.field-input input,.inspector .field-input input,.field input,.field select,.form-stack input{font-size:1rem;min-height:var(--tap);padding:.6rem;max-width:100%}.field-input small{font-size:var(--caption)}
.field-note,.inspector .field-note,.modal-copy,.selection-list{font-size:var(--caption);line-height:1.8;overflow-wrap:anywhere}
.empty-selection,.inspector .empty-selection{font-size:var(--text);padding:1rem;line-height:1.8}.empty-selection strong,.inspector .empty-selection strong{font-size:var(--text)}
.action-grid{gap:.5rem}.action-grid button{font-size:var(--caption);min-height:var(--tap);padding:.6rem .4rem;white-space:normal}
.switch-row{font-size:var(--caption);min-height:var(--tap);gap:.5rem}.switch-row input{width:1.125rem;height:1.125rem;flex-shrink:0}
.color-hex{font-size:var(--caption)}.color-swatches{gap:.45rem;flex-wrap:wrap}.color-swatch{min-width:2rem;min-height:2rem}
.inspector-bottom{display:none}.inspector-preview{height:7rem;flex-shrink:0}.vertex-row .field>span{font-size:var(--caption)}.vertex-index{font-size:var(--caption)}
.app-footer{height:auto;min-height:3rem;padding:.5rem var(--edge);gap:.75rem;font-size:var(--caption);flex-wrap:wrap}.app-footer button{font-size:var(--caption);min-height:var(--tap)}
.mobile-library-button,.panel-open-button{display:none}.panel-close-button,.library .panel-close-button{display:none}
.text-size-control{display:flex;align-items:center;gap:.35rem;font-size:var(--caption);color:var(--teal);white-space:nowrap}.text-size-control select{font-size:var(--caption);min-height:var(--tap);border:1px solid #cfddda;border-radius:.4rem;background:#f7faf8;padding:.4rem;max-width:7rem}
.mobile-dock{display:none}.library-backdrop:not([hidden]){display:block;position:fixed;inset:0;z-index:60;background:#233d4955;backdrop-filter:blur(3px)}
body.panel-open{overflow:hidden}.library[data-overlay-open],.inspector[data-overlay-open]{z-index:61}
#modal,.pdf-import-dialog{width:min(46rem,calc(100vw - 1.5rem));max-height:calc(100dvh - 1.5rem);border-radius:.9rem}
.modal-header{padding:1.1rem;gap:.75rem}.modal-header h2,.pdf-import-dialog .modal-header h2{font-size:var(--heading);line-height:1.5;overflow-wrap:anywhere}
#modal-body,.pdf-import-body{padding:0 1.1rem 1.1rem;overflow:auto;max-height:calc(100dvh - 8rem)}
.modal-actions{display:flex;flex-wrap:wrap;gap:.5rem}.modal-actions .button{font-size:var(--text);min-height:var(--tap);white-space:normal}
.project-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.project-option{padding:1rem;min-width:0}.project-option strong{font-size:var(--text)}.project-option small{font-size:var(--caption);line-height:1.7}
.help-step strong{font-size:var(--text)}.help-step p,.shortcut-row,.recent-project,.recent-project small{font-size:var(--caption)}.recent-project{flex-wrap:wrap;gap:.5rem}.recent-project>div{min-width:0;overflow-wrap:anywhere}.recent-project button{min-height:var(--tap);font-size:var(--caption)}
.inline-warning{font-size:var(--caption);line-height:1.8;overflow-wrap:anywhere}.issue-focus{font-size:var(--caption);min-height:var(--tap)}
.dropdown-menu{width:min(23rem,calc(100vw - 1.5rem));min-width:0;max-width:calc(100vw - 1.5rem);max-height:calc(100dvh - 7rem);overflow:auto;overscroll-behavior:contain}
.dropdown-menu button{font-size:var(--text);min-height:var(--tap);white-space:normal;padding:.75rem}.dropdown-menu button small{font-size:var(--caption);line-height:1.6}
.export-color-options legend,.export-color-options label{font-size:var(--text)}.export-color-options label{min-height:var(--tap)}.export-color-options p,.export-equipment-option small{font-size:var(--caption)}.export-equipment-option{font-size:var(--text);padding:.8rem .6rem}
.pdf-filename,.pdf-status,.pdf-page-controls,.pdf-import-dialog .button{font-size:var(--text)}.pdf-page-controls button,.pdf-page-controls input{font-size:1rem;min-height:var(--tap)}.pdf-page-preview canvas{max-height:40dvh}
.pdf-import-dialog .modal-actions{bottom:-1.1rem}.canvas-context-menu{font-size:var(--text);width:min(17rem,calc(100vw - 1rem))}.context-heading{font-size:var(--caption)}.canvas-context-menu button{font-size:var(--text);min-height:var(--tap)}
#toast{font-size:var(--text);max-width:calc(100vw - 2rem);line-height:1.7;white-space:normal;overflow-wrap:anywhere}
.polygon-actions{max-width:calc(100% - 1rem);flex-wrap:wrap;font-size:var(--caption);padding:.4rem;gap:.35rem}.polygon-actions button{min-height:var(--tap);font-size:var(--caption)}
.empty-state strong{font-size:var(--heading)}.empty-state p{font-size:var(--text);line-height:1.8}.empty-state button{font-size:var(--caption);min-height:var(--tap);padding:.6rem}
@media(min-width:1800px){.canvas-toolbar{flex-direction:row;align-items:center}.view-tabs{align-self:center}.workspace{grid-template-columns:20rem minmax(0,1fr) 22rem}}
@media(max-width:1439px){
  .workspace{grid-template-columns:17rem minmax(0,1fr);height:calc(100dvh - 11rem);min-height:42rem}
  .inspector{display:none;position:fixed;top:max(.75rem,env(safe-area-inset-top));right:max(.75rem,env(safe-area-inset-right));bottom:max(.75rem,env(safe-area-inset-bottom));width:min(25rem,calc(100vw - 1.5rem));height:auto;max-height:none;grid-column:auto;grid-row:auto;box-shadow:0 .5rem 3rem #233d4933}
  .inspector-open .inspector{display:flex}.inspector .panel-close-button{display:grid;place-items:center;flex-shrink:0}
  .inspector .mini-badge{display:none}.panel-open-button{display:flex;align-items:center;gap:.4rem;font-size:var(--caption);min-height:var(--tap);padding:.5rem .65rem;border:1px solid #cfddda;border-radius:.4rem;background:#f7faf8}
  .help-button,.avatar,.header-separator{display:none}.editor-heading .eyebrow{display:none}
}
@media(max-width:1199px){
  .workspace{grid-template-columns:minmax(0,1fr);min-height:40rem}.editor{grid-column:1;grid-row:auto}
  .library{display:none;position:fixed;top:max(.75rem,env(safe-area-inset-top));left:max(.75rem,env(safe-area-inset-left));bottom:max(.75rem,env(safe-area-inset-bottom));width:min(24rem,calc(100vw - 1.5rem));height:auto;max-height:none;grid-column:auto;grid-row:auto;box-shadow:0 .5rem 3rem #233d4933}
  .library-open .library{display:flex}.library .panel-close-button{display:grid;place-items:center;flex-shrink:0}
  .mobile-library-button{display:flex;align-items:center;gap:.4rem;font-size:var(--caption);min-height:var(--tap);padding:.5rem .65rem;margin-left:0;border:1px solid #cfddda;border-radius:.4rem;background:#f7faf8;color:var(--teal)}
  .library .library-footer{display:none}.library .object-preview{height:6rem}.library .object-card strong{font-size:var(--text)}
  .canvas-toolbar{flex-direction:row;align-items:center}.drawing-tools{flex:1}.view-tabs{align-self:center;flex-shrink:0}
  .project-bar .desktop-note,.header-actions .help-button{display:none}.project-heading input{max-width:18rem}.inspector #inspector-content{columns:auto}
}
@media(max-width:899px){
  .canvas-toolbar{flex-direction:column;align-items:stretch}.view-tabs{align-self:stretch;width:100%}.view-tabs button{min-height:var(--tap)}
  .viewport[data-view="split"]{flex-direction:column}.viewport[data-view="split"] .plan-pane{border-right:0;border-bottom:1px solid #d1dcdf;flex:1;min-height:14rem}.viewport[data-view="split"] .three-pane{flex:1;min-height:14rem}
  .viewport[data-view="split"]{min-height:31rem}.viewport[data-view="split"] .zoom-controls{bottom:calc(50% + .75rem)}
  .viewport[data-view="split"] .three-tools{top:.65rem}.viewport[data-view="split"] .three-pane .canvas-badge{display:none}
}
@media(max-width:639px){
  :root{--edge:.65rem;--text:.9375rem;--caption:.8125rem}
  .app-header{display:grid;grid-template-columns:auto minmax(0,1fr);padding:.65rem var(--edge);gap:.5rem .75rem}
  .brand img{width:2.2rem;height:2.2rem}.brand strong{font-size:1.3rem}.brand small{font-size:.5rem}
  .project-heading{min-width:0;overflow:hidden}.project-heading input{font-size:1rem;max-width:none;width:100%}.save-state,.project-heading .save-state{font-size:.6875rem;line-height:1.5}
  .header-actions{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr 1fr auto;margin:0;gap:.3rem;width:100%}
  .header-actions .quiet-button,.header-actions .button{padding:.45rem .5rem;font-size:var(--caption);min-height:var(--tap);justify-content:center;gap:.3rem}.header-actions .icon{width:1rem;height:1rem}
  .header-actions .full-label{display:none}.header-actions .compact-label{display:inline}.header-actions #projects-button,.header-actions #save-button{gap:.2rem;justify-content:center;min-width:0}
  .header-actions .dropdown-wrap{position:static}.header-actions #export-button{width:100%}.text-size-control{gap:0}.text-size-control>span{display:none}.text-size-control select{font-size:var(--caption);max-width:5.25rem;padding:.25rem;min-height:var(--tap)}
  .project-bar{display:none}.workspace{height:auto;min-height:0;padding:0 var(--edge);display:block}.editor-heading{min-height:3.75rem;padding:.5rem 0;gap:.35rem}.editor-heading h2{font-size:1rem;letter-spacing:0}.editor-heading>div:first-child{flex:1}
  .editor-heading .mobile-library-button,.editor-heading .panel-open-button{display:none}.floor-select{padding:.1rem .2rem}.floor-select select{font-size:.875rem;max-width:4rem}.floor-select .icon-button{min-width:2.5rem;min-height:2.5rem;width:2.5rem;height:2.5rem}
  .canvas-shell{min-height:max(29rem,calc(100svh - 20rem));flex:none;overflow:hidden}
  .canvas-toolbar{gap:.4rem;padding:.4rem}.drawing-tools{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;overscroll-behavior-x:contain;padding:.1rem .1rem .35rem;scrollbar-width:thin}
  .tool-divider{flex-shrink:0}.tool{width:var(--tap);height:var(--tap)}#room-shape{font-size:var(--caption);min-width:7rem;max-width:7rem;flex-shrink:0}
  .touch-canvas-help{display:block;font-size:.75rem;color:#607f7b;text-align:center;line-height:1.5;margin:0}
  .view-tabs{margin:0;width:100%;padding:.2rem}.view-tabs button{font-size:var(--caption);padding:.4rem;min-height:2.5rem}.view-tabs .icon{width:.9rem;height:.9rem}
  .viewport{min-height:20rem;flex:1}.canvas-badge{font-size:.6875rem;top:.6rem;left:.6rem}.canvas-badge small{display:none}.compass{right:.6rem;top:.6rem}
  .zoom-controls{right:.5rem;bottom:.5rem}.zoom-controls button{min-height:2.5rem;min-width:2.25rem}.tool-hint{display:none}.scale-bar{left:.6rem;bottom:3.75rem;font-size:.6875rem}
  .canvas-status{padding:.2rem .4rem}.canvas-status>div{gap:.1rem .65rem;justify-content:space-between;width:100%}.canvas-status label{font-size:.75rem;min-height:2.75rem;gap:.25rem}.canvas-status>span{display:none}.canvas-status label .icon{display:none}
  .project-summary{gap:.5rem 1rem;padding:.75rem .2rem}.summary-metric strong{font-size:1.25rem}.summary-metric>div>span{font-size:.75rem}.summary-metric strong small{font-size:.6875rem}.project-summary>.quiet-button{display:none}.clearance-button{flex:1 1 100%}
  .mobile-dock{position:fixed;z-index:45;left:0;right:0;bottom:0;display:flex;gap:.4rem;padding:.5rem max(.65rem,env(safe-area-inset-right)) calc(.5rem + env(safe-area-inset-bottom)) max(.65rem,env(safe-area-inset-left));border-top:1px solid #cfddda;background:#fffffff5;backdrop-filter:blur(12px)}
  .mobile-dock button{flex:1;display:flex;align-items:center;justify-content:center;gap:.4rem;border:1px solid #dae5df;border-radius:.6rem;min-height:var(--tap);font-size:var(--caption);background:#f1f6f3;color:#176d69}.mobile-dock button[aria-expanded="true"]{background:#176d69;color:white}.mobile-dock .icon{width:1.1rem;height:1.1rem}
  body{padding-bottom:calc(4.75rem + env(safe-area-inset-bottom))}.app-footer{display:block;font-size:.6875rem;min-height:0;padding:.5rem var(--edge) 1rem}.app-footer>span{display:block;margin:.3rem 0}.app-footer>span:nth-child(2){font-size:.6875rem}.app-footer button{display:none}
  .library,.inspector{top:max(.5rem,env(safe-area-inset-top));bottom:max(.5rem,env(safe-area-inset-bottom));width:calc(100vw - 1rem);max-width:25rem}.library{left:.5rem}.inspector{right:.5rem}
  .panel-heading .eyebrow{display:none}.panel-heading h1,.panel-heading h2{font-size:1.125rem}.library .panel-heading,.inspector .panel-heading{padding:.65rem .85rem}
  .library .categories{padding-bottom:.5rem}.library .category-button{min-height:2.75rem;font-size:.8125rem}.library .search-field{margin:.5rem .75rem}.library .section-label{padding:.5rem .75rem}.library .library-tabs button{min-height:2.75rem}
  .inspector #inspector-content{padding:0 .85rem}.inspector-section h3{font-size:.9375rem}.inspector-section h3 small{font-size:.625rem}.field-input input,.inspector .field-input input{font-size:1rem}
  .dropdown-menu{position:fixed;top:8.25rem;right:.65rem;left:auto;width:calc(100vw - 1.3rem);max-height:calc(100dvh - 9.5rem)}
  #toast{bottom:calc(5rem + env(safe-area-inset-bottom));width:max-content;max-width:calc(100vw - 1.3rem);padding:.75rem}
  .project-options{grid-template-columns:1fr}.help-steps{grid-template-columns:1fr}.shortcut-grid{grid-template-columns:1fr}.modal-header{padding:.85rem}.modal-header h2{font-size:1.1rem}#modal-body,.pdf-import-body{padding:0 .85rem .85rem}
  .viewport[data-view="split"]{min-height:36rem}.viewport[data-view="split"] .plan-pane,.viewport[data-view="split"] .three-pane{min-height:18rem}.canvas-shell:has(.viewport[data-view="split"]){min-height:47rem}.three-tools{font-size:.75rem;left:.5rem;right:.5rem;top:2.5rem;justify-content:flex-end}.three-hint{font-size:.75rem;bottom:.5rem}
}
@media(max-height:600px) and (min-width:640px){.workspace{height:auto;min-height:43rem}.project-bar{display:none}.library-footer{display:none}}
@media(max-height:650px){.library[data-overlay-open]{overflow-y:auto}.library[data-overlay-open] .catalog-panel{flex:none;min-height:30rem}.library[data-overlay-open] .catalog-grid{max-height:22rem;min-height:10rem}.library[data-overlay-open] .panel-heading{position:sticky;top:0;background:white;z-index:2}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.app-header{padding-left:max(var(--edge),env(safe-area-inset-left));padding-right:max(var(--edge),env(safe-area-inset-right));padding-top:max(.65rem,env(safe-area-inset-top))}
.workspace,.project-bar,.app-footer{padding-left:max(var(--edge),env(safe-area-inset-left));padding-right:max(var(--edge),env(safe-area-inset-right))}

/* Supplied brand artwork is kept intact and outside the editing canvas. */
.brand{gap:.7rem}.brand img{object-fit:contain;flex-shrink:0;width:2.75rem;height:2.75rem}
.brand strong{letter-spacing:.08em;white-space:nowrap;font-size:clamp(1.25rem,1.1rem + .3vw,1.55rem)}
.brand small{display:block;font-family:inherit;letter-spacing:.12em;font-size:.625rem;color:#607f7b}
.app-footer{gap:.75rem;min-height:5.5rem;padding-top:.65rem;padding-bottom:.65rem}
.app-footer .footer-brand{display:flex;align-items:flex-start;flex-direction:column;gap:.15rem;flex-shrink:0}
.footer-brand strong{font-size:.875rem;letter-spacing:.08em;color:#506d77}.footer-brand small{font-size:.6875rem}
.creator-signature{margin:0 0 0 auto;display:flex;align-items:center;gap:.65rem;background:white;border:1px solid #e1e7eb;border-radius:.65rem;padding:.3rem .7rem .3rem .35rem;flex-shrink:0}
.creator-signature img{width:4rem;height:4rem;object-fit:contain;display:block}
.creator-signature figcaption{font-size:.8125rem;white-space:nowrap;letter-spacing:.04em;color:#506d77;font-weight:600}
#snapshot-dialog{padding:0;width:min(76rem,calc(100vw - 1.5rem));max-height:calc(100dvh - 1.5rem);border:1px solid #dce5e8;border-radius:.9rem;background:white;color:#233d49;box-shadow:0 1rem 4rem #203f4e40}
#snapshot-dialog::backdrop{background:#233d4966;backdrop-filter:blur(3px)}#snapshot-dialog .modal-header{padding:1rem 1.25rem;border-bottom:1px solid #e4ebe7}
.snapshot-body{display:grid;grid-template-columns:minmax(17rem,.8fr) minmax(0,1.45fr);gap:1.4rem;padding:1rem 1.25rem;max-height:calc(100dvh - 11rem);overflow:auto;overscroll-behavior:contain}
.snapshot-controls{display:flex;flex-direction:column;gap:.75rem;min-width:0}.snapshot-controls h3,.snapshot-preview-panel h3{font-size:var(--text);line-height:1.6}.snapshot-controls .field-grid{gap:.6rem}.snapshot-controls select,.snapshot-saved>input{min-height:var(--tap);font-size:1rem;padding:.55rem;border:1px solid #d2dfd8;border-radius:.4rem;background:#fafcfb;color:#375650;width:100%}
.snapshot-controls .switch-row{margin:0}.snapshot-controls .field-note{margin:0}.snapshot-map-heading{display:flex;align-items:center;gap:.4rem;font-size:var(--caption)}.snapshot-map-heading strong{white-space:nowrap}.snapshot-map-heading select{font-size:var(--caption);min-width:0}
#snapshot-map{display:block;width:100%;height:12rem;min-height:12rem;border:1px solid #d6e2da;border-radius:.5rem;cursor:crosshair;touch-action:manipulation;background:#f5f8f7}
.snapshot-preview-panel{min-width:0;align-self:start;position:sticky;top:0}.snapshot-preview-heading{display:flex;justify-content:space-between;gap:.5rem;align-items:center;margin-bottom:.6rem}.snapshot-preview-heading span{font-size:var(--caption);color:#7b908d}
#snapshot-viewer{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;border:1px solid #d6e2da;border-radius:.7rem;background:#e9eef0}
#snapshot-viewer canvas{display:block;width:100%!important;height:100%!important;touch-action:none}.snapshot-status{font-size:var(--caption);color:#a35d40;line-height:1.7;min-height:1.5rem;margin-top:.4rem}
.snapshot-style{margin-top:1rem;border-top:1px solid #e0e8e3;padding-top:1rem;display:flex;flex-direction:column;gap:.6rem}.snapshot-style select,.snapshot-style input{width:100%;min-height:var(--tap);font-size:1rem;padding:.6rem;border:1px solid #d2dfd8;border-radius:.4rem;background:#fafcfb}
.snapshot-style button,.snapshot-saved button{min-height:var(--tap);font-size:var(--caption);border:1px solid #c8dbd0;border-radius:.4rem;padding:.5rem;background:#f1f7f3;color:#176d69}
.snapshot-saved{border-top:1px solid #e0e8e3;margin-top:.3rem;padding-top:.75rem;display:flex;flex-direction:column;gap:.5rem}.snapshot-saved>div{display:flex;gap:.5rem}.snapshot-saved button{flex:1}
#snapshot-dialog .modal-actions{padding:.85rem 1.25rem;margin:0;border-top:1px solid #e4ebe7;background:#fff;justify-content:flex-end}
@media(max-width:719px){.snapshot-body{grid-template-columns:minmax(0,1fr);padding:.85rem;gap:1rem}.snapshot-preview-panel{position:static;grid-row:1}.snapshot-preview-heading{align-items:flex-start}.snapshot-preview-heading span{font-size:.6875rem;max-width:45%}.snapshot-style{margin-top:.7rem;padding-top:.7rem}.snapshot-controls .field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#snapshot-dialog .modal-header{padding:.8rem}#snapshot-dialog .modal-actions{padding:.75rem .85rem}#snapshot-map{height:10rem;min-height:10rem}}
@media(max-width:719px){.snapshot-body{display:flex;flex-direction:column}.snapshot-preview-panel{display:contents}.snapshot-preview-heading{order:0;margin-bottom:-.5rem}#snapshot-viewer{order:1;flex:none}.snapshot-status{order:2;min-height:0;margin:0}.snapshot-status:empty{display:none}.snapshot-preview-panel>.field-note{order:3}.snapshot-controls{order:4}.snapshot-style{order:5}}
.export-watermark-options{margin:.3rem .5rem;padding:.75rem .4rem;border-bottom:1px solid #e1e7eb;display:flex;align-items:center;gap:.5rem;justify-content:space-between}
.export-watermark-options>label{display:flex;align-items:center;gap:.4rem;font-size:var(--text);min-height:var(--tap);white-space:nowrap}.export-watermark-options input{accent-color:#176d69;width:1rem;height:1rem}
.dropdown-menu #watermark-settings{border:1px solid #d5e3dd;border-radius:.4rem;background:#f4f8f5;padding:.5rem;font-size:var(--caption);text-align:left;width:auto}.dropdown-menu #watermark-settings small{display:block;font-size:.6875rem}
#watermark-dialog{padding:0;width:min(64rem,calc(100vw - 1.5rem));max-height:calc(100dvh - 1.5rem);border:1px solid #dce5e8;border-radius:.9rem;background:white;color:#233d49;box-shadow:0 1rem 4rem #203f4e40}
#watermark-dialog::backdrop{background:#233d4966;backdrop-filter:blur(3px)}#watermark-dialog .modal-header{border-bottom:1px solid #e4ebe7;padding:1rem 1.25rem}
.watermark-body{display:grid;grid-template-columns:minmax(16rem,1fr) minmax(0,1.45fr);gap:1.5rem;padding:1rem 1.25rem;max-height:calc(100dvh - 11rem);overflow:auto;overscroll-behavior:contain}
.watermark-controls{min-width:0;display:flex;flex-direction:column;gap:.9rem}.watermark-controls .field{gap:.45rem}.watermark-controls .field-note{margin-top:.4rem}.watermark-enable{margin:0;font-size:var(--text)}
.watermark-type,.watermark-position{border:0;margin:0;padding:0;min-width:0}.watermark-type legend,.watermark-position legend{font-size:var(--caption);font-weight:600;margin-bottom:.4rem;color:#506d77}
.watermark-type{display:flex;gap:.5rem}.watermark-type label{flex:1;display:flex;justify-content:center;align-items:center;gap:.45rem;padding:.65rem;border:1px solid #dce5df;border-radius:.45rem;min-height:var(--tap);font-size:var(--text)}
.watermark-type label:has(:checked){color:#176d69;background:#edf5ef;border-color:#7fae9d}.watermark-type input{accent-color:#176d69}
#watermark-text{border:1px solid #d5dfda;border-radius:.4rem;background:#fafcfb;color:#233d49;width:100%;min-height:var(--tap);padding:.6rem;font-size:1rem}
.watermark-color{display:flex;justify-content:space-between;align-items:center;font-size:var(--caption);margin-top:.5rem;min-height:var(--tap)}#watermark-color{width:3rem;height:2.5rem;border:1px solid #d5dfda;padding:.2rem;border-radius:.4rem;background:white}
.watermark-upload{display:flex;flex-direction:column;gap:.4rem;font-size:var(--caption);padding:.75rem;border:1px dashed #adc9bd;border-radius:.5rem;background:#f7faf8}.watermark-upload input{font-size:.875rem;max-width:100%;min-height:var(--tap);padding-top:.4rem}
.watermark-upload button{min-height:var(--tap);font-size:var(--text);color:#176d69;border:1px solid #c8dbd0;border-radius:.4rem;background:white;padding:.6rem}
.watermark-logo-options{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.watermark-logo-options button{font-size:var(--caption);border:1px solid #d8e3dd;border-radius:.4rem;padding:.5rem;flex:1;min-height:var(--tap)}
.watermark-slider>span{display:flex;justify-content:space-between;gap:.5rem;font-size:var(--caption)}.watermark-slider output{font:600 .875rem 'Segoe UI',sans-serif;color:#176d69}.watermark-slider input{accent-color:#176d69;width:100%;margin:0;min-height:2rem;cursor:pointer}
.watermark-position-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem}.watermark-position-grid button{font-size:var(--caption);padding:.55rem .25rem;border:1px solid #dce5df;border-radius:.4rem;min-height:var(--tap)}.watermark-position-grid button[aria-pressed="true"]{background:#176d69;color:white;border-color:#176d69}
.watermark-custom-position{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.watermark-status{font-size:var(--caption);line-height:1.7;color:#a15540;min-height:1.5rem}
.watermark-preview-panel{position:sticky;top:0;align-self:start;min-width:0}.watermark-preview-panel h3{font-size:var(--text);margin-bottom:.65rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.watermark-preview-panel h3 small{font-size:var(--caption);color:#7b908d}
.watermark-preview{background:repeating-conic-gradient(#e3eae7 0 25%,#f5f8f6 0 50%) 0/1rem 1rem;min-height:15rem;max-height:55dvh;overflow:auto;border:1px solid #dce5df;border-radius:.6rem}.watermark-preview img{display:block;width:100%;height:auto;min-width:0}
#watermark-dialog .modal-actions{padding:.85rem 1.25rem;margin:0;border-top:1px solid #e4ebe7;background:#fff;justify-content:flex-end}
@media(max-width:719px){.watermark-body{grid-template-columns:minmax(0,1fr);gap:1rem;padding:.85rem;max-height:calc(100dvh - 11rem)}.watermark-preview-panel{position:static;grid-row:1}.watermark-preview{min-height:8rem;max-height:13rem}.watermark-preview-panel h3{font-size:.875rem}.watermark-preview-panel .field-note{font-size:.75rem}.watermark-controls{gap:.75rem}#watermark-dialog .modal-header{padding:.8rem}#watermark-dialog .modal-actions{padding:.75rem .85rem}.watermark-custom-position{gap:.7rem}.watermark-position-grid button{font-size:.75rem}}
@media(max-width:639px){
  .brand{gap:.45rem}.brand img{width:2.25rem;height:2.25rem}.brand strong{font-size:1.25rem;letter-spacing:.05em}.brand small{font-size:.5625rem;letter-spacing:.06em}
  .project-heading input{font-size:.9375rem}.app-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;min-height:5.5rem}
  .app-footer .footer-brand{margin:0}.creator-signature{padding:.25rem .5rem .25rem .3rem;gap:.4rem}.creator-signature img{width:3.75rem;height:3.75rem}.creator-signature figcaption{font-size:.75rem}
}
#floor-tool{min-height:var(--tap);max-width:10rem;flex-shrink:0;font-size:var(--caption);padding:.5rem;border:1px solid #cbded9;border-radius:.4rem;background:#edf5f1;color:#176d69}
.floor-materials{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;margin:.2rem 0 .8rem}
.floor-material{min-width:0;overflow:hidden;border:1px solid #dce5df;border-radius:.45rem;background:#f7faf8;padding:.3rem;color:#49645e;text-align:center;cursor:pointer}
.floor-material svg{display:block;width:100%;height:2.7rem;border-radius:.2rem;pointer-events:none}.floor-material span{display:block;font-size:var(--caption);line-height:1.5;margin-top:.3rem;overflow-wrap:anywhere}.floor-material.active{border-color:#176d69;box-shadow:inset 0 0 0 1px #176d69;background:#edf5f1;color:#155c59}.floor-material:focus-visible{outline:2px solid #176d69;outline-offset:2px}
.floor-current-sample{display:flex;gap:.7rem;align-items:center;margin:.7rem 0 1rem;padding:.5rem;border:1px solid #e0e8e2;border-radius:.5rem;background:#f8faf8}.floor-current-sample svg{width:5rem;height:3rem;flex:none;display:block;border-radius:.25rem}.floor-current-sample span{font-size:var(--text);min-width:0}.floor-current-sample small{display:block;color:#77918b;font-size:var(--caption);line-height:1.7}.floor-draw-actions{margin-top:.8rem}
#plan-svg[data-tool^="floor-"]{cursor:crosshair}
@media(max-width:639px){#floor-tool{max-width:9rem;min-width:9rem}.floor-material{min-height:4.5rem}}
/* Architectural plan presentation; editing controls keep the studio's teal. */
.plan-pane{background:#fff}#plan-svg{background:#fff}.canvas-badge{background:#ffffffee;border:1px solid #e0e5e1;border-radius:.25rem;color:#4d5a52;box-shadow:none}
.canvas-view-controls{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-width:0;flex-wrap:wrap}.canvas-view-controls .view-tabs{align-self:auto;margin-left:auto}
.plan-presentation{display:flex;align-items:center;gap:.65rem;font-size:var(--caption);color:#626e66}.plan-presentation>span{white-space:nowrap;letter-spacing:.08em}.plan-color-switch{display:flex;padding:.15rem;background:#f2f5f2;border:1px solid #dce3dc;border-radius:.35rem;gap:.15rem}
.plan-color-switch button{min-height:2.25rem;padding:.35rem .7rem;border:0;background:transparent;border-radius:.2rem;font-size:var(--caption);color:#728077}.plan-color-switch button[aria-pressed="true"]{background:white;color:#1e5247;box-shadow:0 1px 3px #354b3920}
body[data-plan-color="monochrome"] #three-container canvas,body[data-plan-color="monochrome"] .floor-material svg,body[data-plan-color="monochrome"] .floor-current-sample svg{filter:grayscale(1)}
.library-placement{padding:.65rem .75rem .7rem;border-bottom:1px solid #e0e6df;flex-shrink:0;background:#fbfcfa}.library-browser-bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;color:#758377;font-size:var(--caption);margin-bottom:.6rem}.library-browser-bar>div{display:flex;gap:.15rem;background:#edf1ec;padding:.15rem;border-radius:.3rem}.library-browser-bar button{border:0;background:transparent;color:#73816f;padding:.35rem .6rem;font-size:var(--caption);min-height:2rem;border-radius:.2rem}
.library-browser-bar button[aria-pressed="true"]{background:#fff;color:#215c50;box-shadow:0 1px 3px #354b3918}.library-orientation-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:var(--caption);margin-bottom:.35rem}.library-orientation-heading strong{font-weight:500;color:#435c4e}.library-orientation-heading span{font-size:.6875rem;color:#7c8a7b;overflow-wrap:anywhere;text-align:right}
.library-mirror-controls{display:grid;grid-template-columns:1fr 1fr auto;gap:.3rem}.library-mirror-controls button{display:flex;align-items:center;justify-content:center;gap:.25rem;min-height:var(--tap);padding:.4rem .3rem;border:1px solid #d6e0d6;background:white;color:#52674f;border-radius:.3rem;font-size:var(--caption)}.library-mirror-controls .icon{width:.95rem;height:.95rem;flex-shrink:0}.library-mirror-controls button[aria-pressed="true"],.mirror-actions button[aria-pressed="true"]{background:#e6f0e9;border-color:#528c70;color:#1f684c}
.library .object-card{padding:.55rem;border:1px solid #dce3dc;border-radius:.3rem;background:#fff;gap:.35rem;box-shadow:0 1px 2px #2f442b05}.library .object-card:hover{border-color:#6a9582;background:#fcfefb;box-shadow:0 3px 10px #344a3220}.library .object-card:focus-visible{outline:2px solid #176d69;outline-offset:1px}.library .object-preview{width:100%;height:5.5rem;margin:0;padding:.4rem;background:#fff;border-radius:0;border-bottom:1px solid #edf0eb}.object-preview svg{max-width:100%;max-height:100%;width:100%;height:100%;pointer-events:none}.object-card-info{min-width:0;display:block}.library .object-card strong{font-size:var(--caption);font-weight:500;color:#334d3c;letter-spacing:.015em}.library .object-card small{display:block;color:#83917f;font-size:.6875rem;margin-top:.2rem;font-variant-numeric:tabular-nums}.object-card-add{display:none}
.library .catalog-grid[data-layout="list"]{grid-template-columns:minmax(0,1fr);gap:.35rem}.library .catalog-grid[data-layout="list"] .object-card{display:grid;grid-template-columns:3.5rem minmax(0,1fr) 1.2rem;align-items:center;min-height:4.5rem;padding:.4rem .5rem;gap:.65rem}.library .catalog-grid[data-layout="list"] .object-preview{width:3.5rem;height:3.5rem;border:0;padding:.2rem}.catalog-grid[data-layout="list"] .object-card-add{display:block;color:#547e64;font-size:1.2rem;text-align:center}.orientation-state{display:flex;align-items:center;font-size:var(--caption);color:#67836e;padding:.4rem}.mirror-actions .icon{width:1rem;height:1rem}.mirror-actions button{min-height:var(--tap)}
@media(max-width:639px){.canvas-view-controls{gap:.4rem}.plan-presentation{gap:.4rem}.plan-presentation>span{font-size:.6875rem}.plan-color-switch button{min-height:2.5rem}.canvas-view-controls .view-tabs{margin-left:auto}.library .object-preview{height:5.3rem}.library-placement{padding:.55rem .75rem}.library .section-label{padding-top:.5rem;padding-bottom:.5rem}}
.background-scale-toolbar{position:absolute;top:60px;left:12px;right:12px;z-index:5;display:flex;align-items:center;gap:12px;justify-content:space-between;padding:12px 14px;background:#ffffffed;border:1px solid #176d69;border-left:4px solid #176d69;border-radius:7px;box-shadow:0 4px 16px #163e4114;color:#244b49;pointer-events:auto}
.background-scale-toolbar[hidden]{display:none}.background-scale-toolbar>div{display:grid;gap:4px;min-width:0}.background-scale-toolbar strong{font-size:.9rem}.background-scale-toolbar span{font-size:.78rem;line-height:1.5}.background-scale-toolbar button{flex-shrink:0;min-height:44px;padding:8px 12px;border:1px solid #b9ceca;border-radius:5px;background:white;color:#176d69;font-size:.8rem}
#plan-svg[data-calibrating="true"]{cursor:crosshair}#plan-svg[data-calibrating="true"] .entity{cursor:crosshair}
#background-scale-dialog{width:min(540px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;padding:0}#background-scale-dialog form{margin:0}.background-scale-body{padding:4px 24px 16px}.background-scale-fields{display:grid;grid-template-columns:minmax(0,2fr) minmax(100px,1fr);gap:12px;margin:20px 0 12px}.background-scale-fields select{width:100%;min-height:44px;padding:10px;border:1px solid var(--line);border-radius:5px;background:white;font:inherit;color:var(--ink)}.background-scale-error{color:#a3382d;font-size:.82rem;line-height:1.5;min-height:1.5em}.background-scale-body .field-note{line-height:1.65}#background-scale-dialog .modal-actions{padding:16px 24px;flex-wrap:wrap}#background-scale-dialog .button{min-height:44px}
@media(max-width:639px){.background-scale-toolbar{top:52px;left:8px;right:8px;padding:8px;gap:8px}.background-scale-toolbar span{font-size:.75rem}.background-scale-toolbar button{padding:6px 8px}.background-scale-body{padding:0 16px 12px}#background-scale-dialog .modal-header{padding:18px 16px}#background-scale-dialog .modal-header h2{font-size:1.1rem}#background-scale-dialog .modal-actions{padding:12px 16px;gap:8px}#background-scale-dialog .button{padding:8px 10px;font-size:.8rem}}
.split-layout-controls{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;background:#f8faf9;padding:8px 12px;border-bottom:1px solid var(--line);flex-shrink:0;color:#57716b;font-size:.78rem}.split-layout-controls[hidden]{display:none}.split-layout-controls strong{margin-right:4px;font-weight:600}.split-layout-controls button{min-height:36px;padding:6px 12px;border:1px solid #d4e0db;border-radius:5px;background:white;color:#46665c;font:inherit}.split-layout-controls button[aria-pressed="true"]{background:#e6f1eb;border-color:#7fa58f;color:#21563e}.split-layout-controls output{margin-left:auto;font-variant-numeric:tabular-nums;white-space:nowrap}
.viewport[data-view="split"]{display:grid;--split-handle:14px;gap:0;min-height:31rem}.viewport[data-view="split"]>.plan-pane,.viewport[data-view="split"]>.three-pane{min-width:0;min-height:0;border:0;width:auto;height:auto;flex:none}.viewport[data-view="split"][data-split-direction="horizontal"]{grid-template-columns:minmax(0,var(--split-first,50fr)) var(--split-handle) minmax(0,var(--split-second,50fr));grid-template-rows:minmax(0,1fr)}.viewport[data-view="split"][data-split-direction="horizontal"]>.plan-pane{grid-area:1 / 1}.viewport[data-view="split"][data-split-direction="horizontal"]>.three-pane{grid-area:1 / 3}.viewport[data-view="split"][data-split-direction="horizontal"][data-split-reversed="true"]>.plan-pane{grid-area:1 / 3}.viewport[data-view="split"][data-split-direction="horizontal"][data-split-reversed="true"]>.three-pane{grid-area:1 / 1}
.viewport[data-view="split"][data-split-direction="vertical"]{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,var(--split-first,50fr)) var(--split-handle) minmax(0,var(--split-second,50fr))}.viewport[data-view="split"][data-split-direction="vertical"]>.plan-pane{grid-area:1 / 1}.viewport[data-view="split"][data-split-direction="vertical"]>.three-pane{grid-area:3 / 1}.viewport[data-view="split"][data-split-direction="vertical"][data-split-reversed="true"]>.plan-pane{grid-area:3 / 1}.viewport[data-view="split"][data-split-direction="vertical"][data-split-reversed="true"]>.three-pane{grid-area:1 / 1}
.split-divider{display:none;position:relative;z-index:4;background:#e5ece8;touch-action:none;user-select:none;outline-offset:-2px}.split-divider[hidden]{display:none}.viewport[data-view="split"]>.split-divider{display:flex;align-items:center;justify-content:center}.viewport[data-view="split"][data-split-direction="horizontal"]>.split-divider{grid-area:1 / 2;cursor:col-resize}.viewport[data-view="split"][data-split-direction="vertical"]>.split-divider{grid-area:2 / 1;cursor:row-resize}.split-divider span{width:4px;height:40px;border-radius:3px;background:#95b2a4}.viewport[data-split-direction="vertical"] .split-divider span{width:40px;height:4px}.split-divider:hover,.split-divider:focus-visible{background:#cfe0d7;outline:2px solid #176d69}.split-divider::before{content:"";position:absolute;inset:0 -15px}.viewport[data-split-direction="vertical"] .split-divider::before{inset:-15px 0}.split-resizing{user-select:none}.viewport[data-view="split"] .zoom-controls{bottom:.75rem}.viewport[data-view="split"] .three-pane{overflow:hidden}
@media(max-width:639px){.split-layout-controls{padding:6px;gap:4px}.split-layout-controls strong{display:none}.split-layout-controls button{min-height:44px;padding:6px 10px}.split-layout-controls output{font-size:.75rem}.viewport[data-view="split"][data-split-direction="vertical"]{min-height:36rem}.viewport[data-view="split"][data-split-direction="horizontal"]{min-height:24rem}.canvas-shell:has(.viewport[data-view="split"][data-split-direction="horizontal"]){min-height:36rem}}
#background-scale-dialog,#background-scale-dialog button,#background-scale-dialog input,#background-scale-dialog select{touch-action:manipulation}
#toast{pointer-events:none}
.library #categories{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;padding:0 .75rem .6rem}.catalog-select{display:grid;gap:5px;min-width:0;color:#62796f;font-size:.75rem}.catalog-select select{width:100%;min-width:0;min-height:44px;padding:8px 24px 8px 9px;border:1px solid #cbd9d1;border-radius:6px;background:#f9fbf9;color:#2e5543;font:inherit;font-size:.82rem;text-overflow:ellipsis}.library .catalog-grid{gap:10px}.library .object-card{padding:9px;min-height:210px;border-color:#dbe5df}.library .object-preview{height:clamp(8rem,10vw,10rem);padding:9px;background:#f4f7f3;border:1px solid #e7ede7;border-radius:5px}.object-card-info{display:grid;gap:4px}.library .object-card strong{font-size:.88rem;font-weight:600}.library .object-card small{font-size:.75rem}.library .catalog-grid[data-layout="list"] .object-card{grid-template-columns:6rem minmax(0,1fr) 1.2rem;min-height:7.25rem;padding:.5rem}.library .catalog-grid[data-layout="list"] .object-preview{width:6rem;height:6rem;padding:.25rem;margin:0}.library .object-card:focus-visible{outline:3px solid #176d69;outline-offset:2px}.library .object-card:hover{border-color:#86a997;background:#fbfdfb}
.workspace{position:relative}.workspace-column-divider{position:absolute;top:0;width:14px;z-index:7;display:flex;align-items:center;justify-content:center;cursor:col-resize;touch-action:none;outline-offset:-2px}.workspace-column-divider[hidden]{display:none}.workspace-column-divider span{width:3px;height:48px;border-radius:3px;background:#9bb5a7;pointer-events:none}.workspace-column-divider::before{content:"";position:absolute;inset:0 -8px}.workspace-column-divider:hover,.workspace-column-divider:focus-visible{background:#cce0d18c;outline:2px solid #739e88}
.workspace-height-row{display:flex;align-items:center;gap:8px;flex-shrink:0;min-height:44px;padding:3px 0}.workspace-height-handle{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;min-height:38px;cursor:row-resize;touch-action:none;border-radius:5px;background:#edf3ef;color:#668475;border:1px dashed #bdcfc2}.workspace-height-handle span{width:38px;height:4px;border-radius:3px;background:#91b09a}.workspace-height-handle small{font-size:.75rem}.workspace-height-handle:focus-visible{outline:2px solid #176d69}.workspace-height-row button{min-height:40px;padding:6px 10px;border:1px solid #cfddd3;border-radius:5px;color:#476a56;background:white;font-size:.78rem}.workspace[data-custom-height]{height:var(--custom-workspace-height);min-height:0}.workspace[data-custom-height]>.editor{align-self:start}.workspace[data-custom-height]>.library,.workspace[data-custom-height]>.inspector{align-self:stretch}.canvas-shell[data-custom-height]{min-height:0!important;flex:none}.canvas-shell[data-custom-height] #viewport{min-height:0}.canvas-pan-button{display:flex;align-items:center;justify-content:center;gap:5px;min-height:40px;padding:7px 10px;border:1px solid #cbded4;border-radius:5px;background:#f7faf7;color:#466d5b;font-size:.78rem;white-space:nowrap}.canvas-pan-button .icon{width:16px;height:16px}.canvas-pan-button.active{background:#176d69;color:white}.canvas-view-controls{flex-wrap:wrap}.canvas-view-controls .view-tabs{margin-left:auto}body[data-workspace-drag]{user-select:none}body[data-workspace-drag="height"]{cursor:row-resize}body[data-workspace-drag="library"],body[data-workspace-drag="inspector"]{cursor:col-resize}body[data-workspace-drag] #plan-svg,body[data-workspace-drag] #three-container{pointer-events:none}
@media(min-width:1440px){.workspace{grid-template-columns:var(--library-width,320px) minmax(0,1fr) var(--inspector-width,320px)}}
@media(min-width:1200px) and (max-width:1439px){.workspace{grid-template-columns:var(--library-width,320px) minmax(0,1fr)}}
@media(max-width:1199px){.library{width:min(30rem,calc(100vw - 1.5rem))}.workspace-column-divider{display:none}.library .object-preview{height:8.5rem}}
@media(max-width:639px){.library .object-preview{height:8rem}.library-placement{padding:.45rem .75rem}.library #categories{gap:6px}.workspace-height-handle small{font-size:.6875rem}.workspace-height-handle span{width:24px}.workspace-height-row button{min-height:44px}.canvas-pan-button{min-height:44px;padding:6px 8px}.canvas-view-controls .plan-presentation{margin-left:auto}.canvas-view-controls .view-tabs{flex-basis:100%;margin:0}}
/* Keep the symbol shelf dominant; controls share compact rows. */
.library .panel-heading{padding:5px 10px;min-height:36px}.library .panel-heading h1{font-size:1rem;line-height:1.4}.library .library-tabs{margin:0 10px;gap:18px}.library .library-tabs button{min-height:32px;padding:4px 0;font-size:.8rem}.library .search-field{margin:4px 8px;min-height:32px;padding:4px 8px}.library .search-field input{font-size:.84rem}.library #categories{padding:0 8px 4px;gap:6px}.library .catalog-select{display:block}.library .catalog-select select{min-height:32px;height:32px;padding:3px 20px 3px 7px;font-size:.78rem}.library .library-placement{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 8px;min-height:40px}.library .library-browser-bar{margin:0;gap:0;flex-shrink:0}.library .library-browser-bar>div{padding:1px;gap:1px}.library .library-browser-bar button{min-height:30px;height:30px;padding:3px 8px;font-size:.75rem}.library .library-mirror-controls{display:flex;align-items:center;gap:3px}.library .library-mirror-controls button{min-width:32px;width:32px;min-height:32px;height:32px;padding:5px}.library .library-mirror-controls .icon{width:16px;height:16px}.library .section-label{padding:3px 10px;min-height:24px;font-size:.75rem;justify-content:space-between}.library #library-result-count{font-size:.6875rem;color:#7b8d80;white-space:nowrap}.library .library-footer{display:none}.library .catalog-grid{padding-top:0;flex:1}.library .panel-close-button{min-width:32px;min-height:32px;width:32px;height:32px}
.viewport-controls{position:absolute;top:8px;left:8px;right:8px;z-index:6;display:flex;align-items:flex-start;justify-content:space-between;gap:8px;pointer-events:none}.viewport-controls>*{pointer-events:auto}.viewport-panel-buttons{display:flex;align-items:center;justify-content:flex-end;gap:6px}.viewport-controls .floor-select{background:#fffffff2;box-shadow:0 1px 4px #203b3410;padding:1px 3px 1px 7px;gap:4px;max-width:13rem}.viewport-controls .floor-select select{min-height:30px;height:30px;max-width:7rem;font-size:.8rem}.viewport-controls .floor-select .icon-button{min-width:30px;min-height:30px;width:30px;height:30px}.viewport-controls .floor-select .icon{width:15px;height:15px}.viewport .canvas-badge{top:52px;left:10px}.viewport .three-tools,.viewport[data-view="split"] .three-tools{top:52px}.viewport .polygon-actions{top:54px;left:10px;right:auto;transform:none;max-width:calc(100% - 20px)}.background-scale-toolbar{top:60px}
@media(pointer:coarse){.library .panel-heading{min-height:48px}.library .panel-close-button{min-width:44px;min-height:44px}.library .library-tabs button{min-height:44px}.library .search-field{min-height:44px}.library .catalog-select select{min-height:44px;height:44px;font-size:.84rem}.library .library-browser-bar button{min-height:44px;height:44px;padding:3px 8px}.library .library-mirror-controls button{min-width:44px;width:44px;min-height:44px;height:44px}.library .library-placement{min-height:52px}.viewport-controls .floor-select select{min-height:44px;height:44px}.viewport-controls .floor-select .icon-button{min-width:44px;min-height:44px;width:44px;height:44px}.viewport .canvas-badge{top:64px}.viewport .three-tools,.viewport[data-view="split"] .three-tools{top:64px}.viewport .polygon-actions{top:64px}.background-scale-toolbar{top:64px}}
@media(max-width:639px){.viewport-panel-buttons .mobile-library-button,.viewport-panel-buttons .panel-open-button{display:none}.viewport-controls .floor-select{max-width:11rem}}
/* A compact editor: geometry before secondary material and help controls. */
.inspector .panel-heading{padding:6px 10px;min-height:40px;gap:6px}.inspector .panel-heading>div{min-width:0;flex:1}.inspector .panel-heading h2{font-size:1rem;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inspector .mini-badge{display:none}.inspector #inspector-content{padding:0 10px}.inspector .inspector-object-summary{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #e5ece7}.inspector .inspector-preview{flex:0 0 72px;width:72px;height:56px;min-height:0;padding:4px;margin:0;border-radius:4px}.inspector .inspector-preview svg{width:100%;height:100%;max-width:72px}.inspector-identity{flex:1;min-width:0}.inspector .inspector-section{padding:7px 0}.inspector .inspector-section h3{font-size:.82rem;line-height:1.4;margin-bottom:5px;gap:4px}.inspector .field-grid{gap:6px 8px}.inspector .field{gap:3px}.inspector .field>span{font-size:.73rem;line-height:1.35}.inspector .field-input{min-height:30px}.inspector .field-input input,.inspector .field input,.inspector .field select{min-height:30px;height:30px;font-size:.82rem;padding:4px 6px}.inspector .field-input small{font-size:.7rem;padding-right:5px}.inspector .action-grid{gap:5px}.inspector .action-grid button,.inspector-quick-rotate,.inspector-door-actions button{min-height:32px;padding:4px 6px;font-size:.76rem;border:1px solid #d2ded6;border-radius:4px;background:#f9fbf9;color:#456452}.inspector-quick-rotate{display:flex;align-items:center;justify-content:center;gap:4px;height:32px}.inspector-quick-rotate .icon{width:15px;height:15px}.inspector .mirror-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.inspector .mirror-actions button{gap:3px;padding:4px 2px;white-space:nowrap;min-width:0;font-size:.73rem}.inspector .mirror-actions .icon{width:14px;height:14px}.inspector .field-note{font-size:.72rem;line-height:1.5;margin:6px 0}.inspector .inline-warning{margin:5px 0;padding:7px;font-size:.75rem;line-height:1.5}.inspector-details{border-bottom:1px solid #e5ece7}.inspector-details>summary{cursor:pointer;min-height:32px;padding:7px 2px;font-size:.8rem;font-weight:600;color:#506a5a;line-height:1.4}.inspector-details>summary:focus-visible{outline:2px solid #176d69;outline-offset:-2px}.inspector-details-body{padding:3px 0 8px}.inspector-details-body .inspector-section{border:0}.inspector-warning>summary{color:#9c692b}.inspector-door-actions{display:flex;gap:6px;align-items:center;justify-content:space-between;padding:5px 0;font-size:.73rem;color:#647b6c}.inspector .area-details{padding:5px 0}.inspector .vertex-row{margin-bottom:5px}.inspector .color-swatches{gap:5px;margin-top:6px}.inspector .selection-list{font-size:.76rem;line-height:1.5;max-height:10rem;overflow:auto}
@media(pointer:coarse){.inspector .panel-heading{min-height:48px}.inspector .field-input{min-height:44px}.inspector .field-input input,.inspector .field input,.inspector .field select{min-height:44px;height:44px;font-size:1rem;padding:7px 6px}.inspector .action-grid button,.inspector-quick-rotate,.inspector-door-actions button{min-height:44px;height:auto}.inspector-details>summary{min-height:44px;padding:11px 2px}.inspector .field>span{font-size:.76rem}.inspector .inspector-preview{height:56px}.inspector .mirror-actions button{font-size:.74rem}}
.background-scale-toolbar{flex-wrap:wrap;gap:6px 10px}.background-scale-toolbar>div:first-child{flex:1;min-width:10rem}.background-scale-toolbar>.background-scale-actions{display:flex;gap:4px;flex-shrink:0}.background-scale-actions button{min-height:36px;padding:5px 8px;white-space:nowrap}.background-scale-actions button[aria-pressed="true"]{background:#176d69;color:white;border-color:#176d69}#plan-svg[data-calibrating="true"][data-scale-mode="pan"],#plan-svg[data-calibrating="true"][data-scale-mode="pan"] .entity{cursor:grab}#plan-svg[data-calibrating="true"][data-scale-dragging="true"]{cursor:grabbing}
@media(max-width:719px){.background-scale-toolbar{padding:7px}.background-scale-toolbar>div:first-child{flex-basis:100%;display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}.background-scale-toolbar strong{font-size:.78rem}.background-scale-toolbar span{font-size:.7rem;line-height:1.3}.background-scale-actions{width:100%;justify-content:space-between}.background-scale-actions button{font-size:.74rem;padding:5px 7px}}
@media(pointer:coarse){.background-scale-actions button{min-height:44px;min-width:44px}}

.background-scale-toolbar,.background-scale-toolbar button{touch-action:manipulation}
.inspector .field textarea,#annotation-text{width:100%;min-height:76px;resize:vertical;padding:7px 8px;border:1px solid #d2ded6;border-radius:4px;background:#f9fbfb;color:var(--ink);font:inherit;font-size:.84rem;line-height:1.5}.inspector .field select{width:100%;border:1px solid #d2ded6;border-radius:4px;color:var(--ink);background:#f9fbfb}.automatic-dimension,.annotation{cursor:pointer}.annotation-selected .annotation-label{text-decoration:underline;text-decoration-color:#137a73;text-underline-offset:3px}.automatic-dimension:focus-visible{outline:none}.automatic-dimension:focus-visible .annotation-label{fill:#0e746a;text-decoration:underline}.annotation-hit{cursor:pointer}
@media(pointer:coarse){.inspector .field textarea,#annotation-text{font-size:1rem;min-height:88px}}

#structure-tool{min-width:0;max-width:132px;min-height:32px;padding:5px 7px;border:1px solid #cbded9;border-radius:5px;background:#f3f8f5;color:#176d69;font-size:.78rem;flex-shrink:0}@media(pointer:coarse){#structure-tool{min-height:44px;font-size:.84rem}}
.canvas-toolbar .drawing-tools{flex-wrap:nowrap;overflow-x:auto;max-width:100%;min-width:0;scrollbar-width:thin}.canvas-toolbar .drawing-tools>button,.canvas-toolbar .drawing-tools>select{flex-shrink:0}@media(pointer:fine){.canvas-toolbar .drawing-tools .tool{width:32px;min-width:32px;height:32px;min-height:32px;padding:6px}}
#plan-svg{user-select:none;-webkit-user-select:none}

/* Keep watermark coordinates identical to the exported full image. */
.watermark-preview-stage{position:relative;width:100%;line-height:0}
.watermark-preview-stage #watermark-preview-image{display:block;width:100%;height:auto;max-height:none;object-fit:contain;user-select:none}
#watermark-drag-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
#watermark-drag-layer [data-watermark-drag]{pointer-events:all;touch-action:none;cursor:move}
#watermark-drag-layer [data-watermark-drag]:focus{outline:none;stroke:#b36144;stroke-width:3}
.plan-camera{cursor:move}.plan-camera text{user-select:none}.room-label text{user-select:none}
#snapshot-update-camera{margin-bottom:12px}
.canvas-status>div{flex-wrap:wrap;row-gap:4px}
#watermark-drag-layer{touch-action:none}
@media(pointer:fine){.canvas-toolbar #floor-tool,.canvas-toolbar #room-shape{min-height:32px;height:32px;padding:5px 7px}}
