:root{--ink:#172d3c;--ink2:#294555;--muted:#6c7c83;--line:#dce2df;--paper:#f5f6f2;--white:#fff;--red:#cb3e44;--red-dark:#ab2930;--teal:#237a77;--sand:#e9ece4;--warn:#91610c;--shadow:0 10px 30px #152d3610;--radius:12px;font:14px/1.5 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);border-radius:7px;background:white;padding:9px 14px;font-weight:600;transition:background .15s,border-color .15s;min-height:40px;white-space:nowrap}button:hover{background:#eef2ee;border-color:#aebeba}button:disabled{opacity:.42;cursor:not-allowed}button.primary{background:var(--red);border-color:var(--red);color:white}button.primary:hover{background:var(--red-dark)}button.dark{background:var(--ink);border-color:var(--ink);color:white}button.text{border:0;background:none;padding:8px;color:var(--muted)}button.danger{color:#ac263b;border-color:#e7bac1}button.icon{display:inline-flex;align-items:center;justify-content:center;padding:9px;min-width:40px}button.tiny{font-size:12px;min-height:32px;padding:5px 10px}a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.row{display:flex;align-items:center;gap:10px}.wrap{flex-wrap:wrap}.spread{justify-content:space-between}.grow{flex:1;min-width:0}.stack{display:grid;gap:14px}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.eyebrow{font-size:10px;font-weight:750;letter-spacing:1.9px;text-transform:uppercase;color:var(--muted)}h1,h2,h3,p{margin:0}h1{font-size:30px;font-weight:650;letter-spacing:-1px;line-height:1.2}h2{font-size:20px;font-weight:650;letter-spacing:-.4px}h3{font-size:15px;font-weight:650}hr{border:0;border-top:1px solid var(--line);margin:14px 0}.badge{font-size:10px;font-weight:700;letter-spacing:.35px;padding:4px 7px;border-radius:4px;background:#e7eeeb;color:#456158;display:inline-flex;align-items:center;gap:5px;line-height:1.35}.badge.warning{background:#fff2d6;color:var(--warn)}.badge.red{background:#fbe8e7;color:#ae343c}.badge.blue{background:#e6edf5;color:#416478}.badge.dark{color:#dae6e5;background:#ffffff15}.dot{width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block}.notice{padding:12px 14px;background:#f0f3ee;border:1px solid #dfe5dc;border-radius:8px;font-size:12px;line-height:1.6}.notice.warning{background:#fff5e0;border-color:#ebd9a9;color:#73551c}.notice.error{background:#fceced;border-color:#e6b8bd;color:#933840}.notice.success{background:#eaf3ed;border-color:#bfd8c8;color:#235b43}.field{display:grid;gap:5px;min-width:0}.field>span,.field>label{font-size:11px;color:var(--muted);font-weight:650;letter-spacing:.2px}.field small{color:var(--muted);line-height:1.4}input,select,textarea{border:1px solid #cdd7d3;border-radius:6px;padding:9px 10px;min-width:0;width:100%;background:#fff;font-weight:400}textarea{resize:vertical;min-height:82px;line-height:1.5}input[type=checkbox]{width:17px;height:17px;min-width:17px;accent-color:var(--teal);margin:0}label.check{display:flex;align-items:flex-start;gap:10px;font-size:12px;line-height:1.55}label.check input{margin-top:2px}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.fields.three{grid-template-columns:repeat(3,minmax(0,1fr))}.full{grid-column:1/-1}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,canvas:focus-visible{outline:3px solid #db9561;outline-offset:3px}.skip-link{position:fixed;top:-60px;left:10px;padding:10px;background:white;z-index:500}.skip-link:focus{top:10px}.brand{display:flex;align-items:center;gap:11px;white-space:nowrap}.brandmark{height:34px;width:37px;background:var(--red);border-radius:7px;display:grid;place-items:center;color:white;font-size:27px;font-weight:850;line-height:1;flex:none}.brand-name{font-size:18px;font-weight:800;letter-spacing:1.4px;line-height:1}.brand-sub{font-size:9px;letter-spacing:2.3px;opacity:.62;margin-top:6px}.avatar{border-radius:50%;width:31px;height:31px;background:#46616b;display:grid;place-items:center;color:white;font-size:10px;font-weight:700}.topbar{height:64px;background:var(--ink);color:#fff;display:flex;align-items:center;padding:0 25px;gap:24px;flex-shrink:0}.topbar .brand{margin-right:12px}.topbar .divider{height:27px;width:1px;background:#ffffff20}.topbar .toplink{color:#c2d1d4;font-size:12px}.topbar button{color:#d4e1e2;border-color:#ffffff20;background:#ffffff08}.topbar button:hover{background:#ffffff18}.topbar .primary{background:var(--red);border-color:var(--red);color:white}.eval-strip{background:#eee9d9;color:#776b43;font-size:10px;text-align:center;padding:5px 12px;letter-spacing:.15px;flex-shrink:0}.top-actions{margin-left:auto;display:flex;gap:10px;align-items:center}.loading-screen{min-height:100dvh;display:grid;align-content:center;justify-items:center;gap:20px}.loading-screen .brandmark{width:55px;height:50px}.spinner{width:18px;height:18px;border:2px solid #c0cfc9;border-top-color:var(--teal);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.dashboard{max-width:1280px;margin:0 auto;padding:43px 38px 60px}.dash-intro{display:flex;align-items:center;justify-content:space-between;margin-bottom:29px}.dash-intro .eyebrow{margin-bottom:10px}.dash-intro p{margin-top:10px;color:var(--muted);font-size:13px}.metric-strip{display:flex;gap:1px;border:1px solid var(--line);border-radius:10px;background:var(--line);overflow:hidden;margin-bottom:31px}.metric{padding:20px 25px;background:white;flex:1}.metric strong{font-size:24px;font-weight:600;display:block;letter-spacing:-.7px}.metric span{font-size:11px;color:var(--muted)}.section-title{margin:0 0 17px;display:flex;align-items:center;justify-content:space-between}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:21px}.project-card{background:white;border:1px solid var(--line);border-radius:11px;overflow:hidden;box-shadow:0 3px 6px #18333d03;display:flex;flex-direction:column;transition:box-shadow .2s}.project-card:hover{box-shadow:var(--shadow)}.project-thumb{height:180px;background:#e5ece7;position:relative;overflow:hidden}.project-thumb canvas{width:100%;height:100%;pointer-events:none}.project-thumb .badge{position:absolute;top:14px;left:14px;background:#ffffffdb}.project-content{padding:21px;display:grid;gap:9px}.project-content h3{font-size:16px;letter-spacing:-.25px}.project-meta{display:flex;gap:15px;color:var(--muted);font-size:11px;align-items:center;margin:6px 0 12px}.project-content button{width:100%;display:flex;align-items:center;justify-content:space-between}.empty-card{min-height:328px;border:1px dashed #c0cec5;border-radius:11px;display:grid;align-content:center;justify-items:center;padding:28px;text-align:center;gap:13px;background:#f3f5f0}.empty-card .roundicon{border-radius:50%;padding:15px;background:#e3eae2;color:#75917c}.dash-footer{padding:25px 0;display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.workspace{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.projectbar{background:white;border-bottom:1px solid var(--line);padding:13px 23px;display:flex;gap:16px;align-items:center;min-height:70px}.projectbar h1{font-size:20px;letter-spacing:-.4px}.crumb{font-size:10px;color:var(--muted);margin-bottom:3px}.projectbar .save-note{color:var(--muted);font-size:11px;display:flex;align-items:center;gap:6px}.steps{display:flex;background:#fdfefd;padding:0 23px;border-bottom:1px solid var(--line);gap:27px;align-items:center}.step{border:0;border-radius:0;background:none;color:#7d8e93;padding:14px 0;display:flex;align-items:center;gap:8px;font-size:12px;position:relative}.step.active{color:var(--ink)}.step.active:after{content:'';height:3px;background:var(--red);position:absolute;bottom:0;left:0;right:0}.step small{width:18px;height:18px;border:1px solid #c3cdca;border-radius:50%;display:grid;place-items:center;font-size:9px;font-weight:700}.step.active small{background:var(--ink);border-color:var(--ink);color:white}.workspace-body{flex:1;display:flex;min-height:0;position:relative}.equipment-panel{width:248px;background:#fbfcfa;border-right:1px solid var(--line);display:flex;flex-direction:column;flex-shrink:0}.panel-heading{padding:18px 18px 13px;display:flex;align-items:center;justify-content:space-between}.panel-heading h2{font-size:13px;letter-spacing:0}.panel-search{padding:0 14px 14px;position:relative}.panel-search input{font-size:11px;background:#f1f4f0;padding-left:31px;border-color:#e3e8e2}.panel-search svg{position:absolute;left:23px;top:10px;width:15px;color:#8b9b98}.equipment-list{overflow:auto;flex:1;padding:0 8px 16px}.list-group{font-size:9px;letter-spacing:1.4px;color:#8a9b96;padding:16px 10px 7px;font-weight:700;text-transform:uppercase}.equipment-row{width:100%;display:flex;align-items:center;gap:9px;border:1px solid transparent;background:none;border-radius:7px;padding:10px 9px;white-space:normal;text-align:left;min-height:59px;font-size:11px;font-weight:600;margin:2px 0}.equipment-row .index{width:23px;height:23px;border:1px solid #d5ded9;border-radius:6px;display:grid;place-items:center;flex-shrink:0;font-size:9px;color:#7b8c84;background:#fff}.equipment-row .meta{font-size:9px;color:#80908d;font-weight:400;margin-top:3px}.equipment-row.selected{background:#e8efea;border-color:#c7d8cd;color:#254c48}.equipment-row.selected .index{color:white;background:var(--teal);border-color:var(--teal)}.equipment-row:hover{background:#eef2ed;border-color:transparent}.panel-bottom{padding:13px;border-top:1px solid var(--line);font-size:10px;color:var(--muted);line-height:1.6}.viewer{flex:1;position:relative;min-width:0;background:#eaf0ea;overflow:hidden}.viewer canvas{display:block;width:100%;height:100%;touch-action:none;outline-offset:-4px;cursor:grab}.viewer canvas[data-mode=move]{cursor:move}.viewer canvas:active{cursor:grabbing}.labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.map-pin{position:absolute;top:0;left:0;pointer-events:auto;border-radius:6px;min-height:23px;min-width:23px;width:23px;height:23px;padding:0;font-size:9px;color:#274a4b;background:#f8fdfaeb;border:1px solid #7c9a92;box-shadow:0 2px 5px #1e353d15}.map-pin.selected{background:var(--teal);border-color:var(--teal);color:white;z-index:2;transform-origin:center}.map-pin[hidden]{display:none}.viewport-top{position:absolute;left:20px;right:20px;top:17px;display:flex;align-items:flex-start;justify-content:space-between;pointer-events:none;gap:12px}.viewport-top>*{pointer-events:auto}.option-control{border:1px solid #ffffffbd;background:#fffffff0;border-radius:8px;padding:10px 12px;box-shadow:0 3px 12px #24403908;display:flex;gap:13px;align-items:center;max-width:370px}.option-control select{padding:0 22px 0 0;border:0;background:transparent;font-size:12px;font-weight:650;max-width:240px;box-shadow:none}.option-control .eyebrow{font-size:8px;margin-bottom:2px}.view-status{display:flex;gap:7px;align-items:center;background:#ffffffc9;border:1px solid #ffffffb8;border-radius:6px;padding:6px 9px;font-size:10px;color:#657a70}.viewport-tools{position:absolute;top:101px;left:20px;display:flex;flex-direction:column;gap:5px;background:#fffffff2;padding:5px;border:1px solid #ffffffc0;border-radius:9px;box-shadow:0 3px 12px #23452e08}.viewport-tools button{background:transparent;border:0;min-width:34px;min-height:34px;padding:7px}.viewport-tools button.active{background:#e4eeea;color:var(--teal)}.viewport-bottom{position:absolute;bottom:18px;left:20px;right:20px;display:flex;align-items:flex-end;justify-content:space-between;pointer-events:none;gap:10px}.viewport-bottom>*{pointer-events:auto}.layer-tabs{display:flex;gap:2px;background:#ffffffee;border:1px solid #ffffffc9;padding:4px;border-radius:7px;box-shadow:0 2px 12px #28443708}.layer-tabs button{padding:6px 10px;min-height:29px;font-size:10px;border:0;background:transparent;color:#6b8074}.layer-tabs button.active{background:var(--ink);color:white}.axis-key{font-size:9px;color:#75877e;line-height:1.6;text-align:right;background:#f5f8f180;border-radius:6px;padding:6px 8px}.view-hint{position:absolute;bottom:69px;left:50%;transform:translateX(-50%);font-size:10px;color:#638077;white-space:nowrap;pointer-events:none}.inspector{width:286px;background:#fcfdfb;border-left:1px solid var(--line);display:flex;flex-direction:column;flex-shrink:0}.inspector-scroll{overflow:auto;flex:1;padding:18px}.inspector .eyebrow{font-size:9px}.inspector h2{font-size:18px;line-height:1.3;margin:9px 0 5px}.inspector .subtitle{font-size:11px;color:var(--muted);line-height:1.6}.inspector .fields{gap:10px}.inspector input,.inspector select,.inspector textarea{font-size:11px;padding:7px 8px}.inspector .field>span{font-size:9px}.inspector .notice{font-size:10px;padding:10px 11px}.inspector .badge{font-size:8px}.property-section{padding-top:19px;margin-top:18px;border-top:1px solid var(--line)}.property-section h3{font-size:10px;letter-spacing:.85px;text-transform:uppercase;margin-bottom:12px;color:#6c8175}.property-section p{font-size:11px;line-height:1.65}.property-icon{background:#eaf0e9;border:1px solid #dbe4dc;border-radius:9px;width:50px;height:50px;display:grid;place-items:center;color:#527b70}.property-icon svg{width:28px;height:28px}.footerbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 19px;background:#fbfcf9;border-top:1px solid var(--line);font-size:9px;color:#778a7d;flex-shrink:0}.footerbar .legal{max-width:1050px;font-size:9px;line-height:1.5}.footerbar .legal strong{color:#9d514b}.empty-inspector{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;text-align:center;padding:40px 15px;color:var(--muted);min-height:250px}.empty-inspector h2{color:var(--ink);font-size:17px}.empty-inspector p{font-size:11px;line-height:1.8}.workflow-pane{padding:28px;overflow:auto;flex:1;background:var(--paper)}.workflow-inner{max-width:1210px;margin:0 auto;display:grid;gap:21px}.card{background:white;border:1px solid var(--line);border-radius:10px;padding:22px}.card h2{margin-bottom:5px}.card p.muted{font-size:12px}.upload-zone{border:1px dashed #a6bbb0;border-radius:9px;background:#f4f7f1;text-align:center;padding:28px;display:grid;justify-items:center;gap:10px}.upload-zone.dragging{background:#e0ede7;border-color:var(--teal)}.upload-zone svg{width:28px;height:28px;color:#6f8e7d}.upload-zone input{max-width:320px;font-size:12px;background:white}.file-row{display:flex;gap:13px;padding:15px 0;align-items:center;border-bottom:1px solid #edf0ea}.file-row:last-child{border-bottom:0}.file-row h3{font-size:12px}.file-row p{font-size:10px;margin-top:4px;color:var(--muted)}.file-icon{padding:10px;border-radius:7px;background:#eef2ec;color:#708472}.tabs{display:flex;gap:6px;margin-bottom:18px;border-bottom:1px solid var(--line);padding-bottom:12px;flex-wrap:wrap}.tabs button{font-size:11px}.tabs button.active{background:var(--ink);color:white;border-color:var(--ink)}.review-layout{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(410px,1.2fr);gap:20px;align-items:start}.source-preview{width:100%;display:block;border:1px solid var(--line);background:white}.source-view{position:sticky;top:0;max-height:75vh;overflow:auto}.source-line{background:#fff;border:1px solid var(--line);padding:16px;border-radius:9px}.source-line summary{font-weight:650;font-size:12px;cursor:pointer;padding:4px}.source-line[open] summary{margin-bottom:14px}.original-text{padding:9px;background:#f5f6f1;border-radius:5px;font:10px/1.65 ui-monospace,monospace;word-break:break-word;color:#798178;white-space:pre-wrap}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px;text-align:left}th{font-size:10px;font-weight:650;color:var(--muted);letter-spacing:.3px;padding:12px 10px;background:#f5f7f2;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:12px 10px;border-bottom:1px solid #edf0e9;vertical-align:top}td input,td select{font-size:11px;padding:6px;min-width:90px}.issues{display:grid;gap:8px;max-height:370px;overflow:auto}.issue{padding:11px 13px;background:#fdf6e7;border-left:3px solid #d4b86a;border-radius:5px;font-size:11px}.issue .eyebrow{font-size:8px;color:#957736}.review-check{border:1px solid var(--line);border-radius:7px;padding:14px;display:flex;align-items:center;gap:12px;background:white}.review-check.done{border-color:#c1d6c7;background:#f0f6f0}.review-check .roundicon{width:29px;height:29px;display:grid;place-items:center;border-radius:50%;background:#e9eee6;color:#819780}.review-check.done .roundicon{color:var(--teal);background:#dcece0}.review-check h3{font-size:12px}.review-check p{font-size:10px;color:var(--muted);margin-top:3px}.split{display:grid;grid-template-columns:1fr 1fr;gap:20px}.job{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.progress{height:5px;background:#e4ebe2;border-radius:8px;overflow:hidden;min-width:120px}.progress div{height:100%;background:var(--teal)}.login{min-height:100dvh;display:grid;grid-template-columns:1fr 1fr}.login-hero{background:var(--ink);color:#f3f6f3;padding:44px 50px;display:flex;flex-direction:column;position:relative;overflow:hidden}.login-hero h1{font-size:52px;line-height:1.13;letter-spacing:-2px;font-weight:550;margin:70px 0 20px;max-width:500px}.login-hero h1 span{color:#9bbdb0}.login-hero p{font-size:14px;color:#adbfc1;max-width:340px;line-height:1.8}.hero-lines{height:200px;position:relative;opacity:.4;margin:40px -80px -35px;transform:rotateX(50deg) rotateZ(-30deg);background:repeating-linear-gradient(0deg,transparent 0 24px,#72938c44 25px 26px),repeating-linear-gradient(90deg,transparent 0 24px,#72938c44 25px 26px);border:1px solid #759c8833}.login-note{margin-top:auto;font-size:10px;letter-spacing:.5px;color:#8fa7a5}.login-form-area{display:flex;align-items:center;justify-content:center;padding:50px 35px;background:#f5f6f1}.login-box{width:360px;display:grid;gap:21px}.login-box h2{font-size:26px;margin:0 0 7px}.login-box .field>span{font-size:11px}.login-box button.primary{width:100%}.login-box .tabs{justify-content:flex-start;margin-bottom:0}.login-box .tabs button{background:none;border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 2px;margin-right:20px}.login-box .tabs button.active{color:var(--ink);border-bottom-color:var(--red)}.pin-input{font-size:24px;letter-spacing:12px;text-align:center;font-family:ui-monospace,monospace}.demo-access{border-top:1px solid var(--line);padding-top:20px;display:grid;gap:11px}.login-box .notice{font-size:11px}.login-error{min-height:18px;font-size:12px;color:#b13d48}.dialog{border:0;border-radius:14px;padding:0;width:min(680px,calc(100vw - 32px));max-height:90dvh;box-shadow:0 25px 100px #14283240;overflow:hidden;color:var(--ink);background:#fbfcf8}.dialog.wide{width:min(1100px,calc(100vw - 32px))}.dialog::backdrop{background:#132c3c86;backdrop-filter:blur(3px)}.dialog-head{padding:21px 23px;border-bottom:1px solid var(--line);background:white;display:flex;justify-content:space-between;align-items:center}.dialog-head h2{font-size:19px}.dialog-content{padding:22px;overflow:auto;max-height:calc(90dvh - 150px)}.dialog-actions{border-top:1px solid var(--line);padding:14px 22px;display:flex;justify-content:flex-end;gap:9px;background:white;flex-wrap:wrap}#toast-region{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:600;max-width:min(640px,calc(100vw - 36px));pointer-events:none}.toast{padding:13px 18px;margin-top:8px;border-radius:8px;box-shadow:0 5px 25px #14374622;background:var(--ink);color:white;font-size:12px;display:flex;align-items:center;gap:10px}.toast.error{background:#8e3340}.preview-viewer{height:420px;position:relative;border-radius:10px;border:1px solid var(--line);overflow:hidden}.preview-viewer canvas{height:100%;width:100%;touch-action:none}.customer .projectbar{padding:17px 25px}.customer .equipment-panel{width:250px}.customer .inspector{width:304px}.customer-footer{padding:13px 20px;background:white;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:15px}.customer-footer p{font-size:11px;max-width:800px;color:var(--muted)}.thread{padding:16px;border:1px solid var(--line);border-radius:8px;background:white;margin-top:12px}.thread-body{white-space:pre-wrap;font-size:12px;line-height:1.7;margin:12px 0}.reply{border-left:2px solid #bacfc1;padding:9px 12px;margin:12px 0;background:#f6f8f2}.reply p{white-space:pre-wrap;font-size:12px}.thread .meta{font-size:10px;color:var(--muted)}.media-grid{display:grid;gap:9px}.media-grid img{width:100%;border:1px solid var(--line);border-radius:6px}.media-grid figcaption{font-size:10px;color:var(--muted)}figure{margin:0}.part-row{padding:7px 0;border-bottom:1px solid #e8eee6;display:flex;align-items:center;gap:9px;font-size:10px}.part-row .dot{background:#799d88}.part-list{max-height:270px;overflow:auto}.modal-json{min-height:320px;font:11px/1.6 ui-monospace,monospace;tab-size:2}.mobile-toggle{display:none}.mobile-drawer-close{display:none}.banner-offline{background:#a94a30;color:white;text-align:center;padding:7px 15px;font-size:11px}.stats{font:9px ui-monospace,monospace;color:#82918a}.source-preview-wrap{position:relative;overflow:hidden}.calibration-dot{position:absolute;background:#bc4444;border:2px solid white;border-radius:50%;width:12px;height:12px;transform:translate(-50%,-50%);pointer-events:none}.plan-overlay{position:absolute;inset:0;pointer-events:none;opacity:.22;background-repeat:no-repeat;background-position:center;background-size:contain;display:none}.viewer.top-plan .plan-overlay{display:block}.viewer-error{position:absolute;inset:120px 20px auto;background:#fff2dd;border:1px solid #d6b674;border-radius:8px;padding:20px;z-index:8;font-size:12px}.no-data{padding:25px;text-align:center;color:var(--muted);font-size:12px}.kbd{border:1px solid #d0d8d2;padding:2px 5px;border-radius:3px;font:10px ui-monospace,monospace;background:#fff}.info-row{display:flex;justify-content:space-between;gap:10px;font-size:11px;padding:7px 0;border-bottom:1px solid #e7ece5}.route-line{border:1px solid var(--line);border-radius:8px;padding:15px;background:white;margin-top:12px}.route-line h3{font-size:12px}.footnote{font-size:10px;line-height:1.7;color:var(--muted)}.source-approved{display:flex;align-items:center;justify-content:space-between;border:1px solid #ccdccc;background:#eef5ec;border-radius:8px;padding:14px}.conflict-actions{display:flex;flex-wrap:wrap;gap:8px}.help-table td{font-size:12px}.inline-error{color:#b0444b;font-size:11px;margin-top:6px}.scope-row{padding:14px;border:1px solid var(--line);border-radius:7px;background:#f8faf5;margin-bottom:10px}.source-lens{position:absolute;left:0;top:0;border:2px solid #c65240;background:#df9d3c18;pointer-events:none}.quote-footer{padding:14px;border-top:1px solid var(--line);background:#fcfdf9;display:flex;gap:12px;position:sticky;bottom:0;align-items:center;justify-content:flex-end}.page-review{position:sticky;top:0;background:white;border:1px solid var(--line);padding:10px;z-index:1}.source-warning{font-size:10px;color:#97621a}.phone-full{display:contents}
@media(min-width:1550px){.equipment-panel{width:273px}.inspector{width:314px}.viewport-top,.viewport-tools{left:25px}.viewport-bottom{left:25px;right:25px}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1150px){.equipment-panel{width:210px}.inspector{width:250px}.topbar{padding:0 17px;gap:16px}.topbar .brand-name{font-size:15px}.projectbar{padding:12px 16px}.projectbar h1{font-size:17px}.projectbar .hide-tablet{display:none}.steps{padding:0 16px;gap:20px}.step{font-size:11px}.viewer .view-status{display:none}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.review-layout{grid-template-columns:1fr 1.3fr}.workflow-pane{padding:20px}.inspector-scroll{padding:15px}.option-control{max-width:270px}.option-control select{max-width:180px}.footerbar .stats{display:none}}
@media(max-width:900px){.inspector{width:237px}.equipment-panel{width:185px}.equipment-row{font-size:10px;padding:8px 5px;gap:7px}.panel-heading{padding:14px 12px}.panel-search{padding:0 10px 10px}.panel-search svg{left:19px}.projectbar .save-note{display:none}.projectbar button{font-size:11px}.topbar .divider,.topbar .toplink{display:none}.step{gap:5px}.steps{gap:18px}.step small{display:none}.login-hero{padding:35px}.login-hero h1{font-size:42px}.split{grid-template-columns:1fr}.review-layout{grid-template-columns:1fr}.source-view{position:relative;max-height:300px}.project-thumb{height:170px}.customer .inspector{width:255px}.customer .equipment-panel{width:188px}.footerbar .legal{font-size:8px}.option-control{max-width:225px}.option-control select{max-width:156px}}
@media(max-width:760px){.topbar{height:55px;padding:0 14px;gap:10px}.brandmark{height:27px;width:30px}.brand-name{font-size:15px}.brand-sub{font-size:7px;letter-spacing:1.7px}.topbar .avatar,.topbar .mode-badge,.hide-mobile{display:none!important}.top-actions{gap:5px}.topbar button{padding:7px;font-size:11px;min-height:34px}.topbar button svg{width:17px}.eval-strip{font-size:9px;padding:5px}.projectbar{padding:10px 12px;min-height:64px;gap:8px;flex-wrap:wrap}.projectbar h1{font-size:16px}.projectbar .actions{gap:5px}.projectbar .actions button{padding:6px 9px;min-height:33px}.steps{overflow:auto;gap:23px;padding:0 14px;flex-shrink:0}.step{padding:11px 0;font-size:11px}.equipment-panel,.customer .equipment-panel{display:none;position:absolute;left:0;top:0;bottom:0;width:min(290px,85vw);z-index:15;box-shadow:12px 0 25px #11222f20}.equipment-panel.open{display:flex}.inspector,.customer .inspector{display:none;position:absolute;right:0;top:0;bottom:0;width:min(330px,87vw);z-index:16;box-shadow:-12px 0 25px #11222f20}.inspector.open{display:flex}.mobile-toggle{display:inline-flex}.mobile-drawer-close{display:flex}.panel-heading{padding:17px}.panel-heading h2{font-size:14px}.equipment-row{font-size:12px;padding:10px}.equipment-row .meta{font-size:10px}.inspector-scroll{padding:20px}.inspector .field>span{font-size:11px}.inspector input,.inspector select,.inspector textarea{font-size:13px}.inspector .notice{font-size:11px}.inspector h2{font-size:21px}.viewer .viewport-top{top:12px;left:12px;right:12px}.viewport-tools{left:12px;top:83px}.viewport-tools button{min-height:38px;min-width:38px}.viewport-bottom{left:12px;right:12px;bottom:12px}.view-hint{bottom:60px;font-size:9px;white-space:normal;text-align:center;width:250px}.option-control{max-width:250px;padding:8px 10px}.option-control select{max-width:177px;font-size:11px}.axis-key{font-size:8px;padding:4px}.layer-tabs button{padding:6px 8px;font-size:9px}.footerbar{padding:7px 10px}.footerbar .legal{font-size:8px}.footerbar>.row{display:none}.workflow-pane{padding:17px 12px}.card{padding:17px}.review-layout{gap:15px}.fields.three{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-intro{align-items:flex-start;gap:15px}.dashboard{padding:28px 18px}.dash-intro h1{font-size:26px}.dash-intro .eyebrow{font-size:9px}.dash-intro p{font-size:12px}.metric{padding:13px 14px}.metric strong{font-size:22px}.metric span{font-size:9px}.metric-strip{margin-bottom:25px}.project-grid{gap:15px}.project-content{padding:17px}.project-content h3{font-size:14px}.project-meta{font-size:10px}.empty-card{min-height:300px;padding:17px}.dash-footer{display:block;line-height:1.8}.login{grid-template-columns:1fr}.login-hero{padding:27px 25px}.login-hero h1{font-size:32px;max-width:340px;margin:30px 0 12px}.login-hero p{font-size:12px}.hero-lines,.login-note{display:none}.login-form-area{padding:35px 25px}.login-box{width:min(400px,100%)}.login-box h2{font-size:24px}.dialog{width:calc(100vw - 18px);max-height:94dvh;border-radius:11px}.dialog-content{padding:17px;max-height:calc(94dvh - 145px)}.dialog-head{padding:16px 18px}.dialog-actions{padding:13px 17px}.dialog-head h2{font-size:17px}.dialog.wide{width:calc(100vw - 18px)}.preview-viewer{height:330px}.customer-footer{padding:11px}.customer-footer p{font-size:9px}.customer .projectbar{padding:11px 13px}.card .row.spread{flex-wrap:wrap}.source-preview{min-width:450px}.source-view{overflow:auto}.source-approved{align-items:flex-start;gap:12px}.upload-zone{padding:20px}.page-review{gap:8px}.table-wrap table{min-width:480px}.phone-full{display:block;width:100%}}
@media(max-width:500px){.project-grid{grid-template-columns:1fr}.empty-card{min-height:200px}.project-thumb{height:195px}.dashboard .dash-intro{display:block}.dash-intro>button{margin-top:17px}.projectbar .actions .icon svg{width:16px}.view-status{display:none}.option-control{max-width:220px}.option-control select{max-width:155px}.axis-key{max-width:100px}.layer-tabs button{font-size:8px}.customer .topbar .brand-sub{display:none}.customer-footer{align-items:flex-end}.customer-footer p{max-width:60%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition:none!important;scroll-behavior:auto!important}}

/* The hidden semantic must not be overridden by flex/grid utility classes. */
[hidden]{display:none!important}

/* Keep narrow numeric fields inside the tablet property column. */
.field{min-width:0}.field input,.field select,.field textarea{min-width:0;width:100%;max-width:100%}.inspector-scroll{overflow-x:hidden}.inspector .row:not(.spread){flex-wrap:wrap}.fields{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:760px){.inspector .field input,.inspector .field select{min-height:44px}.viewer .viewport-tools button{min-height:44px;min-width:44px}}
.viewer.inspection-mode{position:fixed;inset:0;z-index:150;width:100vw;height:100dvh;background:#dbe5ea}.inspection-mode .viewport-top,.inspection-mode .viewport-bottom,.inspection-mode .view-hint{display:none}.inspection-mode #detail-controls{top:18px!important;right:18px!important;z-index:3}.inspection-mode .viewport-tools{top:90px}.inspection-mode #inspection-phase{position:absolute;top:20px;left:20px;max-width:55%;padding:10px 14px;background:#fffef4ee;border-radius:8px;pointer-events:none}#inspection-dock{position:absolute;left:18px;bottom:20px;width:min(300px,calc(100vw - 36px));max-height:44vh;overflow:auto;padding:16px;background:#fffffff0;border:1px solid #becbce;border-radius:12px;box-shadow:0 8px 30px #203a4526}.inspection-parts{display:grid;gap:5px;margin:10px 0}.inspection-parts button{white-space:normal;overflow-wrap:anywhere;min-width:0;text-align:left;padding:8px;border:1px solid #cad4d8;border-radius:5px;background:#f4f7f7}.inspection-parts button.active{background:#d2e7e9;border-color:#167b9e}#inspection-phase:empty{display:none}
#inspection-dock label{display:block;margin:12px 0;font-size:13px}#inspection-dock label select,#inspection-dock label input{display:block;width:100%;margin-top:5px}#inspection-photo{position:absolute;left:54%;top:50%;transform:translate(-35%,-48%);width:min(40vw,390px);max-height:82vh;background:#fff;border:1px solid #c9d4d4;border-radius:16px;padding:16px;box-shadow:0 18px 60px #1235;overflow:auto;text-align:center}#inspection-photo[hidden]{display:none}#inspection-photo strong,#inspection-photo span,#inspection-photo small{display:block;margin:5px 0}#inspection-photo small{font-size:11px;color:#5b6c70}.dispenser-image{width:100%;max-height:55vh;overflow:hidden;aspect-ratio:394/440}.dispenser-image img{width:100%;height:100%;object-fit:contain}.dispenser-image.photo-crop img{width:203%;max-width:none;height:100%;object-fit:fill}.reference-brand{color:#126c8d;font-weight:700}.hose-icons{display:flex;gap:12px;margin:10px 0}.hose-icons span{font-size:34px;background:#e9f2f3;padding:5px 12px;border-radius:8px}.hose-icons b{display:block;font-size:11px}@media(max-width:700px){#inspection-photo{left:auto;right:12px;top:85px;transform:none;width:42vw;max-height:43vh;padding:8px}.dispenser-image{max-height:27vh}#inspection-photo small{font-size:9px}}

/* Manufacturer references replace invented exploded sump geometry. */
.reference-inspection #site-canvas,.reference-inspection #site-labels {visibility:hidden}
.reference-inspection {background:#e9edf0}
.reference-inspection #inspection-dock {top:105px;bottom:55px;left:24px;width:300px;max-height:none;overflow:auto}
.reference-inspection #inspection-photo {top:105px;bottom:55px;left:350px;right:24px;transform:none;width:auto;max-width:none;max-height:none;overflow:auto;box-sizing:border-box;text-align:left;padding:24px}
.reference-inspection #inspection-photo .dispenser-image {height: min(43vh,420px);background:white;display:flex;align-items:center;justify-content:center}
.reference-inspection #inspection-photo img {width:100%;height:100%;object-fit:contain}
.reference-eyebrow {text-transform:uppercase;letter-spacing:.12em;font-size:11px;color:#546677}
.reference-unavailable {padding:24px;border:1px solid #d4dce3;border-radius:8px;color:#526170}
.brochure-link {display:inline-block;padding:9px 12px;background:#e3edf5;border-radius:6px;font-weight:600;color:#174365}
@media(max-width:760px){.reference-inspection #inspection-dock{top:auto;left:12px;right:12px;bottom:12px;width:auto;max-height:32vh}.reference-inspection #inspection-photo{top:90px;left:12px;right:12px;bottom:36vh;padding:14px}.reference-inspection #inspection-photo .dispenser-image{height:24vh}}

.reference-inspection .viewport-tools{display:none}
.reference-inspection #inspection-photo .dispenser-image{aspect-ratio:auto;max-height:none}

/* Assembly remains the main canvas; product literature is a second-level card. */
.assembly-inspection #inspection-dock{top:90px;bottom:24px;left:18px;width:250px;max-height:none;box-sizing:border-box}
.assembly-inspection #inspection-photo{left:auto;right:18px;top:90px;bottom:24px;transform:none;width:300px;max-height:none;text-align:left;box-sizing:border-box}
.assembly-inspection #inspection-photo .dispenser-image{aspect-ratio:auto;height:240px;max-height:35vh}
.assembly-inspection .viewport-tools{display:none}
.assembly-inspection #inspection-photo h2{font-size:18px}
.assembly-inspection .reference-eyebrow{margin-top:14px}
@media(max-width:760px){.assembly-inspection #inspection-dock{top:auto;bottom:10px;left:10px;right:10px;width:auto;max-height:28vh}.assembly-inspection #inspection-photo{top:75px;bottom:32vh;left:auto;right:10px;width:46vw}.assembly-inspection #inspection-photo .dispenser-image{height:20vh}}

.view-tools-toggle{position:absolute;left:14px;top:90px;z-index:12;box-shadow:var(--shadow)}
.viewer .viewport-tools{top:140px;max-height:calc(100% - 220px);overflow-y:auto}
.viewer .viewport-tools.tools-collapsed{display:none}
.reference-inspection .view-tools-toggle,.assembly-inspection .view-tools-toggle{display:none}

/* Keep site scope notes available in overview without covering inspection controls. */
.inspection-mode .site-scope-notice { display:none; }

/* The customer host is deliberately small: the nested public workspace owns
   the remaining viewport and its controls, while sign-out stays reachable. */
#entry.customer-drawing-host{height:100dvh;display:flex;flex-direction:column;overflow:hidden}
#entry.customer-drawing-host .customer-review-bar{height:40px;min-height:40px;display:flex;align-items:center;gap:12px;padding:4px 12px;background:var(--sand);border-bottom:1px solid var(--line)}
#entry.customer-drawing-host #entry-status{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:700;color:var(--warn)}
#entry.customer-drawing-host #customer-drawing{flex:1;min-height:0;min-width:0}
#entry.customer-drawing-host #customer-drawing>.workspace{height:100%}
