:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#242a25;background:#f4f4ed;font-synthesis:none;accent-color:#345746;--green:#345746;--muted:#81867b;--line:#dee1d5;--paper:#f8f9f3;--ink:#242a25}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,select{font:inherit}button,a,summary{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:default;opacity:.4}button,input,select{outline:none}button:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible,[tabindex]:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid #a97a43;outline-offset:3px}svg{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}button svg{width:18px;height:18px;flex-shrink:0}[hidden]{display:none!important}.topbar{height:70px;padding:0 25px;display:flex;align-items:center;justify-content:space-between;background:var(--paper);border-bottom:1px solid var(--line);gap:15px}.brand{display:flex;align-items:center;gap:11px;white-space:nowrap}.brand>svg{width:30px;height:30px;color:var(--green);stroke-width:1.4}h1{font-size:19px;letter-spacing:.05em;font-weight:600;margin:0}.top-actions{display:flex;align-items:center;gap:8px}.connection-state{font-size:10px;color:#8b9284;margin-right:11px;white-space:nowrap}.text-button,.icon-button,.small-link{background:none;border:0;color:#656f60}.text-button{display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;padding:10px}.text-button:hover,.icon-button:hover,.small-link:hover{color:var(--green);background:#e9eddf}.text-button,.icon-button{border-radius:4px}.icon-button{height:32px;width:32px;display:flex;align-items:center;justify-content:center;font-size:23px;font-weight:300}.small-link{font-size:10px;padding:2px 4px;border-radius:3px}.layout{display:grid;grid-template-columns:226px minmax(0,1fr) 256px;height:calc(100dvh - 70px)}.input-panel,.output-panel{background:var(--paper);min-width:0}.input-panel{padding:24px 21px 18px;overflow:auto;display:flex;flex-direction:column;border-right:1px solid var(--line)}h2,h3,p{margin:0}h2{font-size:13px;letter-spacing:.03em;font-weight:600}h3{font-size:11px;font-weight:500;color:#929887;margin:0 0 13px;letter-spacing:.05em}.panel-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:19px;gap:8px}.panel-top>span{font-size:9px;color:#959d8a}.field{display:flex;flex-direction:column;gap:7px;font-size:12px;margin-bottom:13px;min-width:0}.field>span{color:#697261}.field>span i{font-family:Georgia,serif;font-size:12px;font-style:italic;color:#334f3b;display:inline-block;width:16px}.field input{width:100%;height:37px;min-width:0;border:1px solid #dce1d2;border-radius:4px;background:#fdfef8;color:#30382c;padding:8px 10px;transition:border-color .15s;font-size:14px;font-variant-numeric:tabular-nums}.field input:hover{border-color:#c3cbb7}.field input:focus{border-color:#5e7c5d;box-shadow:0 0 0 2px #526f4b10}.field input:disabled{background:#eff0e8;color:#8c9387}.field input::placeholder{color:#b2b8a8;font-size:11px}.number-wrap{position:relative}.number-wrap>span{position:absolute;right:10px;top:12px;font-size:9px;color:#a6ad9a;pointer-events:none}.number-wrap input{padding-right:34px}.number-wrap input::-webkit-inner-spin-button,.number-wrap input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.number-wrap input[type=number]{-moz-appearance:textfield}.order-field{margin-bottom:24px}.order-field input{font-size:11px}.field-section{margin-bottom:24px}.advanced{margin-top:2px;border-top:1px solid var(--line);padding-top:15px}.advanced>summary{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#6d7864;list-style:none;cursor:pointer;padding-bottom:12px}.advanced>summary::-webkit-details-marker{display:none}.advanced>summary svg{height:15px;width:15px;transition:transform .2s}.advanced[open]>summary svg{transform:rotate(180deg)}.advanced-content{padding-top:5px}.export-options{margin:20px 0 8px}.check-row{display:flex;align-items:center;gap:7px;cursor:pointer;font-size:10px;color:#65705b;line-height:1.4;padding:7px 0}.check-row input{margin:0;width:13px;height:13px;flex-shrink:0}.refresh-button{display:flex;align-items:center;justify-content:center;gap:7px;height:35px;width:100%;background:#e8eedf;color:#48613e;border:0;border-radius:4px;font-size:11px;margin-top:10px}.refresh-button:hover{background:#dfe8d3}.refresh-button svg{width:14px;height:14px}.state-dot{height:5px;width:5px;border-radius:50%;background:#879879;margin-left:7px}.state-dot[data-state=dirty]{background:#b38a45}.state-dot[data-state=error]{background:#bc7253}.state-dot[data-state=loading]{animation:pulse .8s infinite}.template-tag{display:flex;align-items:center;gap:7px;margin-top:auto;padding-top:26px;color:#9ba28e;font-size:10px;min-height:55px}.template-tag>svg{width:17px;height:17px}.template-version{margin-left:auto;font-size:8px;font-variant-numeric:tabular-nums}.workspace-stage{position:relative;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:#eff0e9}.stage-toolbar{height:64px;padding:17px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px;position:absolute;left:0;right:0;top:0;z-index:2;pointer-events:none}.view-tabs,.stage-tools{pointer-events:auto}.view-tabs{display:flex;gap:3px;padding:3px;border-radius:6px;background:#e2e6da;box-shadow:0 1px 1px #fff5}.view-tabs button{font-size:11px;padding:6px 15px;border:0;border-radius:4px;color:#7e8773;background:transparent;white-space:nowrap}.view-tabs button[aria-pressed=true]{background:#fafcf3;color:#3c5134;box-shadow:0 1px 3px #39482519}.stage-tools{display:flex;align-items:center;gap:12px}.preview-status{font-size:10px;color:#8e9881;white-space:nowrap}.scene-area{height:100%;width:100%;position:relative;overflow:hidden}.scene-area canvas{display:block;height:100%;width:100%;cursor:grab;touch-action:none}.scene-area canvas:active{cursor:grabbing}.model-corner{position:absolute;bottom:23px;left:23px;display:flex;align-items:center;gap:8px;pointer-events:none}.model-corner>span:first-child{font-size:9px;color:#97a086}.model-stage-label{font-size:9px;padding:3px 5px;border:1px solid #b4bd9d;color:#899473;border-radius:2px}.view-hint{position:absolute;right:23px;bottom:25px;font-size:10px;color:#a0a78f;pointer-events:none}.stage-overlay{position:absolute;inset:64px 0 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:17px;background:#eff0e9ed;z-index:3;padding:25px;text-align:center}.stage-overlay strong{font-size:12px;color:#78836b;font-weight:400;max-width:430px;line-height:1.7;white-space:pre-line}.stage-overlay[data-error=true] strong{color:#9f694f}.stage-overlay .secondary-button{font-size:11px}.spinner{height:25px;width:25px;border:2px solid #d3dbc7;border-top-color:#68845b;border-radius:50%;animation:spin .8s linear infinite}.die-area{height:100%;min-height:0;position:relative;padding-top:67px;display:flex;flex-direction:column;background:#f1f2eb}.net-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 23px;gap:10px;flex-shrink:0}.net-toolbar select{max-width:65%;font-size:10px;padding:6px 22px 6px 8px;color:#626f53;border:1px solid #dce2d1;border-radius:3px;background:#fbfcf5}.net-toolbar>span{font-size:9px;color:#a0a78e;white-space:nowrap}.net-canvas{min-height:0;flex:1;overflow:hidden;position:relative;touch-action:none;cursor:grab;display:flex;align-items:center;justify-content:center;padding:24px 34px 45px}.net-canvas:active{cursor:grabbing}.net-artboard{width:100%;height:100%;display:flex;align-items:center;justify-content:center;transform-origin:center;pointer-events:none;will-change:transform}.net-artboard svg{max-width:100%;max-height:100%;width:100%;height:100%;display:block;background:#fffffc;box-shadow:0 3px 16px #4851390b;stroke:none;stroke-linecap:initial;stroke-linejoin:initial}.die-legend{position:absolute;left:23px;bottom:22px;display:flex;gap:15px;font-size:9px;color:#929c80;pointer-events:none}.die-legend>span:before{content:"";display:inline-block;width:12px;height:1px;vertical-align:middle;margin-right:4px}.die-legend .cut:before{background:#bd6456}.die-legend .crease-front:before{background:#6486a3}.die-legend .crease-back:before{background:#a280b0}.die-legend .glue:before{background:#719560}.output-panel{display:flex;flex-direction:column;padding:24px 20px 20px;border-left:1px solid var(--line);overflow:auto}.output-content{flex:1}.key-dimensions{margin:0}.key-dimensions>div{margin:0 0 21px}.key-dimensions dt{font-size:10px;color:#8d967f;margin-bottom:8px}.key-dimensions dd{font-size:15px;line-height:1.4;font-weight:500;margin:0;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:#405035;overflow-wrap:anywhere}.key-dimensions>div:nth-child(2) dd{font-size:12px;color:#7d8970;font-weight:400}.cut-sheets{border-top:1px solid var(--line);padding:14px 0}.cut-sheets>summary{display:flex;align-items:center;justify-content:space-between;list-style:none;font-size:11px;cursor:pointer;color:#65745a}.cut-sheets>summary:after{content:"+";color:#9eaa90;font-size:14px}.cut-sheets[open]>summary:after{content:"−"}.cut-sheets>summary span{margin-left:auto;font-size:9px;color:#9ea88e;margin-right:10px}.cut-sheet-list{padding:7px 0 1px}.cut-sheet-row{display:grid;grid-template-columns:1fr auto;gap:5px;padding:8px 0;border-bottom:1px solid #e9ecdf;font-size:9px;color:#8a967b}.cut-sheet-row strong{font-size:10px;color:#647355;font-weight:500}.cut-sheet-row>span:last-child{grid-column:1/-1;font-size:9px}.part-controls{padding-top:16px;border-top:1px solid var(--line);margin-top:2px}.part-controls .panel-top{margin-bottom:9px}.piece-list{padding-bottom:13px}.piece-list .check-row{padding:5px 0;font-size:11px;gap:6px}.piece-swatch{height:7px;width:7px;border-radius:1px;flex-shrink:0;border:1px solid #0001}.range-label{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#8b977d;padding-top:10px}.range-label output{font-size:9px;font-variant-numeric:tabular-nums}input[type=range]{width:100%;height:21px;margin:6px 0 0;cursor:pointer;accent-color:#799266}.explosion-note{font-size:8px;color:#a99a72;display:block;text-align:right;margin-top:2px}.net-details{padding-top:17px;border-top:1px solid var(--line)}.net-details dl{font-size:10px;color:#879574;margin:12px 0}.net-details dl>div{display:flex;justify-content:space-between;gap:10px;padding:7px 0}.net-details dd{margin:0;text-align:right;color:#60744c}.warning-list{font-size:9px;line-height:1.65;color:#a28356;padding:13px 0}.warning-list>p+p{margin-top:7px}.generation-panel{padding-top:22px}.primary-button{height:42px;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:5px;background:var(--green);color:#fbfff4;font-size:13px;box-shadow:0 2px 3px #34472f13;white-space:nowrap}.primary-button:hover:not(:disabled){background:#294b3a}.primary-button>svg{height:16px;width:16px}.secondary-button{border:1px solid #d5deca;border-radius:4px;background:#fbfcf5;color:#6c7d5a;padding:9px 15px;font-size:12px}.job-status{padding-bottom:12px}.job-status-row{display:flex;justify-content:space-between;gap:10px;font-size:10px;color:#81926d;line-height:1.5}.job-status-row>span:last-child{font-size:9px;white-space:nowrap}.job-status progress{width:100%;height:4px;display:block;margin-top:9px;border:0;accent-color:#83a06a;border-radius:2px;overflow:hidden;background:#e5eadb}.job-status progress::-webkit-progress-bar{background:#e5eadb}.job-status progress::-webkit-progress-value{background:#83a06a}.job-status progress::-moz-progress-bar{background:#83a06a}.job-status[data-error=true] .job-status-row{color:#af7658}.download-result{padding-top:11px}.download-result>a{font-size:11px;color:#5e7d49;display:flex;justify-content:space-between;text-decoration:none;padding:5px 0}.download-result details{font-size:9px;color:#9baa8a;padding-top:8px}.download-result summary{cursor:pointer}.download-result details a{color:#819b6c;text-decoration:none;display:flex;gap:8px;justify-content:space-between;padding:6px 0;overflow-wrap:anywhere;line-height:1.5}.download-result details a span{color:#abb79d;flex-shrink:0;font-size:8px}.page-error{background:#fbefde;color:#9c7352;font-size:11px;padding:11px 25px;display:flex;justify-content:space-between;align-items:center;gap:15px;position:absolute;left:226px;right:256px;top:70px;z-index:10;box-shadow:0 3px 6px #6b63450a;line-height:1.6}.page-error button{background:none;border:0;font-size:19px;color:#b09d84;padding:0 4px}dialog{width:420px;max-width:calc(100vw - 32px);border:1px solid #d8dfca;border-radius:9px;padding:23px;background:#fafcf4;color:#4e5f3e;box-shadow:0 15px 70px #25331928}dialog::backdrop{background:#23302132;backdrop-filter:blur(3px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:15px}.dialog-heading h2{font-size:15px}.dialog-heading .icon-button{margin:-9px -8px -9px 0;color:#a0ad8d}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.dialog-actions .primary-button{width:auto;padding:0 23px;height:37px}.dialog-actions .secondary-button{padding:8px 18px}.plans-list{max-height:50dvh;overflow:auto;min-height:55px}.plan-row{width:100%;text-align:left;border:0;background:none;border-bottom:1px solid #e2e8d6;padding:13px 5px;color:#5a7047;display:flex;align-items:center;justify-content:space-between;gap:15px}.plan-row:hover{background:#eff4e5}.plan-row>div{min-width:0}.plan-row strong{font-size:12px;font-weight:500;display:block;overflow-wrap:anywhere}.plan-row small{font-size:9px;color:#a0b08b;display:block;margin-top:6px}.plan-row>span{font-size:17px;color:#a6b595}.empty-state{font-size:11px;line-height:1.7;color:#98a985;padding:15px 0}.form-error{font-size:10px;color:#ae7757;line-height:1.6}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);font-size:11px;line-height:1.7;padding:10px 17px;background:#3b5334;color:#f7ffed;border-radius:5px;z-index:20;max-width:85vw;text-align:center;box-shadow:0 3px 15px #24351c20}.page-error:not([hidden])~.layout .stage-toolbar{top:35px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.25}}
@media(min-width:1600px){.layout{grid-template-columns:245px minmax(0,1fr) 285px}.input-panel{padding:27px}.output-panel{padding:27px 25px}.page-error{left:245px;right:285px}.key-dimensions dd{font-size:17px}}
@media(max-width:1100px){.layout{grid-template-columns:210px minmax(0,1fr) 228px}.input-panel{padding:21px 16px}.output-panel{padding:21px 16px}.stage-toolbar{padding:17px 15px}.view-tabs button{padding:6px 11px}.stage-tools{gap:4px}.preview-status{display:none}.key-dimensions dd{font-size:13px}.page-error{left:210px;right:228px}.topbar{padding:0 20px}}
@media(max-width:900px){body{overflow:auto}.layout{height:auto;min-height:calc(100dvh - 70px);grid-template-columns:210px minmax(0,1fr);grid-template-rows:minmax(480px,65dvh) auto}.input-panel{grid-row:1/span 2}.workspace-stage{grid-column:2;grid-row:1}.output-panel{grid-column:2;grid-row:2;display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:22px;border-top:1px solid var(--line);overflow:visible}.output-content{min-width:0}.generation-panel{align-self:end;padding:0 0 6px}.part-controls{margin-top:12px}.piece-list{display:grid;grid-template-columns:1fr 1fr;gap:0 8px}.piece-list .check-row{font-size:9px}.page-error{left:210px;right:0}.connection-state{display:none}.view-hint{font-size:9px}.stage-overlay{inset:64px 0 0}.template-tag{padding-top:25px}.cut-sheets{padding-bottom:4px}.net-toolbar{padding:10px 15px}.net-toolbar>span{display:none}}
@media(max-width:600px){.topbar{padding:12px 15px;height:auto;min-height:67px;align-items:center;gap:8px}.brand{gap:7px}.brand>svg{width:24px;height:24px}h1{font-size:16px;letter-spacing:.02em}.top-actions{gap:0}.text-button{font-size:10px;gap:4px;padding:8px 6px}.text-button>svg{height:13px;width:13px}.layout{display:flex;flex-direction:column;min-height:0}.workspace-stage{order:1;height:58dvh;min-height:360px;max-height:550px;flex-shrink:0}.input-panel{order:2;border-right:0;border-top:1px solid var(--line);padding:22px 18px 16px;overflow:visible}#parameter-form{display:grid;grid-template-columns:1fr 1fr;column-gap:18px}.panel-top,.order-field,.advanced,.refresh-button{grid-column:1/-1}.order-field{margin-bottom:20px}.field-section{margin-bottom:9px}.field input{font-size:15px;min-height:39px}.order-field input{font-size:12px}.material-fields h3{margin-bottom:13px}.advanced-content{display:grid;grid-template-columns:1fr 1fr;column-gap:18px}.export-options{grid-column:1/-1;margin-top:10px}.export-options .check-row{display:inline-flex;margin-right:15px}.refresh-button{margin-top:3px}.template-tag{display:none}.output-panel{order:3;border-left:0;display:flex;padding:22px 18px;gap:0}.output-content{width:100%;display:grid;grid-template-columns:1fr 1fr;column-gap:18px}.output-content>.panel-top{grid-column:1/-1}.key-dimensions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:18px}.key-dimensions dd{font-size:13px}.key-dimensions>div:nth-child(2) dd{font-size:11px}.cut-sheets{grid-column:1/-1}.part-controls,.net-details,.warning-list{grid-column:1/-1}.piece-list{grid-template-columns:1fr 1fr}.piece-list .check-row{font-size:10px}.generation-panel{align-self:stretch;padding:20px 0 0}.primary-button{height:43px}.stage-toolbar{height:59px;padding:13px 15px}.view-tabs button{padding:7px 14px}.model-corner{left:15px;bottom:18px}.view-hint{right:15px;bottom:20px;font-size:8px}.stage-overlay{inset:59px 0 0}.die-area{padding-top:59px}.net-canvas{padding:20px 18px 40px}.die-legend{left:15px;bottom:18px;gap:10px;font-size:8px}.net-toolbar{padding:8px 15px}.net-toolbar select{max-width:100%;width:100%}.page-error{position:fixed;left:0;right:0;top:67px;padding:10px 15px}.stage-tools .icon-button{width:28px}.dialog-heading{margin-bottom:18px}.toast{bottom:15px}.field-section h3{font-size:11px}.cut-sheet-list{display:grid;grid-template-columns:1fr 1fr;column-gap:15px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.key-dimensions dt>span{display:inline-block;font-size:8px;color:#a8b09a;margin-left:5px;white-space:nowrap}

/* 生产输入与尺寸采用常规可读字号，单位与辅助状态保持次级层次。 */
h2{font-size:14px}h3{font-size:12px}.field{font-size:13px}.key-dimensions dt{font-size:12px}.key-dimensions dt>span{font-size:9px}.piece-list .check-row{font-size:12px;padding:6px 0}.range-label{font-size:12px}.range-label output{font-size:10px}.primary-button{font-size:14px}.cut-sheets>summary{font-size:12px}.cut-sheet-row{font-size:11px}.cut-sheet-row strong{font-size:12px}.cut-sheet-row>span:last-child{font-size:11px}.net-toolbar select{font-size:12px}.net-toolbar>span{font-size:10px}.net-details dl{font-size:12px}.die-legend{font-size:11px}.check-row{font-size:12px}.view-tabs button{font-size:12px}.warning-list{font-size:11px}.small-link{font-size:11px}
@media(max-width:900px){.piece-list .check-row{font-size:11px}}
@media(max-width:600px){.workspace-stage{position:sticky;top:0;z-index:4;height:42dvh;min-height:280px;max-height:360px;border-bottom:1px solid #d8decd}.input-panel{position:relative;z-index:1}.key-dimensions dt{font-size:11px}.piece-list .check-row{font-size:11px}.field{font-size:12px}.die-legend{font-size:9px}.net-toolbar select{font-size:11px}.view-tabs button{font-size:12px}.key-dimensions dt>span{font-size:8px;margin-left:0;display:block;margin-top:3px}.output-panel h2{font-size:13px}}

.stage-pose-slot{position:absolute;z-index:2}
@media(min-width:601px) and (max-width:900px) and (max-height:600px){.stage-pose-slot{bottom:0;left:20px;right:20px;height:68px;background:#eff0e9;border-top:1px solid #dce2d0}.stage-pose-slot #pose-controls{display:grid;grid-template-columns:1fr 1fr;column-gap:28px;position:relative}.stage-pose-slot label[for=opening]{grid-column:1;grid-row:1}.stage-pose-slot #opening{grid-column:1;grid-row:2}.stage-pose-slot label[for=explosion]{grid-column:2;grid-row:1}.stage-pose-slot #explosion{grid-column:2;grid-row:2}.stage-pose-slot .explosion-note{position:absolute;right:0;top:46px;font-size:8px}.scene-area canvas{height:calc(100% - 68px)}.model-corner{bottom:87px}.view-hint{bottom:89px}}
@media(max-width:600px){html{scroll-padding-top:clamp(295px,calc(42dvh + 15px),375px)}}
@media(min-width:601px) and (max-width:900px) and (max-height:600px){.layout{grid-template-rows:calc(100dvh - 70px) auto}}

/* 窄屏生产动作固定就近；按内容实测高度给正文留位。 */
@media(max-width:600px){
 .layout{padding-bottom:calc(var(--generation-height,80px) + 16px)}
 html{scroll-padding-bottom:calc(var(--generation-height,80px) + 16px)}
 .generation-panel{position:fixed;left:0;right:0;bottom:0;z-index:8;padding:12px max(16px,env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));background:#f8f9f3;border-top:1px solid #d5ddc8;box-shadow:0 -5px 18px #35472a0a;max-height:52dvh;overflow:auto;overscroll-behavior:contain}
 .generation-panel .job-status{padding-bottom:10px}
 .generation-panel .download-result{padding-top:7px}
 .generation-panel .download-result details{padding-top:5px}
 .generation-panel #generated-files{max-height:120px;overflow:auto;overscroll-behavior:contain}
 .toast{bottom:calc(var(--generation-height,80px) + 12px)}
}
/* 必要生产信息保持足够对比度。 */
.key-dimensions dt,.key-dimensions dt>span,h3,.number-wrap>span,.panel-top>span,.net-toolbar>span{color:#68725f}
.key-dimensions dt>span,.number-wrap>span,.panel-top>span{font-size:10px}
