@font-face{font-family:Workshop;src:url('/static/fonts/DejaVuSans.ttf')}*{box-sizing:border-box}body{margin:0;background:#f4f4ed;color:#1c2a24;font-family:Workshop,system-ui,sans-serif;font-size:13px;line-height:1.55}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:3px}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}a{color:inherit;text-decoration:none}.shell{display:grid;grid-template-columns:214px minmax(0,1fr);min-height:100vh}.sidebar{background:#192b22;color:#d6e0d8;padding:29px 20px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;gap:10px;align-items:center}.brand-mark{width:37px;height:37px;background:#d8e6ac;color:#192b22;display:grid;place-items:center;border-radius:10px;font-size:25px}.brand strong{font-size:24px;letter-spacing:1px;color:#f2f5e9}.brand small{display:block;font-size:8px;letter-spacing:1.8px;color:#a7b7a8}.side-label{font-size:9px;letter-spacing:2px;color:#91a595;margin:38px 12px 14px}.nav{display:grid;gap:7px}.nav button{border:0;background:none;color:#b5c5ba;text-align:left;border-radius:8px;padding:12px 10px;display:flex;gap:12px;align-items:center}.nav button.active{color:#e7f0ce;background:#31463a}.nav .ico{font-size:19px;width:22px}.sidebar .bottom{margin-top:auto;font-size:10px;color:#8ea593}.owner{display:flex;align-items:center;gap:10px;padding:20px 0;border-top:1px solid #415046}.avatar{background:#405d4b;border-radius:50%;width:34px;height:34px;display:grid;place-items:center;color:#e2ecd4}.owner b{display:block;color:#d6e1d5;font-weight:400}.owner small{font-size:9px}.workspace{min-width:0;padding:0 32px 30px}.topbar{height:78px;border-bottom:1px solid #dce1d6;display:flex;justify-content:space-between;align-items:center;gap:12px}.crumb{font-size:11px;color:#718276}.crumb b{font-weight:400;color:#263d2e;margin-left:10px}.top-right{display:flex;gap:14px;align-items:center;font-size:10px;color:#63796b}.live-dot:before{content:'';width:6px;height:6px;display:inline-block;border-radius:50%;background:#6a8857;margin-right:7px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin:27px 0 22px;gap:20px}.eyebrow{font-size:9px;text-transform:uppercase;letter-spacing:2px;color:#74836e;margin-bottom:6px}h1{font-size:27px;font-weight:400;line-height:1.3;margin:0 0 7px;letter-spacing:-1px}h2{font-size:18px;font-weight:400;margin:0 0 14px}h3{font-size:14px;margin:0 0 12px}p{margin:0 0 12px}.muted{color:#78877b;font-size:11px}.actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.btn{border:1px solid #d1d9cb;color:#304b39;background:#fffefa;border-radius:7px;padding:9px 13px;font-size:11px;display:inline-flex;justify-content:center;align-items:center;gap:7px}.btn.primary{background:#2a4936;color:#f4f6e9;border-color:#2a4936}.btn.lime{background:#d9e8aa;color:#243924;border-color:#c7d897}.btn.danger{color:#994c37;border-color:#dbbfb2}.btn.small{padding:6px 9px;font-size:10px}.btn.wide{width:100%}.badge{font-size:9px;white-space:nowrap;border-radius:5px;background:#e5ecdd;color:#4c6549;padding:4px 7px}.badge.warn{background:#f1e7cd;color:#8b6d25}.badge.neutral{color:#7f8d80;background:#e8ece6}.badge.dark{background:#2c4336;color:#d2e6b9}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}.metric{padding:15px 18px;border:1px solid #dce1d4;background:#fafbf5;border-radius:9px}.metric .label{font-size:10px;color:#788a79}.metric strong{font-weight:400;font-size:25px;display:inline-block;margin-top:2px}.metric small{margin-left:8px;font-size:10px;color:#8a9b81}.card{background:#fffefa;border:1px solid #d8dfd1;border-radius:10px;overflow:hidden}.card-head{padding:16px 19px;border-bottom:1px solid #e4e8df;display:flex;justify-content:space-between;align-items:center;gap:8px}.card-head h2,.card-head h3{margin:0}.scene-layout{display:grid;grid-template-columns:minmax(0,1fr) 288px;gap:16px;align-items:start}.viewer-toolbar{display:flex;gap:7px;align-items:center;flex-wrap:wrap;padding:10px 13px;border-bottom:1px solid #e4e8df}.seg{display:flex;gap:3px;padding:3px;border:1px solid #dce3d5;border-radius:6px}.seg button{border:0;border-radius:4px;color:#6b7e6d;background:none;font-size:10px;padding:5px 10px}.seg button.active{background:#e1ead3;color:#294c35}.viewer-toolbar select{max-width:210px;padding:6px;border:1px solid #d3ddce;border-radius:5px;background:#fffefa;font-size:10px}.canvas-wrap{position:relative;height:390px;overflow:hidden;background:#edf0e8;touch-action:none}canvas{width:100%;height:100%;display:block;touch-action:none}.canvas-hud{position:absolute;top:12px;left:15px;color:#6f8572;font-size:9px;pointer-events:none}.canvas-hud b{display:block;color:#48644e;margin-top:4px;font-weight:400}.legend{position:absolute;bottom:12px;left:14px;display:flex;gap:14px;font-size:9px;color:#607660;pointer-events:none}.legend span:before{content:'';width:7px;height:7px;display:inline-block;background:#a9906a;margin-right:5px;border-radius:2px}.legend span:nth-child(2):before{background:#637e65}.legend span:nth-child(3):before{background:#c4773e}.viewer-footer{display:flex;justify-content:space-between;padding:10px 15px;font-size:9px;color:#768a77;gap:10px}.notice{padding:13px 16px;border:1px solid #e2d6b6;border-radius:8px;background:#f8f1df;color:#77602f;font-size:11px;margin:14px 0}.notice.green{background:#eef2e3;border-color:#d5dfbc;color:#4f6846}.notice.red{background:#f8e8e1;border-color:#dfc0b0;color:#925c43}.notice strong{font-weight:400}.inspector{padding:18px}.inspector .eyebrow{font-size:8px}.inspector h2{font-size:17px;margin-bottom:7px}.kv{display:flex;justify-content:space-between;border-bottom:1px solid #e6eadf;padding:9px 0;font-size:10px;gap:8px}.kv span:first-child{color:#7d8d7d}.kv span:last-child{text-align:right;word-break:break-word}.source-box{margin:13px 0;background:#f0f3ea;border-radius:6px;padding:10px;font-size:9px;color:#63755f;word-break:break-word}.source-box b{display:block;font-weight:400;color:#344f39;margin-bottom:4px}.field{display:grid;gap:5px;margin:10px 0;font-size:10px;color:#6c7f69}.field input,.field select,.field textarea,.control{padding:8px 9px;border:1px solid #d3ddcc;border-radius:5px;color:#263c2b;background:#fffefa;width:100%;min-width:0}.field textarea{min-height:65px;resize:vertical}.field small{font-size:9px;color:#819174}.field-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}.checks{display:flex;align-items:center;gap:8px;font-size:10px;margin:12px 0}.checks input{accent-color:#3b5d40}.parts-card{margin-top:17px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;font-size:10px;text-align:left}th{font-weight:400;background:#f4f6ee;color:#7b8c76;font-size:9px;padding:11px 14px;white-space:nowrap}td{padding:12px 14px;border-top:1px solid #edf0e7;vertical-align:top}tr.selectable{cursor:pointer}tr.selectable:hover{background:#f5f8ec}tr.selected{background:#edf3df}tr.excluded{color:#92a08d}td .detail{display:block;color:#8c9b83;font-size:9px;margin-top:3px}td input[type=checkbox]{accent-color:#416443}.tabs-inline{display:flex;gap:12px}.tabs-inline button{background:none;border:0;font-size:10px;color:#7f9078;padding:5px 0}.tabs-inline button.active{color:#38583d;border-bottom:1px solid #38583d}.empty{padding:50px 24px;text-align:center;max-width:620px;margin:15px auto;color:#778b75}.empty h2{font-size:23px;color:#2b4936}.empty .symbol{font-size:44px;color:#8b9b69;margin-bottom:15px}.dropzone{padding:25px;border:1px dashed #a8ba99;background:#f4f7eb;border-radius:9px;text-align:center;color:#6c805e;margin-bottom:18px;cursor:pointer}.dropzone:hover{background:#eaf1dc}.file-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.file-card{padding:18px;min-width:0}.file-icon{font-size:11px;color:#8d9c79;letter-spacing:2px;margin-bottom:14px}.file-card h3{word-break:break-word}.file-card .kv{font-size:10px}.alignment{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}.alignment .card{padding:16px}.issue{padding:15px 18px;border-bottom:1px solid #e8ecdf;display:flex;gap:12px;align-items:start}.issue-icon{width:22px;flex-shrink:0;height:22px;background:#efe5c9;color:#946f2c;display:grid;place-items:center;border-radius:50%}.issue.resolved .issue-icon{background:#e2ebd6;color:#67874a}.issue p{font-size:11px;margin:0 0 4px}.issue small{font-size:9px;color:#8b9c7f}.issue .actions{margin-left:auto;flex-shrink:0}.stock{margin:20px 0;padding:22px}.stock h3{font-size:16px;font-weight:400}.bar-row{margin:16px 0}.bar-label{font-size:10px;color:#71846b;margin-bottom:7px}.bar{display:flex;height:31px;background:#edf0e5;border-radius:4px;overflow:hidden;border:1px solid #d5dfca;gap:2px}.bar .cut{background:#799165;color:#f5f7e9;display:flex;align-items:center;justify-content:center;font-size:8px;overflow:hidden;white-space:nowrap;min-width:2px}.bar .waste{background:#e5dac0}.doc-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.doc-card{padding:26px}.doc-tag{font-size:9px;letter-spacing:2px;color:#819275}.doc-card h2{margin:18px 0 10px;font-size:21px}.doc-card p{font-size:11px;color:#7d8e74;min-height:54px}.doc-card .preview-sheet{height:155px;background:#f3f5ed;padding:17px;margin-bottom:20px;border:1px solid #e0e6d7}.sheet-line{height:5px;background:#d6dec9;margin-bottom:10px}.sheet-line.short{width:55%}.sheet-block{height:65px;border:1px solid #d0dac2;background:repeating-linear-gradient(to bottom,#e2e9d8 0,#e2e9d8 1px,transparent 1px,transparent 15px)}.modal-shade{position:fixed;inset:0;background:#13291c99;z-index:20;display:flex;align-items:center;justify-content:center;padding:22px}.modal{background:#fcfdf6;border:1px solid #d7dfcd;border-radius:12px;max-width:660px;width:100%;max-height:92vh;overflow:auto;padding:25px;box-shadow:0 25px 100px #10251933}.modal.wide{max-width:880px}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px}.modal-head h2{margin:0}.close{border:0;background:#ebf0e2;color:#648151;border-radius:50%;width:28px;height:28px;font-size:19px}.modal .foot{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.login{min-height:100vh;display:grid;place-items:center;background:#192b22;padding:22px}.login-card{width:380px;max-width:100%;background:#f6f8ee;border-radius:14px;padding:35px}.login-card .brand strong{color:#1d3827}.login-card .brand small{color:#6e8463}.login-card h1{margin-top:35px;font-size:25px}.login-card .btn{padding:12px}.login-card .muted{margin-bottom:23px}.project-list{display:grid;gap:10px}.project-item{border:1px solid #dce3d3;background:#f7f9f0;border-radius:8px;padding:14px;display:flex;justify-content:space-between;gap:15px;align-items:center}.project-item strong{display:block;font-size:12px;font-weight:400}.project-item small{font-size:9px;color:#8a9d7c}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#213e2b;color:#eff6de;padding:12px 20px;border-radius:9px;z-index:50;font-size:12px;box-shadow:0 5px 30px #17291622;max-width:90vw;display:none}#toast.error{background:#884f35}.progress{position:fixed;inset:0;background:#edf3e4c9;z-index:60;display:grid;place-items:center;text-align:center}.spinner{width:30px;height:30px;border:2px solid #cfdbbf;border-top-color:#3c613f;border-radius:50%;margin:0 auto 15px;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.inline-link{color:#587942;text-decoration:underline;cursor:pointer;background:none;border:0;padding:0;font-size:inherit}.hint{font-size:10px;color:#7a8c70;line-height:1.7}.fit-controls{position:absolute;right:12px;bottom:11px;display:flex;gap:4px}.fit-controls button{border:1px solid #cbd6c1;border-radius:4px;background:#f9fbf3;color:#607853;width:28px;height:26px}.cut-state{position:absolute;right:12px;top:12px;max-width:260px;padding:8px 12px;border-radius:6px;background:#f5e3bf;color:#8e6230;font-size:10px}.dimension-card{border-bottom:1px solid #e7eddd;padding:15px 18px}.dimension-card h3{font-weight:400}.dim-values{display:flex;gap:20px;margin:8px 0;color:#7b8d6d;font-size:10px}.dim-values strong{display:block;font-size:17px;font-weight:400;color:#2b4931}.audit{font-size:10px;padding:8px 0;border-bottom:1px solid #e4e9dc;word-break:break-word}.dim-arrow{color:#a7b78f;font-size:21px}.pdf-canvas{background:#fff}.bill{font-size:32px;font-weight:400}.price-date{font-size:9px;color:#859776}.responsive-only{display:none}.figure-diagram{width:100%;height:145px;background:#f0f4e6;border:1px solid #d7e1ca;border-radius:8px;margin-top:15px}.figure-diagram text{font-family:Workshop;font-size:10px;fill:#587244}.figure-diagram line{stroke:#55704a;stroke-width:1.5}.figure-diagram .cut-line{stroke:#bd7944;stroke-width:3}
@media(min-width:1600px){.workspace{padding-left:45px;padding-right:45px}.canvas-wrap{height:470px}.scene-layout{grid-template-columns:minmax(0,1fr) 320px}}@media(max-width:1150px){.shell{grid-template-columns:175px minmax(0,1fr)}.sidebar{padding:25px 13px}.workspace{padding:0 20px 25px}.scene-layout{grid-template-columns:minmax(0,1fr) 255px}.brand strong{font-size:21px}.brand small{font-size:7px}.canvas-wrap{height:360px}.viewer-toolbar select{max-width:150px}.file-grid{grid-template-columns:1fr 1fr}}@media(max-width:850px){.shell{grid-template-columns:1fr}.sidebar{height:auto;position:relative;display:block;padding:14px 18px}.sidebar .side-label,.sidebar .bottom,.sidebar .owner{display:none}.sidebar .brand{display:none}.nav{display:flex;justify-content:space-between;gap:2px}.nav button{font-size:10px;padding:8px}.nav .ico{font-size:15px;width:auto}.workspace{padding:0 17px 25px}.topbar{height:57px}.page-heading{margin:22px 0 17px}h1{font-size:23px}.scene-layout{grid-template-columns:minmax(0,1fr) 255px}.metrics{gap:8px}.metric{padding:12px}.metric strong{font-size:22px}.metric small{display:block;margin-left:0}.top-right .live-dot{display:none}}@media(max-width:650px){.workspace{padding:0 12px 25px}.top-right{font-size:9px}.crumb{font-size:9px}.page-heading{display:block}.page-heading>.actions{margin-top:14px}.metrics{grid-template-columns:1fr 1fr;gap:7px;margin-bottom:12px}.metric{padding:10px 13px}.metric .label{font-size:9px}.metric strong{font-size:21px}.metric small{display:inline;margin-left:7px}.scene-layout{grid-template-columns:1fr}.inspector{padding:17px}.canvas-wrap{height:355px}.file-grid,.alignment,.doc-grid,.two{grid-template-columns:1fr}.modal-shade{padding:10px}.modal{padding:20px}.nav button{font-size:9px;gap:5px}.nav .ico{font-size:14px}.topbar{height:55px}.notice{font-size:10px}.card-head{padding:13px 14px}.card-head .actions{justify-content:end}.tabs-inline{gap:8px}.tabs-inline button{font-size:9px}.viewer-toolbar{padding:8px}.viewer-footer{font-size:8px}.responsive-only{display:block}.issue{gap:8px;padding:13px}.issue .actions{margin-left:0}.issue{flex-wrap:wrap}.bar .cut{font-size:7px}.legend{font-size:8px}.legend span{max-width:90px}.field-row{gap:6px}.field-row .field{font-size:9px}th,td{padding:10px}.source-box{font-size:9px}}
