:root{color:#15171a;background:#f6f8fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;letter-spacing:0;text-rendering:optimizeLegibility}*{box-sizing:border-box}html{min-width:320px;background:#f6f8fb}body{min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #0f766e;outline-offset:3px}.app-shell{min-height:100vh}.topbar{display:flex;align-items:center;gap:12px;min-height:76px;padding:14px clamp(16px,4vw,36px);color:#fff;background:#15171a;border-bottom:4px solid #14b8a6}.brand-mark{display:grid;place-items:center;width:46px;height:46px;color:#15171a;background:#f8fafc;border-radius:8px}.topbar h1,.dashboard-band h2,.step-panel h2,.library-panel h3,.job-memory-card h3,.result-details h3,.error-list h3{margin:0;line-height:1.05}.topbar h1{font-size:clamp(1.45rem,3.5vw,1.9rem)}.eyebrow{margin:0 0 5px;color:#5f6c7b;font-size:.78rem;font-weight:800;text-transform:uppercase}.topbar .eyebrow{color:#a8f4e9}.app-main{width:min(1080px,100%);margin:0 auto;padding:clamp(14px,2.5vw,28px)}.dashboard-band,.scanner-panel,.step-panel{border:1px solid #d8dee7;background:#fff;box-shadow:0 1px #1118270f}.dashboard-band{padding:clamp(14px,2.5vw,22px)}.dashboard-heading-row,.panel-heading,.scanner-heading,.result-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.dashboard-band h2,.step-panel h2{font-size:clamp(1.38rem,4.5vw,2.2rem)}.library-panel h3{font-size:clamp(1.15rem,3vw,1.45rem)}.unit-toggle,.segmented-field{min-width:0;margin:0;padding:0;border:0}.unit-toggle legend,.segmented-field legend{margin-bottom:6px;color:#384252;font-size:.84rem;font-weight:800}.unit-toggle{display:flex;flex-wrap:wrap;gap:8px}.unit-toggle legend{flex-basis:100%}.unit-toggle button,.segmented button{min-width:54px;min-height:42px;border:1px solid #b9c3d0;color:#20252d;background:#fff;border-radius:8px;font-weight:800}.unit-toggle button.selected,.segmented button.selected{color:#fff;border-color:#0f766e;background:#0f766e}.action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px}.action-button{display:flex;align-items:center;gap:12px;min-width:0;min-height:76px;padding:14px;text-align:left;border:1px solid #cfd7e2;background:#f8fafc;border-radius:8px}.action-button svg{flex:0 0 auto;color:#0f766e}.action-button span,.action-button small{display:block;min-width:0}.action-button strong{display:block;font-size:1rem}.action-button small{margin-top:3px;color:#5f6c7b;font-size:.9rem;line-height:1.25;overflow-wrap:anywhere}.status-line{margin:14px 0 0;color:#384252;font-size:.96rem;font-weight:700}.library-panel{margin-top:16px;padding-top:16px;border-top:1px solid #d8dee7}.library-header,.library-stats{display:flex;align-items:center;gap:12px}.library-header{justify-content:space-between}.library-stats{flex-wrap:wrap;justify-content:flex-end}.library-stats span{padding:5px 10px;color:#20252d;background:#eef2f7;border:1px solid #d6dee8;border-radius:999px;font-size:.85rem;font-weight:900}.library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.library-column{min-width:0}.library-column h4{margin:0 0 8px;color:#384252;font-size:.92rem;text-transform:uppercase}.library-list{display:grid;gap:8px}.library-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;min-width:0;padding:12px;background:#f8fafc;border:1px solid #d8dee7;border-radius:8px}.library-item strong,.library-item span{display:block;min-width:0;overflow-wrap:anywhere}.library-item strong{color:#15171a}.library-item span{margin-top:3px;color:#5f6c7b;font-size:.9rem;font-weight:750}.library-item .secondary-button{min-height:40px;padding-inline:12px}.trust-badge{display:inline-flex!important;width:fit-content;margin-top:8px!important;padding:4px 8px;color:#384252!important;background:#eef2f7;border:1px solid #cfd7e2;border-radius:999px;font-size:.78rem!important;font-weight:900!important}.trust-badge.photo-backed{color:#064e3b!important;background:#dff8ec;border-color:#83d4ad}.trust-badge.reused-from-library{color:#1e3a8a!important;background:#e0ecff;border-color:#9bbcf8}.library-empty{margin:12px 0 0;color:#5f6c7b;font-size:.95rem;line-height:1.35;font-weight:750}.inline-alert{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;padding:12px;color:#15171a;background:#fff7df;border:1px solid #e7c768;border-radius:8px}.inline-alert.warn{background:#fff1f1;border-color:#f0a0a0}.inline-alert button{min-height:40px;padding:0 14px;border:1px solid #a16207;color:#15171a;background:#fff;border-radius:8px;font-weight:800}.scanner-panel{margin-top:16px;padding:clamp(16px,3vw,22px)}.scanner-frame{position:relative;min-height:260px;margin-top:16px;overflow:hidden;background:#111827;border-radius:8px}.scanner-frame video{display:block;width:100%;height:320px;object-fit:cover}.scan-reticle{position:absolute;top:22%;right:22%;bottom:22%;left:22%;border:3px solid #14b8a6;border-radius:8px;box-shadow:0 0 0 999px #0000003d}.manual-code{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end;margin-top:14px}.stepper{display:flex;gap:8px;margin:16px 0;padding-bottom:4px;overflow-x:auto}.step-pill{display:flex;align-items:center;gap:8px;min-width:max-content;min-height:48px;padding:8px 12px;color:#384252;background:#fff;border:1px solid #cfd7e2;border-radius:8px;font-weight:800}.step-pill.active{color:#fff;background:#15171a;border-color:#15171a}.step-number{display:grid;place-items:center;width:28px;height:28px;color:#15171a;background:#e8f7f5;border-radius:999px}.step-pill.active .step-number{color:#15171a;background:#14b8a6}.step-panel{padding:clamp(18px,3vw,28px)}.panel-title{display:flex;align-items:center;gap:14px;min-width:0}.panel-icon{display:grid;flex:0 0 auto;place-items:center;width:48px;height:48px;color:#0f766e;background:#e8f7f5;border-radius:8px}.primary-button,.secondary-button,.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;border-radius:8px;font-weight:900}.panel-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.primary-button{padding:0 16px;color:#fff;background:#0f766e;border:1px solid #0f766e}.secondary-button{padding:0 14px;color:#15171a;background:#fff;border:1px solid #aeb9c7}.icon-button{width:46px;padding:0;color:#15171a;background:#fff;border:1px solid #aeb9c7}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:22px}.span-2{grid-column:1 / -1}.field{display:grid;gap:8px;min-width:0}.field span{color:#20252d;font-weight:850}.field input,.field select,.field textarea{width:100%;min-width:0;padding:0 13px;color:#15171a;background:#fff;border:2px solid #b9c3d0;border-radius:8px}.field input,.field select{min-height:52px}.field textarea{min-height:96px;padding-top:12px;resize:vertical}.field input::placeholder,.field textarea::placeholder{color:#7b8796}.field.compact input{min-height:48px}.measure-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.8fr);gap:22px;align-items:stretch;margin-top:20px}.diagram{display:grid;place-items:center;min-height:260px;padding:18px;background:#eef2f7;border:1px solid #d6dee8;border-radius:8px}.diagram-tv,.hole-diagram,.result-tv{position:relative;background:#f8fafc;border:5px solid #20252d;border-radius:8px}.diagram-tv{width:min(100%,310px);aspect-ratio:16 / 9}.diagram-mount,.hole-plate{position:absolute;left:50%;top:50%;display:grid;grid-template-columns:repeat(2,1fr);gap:34px;width:40%;min-width:90px;aspect-ratio:3 / 4;padding:20px 16px;background:#14b8a61f;border:3px solid #0f766e;border-radius:8px;transform:translate(-50%,-50%)}.diagram-mount span,.hole-plate span{align-self:center;justify-self:center;width:13px;height:13px;background:#f59e0b;border:2px solid #15171a;border-radius:999px}.diagram-label{position:absolute;color:#15171a;background:#fff;border:1px solid #cfd7e2;border-radius:999px;padding:4px 10px;font-size:.82rem;font-weight:900}.diagram-label.top{top:12px;right:12px}.diagram-label.bottom{bottom:12px;left:12px}.row-list{display:grid;gap:10px;margin-top:18px}.drill-row{display:grid;grid-template-columns:1.1fr 1fr 1fr auto;gap:10px;align-items:end;padding:12px;background:#f8fafc;border:1px solid #d8dee7;border-radius:8px}.button-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.photo-field{display:grid;gap:10px}.photo-preview{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:10px;background:#f8fafc;border:1px solid #d8dee7;border-radius:8px}.photo-preview img{width:88px;height:64px;object-fit:cover;border:1px solid #cfd7e2;border-radius:8px}.job-memory-card{margin-top:20px;padding:16px;background:#f8fafc;border:1px solid #d8dee7;border-radius:8px}.choice-stack{display:grid;align-content:start;gap:14px;margin-top:20px}.check-row{display:flex;align-items:center;gap:12px;min-height:58px;padding:14px;color:#20252d;background:#f8fafc;border:1px solid #d6dee8;border-radius:8px;font-weight:850}.check-row input{width:24px;height:24px;accent-color:#0f766e}.hole-diagram{width:min(100%,300px);aspect-ratio:4 / 3}.centerline,.wall-centerline{position:absolute;top:0;bottom:0;left:50%;border-left:3px dashed #ef4444}.hole-plate.offset{transform:translate(-35%,-50%)}.segmented{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:20px}.summary-item{display:grid;gap:5px;min-width:0;padding:14px;background:#f8fafc;border:1px solid #d8dee7;border-radius:8px}.summary-item span{color:#5f6c7b;font-size:.9rem;font-weight:800}.summary-item strong{color:#15171a;font-size:1.05rem;overflow-wrap:anywhere}.summary-warning{display:flex;align-items:center;gap:10px;grid-column:1 / -1;padding:12px;color:#7c2d12;background:#fff7df;border:1px solid #e7c768;border-radius:8px;font-weight:800}.error-list{display:flex;gap:14px;margin-top:20px;padding:16px;color:#7c2d12;background:#fff7df;border:1px solid #e7c768;border-radius:8px}.error-list ul{margin:10px 0 0;padding-left:20px}.results-layout{display:grid;grid-template-columns:minmax(280px,.85fr) minmax(0,1fr);gap:22px;margin-top:22px}.result-visual{position:relative;min-height:520px;padding:28px;overflow:hidden;background:linear-gradient(#d8dee7 1px,transparent 1px),linear-gradient(90deg,#d8dee7 1px,transparent 1px),#f8fafc;background-size:28px 28px;border:1px solid #d8dee7;border-radius:8px}.wall-centerline{left:50%;z-index:1}.result-tv{position:absolute;top:70px;left:12%;right:12%;height:260px;display:grid;place-items:center;color:#15171a;font-weight:900;text-align:center}.result-mount{position:absolute;top:145px;left:32%;right:32%;z-index:2;display:grid;gap:36px;padding:26px;background:#14b8a61f;border:3px solid #0f766e;border-radius:8px}.result-row{display:flex;justify-content:space-between;gap:30px}.result-row span{width:15px;height:15px;background:#f59e0b;border:2px solid #15171a;border-radius:999px}.result-details{min-width:0}.measurement-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.drill-table{display:grid;margin-top:18px;overflow:hidden;border:1px solid #cfd7e2;border-radius:8px}.drill-table-head,.drill-table-row{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:8px;min-width:0;padding:12px}.drill-table-head{color:#fff;background:#15171a;font-weight:900}.drill-table-row{align-items:center;background:#fff;border-top:1px solid #d8dee7}.drill-table-row span,.drill-table-row strong{min-width:0;overflow-wrap:anywhere}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 820px){.library-grid,.measure-layout,.results-layout,.summary-grid{grid-template-columns:1fr}.action-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.action-button{min-height:96px;padding:10px;align-items:flex-start;flex-direction:column;justify-content:space-between;gap:8px}.action-button svg{width:24px;height:24px}.action-button strong{font-size:.95rem}.action-button small{margin-top:2px;font-size:.76rem}.dashboard-heading-row,.library-header,.panel-heading{align-items:flex-start;flex-direction:column}.panel-heading .primary-button,.panel-heading .secondary-button{width:100%}.panel-actions,.library-stats{width:100%;justify-content:flex-start}.manual-code,.form-grid,.measurement-list{grid-template-columns:1fr}.span-2{grid-column:auto}.drill-row{grid-template-columns:1fr}.drill-row .icon-button{width:100%}.scanner-frame video{height:260px}.result-visual{min-height:420px}.result-tv{left:6%;right:6%}.result-mount{left:26%;right:26%}}@media (max-width: 520px){.topbar{min-height:58px;padding:8px 12px;gap:10px}.brand-mark{width:34px;height:34px}.brand-mark svg{width:20px;height:20px}.topbar h1{font-size:1.18rem}.topbar .eyebrow{margin-bottom:2px;font-size:.62rem}.app-main{padding:10px}.dashboard-band{padding:12px}.dashboard-band h2{font-size:1.28rem}.dashboard-heading-row{gap:10px}.unit-toggle{align-items:center;flex-wrap:nowrap;gap:6px}.unit-toggle legend{flex-basis:auto;margin:0 2px 0 0;font-size:.72rem}.unit-toggle button{min-width:42px;min-height:36px;border-radius:7px}.action-grid{margin-top:12px}.action-button{min-height:84px;padding:9px}.action-button svg{width:22px;height:22px}.action-button strong{font-size:.9rem}.action-button small{font-size:.72rem}.status-line{margin-top:10px;font-size:.84rem}.library-panel{margin-top:12px;padding-top:12px}.library-panel h3{font-size:1.05rem}.library-stats{gap:8px}.library-stats span{padding:5px 9px;font-size:.78rem}.library-empty{font-size:.84rem}.stepper{margin:12px 0}.step-pill{min-height:42px;padding:7px 10px;font-size:.9rem}.step-number{width:24px;height:24px}.dashboard-band,.scanner-panel,.step-panel{margin-left:-6px;margin-right:-6px}.drill-table-head,.drill-table-row{grid-template-columns:1.15fr .95fr .75fr .75fr;gap:4px;padding:10px 8px;font-size:.9rem}}@media print{body{background:#fff}.topbar,.dashboard-band,.scanner-panel,.stepper,.panel-heading .print-control,.panel-heading .primary-button{display:none!important}.app-main{width:100%;padding:0}.step-panel{border:0;box-shadow:none}.results-layout{grid-template-columns:1fr 1fr}}
