body.app-mode{overflow:hidden;height:100dvh;background:#101010;color:#f5f5ed}body.app-mode>header,body.app-mode>main{display:none}.app-mode button,.app-mode input,.app-mode select{font-family:inherit}.app-mode button{min-height:44px}.app-mode [hidden]{display:none!important}#offsiteShell{--top:126px;--nav:calc(60px + env(safe-area-inset-bottom));--sheet:178px;position:fixed;inset:0;font-size:14px}#offsiteShell.sheet-expanded{--sheet:62dvh}.app-top{position:absolute;z-index:30;top:0;left:0;right:0;padding:12px 16px;background:#101010;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;border-bottom:1px solid #3a371d}.app-brand{font-size:23px;font-weight:950;font-style:italic;color:#ffe000;letter-spacing:-1px}.app-brand span{font-size:10px;letter-spacing:1px;font-style:normal;margin-left:6px}#appSave{padding:7px 13px;min-height:36px;font-size:12px;border-color:#ffe000;color:#ffe000}#appSearch{width:100%}.app-mode .jobbar{display:flex;flex-wrap:nowrap;min-height:0;padding:0;margin:0;gap:8px;border:0;background:none;overflow:visible}.app-mode .jobbar .address{flex:1;min-width:0;position:relative}.app-mode .jobbar .address-eyebrow,.app-mode .address-punchline,.app-mode .address-quote{display:none!important}.app-mode .jobbar input{margin:0;padding:12px;font-size:16px;height:46px;border:1px solid #484848;border-radius:12px}.app-mode .jobbar #locate{width:auto;min-height:46px;padding:9px 14px;font-size:13px;border-radius:12px}.app-mode .address-suggestions{z-index:50;max-height:40dvh;top:calc(100% + 5px)}#appMap{position:absolute;top:var(--top);bottom:calc(var(--sheet) + var(--nav));left:0;right:0;min-height:80px;background:#1b211d}.app-mode #mapStage,.app-mode #liveMap{width:100%!important;height:100%!important;min-height:0!important;max-height:none!important;margin:0!important}.app-mode #mapStage{position:relative}.app-mode #canvaswrap{height:100%;overflow:auto}.app-mode .map-badge{left:50%;font-size:10px;max-width:75%;white-space:normal}.app-mode .address-pin-label{bottom:24px;font-size:9px}.app-mode .corner-edit-bar{bottom:28px}.app-sheet{position:absolute;z-index:20;left:0;right:0;bottom:var(--nav);height:var(--sheet);background:#171717;border:1px solid #47412b;border-radius:22px 22px 0 0;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 -8px 25px #0003}#sheetToggle{position:relative;flex-shrink:0;width:100%;border:0;background:none;padding:20px 18px 9px;min-height:58px;text-align:left;display:flex;justify-content:space-between;font-size:18px;font-weight:800}.sheet-grip{position:absolute;top:7px;left:calc(50% - 22px);height:4px;width:44px;background:#666;border-radius:4px}#sheetArrow{color:#ffe000}#sheetBody{overflow:auto;overscroll-behavior:contain;flex:1;min-height:0;padding:0 16px 16px}.app-view h2{font-size:22px;margin:12px 0 18px}.app-view p{font-size:12px;line-height:1.55;color:#bcbcb5}.app-view label{display:block;letter-spacing:0;font-size:12px;color:#ccc;margin:12px 0}.app-view input,.app-view select{font-size:16px;min-height:46px;margin-top:7px}.app-view input[type=checkbox]{min-height:18px;width:18px}.app-nav{position:absolute;bottom:0;left:0;right:0;z-index:40;height:var(--nav);display:grid;grid-template-columns:repeat(5,1fr);gap:4px;background:#101010;border-top:1px solid #363636;padding:5px 8px calc(5px + env(safe-area-inset-bottom))}.app-nav button{background:transparent;border:0;font-size:12px;padding:8px 0;color:#aaa;border-radius:10px}.app-nav button.selected{background:#ffe000;color:#111;font-weight:800}.map-options-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.map-options-row label{display:flex;align-items:center;gap:7px;margin:0}.map-options-row input{margin:0}.map-options-row button{font-size:12px;padding:7px 12px}.app-mode .lot-action-controls{margin:10px 0;display:flex;gap:8px}.app-mode #mapThisLot{width:100%;font-size:15px;min-height:48px}.app-mode #lotStatus{margin:8px 0;font-size:12px}.app-mode .lot-review,.app-mode #polygonEditor{padding:12px 0;background:transparent;border-top:1px solid #454545}.app-mode .lot-review .lot-preview-total{font-size:21px}.app-mode .map-legend{font-size:10px;padding:12px 0;gap:10px}.app-mode .map-corrections{padding:10px 0}.app-mode .project-controls{margin:0;padding:8px 16px;display:flex;flex-direction:column;gap:5px;width:100%;border-top:1px solid #333}.app-mode .project-actions{display:flex;width:100%;gap:8px}.app-mode .project-actions button{flex:1;min-height:36px;padding:6px 10px;font-size:12px}.app-mode #saveStatus{font-size:10px;max-width:100%;text-align:left}.app-mode #appProjectActions{flex-shrink:0}#offsiteShell:not(.sheet-expanded) #sheetBody{padding-bottom:0}#offsiteShell:not(.sheet-expanded) #viewMap>*:not(.map-options-row){display:none}#offsiteShell:not(.sheet-expanded) #sheetBody{overflow:hidden}.service-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.service-tabs button{padding:9px 4px;font-size:12px;background:#262626;border:1px solid #444}.service-tabs .selected{color:#111;background:#ffe000;border-color:#ffe000}.estimate-card{border-radius:16px;background:#242315;border:1px solid #6b601f;padding:20px;margin:14px 0}.estimate-card strong{display:block;font-size:42px;font-weight:850;letter-spacing:-1.5px;color:#ffe000;font-variant-numeric:tabular-nums}.estimate-card>span{font-size:18px}.estimate-card>small{display:block;color:#bdbb9c;margin-top:8px}.estimate-card p{margin-bottom:0}.estimate-inputs{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.estimate-inputs p{grid-column:1/-1}.extra-input{max-width:200px}#quantitySlot .summary{padding:18px 0;background:transparent;border:0;margin:20px 0}.app-mode #simpleEquation{font-size:15px}.app-mode .summary>small{display:none}.app-mode .hero-number strong{font-size:36px}.app-mode #savedPanel{padding:0;border:0;background:transparent}.app-mode .saved-content{padding:10px 0}.app-mode #googleConfig{padding:14px 0;border:0;background:transparent}.app-mode #googleConfig h2{font-size:20px}.app-mode #toast{position:fixed;z-index:100;bottom:calc(var(--nav) + 15px);max-width:90%}.app-mode .map-connection{max-height:100%;overflow:auto}.app-view details{padding:12px 0;font-size:12px}.app-view details summary{cursor:pointer;min-height:30px;color:#ffe000}.app-mode #printServiceQuote{width:100%}@media(min-width:850px){#offsiteShell{--top:120px;--sheet:178px}.app-top{padding-left:24px;padding-right:24px}#appSearch{max-width:640px;flex:1;margin-left:30px}.app-top{height:120px;flex-wrap:nowrap}#appMap{bottom:0;right:400px}.app-sheet,#offsiteShell.sheet-expanded .app-sheet{left:auto;right:0;top:var(--top);bottom:var(--nav);height:auto;width:400px;border-radius:0}.app-nav{left:auto;width:400px}#sheetBody{overflow:auto!important}#offsiteShell:not(.sheet-expanded) #viewMap>*:not(.map-options-row){display:block}#sheetToggle{pointer-events:none}#sheetArrow,.sheet-grip{display:none}}
@media(max-width:849px){#offsiteShell{--sheet:238px}#offsiteShell:not(.sheet-expanded) #viewMap>#mapActionsSlot{display:block}#offsiteShell:not(.sheet-expanded) #mapActionsSlot>*:not(.lot-action-controls){display:none!important}#offsiteShell:not(.sheet-expanded) .lot-action-controls{margin:6px 0}.app-mode #sheetBody{scroll-padding-bottom:20px}}
#sheetToggle{touch-action:none}.app-mode .estimate-card>small{letter-spacing:.4px}.app-mode #mat-gallon{padding-left:8px;padding-right:4px} .app-mode .estimate-card strong{overflow-wrap:anywhere}

/* Full-screen map with floating controls. Panels never resize the map. */
#offsiteShell{--nav:100px;--sheet:62dvh}
#appMap{inset:0;min-height:0}
.app-top{top:env(safe-area-inset-top,0px);height:auto;left:0;right:0;padding:14px 16px;background:linear-gradient(#101010aa,transparent);border:0;gap:10px;flex-wrap:wrap;pointer-events:none}
.app-top>*{pointer-events:auto}.app-brand{font-size:20px;text-shadow:0 2px 8px #000}.app-brand span{font-size:9px}
#appSearch{flex:auto;max-width:none;margin:0;width:100%}
.app-mode .jobbar input{height:52px;background:#242724f5;border-color:#555b50;border-radius:18px;padding:14px 16px;box-shadow:0 4px 20px #0003}
.app-mode .jobbar #locate{min-height:52px;border-radius:18px}
#appMenu{position:relative}#appMenu summary{list-style:none;background:#282b28ee;color:#ffe000;border:1px solid #555;min-width:48px;height:40px;display:grid;place-items:center;border-radius:14px;cursor:pointer;font-weight:900;letter-spacing:3px}#appMenu summary::-webkit-details-marker{display:none}
.app-menu-items{position:absolute;right:0;top:48px;width:190px;background:#20221ff5;padding:8px;border:1px solid #555;border-radius:16px;box-shadow:0 8px 30px #0005;display:grid;gap:6px}.app-menu-items button{font-size:13px;text-align:left;padding:12px}
.app-nav{left:16px;right:16px;bottom:calc(30px + env(safe-area-inset-bottom));height:88px;width:auto;max-width:440px;margin:auto;grid-template-columns:repeat(3,1fr);gap:10px;padding:0;background:none;border:0}
.app-nav button{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:12px 6px;background:#292d29f5;color:#f5f5ed;border:1px solid #686b5b;border-radius:22px;font-size:12px;font-weight:850;letter-spacing:1px;box-shadow:0 6px 20px #0005;backdrop-filter:blur(12px)}.app-nav button.selected{background:#ffe000;color:#111}.app-nav svg{width:27px;height:27px}
.app-sheet,#offsiteShell.sheet-expanded .app-sheet{left:12px;right:12px;top:auto;bottom:calc(130px + env(safe-area-inset-bottom));height:min(62dvh,650px);max-height:calc(100dvh - 260px - env(safe-area-inset-bottom));width:auto;max-width:520px;margin:0 auto;border-radius:24px;box-shadow:0 12px 48px #0008}
#sheetToggle{pointer-events:auto;padding-right:62px;min-height:64px}.sheet-grip{display:block}#sheetArrow{display:none}#closeSheet{position:absolute;right:12px;top:12px;z-index:2;border:0;background:#333;border-radius:50%;width:38px;min-height:38px;font-size:24px;padding:0}
#sheetBody{overflow:auto!important;padding-bottom:20px!important}#offsiteShell:not(.sheet-expanded) #viewMap>*:not(.map-options-row){display:revert}
.app-mode .map-badge{top:132px;pointer-events:none}.app-mode .corner-edit-bar{bottom:135px}.app-mode .address-pin-label{bottom:135px}.app-mode #toast{bottom:135px}.app-mode .map-connection{position:absolute;top:150px;bottom:150px;left:20px;right:20px;max-height:calc(100% - 300px);overflow:auto}
@media(min-width:850px){.app-top{max-width:740px;left:50%;right:auto;width:100%;transform:translateX(-50%)}.app-sheet,#offsiteShell.sheet-expanded .app-sheet{max-height:calc(100dvh - 270px)}.app-mode .map-badge{top:135px}}
.app-nav svg{display:block;min-height:0;min-width:0;max-height:27px;height:27px;width:27px;flex-shrink:0;background:none;position:static;overflow:visible}

/* Keep map editing controls above the floating navigation, including iOS safe area. */
.app-mode .missed-pavement-controls,
.app-mode .corner-edit-bar{
 bottom:calc(130px + env(safe-area-inset-bottom));
 left:12px;right:12px;
 max-height:calc(100dvh - 280px - env(safe-area-inset-bottom));
 overflow:auto;overscroll-behavior:contain;
}

/* Continue from the material breakdown to the quote total. */
.app-mode #continueToQuote{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;min-height:48px;margin-top:16px}

/* Map controls fit their content instead of reserving most of the viewport. */
.app-sheet,#offsiteShell.sheet-expanded .app-sheet{height:auto;max-height:min(62dvh,650px)}
.app-sheet[data-view="Map"],#offsiteShell.sheet-expanded .app-sheet[data-view="Map"]{max-height:min(46dvh,430px)}
#sheetBody{flex:0 1 auto;padding-bottom:12px!important}
.app-sheet[data-view="Map"] #sheetToggle{min-height:52px;padding-top:16px;padding-bottom:8px;font-size:18px}
.app-sheet[data-view="Map"] #closeSheet{top:8px}
.app-mode .map-legend{padding:8px 0 0;gap:10px;font-size:10px}
.app-mode #lotStatus{margin:8px 0;font-size:12px;line-height:1.4}
.app-mode .lot-review{margin:8px 0 0;padding:8px 0 0}
.app-mode .lot-review .assist-title,.app-mode #lotDraftPill{display:none}
.app-mode .lot-review .lot-preview-total{font-size:14px;margin:0 0 6px}
.app-mode .lot-candidate{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:6px 0;min-height:52px}
.app-mode .lot-candidate>label{display:flex;align-items:center;gap:10px;margin:0;font-size:13px;line-height:1.2;min-width:0}
.app-mode .lot-candidate label>span{display:grid;gap:4px}
.app-mode .lot-candidate b{font-size:13px;font-weight:650}
.app-mode .lot-candidate small{font-size:12px;color:#c6c6bd}
.app-mode .lot-candidate input{width:20px;height:20px;min-height:20px;margin:0;flex-shrink:0;accent-color:#ffe000}
.app-mode .lot-candidate button{min-width:54px;min-height:44px;padding:6px 12px;justify-self:end}
.app-mode .island-list{padding:0;margin:0;border-top:1px solid #3a3a32}
.app-mode .island-list>summary{display:list-item;min-height:44px;padding:12px 0;color:#ddd;font-size:13px;cursor:pointer}
.app-mode #lotReview>.ai-actions{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:6px;margin:8px 0 0}
.app-mode #lotReview>.ai-actions button{padding:8px 6px;font-size:12px;min-height:44px}
.app-mode .map-corrections{padding:8px 0 0}
.app-mode .map-corrections .ai-actions{display:flex;gap:6px;margin:0}
.app-mode .map-corrections button{flex:1;padding:8px 6px;font-size:11px;min-height:44px}
.app-mode #polygonEditor{margin-top:8px;padding:8px 0}
.app-mode #polygonEditor h3{font-size:15px;margin:0 0 6px}
.app-mode #polygonEditor p{font-size:11px;margin:6px 0}
.app-mode #viewProjects>.project-controls{margin-top:12px;padding:10px 0}
.trace-progress-dock{position:absolute;z-index:25;bottom:calc(130px + env(safe-area-inset-bottom));left:12px;right:12px;max-width:520px;margin:auto;padding:12px 14px;border:1px solid #4e4930;border-radius:20px;background:#171917f5;box-shadow:0 8px 30px #0006;backdrop-filter:blur(12px)}
.app-mode .trace-progress-dock #lotStatus{margin:0;font-weight:650;font-size:13px;padding-left:22px;position:relative}
.trace-progress-dock #lotStatus:before{content:"";position:absolute;left:0;top:2px;width:12px;height:12px;border:2px solid #666;border-top-color:#ffe000;border-radius:50%;animation:trace-spin 1s linear infinite}
.trace-progress-dock #lotElapsed{font-size:11px;color:#bdbdb5;margin:5px 0 8px;padding-left:22px}
.trace-progress-dock #lotElapsed:before{display:none}
.app-mode .trace-progress-dock .lot-action-controls{display:flex;flex-wrap:nowrap;align-items:stretch;gap:8px;margin:0}
.app-mode .trace-progress-dock #mapThisLot{flex:1;min-height:44px;width:auto;font-size:14px;opacity:1;background:#373b30;color:#ffe000;border-color:#62613b}
.app-mode .trace-progress-dock #cancelLotScan{min-height:44px;padding:8px 16px;font-size:13px}
.is-calculating .map-badge{display:none}
.sheet-expanded .trace-progress-dock{display:none}
@keyframes trace-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.trace-progress-dock #lotStatus:before{animation:none}}
@media(max-width:380px){.app-mode .map-corrections .ai-actions{flex-wrap:wrap}.app-mode .map-corrections button{flex-basis:28%}}
