@font-face{font-family:DM Sans;src:url('assets/dm-sans.ttf') format('truetype');font-display:swap;font-weight:100 900}@font-face{font-family:Outfit;src:url('assets/outfit.ttf') format('truetype');font-display:swap;font-weight:100 900}
:root{--paper:#f8f7f3;--panel:#fffefa;--ink:#202922;--muted:#596152;--line:#dedfd5;--green:#203b2d;--gold:#d4b477;--subtle:#efefe7;--error:#a12f29;--warning:#795317;--success:#346647;font-family:'DM Sans',sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none;color-scheme:light;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button,a,input,select,textarea{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--green)}button{color:inherit}a{color:var(--green);text-underline-offset:3px}::selection{background:#d4b47780}input,textarea{caret-color:var(--green)}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.app-header{height:86px;display:flex;align-items:center;gap:28px;border-bottom:1px solid var(--line);padding:0 24px;background:var(--panel)}.brand{display:flex;align-items:center;gap:11px;color:var(--ink);text-decoration:none;flex:none;font-family:Outfit,sans-serif;font-size:23px;font-weight:550;letter-spacing:-.025em}.brand small{display:block;font:12px 'DM Sans',sans-serif;letter-spacing:.02em;color:var(--muted);margin-top:1px}.project-heading{flex:1;min-width:150px;border-left:1px solid var(--line);padding-left:26px}.project-heading input{width:100%;max-width:390px;padding:0;border:0;background:transparent;min-height:26px;font-weight:600;color:var(--ink);text-overflow:ellipsis}.connection{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px;margin-top:2px}.connection::before{content:'';width:6px;height:6px;border-radius:50%;background:#7c8377}.connection.synced::before{background:var(--success)}.connection.failed::before{background:var(--error)}.header-actions{display:flex;align-items:center;gap:9px}.button{min-height:39px;border-radius:7px;padding:9px 14px;border:1px solid transparent;font-size:12px;font-weight:600;transition:background .15s,color .15s}.button.primary{background:var(--green);color:#fffefa}.button.primary:hover:not(:disabled){background:#31553e}.button.secondary{background:transparent;border-color:#cfd2c6;color:var(--ink)}.button.secondary:hover:not(:disabled){background:var(--subtle)}.quiet{background:transparent;border:0;padding:9px 5px;font-size:11px;color:var(--muted)}.quiet:hover:not(:disabled){color:var(--ink);text-decoration:underline;text-underline-offset:4px}.full-width{width:100%}
.studio{height:calc(100dvh - 86px);min-height:600px;display:grid;grid-template-columns:280px minmax(300px,1fr) 286px}.editor-panel,.review-panel{background:var(--panel);overflow:auto;scrollbar-color:#c5c9bb transparent;scrollbar-width:thin}.editor-panel{border-right:1px solid var(--line);padding:24px 20px 0}.review-panel{border-left:1px solid var(--line);padding:10px 20px 24px}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:22px}h1{font-size:18px;font-weight:600;letter-spacing:-.025em;margin:0}h2{font-size:12px;font-weight:650;letter-spacing:0;margin:0}h3{font-size:14px;margin:0}.role-label{font-size:11px;color:var(--muted);white-space:nowrap}.tabs{display:flex;border-bottom:1px solid var(--line);margin-bottom:22px;gap:14px}.tabs button{background:none;border:0;border-bottom:2px solid transparent;font-size:12px;color:var(--muted);padding:0 0 10px}.tabs button[aria-selected=true]{border-bottom-color:var(--green);color:var(--green);font-weight:650}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:25px 0 13px}.section-heading>span,.section-heading>output{font-size:11px;color:var(--muted)}section[role=tabpanel]>.section-heading:first-child{margin-top:0}label{display:block;font-size:11px;color:#525b50;line-height:1.45}input:not([type=checkbox]):not([type=range]):not([type=color]),select,textarea{display:block;width:100%;border:1px solid #d5d8cc;border-radius:5px;background:#fffefa;padding:9px 10px;min-height:36px;color:var(--ink);margin-top:5px}input[type=number]{font-variant-numeric:tabular-nums}input[type=number]::-webkit-inner-spin-button{opacity:.7}.number-field{position:relative;display:block}.number-field input{padding-right:29px!important}.number-field>span{position:absolute;right:9px;top:11px;font-size:11px;color:var(--muted);pointer-events:none}.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px 10px}.field-note{font-size:11px;line-height:1.65;color:var(--muted);margin:10px 0 0}.field-note.confirmed{color:#45614a}.derived-line{display:flex;justify-content:space-between;font-size:11px;margin-top:14px}.derived-line strong{font-weight:550;font-variant-numeric:tabular-nums}.editor-panel details{margin-top:13px}.editor-panel summary,.project-notes summary{font-size:11px;cursor:pointer;color:var(--green);padding:5px 0}.editor-panel details>.fields{margin-top:13px}.editor-footer{display:flex;align-items:center;justify-content:space-between;position:sticky;bottom:0;background:var(--panel);border-top:1px solid var(--line);padding:12px 0;margin-top:24px}.viewport-section{min-width:0;position:relative;display:flex;flex-direction:column;background:#e5e2d8}.viewport-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 20px;position:absolute;z-index:2;top:0;left:0;right:0;pointer-events:none}.viewport-bar>*{pointer-events:auto}.view-switch{display:flex;background:#fffefaf2;padding:3px;border-radius:7px;box-shadow:0 3px 12px #29302309}.view-switch button{font-size:11px;border:0;background:transparent;padding:7px 12px;border-radius:5px;color:#535b4f}.view-switch button[aria-pressed=true]{background:var(--green);color:#fffefa}.scene-options{display:flex;gap:10px;background:#fffefaf2;padding:7px 10px;border-radius:6px}.scene-options label{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--ink);white-space:nowrap}.scene-options input{accent-color:var(--green);width:12px;height:12px;margin:0}.viewport{position:relative;flex:1;min-height:380px;overflow:hidden;touch-action:none}.viewport canvas{display:block;width:100%;height:100%;outline-offset:-4px}.scene-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--green);background:#e5e2d8;z-index:1;pointer-events:none}.scene-loading small{font-size:11px;color:var(--muted)}.scene-error{padding:40px;max-width:500px;line-height:1.6}.canvas-caption{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:12px 20px;color:#4f584b;font-size:11px}.canvas-caption>div{display:flex;gap:10px;font-variant-numeric:tabular-nums}.caption-divider{color:#8e9488}.orbit-hint{font-size:11px}.project-strip{background:#f0efe7;border-top:1px solid #d4d7c9;padding:20px 22px;display:flex;gap:18px;align-items:center}.project-strip>div{flex:1;min-width:140px}.strip-label{font-size:11px;display:block;color:var(--muted);margin-bottom:5px}.project-strip strong{font-family:Outfit,sans-serif;font-weight:500;font-size:17px;letter-spacing:-.02em}.project-strip p{max-width:190px;line-height:1.6;font-size:11px;color:var(--muted);margin:0}.project-strip button{flex:none}.selection-section{min-height:123px}.selection-name{font-size:16px;font-weight:550;margin:0 0 5px;letter-spacing:-.02em}.selection-info{font-size:11px;color:var(--muted);line-height:1.6;margin:0}.dimension-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.dimension-chips span{font-size:11px;background:var(--subtle);padding:5px 7px;border-radius:4px;font-variant-numeric:tabular-nums}.fit-section,.versions-section,.project-notes{border-top:1px solid var(--line);margin-top:22px}.checks{display:flex;flex-direction:column;gap:11px}.check{display:grid;grid-template-columns:15px 1fr;gap:6px;font-size:11px;line-height:1.6;color:#56604f}.check-symbol{display:flex;align-items:flex-start;justify-content:center}.check-symbol svg{width:13px;height:13px;flex:none;margin-top:2px}.check.error{color:var(--error)}.check.warning{color:var(--warning)}.check.ok .check-symbol{color:var(--success)}.version-empty{font-size:11px;line-height:1.7;color:var(--muted);margin:0}.version{padding:13px 0;border-bottom:1px solid #e5e6dd}.version:last-child{border-bottom:0}.version-heading{display:flex;gap:7px;align-items:flex-start;justify-content:space-between}.version-title{font-size:12px;font-weight:600;margin:0;word-break:break-word}.version-status{font-size:11px;color:#625c43;background:#eeeadc;padding:4px 6px;border-radius:4px;white-space:nowrap}.version-status.approved{background:#e5ece1;color:#31593a}.version-status.changes{background:#f0e2dc;color:#88442b}.version-meta{font-size:11px;color:var(--muted);margin:6px 0 10px;line-height:1.6}.version-actions{display:flex;gap:6px;flex-wrap:wrap}.version-actions button{font-size:11px;padding:7px 9px;min-height:31px}.version-decision{font-size:11px;line-height:1.6;color:var(--muted);margin:12px 0 0;word-break:break-word}.project-notes{padding-top:12px}textarea{resize:vertical;line-height:1.6}.project-notes textarea{font-size:11px;min-height:120px}.manufacturing-note{font-size:11px;line-height:1.65;color:var(--muted);padding-top:12px;margin:0}.object-list{display:flex;flex-direction:column;margin-bottom:16px}.object-button{display:flex;gap:10px;align-items:center;width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);text-align:left;padding:14px 5px;font-size:12px}.object-button[aria-pressed=true]{color:var(--green);background:#ecf0e7}.object-button svg{width:16px;height:16px;color:var(--muted)}.object-button span{flex:1}.object-button small{color:var(--muted);font-size:11px}.style-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.style-choice{background:transparent;border:1px solid var(--line);border-radius:7px;text-align:left;padding:8px;font-size:11px;line-height:1.5}.style-choice[aria-pressed=true]{border-color:var(--green);outline:1px solid var(--green)}.material-swatches{display:flex;height:42px;overflow:hidden;border-radius:3px;margin-bottom:7px}.material-swatches i{display:block;flex:1}.color-field{display:flex;align-items:center;justify-content:space-between;padding:9px 0}.color-field input{width:34px;height:28px;padding:2px;background:none;border:1px solid var(--line);border-radius:4px}input[type=range]{width:100%;accent-color:var(--green)}.reference-image{display:block;text-decoration:none;font-size:11px;line-height:1.5}.reference-image img{width:100%;height:135px;object-fit:cover;border-radius:6px;display:block;margin-bottom:7px}.custom-object-fields{margin-top:13px}.custom-object-fields .fields{margin-top:12px}.danger-button{color:var(--error)!important;border-color:#d7b5a9!important;margin-top:14px}
dialog{border:0;border-radius:13px;background:var(--panel);color:var(--ink);padding:25px;width:min(440px,calc(100% - 32px));box-shadow:0 18px 60px #14201533}dialog::backdrop{background:#15251b66}dialog h2{font-size:20px;font-weight:550;letter-spacing:-.025em}dialog p{font-size:12px;line-height:1.7;color:var(--muted);margin:16px 0}dialog label{margin:15px 0}dialog input:not([type=checkbox]){font-size:14px!important}dialog>.dialog-heading,.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.dialog-heading button{border:0;background:transparent;font-size:25px;color:var(--muted);padding:0 3px}.form-error{color:var(--error)!important;min-height:10px;margin:8px 0!important}.export-options{display:flex;flex-direction:column;gap:10px}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:20;background:#203b2d;color:#fffefa;padding:12px 18px;border-radius:8px;font-size:12px;box-shadow:0 5px 20px #17221c26;max-width:calc(100% - 32px);line-height:1.6}.sync-banner{position:absolute;left:18px;right:18px;bottom:115px;z-index:3;background:#fff5df;color:#704b14;padding:12px 15px;border-radius:6px;font-size:11px;line-height:1.7}.sync-banner button{margin-left:8px;border:0;background:none;text-decoration:underline;color:inherit}.mobile-navigation{display:none}.viewer .editor-panel{display:none}.viewer .studio{grid-template-columns:minmax(300px,1fr) 300px}.viewer #publishBtn,.viewer #shareBtn,.viewer #accessBtn,.viewer #projectNotes{display:none}.viewer .project-heading input{pointer-events:none}.snapshot-label{font-size:11px;color:#795317;margin:8px 0}.snapshot-back{border:0;background:none;padding:0;text-decoration:underline;color:var(--green);font-size:11px}
.viewport canvas{position:absolute;inset:0}.scene-unavailable{padding:50px 24px;line-height:1.7;color:var(--green);max-width:420px}.scene-unavailable+canvas{display:none}.viewport-bar{flex-wrap:wrap}.render-mode{margin:0}.render-mode select{margin:0;min-height:34px;font-size:11px;padding:7px 9px;background:#fffefa;border:0;box-shadow:0 3px 12px #29302309}.resource-add{margin-top:12px}
.plan-viewport{position:relative;flex:1;min-height:380px;overflow:auto;padding:105px 18px 24px;background:#fffefa;scrollbar-color:#8baf9e #ecf0e8}.plan-active .viewport-bar{background:#f8f7f3f2}.plan-active .orbit-hint{display:none}.plan-viewport svg{display:block;max-width:none}.plan-viewport:focus-visible{outline:2px solid var(--green);outline-offset:-3px}
.studio.plan-focus,.viewer .studio.plan-focus{grid-template-columns:minmax(0,1fr)}.studio.plan-focus>.editor-panel,.studio.plan-focus>.review-panel{display:none}
.sync-banner{position:static;flex:none;margin:0;border-radius:0;border-top:1px solid #dfcfae;padding:12px 20px}
@media(min-width:1550px){.studio{grid-template-columns:304px minmax(300px,1fr) 310px}.editor-panel{padding:26px 24px 0}.review-panel{padding:10px 24px 24px}.project-strip{padding:23px 25px}.app-header{gap:38px}}
@media(max-width:1200px){.studio{grid-template-columns:250px minmax(260px,1fr) 250px}.editor-panel{padding:20px 15px 0}.review-panel{padding:8px 15px 22px}.app-header{padding:0 18px;gap:20px}.brand{font-size:21px}.project-heading{padding-left:18px}.project-strip p{display:none}.scene-options{gap:7px}.viewport-bar{padding:14px 12px}.view-switch button{padding:7px 9px}.orbit-hint{display:none}.header-actions .quiet{max-width:75px;line-height:1.4}.header-actions .button{padding:9px 11px;font-size:11px}.viewer .studio{grid-template-columns:minmax(260px,1fr) 270px}}
@media(max-width:900px){.app-header{height:auto;min-height:78px;flex-wrap:wrap;gap:12px;padding:14px 16px}.brand{flex:1}.brand small{font-size:11px}.project-heading{order:3;width:100%;flex:auto;padding-left:0;border:0;display:flex;gap:12px;align-items:center;justify-content:space-between}.project-heading input{font-size:12px;min-height:24px}.connection{white-space:nowrap;margin:0;font-size:11px}.header-actions .button{min-height:35px;padding:8px 10px}.header-actions .quiet{font-size:11px;max-width:68px}.mobile-navigation{display:flex;gap:4px;padding:6px 16px;border-bottom:1px solid var(--line);background:var(--panel)}.mobile-navigation button{flex:1;background:none;border:0;border-radius:5px;font-size:12px;padding:9px}.mobile-navigation button[aria-pressed=true]{background:var(--subtle);color:var(--green);font-weight:600}.studio,.viewer .studio{display:block;height:auto;min-height:0}.editor-panel,.review-panel{display:none;border:0;overflow:visible;padding:22px 20px}.viewport-section{display:flex;height:calc(100dvh - 179px);min-height:480px}.studio[data-mobile-panel=edit] .viewport-section,.studio[data-mobile-panel=review] .viewport-section{display:none}.studio[data-mobile-panel=edit] .editor-panel,.studio[data-mobile-panel=review] .review-panel{display:block}.editor-panel{max-width:620px;margin:auto}.review-panel{max-width:620px;margin:auto}.viewport{min-height:320px}.scene-options label{font-size:11px}.viewport-bar{padding:12px 14px}.project-strip{padding:16px 18px}.project-strip strong{font-size:16px}.project-strip .button{font-size:11px;padding:8px 10px}.canvas-caption{padding:12px 18px}.fields{gap:16px}label{font-size:12px}input:not([type=checkbox]):not([type=range]):not([type=color]),select,textarea{min-height:42px;font-size:16px}.number-field>span{top:14px}.field-note{font-size:11px}.section-heading h2{font-size:13px}.selection-info,.version-empty{font-size:12px}.checks .check{font-size:11px}.editor-footer{position:static}.viewer [data-mobile=edit]{display:none}.viewer .header-actions{display:none}.viewer .project-heading{order:2}.version-actions button{min-height:40px;font-size:12px}}
@media(max-width:430px){.app-header{padding:12px}.brand{font-size:20px;gap:8px}.brand img{width:29px;height:29px}.brand small{display:none}.header-actions{gap:5px}.header-actions .quiet{font-size:11px;max-width:44px;padding:0}.header-actions .button{font-size:11px;padding:8px}.project-heading{flex-wrap:wrap;gap:3px}.project-heading input{max-width:100%;width:100%}.mobile-navigation{padding:5px 12px}.viewport-section{height:calc(100dvh - 186px)}.viewport-bar{gap:6px;padding:10px}.scene-options{gap:6px;padding:7px}.scene-options label{font-size:11px;gap:3px}.scene-options input{width:11px;height:11px}.view-switch button{padding:6px 8px;font-size:11px}.project-strip strong{font-size:14px}.project-strip{padding:14px;gap:8px}.project-strip>div{min-width:0}.project-strip .button{font-size:11px}.strip-label{font-size:11px}.sync-banner{bottom:103px}.toast{font-size:11px}}
@media(max-width:900px){.viewport-bar{flex-wrap:wrap;align-content:flex-start}.scene-options label{min-height:25px}.connection{white-space:normal}.header-actions{flex-wrap:wrap}.header-actions .quiet{max-width:none}.scene-options{gap:10px}.view-switch button{min-height:32px}.tabs button{min-height:40px}.version-meta,.version-decision,.field-note,.selection-info{font-size:12px}.check{font-size:12px!important}.project-strip .button{min-height:40px}.editor-footer button{min-height:44px}}
@media(max-width:900px){.studio.plan-focus[data-mobile-panel=edit]>.editor-panel,.studio.plan-focus[data-mobile-panel=review]>.review-panel{display:block}.canvas-caption>div{flex-wrap:wrap}}
@media(max-width:900px){.viewport-section{height:auto;min-height:0}.viewport-bar{position:relative;flex:none;top:auto;left:auto;right:auto}.viewport{height:360px;min-height:320px;flex:none}.plan-viewport{height:480px;min-height:0;flex:none;padding-top:20px}.sync-banner{padding:12px 16px}.project-strip strong{font-size:15px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
