:root{font-family:Microsoft JhengHei UI,Microsoft JhengHei,system-ui,sans-serif;color:#17211f;background:#f3f5f1;font-synthesis:none;--ink: #17211f;--muted: #6d7773;--line: #dce1dc;--surface: #ffffff;--soft: #eef1ed;--lime: #c9ff58;--lime-dark: #4d6900;--danger: #a43b31;--warning: #946a0a;--shadow: 0 18px 50px rgba(28, 40, 35, .12)}*{box-sizing:border-box}body{margin:0;min-width:1080px;min-height:100vh;background:radial-gradient(circle at 10% 0%,#fbfcf8 0,transparent 35%),#f3f5f1}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}.app-shell{min-height:100vh}.topbar{height:74px;display:grid;grid-template-columns:230px 1fr 230px;align-items:stretch;padding:0 42px;background:#151d1b;color:#fff;border-bottom:1px solid #2c3633}.brand{color:inherit;text-decoration:none;display:flex;gap:12px;align-items:center}.brand>span:last-child{display:flex;gap:7px;align-items:baseline;letter-spacing:.08em}.brand strong{font-size:18px}.brand small{font:500 11px Consolas,monospace;color:#aab5b0}.brand-mark{width:34px;height:34px;border:1px solid #53605c;display:grid;grid-template-columns:repeat(3,1fr);padding:6px;gap:3px;transform:rotate(45deg)}.brand-mark i{background:var(--lime);border-radius:1px}.brand-mark i:nth-child(2){opacity:.45}.topbar nav{display:flex;justify-content:center}.nav-item{position:relative;display:flex;align-items:center;gap:9px;border:0;border-left:1px solid #29322f;background:transparent;color:#aeb8b4;padding:0 26px;font-weight:600}.nav-item:last-child{border-right:1px solid #29322f}.nav-item>span{font:500 10px Consolas,monospace;color:#697570}.nav-item small{position:absolute;right:12px;top:8px;color:#68736f;font-size:9px}.nav-item.active{color:#fff;background:#1d2724}.nav-item.active:after{content:"";position:absolute;bottom:0;left:25px;right:25px;height:3px;background:var(--lime)}.nav-item.future{opacity:.65}.local-chip{justify-self:end;align-self:center;display:inline-flex;align-items:center;gap:8px;font-size:12px;color:#cbd2cf;border:1px solid #3b4743;border-radius:999px;padding:8px 12px}.local-chip i{width:7px;height:7px;background:var(--lime);box-shadow:0 0 0 4px #c9ff581c;border-radius:50%}.local-chip button{margin-left:6px;border:0;background:transparent;color:#d5e3c6;cursor:pointer;font-size:11px;text-decoration:underline}.workspace{width:min(1440px,calc(100% - 84px));margin:0 auto;padding:50px 0 64px}.page-intro{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:25px}.eyebrow{margin:0 0 9px;font:500 11px Consolas,monospace;letter-spacing:.12em;color:#6e7a76}h1{margin:0;font-size:clamp(34px,4vw,52px);letter-spacing:-.055em;line-height:1.1}.lead{max-width:700px;margin:13px 0 0;color:var(--muted);font-size:15px}.primary-button,.secondary-button{border:1px solid var(--ink);border-radius:5px;min-height:44px;padding:0 18px;font-weight:700;transition:transform .15s,box-shadow .15s,background .15s}.primary-button{background:var(--lime);color:var(--ink);box-shadow:4px 4px 0 var(--ink)}.primary-button:hover{transform:translate(-1px,-1px);box-shadow:6px 6px 0 var(--ink)}.primary-button:disabled{opacity:.55;transform:none;box-shadow:none}.secondary-button{background:#fff;color:var(--ink)}.secondary-button:hover{background:var(--soft)}.add-button{min-width:154px}.add-button span{font-size:20px;margin-right:6px}.local-notice{display:flex;gap:13px;align-items:center;border:1px solid #cbd4c8;background:#faffed;padding:14px 17px;margin-bottom:20px}.notice-icon{display:grid;place-items:center;width:25px;height:25px;flex:0 0 auto;border-radius:50%;font:700 13px Consolas;background:var(--lime);color:#273400}.local-notice strong{font-size:13px}.local-notice p{display:inline;margin:0 0 0 10px;color:#687265;font-size:12px}.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);background:var(--surface);margin-bottom:20px}.metrics-grid article{position:relative;padding:20px 24px 18px;border-right:1px solid var(--line)}.metrics-grid article:last-child{border-right:0}.metrics-grid span{display:block;font-size:12px;font-weight:700;color:var(--muted)}.metrics-grid strong{display:block;font:500 34px Consolas,monospace;margin:7px 0 1px;letter-spacing:-.06em}.metrics-grid small{font-size:11px;color:#929b97}.metrics-grid article:nth-child(3):after{content:"";position:absolute;width:6px;height:6px;background:#ffc94c;right:18px;top:18px;border-radius:50%}.library-panel{border:1px solid var(--line);background:var(--surface)}.toolbar-row{display:grid;grid-template-columns:1fr 210px 190px;gap:13px;padding:16px;border-bottom:1px solid var(--line)}.search-box{position:relative;display:flex;align-items:center}.search-box>span{position:absolute;left:14px;font-size:22px;color:#6f7975;transform:rotate(-15deg)}.search-box input{width:100%;padding:12px 12px 12px 43px;border:1px solid #cfd6d1;background:#fafbf9;border-radius:3px}.filter-select{display:grid;grid-template-columns:auto 1fr;align-items:center;border:1px solid #cfd6d1;background:#fafbf9;border-radius:3px;padding-left:12px}.filter-select span{font-size:11px;color:#858e8a;padding-right:8px}.filter-select select{border:0;background:transparent;height:100%;min-height:44px;font-weight:600;color:var(--ink);outline:0}.part-table{width:100%}.table-row{display:grid;grid-template-columns:minmax(290px,1.5fr) minmax(180px,.9fr) minmax(185px,1fr) 105px 92px 130px;gap:12px;align-items:center;min-height:87px;padding:13px 17px;border-bottom:1px solid #e7eae6}.table-row:last-child{border-bottom:0}.table-row:not(.table-head):hover{background:#fbfcfa}.table-head{min-height:42px;background:#f6f8f5;color:#77807c;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.table-row.is-inactive{opacity:.58}.part-identity{display:flex;align-items:center;gap:13px;min-width:0}.part-glyph{display:grid;place-items:center;width:48px;height:48px;flex:0 0 auto;background:#e9ede8;border:1px solid #d3dad4;font-size:25px;color:#53605b}.part-glyph.type-truss{color:#67736e;background:linear-gradient(135deg,#f8faf7 25%,#dbe1dc 25% 50%,#f8faf7 50% 75%,#dbe1dc 75%);background-size:10px 10px}.part-glyph.type-base-plate{background:#303a37;color:var(--lime)}.part-identity>div:last-child{display:flex;min-width:0;flex-direction:column;gap:3px}.part-identity strong,.stacked-cell strong,.dimension-cell strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.part-identity code{width:max-content;padding:2px 5px;color:#4f5e58;background:#edf0ed;font:500 10px Consolas,monospace}.part-identity small,.stacked-cell small,.dimension-cell small,.version-cell small{color:#8a938f;font-size:10px}.stacked-cell,.dimension-cell,.version-cell{display:flex;flex-direction:column;gap:4px;min-width:0}.pending-text{color:var(--warning)!important;font-weight:700}.status-badge{display:inline-flex;width:max-content;align-items:center;gap:6px;border:1px solid #d6dcd6;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:700}.status-badge i{width:6px;height:6px;border-radius:50%}.status-badge.active i{background:#6aaa25}.status-badge.inactive i{background:#959d99}.version-cell strong{font:500 13px Consolas}.row-actions{display:flex;gap:2px}.text-button{border:0;background:transparent;color:#33443e;padding:7px;font-size:11px;font-weight:700}.text-button:hover{background:#edf1ed}.text-button.danger{color:var(--danger)}.empty-state{display:grid;place-items:center;align-content:center;min-height:280px;color:var(--muted)}.empty-state p{margin:5px 0;font-size:13px}.alert{display:flex;align-items:center;gap:10px;margin:14px 0;padding:11px 14px;border:1px solid;font-size:13px}.alert.success{background:#f2ffe0;border-color:#b9d883;color:#3d5513}.alert.error{background:#fff2ef;border-color:#e4b7b0;color:#87352d}.alert button{margin-left:auto;border:0;background:transparent;color:inherit;font-weight:700}.drawer-backdrop{position:fixed;z-index:20;inset:0;display:flex;justify-content:flex-end;background:#080f0d7a;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.editor-panel{width:min(850px,72vw);height:100%;overflow-y:auto;background:#f9faf7;box-shadow:-20px 0 60px #0003}.editor-heading{display:flex;justify-content:space-between;align-items:flex-start;position:sticky;top:0;z-index:4;background:#19221f;color:#fff;padding:27px 34px 25px}.editor-heading h2{margin:0;font-size:24px;letter-spacing:-.03em}.editor-heading p:not(.eyebrow){margin:6px 0 0;color:#aab5b1;font-size:12px}.editor-heading .eyebrow{color:var(--lime)}.icon-button{border:1px solid #53605c;background:transparent;color:#fff;width:38px;height:38px;font-size:24px;line-height:1}.form-section,.advanced-section{margin:0;padding:27px 34px;border-bottom:1px solid #dfe3de}.section-title{display:flex;gap:13px;align-items:flex-start;margin-bottom:19px}.section-title>span,.advanced-section summary>span{font:500 10px Consolas;color:#4f5b57;border:1px solid #c9d0ca;padding:4px}.section-title h3{margin:0;font-size:16px}.section-title p{margin:3px 0 0;color:var(--muted);font-size:11px}.form-grid{display:grid;gap:16px}.two-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.three-columns{grid-template-columns:repeat(3,minmax(0,1fr))}.four-columns{grid-template-columns:repeat(4,minmax(0,1fr))}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>span,.connection-row label,.coordinate-row label{color:#5f6b66;font-size:11px;font-weight:700}.field input,.field select,.field textarea,.connection-row input,.connection-row select,.coordinate-row input{width:100%;border:1px solid #cbd2cc;border-radius:3px;background:#fff;color:var(--ink);padding:10px 11px;outline:0}.field input:focus,.field select:focus,.field textarea:focus,.connection-row input:focus,.coordinate-row input:focus{border-color:#667347;box-shadow:0 0 0 3px #c9ff5859}.field input:disabled{background:#edf0ed;color:#7b8580}.field-error{color:var(--danger);font-size:10px;font-weight:700}.block-error{display:block;margin-top:12px}.input-with-unit{display:flex;border:1px solid #cbd2cc;border-radius:3px;background:#fff;overflow:hidden}.input-with-unit input{min-width:0;border:0}.input-with-unit span{display:grid;place-items:center;padding:0 9px;border-left:1px solid #e0e4e0;background:#f1f3f0;color:#79827e;font:500 10px Consolas}.checkbox-row{display:flex;gap:6px}.check-pill input{position:absolute;opacity:0;pointer-events:none}.check-pill{border:1px solid #cbd2cc;background:#fff;padding:9px 11px;font-size:11px;cursor:pointer}.check-pill:has(input:checked){background:var(--lime);border-color:#859d3e;color:#253100;font-weight:700}.switch-row{display:flex;gap:11px;align-items:flex-start;margin-bottom:18px}.switch-row input{appearance:none;width:37px;height:21px;flex:0 0 auto;border-radius:999px;background:#c7ceca;position:relative;cursor:pointer;transition:.18s}.switch-row input:after{content:"";width:15px;height:15px;position:absolute;left:3px;top:3px;border-radius:50%;background:#fff;transition:.18s}.switch-row input:checked{background:#647e1b}.switch-row input:checked:after{transform:translate(16px)}.switch-row span{display:flex;flex-direction:column}.switch-row strong{font-size:12px}.switch-row small{color:var(--muted);font-size:10px;margin-top:2px}.switch-row.compact{margin:14px 0}.advanced-section{padding:0}.advanced-section summary{display:flex;align-items:center;gap:13px;list-style:none;padding:22px 34px;cursor:pointer}.advanced-section summary::-webkit-details-marker{display:none}.advanced-section summary>div{display:flex;flex-direction:column}.advanced-section summary strong{font-size:14px}.advanced-section summary small{color:var(--muted);font-size:10px}.advanced-section summary b{margin-left:auto;font-size:11px;color:#67726d}.advanced-section[open] summary b{font-size:0}.advanced-section[open] summary b:after{content:"收合";font-size:11px}.advanced-body{padding:0 34px 28px}.advanced-body h4{margin:8px 0 9px;font-size:11px}.coordinate-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.coordinate-row label{display:flex;align-items:center;gap:7px}.coordinate-row input{min-width:0}.centerline-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.connection-heading{display:flex;justify-content:space-between;align-items:center;margin-top:24px;padding-top:19px;border-top:1px dashed #cad1cb}.connection-heading h4{margin:0;font-size:13px}.connection-heading p{margin:3px 0 0;color:var(--muted);font-size:10px}.connection-heading .secondary-button{min-height:35px;font-size:11px}.connection-card{border:1px solid #d6dcd6;background:#fff;margin-top:11px;padding:14px}.connection-row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:10px;align-items:end;margin-bottom:12px}.connection-row label{display:flex;flex-direction:column;gap:5px}.empty-inline{margin:12px 0;color:#87908b;font-size:11px}.direction-selector{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:14px}.direction-selector.truss-directions{grid-template-columns:repeat(2,minmax(0,1fr))}.direction-selector button{display:grid;grid-template-columns:30px 1fr;grid-template-rows:auto auto;align-items:center;gap:1px 8px;min-height:61px;padding:9px 11px;border:1px solid #cbd2cc;border-radius:3px;background:#fff;color:#53605b;text-align:left}.direction-selector button:hover{border-color:#829446}.direction-selector button.selected{border-color:#829f2f;background:#f3ffd9;box-shadow:inset 0 0 0 1px #b9db62;color:#33440c}.direction-selector b{grid-row:1 / 3;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#edf1ed;font-size:18px}.direction-selector button.selected b{background:var(--lime)}.direction-selector span{font-size:11px;font-weight:800}.direction-selector small{color:#8b9490;font:500 8px Consolas,monospace}.connection-note{margin:11px 0 0;color:#77827d;font-size:10px;line-height:1.55}.extension-rule-list{margin-top:18px;padding-top:14px;border-top:1px solid #dfe5df}.extension-rule-list h4{margin:0;font-size:13px}.extension-rule-list>p{margin:5px 0 10px;color:#77827d;font-size:10px;line-height:1.5}.extension-rule{display:grid;grid-template-columns:minmax(105px,.8fr) minmax(0,1.2fr);align-items:center;gap:10px;padding:7px 0;border-top:1px solid #eef1ed}.extension-rule span{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700}.extension-rule b{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#edf1ed}.extension-rule select{min-width:0;padding:8px;border:1px solid #cbd2cc;border-radius:3px;background:#fff;color:#24302b}.model-notes-panel{display:grid;grid-template-columns:230px minmax(320px,1fr) minmax(250px,.8fr);gap:18px;align-items:start;padding:18px 24px;border-bottom:1px solid #d4dad5;background:#f7faf5}.model-notes-panel h2{margin:3px 0 6px;font-size:18px}.model-notes-panel p{margin:0;color:#718078;font-size:11px;line-height:1.5}.model-parameter-fields{display:grid;grid-template-columns:repeat(3,minmax(110px,1fr));gap:10px}.model-parameter-fields label{display:grid;gap:4px;color:#53605b;font-size:11px;font-weight:700}.model-parameter-fields input,.model-parameter-fields select{min-width:0;padding:8px;border:1px solid #cbd2cc;background:#fff}.model-toggle{display:flex!important;align-items:center;gap:7px;padding-top:22px}.model-generation-notice{grid-column:2;color:#758b25;font-size:11px;line-height:1.5}.model-advisories{grid-column:2;margin:0;padding:9px 12px 9px 28px;border:1px solid #e5d2a6;background:#fff9e9;color:#76551c;font-size:11px;line-height:1.55}.model-advisories li+li{margin-top:4px}.customer-notes-preview{grid-column:3;grid-row:1 / span 4;min-height:112px;width:100%;margin:0;padding:12px;border:1px solid #d1d9d1;background:#fff;color:#26342e;font:12px/1.55 Consolas,monospace;white-space:pre-wrap}.notes-section{display:grid;grid-template-columns:1fr 250px;gap:24px;align-items:start}.editor-actions{position:sticky;bottom:0;z-index:4;display:flex;justify-content:flex-end;gap:10px;padding:16px 34px;background:#f9faf7f2;border-top:1px solid #d6dcd7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.editor-panel>.alert{margin:13px 34px}footer{display:flex;justify-content:space-between;width:min(1440px,calc(100% - 84px));margin:0 auto;padding:22px 0 36px;border-top:1px solid #d5dbd5;color:#87908c;font:500 10px Consolas,monospace}.drawing-workspace{width:min(1720px,calc(100% - 48px));margin:0 auto;padding:30px 0 42px}.drawing-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:20px}.drawing-heading-actions{display:flex;align-items:center;gap:12px}.clear-canvas-button{min-height:40px;padding:9px 16px;border:1px solid #bf7b73;background:#fff7f5;color:#8c342b;font-weight:700}.clear-canvas-button:hover:not(:disabled){background:#fce9e5}.clear-canvas-button:disabled{opacity:.55;cursor:not-allowed}.drawing-heading h1{font-size:38px}.drawing-heading .lead{margin-top:8px}.draft-status{display:grid;grid-template-columns:auto auto;align-items:center;gap:3px 8px;min-width:205px;padding:12px 15px;border:1px solid #d6c8a2;background:#fffaf0;color:#6f5517;font-size:12px;font-weight:700}.draft-status i{width:8px;height:8px;border-radius:50%;background:#e2ad35}.draft-status span{grid-column:1 / -1;color:#93815b;font-size:10px;font-weight:500}.draft-status.is-saved{border-color:#c7d8b2;background:#f5faee;color:#48612a}.draft-status.is-saved i{background:#83a944}.draft-status.has-error{border-color:#d8aaa4;background:#fff5f3;color:#8c342b}.draft-status.has-error i{background:#c84f43}.drawing-controls{display:grid;grid-template-columns:1.55fr .8fr .8fr 1.2fr .65fr .7fr;gap:0;margin-bottom:13px;border:1px solid #cfd6d0;background:#fff}.drawing-controls>label{position:relative;display:flex;min-width:0;flex-direction:column;gap:5px;padding:11px 14px;border-right:1px solid #dce1dc}.drawing-controls>label:last-child{border-right:0}.project-control{display:flex;min-width:0;align-items:end;gap:6px;padding:11px 9px;border-right:1px solid #dce1dc}.project-control .case-name-control{display:flex;min-width:0;flex:1;flex-direction:column;gap:5px}.project-control label>span{color:#7b8581;font-size:9px;font-weight:800;letter-spacing:.05em}.project-control input{width:100%;min-height:26px;font-size:12px}.case-save-actions{display:flex;gap:5px}.project-control .secondary-button{min-height:33px;padding:0 9px;font-size:10px;white-space:nowrap}.project-control .secondary-button:disabled{opacity:.55}.drawing-controls label>span{color:#7b8581;font-size:9px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.drawing-controls input,.drawing-controls select{min-width:0;border:0;outline:0;background:transparent;color:var(--ink);font-weight:700}.drawing-controls select:disabled{color:#7d8682;opacity:1}.drawing-controls small{position:absolute;right:12px;top:11px;max-width:170px;overflow:hidden;color:#a0a8a4;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.drawing-layout{display:grid;grid-template-columns:280px minmax(570px,1fr);grid-template-rows:minmax(700px,auto);min-height:700px;border:1px solid #cfd6d0;background:#fff;box-shadow:0 15px 45px #1f2a2514}.material-rail,.inspector-panel{min-width:0;background:#f8faf7}.material-rail{grid-column:1;grid-row:1;padding-bottom:16px;border-right:1px solid #d9ded9}.inspector-panel{border-top:1px solid #d9ded9;color:#69746f}.inspector-panel>summary{cursor:pointer;list-style:none}.inspector-panel>summary::-webkit-details-marker{display:none}.inspector-panel>summary:after{margin-left:auto;color:#66716c;content:"+";font-size:18px;font-weight:400}.inspector-panel[open]>summary:after{content:"−"}.rail-heading{display:flex;gap:11px;align-items:center;min-height:66px;padding:13px 16px;border-bottom:1px solid #dce1dc;background:#f0f3ef}.rail-heading>span{display:grid;place-items:center;width:28px;height:28px;border:1px solid #bdc6bf;font:600 10px Consolas,monospace;color:#59665f}.rail-heading>div{display:flex;min-width:0;flex-direction:column;gap:3px}.rail-heading strong{font-size:13px}.rail-heading small{color:#78827e;font-size:9px}.rail-length{display:flex;flex-direction:column;gap:6px;padding:15px 16px;border-bottom:1px solid #dce1dc}.rail-length>span{font-size:10px;font-weight:800}.rail-length>small{color:#8c9591;font-size:9px;line-height:1.4}.rail-length input{padding:9px}.material-group{padding:13px 12px 0}.material-group h2{margin:0 4px 8px;color:#7d8782;font:700 9px Consolas,monospace;letter-spacing:.08em;text-transform:uppercase}.material-card{display:grid;grid-template-columns:38px 1fr 18px;gap:9px;align-items:center;width:100%;margin-bottom:7px;padding:9px;border:1px solid #d2d9d3;border-radius:3px;background:#fff;color:var(--ink);text-align:left;transition:border-color .15s,transform .15s,box-shadow .15s}.material-card:hover:not(:disabled){border-color:#75824d;transform:translateY(-1px);box-shadow:0 5px 15px #1c292314}.material-card:disabled{opacity:.46}.material-card>span:nth-child(2){display:flex;min-width:0;flex-direction:column;gap:3px}.material-card strong{overflow:hidden;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.material-card small{overflow:hidden;color:#89928e;font:500 8px Consolas,monospace;text-overflow:ellipsis;white-space:nowrap}.material-card b{font-size:18px;font-weight:400}.material-icon{display:grid;place-items:center;width:38px;height:38px;border:1px solid #cbd2cc;background:#eef1ed;color:#46524d;font-size:20px}.material-icon.type-truss{background:repeating-linear-gradient(135deg,#fff 0 5px,#dfe5df 5px 9px)}.material-icon.type-base-plate{background:#28322f;color:var(--lime)}.rail-empty{margin:18px 16px;color:#7d8782;font-size:10px;line-height:1.5}.rail-empty strong{color:var(--ink)}.rail-empty p{margin:4px 0}.manage-parts-button{width:calc(100% - 32px);min-height:37px;margin:15px 16px 0;font-size:10px}.canvas-panel{position:relative;display:flex;min-width:0;flex-direction:column;background:#e9ede8}.canvas-toolbar{display:flex;justify-content:space-between;align-items:center;min-height:66px;padding:0 15px;border-bottom:1px solid #d4dad5;background:#fff}.canvas-breakdown-actions{display:flex;align-items:center;gap:5px}.canvas-breakdown-actions .secondary-button{min-height:32px;padding:0 9px;font-size:9px;white-space:nowrap}.canvas-breakdown-actions .secondary-button.is-active{border-color:#17211f;background:#17211f;color:#fff}.history-controls{display:flex;gap:6px;margin-right:12px}.history-controls button{width:34px;height:30px;border:1px solid #cfd6d0;border-radius:6px;background:#fff;color:#17211f;font-size:20px;line-height:1;cursor:pointer}.history-controls button:disabled{opacity:.35;cursor:not-allowed}.view-tabs{display:flex;gap:4px}.view-tabs button{min-width:62px;height:33px;border:1px solid #cfd6d0;background:#f5f7f4;color:#66716c;font-size:10px;font-weight:700}.view-tabs button.active{border-color:#17211f;background:#17211f;color:#fff}.view-tabs button:disabled{color:#a8afac;opacity:.7}.canvas-summary{display:flex;gap:13px;color:#7b8580;font:500 9px Consolas,monospace}.canvas-summary span+span{position:relative}.canvas-summary span+span:before{content:"·";position:absolute;left:-8px}.side-view-options{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-height:42px;padding:6px 14px;border-bottom:1px solid #d4dad5;background:#f8faf7;color:#75807b;font-size:10px}.side-view-options button{min-height:27px;padding:0 10px;border:1px solid #d4dad5;border-radius:3px;background:#fff;color:#55615c;font-size:10px}.side-view-options button.active{border-color:#17211f;background:#17211f;color:#fff}.side-view-options small{flex-basis:100%;margin-left:34px;color:#8b7450;font-size:9px}.canvas-message{display:flex;align-items:center;gap:8px;min-height:35px;padding:7px 12px;border-bottom:1px solid #cbd9aa;background:#f5ffe2;color:#4b641b;font-size:10px;font-weight:700}.canvas-message button{margin-left:auto;border:0;background:transparent;color:inherit}.svg-stage{display:grid;flex:1;min-height:580px;padding:14px}.drawing-canvas{width:100%;height:100%;min-height:560px;border:1px solid #c5ccc6;background:#fbfcfa;box-shadow:inset 0 0 0 4px #f2f4f1;touch-action:none}.drawing-canvas text{fill:#52605a;font:600 11px Microsoft JhengHei UI,sans-serif;pointer-events:none;-webkit-user-select:none;user-select:none}.drawing-canvas .dimension-label{fill:#26332e;font:700 11px Consolas,monospace}.drawing-canvas .material-breakdown-label{fill:#68756e;font:700 13px Consolas,monospace}.drawing-canvas .material-breakdown-label.is-hidden{opacity:0}.axis-label{font:700 12px Consolas,monospace!important}.axis-note{fill:#8b9691!important;font:500 9px Consolas,monospace!important}.side-front-marker{fill:#53605b!important;font:600 10px sans-serif!important}.side-zero-axis{stroke:#aeb8b2;stroke-width:1;stroke-dasharray:3 4;pointer-events:none}.canvas-empty text:first-child{fill:#5d6964;font-size:15px;font-weight:800}.canvas-empty text:last-child{fill:#929b97;font-size:11px;font-weight:500}.canvas-part{cursor:grab}.canvas-part .part-kind-label{fill:#26332e;font:700 11px sans-serif;pointer-events:none}.canvas-part:active{cursor:grabbing}.canvas-part .part-hit-area{fill:transparent;stroke:transparent;pointer-events:all}.canvas-part .part-origin{fill:var(--lime);stroke:#17211f;stroke-width:1.5}.canvas-part.is-selected{filter:drop-shadow(0 0 5px rgba(121,157,31,.75))}.canvas-part.is-selected>rect:not(.part-hit-area),.canvas-part.is-selected>circle:first-child{stroke:#7ea500;stroke-width:4}.extension-control{cursor:pointer;filter:drop-shadow(0 2px 3px rgba(20,30,26,.22))}.extension-control circle{fill:#fff;stroke:#56645e;stroke-width:2}.extension-control text{fill:#26342e;font-size:14px;font-weight:900;pointer-events:none}.extension-control:hover circle,.extension-control:focus circle{fill:#efffd0;stroke:#78951f}.extension-control.active circle{fill:var(--lime);stroke:#526b10;stroke-width:3}.canvas-footnote{display:flex;justify-content:space-between;gap:12px;padding:9px 15px;border-top:1px solid #d2d8d3;background:#f7f9f6;color:#79837e;font-size:9px}.inspector-empty{display:grid;place-items:center;align-content:center;min-height:150px;padding:18px;color:#7c8782;text-align:center}.inspector-empty>span{display:grid;place-items:center;width:54px;height:54px;margin-bottom:13px;border:1px solid #cbd2cc;color:#9aa39f;font-size:24px}.inspector-empty strong{color:#52605a;font-size:12px}.inspector-empty p{margin:5px 0;font-size:10px}.inspector-body{padding:15px}.part-orientation-actions{display:grid;gap:8px;margin:12px 0}.selected-part-title{display:flex;gap:10px;align-items:center;padding-bottom:13px;border-bottom:1px solid #dbe0db}.selected-part-title>div{display:flex;min-width:0;flex-direction:column;gap:4px}.selected-part-title strong{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.selected-part-title small{overflow:hidden;color:#8b9490;font:500 8px Consolas,monospace;text-overflow:ellipsis;white-space:nowrap}.inspector-badges{display:flex;flex-wrap:wrap;gap:5px;margin:11px 0}.inspector-badges span{padding:4px 6px;border:1px solid #d0d7d1;border-radius:999px;background:#fff;color:#69746f;font-size:8px;font-weight:700}.inspector-body fieldset{display:grid;gap:10px;margin:14px 0 0;padding:13px;border:1px solid #d6dcd6;background:#fff}.inspector-advanced{margin-top:14px;padding:11px 13px;border:1px solid #d6dcd6;background:#fff}.inspector-advanced summary{color:#596660;cursor:pointer;font-size:10px;font-weight:800}.inspector-advanced>p,.snapshot-help{margin:7px 0 0;color:#7b8581;font-size:9px;line-height:1.5}.inspector-advanced fieldset{margin-top:9px;padding:0;border:0}.inspector-body legend{padding:0 5px;color:#596660;font-size:9px;font-weight:800}.inspector-body label{display:grid;grid-template-columns:70px 1fr;gap:7px;align-items:center}.inspector-body label>span{color:#6e7974;font-size:9px;font-weight:700}.inspector-body input,.inspector-body select{width:100%;min-width:0;border:1px solid #cbd2cc;border-radius:2px;background:#fff;padding:8px;outline:0;font-size:10px}.inspector-body .input-with-unit input{border:0}.pending-note{color:#8e711e;font-size:8px;line-height:1.5}.length-summary{display:grid;grid-template-columns:70px 1fr auto;gap:7px;align-items:center}.length-summary>span{color:#6e7974;font-size:9px;font-weight:700}.length-summary strong{font:700 11px Consolas,monospace}.length-summary button{min-height:31px;padding:6px 9px;font-size:9px}.snapshot-list{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:0}.snapshot-list div{padding:7px;background:#f2f4f1;text-align:center}.snapshot-list dt{color:#7d8782;font-size:8px}.snapshot-list dd{margin:3px 0 0;font:600 9px Consolas,monospace}.drawing-export-panel{margin-top:24px;padding:20px;border:1px solid #cfd6d0;background:#f8faf7;box-shadow:0 12px 34px #1f2a250f}.export-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:15px}.export-toolbar h2{margin:2px 0 4px;font-size:20px}.export-toolbar small{color:#7b8581;font-size:10px}.export-toolbar>.primary-button{min-height:36px;padding:0 16px;white-space:nowrap}.export-toolbar>.primary-button:disabled{opacity:.45;cursor:not-allowed}.export-workbench{display:grid;grid-template-columns:minmax(0,1fr) 290px;align-items:start;gap:20px}.export-preview-column{min-width:0}.export-layout-options{display:grid;align-content:start;gap:14px;padding:12px;border:1px solid #d4dad5;background:#fff}.export-count-picker{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-width:0;margin:0;padding:5px;border:1px solid #d4dad5}.export-count-picker legend{padding:0 5px;color:#77827c;font-size:9px}.export-count-picker button{min-width:39px;min-height:30px;flex:1;border:1px solid transparent;background:transparent;color:#5c6861;font-size:9px;cursor:pointer}.export-count-picker button[aria-pressed=true]{border-color:#17211f;background:#17211f;color:#fff}.export-orientation-picker button{min-width:95px}.export-page-preview{box-sizing:border-box;overflow:hidden;padding:8px;border:1px solid #cbd3cd;background:#e9ede8}.export-page-preview.portrait{width:min(100%,370px);aspect-ratio:210 / 297}.export-page-preview.landscape{width:min(100%,520px);aspect-ratio:297 / 210}.export-page{display:flex;box-sizing:border-box;width:100%;height:100%;flex-direction:column;padding:18px;background:#fff;color:#17211f;font-family:Arial,Microsoft JhengHei UI,sans-serif}.export-page-header{display:flex;align-items:center;height:24px;flex:none;border-bottom:1px solid #596660}.export-page-header h3{min-width:0;max-width:75%;margin:0;overflow:hidden;font-size:14px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.export-page-header time{margin-left:auto;color:#68756e;font-size:8px;white-space:nowrap}.export-page-content{display:flex;min-height:0;flex:1;gap:12px;padding-top:12px}.export-page-content.materials-bottom{flex-direction:column}.export-page-content.materials-bottom .export-view-grid{width:100%;flex:1}.export-page-content.materials-bottom .export-materials{width:100%;min-height:16px;flex:0 0 14%}.export-page-content.no-view-slots .export-view-grid{display:none}.export-page-content.no-view-slots .export-materials{width:100%;flex:1}.export-view-grid{display:flex;min-width:0;flex:1;gap:9px}.export-view-zone{display:grid;min-width:0;min-height:0;gap:7px}.export-view-zone.is-empty{display:none}.export-large-zone{flex:7}.export-small-zone{flex:3}.export-view-slot{position:relative;display:grid;min-width:0;min-height:0;place-items:center;overflow:hidden;border:1px dashed #aeb9b2;background:#fbfcfa}.export-view-slot.is-drop-target{border:2px solid #79971e;background:#f5fbe8}.export-view-slot img{width:100%;height:100%;object-fit:contain}.export-slot-label{position:absolute;right:5px;bottom:4px;padding:3px 5px;background:#ffffffe6;color:#67736d;font-size:8px}.export-slot-empty{display:grid;gap:5px;padding:8px;color:#7b8581;text-align:center}.export-slot-empty strong{color:#58645e;font-size:11px}.export-slot-empty span{font-size:9px}.export-materials{box-sizing:border-box;width:calc((100% - 12px)/5);min-width:0;flex:none;overflow:hidden;padding:8px;border:1px dashed #aeb9b2}.export-materials>p{margin:8px 0;color:#77827c;font-size:8px;line-height:1.5}.export-materials h4{margin:0;color:#55615b;font-size:10px}.export-materials ul{margin:7px 0 0;padding:0;list-style:none;color:#47534d;font-size:10px;line-height:1.45;overflow-wrap:anywhere}.export-materials li+li{margin-top:3px}.export-view-source{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:12px;color:#7b8581;font-size:10px}.export-view-source button{min-height:29px;padding:0 10px;border:1px solid #cfd6d0;background:#fff;color:#59665f;cursor:grab;font-size:9px}.export-view-source button[aria-pressed=true]{border-color:#17211f;background:#17211f;color:#fff}.export-view-source button:active{cursor:grabbing}.export-error{color:#9f3c31;font-size:10px}@media(max-width:900px){.export-workbench{grid-template-columns:minmax(0,1fr) 250px;gap:14px}.export-layout-options{padding:8px}}@media(max-width:720px){.export-toolbar{align-items:stretch;flex-direction:column}.export-workbench,.export-layout-options{grid-template-columns:1fr}}.danger-button{width:100%;min-height:38px;margin-top:16px;border:1px solid #c99790;background:#fff7f5;color:#9c3b32;font-size:10px;font-weight:800}.danger-button:hover{background:#ffe8e4}.drawing-dialog-backdrop{position:fixed;z-index:30;inset:0;display:grid;place-items:center;padding:24px;background:#0d161394;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.drawing-dialog{width:min(430px,100%);padding:27px;border:1px solid #9da79f;background:#fbfcfa;box-shadow:0 24px 70px #00000047}.drawing-dialog .eyebrow{color:#718b23}.drawing-dialog h2{margin:6px 0 7px;font-size:24px}.drawing-dialog>p:not(.eyebrow){margin:0 0 20px;color:#75807b;font-size:11px}.drawing-dialog>label{display:flex;flex-direction:column;gap:7px;color:#56635d;font-size:11px;font-weight:800}.drawing-dialog input{width:100%;padding:12px;border:0;outline:0;font-size:16px;font-weight:700}.drawing-dialog .alert{margin:12px 0 0}.drawing-dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.drawing-dialog-actions button{min-width:95px}.auth-shell{display:grid;min-height:100vh;place-items:center;padding:24px;background:#f1f4f0}.auth-card{width:min(480px,100%);padding:42px;border:1px solid #cfd6d0;background:#fff;box-shadow:0 18px 55px #1f2a2514}.auth-card h1{margin:15px 0 12px;color:#17211f;font-size:28px}.auth-card>p:not(.eyebrow){margin:0 0 24px;color:#73807a;font-size:14px;line-height:1.7}.auth-card .auth-error{color:#a83a31!important}.auth-card .primary-button{min-height:44px;padding:0 20px}.project-files-page{width:min(1440px,calc(100% - 84px));min-height:72vh;margin:0 auto;padding:48px 0 72px}.project-files-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:26px}.project-files-heading h1{font-size:42px}.project-files-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.project-files-actions .secondary-button,.danger-outline-button{min-height:40px}.danger-outline-button{padding:0 15px;border:1px solid #d5aaa5;border-radius:5px;background:#fff8f6;color:var(--danger);font-weight:700}.danger-outline-button:hover{background:#fff0ec}.file-manager{border:1px solid #cfd6d0;background:#fff;box-shadow:0 15px 45px #1f2a250f}.file-manager-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:58px;padding:0 20px;border-bottom:1px solid var(--line);background:#f7f9f6;color:#7a8580;font-size:11px}.file-breadcrumbs,.file-breadcrumbs span{display:flex;align-items:center;gap:9px}.file-breadcrumbs button{border:0;background:transparent;color:#24312c;font-weight:700}.file-breadcrumbs button:hover{color:#65851a;text-decoration:underline}.file-breadcrumbs b{color:#9ba49f;font-weight:400}.file-manager-content{min-height:420px;padding:14px}.file-item{display:flex;width:100%;min-height:68px;align-items:center;gap:14px;padding:10px 14px;border:1px solid transparent;border-bottom-color:#edf0ed;background:#fff;color:var(--ink);text-align:left}.file-item:hover,.file-item:focus-visible{border-color:#dce5d4;outline:0;background:#f8fbf4}.file-item[aria-pressed=true]{border-color:#a8c46a;background:#f5f9ed}.folder-item{cursor:pointer}.case-file-item{cursor:grab}.case-file-item:active{cursor:grabbing}.file-item-icon{display:grid;width:42px;height:42px;flex:0 0 auto;place-items:center;border:1px solid #d7ded8;background:#f1f4f0;color:#53615a;font-size:20px}.folder-icon{color:#668622;background:#f5f8eb}.file-item-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:5px}.file-item-copy strong{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.file-item-copy small{color:#88928e;font-size:10px}.file-item-chevron{color:#86918b;font-size:24px}.open-file-hint{color:#89938e;font-size:10px}.file-manager-empty{display:grid;min-height:380px;place-items:center;margin:0;color:#87918c;font-size:13px;text-align:center}.file-manager-notice{margin:0;padding:13px 20px;border-top:1px solid #d7e4c6;background:#f7fbe9;color:#506526;font-size:12px}.file-dialog-backdrop{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:#101b186b}.file-dialog{width:min(440px,100%);padding:26px;border:1px solid #cfd6d0;background:#fff;box-shadow:0 24px 70px #0c18143d}.file-dialog h2{margin:0 0 18px;color:#17211e;font-size:20px}.file-dialog p{margin:0 0 20px;color:#65736d;font-size:14px;line-height:1.7}.file-dialog label{display:block;margin-bottom:7px;color:#65736d;font-size:12px}.file-dialog input{width:100%;min-height:44px;padding:0 12px;border:1px solid #bfc9c3;color:#17211e;font:inherit}.file-dialog-error{margin:8px 0 0!important;color:#a83224!important;font-size:12px!important}.file-dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.file-context-menu{position:fixed;z-index:1001;min-width:150px;padding:5px;border:1px solid #cfd6d0;background:#fff;box-shadow:0 10px 30px #0c18142e}.file-context-menu button{width:100%;min-height:36px;padding:0 12px;border:0;background:transparent;color:#26332e;text-align:left;font-size:12px}.file-context-menu button:hover,.file-context-menu button:focus-visible{outline:0;background:#f1f5eb}@media(max-width:1180px){.topbar{padding:0 24px;grid-template-columns:200px 1fr 180px}.workspace,footer{width:calc(100% - 48px)}.table-row{grid-template-columns:minmax(260px,1.4fr) 170px 170px 95px 75px 115px}.drawing-layout{grid-template-columns:240px minmax(500px,1fr)}.drawing-workspace{width:calc(100% - 28px)}.project-files-page{width:calc(100% - 48px)}}
