@font-face{font-family:DM Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/ui/dm-sans-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ui/ibm-plex-mono-400-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ui/ibm-plex-mono-500-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#0a0a0a;--workspace:#0a0a0a;--workspace-dot:#ffffff14;--paper-shadow:0 2px 3px #00000010, 0 16px 45px -18px #00000030;--color-surface:#141414;--color-surface-2:#1c1c1c;--color-surface-3:#292929;--color-border:#303030;--color-border-light:#303030;--color-text:#e0e0e0;--color-text-dim:#b5b5b5;--color-text-muted:#a3a3a3;--color-accent:#4f9eff;--color-accent-hover:#3d8df0;--color-accent-dim:#1a3a5c;--color-danger:#e55;--color-success:#4c4;--color-overlay:#0a0a0ad9;--color-drop-overlay:#0a0a0ae0;--color-error-bg:#422526;--color-error-text:#ffd3d3;--color-modal-backdrop:#0009;--font-sans:"DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono:"IBM Plex Mono", "SF Mono", monospace;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--sidebar-width:240px;--properties-width:260px;--toolbar-height:48px;--control-height:30px;--control-icon-size:16px;--action-background:#fff;--action-text:#171717;--action-hover:#e5e5e5;--checkbox-background:#333;--checkbox-border:#777;--checkbox-checked:#eee;--checkbox-mark:#333}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#f0f0f0;--workspace:#eee;--workspace-dot:#17171714;--color-surface:#fafafa;--color-surface-2:#fff;--color-surface-3:#eaeaea;--color-border:#dcdcdc;--color-border-light:#dcdcdc;--color-text:#262626;--color-text-dim:#595959;--color-text-muted:#707070;--color-accent:#1768c5;--color-accent-hover:#1055a6;--color-accent-dim:#e1edfc;--color-danger:#b42332;--color-success:#23753b;--color-overlay:#f9fafbeb;--color-drop-overlay:#f9fafbe6;--color-error-bg:#fce8e8;--color-error-text:#8d1d29;--color-modal-backdrop:#0000004d;--action-background:#171717;--action-text:#fff;--action-hover:#303030;--checkbox-background:#fff;--checkbox-border:#aaa;--checkbox-checked:#666;--checkbox-mark:#fff}.theme-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:12px;line-height:1.5}.app{flex-direction:column;width:100%;height:100dvh;display:flex;position:relative;overflow:hidden}.app-body{flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.app-main{background:var(--color-surface);flex:1;min-width:0;min-height:0;position:relative}.toolbar{height:var(--toolbar-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:10;flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:0 16px;display:flex}.toolbar-left{flex-shrink:0;align-items:center;display:flex}.studio-mark{color:var(--color-text);display:block}.toolbar-center{flex:1;justify-content:center;align-items:center;gap:8px;display:flex}.toolbar-right{flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;display:flex}.toolbar-group{align-items:center;gap:8px;display:flex}.toolbar-label{color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;font-size:10px}.toolbar-divider{background:var(--color-border);width:1px;height:20px}.grid-controls{flex-shrink:0;position:relative}.grid-settings-popover{border:1px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-surface);gap:10px;width:210px;padding:12px;display:grid;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 4px 16px #00000040}.grid-setting{color:var(--color-text-dim);justify-content:space-between;align-items:center;gap:12px;font-size:11px;display:flex}.grid-setting .input{width:84px}.paper-controls{gap:4px;position:relative}.paper-preset-select{max-width:152px;height:var(--control-height)}.paper-settings-popover{border:1px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-surface);width:244px;padding:12px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 4px 16px #00000040}.paper-custom-form{gap:10px;display:grid}.paper-size-note,.paper-size-error{color:var(--color-text-muted);margin:0;font-size:10px;line-height:1.5}.paper-size-error{color:var(--color-danger,#f87171)}.paper-size-actions{justify-content:flex-end;gap:6px;display:flex}.btn,.btn-icon{height:var(--control-height);min-height:var(--control-height);line-height:1}.btn>svg,.btn-icon>svg{width:var(--control-icon-size);height:var(--control-icon-size);stroke-width:1.5px;flex-shrink:0;display:block}.btn{font-size:11px;font-family:var(--font-sans);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);background:var(--color-surface-2);color:var(--color-text);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:4px;padding:0 8px;font-weight:500;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.btn:hover:enabled{background:var(--color-surface-3);border-color:var(--color-text-muted)}.btn.active{background:var(--color-accent-dim);border-color:var(--color-accent);color:var(--color-accent)}.btn-primary{background:var(--action-background);border-color:var(--action-background);color:var(--action-text)}.btn-primary:hover:enabled{background:var(--action-hover);border-color:var(--action-hover)}.btn-xs{padding:0 6px;font-size:10px}.btn-ghost{color:var(--color-text-dim);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--color-surface-3);color:var(--color-text)}.btn-icon{width:var(--control-height);border-radius:var(--radius-sm);color:var(--color-text-dim);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:12px;transition:background-color .12s,color .12s;display:inline-flex}.btn.btn-square{width:var(--control-height);min-width:var(--control-height);flex-shrink:0;padding:0}.btn-icon:hover{background:var(--color-surface-3);color:var(--color-text)}.button-group{gap:1px;display:flex}.button-group .btn{border-radius:0}.button-group .btn:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.button-group .btn:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.btn:disabled{opacity:.35;cursor:default}.grid-button-group{box-shadow:inset 0 0 0 1px var(--color-border-light);border-radius:var(--radius-sm);background:var(--color-surface-2);gap:0}.grid-button-group.active{box-shadow:inset 0 0 0 1px var(--color-accent);background:var(--color-accent-dim);color:var(--color-accent)}.grid-button-group .btn{color:inherit;background:0 0;border:0}.grid-button-group .grid-settings-toggle{width:24px;min-width:24px}.property-hint{color:var(--color-text-dim);overflow-wrap:anywhere;margin:4px 0;font-size:11px;line-height:1.5}.camera-clipping{color:var(--color-text-dim);margin-top:4px;font-size:11px}.camera-clipping summary{cursor:pointer}.camera-clipping>.property-grid{margin-top:8px}.input{font-size:11px;font-family:var(--font-sans);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);outline:none;padding:4px 8px;transition:border-color .15s}.input:focus{border-color:var(--color-accent)}.input-sm{padding:3px 6px;font-size:11px}.input-mono{font-family:var(--font-mono);font-size:11px}.input-color{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer;width:28px;height:24px;padding:1px}.input-color::-webkit-color-swatch-wrapper{padding:1px}.input-color::-webkit-color-swatch{border:none;border-radius:2px}select.input{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='%23888'/%3E%3C/svg%3E");background-position:right 6px center;background-repeat:no-repeat;padding-right:20px}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.sidebar{width:var(--sidebar-width);border-right:1px solid var(--color-border);background:var(--color-surface);flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}.sidebar-section{border-bottom:1px solid var(--color-border)}.sidebar-section-header{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-dim);justify-content:space-between;align-items:center;padding:8px 12px;font-size:10px;font-weight:600;display:flex}.scene-tree{padding:0 4px 6px}.scene-tree-empty{color:var(--color-text-muted);text-align:center;padding:12px;font-size:11px;line-height:1.6}.scene-tree-item{border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:4px;padding:4px 8px;transition:background .1s;display:flex}.scene-tree-item:hover{background:var(--color-surface-2)}.scene-tree-item.selected{background:var(--color-accent-dim)}.scene-tree-item.primary{box-shadow:inset 2px 0 0 var(--color-accent)}.scene-tree-item.drag-over{box-shadow:0 -2px 0 var(--color-accent) inset, 0 2px 0 var(--color-accent)}.scene-tree-item[draggable=true]{cursor:grab}.scene-tree-item[draggable=true]:active{cursor:grabbing}.scene-tree-icon{text-align:center;width:16px;color:var(--color-text-dim);flex-shrink:0;font-size:12px}.scene-tree-name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:11px;overflow:hidden}.scene-tree-badge{font-size:9px;font-family:var(--font-mono);color:var(--color-text-muted);background:var(--color-surface-2);white-space:nowrap;border-radius:3px;flex-shrink:0;padding:1px 5px}.scene-tree-item:hover .scene-tree-badge{color:var(--color-text-dim)}.number-slider-row{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.number-slider-range{min-width:0;height:4px;accent-color:var(--color-accent);cursor:pointer;flex:1}.number-slider-input{text-align:center;flex:none!important;width:56px!important}.fill-add-row{align-items:center;gap:6px;display:flex}.fill-add-buttons{flex-wrap:wrap;flex:1;gap:4px;min-width:0;display:flex}.fill-add-buttons .btn{flex:1 0 auto}.fill-card{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-2);flex-direction:column;gap:5px;padding:6px;display:flex}.fill-card-header{align-items:center;gap:6px;display:flex}.fill-card-type{color:var(--color-accent);flex:1;font-size:11px;font-weight:600}.fill-axes-row{gap:3px;display:flex}.fill-axes-row .btn{font-family:var(--font-mono);flex:1}.visibility-toggle.visible{color:var(--color-accent)}.visibility-toggle.hidden{color:var(--color-text-muted)}.delete-btn{opacity:0;font-size:14px}.scene-tree-item:hover .delete-btn,.scene-tree-item:focus-within .delete-btn{opacity:1}.shape-library{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:0 8px 8px;display:grid}.shape-library-icon{width:24px;color:inherit;flex-shrink:0}.shape-library-name{white-space:normal;text-align:left;font-size:10px;font-weight:500}.preset-view-toggle{gap:2px;display:flex}.preset-view-toggle .btn-icon{border-radius:var(--radius-sm);color:var(--color-text-muted)}.preset-view-toggle .btn-icon[aria-pressed=true]{background:var(--color-surface-2);color:var(--color-text)}.preset-list{gap:4px;padding:0 8px 8px;display:grid}.preset-list-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.preset-item-row{align-items:center;min-width:0;display:flex;position:relative}.library-button{border-radius:var(--radius-sm);min-width:0;min-height:32px;color:var(--color-text);cursor:pointer;font-family:var(--font-sans);text-align:left;background:0 0;border:1px solid #0000;flex:1;align-items:center;gap:8px;padding:5px 8px;transition:background-color .12s,border-color .12s;display:flex}.shape-library-item,.preset-list-grid .preset-item{border-color:var(--color-border);min-height:46px}.preset-list-grid .preset-item{justify-content:center}.preset-list-grid .preset-name{display:none}.preset-icon{text-align:center;flex-shrink:0;width:22px;font-size:20px}.preset-list-list .preset-icon{font-size:16px}.preset-name{font-size:11px;font-weight:500}.preset-replace-btn{border-radius:var(--radius-sm);color:var(--color-text-muted);flex-shrink:0}.preset-list-grid .preset-replace-btn{background:var(--color-surface);position:absolute;top:-6px;right:-6px}@media (hover:hover) and (pointer:fine){.preset-replace-btn{opacity:0}.preset-item-row:hover .preset-replace-btn,.preset-item-row:focus-within .preset-replace-btn{opacity:1}.library-button:hover,.preset-replace-btn:hover{background:var(--color-surface-2);border-color:var(--color-border);color:var(--color-text)}}.library-button:focus-visible,.preset-replace-btn:focus-visible,.preset-view-toggle .btn-icon:focus-visible{outline:2px solid var(--color-text);outline-offset:2px}.preset-tooltip{z-index:100;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:220px;color:var(--color-text);flex-direction:column;gap:4px;padding:10px 12px;font-size:11px;line-height:1.5;display:flex;position:fixed;box-shadow:0 3px 12px #0000001f}.preset-tooltip span{color:var(--color-text-dim)}.sidebar-drop-hint{border-bottom:none;padding:8px 12px 12px}.properties{width:var(--properties-width);border-left:1px solid var(--color-border);background:var(--color-surface);flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}.properties-empty{justify-content:center;align-items:center;height:100%;padding:20px;display:flex}.properties-empty p{color:var(--color-text-muted);text-align:center;font-size:11px}.properties-header{border-bottom:1px solid var(--color-border);padding:8px 10px}.properties-name-input{background:0 0;border:0;border-radius:0;width:100%;padding:4px 0;font-size:10px;font-weight:400}.properties-section{border-bottom:1px solid var(--color-border);padding:8px 10px}.properties-section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-dim);margin-bottom:8px;font-size:10px;font-weight:600}.property-grid{flex-direction:column;gap:6px;display:flex}.property-row{align-items:center;gap:8px;display:flex}.property-row-full{flex-direction:column;align-items:stretch;gap:4px}.property-row-full .input{width:100%}.property-row-vec3{flex-direction:column;align-items:stretch;gap:4px}.property-label{color:var(--color-text-dim);flex-shrink:0;min-width:50px;font-size:10px}.property-value-text{color:var(--color-text);text-overflow:ellipsis;font-size:11px;overflow:hidden}.property-row>.input{flex:1;min-width:0}.property-section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent);border-top:1px solid var(--color-border);margin-top:6px;padding-top:6px;font-size:9px;font-weight:700}.property-section-label:first-child{border-top:none;margin-top:0;padding-top:0}.zoom-control{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.zoom-slider{min-width:0;height:4px;accent-color:var(--color-accent);cursor:pointer;flex:1}.zoom-number{text-align:center;flex:none!important;width:52px!important}.vec3-inputs{gap:4px;display:flex}.vec3-input-group{flex:1;align-items:center;gap:2px;min-width:0;display:flex}.vec3-label{color:var(--color-text-muted);text-align:center;flex-shrink:0;width:12px;font-size:9px;font-weight:600}.input-vec3{width:100%;min-width:0;font-size:11px;font-family:var(--font-mono);padding:3px 4px}.viewport-grid{width:100%;height:100%}.viewport{width:100%;height:100%;position:relative;overflow:hidden}.viewport,.compose-workspace .compose-stage{background-color:var(--workspace);background-image:radial-gradient(var(--workspace-dot) .65px, transparent .65px);background-size:12px 12px}.viewport-overlay{z-index:2;position:absolute;inset:0}.viewport-svg{z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.viewport-svg svg{width:100%;height:100%;display:block}.viewport-label{z-index:3;pointer-events:none;align-items:center;gap:6px;display:flex;position:absolute;top:8px;left:8px}.viewport-camera-name{color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.06em;background:var(--color-overlay);border-radius:var(--radius-sm);padding:2px 6px;font-size:10px;font-weight:600}.viewport-badge{color:var(--color-accent);background:var(--color-overlay);border-radius:var(--radius-sm);padding:2px 5px;font-size:9px}.viewport-stats{z-index:3;color:var(--color-text-muted);font-size:10px;font-family:var(--font-mono);background:var(--color-overlay);border-radius:var(--radius-sm);pointer-events:none;flex-wrap:wrap;align-items:center;gap:6px;padding:2px 6px;display:flex;position:absolute;bottom:8px;right:8px}.viewport-rendering{color:var(--color-accent);animation:1s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.drop-zone-overlay-fullscreen{z-index:200;background:var(--color-drop-overlay);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:all;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.drop-zone-content{border:2px dashed var(--color-accent);border-radius:16px;flex-direction:column;align-items:center;gap:16px;max-width:400px;padding:40px 60px;display:flex}.drop-zone-icon{color:var(--color-accent);font-size:40px;font-weight:200;line-height:1}.drop-zone-text{color:var(--color-text-dim);text-align:center;font-size:14px}.import-file-btn{border:1px dashed var(--color-border-light);border-radius:var(--radius-md);width:100%;color:var(--color-text);cursor:pointer;font-family:var(--font-sans);background:0 0;align-items:center;gap:8px;padding:10px 12px;font-size:11px;transition:all .15s;display:flex}.import-file-btn:hover{border-color:var(--color-accent);background:var(--color-accent-dim);color:var(--color-accent)}.import-file-btn .drop-hint-icon{color:var(--color-text-dim);text-align:center;width:20px;font-size:16px}.import-file-btn:hover .drop-hint-icon{color:var(--color-accent)}.drop-hint-text-small{color:var(--color-text-muted);text-align:center;margin-top:6px;padding-bottom:4px;font-size:10px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border-light);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.app-error{background:var(--color-error-bg);color:var(--color-error-text);justify-content:space-between;gap:16px;padding:8px 16px;display:flex}.app-status{padding:24px}.export-panel{border:1px solid var(--color-border-light);background:var(--color-surface-2);width:min(620px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--color-text);border-radius:8px;padding:24px;font-size:12px;overflow:auto}.export-panel::backdrop{background:var(--color-modal-backdrop)}.export-heading,.export-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.export-heading h2{margin:0;font-size:18px}.export-panel p{white-space:normal;line-height:1.6}.export-panel fieldset{border:0;margin:18px 0;padding:0}.export-fields{grid-template-columns:1fr 1fr;gap:12px 20px;display:grid}.export-fields label{gap:6px;display:grid}.export-check{gap:8px;margin-top:12px;display:flex}.export-panel .muted{color:var(--color-text-dim)}.export-error{color:var(--color-danger)}.viewport-stats{pointer-events:auto;z-index:3}@media (width<=600px){.export-fields{grid-template-columns:1fr}.export-actions{flex-wrap:wrap}}.viewport-stats{color:var(--color-text);white-space:normal;max-width:calc(100% - 16px)}.viewport-stats [role=alert]{max-height:100px;display:block;overflow:auto}.export-panel{margin:auto}.compose-workspace{background:var(--color-surface);min-width:0;color:var(--color-text);flex-direction:column;flex:1;display:flex}.compose-stage{flex:1;place-items:center;min-height:0;padding:14px 24px;display:grid;overflow:auto}.compose-paper{box-shadow:var(--paper-shadow);background:#fff;flex-shrink:0;position:relative}.compose-art,.compose-selection{width:100%;height:100%;position:absolute;inset:0}.compose-art{pointer-events:none}.compose-art svg{width:100%;height:100%;display:block}.compose-hit{fill:#0000;stroke:#0000;stroke-width:.35px;cursor:pointer}.compose-hit:hover,.compose-hit:focus-visible{fill:#2b82661c;stroke:#23876e;outline:none}.compose-hit.is-pinned{stroke:#329d7866;stroke-dasharray:1 1}.compose-hit.is-selected{fill:#2b82662c;stroke:#23876e;stroke-dasharray:none}.compose-quiet{fill:#bacbb31c;stroke:#7c9681;stroke-width:.25px;stroke-dasharray:2 2;pointer-events:none}.compose-controls{width:290px}.compose-recipe{text-align:left;border:1px solid var(--color-border);width:100%;color:inherit;cursor:pointer;background:0 0;border-radius:5px;margin-bottom:6px;padding:10px;display:block}.compose-recipe:hover{border-color:#62a486}.compose-recipe strong{font-size:12px;font-weight:500;display:block}.compose-recipe span{opacity:.65;margin-top:3px;font-size:10px;line-height:1.5;display:block}.compose-motifs{grid-template-columns:1fr 1fr;gap:8px;font-size:11px;display:grid}.compose-motifs label{align-items:center;gap:5px;display:flex}.compose-field{justify-content:space-between;align-items:center;gap:8px;margin:8px 0;font-size:11px;display:flex}.compose-field .input{width:100px}.compose-note{opacity:.65;margin-top:10px;font-size:10px;line-height:1.65}.compose-generate{background:var(--color-surface);border-top:1px solid var(--color-border);padding:14px;position:sticky;bottom:0}.compose-generate .btn{margin-bottom:5px;margin-right:5px}.compose-generate p{font-size:11px;line-height:1.5}.compose-error{color:#bf634d;padding:8px;font-size:12px}.compose-recipe:active{transform:scale(.98)}.compose-toggle{align-items:center;gap:7px;margin:10px 0 14px;font-size:11px;display:flex}.compose-selection .compose-hit{fill-rule:nonzero}.compose-field select[aria-label=Construction]{width:150px}.properties-name-input:focus{box-shadow:none;border-color:#0000}.properties-name-input:focus-visible{outline:1px solid var(--color-accent);outline-offset:2px}.camera-projection-row{align-items:center;gap:16px;display:flex}.camera-projection-row>.property-row{flex:1;min-width:0}.camera-projection-row .input{flex:0 0 52px;width:52px}.camera-ortho-toggle{color:var(--color-text-muted);align-items:center;gap:5px;font-size:10px;display:inline-flex}.library-icon{flex:none;width:24px;height:24px;display:block}.preset-icon{place-items:center;width:24px;height:24px;display:grid}.preset-list-list .library-icon{width:24px;height:24px}.shape-library-icon,.scene-tree-icon{place-items:center;display:grid}.scene-tree-icon .library-icon{width:16px;height:16px}.preset-item:disabled,.preset-replace-btn:disabled{opacity:.45;cursor:wait}.library-status{color:var(--color-text-muted);margin:0;padding:4px 12px 8px;font-size:10px}.model-credits{color:var(--color-text-muted);margin:0 12px 12px;font-size:10px;display:block}.viewport-paper,.compose-paper{isolation:isolate}.viewport-svg>svg,.compose-art>svg{background:0 0!important}.compose-art{z-index:1}.compose-selection{z-index:2}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.toolbar-left{width:32px;height:32px}.toolbar .btn{gap:6px;padding-inline:10px}.toolbar .btn-square{padding:0}.toolbar-secondary-controls,.toolbar-history,.project-actions{align-items:center;gap:8px;display:flex}.toolbar-history,.project-actions{border-left:1px solid var(--color-border);padding-left:8px}.toolbar-export,.toolbar-panel-toggle{flex-shrink:0}.toolbar.compact .toolbar-right{margin-left:auto}.toolbar-action-menu{inset:calc(var(--toolbar-height) + 4px) 12px auto auto;width:288px;max-width:calc(100vw - 24px);max-height:calc(100dvh - var(--toolbar-height) - 16px);overscroll-behavior:contain;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);margin:0;padding:8px;position:fixed;overflow:auto;box-shadow:0 8px 24px #0002}.toolbar-action-menu:not(:popover-open){display:none}.toolbar-menu-section{gap:8px;padding-block:8px;display:grid}.toolbar-menu-section+.toolbar-menu-section{border-top:1px solid var(--color-border)}.toolbar-menu-action,.theme-toggle.with-label{justify-content:flex-start;width:100%}.toolbar-action-menu .toolbar-group{flex-wrap:wrap;justify-content:space-between}.toolbar-action-menu .toolbar-history{border:0;justify-content:flex-end;padding:0}.toolbar-history>.toolbar-label{margin-right:auto}.toolbar-menu-action{background:0 0;border-color:#0000}.toolbar-menu-action:hover{background:var(--color-surface-3);border-color:#0000}.toolbar-action-menu .button-group{min-width:0}.grid-controls-inline{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.grid-controls-inline>.toolbar-label{grid-area:1/1}.grid-controls-inline>.button-group{grid-area:1/2}.grid-settings-inline{grid-column:1/-1;gap:8px;display:grid}.toolbar-action-menu .grid-setting .input{height:var(--control-height)}input[type=checkbox]{appearance:none;vertical-align:middle;border:1px solid var(--checkbox-border);background:var(--checkbox-background);cursor:pointer;border-radius:3px;flex-shrink:0;place-content:center;width:16px;height:16px;margin:0;display:inline-grid}input[type=checkbox]:before{content:"";background:var(--checkbox-mark);clip-path:polygon(14% 44%,40% 70%,85% 20%,96% 30%,40% 88%,4% 54%);opacity:0;width:12px;height:12px}input[type=checkbox]:checked{background:var(--checkbox-checked);border-color:var(--checkbox-checked)}input[type=checkbox]:checked:before{opacity:1}input[type=checkbox]:focus-visible{outline-color:#888}input[type=checkbox]:disabled{opacity:.45;cursor:not-allowed}.responsive-panel{border:0;border-right:1px solid var(--color-border);width:min(360px,100vw - 24px);max-width:none;height:100dvh;max-height:none;color:var(--color-text);background:var(--color-surface);margin:0;padding:0;position:fixed;inset:0 auto 0 0;box-shadow:8px 0 32px #0003}.responsive-panel[open]{flex-direction:column;display:flex}.responsive-panel:not([open]){display:none}.responsive-panel::backdrop{background:var(--color-modal-backdrop)}.responsive-panel-header{min-height:var(--toolbar-height);height:var(--toolbar-height);border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:0 12px;display:flex}.responsive-panel-header h2{font-size:12px;font-weight:600}.responsive-panel-content{overscroll-behavior:contain;min-height:0;padding-bottom:env(safe-area-inset-bottom);flex:1;overflow:auto}.responsive-panel-content>.sidebar,.responsive-panel-content>.properties{border:0;width:100%;min-height:100%;overflow:visible}.grid-settings-popover,.paper-settings-popover{overscroll-behavior:contain;max-height:calc(100dvh - 80px);overflow:auto}.app[data-compact=true] .app-main{width:100%}@media (width<=1040px){.toolbar{padding-inline:12px}.toolbar-center{min-width:0}}@media (pointer:coarse){.toolbar>.toolbar-left,.toolbar>.toolbar-right{flex-shrink:0}.toolbar>.toolbar-right .btn,.toolbar>.toolbar-center .btn,.toolbar>.toolbar-panel-toggle{--control-height:40px}.toolbar-action-menu .btn,.toolbar-action-menu .input,.responsive-panel-header .btn{--control-height:40px;min-height:40px}:is(.export-check,.compose-toggle,.property-row:has(input[type=checkbox])){min-height:40px}}@media (prefers-reduced-motion:reduce){.btn,.btn-icon,.library-button{transition:none}}.document-controls{gap:10px;display:grid}.document-controls .properties-section-title{margin-bottom:0}.document-pair{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.document-row{color:var(--color-text-dim);justify-content:space-between;align-items:center;gap:8px;font-size:10px;display:flex}.document-row-inputs{align-items:center;gap:6px;display:flex}.document-row-inputs .input{width:44px}.document-row>select{width:70px}.document-controls .paper-controls{grid-template-columns:minmax(0,1fr) auto auto;gap:6px;min-width:0;display:grid}.document-controls .paper-controls>.toolbar-label{color:var(--color-text-dim);letter-spacing:normal;text-transform:none;grid-column:1/-1;font-size:10px}.document-controls .paper-preset-select{width:100%;min-width:0;max-width:none}.document-controls .paper-settings-popover{z-index:20;width:min(244px,100%);right:0}.document-controls .grid-setting .input{width:96px}.document-optimize input{margin:0}.app-body>.compose-workspace{background:var(--color-surface);min-width:0;min-height:0;color:var(--color-text);flex:1;display:flex}.compose-workspace .compose-stage{flex:1;min-width:0;min-height:0;padding:0;position:relative;overflow:hidden}.compose-workspace .compose-paper{box-shadow:var(--paper-shadow);position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.compose-workspace .compose-hit:hover,.compose-workspace .compose-hit:focus-visible,.compose-workspace .compose-hit.is-selected{fill:color-mix(in srgb, var(--color-accent) 12%, transparent);stroke:var(--color-accent)}.compose-workspace .compose-hit.is-pinned:not(.is-selected){stroke:color-mix(in srgb, var(--color-accent) 45%, transparent)}.compose-workspace .compose-quiet{fill:#8888880c;stroke:#888}.app-body>.compose-controls{width:var(--properties-width)}.compose-selection-actions{flex-wrap:wrap;gap:4px;display:flex}.compose-controls .compose-generate{background:var(--color-surface);padding:12px}.compose-controls .compose-summary{color:var(--color-text-dim);font-size:10px}.compose-controls .compose-error{color:var(--color-danger);padding:0;font-size:10px}.compose-controls .compose-recipe{border-radius:0;padding:6px}.compose-controls .compose-recipe:hover{border-color:var(--color-text-muted)}.export-panel .export-actions{border-top:1px solid var(--color-border-light);justify-content:flex-end;gap:12px;margin-top:24px;padding-top:20px}.export-panel .export-heading{margin-bottom:16px}.export-panel [role=status]:empty{display:none}.viewport{min-width:0;min-height:0}.viewport-paper{box-shadow:var(--paper-shadow);position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.viewport-overlay:focus-visible{outline:2px solid var(--color-accent);outline-offset:-3px}
