:root{--primary:#0066cc;--primary-focus:#0071e3;--ink:#1d1d1f;--muted:#7a7a7a;--hairline:#e0e0e0;--divider:#f0f0f0;--canvas:#fff;--parchment:#f5f5f7;--pearl:#fafafc;--dark:#272729;--font:system-ui,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Segoe UI",sans-serif;--mono:"SFMono-Regular",Consolas,monospace;--radius:8px}*{box-sizing:border-box}body{height:100dvh;display:flex;flex-direction:column;margin:0;color:var(--ink);background:var(--canvas);font-family:var(--font);font-size:14px;line-height:1.47;-webkit-font-smoothing:antialiased;overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;touch-action:manipulation}button:active{transform:scale(.95)}button:disabled{cursor:default;opacity:.35;transform:none}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--primary-focus);outline-offset:3px}button svg{width:20px;height:20px;flex:none}a{color:inherit;text-decoration:none}input,select{min-width:0}input[type=checkbox]{accent-color:var(--primary);width:14px;height:14px;flex:none;cursor:pointer}button,summary{user-select:none}button[aria-pressed=true]{color:var(--primary)}[hidden]{display:none!important}.global-nav{height:44px;background:var(--ink);color:white;display:flex;align-items:center;justify-content:space-between;padding:0 24px;font-size:12px}.wordmark{display:flex;align-items:center;gap:10px;font-size:18px;letter-spacing:1.5px;font-weight:600}.wordmark svg{width:23px;height:23px}.nav-help{color:#ddd;font-size:11px;display:flex;gap:10px;align-items:center;height:40px}.nav-help span{display:inline-grid;place-items:center;width:16px;height:16px;border:1px solid #777;border-radius:50%;font-size:10px}.project-bar{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid var(--hairline);background:var(--canvas)}.project-identity{display:flex;align-items:center;gap:10px;min-width:0}.project-identity input{width:180px;border:none;background:none;font-size:19px;letter-spacing:-.5px;font-weight:600;padding:6px 0}.project-actions{display:flex;align-items:center;gap:16px}.text-button{color:var(--ink);font-size:12px;min-height:44px;padding:0 5px}.primary-button{background:var(--primary);color:var(--canvas);border-radius:9999px;min-height:40px;padding:9px 19px;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:16px}.primary-button span{font-size:17px}.vertical-rule{height:18px;width:1px;background:var(--hairline);margin:0 2px}.workspace{flex:1;display:grid;grid-template-columns:222px minmax(0,1fr) 278px;min-height:0}.library-panel{display:flex;flex-direction:column;border-right:1px solid var(--hairline);min-height:0;background:var(--canvas)}.library-section{padding:23px 18px 16px}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.section-heading h2{font-size:12px;font-weight:600;letter-spacing:-.15px;margin:0}.section-heading>span{font:9px var(--mono);color:var(--muted);letter-spacing:.8px}.object-library{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.object-card{height:92px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1px solid var(--divider);border-radius:8px;background:var(--pearl);font-size:11px}.object-card svg{width:49px;height:43px;stroke:#545459;stroke-width:1.2}.object-card:hover{border-color:#b4b4bb}.object-card:focus-visible{outline-offset:1px}.import-button{display:flex;align-items:center;width:100%;gap:9px;padding:12px 8px;margin-top:12px;border:1px dashed #c8c8cf;border-radius:8px;text-align:left}.import-symbol{font-size:23px;font-weight:300}.import-button>span:nth-child(2){font-size:11px}.import-button small{display:block;font:9px var(--mono);color:var(--muted);margin-top:3px}.small-arrow{margin-left:auto;font-size:16px}.light-add{width:100%;display:flex;align-items:center;gap:9px;font-size:11px;min-height:44px;margin-top:5px}.light-add svg{width:18px}.light-add span{margin-left:auto;font-size:18px;color:var(--muted)}.scene-section{border-top:1px solid var(--divider);padding:18px 0 0;overflow:auto;flex:1;min-height:100px}.scene-section>.section-heading{padding:0 18px;margin-bottom:10px}.object-list{padding-bottom:12px}.object-row{min-height:42px;display:flex;align-items:center;padding:0 10px 0 17px;border-left:2px solid transparent;gap:7px}.object-row.selected{background:#eef5fc;border-left-color:var(--primary)}.object-row.nested{padding-left:31px}.object-row>.object-select{display:flex;align-items:center;flex:1;gap:9px;min-width:0;min-height:40px;padding:0;text-align:left;font-size:11px}.object-select>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-select svg{width:14px;height:14px;opacity:.65}.row-visibility{width:26px;height:32px;padding:5px;opacity:.55;display:grid;place-items:center}.row-visibility svg{width:15px;height:15px}.object-row.is-hidden .object-select{opacity:.35}.viewport{position:relative;overflow:hidden;background:var(--parchment);outline:none;min-width:0}.canvas-host,.canvas-host canvas{width:100%;height:100%;display:block;touch-action:none}.eyebrow{font:9px var(--mono);letter-spacing:1.7px;color:var(--muted)}.view-tools{position:absolute;right:20px;top:24px;display:flex;gap:8px}.segmented{display:flex;background:rgba(255,255,255,.88);border:1px solid rgba(0,0,0,.07);border-radius:8px;padding:3px;align-items:center;backdrop-filter:blur(12px)}.segmented button{border-radius:5px;min-width:36px;min-height:34px;font-size:11px;padding:6px 10px;color:#77777c;display:grid;place-items:center}.segmented button.active{background:var(--ink);color:white}.segmented svg{width:17px;height:17px}.mode-toggle button{padding:7px}.presentation-button{display:flex;align-items:center;gap:5px;background:rgba(255,255,255,.88);border:1px solid rgba(0,0,0,.07);border-radius:8px;padding:8px 11px;font-size:11px}.presentation-button svg{width:16px;height:16px}.bottom-tools{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px}.view-switch{border-radius:9999px;padding:4px 5px}.view-switch button{border-radius:9999px;min-width:39px;padding:7px 12px}.view-caption{position:absolute;bottom:53px;width:100%;text-align:center;font-size:9px;color:var(--muted);letter-spacing:.5px}.fit-button{width:40px;height:40px;display:grid;place-items:center;border:1px solid rgba(0,0,0,.07);border-radius:50%;background:rgba(255,255,255,.88)}.fit-button svg{width:17px;height:17px}.selection-caption{position:absolute;bottom:32px;left:24px;font:9px var(--mono);color:#96969c;pointer-events:none;max-width:160px;line-height:1.7}.dimension-labels{position:absolute;inset:0;pointer-events:none}.dimension-label{position:absolute;transform:translate(-50%,-50%);font:9px var(--mono);color:var(--primary);padding:3px 6px;background:rgba(255,255,255,.91);border-radius:4px;white-space:nowrap}.inspector-panel{border-left:1px solid var(--hairline);display:flex;flex-direction:column;min-height:0;background:var(--canvas)}.inspector-tabs{height:55px;flex:none;border-bottom:1px solid var(--divider);display:flex;gap:24px;padding:0 22px}.inspector-tabs button{height:55px;font-size:12px;color:var(--muted);border-bottom:2px solid transparent;padding:0 2px}.inspector-tabs button.active{color:var(--ink);border-bottom-color:var(--ink);font-weight:600}.inspector-content{overflow:auto;flex:1;padding-bottom:20px;scrollbar-width:thin}.inspector-section{padding:19px 21px;border-bottom:1px solid var(--divider)}.inspector-section:last-child{border-bottom:0}.inspector-section h3{font-size:11px;font-weight:600;letter-spacing:-.1px;margin:0 0 12px;display:flex;align-items:center;justify-content:space-between}.unit-hint{font:9px var(--mono);color:var(--muted);font-weight:400}.item-name{font-size:18px;font-weight:600;letter-spacing:-.5px;border:none;width:100%;padding:3px 0;background:none}.inspector-name-row{display:flex;align-items:center;gap:6px}.icon-button{width:32px;height:32px;display:grid;place-items:center;flex:none}.icon-button svg{width:16px;height:16px}.mini-actions{display:flex;gap:2px}.field-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.field-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.number-field{display:block;min-width:0;font-size:9px;color:var(--muted)}.number-field>span{display:block;margin-bottom:5px}.number-field input{width:100%;height:36px;border:1px solid var(--divider);background:var(--pearl);border-radius:5px;padding:7px 8px;font:11px var(--mono);color:var(--ink);font-variant-numeric:tabular-nums}.number-field input:focus{border-color:var(--primary);outline:none}.number-field input.invalid{border-color:var(--primary);background:#eef5fc}.subline{display:flex;align-items:center;gap:6px;margin-top:10px;font-size:10px;color:var(--muted)}.subline>label{display:flex;align-items:center;gap:5px}.subline.between{justify-content:space-between}.subline button{font-size:10px;color:var(--primary);padding:4px 0}.link-lock{display:flex;align-items:center;gap:5px;font-size:9px;color:var(--muted);margin-left:auto}.link-lock input{width:12px;height:12px}.small-note{font-size:10px;line-height:1.7;color:var(--muted);margin:10px 0 0}.secondary-button{border:1px solid var(--hairline);border-radius:8px;padding:9px 12px;min-height:38px;font-size:11px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--canvas)}.wide{width:100%}.stack-gap{display:flex;flex-direction:column;gap:8px}.face-selector{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:11px}.face-selector button{font-size:10px;min-height:30px;border:1px solid var(--divider);border-radius:5px;color:var(--muted)}.face-selector button.active{border-color:var(--primary);background:#f2f7fd;color:var(--primary)}.image-drop{width:100%;min-height:77px;background:var(--pearl);border:1px dashed #c8c8cf;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;font-size:10px;overflow:hidden;position:relative}.image-drop>span{font-size:20px;color:var(--muted);font-weight:300}.image-drop img{width:100%;height:85px;object-fit:contain}.image-drop.with-image{border-style:solid}.image-drop.with-image:after{content:'이미지 변경';position:absolute;right:5px;bottom:5px;font-size:9px;background:rgba(255,255,255,.9);padding:3px 6px;border-radius:5px}.form-label{display:block;font-size:10px;color:var(--muted);margin-top:10px}.form-label>select,select.full-select{display:block;width:100%;height:34px;border:1px solid var(--divider);border-radius:5px;background:var(--pearl);padding:5px 8px;margin-top:5px;font-size:11px}.graphic-settings{margin-top:12px;display:flex;flex-direction:column;gap:10px}.color-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10px}.color-row input[type=color]{width:31px;height:28px;border:1px solid var(--hairline);border-radius:5px;background:none;padding:3px;cursor:pointer}.color-row>span{margin-right:auto}.color-code{font:10px var(--mono);color:var(--muted)}.slider-field{font-size:10px;display:block;margin-top:15px;color:var(--muted)}.slider-field>span{display:flex;justify-content:space-between;margin-bottom:8px}.slider-field input{width:100%;height:3px;accent-color:var(--ink);cursor:pointer}.checkbox-line{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--muted);min-height:32px}.inline-buttons{display:flex;gap:6px;margin-top:11px}.inline-buttons>.secondary-button{flex:1;padding:7px 5px;font-size:10px;min-height:32px}.room-tip{padding:20px 21px;line-height:1.8;color:var(--muted);font-size:10px}.empty-inspector{padding:45px 26px;font-size:12px;color:var(--muted);text-align:center}.empty-inspector strong{display:block;color:var(--ink);font-size:16px;margin:18px 0 8px;font-weight:600}.empty-inspector svg{width:40px;height:40px}.loading{position:absolute;inset:0;background:var(--parchment);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;z-index:10}.loading p{font-size:12px;color:var(--muted)}.loading-spinner{width:23px;height:23px;border:1.5px solid var(--hairline);border-top-color:var(--ink);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.drop-hint{position:absolute;inset:12px;z-index:20;display:flex;align-items:center;justify-content:center;flex-direction:column;background:rgba(245,245,247,.96);border:1px dashed var(--primary);border-radius:8px;pointer-events:none}.drop-hint>span{font-size:50px;font-weight:300;color:var(--primary)}.drop-hint strong{font-size:20px;font-weight:600}.drop-hint p{font-size:12px;color:var(--muted)}.toast{position:fixed;bottom:84px;left:50%;transform:translateX(-50%);max-width:min(90vw,560px);background:var(--ink);color:var(--canvas);border-radius:8px;padding:12px 20px;font-size:12px;z-index:100;pointer-events:none;text-align:center}dialog{border:1px solid var(--hairline);border-radius:18px;color:var(--ink);background:var(--canvas);padding:40px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 48px);overflow:auto;font:14px/1.47 var(--font)}dialog::backdrop{background:rgba(0,0,0,.3);backdrop-filter:blur(5px)}dialog h2{font-size:30px;line-height:1.2;letter-spacing:-1px;font-weight:600;margin:15px 0 24px}.dialog-close{position:absolute;top:12px;right:14px;display:grid;place-items:center;border-radius:50%;width:32px;height:32px;padding:0;line-height:1;background:var(--parchment)}.dialog-close svg{width:20px;height:20px;display:block}.help-dialog{width:530px}.help-steps>p{display:flex;gap:18px;margin:22px 0;font-size:12px;color:var(--muted)}.help-steps b{font:10px var(--mono);padding-top:3px;color:var(--primary)}.help-steps strong{display:block;font-size:14px;font-weight:600;color:var(--ink);margin-bottom:4px}.shortcuts{display:flex;flex-wrap:wrap;gap:12px 16px;border-top:1px solid var(--divider);padding-top:20px;font-size:10px;color:var(--muted)}kbd{font:10px var(--mono);border:1px solid var(--hairline);border-radius:4px;padding:3px 5px;margin-right:4px;display:inline-block;min-width:22px;text-align:center}.export-dialog{width:430px}.export-dialog h2{font-size:25px}.export-dialog>p{font-size:12px;color:var(--muted)}.export-dialog .primary-button{margin:20px 0 9px}.export-dialog .form-label{margin:22px 0 10px}.exit-presentation{position:absolute;right:24px;top:24px;background:rgba(255,255,255,.9);border:1px solid var(--hairline);border-radius:9999px;padding:10px 17px;font-size:11px;backdrop-filter:blur(12px)}.exit-presentation kbd{margin:0 0 0 10px}.is-presenting .workspace{grid-template-columns:minmax(0,1fr)}.is-presenting .library-panel,.is-presenting .inspector-panel,.is-presenting .view-tools,.is-presenting .dimension-labels,.is-presenting .selection-caption{display:none}.is-presenting .viewport{background:var(--parchment)}.color-swatches{display:flex;gap:7px;margin-top:12px}.color-swatches button{width:24px;height:24px;border:1px solid var(--hairline);border-radius:50%}.color-swatches button.active{outline:1px solid var(--primary);outline-offset:3px}.file-info{padding:9px 10px;background:var(--parchment);border-radius:5px;margin-top:10px;font:9px/1.8 var(--mono);color:var(--muted);overflow-wrap:anywhere}.undo-tools{display:flex;gap:2px}.undo-tools button{width:27px;height:28px;font-size:17px;color:var(--muted)}.side-panel-toggle{display:none}.inline-warning{font-size:10px;line-height:1.7;color:var(--primary);margin-top:10px}.inspector-section details{margin-top:11px}.inspector-section summary{font-size:10px;color:var(--muted);cursor:pointer;min-height:26px}.mount-badge{font-size:9px;color:var(--primary);display:inline-flex;align-items:center;gap:5px;margin:7px 0 0}.mount-badge:before{content:'';width:4px;height:4px;border-radius:50%;background:var(--primary)}@media(min-width:1600px){.workspace{grid-template-columns:240px minmax(0,1fr) 294px}.library-section{padding:25px 22px 18px}.inspector-section{padding:20px 24px}}@media(max-width:1150px){.workspace{grid-template-columns:186px minmax(0,1fr) 252px}.library-section{padding:20px 12px 14px}.object-card{height:79px}.object-card svg{height:35px}.scene-section>.section-heading{padding:0 13px}.object-row{padding-left:11px;gap:4px}.inspector-section{padding:17px 16px}.inspector-tabs{padding:0 16px}.view-tools{right:12px}.view-tools .presentation-button span{display:none}.selection-caption{display:none}.number-field input{padding:6px;font-size:10px}.project-identity input{font-size:18px}.project-bar{height:60px}}@media(max-width:850px){.workspace{grid-template-columns:148px minmax(0,1fr) 222px}.global-nav,.project-bar{padding:0 16px}.project-actions{gap:10px}.project-actions .primary-button{font-size:11px;padding:8px 13px}.library-section{padding:17px 10px 10px}.section-heading>span{display:none}.object-card{height:73px}.object-card svg{width:38px}.import-button{padding:9px 6px;gap:6px}.import-button>span:nth-child(2){font-size:10px}.import-button small{font-size:8px}.small-arrow{display:none}.object-row>.object-select{font-size:10px;gap:5px}.row-visibility{width:20px;padding:2px}.inspector-section{padding:15px 12px}.inspector-tabs{padding:0 12px;gap:20px}.field-grid{gap:4px}.number-field input{font-size:9px;padding:4px}.view-tools{top:74px;right:12px}.mode-toggle{flex-direction:column}.view-tools{flex-direction:column}.presentation-button{justify-content:center}.bottom-tools{gap:5px;bottom:23px}.view-switch button{min-width:28px;padding:5px 8px;font-size:10px}.fit-button{width:34px;height:34px}.view-switch{padding:3px}.project-identity input{width:160px}.wordmark{font-size:17px}}@media(max-width:640px){.workspace{grid-template-columns:108px minmax(0,1fr) 190px}.library-section{padding:12px 7px}.library-section>.section-heading,.scene-section{display:none}.object-library{gap:6px}.object-card{height:54px;gap:0;border:none;background:none}.object-card svg{height:29px}.object-card>span{font-size:8px}.import-button{justify-content:center;border-radius:8px;padding:5px;height:42px}.import-button>span:nth-child(2),.light-add>span{display:none}.light-add{font-size:0;justify-content:center}.light-add svg{width:20px}.project-identity input{width:135px;font-size:16px}.project-actions{gap:6px}.project-actions .vertical-rule{display:none}.project-actions .primary-button{font-size:0;gap:0;padding:7px 11px;min-height:34px}.project-actions .primary-button>span{font-size:20px}.text-button{font-size:10px}.global-nav{height:40px}.inspector-tabs{gap:13px;padding:0 10px}.inspector-tabs button{font-size:11px}.inspector-section{padding:14px 10px}.item-name{font-size:16px}.field-grid{grid-template-columns:1fr;gap:7px}.number-field{display:flex;align-items:center;gap:7px}.number-field>span{margin:0;flex:0 0 44px}.number-field>input{height:30px;font-size:11px}.field-grid.two{grid-template-columns:1fr}.bottom-tools{flex-direction:column}.view-switch button{min-width:25px;padding:4px 6px;font-size:9px}.view-caption{bottom:87px}.fit-button{height:30px;width:30px}.face-selector{grid-template-columns:repeat(2,1fr)}.inspector-section h3{font-size:10px}.mount-badge{font-size:8px}.primary-button{font-size:11px}.help-dialog{padding:30px 24px}.help-dialog h2{font-size:26px}.inline-buttons{flex-direction:column}}

/* Constrained placement controls */







/* Space guides are separate from the permanent physical floor. */
.library-panel{overflow-y:auto;scrollbar-width:thin}
.library-section,.layers-section{flex-shrink:0}
.layers-section{padding:15px 12px 12px;border-top:1px solid var(--divider)}
.layers-section>.section-heading{padding:0 8px;margin-bottom:10px}
.space-layer-row{display:flex;align-items:center;gap:4px;border-radius:5px;min-height:43px}
.space-layer-row.selected{background:#f0f5fb}
.space-layer-row>[data-layer-select]{display:flex;gap:9px;align-items:center;text-align:left;flex:1;min-width:0;padding:6px 8px}
.space-layer-row svg{width:18px;height:18px;flex:none;color:var(--muted)}
.space-layer-row span{font-size:11px;min-width:0}
.space-layer-row small{display:block;font:9px var(--mono);color:var(--muted);margin-top:4px;white-space:nowrap}
.layer-eye{width:29px;height:32px;display:grid;place-items:center;flex:none}
.layer-eye svg{width:15px;height:15px}
.scene-section{min-height:100px}
.number-field input[readonly]{color:var(--muted);background:var(--parchment);cursor:default}
@media(min-width:641px){.object-card{height:72px}}
@media(max-width:850px){.space-layer-row>[data-layer-select]{gap:5px;padding:5px 2px}.layers-section{padding:12px 8px}.space-layer-row small{font-size:7px}.space-layer-row span{font-size:10px}.layer-eye{width:22px}.space-layer-row svg{width:15px}}
@media(max-width:640px){.layers-section{padding:9px 7px}.layers-section>.section-heading,.space-layer-row span{display:none}.space-layer-row{gap:0}.space-layer-row>[data-layer-select]{padding:5px 1px}.layer-eye{width:19px}.layer-eye svg{width:13px}}

.walk-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:8;pointer-events:none;background:rgba(245,245,247,.12)}
.walk-intro{pointer-events:auto;text-align:center;background:rgba(255,255,255,.95);border:1px solid var(--hairline);border-radius:18px;padding:32px 34px;max-width:calc(100% - 32px)}
.walk-intro h2{font-size:23px;line-height:1.2;font-weight:600;letter-spacing:-.6px;margin:12px 0}
.walk-intro p{font-size:12px;line-height:1.9;color:var(--muted);margin:0 0 20px}
.walk-intro small{display:block;font-size:10px;color:var(--muted);margin-top:14px;line-height:1.6}
.walk-reticle{position:absolute;top:50%;left:50%;width:5px;height:5px;border:1px solid rgba(255,255,255,.9);border-radius:50%;background:var(--primary);transform:translate(-50%,-50%);pointer-events:none;z-index:7}
.walk-help{position:absolute;left:50%;bottom:112px;transform:translateX(-50%);padding:7px 12px;border:1px solid var(--hairline);border-radius:8px;white-space:nowrap;font-size:10px;line-height:1.5;background:rgba(255,255,255,.94);pointer-events:none}.is-walking .mode-toggle,.is-walking .selection-caption{display:none}
@media(max-width:850px){.walk-intro{padding:22px 16px}.walk-intro h2{font-size:19px}.walk-help{font-size:8px;white-space:normal;width:calc(100% - 24px);text-align:center}}


/* Project actions and placement settings */
.global-nav,.project-bar{flex-shrink:0}
.project-identity{gap:16px}
.project-details{display:flex;flex-direction:column;gap:3px;min-width:0}
.project-details input{padding:0}
.room-summary{font:10px var(--mono);color:var(--muted);white-space:nowrap}
.project-actions{flex-shrink:0}
.project-actions .text-button{white-space:nowrap}
.export-button{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:40px;padding:9px 19px;border:1px solid var(--primary);border-radius:9999px;background:transparent;color:var(--primary);font-size:12px;white-space:nowrap}
.export-button:hover{background:#f2f7fd}
.export-button>span{font-size:17px}
.placement-controls{display:grid;gap:12px;flex-shrink:0;padding:20px 18px;border-bottom:1px solid var(--divider)}
.placement-controls label{display:flex;align-items:center;gap:8px;font-size:11px;line-height:1.4;cursor:pointer}
.placement-controls input{margin:0}
.navigation-help{display:flex;flex-wrap:wrap;gap:8px 0;border-top:1px solid var(--divider);padding:16px 0;color:var(--muted);font-size:11px}
.navigation-help span+span:before{content:'·';padding:0 10px;color:#c4c4c9}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@media(min-width:1600px){.placement-controls{padding:20px 22px}}
@media(max-width:1150px){.placement-controls{padding:18px 12px}}
@media(max-width:850px){.project-actions .export-button{font-size:11px;padding:8px 13px}.placement-controls{padding:16px 10px}}
@media(max-width:640px){
  .project-bar{height:auto;min-height:96px;align-items:flex-start;justify-content:center;flex-direction:column;gap:8px;padding:10px 12px}
  .project-identity{width:100%}
  .project-details{flex-direction:row;align-items:center;gap:12px;width:100%}
  .project-details input{width:135px;flex-shrink:0}
  .room-summary{font-size:9px}
  .project-actions{width:100%;justify-content:flex-end;gap:8px}
  .project-actions .text-button{min-height:32px;font-size:10px}
  .project-actions .export-button{min-height:34px;padding:7px 12px;font-size:11px;gap:8px}
  .project-actions .export-button>span{font-size:16px}
  .placement-controls{padding:12px 4px;gap:12px}
  .placement-controls label{flex-direction:column;gap:4px;font-size:8px;text-align:center}
}


/* A single scrolling sidebar with independent collapsible sections. */
.library-panel{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
.library-group{flex:0 0 auto;border-bottom:1px solid var(--divider);min-width:0}
.library-group:last-child{border-bottom:0}
.library-group-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:18px;min-height:52px;list-style:none;cursor:pointer;color:var(--ink);font-size:12px;font-weight:600;letter-spacing:-.15px}
.library-group-heading::-webkit-details-marker{display:none}
.library-group-heading:focus-visible{outline:2px solid var(--primary);outline-offset:-3px}
.library-group-heading:hover{background:var(--pearl)}
.collapse-chevron{width:16px;height:16px;flex:none;color:var(--muted)}
.library-group:not([open]) .collapse-chevron{transform:rotate(-90deg)}
.library-group:not([open])>:not(summary){display:none!important}
.library-group .placement-controls{padding:0 18px 18px;border:0}
.library-group .library-section,.library-group .layers-section{padding:0 18px 16px;border:0}
.library-panel .scene-section{display:block;overflow:visible;flex:none;min-height:0;border:0;padding:0 0 12px}
.view-tools{justify-content:flex-end;align-items:flex-end}
.presentation-button{display:grid;place-items:center;width:40px;min-width:40px;height:40px;padding:0}
.section-meta{display:inline-flex;align-items:center;gap:6px;font-weight:400}
.info-button{width:20px;height:20px;display:inline-grid;place-items:center;flex:none;padding:0;color:var(--muted);border-radius:50%}
.info-button svg{width:17px;height:17px}
.info-button:hover,.info-button[aria-expanded=true]{color:var(--primary);background:#eef5fc}
.info-popover{position:fixed;z-index:90;width:260px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;padding:14px 16px;border:1px solid var(--hairline);border-radius:8px;background:var(--canvas);color:var(--muted);font-size:11px;line-height:1.75;white-space:pre-line;overflow-wrap:anywhere}
.subline.between{justify-content:flex-end}
.empty-inspector-heading{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:18px}
.empty-inspector-heading strong{margin:0}
@media(min-width:1600px){.library-group-heading{padding:18px 22px}.library-group .placement-controls{padding:0 22px 18px}.library-group .library-section,.library-group .layers-section{padding:0 22px 16px}}
@media(max-width:1150px){.library-group-heading{padding:16px 12px}.library-group .placement-controls{padding:0 12px 18px}.library-group .library-section,.library-group .layers-section{padding:0 12px 16px}}
@media(max-width:850px){.library-group-heading{padding:15px 10px;font-size:11px}.library-group .placement-controls{padding:0 10px 16px}.library-group .library-section,.library-group .layers-section{padding:0 10px 14px}}
@media(max-width:640px){
  .library-group-heading{padding:12px 4px;min-height:48px;gap:2px;font-size:8px}
  .collapse-chevron{width:10px;height:10px}
  .library-group .placement-controls{padding:0 4px 14px}
  .library-group .library-section,.library-group .layers-section{padding:0 7px 12px}
  .scene-section .object-row{padding:0 2px;gap:0}
  .scene-section .object-row.nested{padding-left:5px}
  .scene-section .object-select>span{display:none}
  .scene-section .object-row>.object-select{justify-content:center;min-width:16px}
}


/* Shared-space controls keep the existing editor layout. */
.inspector-panel select{appearance:none;-webkit-appearance:none;padding-right:32px!important;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='m4 6 4 4 4-4' stroke='%237a7a7a' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;background-size:16px 16px}
.room-status{display:inline-flex;align-items:center;gap:7px;padding:8px 0;font-size:10px;color:var(--muted);white-space:nowrap;min-height:32px}
.room-connection-dot{width:5px;height:5px;flex:none;border-radius:50%;background:var(--muted)}
.room-status[data-state=saved] .room-connection-dot{background:#2b8753}
.room-status[data-state=saving] .room-connection-dot,.room-status[data-state=connecting] .room-connection-dot{background:var(--primary)}
.room-status[data-state=offline] .room-connection-dot{background:#c05c30}
#room-online-count{padding-left:7px;border-left:1px solid var(--hairline);font-variant-numeric:tabular-nums}
.cloud-banner{display:flex;align-items:center;justify-content:center;gap:14px;flex:none;min-height:36px;padding:5px 16px;background:#f2f7fd;border-bottom:1px solid #dce9f7;color:var(--primary);font-size:11px}
.cloud-banner .text-button{min-height:24px;color:var(--primary);text-decoration:underline;font-size:11px}
.inspector-access{padding:9px 16px;border-bottom:1px solid var(--divider);font-size:10px;line-height:1.6;color:var(--primary);background:#f2f7fd;flex:none}
.row-lock{display:inline-grid;place-items:center;flex:none;width:14px;color:var(--muted)}
.row-lock svg{width:12px;height:12px}
.space-dialog{width:560px}
.space-dialog h2{margin-top:4px;font-size:26px}
.space-dialog-tabs{display:flex;gap:5px;border-bottom:1px solid var(--divider);margin-bottom:22px;overflow:auto}
.space-dialog-tabs button{padding:10px 12px;white-space:nowrap;font-size:12px;border-bottom:2px solid transparent;color:var(--muted)}
.space-dialog-tabs button.active{border-bottom-color:var(--ink);color:var(--ink);font-weight:600}
.space-dialog input,.space-dialog select{height:38px;width:100%;padding:8px 10px;border:1px solid var(--hairline);border-radius:6px;background:var(--pearl);font-size:12px}
.space-dialog select{appearance:none;-webkit-appearance:none;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='m4 6 4 4 4-4' stroke='%237a7a7a' stroke-width='1.2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;background-size:16px}
.room-form{display:flex;flex-direction:column;gap:18px}
.room-form>label,.room-share-row>label,.room-nickname>label{display:block;font-size:11px;font-weight:500}
.room-form input,.room-form select{margin-top:7px}
.room-hint,.room-empty,.room-error{font-size:11px;line-height:1.8;color:var(--muted);margin:10px 0}
.room-error{color:#aa3c26}
.room-current{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}
.room-current strong{font-size:18px;letter-spacing:-.4px}
.room-role{font-size:10px;color:var(--muted);white-space:nowrap}
.room-share-row,.room-nickname{margin:18px 0}
.room-share-row>div,.room-nickname>div,.room-owner-key>div{display:flex;gap:8px;margin-top:7px}
.room-share-row input,.room-owner-key input{font:10px var(--mono)}
.room-share-row .secondary-button,.room-nickname .secondary-button,.room-owner-key .secondary-button{flex:none;white-space:nowrap;min-height:38px;font-size:11px}
.room-owner-key{margin-top:22px;font-size:11px;color:var(--muted)}
.room-owner-key summary{cursor:pointer;min-height:26px}
.room-management{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--divider);margin-top:24px;padding-top:18px}
.room-danger{color:#a53b2b}
.room-list-row{display:flex;align-items:center;gap:14px;padding:15px 0;border-bottom:1px solid var(--divider)}
.room-list-row>div{flex:1;min-width:0}
.room-list-row strong{display:block;font-size:13px;overflow-wrap:anywhere}
.room-list-row span{display:block;font-size:10px;color:var(--muted);margin-top:5px}
.room-person{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--divider)}
.room-person-dot{width:8px;height:8px;border-radius:50%;flex:none}
.room-person strong{display:block;font-size:12px;font-weight:500}
.room-person div>span{display:block;font-size:10px;color:var(--muted);margin-top:4px}
#room-live-people h3,.room-member-settings h3{font-size:12px;margin:0 0 8px}
.room-member-settings{margin-top:25px}
.room-member-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;font-size:11px}
.room-member-row select{width:110px;flex:none;font-size:11px}
.room-confirm h3{font-size:18px;margin:0 0 12px}
.room-confirm p{font-size:12px;line-height:1.8;color:var(--muted)}
.room-confirm>div{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}
@media(max-width:1150px){#room-status-label{display:none}.project-identity{gap:10px}}
@media(max-width:640px){.room-status{margin-left:auto}.project-details{width:auto}.project-identity{justify-content:space-between}.cloud-banner{flex-wrap:wrap;gap:5px 10px;font-size:10px}.space-dialog{padding:32px 20px}.space-dialog-tabs button{font-size:11px;padding:10px 8px}.room-share-row>div,.room-owner-key>div{flex-wrap:wrap}.room-share-row input,.room-owner-key input{flex:1 1 100%}}

/* Space home */
.global-nav{flex-shrink:0}
.nav-home{font-size:11px;color:#d8d8da;margin-left:24px;margin-right:auto;padding:6px 10px;border-radius:5px}
.nav-home:hover{background:#333}
body.is-home>.project-bar,body.is-home>.workspace,body.is-home>.cloud-banner{display:none!important}
.home-page{flex:1;min-height:0;overflow:auto;background:#f8f8fa;padding:28px max(28px,calc((100vw - 1120px)/2)) 28px}
.home-heading{display:flex;align-items:center;justify-content:flex-end;gap:16px;margin-bottom:26px}
.home-eyebrow{font:9px var(--mono);letter-spacing:2px;color:var(--muted)}
.home-heading h1{font-size:30px;letter-spacing:-1.2px;line-height:1.3;font-weight:600;margin:12px 0 9px}
.home-heading p{color:var(--muted);font-size:12px;margin:0}
.home-actions{display:flex;gap:10px;flex:none}
.home-actions .primary-button,.home-actions .secondary-button{display:flex;align-items:center;justify-content:center;gap:15px;min-height:40px;padding:10px 18px;font-size:12px;border-radius:7px}
.home-actions #home-new-btn{gap:8px}.home-actions #home-new-btn svg{width:23px;height:23px;flex:none}
.home-section{margin-bottom:36px}
.home-section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:16px}
.home-section-heading h2{font-size:16px;letter-spacing:-.4px;font-weight:600;margin:0;display:flex;align-items:center;gap:9px}
.home-section-heading h2 span{font:10px var(--mono);color:var(--muted);min-width:20px;height:20px;border-radius:5px;background:#eaeaec;display:grid;place-items:center}
.home-section-heading>span{font-size:10px;color:#909096}
.space-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.space-card{position:relative;border:1px solid #e3e3e8;border-radius:10px;background:white;min-width:0;transition:box-shadow .15s,border-color .15s}
.space-card:hover{border-color:#c9d7e8;box-shadow:0 5px 18px #1d1d1f08}
.space-card-open{display:block;text-decoration:none;color:inherit;border-radius:10px 10px 0 0}
.space-card-preview{height:134px;position:relative;display:grid;place-items:center;background:#f1f2f5;border-radius:9px 9px 0 0;border-bottom:1px solid #e9e9ed;overflow:hidden;color:#8a9bad}
.home-space-icon{width:146px;height:110px}
.space-card-preview>span{position:absolute;bottom:11px;left:16px;font:8px var(--mono);letter-spacing:1px;color:#959ca5}
.space-card-info{padding:18px 18px 13px}
.space-card-info h3{font-size:16px;letter-spacing:-.35px;font-weight:600;line-height:1.4;margin:0 26px 7px 0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.space-card-info p{margin:0;color:var(--muted);font:9px var(--mono)}
.space-card-info p>span{font-family:var(--font);font-size:9px}
.space-card-info time{display:block;margin-top:11px;color:#99999e;font-size:9px}
.space-card-menu{position:absolute;right:10px;top:146px;z-index:2}
.space-card-menu summary{list-style:none;display:grid;place-items:center;width:30px;height:30px;cursor:pointer;border-radius:5px;color:#73737a}
.space-card-menu summary::-webkit-details-marker{display:none}
.space-card-menu summary svg{width:18px;height:18px}
.space-card-menu summary:hover,.space-card-menu[open] summary{background:#f1f2f5}
.space-card-menu-items{position:absolute;right:0;top:33px;min-width:150px;background:white;border:1px solid var(--hairline);box-shadow:0 8px 24px #1d1d1f14;border-radius:7px;padding:5px}
.space-card-menu-items button{display:block;width:100%;padding:10px 11px;text-align:left;font-size:11px;border-radius:4px;white-space:nowrap}
.space-card-menu-items button:hover{background:var(--pearl)}
.space-card-presence{display:flex;align-items:center;gap:5px;border-top:1px solid #f0f0f3;padding:12px 18px;min-height:41px;font-size:9px;color:#98989e}
.card-avatars{display:flex;align-items:center;padding-left:3px}
.card-avatars:empty{display:none}
.card-avatars i{display:grid;place-items:center;background:var(--avatar);color:white;border-radius:50%;width:20px;height:20px;border:2px solid white;margin-left:-4px;font-size:8px;font-style:normal}
.card-online{display:flex;align-items:center;gap:5px;white-space:nowrap}
.card-online.is-online{color:#486656}
.live-dot{width:4px;height:4px;border-radius:50%;background:#42855f}
.card-editing{margin-left:auto;color:var(--primary);font-size:8px}
.space-create-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:286px;border:1px dashed #d1d4dc;border-radius:10px;background:#f8f9fb;color:#828a96;transition:background .15s}
.space-create-card:hover{background:#f0f4fa;border-color:var(--primary)}
.space-create-card svg{width:28px;height:28px;margin-bottom:4px;color:var(--primary)}
.space-create-card strong{color:var(--ink);font-size:13px;font-weight:500}
.space-create-card>span{font-size:10px;color:var(--muted)}
.home-empty{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;border:1px dashed #d9dbe2;border-radius:9px;min-height:120px;font-size:14px;color:var(--muted)}
.home-empty p{margin:0 0 1px}.home-empty button{min-height:28px;padding:3px 6px;font-size:11px;color:var(--primary)}
.home-footer{display:flex;justify-content:space-between;font-size:9px;color:#9c9ca3;border-top:1px solid #e6e6eb;padding-top:22px;margin-top:45px;gap:20px}
.home-footer>span:first-child{font-weight:600;letter-spacing:1px;font-size:11px;color:#77777e}
.home-connection{font-size:12px;color:#a94c2a;padding:16px 18px;border:1px solid #efddca;background:#fffbf4;border-radius:7px}
.home-trash{font-size:11px;color:var(--muted);margin-top:26px}
.home-trash summary{cursor:pointer;padding:10px 0}
.home-trash .room-list-row{max-width:500px}.home-trash button{font-size:10px;padding:7px 15px}
.home-form-actions{display:flex;justify-content:flex-end;gap:10px}.home-form-actions button{min-width:82px}
#home-form-error:empty{display:none}
@media(min-width:1600px){.home-page{padding-left:max(40px,calc((100vw - 1260px)/2));padding-right:max(40px,calc((100vw - 1260px)/2))}.space-card-preview{height:165px}.space-card-menu{top:177px}.space-create-card{min-height:317px}}
@media(max-width:900px){.space-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.home-page{padding:24px 24px 25px}.home-heading{margin-bottom:24px}.home-heading h1{font-size:26px}}
@media(max-width:580px){.home-heading{align-items:center;flex-direction:row;gap:12px}.home-heading h1{font-size:25px}.home-actions{width:100%}.home-actions>button{flex:1}.home-page{padding:22px 18px 22px}.space-grid{grid-template-columns:1fr}.home-section-heading>span{font-size:9px}.space-create-card{min-height:125px}.space-card-preview{height:135px}.nav-home{margin-left:12px;font-size:10px}.home-section{margin-bottom:28px}}
.space-card-preview img{display:block;width:100%;height:100%;object-fit:contain;position:absolute;inset:0}
.space-card-preview:has(img)>span{background:rgba(255,255,255,.8);color:#616b76;padding:3px 5px;border-radius:3px;backdrop-filter:blur(5px)}
.home-actions #home-import-btn{font-size:12px;color:var(--ink)}
@media(max-width:580px){.home-actions{flex-wrap:wrap}.home-actions #home-import-btn{flex:1}}
body.is-home.is-rendering-home-preview>.workspace{display:grid!important;position:fixed;left:-20000px;top:0;width:1600px;height:700px;visibility:hidden;pointer-events:none}

/* Compact editor header and online collaborators. */
body:not(.is-home)>.global-nav{display:none}
.editor-back-button{width:32px;height:32px;flex:none;padding:6px;border-radius:6px;color:var(--muted);display:grid;place-items:center}
.editor-back-button svg{width:20px;height:20px}.editor-back-button:hover{background:var(--pearl);color:var(--ink)}
.editor-help-button{width:30px;height:32px;display:grid;place-items:center;padding:5px;flex:none;color:var(--muted);border-radius:50%}
.editor-help-button svg{width:20px;height:20px}.editor-help-button:hover{color:var(--primary);background:#f2f7fd}
.collaboration-presence{position:relative;flex:none}
.presence-trigger{display:flex;align-items:center;gap:5px;min-height:36px;padding:2px 3px;border-radius:7px}
.presence-trigger:hover,.presence-trigger[aria-expanded=true]{background:var(--pearl)}
.room-avatars{display:flex;align-items:center;padding-left:6px}
.person-avatar{display:inline-grid;place-items:center;flex:none;width:29px;height:29px;background:var(--avatar,#838b98);color:white;border:2px solid white;border-radius:50%;font:500 10px var(--font);line-height:1}
.room-avatars .person-avatar{margin-left:-6px}.avatar-overflow{background:#eff0f4;color:var(--muted);font-size:9px}
.presence-chevron{width:13px;height:13px;color:var(--muted)}
.participants-popover{position:absolute;top:calc(100% + 10px);right:0;width:332px;max-width:calc(100vw - 24px);max-height:min(560px,calc(100dvh - 96px));overflow-y:auto;border:1px solid var(--hairline);border-radius:10px;background:white;padding:14px 16px;box-shadow:0 8px 28px #1d1d1f18;z-index:80;text-align:left}
.participants-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.participants-heading h2{margin:0;display:flex;align-items:center;gap:8px;font-size:12px;letter-spacing:-.2px;font-weight:600}
.participants-heading h2 span{font:10px var(--mono);color:var(--muted)}
.participants-heading .icon-button{width:25px;height:25px;padding:5px}.participants-heading svg{width:15px;height:15px}
.participant-list{max-height:280px;overflow-y:auto}
.participant-row{display:flex;align-items:center;gap:8px;min-height:55px;padding:9px 0;border-bottom:1px solid var(--divider)}
.person-details{flex:1;min-width:0}.person-details strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:500}
.person-details>span{display:block;color:var(--muted);font-size:9px;line-height:1.4;margin-top:3px}.person-details>.is-editing{color:var(--primary)}
.person-role{font-size:9px;color:var(--muted);flex:none}
.participants-popover select{max-width:90px;min-height:31px;flex:none;padding:5px 25px 5px 8px;border:1px solid var(--hairline);border-radius:5px;background-color:var(--pearl);font-size:10px;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='m4 6 4 4 4-4' stroke='%237a7a7a' stroke-width='1.2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:12px}
.offline-members{font-size:10px;margin-top:12px;color:var(--muted)}.offline-members summary{cursor:pointer;padding:5px 0}.offline-member-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:10px;padding:6px 0}.offline-member-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.participant-nickname-form{border-top:1px solid var(--divider);padding-top:13px;margin-top:14px;font-size:10px;color:var(--muted)}
.participant-nickname-form>div{display:flex;gap:7px;margin-top:6px}.participant-nickname-form input{min-width:0;width:100%;height:32px;border:1px solid var(--hairline);border-radius:5px;background:var(--pearl);padding:6px 8px;font-size:11px;color:var(--ink)}
.participant-nickname-form button{min-height:32px;flex:none;padding:6px 12px;font-size:10px}
.import-button{border:0;border-bottom:1px solid var(--divider);border-radius:0;padding:10px 0 13px;min-height:46px;margin-top:9px}
.import-button .import-model-icon{width:20px;height:23px;flex:none}.import-button>span:nth-child(2){font-size:11px}.import-button .small-arrow{margin-left:auto;font-size:15px}
@media(max-width:850px){.project-identity{gap:8px}.project-actions{gap:10px}.participants-popover{right:-110px}.import-button>span:nth-child(2){font-size:10px}}
@media(max-width:640px){.editor-back-button{width:27px;height:28px;padding:4px}.project-actions{align-self:flex-end;gap:10px}.participants-popover{position:fixed;top:92px;right:12px}.person-avatar{width:27px;height:27px}.import-button{padding:8px 0 11px;margin-top:7px;border-radius:0}.import-button .import-model-icon{width:22px;height:24px}.import-button>span:nth-child(2){display:none}}

/* A compact typographic hero, followed immediately by the working spaces. */
.home-page{padding-top:20px}
.home-hero{position:relative;margin-bottom:23px;padding:12px 0 18px;border-bottom:1px solid #e3e4e9;isolation:isolate}
.hero-topline{display:flex;align-items:center;justify-content:space-between;gap:16px;color:#7d8380;font:8px var(--mono);letter-spacing:1.4px;line-height:1.5}
.hero-stage{position:relative;display:flex;align-items:center;justify-content:center;min-height:166px;margin:11px -12px 3px;overflow:hidden}
.hero-stage h1{position:relative;z-index:1;white-space:nowrap;margin:0;font-family:'Arial Black','Helvetica Neue',Arial,sans-serif;font-weight:900;font-size:clamp(54px,11.55vw,150px);line-height:1.05;letter-spacing:-.085em;color:#1d1d1f;text-align:center;transform:scaleX(1.035);transform-origin:center}
.hero-full-stop{color:#0066cc}
.hero-ribbon{position:absolute;inset:-21px -3% -18px;width:106%;height:calc(100% + 39px);overflow:visible;pointer-events:none;animation:form-ribbon-float 10s ease-in-out infinite;will-change:transform}
.hero-footer{position:relative;display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:59px;padding-top:4px}
.hero-copy p{margin:0 0 5px;font-size:18px;font-weight:550;letter-spacing:-.65px;line-height:1.4}
.hero-copy>span{display:block;font-size:11px;color:#83858a;letter-spacing:-.15px;line-height:1.5}
.hero-footer .home-actions{gap:8px}
.space-collection-nav{position:sticky;top:-1px;z-index:5;display:flex;align-items:center;gap:6px;min-height:48px;margin:0 0 18px;padding:4px 0 9px;background:#f8f8fa}
.space-collection-tab{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:35px;padding:8px 16px;border:1px solid transparent;border-radius:999px;font-size:12px;line-height:1.3;color:#8b8b91;white-space:nowrap}
.space-collection-tab:hover{color:var(--ink);background:#ededf1}
.space-collection-tab.active{background:var(--ink);color:white}
.space-collection-tab>span{display:grid;place-items:center;min-width:18px;min-height:18px;border-radius:50%;padding:1px 4px;background:#e8e8ed;color:#81818a;font:9px var(--mono)}
.space-collection-tab.active>span{background:#ffffff25;color:#e6e6ed}
.space-collection-tab:focus-visible{outline:2px solid var(--primary);outline-offset:3px}
.home-section[role=tabpanel]{margin-bottom:28px;scroll-margin-top:64px}
.home-section[role=tabpanel]:focus-visible{outline:2px solid var(--primary);outline-offset:5px}
.home-hero+.home-connection{margin-top:-8px}
@keyframes form-ribbon-float{0%,100%{transform:translate(calc(-7px + var(--hero-pointer-x,0px)),calc(1px + var(--hero-pointer-y,0px))) rotate(calc(-1deg + var(--hero-pointer-roll,0deg)))}50%{transform:translate(calc(7px + var(--hero-pointer-x,0px)),calc(-7px + var(--hero-pointer-y,0px))) rotate(calc(1deg + var(--hero-pointer-roll,0deg)))}}
@media(min-width:1600px){.hero-stage{min-height:183px}.hero-stage h1{font-size:168px}.home-hero{padding-bottom:21px}}
@media(max-width:900px){.hero-stage{min-height:136px}.hero-stage h1{font-size:11.2vw}.hero-topline{font-size:7px;letter-spacing:1px}.hero-copy p{font-size:15px}.hero-copy>span{font-size:10px}.hero-footer{gap:15px}.hero-footer .home-actions .secondary-button,.hero-footer .home-actions .primary-button{padding:9px 12px;font-size:11px;min-height:37px}.hero-footer .home-actions #home-import-btn{font-size:11px}.hero-footer .home-actions #home-new-btn svg{width:20px;height:20px}}
@media(max-width:580px){.home-page{padding-top:15px}.home-hero{padding:7px 0 18px;margin-bottom:12px}.hero-topline{font-size:6px;letter-spacing:.85px;gap:8px}.hero-stage{min-height:94px;margin:9px -3px 6px}.hero-stage h1{font-size:11.2vw;letter-spacing:-.08em}.hero-ribbon{inset:-19px -4%;width:108%;height:calc(100% + 38px)}.hero-footer{align-items:stretch;flex-direction:column;gap:12px;padding:0}.hero-copy p{font-size:15px;margin-bottom:3px}.hero-copy>span{font-size:10px}.hero-footer .home-actions{width:100%;gap:7px;flex-wrap:nowrap}.hero-footer .home-actions>button{flex:1;padding:8px 10px}.space-collection-nav{min-height:45px;margin-bottom:13px}.space-collection-tab{min-height:33px;padding:7px 13px;font-size:11px}.home-footer{margin-top:28px}.hero-topline>span:last-child{letter-spacing:.3px}}
@media(max-height:760px) and (min-width:901px){.home-page{padding-top:13px}.home-hero{padding-top:8px;margin-bottom:14px;padding-bottom:13px}.hero-stage{min-height:141px;margin-top:6px;margin-bottom:0}.hero-stage h1{font-size:clamp(96px,10.5vw,138px)}.hero-footer{min-height:53px}.space-collection-nav{margin-bottom:13px}}
@media(prefers-reduced-motion:reduce){.hero-ribbon{animation:none;will-change:auto}}

/* Woven display type: two letters sit behind the enlarged ribbon. */
.hero-stage{isolation:isolate;min-height:249px}
.hero-stage h1{z-index:auto;transform:none}
.hero-letter{position:relative;z-index:3}.hero-letter.is-woven{z-index:1}
.hero-ribbon{z-index:2;inset:auto;left:-29.5%;top:-29px;width:159%;height:calc(100% + 58px);opacity:.96}
.multi-selection-names{font-size:11px;color:var(--muted);line-height:1.8;overflow-wrap:anywhere;margin:0 0 10px}
.export-dialog{width:min(1000px,calc(100vw - 32px));padding:30px}
.export-dialog h2{font-size:24px;margin:5px 0 24px}
.export-layout{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:25px;align-items:start}
.export-preview-frame{min-height:300px;max-height:60vh;position:relative;display:grid;place-items:center;border:1px solid var(--hairline);border-radius:8px;overflow:hidden;background:var(--pearl)}
.export-preview-frame img{display:block;width:100%;height:100%;max-height:60vh;object-fit:contain;min-height:240px}.export-preview-frame img:not([src]){visibility:hidden}
.export-preview-frame img.is-loading{opacity:.35}
#export-preview-state{position:absolute;inset:auto 16px;font-size:12px;color:var(--muted);padding:10px 14px;border-radius:6px;background:#ffffffdd;text-align:center}
.export-preview-caption{display:flex;justify-content:space-between;gap:15px;margin-top:11px;font-size:9px;line-height:1.6;color:var(--muted)}
.export-options .form-label{margin:0 0 17px}.export-options select{appearance:none;-webkit-appearance:none;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='m4 6 4 4 4-4' stroke='%237a7a7a' stroke-width='1.2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:16px}
.export-options .checkbox-line{align-items:flex-start;line-height:1.6;font-size:11px;margin:12px 0}.export-options .checkbox-line input{flex:none;margin-top:3px}
.export-option-note{color:var(--muted);font-size:10px;line-height:1.6;margin:0 0 15px}
.export-options .primary-button{margin-top:9px}.export-options .secondary-button{font-size:11px}
@media(min-width:1600px){.hero-stage{min-height:274px}}
@media(max-width:900px){.hero-stage{min-height:204px}}
@media(max-width:580px){.hero-stage{min-height:141px}.hero-ribbon{inset:auto;left:-29.5%;top:-29px;width:159%;height:calc(100% + 58px)}.export-dialog{padding:26px 16px}.export-layout{grid-template-columns:1fr;gap:18px}.export-preview-frame{min-height:180px;max-height:34vh}.export-preview-frame img{min-height:180px;max-height:34vh}.export-options .form-label{margin-bottom:12px}.export-preview-caption{font-size:8px}}
@media(max-height:760px) and (min-width:901px){.hero-stage{min-height:212px}}

/* Full-bleed luminous ribbon; working-space cards retain their content gutter. */
.home-page{--home-gutter:max(28px,calc((100vw - 1120px)/2));padding-inline:var(--home-gutter)}
.home-hero{margin-inline:calc(0px - var(--home-gutter));overflow:hidden}
.hero-topline,.hero-footer{padding-inline:var(--home-gutter)}
.hero-stage{margin-inline:0}
.hero-ribbon{opacity:.92}
@media(min-width:1600px){.home-page{--home-gutter:max(40px,calc((100vw - 1260px)/2))}}
@media(max-width:900px){.home-page{--home-gutter:24px}}
@media(max-width:580px){.home-page{--home-gutter:18px}.hero-footer{padding-inline:var(--home-gutter)}}

.object-row.has-remote-selection{box-shadow:inset -2px 0 var(--peer-color)}
.row-presence{display:flex;align-items:center;flex:none;padding:0 2px;gap:1px}
.row-presence i{display:grid;place-items:center;width:17px;height:17px;border-radius:50%;background:var(--peer-color);color:white;font:8px var(--font);font-style:normal;border:1px solid white}
.row-presence i+i{margin-left:-5px}
@media(max-width:850px){.row-presence{padding:0}.row-presence i{width:14px;height:14px;font-size:7px}.object-row>.object-select{gap:4px}}

/* Keep the narrower luminous stroke readable as it flows past the type. */
.hero-ribbon{opacity:.75}
.hero-flow-trigger{position:absolute;inset:0;z-index:4;padding:0;border:0;background:transparent;cursor:pointer}
.hero-flow-trigger:active{transform:none}.hero-flow-trigger:focus-visible{outline-offset:-10px;border-radius:0}
.hero-flow-trigger:disabled{cursor:default}

.export-options .export-name-option{margin-left:18px;font-size:10px;color:var(--muted)}

/* Persistent reveal action with an explicit relocation button. */
.toast.has-action{display:flex;align-items:center;gap:12px;max-width:min(94vw,740px);pointer-events:auto;text-align:left;padding:12px 14px 12px 18px;line-height:1.6}
.toast.has-action>span{flex:1;min-width:0}.toast-action{flex:none;border:1px solid rgba(255,255,255,.5);border-radius:6px;padding:7px 11px;font-size:11px;white-space:nowrap;color:inherit}.toast-action:hover{background:rgba(255,255,255,.12)}.toast-dismiss{width:24px;height:28px;flex:none;display:grid;place-items:center;font-size:20px;color:inherit}.toast-action:disabled{opacity:.5}.resize-anchor-field{margin-top:12px}
.anchor-picker{min-width:0;color:var(--ink)}
.anchor-picker-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:15px 0 8px;font-size:11px;font-weight:500}
.anchor-stage{position:relative;width:100%;height:200px;overflow:hidden;border:1px solid var(--divider);border-radius:8px;background:var(--pearl);isolation:isolate;touch-action:none}
.anchor-canvas,.anchor-canvas canvas,.anchor-points,.anchor-face-labels,.anchor-face-highlights{position:absolute;inset:0;width:100%;height:100%;display:block}
.anchor-canvas canvas{cursor:grab;touch-action:none}.anchor-canvas canvas:active{cursor:grabbing}
.anchor-points,.anchor-face-labels,.anchor-face-highlights{pointer-events:none}
.anchor-face-target{position:absolute;inset:auto;z-index:2;padding:0;border:0;border-radius:0;background:transparent;pointer-events:auto}.anchor-face-target:active{transform:none}.anchor-face-target:disabled{pointer-events:none}
.anchor-face-outline{fill:none;stroke:var(--canvas);stroke-width:3.5;stroke-opacity:.82;stroke-linejoin:round}.anchor-face-fill{stroke-width:1.5;stroke-linejoin:round}
.anchor-point{position:absolute;inset:auto;width:28px;height:28px;transform:translate(-50%,-50%);padding:0;border:0;pointer-events:auto;background:transparent;border-radius:50%}
.anchor-point:active{transform:translate(-50%,-50%)}
.anchor-point:before{content:'';position:absolute;width:8px;height:8px;left:50%;top:50%;transform:translate(-50%,-50%);border:1.5px solid #536a8a;border-radius:50%;background:var(--canvas);box-shadow:0 0 0 2px var(--pearl)}
.anchor-point.is-corner:before{width:4.9px;height:4.9px;border-width:1.05px;border-radius:1.4px;transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 1.4px var(--pearl)}
.anchor-point:hover:before,.anchor-point:focus-visible:before{border-color:var(--primary);background:#dcecff;box-shadow:0 0 0 4px #0066cc20}
.anchor-point.is-corner:hover:before,.anchor-point.is-corner:focus-visible:before{box-shadow:0 0 0 2.8px #0066cc20}
.anchor-point[aria-pressed=true]:before{background:var(--primary);border-color:var(--canvas);width:11px;height:11px;box-shadow:0 0 0 2px var(--primary),0 0 0 5px #0066cc16}
.anchor-point.is-corner[aria-pressed=true]:before{width:7.7px;height:7.7px;box-shadow:0 0 0 1.4px var(--primary),0 0 0 3.5px #0066cc16}
.anchor-point.is-center:before{width:13px;height:13px;transform:translate(-50%,-50%);border:1.5px solid #536a8a;border-radius:3px;background:var(--canvas);box-shadow:0 0 0 2px #ffffffb3}
.anchor-point.is-center:after{content:'+';position:absolute;left:50%;top:50%;transform:translate(-50%,-54%);font-size:13px;line-height:1;color:#536a8a}
.anchor-point.is-center[aria-pressed=true]:before{border-color:var(--primary);background:var(--canvas);box-shadow:0 0 0 2px #0066cc25}.anchor-point.is-center[aria-pressed=true]:after{color:var(--primary)}
.anchor-picker.is-dark .anchor-point.is-center[aria-pressed=true]:before{border-color:#248db6;box-shadow:0 0 0 2px #51d4ff65}
.anchor-point:disabled{opacity:1;pointer-events:none}
.anchor-point.is-hidden-point:before{opacity:.4;border-style:dashed;background:transparent;box-shadow:none}
.anchor-point.is-hidden-point[aria-pressed=true]:before{opacity:.75;border-color:var(--primary);background:#0066cc25;box-shadow:0 0 0 2px #0066cc30}
.anchor-point.is-overlapped{visibility:hidden}
.anchor-face-label{position:absolute;transform:translate(-50%,-50%);color:#566379;background:#fafafce6;padding:1px 4px;border-radius:3px;font-size:11px;white-space:nowrap}
.anchor-face-label[data-face=front]{color:var(--primary);font-weight:600}
.anchor-world-axis{position:absolute;left:7px;top:6px;display:flex;flex-direction:column;align-items:center;color:#727b8a;pointer-events:none;font-size:10px}
.anchor-world-axis svg{width:36px;height:36px;fill:none;stroke:currentColor;stroke-width:1.5}.anchor-world-axis span{margin-top:-3px}
.anchor-view-caption{position:absolute;bottom:7px;left:50%;transform:translateX(-50%);font-size:10px;color:var(--muted);pointer-events:none;white-space:nowrap}
.anchor-tooltip{position:absolute;z-index:80;transform:translate(-50%,-100%);padding:6px 8px;border-radius:5px;background:var(--ink);color:var(--canvas);font-size:11px;line-height:1.5;max-width:calc(100% - 12px);width:max-content;pointer-events:none;box-shadow:0 3px 12px #00000012}
.anchor-view-controls{display:flex;justify-content:space-between;gap:8px;margin:5px 0 6px}
.anchor-view-controls button{font-size:10px;min-height:28px;padding:3px 0;color:var(--muted)}.anchor-view-controls button:hover,.anchor-view-controls button[aria-pressed=true]{color:var(--primary)}
.anchor-face-views{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-top:8px}
.anchor-face-views button{min-height:29px;padding:4px 1px;border:1px solid var(--divider);border-radius:5px;font-size:10px;color:var(--muted)}
.anchor-face-views button:hover{border-color:#abbad0}.anchor-face-views button[aria-pressed=true]{background:#eef5fc;border-color:#b4cdec;color:var(--primary)}
.anchor-restriction,.anchor-preview-error{color:#916315;font-size:11px;line-height:1.65;margin:8px 0 0}
.number-field input[readonly]{color:var(--muted);background:var(--divider);cursor:default}
.anchor-scene-label,.anchor-scene-direction{position:absolute;pointer-events:none;transform:translate(-50%,calc(-100% - 14px));max-width:240px;padding:5px 8px;border:1px solid #bed4ee;border-radius:5px;background:#fffffff0;color:var(--primary);font-size:10px;line-height:1.5;box-shadow:0 2px 8px #00000008;white-space:nowrap}
.anchor-scene-label.is-candidate{transform:translate(-50%,14px);background:#edf5fff0;border-style:dashed}.anchor-scene-direction{transform:translate(-50%,5px);padding:2px 5px;font-size:9px;border:0;background:#ffffffbd;box-shadow:none}
@media(pointer:coarse){.anchor-point{width:44px;height:44px}.anchor-face-views button,.anchor-view-controls button{min-height:40px}}
@media(max-width:640px){.toast.has-action{flex-wrap:wrap;gap:8px}.toast.has-action>span{flex-basis:calc(100% - 32px)}.toast-action{order:2}.toast-dismiss{margin-left:auto}}

/* Personal, temporary click measurement. The canvas contains only points and lines. */
.is-measuring,.is-measuring canvas{cursor:crosshair}.measure-help{font-size:9px;line-height:1.7;color:var(--muted);margin:7px 0 0}
.measurement-panel{display:flex;flex-direction:column;flex:1;min-height:0;background:#fff}.measurement-panel[hidden]{display:none}.measurement-panel-heading{height:56px;min-height:56px;padding:0 20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--divider)}.measurement-panel-heading h2{margin:0;font-size:13px;font-weight:550}.measurement-panel-heading .icon-button{width:26px;height:28px}.measurement-panel-scroll{overflow-y:auto;min-height:0;flex:1;padding-bottom:20px;scrollbar-width:thin}.measurement-instruction{font-size:11px;line-height:1.75;color:var(--muted);margin:18px 20px 14px}.measurement-total{padding:0 20px 21px;border-bottom:1px solid var(--divider)}.measurement-total>p{font-size:10px;color:var(--muted);margin:0 0 8px}.measurement-total>div{display:flex;gap:7px;align-items:baseline;color:var(--primary)}.measurement-total output{font:500 27px/1.2 var(--mono);letter-spacing:-1px;overflow-wrap:anywhere;min-width:0}.measurement-total>div>span{font-size:12px}.measurement-point{padding:18px 20px;border-bottom:1px solid var(--divider)}.measurement-point-heading{display:flex;justify-content:space-between;align-items:center;gap:8px}.measurement-point h3,.measurement-components h3,.measurement-hover h3{font-size:11px;font-weight:550;margin:0;display:flex;align-items:center;gap:7px}.measurement-point h3 i{font:500 9px var(--mono);display:grid;place-items:center;border:1px solid #b7d1ed;border-radius:50%;width:17px;height:17px;color:var(--primary);font-style:normal}.measurement-point-heading>span{font-size:9px;color:var(--muted);text-align:right}.measurement-point-name{font-size:11px;line-height:1.65;margin:10px 0 13px;overflow-wrap:anywhere}.measurement-coordinates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0}.measurement-coordinates>div{min-width:0}.measurement-coordinates dt{font-size:9px;color:var(--muted);margin-bottom:5px}.measurement-coordinates dd{margin:0;font:11px var(--mono);overflow-wrap:anywhere}.measurement-axis-badge{display:inline-block;padding:4px 6px;border-radius:4px;color:var(--primary);background:#eef5fd;font-size:9px;margin:-3px 0 12px;line-height:1.6}.measurement-axis-badge[hidden]{display:none}.measurement-components{padding:18px 20px;border-bottom:1px solid var(--divider)}.measurement-components dl{margin:12px 0 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.measurement-components dt{font-size:9px;color:var(--muted);margin-bottom:6px}.measurement-components dd{margin:0;display:flex;gap:3px;align-items:baseline;flex-wrap:wrap}.measurement-components output{font:11px var(--mono);overflow-wrap:anywhere;min-width:0}.measurement-components dd>span{font-size:8px;color:var(--muted)}.measurement-hover{padding:17px 20px;border-bottom:1px solid var(--divider);background:#f8fbff}.measurement-hover[hidden]{display:none}.measurement-hover p{font-size:10px;line-height:1.6;overflow-wrap:anywhere;margin:10px 0}.measurement-hover>div{color:var(--primary);display:flex;gap:6px;align-items:baseline}.measurement-hover output{font:500 19px var(--mono)}.measurement-hover>div>span{font-size:10px}.measurement-hover small{display:block;font:9px/1.8 var(--mono);color:var(--muted);margin-top:8px;overflow-wrap:anywhere}.measurement-coordinate-note{font-size:9px;line-height:1.9;color:var(--muted);margin:17px 20px}.measurement-panel #measurement-reset{display:block;width:calc(100% - 40px);margin:0 20px;font-size:11px;padding:9px 12px}.measurement-shortcuts{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:9px;margin:12px 20px 0}
@media(max-width:850px){.measurement-panel-heading{padding-inline:16px}.measurement-instruction{margin-inline:16px}.measurement-total,.measurement-point,.measurement-components,.measurement-hover{padding-inline:16px}.measurement-coordinate-note,.measurement-shortcuts{margin-inline:16px}.measurement-panel #measurement-reset{width:calc(100% - 32px);margin-inline:16px}}

.model-import-row{position:relative}.model-import-row .import-button{padding-right:27px}.model-formats-help{position:absolute;right:0;top:50%;transform:translateY(-50%);width:24px;height:28px;display:grid;place-items:center;color:var(--muted)}.model-formats-help svg{width:18px;height:18px}.model-formats-help:hover{color:var(--primary)}.model-format-dialog{width:540px}.model-format-dialog h2{font-size:26px}.model-format-dialog>p,.model-format-dialog section p{font-size:12px;line-height:1.8;color:var(--muted)}.model-format-dialog section{border-top:1px solid var(--divider);margin-top:20px;padding-top:15px}.model-format-dialog h3{font-size:14px;margin:0}.model-format-dialog a{font-size:11px;color:var(--primary)}.model-import-note{padding:12px 0}.model-format-dialog .primary-button{margin-top:6px}

/* Layer transform locks remain visible alongside the independent eye control. */
.row-lock{flex:none;width:24px;height:28px;display:grid;place-items:center;color:#a3a3a8;padding:4px;border-radius:5px}
.row-lock svg{width:15px;height:15px}.row-lock:hover{color:var(--primary);background:#0066cc09}.row-lock.is-locked{color:var(--primary)}.row-lock[data-inherited-lock]{opacity:.6}.object-row .row-visibility{width:24px;flex:none}.space-layer-row>button:first-child{min-width:0}.space-layer-row>button:first-child>span{min-width:0}.space-layer-row .layer-eye{flex-shrink:0}.object-select>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.graphic-edit-button{margin-top:12px}
.graphic-dialog{width:min(1040px,calc(100vw - 40px));max-width:1040px;max-height:calc(100dvh - 40px);padding:0;border:1px solid var(--hairline);border-radius:16px;overflow:auto;color:var(--ink);background:#fff}
.graphic-dialog[open]{display:flex;flex-direction:column}.graphic-dialog-heading{flex:none;position:relative;padding:23px 28px 19px;border-bottom:1px solid var(--divider)}.graphic-dialog-heading h2{font-size:20px;line-height:1.35;margin:0 44px 5px 0;letter-spacing:-.6px}.graphic-dialog-heading p{margin:0;font-size:12px;color:var(--muted)}.graphic-dialog-heading .dialog-close{top:20px;right:23px}.graphic-dialog-layout{display:grid;grid-template-columns:minmax(0,1fr) 286px;min-height:0;overflow:auto}.graphic-preview-panel{min-width:0;display:flex;flex-direction:column;padding:22px;background:#f7f8fa}.graphic-preview-meta,.graphic-preview-caption{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px;color:var(--muted)}.graphic-preview-meta>span:first-child{color:var(--ink);font-size:12px}.graphic-preview-meta>span:last-child,.graphic-preview-caption output{font-family:var(--mono);white-space:nowrap;font-size:10px}.graphic-preview-stage{min-height:280px;height:min(47vh,460px);display:flex;align-items:center;justify-content:center;padding:32px}.graphic-wall-face{flex:none;position:relative;overflow:hidden;box-shadow:0 0 0 1px #00000016,0 14px 34px #0000000c;isolation:isolate}.graphic-print{position:absolute;touch-action:none;cursor:move;user-select:none;outline:1px solid #0071e3;outline-offset:-1px;transform-origin:center}.graphic-print img{display:block;width:100%;height:100%;pointer-events:none;user-select:none}.graphic-print:focus-visible{outline:2px solid #0071e3;outline-offset:0}.graphic-resize-handle{position:absolute;width:12px;height:12px;border:1.5px solid #0066cc;background:#fff;border-radius:2px;z-index:1;padding:0;touch-action:none}.graphic-resize-handle.nw{left:0;top:0;cursor:nwse-resize}.graphic-resize-handle.ne{right:0;top:0;cursor:nesw-resize}.graphic-resize-handle.sw{left:0;bottom:0;cursor:nesw-resize}.graphic-resize-handle.se{right:0;bottom:0;cursor:nwse-resize}.graphic-resize-handle:active{transform:none}.graphic-preview-caption{margin-top:10px;font-size:10px;flex-wrap:wrap}.graphic-dialog-controls{padding:21px 23px 19px;display:flex;flex-direction:column;gap:20px;border-left:1px solid var(--divider)}.graphic-dialog-controls h3{margin:0 0 11px;font-size:12px;font-weight:550;display:flex;justify-content:space-between;align-items:center}.graphic-dialog-controls h3>span{font-weight:400;font-size:10px;color:var(--muted)}.graphic-dialog-controls .form-label{margin:0}.graphic-face-selector{margin:0;grid-template-columns:repeat(3,1fr)}.graphic-dialog-controls .number-field input{height:39px}.graphic-dialog-controls .form-label select{height:39px;min-height:39px}.graphic-ratio{margin-top:11px;font-size:11px;gap:7px}.graphic-ratio>span{margin-left:auto;font-size:9px;color:var(--muted)}.graphic-dialog-controls #graphic-centre{font-size:10px;color:var(--primary);padding:0;margin-top:10px}.graphic-dialog-note{font-size:10px;color:var(--muted);margin:0;line-height:1.7}.graphic-dialog-note[hidden]{display:none}.graphic-dialog-footer{padding:17px 23px;border-top:1px solid var(--divider);display:flex;align-items:center;justify-content:space-between;gap:18px;flex:none}.graphic-dialog-footer>div{display:flex;justify-content:flex-end;gap:8px;margin-left:auto}.graphic-dialog-footer button{min-width:104px;height:42px;padding:0 24px;border-radius:8px;font-size:12px}.graphic-dialog-footer .graphic-cancel{background:transparent;color:var(--ink)}.graphic-dialog-footer .graphic-cancel:hover{background:#f5f5f7}.graphic-dialog-footer p{font-size:11px;color:#ad3428;margin:0;max-width:560px}.graphic-dialog-footer .primary-button:disabled{opacity:1;background:#e7e9ed;color:#a0a4ad;box-shadow:none;border-color:transparent}
.hero-flow-trigger{cursor:grab;touch-action:none;user-select:none}.is-hero-dragging .hero-flow-trigger{cursor:grabbing;touch-action:none}.hero-ribbon{animation:none}
@media(max-width:700px){.graphic-dialog{width:calc(100vw - 20px);max-height:calc(100dvh - 20px);border-radius:12px}.graphic-dialog-heading{padding:18px 18px 14px}.graphic-dialog-heading h2{font-size:18px}.graphic-dialog-layout{grid-template-columns:1fr}.graphic-preview-panel{padding:16px}.graphic-preview-stage{height:290px;min-height:220px}.graphic-dialog-controls{border-left:0;border-top:1px solid var(--divider);padding:18px;gap:17px}.graphic-dialog-footer{padding:14px 18px;align-items:flex-end}.graphic-dialog-footer>div{flex:none}.graphic-dialog-footer button{min-width:85px;padding:0 16px}.graphic-dialog-footer p{font-size:10px}}

/* Footer type grows without changing button padding or the surrounding hero. */
.hero-copy p{font-size:20px}.hero-copy>span{font-size:13px}.hero-footer .home-actions>button{font-size:13px;flex:0 0 auto;width:auto;height:auto;white-space:nowrap}
@media(max-width:900px){.hero-copy p{font-size:17px}.hero-copy>span{font-size:12px}.hero-footer .home-actions .secondary-button,.hero-footer .home-actions .primary-button,.hero-footer .home-actions #home-import-btn{font-size:13px}}
@media(max-width:580px){.hero-copy p{font-size:17px}.hero-copy>span{font-size:12px}.hero-footer .home-actions{justify-content:flex-end;flex-wrap:wrap}.hero-footer .home-actions>button{flex:0 0 auto;width:auto;font-size:13px}}

.hero-footer .home-actions #home-import-btn{font-size:13px}
.hero-copy-title{display:flex;align-items:center;gap:7px}.home-guide-button{display:inline-grid;place-items:center;flex:none;width:26px;height:26px;padding:3px;border-radius:50%;color:var(--muted)}.home-guide-button svg{display:block;width:20px;height:20px}.home-guide-button:hover{color:var(--primary);background:#eaf1fb}
.home-guide-dialog{width:580px;padding:36px}.home-guide-dialog h2{font-size:24px;line-height:1.35;letter-spacing:-.7px;margin:0 36px 14px 0}.home-guide-intro{font-size:13px;line-height:1.75;color:var(--muted);margin:0 0 24px}.home-guide-steps{list-style:none;counter-reset:home-guide;display:grid;gap:21px;margin:0;padding:0}.home-guide-steps li{counter-increment:home-guide;display:grid;grid-template-columns:25px minmax(0,1fr);column-gap:12px;align-items:start}.home-guide-steps li::before{content:counter(home-guide);grid-row:1 / span 2;display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#eef5fc;color:var(--primary);font:11px var(--mono)}.home-guide-steps h3{font-size:14px;font-weight:600;line-height:1.6;margin:1px 0 4px}.home-guide-steps p{grid-column:2;font-size:13px;line-height:1.75;color:var(--muted);margin:0;word-break:keep-all;overflow-wrap:anywhere}.home-guide-note{font-size:12px;line-height:1.8;color:var(--muted);border-top:1px solid var(--divider);padding-top:16px;margin:23px 0 0;word-break:keep-all}
@media(max-width:580px){.home-guide-dialog{padding:32px 22px 24px}.home-guide-dialog h2{font-size:22px}.home-guide-intro{margin-bottom:20px}.home-guide-steps{gap:18px}}

.space-layer-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}
.space-layer-row>[data-layer-select]>span{overflow:hidden}
.space-layer-row small{overflow:hidden;text-overflow:ellipsis}
.zone-row-delete{width:23px;height:30px;flex:none;padding:4px;display:grid;place-items:center;color:var(--muted);border-radius:5px}
.zone-row-delete svg{width:14px;height:14px}.zone-row-delete:hover:not(:disabled){color:#b7332d;background:#b7332d0a}.zone-row-delete:disabled{opacity:.3;cursor:default}
.zone-name-row{margin:0 0 14px;gap:2px}.zone-name-row .item-name{min-width:0;font-size:15px}.zone-name-row .icon-button{width:27px;height:30px}
@media(max-width:850px){.zone-row-delete{width:18px;padding:2px}.space-layer-row.selected>[data-layer-select]{gap:3px}.space-layer-row.selected .layer-eye{width:19px}}

/* Object groups share the existing layer row spacing and controls. */
.object-group-row{padding-left:4px;gap:2px;font-weight:600}
.group-disclosure{display:grid;place-items:center;flex:0 0 18px;width:18px;height:30px;padding:2px;color:var(--muted)}
.group-disclosure svg{width:14px;height:14px;transition:transform .15s}
.group-disclosure[aria-expanded=true] svg{transform:rotate(90deg)}
.object-group-row>.group-select{min-width:0;gap:6px;padding-left:0}
.group-select small{font:9px var(--mono);color:var(--muted);margin-left:auto;padding-right:8px}
.object-row[data-layer-parent]{padding-left:20px}
.object-row[data-layer-parent]>.object-select{min-width:0}
.selection-actions{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:12px}
.space-layer-row[data-fixed-layer=room]{margin-top:4px;border-top:1px solid var(--divider);border-radius:0}
@media(max-width:850px){.object-row[data-layer-parent]{padding-left:12px}.object-group-row{padding-left:2px}.group-disclosure{flex-basis:14px;width:14px}.group-select small{padding-right:4px}}

[data-layer-entry],[data-zone-entry]{position:relative}
[data-layer-entry]>.object-select,[data-layer-entry]>.group-select,[data-zone-entry]>[data-layer-select],.layer-drag-handle{cursor:grab;touch-action:none}
.is-reordering-layer,.is-reordering-layer *{cursor:grabbing!important;user-select:none!important}
.is-layer-reordering{touch-action:none}
.is-layer-dragging{opacity:.42}
.layer-drop-before,.layer-drop-after{position:relative}
.layer-drop-before:before,.layer-drop-after:after{content:'';position:absolute;left:4px;right:4px;height:2px;background:var(--primary,#0066cc);border-radius:2px;z-index:4;pointer-events:none}
.layer-drop-before:before{top:-1px}.layer-drop-after:after{bottom:-1px}

/* Phones use the whole canvas width and one contextual panel below it. */
.mobile-panel-header,.mobile-only{display:none}
@media(max-width:640px){
  body:not(.is-home){--mobile-panel-height:min(44dvh,max(96px,calc(100dvh - 220px)))}
  body:not(.is-home)>.project-bar{height:60px;min-height:60px;flex-direction:row;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px}
  body:not(.is-home) .project-identity{width:auto;flex:1;gap:4px;min-width:0}
  body:not(.is-home) .project-details{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;width:100%}
  body:not(.is-home) .project-details input{width:100%;min-width:0;max-width:180px;font-size:16px;overflow:hidden;text-overflow:ellipsis}
  body:not(.is-home) .room-summary{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:8px}
  body:not(.is-home) .project-actions{width:auto;gap:2px;justify-content:flex-end}
  body:not(.is-home) .project-actions .text-button{min-height:40px;padding:0 5px;font-size:11px}
  body:not(.is-home) .project-actions .export-button{min-height:40px;padding:7px 9px;font-size:11px}
  body:not(.is-home) .editor-back-button,body:not(.is-home) .editor-help-button{width:40px;height:40px;padding:9px}
  body:not(.is-home) .presence-trigger{min-height:40px;padding:3px}
  body:not(.is-home) .room-avatars .person-avatar:not(:first-child),body:not(.is-home) .presence-chevron{display:none}
  body:not(.is-home)>.workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) var(--mobile-panel-height);min-height:0;overflow:hidden}
  body:not(.is-home) .viewport{grid-area:1 / 1;min-width:0;min-height:0}
  body:not(.is-home) .library-panel,body:not(.is-home) .inspector-panel{grid-area:2 / 1;width:100%;min-width:0;min-height:0;border:0;border-top:1px solid var(--hairline);box-shadow:0 -4px 18px #1d1d1f05;background:var(--canvas)}
  body:not(.is-home) .library-panel{display:flex;overflow-y:auto;overflow-x:hidden;padding-bottom:env(safe-area-inset-bottom);overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}
  body:not(.is-home) .inspector-panel{display:none;overflow:hidden}
  body.mobile-inspecting:not(.is-home) .library-panel{display:none}
  body.mobile-inspecting:not(.is-home) .inspector-panel{display:flex}
  body:not(.is-home) .mobile-panel-header{display:flex;align-items:center;gap:10px;min-height:44px;height:44px;flex:none;padding:0 16px;border-bottom:1px solid var(--divider);background:var(--canvas);font-size:12px;position:relative;z-index:3}
  body:not(.is-home) .library-panel>.mobile-panel-header{position:sticky;top:0;order:0}
  body:not(.is-home) .mobile-panel-header strong{font-size:12px;font-weight:600}
  body:not(.is-home) #mobile-panel-back{display:flex;align-items:center;gap:2px;min-height:40px;padding:0 8px 0 0;flex:none;font-size:12px;color:var(--primary)}
  body:not(.is-home) #mobile-panel-back svg{width:17px;height:17px}
  body:not(.is-home) #mobile-panel-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
  body:not(.is-home) .mobile-only{display:inline-flex}
  body:not(.is-home) #mobile-add-zone{min-height:40px;margin-top:8px;font-size:12px}
  body:not(.is-home) .library-panel>.library-group:nth-of-type(1){order:4}
  body:not(.is-home) .library-panel>.library-group:nth-of-type(2){order:1}
  body:not(.is-home) .library-panel>.library-group:nth-of-type(3){order:2}
  body:not(.is-home) .library-panel>.library-group:nth-of-type(4){order:3}
  body:not(.is-home) .library-group-heading{padding:10px 16px;min-height:44px;font-size:12px;gap:8px}
  body:not(.is-home) .collapse-chevron{width:16px;height:16px}
  body:not(.is-home) .library-group .library-section,body:not(.is-home) .library-group .layers-section{padding:0 16px 12px}
  body:not(.is-home) .library-group .library-section{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px}
  body:not(.is-home) .object-library{grid-column:1 / -1;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
  body:not(.is-home) .object-card{min-height:66px;height:auto;gap:4px;padding:5px 2px;border:1px solid var(--divider);border-radius:7px;background:var(--pearl)}
  body:not(.is-home) .object-card svg{width:32px;height:29px}
  body:not(.is-home) .object-card>span{font-size:11px;line-height:1.3;white-space:nowrap}
  body:not(.is-home) .model-import-row{grid-column:1;min-width:0}
  body:not(.is-home) .import-button{justify-content:flex-start;min-height:44px;height:auto;margin:0;padding:6px 42px 6px 9px;gap:7px}
  body:not(.is-home) .import-button>span:nth-child(2){display:block;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  body:not(.is-home) .import-model-icon{width:20px;height:20px}
  body:not(.is-home) .model-formats-help{width:40px;height:40px}
  body:not(.is-home) .light-add{grid-column:2;min-height:44px;margin:0;gap:6px;padding:0 5px;justify-content:flex-start;font-size:11px;white-space:nowrap}
  body:not(.is-home) .light-add>span{display:block;font-size:17px;margin-left:2px}
  body:not(.is-home) .library-panel .scene-section{display:block;min-height:0;padding:0 0 12px}
  body:not(.is-home) .object-row{min-height:48px;padding:0 12px;gap:5px}
  body:not(.is-home) .scene-section .object-row>.object-select{justify-content:flex-start;min-width:0;min-height:44px;gap:8px;font-size:12px}
  body:not(.is-home) .scene-section .object-select>span{display:block}
  body:not(.is-home) .object-select svg{width:18px;height:18px}
  body:not(.is-home) .object-row[data-layer-parent],body:not(.is-home) .scene-section .object-row.nested{padding-left:32px}
  body:not(.is-home) .row-visibility,body:not(.is-home) .object-row .row-visibility,body:not(.is-home) .row-lock{width:40px;height:40px;padding:10px}
  body:not(.is-home) .group-disclosure{width:40px;height:40px;flex-basis:40px;padding:10px}
  body:not(.is-home) .object-group-row{padding-left:4px;gap:3px}
  body:not(.is-home) .space-layer-row{min-height:52px;gap:4px}
  body:not(.is-home) .space-layer-row>[data-layer-select],body:not(.is-home) .space-layer-row.selected>[data-layer-select]{min-height:44px;padding:6px 8px;gap:10px}
  body:not(.is-home) .space-layer-row span{display:block;font-size:12px}
  body:not(.is-home) .space-layer-row small{font-size:10px;margin-top:2px}
  body:not(.is-home) .space-layer-row svg{width:18px;height:18px}
  body:not(.is-home) .space-layer-row .layer-eye,body:not(.is-home) .space-layer-row.selected .layer-eye,body:not(.is-home) .zone-row-delete{width:40px;height:40px;padding:10px}
  body:not(.is-home) .library-group .placement-controls{padding:0 16px 16px;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px}
  body:not(.is-home) .placement-controls label{min-height:40px;flex-direction:row;justify-content:flex-start;text-align:left;gap:8px;font-size:11px}
  body:not(.is-home) .placement-controls input{width:16px;height:16px}
  body:not(.is-home) .measure-help{grid-column:1 / -1}
  body:not(.is-home) [data-layer-entry]>.object-select,body:not(.is-home) [data-layer-entry]>.group-select,body:not(.is-home) [data-zone-entry]>[data-layer-select]{touch-action:pan-y}
  body:not(.is-home) .inspector-tabs{height:40px;min-height:40px;gap:24px;padding:0 16px}
  body:not(.is-home) .inspector-tabs button{height:40px;min-height:40px;font-size:12px}
  body:not(.is-home) .inspector-content{min-height:0;overflow-y:auto;overscroll-behavior-y:contain;padding-bottom:calc(16px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}
  body:not(.is-home) .inspector-section{padding:14px 16px}
  body:not(.is-home) .inspector-section h3{font-size:12px;margin-bottom:10px}
  body:not(.is-home) .info-button{width:40px;height:40px;min-width:40px;min-height:40px;padding:10px;margin-block:-8px}
  body:not(.is-home) .color-row input[type=color]{width:40px;height:40px}
  body:not(.is-home) .color-swatches button{width:40px;height:40px}
  body:not(.is-home) .slider-field input{height:28px}
  body:not(.is-home) .item-name{font-size:17px;min-height:40px}
  body:not(.is-home) .field-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  body:not(.is-home) .field-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
  body:not(.is-home) .number-field{display:block;font-size:10px}
  body:not(.is-home) .number-field>span{display:block;margin-bottom:5px}
  body:not(.is-home) .number-field>input{height:40px;padding:6px 8px;font-size:16px}
  body:not(.is-home) .inspector-name-row .icon-button,body:not(.is-home) .zone-name-row .icon-button{width:40px;height:40px;padding:10px}
  body:not(.is-home) .face-selector{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  body:not(.is-home) .face-selector button,body:not(.is-home) .anchor-face-views button,body:not(.is-home) .anchor-view-controls button{min-height:40px;font-size:11px}
  body:not(.is-home) .anchor-stage{height:190px}
  body:not(.is-home) .anchor-picker-heading{font-size:12px}
  body:not(.is-home) .inline-buttons{flex-direction:row;gap:8px}
  body:not(.is-home) .inline-buttons>.secondary-button,body:not(.is-home) .secondary-button{min-height:40px}
  body:not(.is-home) .checkbox-line,body:not(.is-home) .link-lock{min-height:40px;font-size:11px}
  body:not(.is-home) .form-label,body:not(.is-home) .slider-field{font-size:11px}
  body:not(.is-home) .form-label>select,body:not(.is-home) select.full-select{min-height:40px;font-size:16px}
  body:not(.is-home) .view-tools{top:10px;right:10px;gap:7px;flex-direction:row}
  body:not(.is-home) .mode-toggle{flex-direction:row}
  body:not(.is-home) .mode-toggle button{min-width:40px;min-height:40px;padding:8px}
  body:not(.is-home) .presentation-button{min-width:44px;min-height:44px;padding:10px}
  body:not(.is-home) .bottom-tools{bottom:12px;flex-direction:row;max-width:calc(100% - 20px);gap:6px}
  body:not(.is-home) .view-switch{max-width:100%;padding:3px}
  body:not(.is-home) .view-switch button{min-width:40px;min-height:40px;padding:6px 10px;font-size:11px;white-space:nowrap}
  body:not(.is-home) .view-caption{bottom:50px;font-size:10px}
  body:not(.is-home) .toast{bottom:calc(var(--mobile-panel-height) + 12px);font-size:11px;padding:10px 14px;max-width:calc(100vw - 24px)}
  body:not(.is-home) .measurement-panel-heading{height:44px;min-height:44px;padding-inline:16px}
  body:not(.is-home) .measurement-panel-heading .icon-button{width:40px;height:40px;padding:10px}
  body:not(.is-home) .measurement-panel-scroll{overscroll-behavior-y:contain;padding-bottom:calc(16px + env(safe-area-inset-bottom))}
  body:not(.is-home).is-presenting>.workspace{grid-template-rows:minmax(0,1fr)}
  body:not(.is-home).is-presenting .library-panel,body:not(.is-home).is-presenting .inspector-panel{display:none}
}

@media(max-width:640px){
  body:not(.is-home) .layer-drag-handle{display:inline-flex;align-items:center;justify-content:center;flex:0 0 40px;width:40px;min-width:40px;height:44px;padding:10px;touch-action:none;color:var(--muted)}
  body:not(.is-home) .layer-drag-handle svg{width:18px;height:18px}
  body:not(.is-home) .object-row:has(.layer-drag-handle){gap:2px;padding-left:6px}
  body:not(.is-home) .object-row[data-layer-parent]:has(.layer-drag-handle){padding-left:18px}
  body:not(.is-home) .space-layer-row:has(.layer-drag-handle){gap:2px}
  body:not(.is-home) .space-layer-row>.layer-drag-handle{padding:10px}
  body:not(.is-home) .space-layer-row:has(.layer-drag-handle)>[data-layer-select]{padding-left:0;gap:6px}
}

.flow-mode-divider{width:1px;height:17px;flex:none;background:#1d1d1f12;margin:0 4px}
.flow-mode-toggle{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;min-height:34px}
.flow-switch-icon{width:16px;height:16px;flex:none}
.flow-mode-toggle[aria-pressed=true]{color:var(--primary,#0066cc)}
@media(max-width:640px){.flow-mode-divider{margin-inline:2px}.project-actions .flow-mode-toggle{padding-inline:4px!important;font-size:11px;min-height:40px}}
.flow-library-panel,.flow-inspector-panel,.flow-toolbar,.flow-canvas-hint{display:none}
body.is-flow-mode:not(.is-home) .workspace>.library-panel,body.is-flow-mode:not(.is-home) .workspace>.inspector-panel{display:none!important}
body.is-flow-mode:not(.is-home) .flow-library-panel,body.is-flow-mode:not(.is-home) .flow-inspector-panel{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--canvas,#fff);overflow:hidden}
body.is-flow-mode:not(.is-home) .flow-library-panel{grid-column:1;grid-row:1;border-right:1px solid var(--hairline,#dedee1)}
body.is-flow-mode:not(.is-home) .flow-inspector-panel{grid-column:3;grid-row:1;border-left:1px solid var(--hairline,#dedee1)}
body.is-flow-mode:not(.is-home) .workspace>.viewport{grid-column:2;grid-row:1}
body.is-flow-mode .mode-toggle,body.is-flow-mode .selection-caption{display:none!important}
body.is-flow-mode .view-tools{pointer-events:auto}
body.is-flow-mode .flow-toolbar{position:absolute;top:16px;left:50%;transform:translateX(-50%);z-index:8;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;width:max-content;max-width:calc(100% - 24px);font-size:11px;pointer-events:auto}
.flow-play-controls{display:flex;align-items:center;gap:3px;border:1px solid var(--hairline,#dedee1);border-radius:9px;background:#ffffffed;box-shadow:0 2px 8px #00000003;padding:4px;backdrop-filter:blur(12px)}
.flow-toolbar button{min-height:32px;border-radius:6px;font-size:11px;padding:5px 10px;white-space:nowrap}
.flow-play-controls .flow-play{color:white;background:var(--primary,#0066cc);min-width:70px}
.flow-play-controls .flow-play.is-running{color:var(--ink,#202022);background:var(--pearl,#f7f7f9)}
.flow-play-controls>span{display:flex;gap:3px;align-items:center;padding:0 8px;color:var(--muted,#85858b);font-size:10px;white-space:nowrap}
.flow-play-controls b{font:11px var(--mono,monospace);font-weight:400;color:var(--ink,#202022)}
.flow-draw-controls{display:flex;gap:4px;background:#ffffffed;border:1px solid var(--hairline,#dedee1);border-radius:8px;padding:4px;flex-basis:100%;justify-content:center;backdrop-filter:blur(12px)}
body.is-flow-mode .flow-canvas-hint{display:block;position:absolute;bottom:91px;left:50%;transform:translateX(-50%);z-index:4;width:max-content;max-width:calc(100% - 32px);padding:7px 11px;border-radius:7px;background:#ffffffd9;color:var(--muted,#85858b);font-size:10px;line-height:1.5;text-align:center;pointer-events:none;backdrop-filter:blur(8px)}
.flow-panel-heading{min-height:70px;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid var(--divider,#ededf0);flex:none}
.flow-panel-heading h2{font-size:15px;font-weight:600;letter-spacing:-.3px;margin:4px 0 0;line-height:1.3}
.flow-eyebrow{font-size:9px;letter-spacing:.4px;color:var(--muted,#85858b)}
.flow-exit{font-size:10px;color:var(--primary,#0066cc);padding:8px 0;white-space:nowrap}
.flow-panel-scroll{flex:1;overflow:auto;min-height:0;scrollbar-width:thin;overscroll-behavior:contain;padding-bottom:24px}
.flow-section{padding:18px;border-bottom:1px solid var(--divider,#ededf0)}
.flow-section h3{font-size:11px;font-weight:600;margin:0 0 12px;letter-spacing:-.1px}
.flow-section-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}
.flow-section-heading h3{margin:0}
.flow-section-heading>button{font-size:10px;min-height:28px;padding:4px 0;color:var(--primary,#0066cc);white-space:nowrap}
.flow-section-heading>button.flow-danger{color:#a85244}
.flow-primary{background:var(--primary,#0066cc)!important;color:#fff!important;border-radius:7px;font-size:11px;min-height:36px;padding:8px 12px}
.flow-wide{width:100%}
.flow-note{color:var(--muted,#85858b);font-size:10px;line-height:1.75;margin:10px 0 0}
.flow-empty{font-size:11px;color:var(--muted,#85858b);line-height:1.8;margin:10px 0 16px}
.flow-inline{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin-top:10px}
.flow-inline>button{font-size:10px;color:var(--muted,#85858b);min-height:28px;padding:4px 0;text-align:left}
.flow-inline>button:hover,.flow-section-heading>button:hover{color:var(--primary,#0066cc)}
.flow-routes{margin:0 -10px 14px}
.flow-route-row{display:flex;align-items:center;gap:7px;padding:2px 8px;border-radius:7px;min-width:0;margin:3px 0}
.flow-route-row.is-selected{background:#0066cc0a}
.flow-route-row>input{accent-color:var(--primary,#0066cc);width:13px;height:13px;flex:none}
.flow-route-row>button{display:flex;align-items:center;gap:8px;flex:1;min-width:0;padding:9px 0;text-align:left}
.flow-route-row i{width:7px;height:7px;background:var(--route-color);border-radius:50%;flex:none}
.flow-route-row span{min-width:0;display:block}
.flow-route-row b{display:block;font-size:11px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.flow-route-row small{display:block;font-size:8px;color:var(--muted,#85858b);margin-top:4px;white-space:nowrap}
.flow-route-row.is-selected b{color:var(--primary,#0066cc)}
.flow-type-row{display:flex;align-items:center;gap:5px;flex-wrap:wrap;min-height:42px;border-top:1px solid var(--divider,#ededf0);padding:8px 0}
.flow-type-row>label:first-child{display:flex;align-items:center;gap:6px;flex:1;min-width:85px;font-size:10px}
.flow-type-row>label:first-child span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:110px}
.flow-type-row input[type=checkbox],.flow-target-check input{accent-color:var(--primary,#0066cc);width:13px;height:13px;flex:none}
.flow-weight{display:flex;align-items:center;gap:4px;color:var(--muted,#85858b);font-size:8px}
.flow-weight input{width:34px;padding:4px 1px;border:1px solid var(--hairline,#dedee1);border-radius:4px;font-size:9px;text-align:center;background:var(--pearl,#f7f7f9)}
.flow-type-row>button{font-size:9px;color:var(--primary,#0066cc);padding:3px}
.flow-type-row>button.flow-remove-type{color:var(--muted,#85858b);font-size:17px}
.flow-range{display:block;margin:17px 0 12px}
.flow-range>span{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10px;color:var(--muted,#85858b);margin-bottom:10px}
.flow-range output{font:10px var(--mono,monospace);color:var(--ink,#202022)}
.flow-range input{width:100%;height:3px;accent-color:var(--ink,#202022);cursor:pointer;display:block}
.flow-range-labels{display:flex;justify-content:space-between;font-size:8px;color:var(--muted,#85858b);margin-top:-4px}
.flow-field{display:block;margin-top:18px;font-size:10px;color:var(--muted,#85858b)}
.flow-field>span{display:block;margin-bottom:7px}
.flow-field select{width:100%;border:1px solid var(--hairline,#dedee1);border-radius:6px;background:var(--pearl,#f7f7f9);padding:8px;font-size:10px;color:var(--ink,#202022);min-height:34px}
.flow-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:13px}
.flow-fields.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.flow-fields label{display:block;min-width:0}
.flow-fields label>span{display:block;color:var(--muted,#85858b);font-size:9px;margin-bottom:6px}
.flow-fields input{width:100%;min-width:0;height:34px;border:1px solid var(--hairline,#dedee1);border-radius:6px;padding:7px;background:var(--pearl,#f7f7f9);font:10px var(--mono,monospace)}
.flow-route-name{display:flex;gap:8px;align-items:center}
.flow-route-name input[type=text]{width:100%;min-width:0;border:1px solid var(--hairline,#dedee1);border-radius:6px;background:var(--pearl,#f7f7f9);padding:8px;font-size:11px;min-height:36px}
.flow-route-name input[type=color]{width:32px;height:32px;padding:3px;border:1px solid var(--hairline,#dedee1);border-radius:6px;background:#fff;flex:none}
.flow-endpoint{border:0;padding:0;margin:16px 0 0;min-width:0}
.flow-endpoint legend{font-size:10px;display:flex;align-items:center;gap:6px;margin:0}
.flow-endpoint legend i{width:6px;height:6px;background:#168b63;border-radius:50%}
.flow-endpoint legend i.end{background:#d46442;border-radius:1px}
.flow-endpoint .flow-fields{margin-top:8px}
.flow-route-message{font-size:10px;line-height:1.7;color:var(--muted,#85858b);margin:12px 0 0;padding:8px;border-radius:6px;background:var(--pearl,#f7f7f9)}
.flow-route-message.is-warning{color:#a55937;background:#a5593708}
.flow-targets{margin-top:9px}
.flow-targets summary{display:flex;align-items:center;justify-content:space-between;font-size:10px;cursor:pointer;padding:7px 0;color:var(--ink,#202022)}
.flow-targets summary span{font:9px var(--mono,monospace);color:var(--muted,#85858b)}
.flow-target-check{display:flex;align-items:center;gap:8px;padding:6px 0;min-height:28px;font-size:10px;color:var(--muted,#85858b)}
.flow-target-check span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.flow-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 12px}
.flow-stats>div{display:flex;flex-direction:column;gap:6px}
.flow-stats span{font-size:9px;color:var(--muted,#85858b)}
.flow-stats output{font:16px var(--mono,monospace);letter-spacing:-.4px}
.flow-mobile-tabs{display:none}
body.is-flow-mode .bottom-tools{z-index:5}
@media(max-width:1150px){.flow-panel-heading,.flow-section{padding:15px 12px}.flow-panel-heading h2{font-size:13px}.flow-type-row>label:first-child span{max-width:86px}.flow-toolbar{gap:5px}.flow-toolbar button{padding:5px 8px}}
@media(max-width:850px){body.is-flow-mode .flow-toolbar{top:12px;gap:5px}.flow-toolbar button{font-size:10px;padding:5px 7px}.flow-play-controls>span{padding:0 5px}.flow-panel-heading,.flow-section{padding:13px 10px}.flow-panel-heading h2{font-size:12px}.flow-exit{font-size:9px}.flow-eyebrow{font-size:8px}.flow-type-row>label:first-child span{max-width:90px}.flow-type-row{gap:6px}.flow-weight{margin-left:18px}.flow-route-row{padding:2px 5px;gap:5px}.flow-route-row>input{width:12px;height:12px}.flow-route-row b{font-size:10px}.flow-route-row small{font-size:7px}.flow-route-row>button{gap:5px}.flow-routes{margin-inline:-5px}}
@media(max-width:640px){
  body.is-flow-mode:not(.is-home)>.workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) var(--mobile-panel-height)}
  body.is-flow-mode:not(.is-home) .workspace>.viewport{grid-column:1;grid-row:1;min-width:0;min-height:0}
  body.is-flow-mode:not(.is-home) .flow-library-panel,body.is-flow-mode:not(.is-home) .flow-inspector-panel{grid-column:1;grid-row:2;border:0;border-top:1px solid var(--hairline,#dedee1);box-shadow:0 -4px 18px #1d1d1f05}
  body.is-flow-mode:not(.is-home) .flow-inspector-panel{display:none}
  body.is-flow-mode[data-flow-mobile-view=settings]:not(.is-home) .flow-inspector-panel{display:flex}
  body.is-flow-mode[data-flow-mobile-view=settings]:not(.is-home) .flow-library-panel{display:none}
  body.is-flow-mode .flow-panel-heading{padding:9px 16px;min-height:44px;height:44px}
  body.is-flow-mode .flow-panel-heading>div{display:flex;align-items:center;gap:10px}
  body.is-flow-mode .flow-panel-heading h2{font-size:13px;margin:0}
  body.is-flow-mode .flow-eyebrow{font-size:9px}
  body.is-flow-mode .flow-exit{font-size:11px;min-height:40px;padding:5px 0}
  .flow-mobile-tabs{display:flex;flex:none;gap:20px;align-items:center;padding:0 16px;height:40px;min-height:40px;border-bottom:1px solid var(--divider,#ededf0)}
  .flow-mobile-tabs button{height:40px;min-height:40px;font-size:12px;padding:0 2px;border-bottom:2px solid transparent;color:var(--muted,#85858b)}
  .flow-mobile-tabs button[aria-selected=true]{color:var(--ink,#202022);border-bottom-color:var(--ink,#202022);font-weight:600}
  .flow-section{padding:14px 16px}
  .flow-section h3{font-size:12px}
  .flow-section-heading>button,.flow-inline>button{font-size:11px;min-height:40px}
  .flow-route-row>button{min-height:48px;gap:10px}
  .flow-route-row b{font-size:12px}
  .flow-route-row small{font-size:9px}
  .flow-route-row>input,.flow-type-row input[type=checkbox],.flow-target-check input{width:17px;height:17px}
  .flow-routes{margin-bottom:10px}
  .flow-route-row{gap:10px;padding-inline:8px}
  .flow-note{font-size:11px;line-height:1.7}
  .flow-primary{font-size:12px;min-height:40px}
  .flow-type-row{min-height:48px;padding:8px 0;gap:8px}
  .flow-type-row>label:first-child{font-size:12px;gap:10px}
  .flow-type-row>label:first-child span{max-width:150px}
  .flow-weight{margin-left:0;font-size:10px}
  .flow-weight input{width:40px;min-height:40px;font-size:16px}
  .flow-type-row>button{min-height:40px;padding:8px;font-size:11px}
  .flow-range>span{font-size:12px}
  .flow-range output{font-size:12px}
  .flow-range input{height:28px}
  .flow-range{margin:16px 0 12px}
  .flow-range-labels{font-size:10px}
  .flow-field{font-size:11px}
  .flow-field select,.flow-fields input{min-height:40px;font-size:16px}
  .flow-fields label>span{font-size:10px}
  .flow-targets summary{font-size:12px;min-height:40px}
  .flow-target-check{font-size:12px;min-height:40px;gap:10px}
  .flow-route-name input[type=text]{font-size:16px;min-height:40px}
  .flow-route-name input[type=color]{width:40px;height:40px}
  .flow-endpoint legend{font-size:11px}
  .flow-stats span{font-size:10px}
  .flow-stats output{font-size:18px}
  body.is-flow-mode:not(.is-home) .flow-toolbar{top:9px;max-width:calc(100% - 16px);gap:6px}
  .flow-toolbar button{min-height:38px;font-size:11px;padding:5px 9px}
  .flow-play-controls{padding:3px;border-radius:8px}
  .flow-play-controls>span{font-size:10px;padding:0 4px}
  .flow-play-controls .flow-play{min-width:66px}
  .flow-draw-controls{gap:3px}
  .flow-draw-controls button{font-size:10px;padding:5px 7px}
  body.is-flow-mode .flow-canvas-hint{bottom:73px;font-size:10px;padding:5px 8px;max-width:calc(100% - 20px)}
  body.is-flow-mode[data-flow-mobile-view=types] .flow-route-section,body.is-flow-mode[data-flow-mobile-view=routes] .flow-types-section{display:none}
  body.is-flow-mode .flow-panel-scroll{padding-bottom:calc(16px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}
}

.flow-private-note{font-size:9px;line-height:1.7;color:var(--muted,#85858b);margin:12px 0 0;padding:8px 9px;background:var(--pearl,#f7f7f9);border-radius:6px}
@media(max-width:640px){.flow-private-note{font-size:10px}}

.flow-heading-actions{display:flex;align-items:center;gap:10px;flex:none}
.flow-heading-actions>button:not(.info-button){font-size:10px;min-height:28px;padding:4px 0;color:var(--primary,#0066cc);white-space:nowrap}
.flow-heading-actions>button.flow-danger{color:#a85244}
.flow-heading-actions .info-button{margin:0}
.flow-route-visibility{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;min-height:28px;font-size:10px;color:var(--muted,#85858b);cursor:pointer}
.flow-route-visibility input{width:16px;height:16px;margin:0;accent-color:var(--primary,#0066cc);cursor:pointer}
.help-model-credit{font-size:11px;line-height:1.7;color:var(--muted);margin-top:20px}
.help-model-credit summary{cursor:pointer}
.help-model-credit p{margin:8px 0}
.help-model-credit a{color:inherit;text-decoration:underline;text-underline-offset:2px}
@media(max-width:640px){.flow-heading-actions{gap:12px}.flow-heading-actions>button:not(.info-button){min-height:40px;font-size:11px}.flow-route-visibility{min-height:40px;font-size:12px}.flow-route-visibility input{width:18px;height:18px}.flow-switch-icon{width:14px;height:14px}}

.flow-route-title-row{display:flex;align-items:center;gap:8px;width:100%;min-width:0}
.flow-route-header .item-name{flex:1;min-width:0;font-size:18px;font-weight:600;letter-spacing:-.5px;padding:3px 0}
.flow-route-header .info-button{margin:0}
.flow-route-color{display:flex;align-items:center;gap:8px;font-size:10px;min-height:32px;color:var(--ink)}
.flow-route-color>span{margin-right:auto}
.flow-route-color code{font:10px var(--mono,monospace);color:var(--muted)}
.flow-route-color input[type=color]{width:32px;height:30px;padding:3px;border:1px solid var(--hairline);border-radius:5px;background:var(--canvas);cursor:pointer}
.flow-route-row>.flow-route-color-chip{display:block;width:9px;height:9px;min-width:9px;flex:none;margin-left:5px;background:var(--route-color);border-radius:50%}
.flow-targets summary>span{font:inherit;color:inherit}
.flow-target-chevron{width:14px;height:14px;flex:none;color:var(--muted);transition:transform .15s ease}
.flow-targets[open] .flow-target-chevron{transform:rotate(180deg)}
body.is-presenting>.project-bar{display:none}
body.is-flow-mode.is-presenting:not(.is-home)>.workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
body.is-flow-mode.is-presenting:not(.is-home) .flow-library-panel,body.is-flow-mode.is-presenting:not(.is-home) .flow-inspector-panel{display:none!important}
body.is-flow-mode.is-presenting:not(.is-home) .workspace>.viewport{grid-column:1;grid-row:1}
body.is-flow-mode.is-presenting .flow-draw-controls,body.is-flow-mode.is-presenting .flow-canvas-hint{display:none!important}
body.is-flow-mode.is-presenting #exit-presentation{z-index:9}
@media(max-width:640px){
  .flow-route-header .item-name{font-size:18px}
  .flow-route-color{min-height:40px;font-size:12px}
  .flow-route-color input[type=color]{width:40px;height:40px}
  .flow-route-color code{font-size:11px}
  .flow-route-row>.flow-route-color-chip{width:10px;height:10px;min-width:10px}
  body.is-flow-mode.is-presenting #exit-presentation{top:64px;right:12px}
}

.visitor-rig-dialog{width:min(940px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;overflow:hidden;display:none;border-radius:14px}
.visitor-rig-dialog[open]{display:flex;flex-direction:column}
.visitor-rig-heading{position:relative;flex:none;display:flex;align-items:flex-start;gap:20px;padding:22px 58px 20px 24px;border-bottom:1px solid var(--divider)}
.visitor-rig-heading h2{font-size:20px;letter-spacing:-.5px;margin:0 0 6px}
.visitor-rig-heading p{font-size:11px;color:var(--muted);margin:0}
.visitor-rig-layout{display:grid;grid-template-columns:minmax(260px,1fr) minmax(300px,1fr);min-height:0;overflow:auto;overscroll-behavior:contain}
.visitor-rig-preview-panel{padding:18px;background:var(--pearl);min-width:0}
.visitor-rig-stage{height:350px;position:relative;border:1px solid var(--divider);background:#f7f8fa;border-radius:10px;overflow:hidden;touch-action:none}
.visitor-rig-canvas,.visitor-rig-canvas canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.visitor-rig-joint-label{position:absolute;left:12px;top:12px;padding:4px 8px;border-radius:4px;background:white;color:var(--primary);font-size:11px;pointer-events:none}
.visitor-rig-no-preview{padding:24px;font-size:12px;line-height:1.7}
.visitor-rig-preview-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}
.visitor-rig-preview-actions button{font-size:11px;min-height:36px}
.visitor-rig-caption{font-size:10px;line-height:1.7;color:var(--muted);margin:10px 0 0}
.visitor-rig-controls{padding:18px 24px 24px;min-width:0}
.visitor-rig-controls .form-label{display:flex;flex-direction:column;gap:6px;font-size:11px;margin:0 0 14px}
.visitor-rig-controls input,.visitor-rig-controls select{width:100%;min-width:0;height:38px;border:1px solid var(--hairline);border-radius:6px;background:var(--pearl);padding:7px 9px;font-size:12px}
.visitor-rig-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.visitor-rig-note{font-size:10px;line-height:1.7;color:var(--muted);margin:4px 0 12px}
.visitor-rig-joints{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin:12px 0 16px}
.visitor-rig-joints button{display:flex;align-items:center;justify-content:space-between;padding:7px 8px;min-height:33px;border:1px solid var(--divider);border-radius:5px;font-size:10px;text-align:left;gap:4px}
.visitor-rig-joints button[aria-pressed=true]{border-color:var(--primary);background:#0066cc0a;color:var(--primary)}
.visitor-rig-joints button span{color:var(--muted);font-size:9px}
.visitor-rig-active{border-top:1px solid var(--divider);padding-top:14px;margin-top:12px}
.visitor-rig-active h3{font-size:12px;margin:0 0 12px}
.visitor-rig-active p{font-size:10px;color:var(--muted);margin:0 0 8px}
.visitor-rig-triple{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.visitor-rig-footer{flex:none;padding:14px 24px;border-top:1px solid var(--divider);background:var(--canvas)}
.visitor-rig-footer>div{display:flex;justify-content:flex-end;align-items:center;gap:18px}
.visitor-rig-footer .primary-button{font-size:12px;padding:10px 18px;min-height:40px}
.visitor-rig-footer [data-rig-error]{font-size:11px;color:#b34a35;margin:0 0 12px;line-height:1.6}
.visitor-rig-controls>[data-rig-defaults]{font-size:11px;min-height:35px}
@media(max-width:640px){
  .visitor-rig-dialog{width:calc(100vw - 16px);max-height:calc(100dvh - 16px);border-radius:10px}
  .visitor-rig-heading{padding:16px 48px 14px 16px}
  .visitor-rig-heading h2{font-size:18px}
  .visitor-rig-layout{grid-template-columns:minmax(0,1fr)}
  .visitor-rig-preview-panel{padding:12px}
  .visitor-rig-stage{height:250px}
  .visitor-rig-controls{padding:16px}
  .visitor-rig-controls input,.visitor-rig-controls select{font-size:16px;height:42px}
  .visitor-rig-joints button{min-height:40px;font-size:11px}
  .visitor-rig-preview-actions button{min-height:40px}
  .visitor-rig-footer{padding:12px 16px}
  .visitor-rig-footer>div{justify-content:space-between}
}
