:root{--paper:#f4f2eb;--white:#fffefa;--ink:#1d2924;--muted:#7d8980;--line:#e6e5dc;--green:#24483a;--green-2:#426e55;--lime:#b9cd79;--orange:#dc764a;--shadow:0 14px 40px rgba(36,52,44,.08);--ui:'Microsoft YaHei UI','Microsoft YaHei','Noto Sans CJK SC',sans-serif;--mono:'Cascadia Mono','Consolas',monospace}
*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--ui);font-size:13px;overflow:hidden}button,input{font:inherit}button{color:inherit}.topbar{height:72px;background:#fbfaf5;border-bottom:1px solid #eae8df;display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:relative;z-index:5}.brand{display:flex;align-items:center;gap:12px;min-width:220px}.brand>div:last-child{display:grid;gap:2px}.brand strong{font-size:18px;letter-spacing:.08em;line-height:1}.brand small{font-family:var(--mono);font-size:8px;letter-spacing:.12em;color:#889187}.brand-mark{width:29px;height:29px;border-radius:8px;background:var(--green);display:flex;align-items:center;justify-content:center;gap:2px;transform:rotate(-8deg)}.brand-mark span{width:4px;height:15px;background:#f4f1e5;border-radius:4px;display:block}.brand-mark span:nth-child(2){height:20px;background:#d5e3a0}.brand-mark span:nth-child(3){height:11px;background:#f1a269}.top-center{position:absolute;left:50%;transform:translateX(-50%);color:#68766e;font-size:11px;letter-spacing:.01em}.status-dot{width:7px;height:7px;display:inline-block;border-radius:50%;background:#83a967;margin-right:7px;box-shadow:0 0 0 3px rgba(131,169,103,.13)}.top-actions{display:flex;align-items:center;gap:9px}.quiet-button{border:1px solid var(--line);background:#fffefa;border-radius:9px;padding:9px 12px;color:#59665e;font-size:11px;cursor:pointer;transition:.18s}.quiet-button:hover{border-color:#bcc7b9;color:var(--green)}.button-icon{font-size:14px;margin-right:6px;color:#4a6a54}
.app-shell{height:calc(100vh - 72px);display:grid;grid-template-columns:376px minmax(0,1fr);gap:0}.sidebar{background:#fbfaf5;border-right:1px solid #e4e2d9;overflow:auto;padding:25px 24px 18px;scrollbar-width:thin;scrollbar-color:#c5c8bb transparent}.panel-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;font-size:9px;color:#8e9a8f;margin:0 0 7px}.panel-heading h1{font-size:21px;margin:0;font-weight:700;letter-spacing:-.03em}.muted{font-size:11px;color:#7f8981;margin:7px 0 0}.reset-round{width:30px;height:30px;border:1px solid var(--line);border-radius:50%;background:#fffefa;color:#748177;font-size:18px;cursor:pointer}.type-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:20px}.type-card{height:65px;border:1px solid #e9e8df;border-radius:10px;background:#fffefa;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#657269;transition:.15s;position:relative}.type-card:hover{border-color:#aab9a5;transform:translateY(-1px)}.type-card.active{background:#e8eee3;border-color:#829b80;color:#274a39;box-shadow:inset 0 0 0 1px rgba(56,90,64,.06)}.type-card .type-icon{height:21px;font-size:18px;line-height:21px;color:#557157}.type-card.active .type-icon{color:#31543d}.type-card .type-name{font-size:10px;font-weight:600;white-space:nowrap}.type-card .new-dot{position:absolute;top:6px;right:7px;width:4px;height:4px;border-radius:100%;background:#dc764a}
.controls-section{border-top:1px solid var(--line);padding:16px 0 14px}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 12px}.section-title>span{font:9px var(--mono);color:#a0a99f}.section-title h2{font-size:12px;margin:0;font-weight:700}.section-title i{font:9px var(--mono);color:#a2aaa0;margin-left:auto}.dimension-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.dimension-field label{display:block;color:#859087;font-size:10px;margin-bottom:5px}.dimension-field .symbol{font:9px var(--mono);color:#365640;margin-right:3px}.number-shell{height:34px;background:white;border:1px solid #e4e6dc;border-radius:7px;display:flex;align-items:center;padding:0 8px}.number-shell:focus-within{border-color:#92a88f;box-shadow:0 0 0 2px rgba(84,122,82,.08)}.number-shell input{border:0;outline:0;background:transparent;width:100%;font:12px var(--mono);color:#26352d;padding:0}.number-shell em{font:9px var(--mono);color:#a0a89f;font-style:normal}.dimension-note{font-size:9px;color:#8b938a;line-height:1.6;display:flex;gap:6px;margin-top:9px}.note-mark{font:9px Georgia;color:#66836b;border:1px solid #cbd7c7;border-radius:50%;width:13px;height:13px;line-height:12px;text-align:center;flex:none}.slider-list{display:grid;gap:12px}.slider-field .slider-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.slider-field label{font-size:10px;color:#737f76}.slider-field .value{font:10px var(--mono);color:#40584a}.range-number{display:flex;align-items:center;gap:10px}.range-number input[type=range]{flex:1;min-width:0;appearance:none;height:3px;background:#dce0d5;border-radius:3px;outline:none}.range-number input[type=range]::-webkit-slider-thumb{appearance:none;width:13px;height:13px;border:2px solid white;border-radius:50%;background:#52795e;box-shadow:0 0 0 1px #52795e;cursor:pointer}.range-number input[type=range]::-moz-range-thumb{width:10px;height:10px;border:2px solid white;border-radius:50%;background:#52795e;box-shadow:0 0 0 1px #52795e;cursor:pointer}.range-number input[type=number]{width:43px;text-align:right;border:0;background:transparent;outline:0;font:10px var(--mono);color:#41584a}.switch-line{position:relative;display:flex;justify-content:space-between;align-items:center;margin:0 0 13px;cursor:pointer}.switch-line span:first-child{display:flex;flex-direction:column;gap:2px}.switch-line b{font-size:10px;font-weight:600}.switch-line small{font-size:9px;color:#8a958c}.switch-line input{position:absolute;opacity:0;right:0}.switch-ui{width:31px;height:17px;background:#cfd5cb;border-radius:12px;position:relative;transition:.18s}.switch-ui:after{content:'';position:absolute;left:2px;top:2px;width:13px;height:13px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0002;transition:.18s}.switch-line input:checked+.switch-ui{background:#56795e}.switch-line input:checked+.switch-ui:after{left:16px}.fit-note{display:flex;gap:7px;padding:9px 10px;background:#f0f1e9;border-radius:8px;color:#758074;font-size:9px;line-height:1.55;margin-top:12px}.fit-icon{font-size:15px;color:#627c62;line-height:13px}.micro-copy{font-size:9px;color:#939c92;margin:8px 0 0}.sidebar-footer{border-top:1px solid var(--line);padding-top:13px}.text-button{padding:0;border:0;background:transparent;color:#526d58;font-size:10px;cursor:pointer}.text-button span{margin-left:5px}.footer-copy{display:flex;justify-content:space-between;margin-top:14px;color:#a0a79e;font:8px var(--mono);text-transform:uppercase;letter-spacing:.04em}
.workspace{min-width:0;height:100%;padding:26px 32px 18px;display:flex;flex-direction:column;overflow:auto}.workspace-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.preview-kicker{display:flex;align-items:center;gap:8px;font-size:10px;color:#88938a}.live-pill{background:#e5eddf;color:#547451;border-radius:4px;padding:3px 5px;font:8px var(--mono);letter-spacing:.06em}.divider-dot{color:#b0b8ae}.workspace-head h2{margin:8px 0 0;font-size:20px;font-weight:700;letter-spacing:-.03em}.edit-pencil{font-size:12px;color:#a7b1a5;margin-left:3px}.view-actions{display:flex;align-items:center;gap:5px}.view-button{width:32px;height:31px;border:1px solid transparent;border-radius:8px;background:transparent;color:#87938a;font-size:16px;cursor:pointer}.view-button:hover,.view-button.active{color:#345943;background:#e9eee4;border-color:#dbe4d7}.view-divider{height:18px;width:1px;background:#dddcd3;margin:0 4px}.stage-wrap{position:relative;min-height:320px;flex:1;display:flex;flex-direction:column;margin-bottom:14px}.stage{position:relative;flex:1;min-height:320px;border-radius:15px;overflow:hidden;background:radial-gradient(ellipse at 48% 39%,#eef0e7 0%,#e6e9df 56%,#e0e5da 100%);border:1px solid #dfe3d8;box-shadow:inset 0 1px 0 rgba(255,255,255,.72)}.stage:before{content:'';position:absolute;inset:0;background-image:radial-gradient(#667662 0.55px,transparent .55px);background-size:24px 24px;opacity:.14;pointer-events:none}.stage canvas{position:absolute;inset:0;width:100%;height:100%;outline:none}.stage-badge{position:absolute;left:17px;top:15px;border:1px solid rgba(126,146,119,.22);border-radius:20px;padding:6px 10px;background:rgba(255,255,251,.67);font:9px var(--mono);color:#778577;backdrop-filter:blur(4px);pointer-events:none}.stage-badge .status-dot{width:6px;height:6px}.axis-label{position:absolute;font:9px var(--mono);color:#79887d;pointer-events:none}.axis-x{right:48px;bottom:42px;color:#a76656}.axis-y{right:31px;bottom:63px;color:#647f5f}.axis-z{right:68px;bottom:64px;color:#6580a2}.stage-help{position:absolute;left:18px;bottom:15px;display:flex;align-items:center;gap:9px;color:#859186;font-size:9px;pointer-events:none}.stage-help i{width:3px;height:3px;border-radius:50%;background:#abb4a8}.dimension-tag{position:absolute;background:rgba(255,255,250,.8);border:1px solid rgba(170,183,165,.42);padding:5px 8px;border-radius:6px;color:#526951;font:9px var(--mono);box-shadow:0 2px 7px #5a6a4d0d;pointer-events:none}.tag-width{left:48%;bottom:31px}.tag-depth{right:18%;bottom:75px}.tag-height{right:20px;top:47%}.loading-cover,.error-cover{position:absolute;inset:0;background:rgba(241,243,235,.76);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#667666;font-size:11px;backdrop-filter:blur(2px);z-index:3}.loading-cover[hidden],.error-cover[hidden]{display:none}.spinner{width:24px;height:24px;border:2px solid #cbd6c8;border-top-color:#52765b;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-cover{color:#995e49;padding:24px;text-align:center}.canvas-tools{height:29px;display:flex;align-items:flex-end;justify-content:space-between}.orientation-label{font:9px var(--mono);color:#9aa49a}.swatch-button{border:0;background:transparent;display:flex;align-items:center;gap:7px;padding:0;color:#79857b;font-size:9px;cursor:pointer}.swatch-button i{width:13px;height:13px;border-radius:4px;background:#658465;box-shadow:inset 0 0 0 1px #fff9}
.workspace-bottom{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(300px,.95fr);gap:12px}.metrics-card,.export-card{background:#fffefa;border:1px solid #e6e7de;border-radius:12px;padding:14px 16px;box-shadow:0 5px 18px rgba(52,69,53,.035)}.metrics-heading,.export-heading{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:700}.metrics-note,.export-heading>span:last-child{font:9px var(--mono);font-weight:400;color:#9aa39a}.metrics-row{display:grid;grid-template-columns:1.25fr 1fr .8fr;margin-top:15px}.metric{padding:0 12px;border-left:1px solid #edeee8;display:flex;flex-direction:column;gap:6px}.metric:first-child{padding-left:0;border:0}.metric small{font-size:9px;color:#96a096}.metric strong{font:12px var(--mono);color:#344a3d;white-space:nowrap}.metric strong em{font-size:9px;color:#8e9a8d;font-style:normal}.metric-check{color:#759760;margin-right:5px}.estimate-footnote{font-size:8px;color:#a0a79e;margin:12px 0 0}.export-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:11px}.export-primary,.export-secondary{height:50px;border-radius:8px;display:flex;align-items:center;justify-content:flex-start;gap:10px;padding:0 12px;cursor:pointer;text-align:left;transition:.18s}.export-primary{border:1px solid #24483a;background:#24483a;color:#f5f3e9}.export-primary:hover{background:#315744;transform:translateY(-1px)}.export-secondary{border:1px solid #dfe3d8;background:#f9faf5;color:#365040}.export-secondary:hover{border-color:#94a992;background:#f3f6ef}.download-glyph{font-size:20px;line-height:20px;opacity:.9}.export-buttons b{display:block;font-size:10px}.export-buttons small{display:block;margin-top:2px;font-size:8px;opacity:.7}.workspace-foot{display:flex;justify-content:space-between;gap:12px;margin-top:11px;color:#9aa49b;font-size:9px}.workspace-foot b{color:#758b71;font-weight:600}.workspace-foot a{color:#667d69;text-decoration:none;white-space:nowrap}.workspace-foot a:hover{text-decoration:underline}.toast{position:fixed;z-index:20;bottom:24px;left:50%;transform:translate(-50%,12px);opacity:0;pointer-events:none;background:#263e32;color:#fffdf5;border-radius:9px;padding:10px 16px;font-size:11px;box-shadow:var(--shadow);transition:.22s}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1050px){.app-shell{grid-template-columns:330px minmax(0,1fr)}.sidebar{padding:22px 18px}.workspace{padding:23px 22px 16px}.workspace-bottom{grid-template-columns:1fr}.metrics-card{order:2}.export-card{order:1}.stage-wrap{min-height:300px}.stage{min-height:300px}}
@media(max-width:740px){body{overflow:auto}.topbar{height:60px;padding:0 15px}.brand{min-width:auto}.brand small,.top-center{display:none}.quiet-button{font-size:0;padding:8px}.quiet-button .button-icon{font-size:15px;margin:0}.app-shell{height:auto;min-height:calc(100vh - 60px);display:flex;flex-direction:column}.sidebar{order:2;border-right:0;border-top:1px solid #e4e2d9;overflow:visible;padding:20px 16px}.workspace{order:1;padding:18px 15px 16px;height:auto;overflow:visible}.stage-wrap{min-height:310px}.stage{min-height:310px}.type-grid{grid-template-columns:repeat(4,1fr)}.type-card{height:58px}.workspace-head h2{font-size:18px}.view-button{width:29px;height:29px}.workspace-bottom{grid-template-columns:1fr}.metrics-row{grid-template-columns:1fr 1fr .8fr}.workspace-foot{flex-direction:column}.dimension-note{font-size:10px}}

.type-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:-4px 0 9px}
.type-tab{border:1px solid #e5e7df;border-radius:8px;background:#f7f7f0;padding:8px 9px;text-align:left;cursor:pointer;color:#748076;font-size:10px;transition:.16s}
.type-tab b{display:block;font-size:11px;color:#526657}
.type-tab small{display:block;margin-top:2px;color:#9aa399;font-size:8px}
.type-tab.active{border-color:#91a790;background:#e9efe4;box-shadow:inset 0 0 0 1px #78927522}
.type-tab.active b{color:#315540}
.type-grid{max-height:230px;overflow:auto;grid-template-columns:repeat(3,minmax(0,1fr));scrollbar-width:thin;scrollbar-color:#c5c8bb transparent}
.type-card{min-width:0}
.type-card .type-name{max-width:100%;overflow:hidden;text-overflow:ellipsis}
.layout-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.layout-grid:empty{display:none}
.layout-grid .dimension-field label{font-size:9px;white-space:nowrap}
.layout-grid .dimension-field .symbol{margin-right:3px}
.parameter-note{display:flex;gap:7px;align-items:flex-start;margin-top:9px;padding:9px 10px;border-radius:8px;background:#f0f1e9;color:#728071;font-size:9px;line-height:1.5}
.parameter-note .note-mark{flex:none}
.note-stack{display:grid;gap:6px;margin:0 0 12px}
.model-note{padding:8px 10px;border:1px solid #e6e5d9;border-radius:8px;background:#f4f3ec;color:#758074;font-size:9px;line-height:1.5}
.model-note:before{content:'i';display:inline-block;margin-right:7px;color:#65806a;font-weight:700}
.part-picker{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;color:#8b968b;font-size:9px}
.part-picker select{min-width:145px;max-width:65%;height:30px;border:1px solid #dfe3d8;border-radius:7px;background:#fafbf6;padding:0 8px;color:#385342;font:10px var(--ui);outline:none}
.part-picker select:focus{border-color:#92a88f;box-shadow:0 0 0 2px #547a5214}
.workspace-bottom{grid-template-columns:minmax(0,1.05fr) minmax(300px,.95fr)}
.export-heading>span:first-child{font-size:11px}
.metrics-note{font-family:var(--ui);font-size:9px}
.dimension-note{min-height:26px}
#structureSection{padding-bottom:12px}
#mountSection .fit-note{margin-top:10px}
.sidebar{scrollbar-gutter:stable}
@media(max-height:820px) and (min-width:741px){.sidebar{padding-top:17px}.panel-heading{margin-bottom:13px}.type-grid{max-height:192px}.controls-section{padding:12px 0}.stage-wrap{min-height:270px}.stage{min-height:270px}}
@media(max-width:1050px){.type-grid{max-height:210px}.workspace-bottom{grid-template-columns:1fr}.part-picker select{max-width:70%}}
@media(max-width:740px){.type-tabs{margin-bottom:9px}.type-grid{max-height:none;grid-template-columns:repeat(4,1fr)}.layout-grid{grid-template-columns:1fr 1fr}.part-picker select{max-width:72%}}


.board-type-options{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:12px}
.board-type-choice{display:flex;align-items:flex-start;gap:8px;min-height:58px;padding:9px;border:1px solid #e5e7df;border-radius:9px;background:#fffefa;color:#718075;text-align:left;cursor:pointer;transition:.16s}
.board-type-choice .board-choice-mark{width:15px;height:15px;flex:none;border:1px solid #b8c2b5;border-radius:50%;margin-top:1px;display:grid;place-items:center}
.board-type-choice .board-choice-mark:after{content:'';width:7px;height:7px;border-radius:50%;background:transparent}
.board-type-choice b{display:block;color:#485d4d;font-size:10px}
.board-type-choice small{display:block;margin-top:3px;color:#98a196;font-size:8px;line-height:1.4}
.board-type-choice.active{border-color:#829b80;background:#e9efe4;box-shadow:inset 0 0 0 1px #78927522}
.board-type-choice.active .board-choice-mark{border-color:#52795e}
.board-type-choice.active .board-choice-mark:after{background:#52795e}
.board-thickness-line{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px;border:1px solid #e5e7df;border-radius:8px;background:#fffefa;color:#69776d;font-size:10px}
.board-thickness-line select{height:29px;min-width:90px;border:1px solid #dfe3d8;border-radius:6px;background:#fafbf6;padding:0 8px;color:#385342;font:10px var(--ui);outline:none}
.board-thickness-line select:focus{border-color:#92a88f;box-shadow:0 0 0 2px #547a5214}
.board-thickness-custom{margin-top:10px}
.board-thickness-custom[hidden]{display:none}
.board-rule-card{margin-top:9px;padding:9px 10px;border-radius:8px;background:#f0f1e9;color:#778176;font-size:9px;line-height:1.55}
.board-rule-card b{display:block;margin-bottom:3px;color:#516650;font-size:10px}
.anchor-card{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:7px;padding:9px 10px;border:1px solid #e6e7de;border-radius:8px;background:#fffefa;color:#7d887d;font-size:9px}
.anchor-card b{color:#475f4c;font-size:10px;white-space:nowrap}
.anchor-card span{line-height:1.45;text-align:right}
.type-grid{max-height:286px;grid-template-columns:repeat(3,minmax(0,1fr));overflow:auto;scrollbar-width:thin;scrollbar-color:#c5c8bb transparent}
.type-card{min-width:0}
.type-card .type-name{max-width:100%;overflow:hidden;text-overflow:ellipsis}
.dimension-slider-grid{display:grid;grid-template-columns:1fr;gap:11px}
.dimension-range-field .slider-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.dimension-range-field label{font-size:10px;color:#737f76}
.dimension-range-field .range-number{gap:9px}
.dimension-range-field input[type=number]{width:54px;height:27px;border:1px solid #e4e6dc;border-radius:6px;background:#fffefa;padding:0 5px;text-align:right;font:10px var(--mono);color:#344a3d}
.dimension-range-field input[type=number]:focus{outline:0;border-color:#92a88f;box-shadow:0 0 0 2px #547a5214}
#export3mf:disabled,#exportStl:disabled{opacity:.48;cursor:not-allowed;transform:none}
#metricStatus{font-family:var(--ui);font-size:10px}
.metrics-note{font-family:var(--ui);font-size:9px}
.workspace-bottom{grid-template-columns:minmax(0,1.05fr) minmax(300px,.95fr)}
.part-picker select{font:10px var(--ui)}
.sidebar{scrollbar-gutter:stable}
@media(max-height:860px) and (min-width:741px){.sidebar{padding-top:15px}.panel-heading{margin-bottom:12px}.controls-section{padding:12px 0}.type-grid{max-height:240px}.board-type-choice{min-height:53px}.stage-wrap{min-height:275px}.stage{min-height:275px}}
@media(max-width:1050px){.workspace-bottom{grid-template-columns:1fr}.type-grid{max-height:246px}.board-rule-card{font-size:9px}}
@media(max-width:740px){.type-grid{max-height:none;grid-template-columns:repeat(4,1fr)}.board-type-options{grid-template-columns:1fr 1fr}.dimension-slider-grid{grid-template-columns:1fr}.workspace-bottom{grid-template-columns:1fr}.board-type-choice{min-height:54px}}


.board-custom-fields{display:grid;gap:10px;margin:11px 0}
.board-rule-card small{display:block;margin-top:5px;color:#91998e;font-size:8px;line-height:1.45}
.board-rule-card .slider-head label{color:#6b786d}
.board-rule-card .range-number input[type=number]{width:52px}
.board-type-options{margin-bottom:10px}


.geometry-clearance-note,.geometry-effective-note{margin:8px 0 10px;padding:9px 10px;border-radius:8px;background:#f0f1e9;color:#748174;font-size:9px;line-height:1.55}
.geometry-effective-note{border:1px solid #e5e7df;background:#fffefa}
.geometry-clearance-section .section-title{margin-bottom:9px}

