:root{font-family:Inter,SF Pro Display,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;line-height:1.4;font-weight:400;color:#f6f7fb;background-color:#05060a;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 20% -20%,#182045,transparent 45%),radial-gradient(circle at 80% 0%,#11152b,transparent 40%),#05060a;color:inherit}#root{min-height:100vh}button{font-family:inherit;border:none;background:transparent;color:inherit;cursor:pointer}button:focus-visible,.file-input:focus-visible{outline:2px solid #6ed0ff;outline-offset:2px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.app{position:relative;min-height:100vh;width:100%;overflow:hidden}.eyebrow{font-size:.85rem;letter-spacing:.2rem;text-transform:uppercase;margin:0;color:#ffffff8c}.panel__header{display:flex;flex-direction:column;gap:.4rem}.panel__header h1{font-size:clamp(1.6rem,3vw,2.4rem);margin:.25rem 0}.subtitle{color:#ffffffb3;margin:0}.app[data-theme=light]{color:#101b2d}.app[data-theme=light] .eyebrow{color:#0f1d338c}.app[data-theme=light] .subtitle{color:#0f1d33b3}.section-label{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:#ffffff8c;margin:0}.sample-library{display:flex;flex-direction:column;gap:.75rem;padding:1rem 1.1rem;border-radius:18px;border:1px solid rgba(255,255,255,.08);background:#070912b3}.sample-library__header{display:flex;justify-content:space-between;align-items:center}.sample-library__count{min-width:2.5rem;text-align:center;padding:.15rem .5rem;border-radius:999px;font-size:.85rem;font-weight:600;color:#05060ad9;background:linear-gradient(120deg,#6ed0ff,#9bfddc)}.sample-library__list{display:flex;flex-wrap:wrap;gap:.5rem;overflow-y:auto;padding-right:.25rem}.sample-library__empty{font-size:.85rem;color:#ffffffa6}.sample-library__empty code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.75rem}.sample-card{border:1px solid rgba(255,255,255,.16);border-radius:16px;padding:.75rem .95rem;background:#ffffff09;color:inherit;text-align:left;min-width:150px;flex:1 1 calc(50% - .5rem);display:flex;flex-direction:column;gap:.35rem;transition:border-color .2s ease,background .2s ease,transform .2s ease}.sample-card:hover:not(:disabled){border-color:#ffffff59;background:#ffffff14;transform:translateY(-1px)}.sample-card__label{font-weight:600;font-size:.95rem}.sample-card__meta{font-size:.8rem;color:#ffffff8c}.app[data-theme=light] .section-label{color:#0f1d33a6}.viewer{position:relative;width:100%;height:100vh;border-radius:0;border:none;background:radial-gradient(150% 120% at 70% 0%,#202742,#0c0f1d 55%,#05060a);overflow:hidden;user-select:none;-webkit-user-select:none;-ms-user-select:none;-webkit-touch-callout:none;touch-action:none}.viewer--active{box-shadow:inset 0 0 0 3px #4694ff59}.viewer__canvas{position:absolute;inset:0}.viewer__placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;pointer-events:none;font-size:1.05rem;color:#ffffffd9;text-align:center;padding:0 clamp(1.5rem,8vw,6rem);user-select:none;-webkit-user-select:none}.viewer__placeholder .muted{font-size:.9rem;color:#fff9}.viewer__drop-hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0b63ff1f;border:2px dashed rgba(112,166,255,.6);color:#bcd8ff;font-weight:600;font-size:1rem;letter-spacing:.05em;text-transform:uppercase;pointer-events:none;z-index:2}.viewer__loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;background:#05060ab3;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#f6f8ff;font-size:1rem;letter-spacing:.04em;text-transform:uppercase;z-index:3}.viewer__loading-spinner{width:40px;height:40px;border-radius:50%;border:4px solid rgba(130,152,255,.4);border-top-color:#6ed0ff;animation:spin .9s linear infinite}.panel-toggle{position:fixed;top:clamp(1rem,2vw,2.5rem);left:clamp(1rem,3vw,3.5rem);z-index:5;border:1px solid rgba(255,255,255,.25);background:#090c1acc;color:#f2f4ff;padding:.5rem 1.1rem;border-radius:999px;font-weight:600;letter-spacing:.02em;box-shadow:0 12px 25px #00000073;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);display:inline-flex;align-items:center;gap:.35rem;transition:opacity .2s ease,transform .2s ease}.theme-toggle{position:fixed;top:clamp(1rem,2vw,2.5rem);right:clamp(1rem,3vw,3.5rem);z-index:6;border:1px solid rgba(255,255,255,.25);background:#090c1acc;color:#f2f4ff;padding:.5rem 1rem;border-radius:999px;font-weight:600;letter-spacing:.02em;box-shadow:0 12px 25px #00000073;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);display:inline-flex;align-items:center;gap:.4rem;cursor:pointer;transition:opacity .2s ease,transform .2s ease}.theme-toggle__icon{font-size:.9rem}.theme-toggle:hover,.panel-toggle:hover{opacity:.9}.theme-toggle:active,.panel-toggle:active{transform:translateY(1px)}.app[data-theme=light] .viewer{background:radial-gradient(120% 90% at 50% -15%,#fefefe,#dfe8f4,#c7d7e8);border:1px solid rgba(15,29,51,.08)}.app[data-theme=light] .viewer--active{box-shadow:inset 0 0 0 3px #668bcc59}.app[data-theme=light] .viewer__placeholder{color:#101b2dd9}.app[data-theme=light] .viewer__placeholder .muted{color:#101b2d99}.app[data-theme=light] .viewer__drop-hint{background:#4e96ff1f;border-color:#4e96ff73;color:#23518c}.app[data-theme=light] .viewer__loading{background:#ffffffd9;color:#1d2c44}.app[data-theme=light] .viewer__loading-spinner{border-color:#5578b84d;border-top-color:#1e8fe3}.app[data-theme=light] .panel-toggle,.app[data-theme=light] .theme-toggle{border:1px solid rgba(15,29,51,.15);background:#ffffffeb;color:#14243a;box-shadow:0 15px 35px #111e3126}.app[data-theme=light] .theme-toggle__icon{color:#f5a500}.app[data-theme=light] .panel-toggle:hover,.app[data-theme=light] .theme-toggle:hover{opacity:1;background:#fffffffa}@media(max-width:768px){.viewer{min-height:100vh}.panel-toggle{left:1rem;top:1rem}.theme-toggle{right:1rem;top:1rem}}.control-panel{position:absolute;top:clamp(1rem,2vw,2.5rem);left:clamp(1rem,3vw,3.5rem);width:min(380px,90vw);max-height:calc(100vh - (2*clamp(1rem,2vw,2.5rem)));overflow-y:auto;display:flex;flex-direction:column;gap:1.25rem;padding:3.5rem 1.5rem 1.5rem;border-radius:28px;border:1px solid rgba(255,255,255,.08);background:#05070fd9;box-shadow:0 25px 60px #0000008c;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);z-index:3;transition:transform .25s ease,opacity .25s ease;pointer-events:auto}.panel-close{position:absolute;top:1rem;left:1rem;border:1px solid rgba(255,255,255,.2);background:#00000059;color:#fff;padding:.35rem .9rem;border-radius:999px;font-weight:600;font-size:.95rem;cursor:pointer;transition:opacity .2s ease}.panel-close:hover{opacity:.85}.control-panel--open{opacity:1;pointer-events:auto;transform:translate(0)}.control-panel--collapsed{opacity:0;pointer-events:none;transform:translate(calc(-100% - 2rem))}.controls{display:flex;flex-direction:column;gap:.85rem}.color-controls{display:flex;flex-direction:column;gap:.8rem;padding:1rem 1.25rem;border-radius:18px;background:#0c0f1aa6;border:1px solid rgba(255,255,255,.07)}.color-input{display:flex;align-items:center;justify-content:space-between;gap:1rem}.color-input label{font-size:.9rem;letter-spacing:.05em;text-transform:uppercase;color:#ffffffb3}.color-input input[type=color]{width:48px;height:32px;border:none;border-radius:8px;background:transparent;cursor:pointer}.selection-info{display:flex;flex-direction:column;gap:.5rem}.selection-label{font-size:.9rem;color:#ffffffb8}.selection-actions{display:flex;gap:.5rem;flex-wrap:wrap}.selection-actions .primary,.selection-actions .ghost{flex:1}.color-palette{display:flex;flex-direction:column;gap:.75rem;padding:1rem 1.25rem 1.1rem;border-radius:18px;background:#0c0f1aa6;border:1px solid rgba(255,255,255,.07)}.color-palette__header{display:flex;justify-content:space-between;align-items:center;gap:.75rem}.color-palette__list{display:flex;flex-wrap:wrap;gap:.5rem}.color-swatch{flex:1 1 calc(50% - .5rem);min-width:110px;border-radius:14px;border:1px solid rgba(255,255,255,.2);padding:.6rem .85rem;color:#08111d;font-weight:600;text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;justify-content:space-between;gap:.35rem;cursor:pointer;transition:border-color .15s ease,transform .15s ease}.color-swatch:hover{border-color:#ffffff73;transform:translateY(-1px)}.color-swatch__value{font-size:.72rem}.color-swatch__remove{font-size:1rem;opacity:.7;line-height:1}.color-swatch__remove:hover{opacity:1}.color-palette__empty{margin:0;font-size:.85rem;color:#ffffffa6}.scene-state-actions{display:flex;flex-direction:column;gap:.75rem;padding:1rem 1.25rem 1.1rem;border-radius:18px;background:#0c0f1aa6;border:1px solid rgba(255,255,255,.07)}.scene-state-actions__buttons{display:flex;gap:.5rem;flex-wrap:wrap}.control-panel--mobile{position:fixed;top:1rem;left:1rem;right:1rem;bottom:auto;width:auto;max-height:calc(100vh - 2.5rem);overflow-y:auto;border-radius:22px;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px)}.control-panel--mobile.control-panel--collapsed{transform:translate(calc(-100% - 1.5rem));opacity:0;pointer-events:none}.control-panel--mobile.control-panel--open{transform:translate(0);opacity:1}.file-input{display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;border-radius:999px;background:linear-gradient(120deg,#467bff,#6ed0ff);color:#0b1020;font-weight:600;padding:.9rem 1.8rem;cursor:pointer;transition:transform .15s ease;width:100%}.file-input:hover{transform:translateY(-1px)}.file-input input{position:absolute;inset:0;opacity:0;cursor:pointer}.file-input[data-disabled=true]{opacity:.45;cursor:not-allowed}.file-input[data-disabled=true] input{cursor:not-allowed}.file-input[data-disabled=true] span{pointer-events:none}.controls button.secondary:hover:not(:disabled){background:#ffffff1f;border-color:#fff6}.ghost,.secondary{padding:.8rem 1.4rem;border-radius:999px;border:1px solid rgba(255,255,255,.15);background:transparent;color:#fff;font-weight:500;cursor:pointer;transition:border-color .2s ease,color .2s ease}.ghost:hover:not(:disabled){border-color:#fff6;color:#fff}button:disabled{opacity:.45;cursor:not-allowed}.primary{padding:.85rem 1.6rem;border-radius:999px;border:none;background:linear-gradient(120deg,#467bff,#6ed0ff);color:#0b1020;font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .2s ease}.primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 25px #467bff59}.primary:disabled{opacity:.5}.loader{width:20px;height:20px;border-radius:50%;border:3px solid rgba(255,255,255,.2);border-top-color:#6ed0ff;animation:spin .8s linear infinite;align-self:flex-start}.error-banner{padding:.9rem 1.2rem;border-radius:12px;border:1px solid rgba(255,102,133,.5);background:#ff446914;color:pink;font-size:.95rem}.app[data-theme=light] .control-panel{border:1px solid rgba(15,29,51,.08);background:#fffffff0;box-shadow:0 25px 55px #101d3026;color:#0f1d33}.app[data-theme=light] .panel-close{border-color:#0f1d3326;background:#ffffffd1;color:#0f1d33}.app[data-theme=light] .color-controls,.app[data-theme=light] .color-palette,.app[data-theme=light] .scene-state-actions{background:#f8fafff2;border:1px solid rgba(15,29,51,.08)}.app[data-theme=light] .color-input label,.app[data-theme=light] .selection-label,.app[data-theme=light] .color-palette__empty{color:#0f1d33bf}.app[data-theme=light] .scene-state-actions .section-label,.app[data-theme=light] .color-palette .section-label{color:#0f1d33a6}.app[data-theme=light] .sample-library{background:#ffffffe6;border:1px solid rgba(15,29,51,.08)}.app[data-theme=light] .sample-card{border-color:#0f1d331f;background:#0e182c05}.app[data-theme=light] .sample-card:hover:not(:disabled){border-color:#0f1d3340;background:#0e182c0d}.app[data-theme=light] .sample-card__meta{color:#0f1d338c}.app[data-theme=light] .sample-library__empty{color:#0f1d33a6}.app[data-theme=light] .ghost,.app[data-theme=light] .secondary{border:1px solid rgba(15,29,51,.2);color:#13243a}.app[data-theme=light] .ghost:hover:not(:disabled),.app[data-theme=light] .secondary:hover:not(:disabled){border-color:#0f1d3366;color:#0f1d33}.app[data-theme=light] .error-banner{border-color:#cd585880;background:#cd585814;color:#8b1c1c}.context-menu{position:fixed;z-index:6;min-width:240px;border-radius:12px;border:1px solid rgba(255,255,255,.16);background:#070912e6;box-shadow:0 20px 45px #0000008c;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:.4rem;user-select:none;-webkit-user-select:none}.context-menu__group{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.4rem .75rem .6rem}.context-menu__label{margin:0;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:#ffffff8c}.context-menu input[type=color]{width:44px;height:28px;border:1px solid rgba(255,255,255,.2);border-radius:8px;background:transparent;cursor:pointer;padding:0}.context-menu button{width:100%;background:transparent;border:none;color:#f4f6ff;text-align:left;font-size:.92rem;font-weight:500;padding:.6rem .85rem;border-radius:10px;cursor:pointer;transition:background .15s ease,color .15s ease}.context-menu button:hover{background:#ffffff14;color:#fff}.context-menu__palette{padding:.4rem .35rem .65rem;border-top:1px solid rgba(255,255,255,.08);border-bottom:1px solid rgba(255,255,255,.08)}.context-menu__swatches{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.35rem}.context-menu__swatch{flex:1 1 calc(50% - .35rem);min-width:90px;border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:.45rem .6rem;font-size:.78rem;font-weight:600;color:#04070d;background:var(--swatch-color, #fff);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;transition:transform .15s ease,border-color .15s ease}.context-menu__swatch:hover:not(:disabled){border-color:#ffffff59;transform:translateY(-1px)}.context-menu__swatch:disabled{opacity:.45;cursor:not-allowed}.app[data-theme=light] .context-menu{border:1px solid rgba(15,29,51,.12);background:#fffffffa;box-shadow:0 20px 45px #111e312e;color:#0f1d33}.app[data-theme=light] .context-menu__label{color:#0f1d3399}.app[data-theme=light] .context-menu button{color:#0f1d33}.app[data-theme=light] .context-menu button:hover{background:#0f1d3314;color:#0a1a2e}.app[data-theme=light] .context-menu__swatch{border:1px solid rgba(15,29,51,.15);color:#0a1f36}.app[data-theme=light] .context-menu__palette{border-top:1px solid rgba(15,29,51,.08);border-bottom:1px solid rgba(15,29,51,.08)}.model-tree{display:flex;flex-direction:column;gap:.6rem;padding:1rem 1.1rem;border-radius:18px;border:1px solid rgba(255,255,255,.08);background:#080a14b3}.model-tree__header{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.model-tree__count{font-size:.85rem;font-weight:600;color:#ffffffbf}.model-tree__list{display:flex;flex-direction:column;gap:.35rem;max-height:280px;overflow-y:auto}.model-tree__item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:.55rem .75rem;background:#ffffff05;color:#f4f6ff;cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease}.model-tree__item[data-selected=true]{border-color:#7ca8ff8c;background:#7ca8ff1f}.model-tree__item:hover:not(:disabled){border-color:#ffffff59;background:#ffffff14}.model-tree__item:disabled{opacity:.5;cursor:not-allowed}.model-tree__item-label{font-size:.9rem;font-weight:500;flex:1}.model-tree__item-muted{font-size:.75rem;color:#ffffff8c;text-transform:uppercase;letter-spacing:.08em}.model-tree__empty{margin:0;font-size:.85rem;color:#fff9}.app[data-theme=light] .model-tree{background:#ffffffeb;border:1px solid rgba(15,29,51,.08)}.app[data-theme=light] .model-tree__count{color:#0f1d33a6}.app[data-theme=light] .model-tree__item{border:1px solid rgba(15,29,51,.12);background:#0f1d3305;color:#0f1d33}.app[data-theme=light] .model-tree__item[data-selected=true]{border-color:#4570be99;background:#4570be1f}.app[data-theme=light] .model-tree__item:hover:not(:disabled){border-color:#0f1d3359;background:#0f1d3314}.app[data-theme=light] .model-tree__item-muted{color:#0f1d338c}.app[data-theme=light] .model-tree__empty{color:#0f1d33a6}
