:root{color-scheme:light;--bg: #f2f2f2;--panel: rgba(255, 255, 255, .93);--panel-strong: rgba(255, 255, 255, .98);--text: #111111;--muted: #666666;--line: rgba(0, 0, 0, .14);--line-strong: rgba(0, 0, 0, .28);--button: rgba(0, 0, 0, .05);--button-active: #111111;--button-active-text: #ffffff;--focus: #000000;--shadow: 0 24px 70px rgba(0, 0, 0, .14);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.4}:root[data-theme=dark]{color-scheme:dark;--bg: #0d0d0d;--panel: rgba(20, 20, 20, .93);--panel-strong: rgba(26, 26, 26, .98);--text: #f5f5f5;--muted: #a3a3a3;--line: rgba(255, 255, 255, .15);--line-strong: rgba(255, 255, 255, .28);--button: rgba(255, 255, 255, .08);--button-active: #f5f5f5;--button-active-text: #0d0d0d;--focus: #ffffff;--shadow: 0 24px 70px rgba(0, 0, 0, .32)}*{box-sizing:border-box}html{background:var(--bg)}body{min-width:320px;min-height:100dvh;margin:0;overflow:hidden;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{color:inherit}button,select{min-height:42px}.app-shell{position:relative;min-height:100dvh;isolation:isolate}.scene-canvas{position:fixed;top:0;right:0;bottom:0;left:0;display:block;width:100vw;height:100dvh;touch-action:none}.topbar{position:fixed;z-index:5;top:16px;right:16px;left:16px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;pointer-events:none}.topbar>*{min-width:0}.brand,.top-actions,.control-panel,.drop-overlay{border:1px solid var(--line);box-shadow:var(--shadow);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.brand,.top-actions{pointer-events:auto;display:flex;align-items:center;min-height:48px;background:var(--panel);border-radius:8px}.brand{-webkit-appearance:none;-moz-appearance:none;appearance:none;gap:10px;padding:0 15px;cursor:pointer}.brand-icon,.heading-icon,.drop-icon{display:inline-grid;place-items:center;color:var(--text)}.logo-mark{width:22px;height:22px}.logo-svg{display:block;width:22px;height:22px;overflow:visible;stroke-width:2}.logo-flat,.logo-top-face,.logo-cube{transform-box:fill-box;transform-origin:center}.logo-flat{animation:logo-flat-to-top 1.28s cubic-bezier(.2,.72,.18,1) .18s both}.logo-top-face{opacity:0;stroke-dasharray:1;stroke-dashoffset:1;visibility:hidden;animation:logo-top-face 1.28s cubic-bezier(.2,.72,.18,1) .18s both}.logo-cube{opacity:0;animation:logo-cube-extrude 1.28s cubic-bezier(.2,.72,.18,1) .18s both}.logo-cube path{stroke-dasharray:1;stroke-dashoffset:1;animation:logo-cube-lines 1.28s cubic-bezier(.2,.72,.18,1) .18s both}.brand:hover .logo-flat{animation:logo-flat-to-top 1.28s cubic-bezier(.2,.72,.18,1) infinite}.brand:hover .logo-top-face{animation:logo-top-face 1.28s cubic-bezier(.2,.72,.18,1) infinite}.brand:hover .logo-cube{animation:logo-cube-extrude 1.28s cubic-bezier(.2,.72,.18,1) infinite}.brand:hover .logo-cube path{animation:logo-cube-lines 1.28s cubic-bezier(.2,.72,.18,1) infinite}.brand h1,.panel-heading h2,.control-section h3{margin:0;letter-spacing:0}.brand h1{font-size:1rem;font-weight:760;white-space:nowrap}.top-actions{gap:6px;padding:5px;flex:0 0 auto}.button,.toggle-button,.panel-action,.segment,.swatch{border:1px solid transparent;border-radius:8px;cursor:pointer;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.button:hover,.toggle-button:hover,.panel-action:hover,.segment:hover,.swatch:hover{transform:translateY(-1px)}.button:focus-visible,.toggle-button:focus-visible,.panel-action:focus-visible,.segment:focus-visible,.swatch:focus-visible,textarea:focus-visible,input:focus-visible{outline:3px solid color-mix(in srgb,var(--focus),transparent 58%);outline-offset:2px}select:focus-visible{outline:2px solid var(--line-strong);outline-offset:2px}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:42px;height:42px;padding:0 12px;background:transparent}a.button{color:inherit;text-decoration:none}.button:hover{background:var(--button)}.button.ready-download{background:var(--button-active);border-color:var(--button-active);color:var(--button-active-text)}.button.ready-download:hover{background:var(--button-active)}.button:disabled{cursor:progress;opacity:.66}.button:disabled:hover{transform:none}.button[hidden]{display:none}.format-select-wrap{position:relative;display:inline-flex;align-items:center;width:86px;height:42px}.format-select{width:100%;height:42px;min-height:42px;padding:0 40px 0 12px;border:1px solid var(--line);border-radius:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:var(--text);cursor:pointer}.format-select-icon{position:absolute;right:14px;display:inline-grid;place-items:center;width:18px;height:18px;color:var(--text);pointer-events:none}.format-select:hover{background:var(--button)}.format-select:focus-visible{background:var(--button);border-color:var(--line-strong)}.icon-only{width:42px;padding:0}.icon{flex:0 0 auto;stroke-width:2}.control-panel{position:fixed;z-index:4;top:86px;bottom:16px;left:16px;display:flex;width:min(360px,calc(100vw - 32px));overflow:hidden;background:var(--panel);border-radius:8px;pointer-events:auto;transition:left .18s ease,right .18s ease,width .18s ease,height .18s ease}.control-panel{flex-direction:column}.control-panel.dock-right{right:16px;left:auto}.control-panel.collapsed{bottom:auto;width:174px;height:54px}.control-panel.collapsed #dockButton,.control-panel.collapsed .panel-body{display:none}.control-panel.collapsed .panel-title{display:grid;grid-template-columns:20px 1fr}.control-panel.collapsed .panel-title p{display:none}.control-panel.collapsed .panel-heading{display:flex;align-items:center;justify-content:space-between;height:100%;padding:8px 9px 8px 13px;border-bottom:0}.control-panel.collapsed .panel-actions{gap:0}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 18px 14px;background:var(--panel-strong);border-bottom:1px solid var(--line)}.panel-title{display:grid;grid-template-columns:20px 1fr;gap:4px 10px;align-items:center;min-width:0}.panel-heading h2{font-size:.95rem;font-weight:760}.panel-heading p{grid-column:2;min-height:18px;margin:0;color:var(--muted);font-size:.78rem}.panel-actions{display:flex;flex:0 0 auto;gap:4px}.panel-action{display:inline-grid;place-items:center;width:34px;height:34px;min-height:34px;padding:0;background:transparent;border-color:var(--line)}.panel-action:hover{background:var(--button)}.panel-body{min-width:0;overflow:auto;padding:6px 18px 18px;scrollbar-width:thin}.control-section{min-width:0;padding:15px 0;border-bottom:1px solid var(--line)}.control-section:last-child{border-bottom:0}.control-section h3{margin-bottom:10px;color:var(--muted);font-size:.72rem;font-weight:780;text-transform:uppercase}.section-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.stats{color:var(--muted);font-size:.75rem;white-space:nowrap}.segmented{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding:4px;background:#0000000f;border:1px solid var(--line);border-radius:8px}.segment{min-width:0;min-height:36px;padding:0 8px;overflow:hidden;background:transparent;color:var(--muted);font-size:.82rem;text-overflow:ellipsis;white-space:nowrap}.segment.active{background:var(--button-active);color:var(--button-active-text)}.sample-segment{display:grid;place-items:center;min-height:58px;padding:6px}.sample-thumb{display:grid;place-items:center;width:100%;height:42px;color:currentColor}.sample-thumb svg{display:block;width:min(100%,58px);height:100%}.sample-thumb svg,.sample-thumb svg *{fill:currentColor}textarea{display:block;width:100%;min-height:118px;resize:vertical;padding:12px;border:1px solid var(--line);border-radius:8px;background:#ffffff94;color:var(--text);font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.78rem;line-height:1.5}:root[data-theme=dark] textarea{background:#ffffff0f}.control-grid{display:grid;gap:14px}.range-control{display:grid;grid-template-columns:1fr auto;gap:8px;color:var(--muted);font-size:.84rem}.range-control output{color:var(--text);font-variant-numeric:tabular-nums}input[type=range]{grid-column:1 / -1;width:100%;min-height:28px;accent-color:var(--text)}.swatches{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:12px}.swatch{position:relative;aspect-ratio:1;min-height:42px;background:var(--swatch);border-color:var(--line-strong)}.swatch.active:after{position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:2px solid rgba(255,255,255,.86);border-radius:6px;content:""}.custom-color-control{display:grid;grid-template-columns:1fr 44px auto;gap:10px;align-items:center;margin-bottom:12px;color:var(--muted);font-size:.84rem}.custom-color-control input{width:44px;height:36px;min-height:36px;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:transparent;cursor:pointer}.custom-color-control input::-webkit-color-swatch-wrapper{padding:4px}.custom-color-control input::-webkit-color-swatch{border:0;border-radius:6px}.custom-color-control output{color:var(--text);font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.78rem}.select-row{display:grid;grid-template-columns:1fr 160px;gap:10px;align-items:center;margin-bottom:12px;color:var(--muted);font-size:.84rem}select{width:100%;padding:0 34px 0 12px;border:1px solid var(--line);border-radius:8px;background:var(--button);color:var(--text)}.toggle-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.toggle-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:0;padding:0 10px;background:transparent;border-color:var(--line);color:var(--muted)}.toggle-button.active{background:var(--button-active);border-color:var(--button-active);color:var(--button-active-text)}.drop-overlay{position:fixed;z-index:8;top:16px;right:16px;bottom:16px;left:16px;display:grid;place-items:center;align-content:center;gap:10px;background:#0000001f;border:1px dashed var(--focus);border-radius:8px;color:var(--text);opacity:0;pointer-events:none;transform:scale(.99);transition:opacity .14s ease,transform .14s ease}.drop-overlay.visible{opacity:1;transform:scale(1)}.drop-overlay strong{font-size:1rem;letter-spacing:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes logo-flat-to-top{0%{opacity:1;transform:scale(1) rotate(0);visibility:visible}32%{opacity:1;transform:scale(.96) rotate(45deg);visibility:visible}44%{opacity:0;transform:scaleX(1.14) scaleY(.58) rotate(45deg) translateY(-2px);visibility:visible}to{opacity:0;transform:scaleX(1.14) scaleY(.58) rotate(45deg) translateY(-2px);visibility:hidden}}@keyframes logo-top-face{0%,34%{opacity:0;stroke-dashoffset:1;transform:translateY(2px) scale(.9);visibility:hidden}45%,58%{opacity:1;stroke-dashoffset:0;transform:translateY(0) scale(1);visibility:visible}68%{opacity:0;stroke-dashoffset:0;transform:translateY(-2px) scale(.94);visibility:visible}to{opacity:0;stroke-dashoffset:0;transform:translateY(-2px) scale(.94);visibility:hidden}}@keyframes logo-cube-extrude{0%,62%{opacity:0;transform:translateY(-4px) scale(.86)}80%{opacity:1;transform:translateY(1px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes logo-cube-lines{0%,62%{stroke-dashoffset:1}88%,to{stroke-dashoffset:0}}@media(max-width:860px){body{overflow:auto}.topbar{top:10px;right:10px;left:10px;flex-direction:row;align-items:flex-start}.top-actions{position:fixed;top:10px;right:10px;margin-left:auto;max-width:100%;justify-content:flex-end}.control-panel{top:auto;bottom:10px;left:10px;right:auto;width:min(360px,calc(100vw - 20px));max-width:none;max-height:min(64dvh,570px)}.control-panel.dock-right{right:10px;left:auto}.control-panel.collapsed{top:auto;bottom:10px;width:174px;height:54px}.panel-body{padding-inline:14px}.button-label{display:none}}@media(max-width:560px){.topbar{gap:8px;justify-content:flex-start}.brand{padding-inline:12px}.brand h1{display:none}.top-actions{gap:3px;justify-content:flex-start;padding:3px;width:calc(100vw - 86px)}.button{width:38px;height:38px;min-width:38px;min-height:38px;padding-inline:0}.format-select{height:38px;min-height:38px;padding-inline:10px 36px}.format-select-wrap{width:80px;height:38px;min-height:38px}.format-select-icon{right:12px}.select-row{grid-template-columns:1fr;gap:6px}.panel-heading{padding-inline:14px}textarea{min-height:96px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
