:root{color-scheme:light;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--page: #dfdde3;--shell: #fbfafc;--panel: #f9f7fb;--surface: #f1edf6;--surface-hover: #e9e3f2;--line: #dcd7e2;--line-soft: #ebe7ef;--text: #1c1c25;--muted: #696373;--muted-strong: #4f4959;--accent: #7654c7;--accent-strong: #5734a5;--accent-soft: #eee7fb;--accent-ink: #ffffff;--danger: #c84d69;--radius-sm: 9px;--radius-md: 14px;--radius-lg: 22px;--header-height: 78px;background:var(--page);color:var(--text)}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;min-height:100%;margin:0}body{min-height:100vh;padding:8px;overflow:hidden;font-size:14px;background:radial-gradient(circle at 12% 4%,rgb(255 255 255 / 72%),transparent 30%),radial-gradient(circle at 88% 96%,rgb(184 162 224 / 20%),transparent 28%),var(--page)}.noscript-notice{position:fixed;right:20px;bottom:20px;z-index:20;max-width:min(360px,calc(100vw - 40px));margin:0;padding:12px 16px;border:1px solid var(--line-strong);border-radius:12px;color:var(--text);background:#fffffff0;box-shadow:var(--shadow-soft);font-size:15px;font-weight:650;line-height:1.45}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--accent-strong);outline-offset:2px}a{color:inherit;text-decoration:none}.app-shell{height:calc(100vh - 16px);min-height:0;overflow:hidden;border:1px solid rgb(100 94 109 / 34%);border-radius:22px;background:#fbfafcf5;box-shadow:0 24px 70px #37304229,inset 0 1px #ffffffeb}.topbar{position:relative;z-index:10;height:var(--header-height);padding:0 26px;display:grid;grid-template-columns:minmax(210px,270px) minmax(0,1fr) auto;align-items:center;gap:24px;border-bottom:1px solid var(--line-soft);background:#fbfafce0;backdrop-filter:blur(22px)}.brand{display:flex;align-items:flex-start;flex-direction:column;gap:1px;line-height:1}.brand-wordmark{font-family:Georgia,Times New Roman,serif;font-size:31px;font-weight:600;letter-spacing:-.055em}.brand-kicker{color:var(--accent);font-size:11px;font-weight:760;letter-spacing:.17em}.project-meta{min-width:0;display:flex;flex-direction:column;gap:4px}.project-meta strong{max-width:310px;overflow:hidden;font-size:14px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.project-meta strong:before{width:8px;height:8px;margin-right:10px;display:inline-block;border-radius:999px;background:var(--accent);content:"";box-shadow:0 0 0 4px #a184e41a}.project-meta span{margin-left:18px;color:var(--muted);font-size:12px}.topbar-actions{display:flex;align-items:center}.topbar-actions{gap:7px;flex-shrink:0}.topbar-actions>button{min-height:40px;padding:0 10px;display:inline-flex;align-items:center;gap:7px;border:1px solid transparent;border-radius:9px;background:transparent;cursor:pointer;font-size:13px;font-weight:610;transition:color .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease,opacity .15s ease}.action-icon{width:17px;height:17px;flex:0 0 auto}.topbar-actions>button:hover:not(:disabled){color:var(--accent-strong);background:var(--accent-soft)}.topbar-actions>button:active:not(:disabled){transform:translateY(1px)}.topbar-actions>.export-button{padding-right:13px;padding-left:13px;border-color:var(--line);background:#ffffffb8;box-shadow:0 3px 10px #4439520f}.topbar-actions>.export-button:hover:not(:disabled){border-color:#7654c761;box-shadow:0 5px 14px #5c43911a}.topbar-actions>button:disabled{opacity:.34;cursor:not-allowed}.workspace{height:calc(100% - var(--header-height));min-width:0;padding:0 14px 14px;display:grid;grid-template-columns:minmax(230px,270px) minmax(400px,1fr) minmax(300px,340px);grid-template-areas:"project preview controls";gap:14px;overflow:hidden}.project-panel,.control-panel{scrollbar-color:#cfc7da transparent;scrollbar-width:thin}.project-panel::-webkit-scrollbar,.control-panel::-webkit-scrollbar{width:5px}.project-panel::-webkit-scrollbar-thumb,.control-panel::-webkit-scrollbar-thumb{border-radius:999px;background:#cfc7da}.project-panel{grid-area:project;min-width:0;min-height:0;overflow-y:auto;padding:32px 14px 24px 10px}.control-panel{grid-area:controls;position:relative;z-index:1;min-width:0;min-height:0;margin-top:10px;overflow-y:auto;padding:19px 18px 24px;border:1px solid var(--line);border-radius:var(--radius-lg);background:#ffffff9e;box-shadow:0 12px 34px #4a405b12,inset 0 1px #fffc}.intro-block{padding:4px 0 20px}.eyebrow{margin:0 0 17px;color:var(--muted);font-size:11px;font-weight:760;letter-spacing:.15em}.intro-block h1{max-width:250px;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(43px,3.6vw,58px);font-weight:500;line-height:.91;letter-spacing:-.065em}.intro-block h1 em{display:block;color:var(--accent);font-weight:400}.intro-block h1>span{color:var(--accent)}.hero-sparkle{margin-top:22px;display:block;color:var(--accent);font-size:20px}.intro-block>p:last-child{max-width:238px;margin:10px 0 0;color:var(--muted-strong);font-size:14px;line-height:1.62}.settings-heading{padding:1px 0 17px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line-soft)}.settings-heading>div{display:flex;flex-direction:column;gap:3px}.settings-heading>div>span{color:var(--accent-strong);font-size:11px;font-weight:760;letter-spacing:.14em}.settings-heading h2{margin:0;font-family:Georgia,Times New Roman,serif;font-size:21px;font-weight:500;letter-spacing:-.035em}.panel-section{padding:18px 0;border-bottom:1px solid var(--line-soft)}.project-panel .panel-section{padding:14px 0 0;border-bottom:0}.section-heading{margin-bottom:12px;display:flex;justify-content:space-between;gap:12px;color:var(--muted-strong);font-size:11px;font-weight:760;letter-spacing:.1em;text-transform:uppercase}.section-heading span:last-child{color:var(--muted);font-weight:560;letter-spacing:.035em}.checkerboard{background-color:#f4f1f7;background-image:linear-gradient(45deg,rgb(218 211 226 / 34%) 25%,transparent 25%),linear-gradient(-45deg,rgb(218 211 226 / 34%) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgb(218 211 226 / 34%) 75%),linear-gradient(-45deg,transparent 75%,rgb(218 211 226 / 34%) 75%);background-position:0 0,0 9px,9px -9px,-9px 0;background-size:18px 18px}.dropzone{position:relative;width:100%;min-height:228px;padding:15px;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px dashed rgb(142 111 214 / 64%);border-radius:var(--radius-md);color:inherit;cursor:pointer;text-align:left;box-shadow:inset 0 0 42px #9d7fde0f;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.dropzone:hover,.dropzone.is-dragging{border-color:var(--accent-strong);box-shadow:inset 0 0 0 1px #7654c71f,inset 0 0 50px #9d7fde1c}.dropzone.is-dragging{transform:scale(1.008)}.dropzone.has-source{flex-direction:column;gap:8px}.dropzone img{width:138px;height:150px;object-fit:contain;filter:drop-shadow(0 12px 20px rgb(74 62 92 / 20%))}.dropzone.has-source img{width:132px;height:132px}.dropzone-caption{width:100%;min-width:0;margin:0;display:flex;align-items:center;flex:0 0 auto;flex-direction:column;gap:4px;text-align:center}.dropzone-caption strong{max-width:100%;overflow:hidden;color:var(--text);font-size:14px;text-overflow:ellipsis;white-space:nowrap}.dropzone-caption span,.empty-upload span:last-child{color:var(--muted);font-size:12px;line-height:1.45}.dropzone-caption span{max-width:180px}.empty-upload{display:flex;align-items:center;flex-direction:column;gap:7px;color:var(--muted-strong);text-align:center}.empty-upload strong{color:var(--accent-strong);font-size:15px;font-weight:650}.upload-icon{width:50px;height:50px;margin-bottom:7px;display:grid;place-items:center;border:1px solid rgb(142 111 214 / 34%);border-radius:14px;color:var(--accent-strong);background:#fff9;box-shadow:0 7px 18px #6d54a61a}.upload-icon .action-icon{width:25px;height:25px}.text-button{margin:10px 0 0;min-height:32px;padding:6px 0;border:0;color:var(--muted);background:transparent;cursor:pointer;font-size:12px;text-decoration:underline;text-decoration-color:#7d788847;text-underline-offset:3px}.text-button:hover{color:var(--accent-strong);text-decoration-color:currentColor}.control-panel .panel-section .text-button{width:100%;text-align:left}.local-note{margin-top:22px;padding-top:18px;display:grid;grid-template-columns:18px 1fr;gap:9px;border-top:1px solid var(--line-soft);color:var(--accent)}.local-note>span{font-size:14px}.local-note strong{color:var(--muted-strong);font-size:13px}.local-note p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.construction-picker{min-width:0;margin:16px 0 0;padding:0;border:0}.construction-picker legend{margin-bottom:10px;padding:0;color:var(--muted-strong);font-size:13px;font-weight:650}.construction-options{width:100%;padding:2px 2px 10px;display:grid;grid-auto-columns:116px;grid-auto-flow:column;gap:9px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-color:#b9adca transparent;scrollbar-width:thin}.construction-options::-webkit-scrollbar{height:7px}.construction-options::-webkit-scrollbar-thumb{border-radius:999px;background:#b9adca}.construction-option{position:relative;min-width:0;cursor:pointer;scroll-snap-align:start}.construction-option-input{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.construction-option-card{min-height:118px;padding:11px 8px 10px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;border:1px solid var(--line);border-radius:12px;color:var(--muted-strong);background:var(--panel);text-align:center;transition:color .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}.construction-option:hover .construction-option-card{border-color:#5734a56b;background:#fff;transform:translateY(-1px)}.construction-option-input:checked+.construction-option-card{border-color:var(--accent-strong);color:var(--accent-strong);background:var(--accent-soft);box-shadow:0 6px 16px #5734a524,inset 0 0 0 1px #5734a51f}.construction-option-input:focus-visible+.construction-option-card{outline:3px solid var(--accent-strong);outline-offset:2px}.construction-shape-icon{width:58px;height:45px;flex:0 0 auto}.construction-figure{fill:#7654c714}.construction-support{fill:#7654c729}.construction-support.is-dashed{stroke-dasharray:4 3}.construction-option-card strong{font-size:13px;line-height:1.2}.construction-option-card>span:last-child{color:var(--muted);font-size:11px;line-height:1.25}.construction-picker>p{margin:7px 2px 0;color:var(--muted);font-size:12px;line-height:1.45}.range-control{margin-top:14px;display:block}.range-label{margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted-strong);font-size:13px;line-height:1.35}.range-label output{max-width:138px;min-width:44px;padding:3px 7px;overflow:hidden;border:1px solid var(--line-soft);border-radius:6px;color:var(--text);background:var(--surface);font-size:12px;font-variant-numeric:tabular-nums;text-align:right;text-overflow:ellipsis;white-space:nowrap}.range-control input[type=range]{width:100%;height:4px;display:block;appearance:none;border-radius:999px;outline:none;background:linear-gradient(90deg,var(--accent-strong),#d8d1e1);cursor:pointer}.range-control input[type=range]::-webkit-slider-thumb{width:15px;height:15px;appearance:none;border:3px solid #ffffff;border-radius:999px;background:var(--accent);box-shadow:0 0 0 1px #7654c742,0 2px 7px #4a357933}.range-control input[type=range]::-moz-range-thumb{width:9px;height:9px;border:3px solid #ffffff;border-radius:999px;background:var(--accent);box-shadow:0 0 0 1px #7654c742}.range-control input[type=number]{width:100%;min-height:42px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;color:var(--text);background:var(--panel);font-size:13px;font-variant-numeric:tabular-nums;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.range-control input[type=number]:hover{background:#fff}.range-control input[type=number]:focus{border-color:#7654c78c;box-shadow:0 0 0 3px #7654c714}.range-control input[type=checkbox]{width:20px;height:20px;margin:0;accent-color:var(--accent-strong);cursor:pointer}.control-note{margin:9px 0 0;color:var(--muted-strong);font-size:13px;line-height:1.5}.export-section{padding-top:18px}.mini-stats{margin-bottom:12px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.mini-stats span{min-width:0;padding:8px 4px;display:flex;align-items:center;flex-direction:column;gap:3px;border:1px solid var(--line-soft);border-radius:var(--radius-sm);color:var(--muted);background:var(--panel);font-size:11px}.mini-stats strong{color:var(--text);font-size:14px;font-variant-numeric:tabular-nums}.primary-button{width:100%;min-height:44px;border:0;border-radius:10px;color:var(--accent-ink);background:linear-gradient(135deg,#a889e6,#7654c7);box-shadow:0 10px 25px #684ca633;cursor:pointer;font-size:13px;font-weight:740;transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease}.primary-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 13px 30px #684ca647}.primary-button:disabled{opacity:.4;cursor:not-allowed}.export-note{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.5;text-align:center}.control-panel .panel-section .export-note{text-align:left}.preview-panel{grid-area:preview;width:100%;max-width:100%;min-width:0;min-height:0;overflow:hidden;padding:10px 0 0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:43px minmax(0,1fr) 52px}.preview-toolbar,.preview-footer{min-width:0;display:flex;align-items:center;justify-content:space-between}.preview-toolbar{gap:10px;overflow:hidden}.preview-tabs{min-width:0;margin:0;padding:3px;display:flex;gap:2px;border:1px solid var(--line-soft);border-radius:10px;background:#f2eef7b8}.preview-toolbar>.preview-tabs{flex:0 1 auto}.range-control .preview-tabs{width:100%;display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column}.range-control .preview-tabs button{min-height:40px;color:var(--muted-strong);font-size:13px}.preview-tabs button,.preview-actions button{border:0;color:var(--muted);background:transparent;cursor:pointer;font-size:11px}.preview-tabs button{min-width:0;min-height:34px;padding:0 11px;overflow:hidden;border-radius:7px;text-overflow:ellipsis;white-space:nowrap}.preview-tabs button.is-active{color:var(--accent-strong);background:#fff;box-shadow:0 2px 8px #4236551a,inset 0 0 0 1px #7654c714}.preview-tabs button:hover:not(:disabled):not(.is-active){color:var(--accent-strong);background:#ffffff8a}.preview-tabs button:disabled{opacity:.34;cursor:not-allowed}.preview-actions{min-width:0;display:flex;align-items:center;flex:0 1 auto;justify-content:flex-end;gap:11px;overflow:hidden;color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.preview-actions>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-actions button{flex:0 0 auto;padding:6px 9px;border:1px solid var(--line);border-radius:7px;background:#ffffff94;white-space:nowrap}.preview-actions button:hover{color:var(--accent-strong);border-color:#7654c757}.preview-stage{position:relative;width:100%;max-width:100%;min-width:0;min-height:0;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-lg);background:radial-gradient(circle at 45% 32%,rgb(255 255 255 / 92%),transparent 35%),linear-gradient(145deg,#f2eff5,#e8e3ec);box-shadow:0 20px 55px #44395224,inset 0 1px #ffffffbd}.preview-3d,.preview-3d-canvas,.preview-3d canvas,.outline-preview,.outline-preview svg{width:100%;height:100%;display:block}.preview-3d{position:relative}.preview-only-label{position:absolute;right:14px;bottom:14px;z-index:2;padding:5px 8px;border:1px solid rgb(118 84 199 / 18%);border-radius:6px;color:var(--muted-strong);background:#ffffffad;box-shadow:0 4px 14px #50406914;backdrop-filter:blur(8px);font-size:11px;font-weight:740;letter-spacing:.08em;pointer-events:none}.outline-preview{padding:24px}.outline-preview svg{filter:drop-shadow(0 18px 28px rgb(91 70 122 / 18%))}.outline-fill{fill:#a184e41f}.outline-stroke{fill:none;stroke:#8f6cd6;stroke-width:2;vector-effect:non-scaling-stroke}.resolved-region{fill:#cd9b5c1a;stroke:#bd8650;stroke-width:1.5;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.empty-preview{width:100%;height:100%;min-height:0;display:flex;align-items:center;justify-content:center;flex-direction:column;color:var(--muted-strong);text-align:center}.empty-preview p{margin:0;color:var(--muted-strong);font-size:16px;font-weight:600}.status-overlay{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--text);text-align:center;background:#f4f1f7c2;backdrop-filter:blur(5px)}.status-overlay strong{font-size:16px;font-weight:650;line-height:1.35}.spinner{width:34px;height:34px;display:block;flex:0 0 auto;border:3px solid rgb(118 84 199 / 18%);border-top-color:var(--accent-strong);border-radius:999px;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{position:absolute;right:18px;bottom:18px;left:18px;z-index:7;padding:13px 14px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;border:1px solid rgb(200 77 105 / 34%);border-radius:var(--radius-md);background:#fff5f7f0;box-shadow:0 12px 32px #67374526;font-size:12px}.error-banner strong{color:#a93751}.error-banner span{min-width:0;overflow:hidden;color:#9f6370;text-overflow:ellipsis;white-space:nowrap}.error-banner button{padding:6px 9px;border:1px solid rgb(200 77 105 / 30%);border-radius:6px;color:#a93751;background:#fff;cursor:pointer;font-size:12px}.viewer-error{height:100%;display:grid;place-items:center;color:var(--danger);font-size:13px}.preview-footer{margin:0;padding:7px 4px 3px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;border:0;color:var(--muted-strong)}.preview-gesture{min-width:0;min-height:38px;padding:0 8px;display:flex;align-items:center;justify-content:center;gap:6px;overflow:hidden;border:1px solid var(--line-soft);border-radius:8px;background:#faf8fcd6;white-space:nowrap}.preview-gesture strong,.preview-gesture span{overflow:hidden;font-size:13px;line-height:1;text-overflow:ellipsis}.preview-gesture strong{color:var(--text);font-weight:650}.preview-gesture span{color:var(--muted-strong)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;white-space:nowrap}@media(max-width:1240px){.topbar{grid-template-columns:220px minmax(0,1fr) auto;padding:0 20px}.preview-actions>span{display:none}.workspace{grid-template-columns:230px minmax(360px,1fr) 310px}.project-panel{padding-right:8px}.intro-block h1{font-size:47px}}@media(max-width:1020px){body{overflow:auto}.app-shell{height:auto;min-height:calc(100vh - 16px);overflow:visible}.project-meta{display:none}.topbar{grid-template-columns:minmax(190px,1fr) auto}.workspace{height:auto;grid-template-columns:minmax(240px,.42fr) minmax(420px,1fr);grid-template-areas:"project preview" "controls controls"}.project-panel,.control-panel{overflow:visible}.project-panel{padding-bottom:34px}.control-panel{margin-top:0}.preview-panel{height:650px;min-height:560px}.intro-block h1{max-width:300px}}@media(max-width:720px){body{padding:0;background:var(--shell)}.app-shell{min-height:100vh;border:0;border-radius:0;box-shadow:none}.topbar{position:sticky;top:0;height:68px;padding:0 14px;grid-template-columns:minmax(105px,1fr) auto;gap:8px}.brand-wordmark{font-size:26px}.brand-kicker{font-size:11px}.topbar-actions{gap:1px}.topbar-actions>button{padding:0 7px;font-size:11px}.topbar-actions>.export-button{padding:0 9px}.action-icon{width:15px;height:15px}.workspace{padding:0 12px 18px;grid-template-columns:minmax(0,1fr);grid-template-areas:"project" "preview" "controls";gap:14px}.project-panel{padding:27px 4px 10px}.intro-block h1{max-width:460px;font-size:clamp(44px,15vw,66px)}.intro-block>p:last-child{max-width:450px}.dropzone{min-height:220px}.local-note{max-width:470px}.preview-panel{height:min(70vh,620px);min-height:470px;padding-top:0}.control-panel{padding:18px 17px 26px}}@media(max-width:440px){.topbar-actions>button{padding:0 5px}.topbar-actions>.export-button{padding:0 7px}.intro-block h1{font-size:50px}.preview-actions>span{display:none}.preview-panel{height:62vh;min-height:430px}.preview-toolbar .preview-tabs button{padding:0 8px}.preview-footer{gap:4px}.preview-gesture{padding:0 4px;gap:3px}.error-banner{grid-template-columns:1fr auto}.error-banner span{grid-column:1 / -1;grid-row:2;white-space:normal}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
