:root{--ink:#263a32;--soft:#748076;--gold:#a48c60;--paper:#f4f3ee;--line:#dddeda;--white:#fff;--serif:Georgia,'Songti SC','SimSun',serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.65 'Microsoft YaHei',sans-serif}button,input,select,textarea{font:inherit}button,.button{cursor:pointer;border:1px solid var(--ink);border-radius:5px;background:var(--ink);color:white;padding:11px 20px;font-size:14px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}button:hover,.button:hover{filter:brightness(1.1)}button:disabled{opacity:.4;cursor:not-allowed}.secondary{background:white;color:var(--ink);border-color:var(--line)}.quiet{border:0;background:transparent;color:var(--ink);padding:6px 8px}.muted{color:var(--soft)}.small,small{font-size:12px}header{height:88px;padding:0 4vw;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:32px}header img{width:167px;height:auto;display:block}header span{border-left:1px solid var(--line);padding-left:28px;font-size:13px;letter-spacing:2px}header i{display:block;font-size:9px;font-style:normal;letter-spacing:3px;color:var(--gold)}header button{margin-left:auto}main{max-width:1680px;margin:auto;padding:38px 4vw 0}.intro{display:flex;align-items:center;justify-content:space-between;padding:10px 0 30px}.eyebrow{font-size:10px;letter-spacing:3px;color:var(--gold);margin:0 0 12px}h1{font:32px/1.4 var(--serif);letter-spacing:2px;margin:10px 0 12px}h2{font:24px/1.5 var(--serif);margin:0 0 15px}h3{margin:0;font-size:17px}.intro p:not(.eyebrow){color:var(--soft);font-size:14px;margin:0}.edition{font-size:10px;letter-spacing:3px;text-align:right;color:var(--gold)}.steps{display:flex;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:24px}.steps span{flex:1;padding:18px 15px;color:#92978f;font-size:14px}.steps b{font:20px var(--serif);padding-right:12px}.steps .active{color:var(--ink);box-shadow:inset 0 -2px var(--gold)}.upload-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;padding:20px 24px;border:1px solid var(--line);border-radius:8px}.upload-bar>div{flex:1;min-width:190px}.upload-bar p{margin:4px 0 0;color:var(--soft);font-size:12px}.upload-bar details{font-size:12px;position:relative}.upload-bar details[open] .button{position:absolute;right:0;top:30px;white-space:nowrap;z-index:2}.task{padding:18px 24px;background:#e9eee7;border-radius:7px;margin-top:16px}.task>div{display:flex;justify-content:space-between}.task p{font-size:12px;margin:5px 0}progress{width:100%;height:7px;accent-color:var(--ink)}#message{font-size:13px;color:#945236;min-height:20px;margin:12px 0}.workspace{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(320px,1fr);gap:22px;align-items:start}.drawing,.materials{background:white;border:1px solid var(--line);border-radius:8px;min-width:0}.drawing{position:sticky;top:18px}.drawing-head{padding:22px 24px 8px;display:flex;justify-content:space-between;align-items:center;gap:12px}.drawing-head h2{font-size:20px}.drawing-head select{max-width:140px}.canvas-wrap{background:#eceee9;margin:0 18px;position:relative;overflow:hidden;border-radius:5px}canvas{display:block;width:100%;height:auto;cursor:crosshair;touch-action:pan-y}.empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse,#f7f7f2,#e9ece4);pointer-events:none}.empty span{font:68px var(--serif);color:#a4b09c}.empty p{text-align:center;color:var(--soft);font-size:13px}.view-footer{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;font-size:12px;gap:8px}.view-footer button{font-size:12px;white-space:nowrap}.adjust{border-top:1px solid var(--line);padding:14px 20px;font-size:12px}.adjust summary{cursor:pointer;font-size:13px}.adjust small{color:var(--soft);margin-left:10px}.tools{display:flex;gap:7px;flex-wrap:wrap}.tools button,.tools select{font-size:12px;padding:6px 8px}.review-check{display:flex;padding:14px 20px;border-top:1px solid var(--line);gap:10px;font-size:12px;align-items:flex-start}.review-check input{accent-color:var(--ink);margin-top:4px}.materials{padding:25px 23px}.materials h2{font-size:21px}.parts{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:20px 0}.parts button{background:#f7f7f3;color:#69746b;border:1px solid #e5e6df;font-size:12px;position:relative;padding:10px 4px;min-height:44px}.parts button.active{background:var(--ink);color:white;border-color:var(--ink)}.parts button.done:after{content:'✓';position:absolute;right:3px;top:-1px;font-size:9px;color:var(--gold)}.part-heading{display:flex;align-items:center;justify-content:space-between}.part-heading span{font-size:12px;color:var(--soft)}#part-hint{font-size:12px;min-height:40px}.selected-product{background:#f3f4ee;border-radius:4px;padding:10px;display:flex;align-items:center;gap:12px;font-size:12px;min-height:64px}.selected-product img{width:48px;height:48px;object-fit:contain;background:white}.texture-tools{display:flex;gap:15px;padding:15px 0;font-size:12px;align-items:center}.texture-tools label{display:flex;align-items:center;gap:8px}.texture-tools input{width:85px;accent-color:var(--ink)}input[type=search],select,textarea{border:1px solid var(--line);border-radius:4px;padding:9px 10px;background:white;color:var(--ink);min-width:0}.filters{display:flex;gap:8px;margin:0 0 14px}.filters input{width:100%;font-size:12px}.filters select{max-width:100px;font-size:12px}.product-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:420px;overflow:auto;padding:2px}.product{display:flex;flex-direction:column;text-align:left;align-items:stretch;padding:7px;background:white;color:var(--ink);border:1px solid var(--line);gap:4px;font-size:11px;min-width:0}.product.selected{border:2px solid var(--gold);padding:6px;background:#faf7ef}.product img{width:100%;height:86px;object-fit:contain;background:#f8f8f5}.product strong{font-size:12px;overflow-wrap:anywhere}.product span{color:var(--soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-empty{grid-column:1/-1;padding:24px 8px;color:var(--soft);font-size:13px}#absent{font-size:12px;margin-top:10px}.confirmation{margin-top:28px;background:white;border:1px solid var(--line);padding:30px;border-radius:8px}.confirmation>div>p:not(.eyebrow){font-size:13px;color:var(--soft)}.summary{display:grid;grid-template-columns:repeat(7,1fr);gap:9px;margin:20px 0}.summary article{border:1px solid var(--line);padding:10px;font-size:12px;border-radius:5px}.summary img{width:100%;height:65px;object-fit:contain}.summary b,.summary small{display:block;overflow-wrap:anywhere}.summary small{color:var(--soft)}.notes{font-size:13px;display:block}.notes textarea{width:100%;min-height:80px;display:block;margin-top:7px;resize:vertical}.confirm-row{display:flex;align-items:center;gap:20px;margin-top:20px}.confirm-row span{color:var(--soft);font-size:12px}.result{padding:32px;background:white;border:1px solid var(--line);margin-top:28px;border-radius:8px}.result>img{display:block;width:100%;max-height:900px;object-fit:contain;background:#f5f5f2}.result-actions{display:flex;gap:12px;margin-top:20px}.result p{font-size:13px}footer{display:flex;justify-content:space-between;gap:20px;padding:30px 0;color:var(--soft);font-size:11px}dialog{border:1px solid var(--line);border-radius:8px;padding:30px;max-width:540px;width:90%;color:var(--ink)}dialog::backdrop{background:#17271f80}dialog p{font-size:13px;color:var(--soft)}#confirm-list p{display:flex;justify-content:space-between;gap:12px;padding-bottom:8px;border-bottom:1px solid var(--line)}.dialog-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}[hidden]{display:none!important}:focus-visible{outline:3px solid #bda576;outline-offset:3px}
@media(max-width:1000px){.workspace{grid-template-columns:minmax(0,1.3fr) minmax(300px,1fr)}.texture-tools{flex-wrap:wrap}.summary{grid-template-columns:repeat(4,1fr)}.drawing-head{align-items:flex-start;flex-direction:column}.drawing-head select{margin-bottom:10px}.materials{padding:20px 15px}}@media(max-width:760px){header{height:70px;gap:14px;padding:0 18px}header img{width:126px}header span{font-size:10px;padding-left:14px;letter-spacing:0}header i{display:none}header button{font-size:11px;padding:5px}main{padding:22px 16px 0}h1{font-size:25px;letter-spacing:0}.intro{padding-bottom:23px}.intro p:not(.eyebrow){font-size:12px}.edition{display:none}.steps span{padding:13px 4px;font-size:12px}.steps b{font-size:16px;padding-right:5px}.upload-bar{padding:16px;gap:8px}.upload-bar>div{flex-basis:100%}.upload-bar button,.upload-bar .button{font-size:12px;padding:9px 12px}.workspace{display:flex;flex-direction:column;gap:18px}.drawing,.materials{width:100%;position:static}.drawing-head{flex-direction:row;padding:17px 15px 6px}.drawing-head h2{font-size:17px}.drawing-head select{font-size:11px;max-width:115px}.drawing-head .eyebrow{font-size:9px}.canvas-wrap{margin:0 10px}.view-footer{padding:10px 12px;flex-wrap:wrap}.materials{padding:22px 18px}.parts{grid-template-columns:repeat(4,1fr)}.product-list{max-height:360px;grid-template-columns:repeat(3,minmax(0,1fr))}.product img{height:95px}.confirmation{padding:22px 16px}.confirmation h2{font-size:21px}.summary{grid-template-columns:repeat(3,1fr)}.confirm-row{flex-direction:column;align-items:stretch;gap:10px}.result{padding:20px 12px}.result-actions{flex-wrap:wrap}.task{padding:15px}.task>div{font-size:12px}footer{font-size:10px;flex-direction:column;gap:5px}}

.alignment{padding:14px 0;border-top:1px solid var(--line);margin-top:14px}.alignment label{display:inline-flex;gap:8px;align-items:center;margin:6px 16px 6px 0}.alignment input{width:110px;accent-color:var(--ink)}

.region-editor { margin-top:20px; border:1px solid #d5dec9; border-radius:5px; padding:16px; background:#fafbf5; }
.region-editor-head { display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.region-editor-head h3 { margin:0; color:#204b3b; font-size:17px; font-weight:500; }
.region-editor-head span { font-size:11px; color:#69785c; }
.region-editor-tools { display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; }
.region-editor-tools label { display:flex; align-items:center; gap:6px; font-size:12px; color:#40543b; }
.region-editor-tools input[type="range"] { width:85px; accent-color:#315b47; }
.region-editor-tools output { min-width:26px; font-size:11px; font-variant-numeric:tabular-nums; }
.region-editor-tools select,.region-tool-group button { background:white; color:#234b3c; border:1px solid #cbd6be; border-radius:4px; padding:8px 10px; font:inherit; }
.region-tool-group { display:flex; flex-wrap:wrap; gap:5px; max-width:100%; }
.region-tool-group button { font-size:12px; cursor:pointer; }
.region-tool-group button[aria-pressed="true"] { background:#214d3b; color:white; border-color:#214d3b; }
.region-editor-rule { font-size:12px; color:#59694d; line-height:1.7; margin:13px 0; }
.region-editor-viewport { overflow:auto; max-height:70vh; background:#e9ecdf; border:1px solid #d2dac4; border-radius:3px; overscroll-behavior:contain; }
.region-editor-scene { position:relative; width:100%; line-height:0; }
.region-editor-scene canvas { display:block; width:100%; height:auto; touch-action:none; cursor:crosshair; }
.region-brush-cursor { position:absolute; transform:translate(-50%,-50%); border:1px solid white; outline:1px solid #20553d; border-radius:0; pointer-events:none; box-sizing:border-box; }
.region-brush-cursor[data-tool="erase"] { outline-color:#b43c35; }
.region-editor-legend { display:flex; flex-wrap:wrap; gap:7px 15px; font-size:11px; color:#647354; margin:11px 0; }
.region-editor-legend span::before { content:""; display:inline-block; width:8px; height:8px; margin-right:5px; background:rgba(193,157,88,.333333); border-radius:2px; }
.region-editor-legend span:nth-child(2)::before { background:#20b973; }
.region-editor-legend span:nth-child(3)::before { background:#dc423a; }
.region-editor-actions { display:flex; flex-wrap:wrap; gap:8px; }
.region-editor-caution { font-size:11px; line-height:1.7; color:#7b6e4e; margin:10px 0 0; }
.region-editor .model-status { font-size:12px; color:#31553c; }
.region-editor button:focus-visible,.region-editor canvas:focus-visible { outline:2px solid #a77825; outline-offset:2px; }
@media(max-width:600px) { .region-editor { padding:12px; } .region-editor-tools { gap:10px; } .region-editor-tools input[type="range"] { width:70px; } .region-editor-actions .button { padding:10px 12px; font-size:12px; } }

.brush-launch{margin:12px 0}.adjust>.region-editor{margin:16px 0}.region-editor .primary{background:var(--ink);color:white}.region-editor .button{font-size:12px;padding:9px 13px}.region-editor .model-status{line-height:1.7}.drawing.region-editing{position:static}

.layout-panel { background:#fff; border:1px solid var(--line); border-radius:8px; padding:22px 24px; }
.layout-heading { display:flex; align-items:start; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.layout-heading h2 { margin:0 0 6px; }
.layout-heading p:not(.eyebrow) { font-size:13px; color:var(--soft); margin:0 0 12px; }
.layout-fields, .layout-parts, .facade-downloads { display:flex; flex-wrap:wrap; align-items:center; gap:10px 18px; }
.layout-fields label { display:flex; align-items:center; gap:8px; font-size:13px; }
.layout-parts { border:0; padding:3px 0 0; margin:13px 0 17px; font-size:13px; min-inline-size:0; }
.layout-parts legend { color:var(--soft); padding:0; }
.layout-parts input { accent-color:var(--ink); }
.photo-options { margin-top:12px; }
.photo-options > summary { cursor:pointer; color:var(--soft); font-size:13px; }
.photo-options .upload-bar { margin-top:8px; }
.facade-downloads { gap:0 4px; }
@media(max-width:760px) { .layout-panel { padding:16px; } .layout-fields { gap:7px 12px; } }

.upload-bar + .layout-panel { margin-top: 14px; }

.alignment-comparison{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.alignment-comparison figure{margin:0;min-width:0}
.alignment-comparison img{display:block;width:100%;height:auto;background:#f5f5f2}
.alignment-comparison figcaption{margin:0 0 8px}
@media(max-width:700px){.alignment-comparison{grid-template-columns:1fr}}
