.composer-page{display:flex;flex:1 1;flex-direction:column;min-height:0;overflow:hidden;position:relative}.composer-topbar{align-items:center;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:none;display:flex;flex-shrink:0;gap:var(--space-5);margin-bottom:var(--space-region);padding:var(--space-4) var(--space-7)}.composer-name-input{background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:var(--fs-5);padding:7px var(--space-5);width:280px}.composer-name-input:focus{border-color:var(--accent-text);box-shadow:none;outline:none}.composer-save-msg{color:var(--accent-green);font-size:var(--fs-4);font-weight:500}.composer-filemgr{display:flex;flex-shrink:0}.composer-btn,.composer-filemgr{align-items:center;gap:var(--space-3)}.composer-btn{background:var(--bg-subtle);border:1.5px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;display:inline-flex;font-size:var(--fs-5);font-weight:500;padding:var(--space-3) 13px;transition:background .14s,border-color .14s,color .14s;white-space:nowrap}.composer-btn:hover{background:var(--bg-hover);border-color:var(--accent-text);color:var(--accent-text)}.composer-btn-icon{flex-shrink:0;height:16px;width:16px}.composer-btn--save{background:rgba(30,163,83,.07);border-color:var(--accent-green);color:var(--accent-green)}.composer-btn--save:hover{background:var(--accent-green);border-color:var(--accent-green);color:#fff}.composer-btn--delete{background:rgba(217,64,64,.06);border-color:#d94040;color:#d94040}.composer-btn--delete:hover{background:#d94040;border-color:#d94040;color:#fff}.composer-scroll-mode{align-items:center;border-left:1.5px solid var(--border-color);display:flex;gap:5px;margin-left:var(--space-1);padding-left:var(--space-5)}.composer-scroll-label{color:var(--text-secondary);font-size:var(--fs-3);font-weight:500;white-space:nowrap}.composer-scroll-select-wrap{position:relative}.composer-scroll-select-wrap .qi-toggle-slider{gap:2px;padding:var(--qi-pill-inset) 3px}.composer-scroll-select-wrap .qi-mode-btn{gap:0;justify-content:center;max-width:21px;padding:4px;transition:background .12s ease,gap .12s cubic-bezier(.4,0,.2,1),max-width .12s cubic-bezier(.4,0,.2,1)}.composer-scroll-select-wrap .qi-mode-btn:focus-visible,.composer-scroll-select-wrap .qi-mode-btn:hover{gap:5px;max-width:130px}.composer-scroll-select-wrap .qi-mode-btn:focus-visible:not(.qi-mode-btn--active),.composer-scroll-select-wrap .qi-mode-btn:hover:not(.qi-mode-btn--active){background:var(--bg-hover,rgba(74,144,226,.08))}.composer-scroll-select-wrap .qi-mode-btn span{max-width:0;opacity:0;overflow:hidden;transition:max-width .12s cubic-bezier(.4,0,.2,1),opacity .12s ease}.composer-scroll-select-wrap .qi-mode-btn:focus-visible span,.composer-scroll-select-wrap .qi-mode-btn:hover span{max-width:110px;opacity:1}.composer-scroll-select{background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;font-size:var(--fs-4);height:34px;padding:0 var(--space-5);transition:border-color .14s,box-shadow .14s,background .14s}.composer-scroll-select-btn{align-items:center;display:inline-flex;gap:var(--space-4);justify-content:space-between;min-width:130px}.composer-scroll-select-label{white-space:nowrap}.composer-scroll-select-chevron{color:var(--text-secondary);font-size:var(--fs-4)}.composer-scroll-select-icon{align-items:center;display:flex;flex-shrink:0;margin-right:0;max-width:0;overflow:hidden;transition:max-width .4s cubic-bezier(.175,.885,.32,1.1),margin-right .4s cubic-bezier(.175,.885,.32,1.1)}.composer-scroll-select--saved .composer-scroll-select-icon{margin-right:0;max-width:20px}.csss-check{animation:csss-check-draw .35s ease .05s forwards;stroke-dasharray:20;stroke-dashoffset:20}@keyframes csss-check-draw{to{stroke-dashoffset:0}}.composer-scroll-select--saved{background:#2e7d47;border-color:rgba(0,0,0,.08);color:#fff;gap:var(--space-3);justify-content:center;pointer-events:none}.composer-scroll-select--saved:focus{outline:none}.composer-scroll-select-btn.open:not(.composer-scroll-select--saved),.composer-scroll-select:focus:not(.composer-scroll-select--saved){background:color-mix(in srgb,var(--bg-subtle) 90%,color-mix(in srgb,var(--accent-line) 8%,transparent) 10%);border-color:color-mix(in srgb,var(--accent-line) 56%,transparent);box-shadow:none;outline:none}.composer-scroll-menu{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:none;left:0;min-width:140px;padding:5px;position:absolute;top:calc(100% + 6px);z-index:180}.composer-scroll-menu-item{background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--fs-5);padding:7px 8px;text-align:left;width:100%}.composer-load-overlay{inset:0;position:fixed;z-index:99}.composer-load-menu{background:var(--bg-panel);border:1.5px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:none;left:0;max-height:320px;min-width:50px;overflow-y:auto;padding:var(--space-3);position:absolute;top:calc(100% + 6px);z-index:100}.composer-load-menu-header{border-bottom:1px solid var(--border-color);color:var(--text-muted);font-size:var(--fs-3);font-weight:600;letter-spacing:.06em;margin-bottom:var(--space-2);padding:var(--space-2) var(--space-4) var(--space-3);text-transform:uppercase}.composer-load-empty{color:var(--text-muted);font-size:var(--fs-4);padding:var(--space-4);text-align:center}.composer-load-item{align-items:center;background:none;border:none;border-radius:var(--radius-md);cursor:pointer;display:flex;font-size:var(--fs-5);gap:7px;padding:7px 10px;text-align:left;transition:background .12s;width:100%}.composer-load-item--active{background:color-mix(in srgb,var(--accent-line) 9%,transparent);color:var(--accent-text);font-weight:500}.composer-load-item-icon{flex-shrink:0;height:14px;opacity:.6;width:14px}.composer-layout{display:flex;flex:1 1;gap:0;min-height:0;position:relative}.composer-layout--fullscreen{background:var(--bg-main);--composer-fs-header-band:calc(var(--space-5) + 7px + 15px + var(--space-3));gap:0;height:100%;inset:0;min-height:100%;padding:0;position:fixed;z-index:var(--z-modal)}.composer-layout--fullscreen-canvas2d,.composer-layout--fullscreen-split-editor{align-items:stretch}.composer-grid-wrap{background:var(--bg-canvas);border:1px solid var(--border-color);border-radius:10px;contain:layout paint;flex:1 1;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:var(--space-region) calc(var(--space-region) - var(--scrollbar-size) * 2);scrollbar-gutter:stable both-edges}.composer-grid-wrap--fullscreen{display:flex;min-height:0;overflow:hidden;padding:14px}.composer-grid-wrap--fullscreen-canvas2d,.composer-grid-wrap--fullscreen-split-editor{min-width:0}.composer-layout--fullscreen .composer-grid-wrap--fullscreen{background:transparent;border:0;border-radius:0;padding:0;scrollbar-gutter:auto}.composer-layout--fullscreen .composer-element--fullscreen-active{border:0;border-left:1px solid var(--border-color);border-radius:0;border-right:1px solid var(--border-color);box-shadow:none;overflow:hidden}.composer-layout--fullscreen .composer-el-body .canvas2d-shell,.composer-layout--fullscreen .composer-el-body .discussion-shell,.composer-layout--fullscreen .composer-el-body .lesson-pack-block-embed,.composer-layout--fullscreen .composer-el-body .viewport3d-shell{border-radius:0}.composer-layout--fullscreen .composer-panel .el-controls,.composer-layout--fullscreen .composer-panel--fullscreen{border:0;border-radius:0}.composer-layout--fullscreen .composer-element--fullscreen-active .composer-el-header{background:var(--bg-panel)}.composer-layout--fullscreen .composer-element--fullscreen-active .composer-el-body{padding:0}.composer-layout--fullscreen-lessonpack .composer-el-body .lesson-pack-layout{border:0}.composer-grid{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.composer-grid--fullscreen{display:flex;flex:1 1;min-height:0}.composer-grid--fullscreen .drop-highlight,.composer-grid--fullscreen .grid-bg-cell{display:none}.composer-grid-wrap--full{background:var(--bg-panel);border:0;border-radius:0 0 var(--radius-lg) var(--radius-lg);display:flex;flex-direction:column;overflow:hidden;padding:0;scrollbar-gutter:auto}.composer-grid--full{flex:1 1;min-height:0;position:relative}.composer-grid--full .grid-bg-cell{display:none}.composer-grid-wrap--full.composer-grid-wrap--empty{border:1px solid var(--border-color);border-radius:var(--radius-lg)}.composer-grid-wrap--full.composer-grid-wrap--empty .composer-blocks-strip{border:0;border-radius:0;border-top:1px solid var(--border-color)}.composer-grid__empty{align-items:center;color:var(--text-secondary);display:flex;flex-direction:column;gap:var(--space-3);height:100%;justify-content:center;pointer-events:none;text-align:center}.composer-grid__empty p{font-size:var(--fs-4);margin:0}.composer-element.composer-element--full-area{cursor:default;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0;overflow:hidden}.composer-element--full-area .composer-el-body{padding:0}.composer-element.composer-element--full-area .canvas2d-shell,.composer-element.composer-element--full-area .composer-el-header,.composer-element.composer-element--full-area .oil-gas-sandbox,.composer-element.composer-element--full-area .viewport3d-shell{border-radius:0}.composer-blank-body{align-items:center;color:var(--text-secondary);display:flex;flex:1 1;flex-direction:column;gap:var(--space-5);justify-content:center;min-height:0;padding:var(--space-4);text-align:center}.composer-blank-body--generating{padding:0;position:relative}.composer-blank-generating{position:absolute;inset:0;border:1.5px dashed var(--grid-border-color,var(--border-color));border-radius:var(--radius-md)}.composer-blank-dropzone{align-items:center;border:1.5px dashed var(--grid-border-color);border-radius:var(--radius-md);display:flex;flex:0 0 auto;gap:var(--space-4);padding:var(--space-4) var(--space-5);text-align:left;width:min(440px,96%)}.composer-blank-dropzone svg{flex:0 0 auto}.composer-blank-dropzone-text{display:flex;flex-direction:column;gap:1px;min-width:0}.composer-blank-dropzone-title{color:var(--text-primary);font-size:var(--fs-5);font-weight:600}.composer-blank-dropzone-hint{color:var(--text-muted);font-size:var(--fs-3)}.composer-blank-assistant{border:1px solid var(--border-color);border-radius:var(--radius-md);display:flex;flex:0 0 auto;flex-direction:column;gap:var(--space-2);padding:var(--space-3);width:min(440px,96%)}.composer-blank-prompt{align-items:center;display:flex;gap:var(--space-2);width:100%}.composer-blank-type{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);flex:0 0 auto;font-size:var(--fs-3);height:28px;padding:0 var(--space-1);width:100%}@container panel (max-height: 175px){.composer-blank-body{gap:var(--space-1);padding:var(--space-1)}.composer-blank-dropzone{gap:var(--space-2);padding:var(--space-1) var(--space-3)}.composer-blank-dropzone-hint{display:none}.composer-blank-assistant{gap:2px;padding:var(--space-1)}}.composer-blank-type:focus{border-color:var(--accent-text);outline:none}.composer-blank-type:disabled{opacity:.6}.composer-blank-input{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);flex:1 1 auto;font-size:var(--fs-3);height:28px;min-width:0;padding:0 var(--space-3)}.composer-blank-input::placeholder{color:var(--text-muted)}.composer-blank-input:focus{border-color:var(--accent-text);outline:none}.composer-blank-input:disabled{opacity:.6}.composer-blank-generate{align-items:center;background:var(--accent-fill);border:none;border-radius:var(--radius-md);color:var(--accent-on-fill);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:var(--fs-4);height:28px;justify-content:center;width:28px}.composer-blank-generate:disabled{cursor:default;opacity:.4}.composer-blank-status{color:var(--text-secondary);font-size:var(--fs-2);max-width:300px}.composer-blank-status--error{color:var(--accent-red)}.composer-blank-retry{background:none;border:none;color:var(--accent-text);cursor:pointer;font-size:var(--fs-2);margin-left:var(--space-2);padding:0;text-decoration:underline}.composer-blocks-strip{align-items:stretch;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:0 0 var(--radius-lg) var(--radius-lg);display:flex;flex:0 1 10%;gap:var(--space-3);min-height:67px;padding:var(--space-2) var(--space-3)}.composer-blocks-strip__scroll{align-items:stretch;display:flex;flex:1 1;gap:var(--space-2);min-height:0;min-width:0;overflow-x:auto;overflow-y:hidden}.composer-blocks-strip__tile{align-items:center;aspect-ratio:1/1;background:transparent;border:1px solid transparent;border-radius:12.5%;color:var(--accent-text);cursor:pointer;display:inline-flex;flex:0 0 auto;justify-content:center;min-height:0;min-width:0;padding:0;transition:background .12s,border-color .12s}.composer-blocks-strip__tile:hover{border-color:var(--grid-border-color)}.composer-blocks-strip__tile.is-active{border-color:var(--accent-text)}.composer-blocks-strip__tile--blank{background:var(--bg-subtle);border:1px dashed var(--grid-border-color)}.composer-blocks-strip__tile--blank .composer-blocks-strip__tile-icon svg{height:46%;width:46%}.composer-blocks-strip__tile-icon{align-items:center;display:inline-flex;height:100%;justify-content:center;width:100%}.composer-blocks-strip__tile-icon svg.template-svg{display:block;height:100%;width:100%}.composer-blocks-strip__tile-icon svg.template-svg>rect:first-of-type{height:80px;rx:12.5%;width:80px;x:0;y:0}.composer-blocks-strip__tile:hover .composer-blocks-strip__tile-icon svg.template-svg>rect:first-of-type{stroke:var(--grid-border-color)}.composer-blocks-strip__tile.is-active .composer-blocks-strip__tile-icon svg.template-svg>rect:first-of-type{stroke:var(--accent-line)}.composer-blocks-strip__add{align-items:center;aspect-ratio:1/1;background:var(--bg-dark);border:1px dashed var(--grid-border-color);border-radius:12.5%;color:var(--text-secondary);cursor:pointer;display:inline-flex;flex:0 0 auto;justify-content:center;min-height:0;min-width:0;padding:0;transition:border-color .12s,color .12s,background .12s}.composer-blocks-strip__add svg{height:36%;width:36%}.composer-blocks-strip__add:focus-visible,.composer-blocks-strip__add:hover{background:color-mix(in srgb,var(--accent-fill) 12%,var(--bg-dark));border-color:var(--accent-text);color:var(--text-primary)}.grid-bg-cell{background:var(--bg-grid-cell);border:1.5px dashed var(--grid-border-color);border-radius:var(--radius-md);transition:background .1s}.drop-highlight,.grid-bg-cell{pointer-events:none;position:absolute}.drop-highlight{background:color-mix(in srgb,var(--accent-line) 10%,transparent);border:2px dashed var(--accent-line);border-radius:var(--radius-md);z-index:5}.composer-element{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:none;container-name:panel;container-type:size;cursor:-webkit-grab;cursor:grab;display:flex;flex-direction:column;overflow:visible;position:absolute;transition:border-color .15s,box-shadow .15s;z-index:10}.composer-element:hover{box-shadow:none}.composer-element:before{border:1px solid transparent;border-radius:0;content:"";inset:-1px;pointer-events:none;position:absolute;z-index:5}.composer-element:hover:before{border-color:var(--hover-border-color)}.composer-element--fullscreen-hidden{display:none}.composer-element--fullscreen-active{height:100%!important; /* !important needed: overrides inline drag-position styles */left:0!important; /* !important needed: overrides inline drag-position styles */position:relative;top:0!important; /* !important needed: overrides inline drag-position styles */width:100%!important /* !important needed: overrides inline drag-position styles */}.composer-layout--fullscreen-canvas2d .composer-element--fullscreen-active .composer-el-header{border-radius:var(--radius-lg) var(--radius-lg) 0 0}.composer-element--fullscreen-active .composer-el-delete,.composer-element--fullscreen-active .resize-handle{display:none}.composer-element--selected,.composer-element--swap-target{box-shadow:none!important /* !important needed: design spec — flat elevation */}.composer-element--selected:before,.composer-element--swap-target:before{border-color:var(--accent-text)}.composer-layout--fullscreen .composer-element:before{display:none}.composer-element--strip{container-type:normal;cursor:ns-resize}.composer-el-header{align-items:center;background:var(--bg-subtle);border-bottom:1px solid var(--border-color);border-radius:var(--radius-md) var(--radius-md) 0 0;display:flex;flex-shrink:0;justify-content:space-between;padding:7px 10px var(--space-3)}.composer-el-title{font-size:var(--fs-4);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer-el-title-input{background:var(--bg-panel);border:1px solid var(--accent-line);border-radius:var(--radius-sm);flex:1 1;font-size:var(--fs-4);font-weight:600;min-width:0;padding:var(--space-1) var(--space-3)}.composer-el-title-input::placeholder{color:var(--text-secondary)}.composer-el-header__toolbar{align-items:center;display:none;flex:1 1;gap:var(--space-2);min-width:0;position:relative}.composer-element--selected.composer-element--custom-header .composer-el-header__toolbar{display:flex}.composer-element--selected.composer-element--custom-header .composer-el-header{padding-bottom:2px;padding-top:2px}.composer-element--selected.composer-element--header-replaces-title .composer-el-title,.composer-element--selected.composer-element--header-replaces-title .composer-el-title-input{display:none}.composer-el-delete{align-items:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;display:flex;flex-shrink:0;font-size:var(--fs-4);height:20px;justify-content:center;transition:background .1s,color .1s;width:20px}.composer-el-delete:hover{background:var(--accent-red);color:#fff}.composer-el-actions{gap:var(--space-1);margin-left:auto}.composer-el-actions,.composer-el-save{align-items:center;display:flex;flex-shrink:0}.composer-el-save{background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;height:20px;justify-content:center;padding:0;position:relative;transition:background .1s,color .1s;width:20px}.composer-el-save:hover{background:var(--accent-teal);color:#fff}.composer-el-save--saved{color:var(--accent-green)}.composer-el-save--saved:hover{background:var(--accent-green);color:#fff}.composer-el-save--editing{color:var(--accent-amber)}.composer-el-save--editing:hover{background:var(--accent-amber);color:#fff}.composer-el-save--editing:after{animation:composer-save-edit-pulse 1.3s ease-in-out infinite;background:#f97316;border:1.5px solid var(--bg-panel);border-radius:50%;content:"";height:8px;position:absolute;right:-3px;top:-3px;width:8px}@keyframes composer-save-edit-pulse{0%,to{box-shadow:0 0 0 0 rgba(249,115,22,.55)}50%{box-shadow:0 0 0 5px rgba(249,115,22,0)}}.composer-el-fullscreen{align-items:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;padding:0;transition:background .1s,color .1s;width:20px}.composer-el-fullscreen--active,.composer-el-fullscreen:hover{background:var(--accent-fill);color:var(--accent-on-fill)}.composer-el-fullscreen--done{font-size:var(--fs-2);font-weight:700;letter-spacing:.03em;padding:0 7px;width:auto}.composer-el-theme-toggle{align-items:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;padding:0;transition:background .1s,color .1s;width:20px}.composer-el-theme-toggle:hover{background:var(--accent-fill);color:var(--accent-on-fill)}.composer-el-action-icon{display:block;height:13px;width:13px}.composer-save-banner{align-items:center;animation:composer-save-banner-in .18s ease-out;background:var(--bg-panel);border:1px solid var(--accent-green);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);color:var(--accent-green);display:flex;font-size:var(--fs-4);font-weight:600;gap:var(--space-2);left:50%;max-width:calc(100% - 40px);padding:var(--space-3) var(--space-5);position:absolute;top:8px;transform:translateX(-50%);white-space:nowrap;z-index:60}@keyframes composer-save-banner-in{0%{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%)}}.composer-el-body{display:flex;flex:1 1;flex-direction:column;min-height:0;overflow:hidden;padding:0}.composer-el-body .discussion-shell,.composer-el-body .rooms-runtime{border-radius:0 0 var(--radius-lg) var(--radius-lg);border:0}.composer-el-body .chart-el--table .table-scroll{border:0;border-radius:0}.composer-el-body .chart-el--table .table-pagination{border:0;border-radius:0 0 var(--radius-md) var(--radius-md)}.composer-element:has(.chart-el--table):after{border:1px solid;border-color:inherit;border-radius:inherit;content:"";inset:-1px;pointer-events:none;position:absolute;z-index:4}.composer-el-body .canvas2d-shell,.composer-el-body .oil-gas-sandbox,.composer-el-body .viewport3d-shell{border-radius:0 0 var(--radius-md) var(--radius-md);border:0}.composer-el-body .viewport3d-editor-header{border-radius:0}.composer-el-body .relu-map-visualization{-webkit-clip-path:inset(0 round 0 0 12px 12px)!important;clip-path:inset(0 round 0 0 12px 12px)!important}.resize-handle{background:var(--hover-border-color);border-radius:var(--radius-sm);opacity:0;position:absolute;transition:opacity .15s;z-index:20}.composer-element--selected .resize-handle,.composer-element:hover .resize-handle{opacity:1}.resize-handle--n{cursor:n-resize;top:-4px}.resize-handle--n,.resize-handle--s{height:8px;left:50%;transform:translateX(-50%);width:28px}.resize-handle--s{bottom:-4px;cursor:s-resize}.resize-handle--e{cursor:e-resize;right:-4px}.resize-handle--e,.resize-handle--w{height:28px;top:50%;transform:translateY(-50%);width:8px}.resize-handle--w{cursor:w-resize;left:-4px}.resize-handle--ne{cursor:ne-resize;top:-4px}.resize-handle--ne,.resize-handle--se{border-radius:var(--radius-circle);height:12px;right:-4px;width:12px}.resize-handle--se{bottom:-4px;cursor:se-resize}.resize-handle--sw{bottom:-4px;cursor:sw-resize}.resize-handle--nw,.resize-handle--sw{border-radius:var(--radius-circle);height:12px;left:-4px;width:12px}.resize-handle--nw{cursor:nw-resize;top:-4px}.composer-element--selected .resize-handle{background:var(--accent-fill)}.composer-layout--fullscreen-canvas2d .composer-element--fullscreen-active>.composer-el-header,.composer-layout--fullscreen-model-viewer .composer-element--fullscreen-active>.composer-el-header,.composer-layout--fullscreen-viewport3d .composer-element--fullscreen-active>.composer-el-header{min-height:var(--composer-fs-header-band)}.composer-panel{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:none;display:flex;flex-direction:column;flex-shrink:0;margin-left:var(--space-region);overflow:hidden;position:relative;width:260px}.composer-panel--fullscreen{margin-left:0;min-height:0;width:min(306px,23vw)}.composer-panel--fullscreen-split{width:min(306px,23vw)}.composer-layout--fullscreen-split-editor .composer-panel--fullscreen-split{background:transparent;border:0;border-radius:0;box-shadow:none;overflow:visible}.composer-panel--fullscreen-left{order:-1}.composer-panel--collapsed{overflow:hidden;width:32px}.composer-panel--save-target{background:var(--bg-panel-elevated);outline:2px solid hsla(0,0%,100%,.55)}.composer-panel--save-target:after{background:var(--accent-fill);border-radius:var(--radius-lg);color:var(--accent-on-fill);content:"Release to save graph";font-size:var(--fs-3);font-weight:600;left:50%;opacity:.92;padding:var(--space-2) var(--space-region);pointer-events:none;position:absolute;top:12px;transform:translateX(-50%);white-space:nowrap;z-index:var(--z-sticky)}.composer-drag-save-cursor{background:none;border-radius:var(--radius-md);color:#aaa;padding:5px var(--space-3);pointer-events:none;position:fixed;transform:translate(6px,6px);z-index:var(--z-drag-cursor)}.composer-drag-save-cursor,.composer-panel-toggle{align-items:center;display:flex;justify-content:center}.composer-panel-header{align-items:center;display:flex;flex-shrink:0;gap:0;padding-top:var(--space-2)}.composer-panel-toggle{align-items:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;margin:7px 2px 7px 8px;padding:0;transition:background .1s;width:20px}.composer-panel--fullscreen .composer-panel-toggle{display:none}.composer-panel-title{border-bottom:1px solid var(--border-color);font-size:var(--fs-5);font-weight:700;letter-spacing:.02em;padding:var(--space-5) 14px var(--space-3) 36px}.composer-panel-search{border-bottom:1px solid var(--border-color);padding:var(--space-4)}.composer-panel-blocks-scroll{display:flex;flex:1 1;flex-direction:column;min-height:0;overflow-y:auto}.composer-panel-search-input{background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:var(--fs-4);padding:5px 10px;width:100%}.composer-panel-grid{display:grid;grid-gap:var(--space-3);gap:var(--space-3);grid-template-columns:1fr 1fr;padding:var(--space-3) var(--space-region) var(--space-region)}.composer-template-card{align-items:center;background:color-mix(in srgb,var(--bg-subtle) 93%,color-mix(in srgb,var(--accent-line) 10%,transparent) 7%);border:1.5px solid var(--border-color);border-radius:var(--radius-md);cursor:-webkit-grab;cursor:grab;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5) var(--space-3) var(--space-4);transition:border-color .15s,box-shadow .15s,background .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.composer-template-card:hover{background:color-mix(in srgb,var(--accent-line) 8%,transparent);border-color:var(--accent-text);box-shadow:none}.template-icon-wrap{align-items:center;color:var(--accent-text);display:flex;height:72px;justify-content:center;width:72px}.template-svg,.template-svg--strip{height:100%;width:100%}.template-svg circle[fill="var(--accent-orange)"],.template-svg--strip circle[fill="var(--accent-orange)"]{display:none}.template-label{color:var(--text-secondary);font-size:var(--fs-3);font-weight:600;text-align:center;white-space:nowrap}.composer-panel-featured{padding:var(--space-region) var(--space-region) var(--space-2)}.composer-featured-card{align-items:center;background:linear-gradient(135deg,color-mix(in srgb,var(--accent-line) 6%,transparent) 0,color-mix(in srgb,var(--accent-line) 10%,transparent) 100%);border:1.5px solid var(--accent-line);border-radius:var(--radius-lg);cursor:-webkit-grab;cursor:grab;display:flex;gap:var(--space-region);padding:var(--space-region) var(--space-7);transition:box-shadow .15s,background .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.composer-featured-card:hover{background:color-mix(in srgb,var(--accent-line) 12%,transparent);box-shadow:none}.composer-panel-tabs{display:flex;flex:1 1;gap:var(--space-1);padding:0 var(--space-2) 0 0}.composer-panel-tab{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);cursor:pointer;flex:1 1;font-size:var(--fs-4);font-weight:600;letter-spacing:.02em;padding:7px 4px;transition:color .15s,border-color .15s}.composer-panel-tab--active{border-bottom-color:var(--accent-text);color:var(--accent-text)}.composer-panel-editing{display:flex;flex:1 1;flex-direction:column;gap:0;min-height:0;overflow:hidden;padding:0}.composer-panel--fullscreen .composer-panel-editing{padding-top:var(--space-3)}.composer-panel--fullscreen .composer-panel-editing--fullscreen-split{gap:0;height:100%;padding:0}.composer-panel-editing-manager{flex-shrink:0;padding:var(--space-3) var(--space-3) 0}.composer-panel-editing-scroll-slot--fullscreen-split{height:100%}.composer-panel-editing--fullscreen-split .composer-panel-editing-scroll-slot--fullscreen-split{height:auto}.composer-panel-editing-scroll-slot--fullscreen-split>.chart-el--controls-only,.composer-panel-editing-scroll-slot--fullscreen-split>.chart-el--controls-only>.el-controls{height:100%}.composer-panel-editing-section{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3)}.composer-panel-editing-scroll-slot{display:flex;flex-direction:column;flex:1 1;min-height:0;overflow:hidden}.composer-panel-editing .split-pane-group>.split-pane{background:transparent;border:none;border-radius:0}.composer-panel-editing .split-pane-group>.split-handle{background:var(--bg-subtle);border-bottom:1px solid var(--border-color);border-top:1px solid var(--border-color);position:relative;transition:background .12s}.composer-panel-editing .split-pane-group>.split-handle:before{box-shadow:0 2px 0 var(--border-color)}.composer-panel-editing .split-pane-group>.split-handle:active,.composer-panel-editing .split-pane-group>.split-handle:hover{background:var(--bg-hover)}.composer-panel-editing .split-pane-group>.split-handle:active:before,.composer-panel-editing .split-pane-group>.split-handle:hover:before{box-shadow:0 2px 0 var(--accent-line)}.composer-panel-editing:not(.composer-panel-editing--fullscreen-split) .el-controls{background:transparent;border:none;border-radius:0;box-shadow:none;padding-left:calc(var(--space-3) + var(--scrollbar-size) * 2);padding-right:var(--space-3)}.composer-panel-editing:not(.composer-panel-editing--fullscreen-split) .composer-panel-editing-section{background:transparent;border:1px solid transparent;border-radius:var(--radius-lg);gap:var(--space-3);margin:0 var(--space-3);padding:var(--space-3) 0;transition:background-color .25s ease,border-color .25s ease,padding .25s ease}.composer-panel-editing:not(.composer-panel-editing--fullscreen-split) .composer-panel-editing-section:hover{background:var(--bg-subtle);border:1px solid var(--border-color);padding:var(--space-3)}.composer-panel-editing-scroll-slot>.chart-el--controls-only{display:flex;flex:1 1;min-height:0;overflow:hidden}.composer-panel-editing-scroll-slot>.chart-el--controls-only>.el-controls{flex:1 1;min-height:0;overflow-y:auto;padding-bottom:var(--space-8)}.composer-panel-editing-scroll-slot>.discussion-block{display:flex;flex:1 1;min-height:0;overflow:hidden}.composer-panel-editing-scroll-slot>.discussion-block>.discussion-controls{flex:1 1;min-height:0;overflow-y:auto;padding-bottom:var(--space-8)}.composer-panel-editing-scroll-slot>.rooms-block{display:flex;flex:1 1;min-height:0;overflow:hidden}.composer-panel-editing-scroll-slot>.rooms-block>.rooms-controls{flex:1 1;min-height:0;overflow-y:auto;padding-bottom:var(--space-8)}.composer-panel-editing .chart-el--strip .strip-metrics{flex-direction:column;flex-wrap:nowrap;overflow:visible}.composer-panel-editing .chart-el--strip .strip-metric-item{min-width:0;overflow:visible;padding:0;width:100%}.composer-panel-editing .chart-el--strip .strip-fields{margin-top:0;padding:var(--space-3) var(--space-5) var(--space-4)}.composer-panel-editing-empty{background:var(--bg-subtle);border:1px dashed var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--fs-4);line-height:1.5;padding:var(--space-7) var(--space-4);text-align:center}.composer-saved-list{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--space-5);min-height:0;overflow-x:hidden;overflow-y:auto;padding:var(--space-5) var(--space-5) var(--space-7)}.composer-saved-empty{flex-direction:column;gap:var(--space-3);padding:28px var(--space-5) 24px;text-align:center}.composer-saved-empty,.composer-saved-empty-icon{align-items:center;color:var(--text-muted);display:flex}.composer-saved-empty-icon{background:var(--bg-dark);border-radius:var(--radius-lg);height:52px;justify-content:center;margin-bottom:var(--space-2);width:52px}.composer-saved-empty-title{color:var(--text-secondary);font-size:var(--fs-4);font-weight:600;letter-spacing:.01em}.composer-saved-empty-hint{color:var(--text-muted);font-size:var(--fs-3);line-height:1.5;max-width:180px}.composer-saved-card{background:var(--bg-subtle);border:1.5px solid var(--border-color);border-radius:var(--radius-md);cursor:-webkit-grab;cursor:grab;flex-shrink:0;overflow:hidden;position:relative;transition:border-color .15s,box-shadow .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.composer-saved-card:hover{border-color:var(--accent-text);box-shadow:none}.composer-saved-thumb-wrap{background:var(--bg-panel);overflow:hidden;position:relative;width:100%}.composer-saved-thumb-inner{left:0;pointer-events:none;position:absolute;top:0;transform-origin:top left}.composer-saved-card-info{align-items:center;background:var(--bg-subtle);border-top:1px solid var(--border-color);display:flex;gap:var(--space-3);justify-content:space-between;padding:var(--space-3) var(--space-4) var(--space-3) var(--space-5)}.composer-saved-card--no-thumb .composer-saved-card-info{border-top:0}.composer-saved-card-meta{flex-direction:column;gap:var(--space-1);min-width:0}.composer-saved-card-title{font-size:var(--fs-4);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer-saved-card-type{color:var(--text-secondary);font-size:var(--fs-2);text-transform:capitalize}.composer-saved-card-meta{align-items:center;display:flex;gap:var(--space-2)}.composer-saved-shared-badge{font-size:var(--fs-1);padding:var(--space-px) var(--space-2)}.composer-saved-share-toggle{background:none;border:none;color:var(--accent-text);cursor:pointer;font-size:var(--fs-2);margin-top:var(--space-1);padding:0;text-align:left}.composer-saved-share-toggle:hover{text-decoration:underline}.composer-saved-card-desc{color:var(--text-secondary);display:-webkit-box;font-size:var(--fs-2);line-height:1.4;margin-top:var(--space-px);overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-break:break-word}.composer-saved-card--editing,.composer-saved-card--editing:hover{border-color:var(--accent-amber)}.composer-saved-delete{align-items:center;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;display:flex;flex-shrink:0;font-size:var(--fs-3);font-weight:600;height:22px;justify-content:center;padding:0 var(--space-4);transition:background .1s,color .1s,border-color .1s}.composer-saved-delete:hover{background:var(--accent-red);border-color:var(--accent-red);color:#fff}.composer-saved-delete-float,.composer-saved-duplicate-float,.composer-saved-edit-float{align-items:center;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;display:flex;height:24px;justify-content:center;opacity:0;padding:0;pointer-events:none;position:absolute;top:8px;transition:background .1s,color .1s,border-color .1s,opacity .12s;width:24px;z-index:3}.composer-saved-edit-float{right:64px}.composer-saved-duplicate-float{right:36px}.composer-saved-delete-float{right:8px}.composer-saved-card:focus-within .composer-saved-delete-float,.composer-saved-card:focus-within .composer-saved-duplicate-float,.composer-saved-card:focus-within .composer-saved-edit-float,.composer-saved-card:hover .composer-saved-delete-float,.composer-saved-card:hover .composer-saved-duplicate-float,.composer-saved-card:hover .composer-saved-edit-float{opacity:1;pointer-events:auto}.composer-saved-delete-float-icon,.composer-saved-edit-float-icon{height:14px;width:14px}.composer-saved-delete-float:hover{background:var(--accent-red);border-color:var(--accent-red);color:#fff}.composer-saved-duplicate-float:hover,.composer-saved-edit-float:hover{background:var(--accent-fill);border-color:var(--accent-text);color:var(--accent-on-fill)}.composer-saved-delete-float:focus-visible,.composer-saved-duplicate-float:focus-visible,.composer-saved-edit-float:focus-visible{opacity:1;outline:2px solid var(--accent-line);outline-offset:1px;pointer-events:auto}.featured-card-icon{align-items:center;color:var(--accent-text);display:flex;flex-shrink:0;height:36px;width:64px}.featured-card-icon svg{height:100%;width:100%}.featured-card-info{display:flex;flex-direction:column;gap:3px}.featured-card-label{color:var(--accent-text);font-size:var(--fs-5);font-weight:700}.featured-card-desc{color:var(--text-secondary);font-size:var(--fs-3);line-height:1.3}.composer-panel-subtabs{border-bottom:1px solid var(--border-color);display:flex;flex-shrink:0;gap:var(--space-1);padding:var(--space-3) var(--space-4) 0}.composer-panel-subtab{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);cursor:pointer;flex:1 1;font-size:var(--fs-4);font-weight:600;letter-spacing:.01em;padding:var(--space-3) var(--space-2) var(--space-4);transition:color .15s,border-color .15s}.composer-panel-subtab:hover{color:var(--text-primary)}.composer-panel-subtab--active{border-bottom-color:var(--accent-text);color:var(--accent-text)}.composer-panel-section-label{align-items:center;color:var(--text-muted);display:flex;flex-shrink:0;font-size:var(--fs-2);font-weight:700;gap:var(--space-3);letter-spacing:.08em;padding:var(--space-5) var(--space-region) var(--space-2);text-transform:uppercase}.composer-panel-section-label--collapsible{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.composer-panel-section-label--collapsible:hover{opacity:.8}.composer-panel-section-chevron{display:inline-block;font-size:var(--fs-4);line-height:1;transition:transform .18s ease}.composer-panel-section-chevron--collapsed{transform:rotate(-90deg)}.composer-panel-section-label--industrial{color:var(--accent-amber)}.composer-panel-section-badge{background:var(--accent-amber);border-radius:var(--radius-lg);color:#fff;font-size:var(--fs-1);font-weight:700;letter-spacing:.06em;padding:1px 5px;text-transform:uppercase}.composer-panel-empty{color:var(--text-secondary);flex-shrink:0;font-size:var(--fs-4);padding:var(--space-9);text-align:center}.composer-panel-footer{background:var(--bg-panel);border-top:1px solid var(--border-color);flex-shrink:0;padding:var(--space-5)}.composer-store-btn{align-items:center;background:var(--accent-fill);border:none;border-radius:var(--radius-md);color:var(--accent-on-fill);cursor:pointer;display:flex;font-size:var(--fs-5);font-weight:600;gap:7px;justify-content:center;padding:9px 0;transition:background .15s,opacity .15s;width:100%}.composer-store-btn-icon{flex-shrink:0;height:16px;width:16px}.composer-layout--fullscreen .composer-panel-editing-section{display:none}.composer-layout--fullscreen .composer-panel-editing-manager .composer-panel-editing-section{display:flex}.composer-layout--fullscreen .composer-panel-editing{gap:0;padding:0}.composer-panel-assistant{display:flex;flex:1 1;flex-direction:column;min-height:0}.composer-panel--fullscreen .composer-panel-editing{min-height:0}