:root{font-family:"Segoe UI",Arial,sans-serif;color:#253340;background:#f8fafb;font-synthesis:none;--blue:#3858d6;--border:#dfe5eb;--muted:#64717c}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{cursor:pointer}button{border:0;background:none;color:inherit}button:hover{background-color:#eef1f8}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #7993ff;outline-offset:3px}a{color:inherit}.skip{position:fixed;top:-80px;left:12px;z-index:100;background:white;padding:12px}.skip:focus{top:10px}.topbar{height:86px;padding:0 30px;display:flex;align-items:center;gap:32px;border-bottom:1px solid var(--border);background:white}.brand{text-decoration:none;font:bold 37px Georgia,serif;letter-spacing:-2px;display:flex;align-items:center;gap:8px}.brand-icon{font:32px Georgia;color:var(--blue);transform:rotate(-8deg);display:inline-block}.brand-dot{color:var(--blue);margin-left:-9px}.project-heading{padding-left:28px;border-left:1px solid var(--border)}h1{font-size:15px;font-weight:600;margin:0 0 4px}.project-heading>span,.step-note{font-size:12px;color:var(--muted)}.top-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.primary,.secondary,.quiet{border-radius:7px;padding:11px 15px;font-size:13px;font-weight:600}.primary{background:var(--blue);color:white;border:1px solid var(--blue)}.primary:hover{background:#2947bc}.secondary{border:1px solid var(--border);background:#fff}.quiet{color:var(--muted)}.workspace{display:grid;grid-template-columns:274px minmax(320px,1fr) 278px;min-height:calc(100vh - 124px)}.settings,.export-panel{background:white;padding:26px 23px;min-width:0}.settings{border-right:1px solid var(--border)}.export-panel{border-left:1px solid var(--border)}.panel-heading{margin-bottom:26px}h2{font-size:19px;font-weight:650;margin:0 0 7px;letter-spacing:-.4px}h3{font-size:13px;font-weight:650;margin:0 0 13px}section>section,.settings>section,.export-panel>section{border-bottom:1px solid var(--border);padding-bottom:22px;margin-bottom:22px}.segmented{display:flex;background:#f1f4f7;padding:3px;border-radius:7px;gap:3px}.segmented button{flex:1;padding:8px 3px;font-size:11px;border-radius:5px;white-space:nowrap}.segmented button.selected{background:white;box-shadow:0 1px 4px #26334716;font-weight:600;color:#2947bc}.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0 6px}.upload-tile{border:1px solid var(--border);border-radius:8px;background:#fafbfc;padding:13px 6px 11px;display:flex;align-items:center;flex-direction:column;gap:7px;font-size:11px}.upload-tile:hover{border-color:#8297e9;background:#f5f7ff}.upload-tile small{color:var(--muted);font-size:10px}.mini-cover{display:block;width:48px;height:68px;background:#23434a;box-shadow:2px 3px 4px #25334025;background-size:cover;background-position:center}.text-button{font-size:11px;color:#3858b9;padding:9px 0;text-align:left}.hint{font-size:10px;line-height:1.6;color:var(--muted);margin:7px 0 0}.field{display:flex;flex-direction:column;gap:8px;font-size:11px;margin-top:16px}.field select,.field input{min-width:0;width:100%;border:1px solid #d9e0e7;border-radius:6px;background:#fff;color:#253340;padding:9px;font-size:12px}.dimension-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.range-label{display:flex;justify-content:space-between;font-size:11px;margin:18px 0 8px;gap:5px}.range-label output{color:var(--muted);font-variant-numeric:tabular-nums}input[type=range]{width:100%;height:4px;accent-color:var(--blue);margin:6px 0 8px;cursor:pointer}.color-row{display:flex;justify-content:space-between;align-items:center;font-size:11px;gap:8px;margin-top:17px}input[type=color]{border:1px solid #d8dfe5;border-radius:5px;background:white;width:31px;height:27px;padding:3px;cursor:pointer}.swatches{display:flex;gap:10px;margin-top:12px}.swatches button{width:25px;height:25px;flex-shrink:0;border:3px solid white;border-radius:50%;background:var(--swatch);box-shadow:0 0 0 1px #dce1e8}.swatches button:hover{box-shadow:0 0 0 2px var(--blue)}.check{display:flex;align-items:center;gap:9px;font-size:11px;margin-top:16px;cursor:pointer}.check input{accent-color:var(--blue);width:15px;height:15px;margin:0}.preview{background:#e8ecf0;position:relative;min-width:0;display:flex;flex-direction:column;overflow:hidden;min-height:760px}.preview-bar{display:flex;align-items:center;gap:7px;font-size:11px;color:#53606c;position:absolute;z-index:1;left:25px;right:25px;top:24px;pointer-events:none}.live-dot{width:6px;height:6px;background:#5f8d78;border-radius:50%}.preview-tag{margin-left:auto;background:#ffffffa6;padding:6px 10px;border-radius:4px}.viewport{position:relative;flex:1;min-height:550px;width:100%;cursor:grab;touch-action:none;user-select:none}.viewport:active{cursor:grabbing}.viewport canvas{display:block;width:100%;height:100%;position:absolute;inset:0}#loading{position:absolute;inset:0;display:grid;place-items:center;color:#52616f;font-size:14px;padding:40px;text-align:center}.scene-caption{text-align:center;color:#5b6875;font-size:10px;margin:0 10px 23px}.caption-dot{display:inline-block;width:5px;height:5px;background:#70818f;border-radius:50%;margin-right:5px}.view-controls{display:flex;align-self:center;background:#ffffffc9;padding:5px;border:1px solid #ffffff;border-radius:9px;box-shadow:0 4px 18px #34435808;margin-bottom:27px;gap:3px}.view-controls button{font-size:11px;padding:10px 13px;border-radius:5px}.view-controls button.selected{background:#253340;color:#fff}.preview-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 23px;border-top:1px solid #cbd4dc80;font-size:10px;color:#53616c}.zoom-controls{display:flex;align-items:center;gap:5px;white-space:nowrap}.zoom-controls button{font-size:17px;width:26px;height:29px;border-radius:5px}.zoom-controls output{min-width:38px;text-align:center;font-variant-numeric:tabular-nums}.format-options{display:flex;flex-direction:column;gap:8px}.format-options button{display:grid;grid-template-columns:1fr 18px;text-align:left;padding:13px 14px;border:1px solid var(--border);border-radius:7px;gap:4px}.format-options strong{font-size:12px}.format-options small{font-size:10px;color:var(--muted);grid-column:1}.format-options .radio-dot{grid-row:1 / 3;grid-column:2;align-self:center;border:1px solid #c8d0db;border-radius:50%;width:15px;height:15px}.format-options button.selected{border-color:#7188e6;background:#f5f7ff}.selected .radio-dot{border:4px solid var(--blue);background:white}.export-panel .field:first-child{margin-top:0}.export-summary{font-size:10px;line-height:1.5;margin:6px 0 21px}.export-summary>div{display:flex;justify-content:space-between;gap:7px;margin:11px 0}.export-summary span{color:var(--muted)}.export-summary strong{font-weight:600;font-variant-numeric:tabular-nums}.download{width:100%;font-size:12px;padding:13px 10px}.privacy-note{text-align:center;color:var(--muted);font-size:10px;line-height:1.7;margin:12px 0 30px}.tip{background:#f4f6fa;border-radius:7px;display:flex;align-items:flex-start;gap:10px;padding:16px 13px;color:#5f6d7d}.tip>span{font-size:23px;color:#5269bd}.tip p{font-size:11px;line-height:1.65;margin:0}.tip strong{display:block;color:#354355;font-size:11px;font-weight:600;margin-bottom:7px}.help{display:block;text-align:center;width:100%;margin-top:13px}.footer{min-height:38px;display:flex;justify-content:space-between;gap:20px;align-items:center;padding:10px 27px;border-top:1px solid var(--border);font-size:10px;color:var(--muted)}.footer span span{margin:0 8px;color:#b3bcc5}.dropzone{border:1px dashed #8d9cc1;border-radius:7px;width:100%;padding:21px 8px;margin-top:16px;background:#f7f9ff}.dropzone:not([hidden]){display:flex;flex-direction:column;gap:8px;align-items:center}.dropzone>span{font-size:25px;color:var(--blue)}.dropzone strong{font-size:11px}.dropzone small{font-size:9px;color:var(--muted)}[hidden]{display:none!important}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#253340;color:white;border-radius:8px;padding:14px 20px;font-size:13px;max-width:min(92vw,600px);z-index:20;box-shadow:0 8px 35px #0002;pointer-events:none;opacity:0}#toast.show{opacity:1}dialog{border:1px solid var(--border);border-radius:14px;padding:25px;max-width:520px;width:calc(100% - 32px);color:#253340;overscroll-behavior:contain}dialog::backdrop{background:#17233366}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:15px}.dialog-top button{font-size:26px;width:35px;height:35px}dialog p{font-size:13px;line-height:1.75}.wrap-diagram{display:flex;margin:23px 0;height:105px}.wrap-diagram span{flex:1;background:#e8eef1;border:1px solid #b8c6d0;display:grid;place-items:center;font-size:11px}.wrap-diagram span:nth-child(2){flex:0 0 35px;writing-mode:vertical-rl;background:#c9d5dc}h1,h2,h3{text-wrap:balance}.dragover{outline:3px dashed var(--blue);outline-offset:-10px}#imageInfo{overflow-wrap:anywhere}input:disabled{opacity:.5}@media(min-width:1600px){.workspace{grid-template-columns:300px minmax(320px,1fr) 310px}.settings,.export-panel{padding:30px}.preview{min-height:850px}}@media(max-width:1100px){.workspace{grid-template-columns:235px minmax(300px,1fr) 232px}.settings,.export-panel{padding:23px 16px}.project-heading>span{display:none}.topbar{padding:0 20px;gap:20px}.top-actions{gap:3px}.preview-bottom>span{max-width:140px;line-height:1.6}.view-controls button{padding:10px}.swatches{gap:9px}.scene-caption{line-height:1.6}}@media(max-width:850px){.topbar{height:75px}.project-heading{display:none}.workspace{grid-template-columns:240px 1fr}.export-panel{grid-column:1/-1;border-left:0;border-top:1px solid var(--border);display:grid;grid-template-columns:1fr 1fr;column-gap:30px}.export-panel .panel-heading{grid-column:1/-1}.export-panel .tip,.export-panel .privacy-note,.export-panel .help{display:none}.export-summary{grid-column:1}.download{height:46px;align-self:center}.preview{min-height:850px}.quiet{padding:10px 8px}}@media(max-width:580px){.topbar{padding:0 15px;gap:12px;height:68px}.brand{font-size:31px}.brand-icon{font-size:27px}.top-actions .quiet{font-size:10px}.top-actions .secondary{font-size:0;padding:9px 11px}.top-actions .secondary span{font-size:18px}.top-actions .primary{font-size:11px;padding:10px}.workspace{display:flex;flex-direction:column}.preview{order:-1;min-height:560px;height:70vh;max-height:760px}.viewport{min-height:350px}.preview-bar{top:17px;left:18px;right:18px}.scene-caption{margin-bottom:14px}.view-controls{margin-bottom:13px}.preview-bottom{padding:10px 17px}.preview-bottom>span{max-width:190px;font-size:9px}.settings{border-right:0;padding:26px;display:grid;grid-template-columns:1fr 1fr;gap:20px}.settings .panel-heading{grid-column:1/-1;margin-bottom:0}.settings>section{margin:0}.settings>section:last-child{grid-column:1/-1}.upload-grid{gap:6px}.upload-tile{padding:9px 3px}.segmented button{font-size:9px}.settings .field select{font-size:10px}.settings .swatches{gap:13px}.export-panel{padding:26px;gap:20px;grid-template-columns:1fr 1fr}.export-panel .panel-heading{margin-bottom:0}.export-panel>section{margin-bottom:0}.export-summary{grid-column:1/-1;margin-bottom:0}.download{grid-column:1/-1}.footer{font-size:9px;padding:10px 15px}.footer>span:last-child{display:none}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}@media(pointer:fine){html{overscroll-behavior:none}}
/* Keep the photographic canvas and its controls visible while tools scroll. */
@media(min-width:851px){.workspace{height:calc(100dvh - 124px);min-height:650px}.settings,.export-panel{overflow-y:auto;scrollbar-width:thin;scrollbar-color:#ccd4de transparent}.preview{min-height:0}.viewport{min-height:0}}
.viewport canvas{inset:auto;left:50%;top:50%;transform:translate(-50%,-50%)}

/* Fixed workspace: only tool panels scroll. */
html,body{height:100%;overflow:hidden}
body{height:100dvh;display:flex;flex-direction:column}
.topbar{flex:0 0 86px}.footer{flex:0 0 38px;min-height:38px}
.workspace{flex:1;min-height:0!important;height:auto!important;overflow:hidden}
.settings,.export-panel{height:100%;overflow-y:auto;overscroll-behavior:contain}
.preview{height:100%;min-height:0!important;max-height:none;overflow:hidden}
.viewport{min-height:0!important}
.mobile-only{display:none}
@media(max-width:850px){
 .topbar{flex-basis:68px;height:68px;padding:0 15px}.top-actions{gap:6px}
 .workspace{display:block;position:relative}.preview{width:100%}
 .top-actions>#openProject,.top-actions>#saveProject{display:none}
 .mobile-only{display:block}.mobileTools{font-size:12px}
 .settings,.export-panel{position:absolute;z-index:4;inset:0 auto 0 0;width:min(320px,90%);height:100%;display:block;padding:28px 23px;box-shadow:8px 0 30px #25334025;border:0;visibility:hidden;transform:translateX(-105%)}
 .export-panel{inset:0 0 0 auto;transform:translateX(105%);box-shadow:-8px 0 30px #25334025}
 body[data-panel="tools"] .settings,body[data-panel="export"] .export-panel{visibility:visible;transform:translateX(0)}
 .settings>section,.export-panel>section{margin-bottom:22px}.settings .panel-heading,.export-panel .panel-heading{margin-bottom:26px}
 .mobile-close{position:absolute;right:12px;top:12px;font-size:27px;width:34px;height:34px;border-radius:5px;background:#eef2f6}
 .mobile-project-actions{display:flex;gap:7px;margin:32px 0 22px}.mobile-project-actions button{font-size:11px;padding:9px}
 .export-panel .export-summary{margin-bottom:21px}.export-panel .privacy-note,.export-panel .help,.export-panel .tip{display:block}
 .export-panel .tip{display:flex}.settings .segmented button{font-size:11px}.settings .field select{font-size:12px}
 .preview-bar{top:18px}.scene-caption{font-size:10px}.preview-bottom{min-height:50px}.view-controls{margin-bottom:15px}
 .project-heading{display:block;position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
}
@media(max-width:420px){.brand{font-size:29px}.brand-icon{font-size:25px}.topbar{gap:6px;padding:0 12px}.top-actions .primary,.top-actions .secondary{font-size:10px;padding:10px 9px}.top-actions .primary span{display:none}.preview-bottom>span{max-width:165px}.scene-caption{font-size:9px}.footer{flex-basis:30px;min-height:30px}}
