@font-face{font-family:Inter;src:url('/fonts/InterVariable.woff2') format('woff2');font-weight:100 900;font-display:swap}@font-face{font-family:Montserrat;src:url('/fonts/Montserrat-Bold.woff2') format('woff2');font-weight:700;font-display:swap}
:root{--graphite:#202628;--comet:#4D555A;--green:#8BC34A;--forest:#355E1B;--brume:#EEF1EF;--stone:#B8BFC1;--border:#d7dcd9;--white:#fff;--old:#d97923;--zfrr:#355E1B;--building:#355E1B;--blue:#3277ab;font-family:Inter,Arial,sans-serif;color:var(--graphite);background:var(--brume);color-scheme:light}
*{box-sizing:border-box}body{margin:0;padding:0 max(14px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,#oldMap:focus-visible{outline:2px solid var(--forest);outline-offset:-3px}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.55;cursor:default}[hidden]{display:none!important}a{color:var(--forest)}.app{max-width:1800px;margin:0 auto}.app-header{height:96px;padding-top:max(10px,env(safe-area-inset-top));display:flex;align-items:center;justify-content:space-between;gap:20px}.menu-anchor{position:relative;z-index:1001}.menu-button{display:flex;gap:10px;align-items:center;min-height:48px;padding:12px 16px;border:0;border-radius:10px;background:var(--graphite);color:white;font-weight:700;font-size:14px;box-shadow:0 4px 12px #20262815}.menu-button svg,.map-action svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8}.menu-button .chevron{width:16px;height:16px}.menu-button[aria-expanded=true]{background:var(--forest)}.menu-panel{position:absolute;top:calc(100% + 10px);left:0;width:390px;max-width:calc(100vw - 28px);max-height:calc(100dvh - 108px);overflow:auto;overscroll-behavior:contain;background:white;border:1px solid var(--border);border-radius:14px;box-shadow:0 14px 45px #20262830;padding:14px}.menu-heading{display:flex;align-items:center;justify-content:space-between;padding:3px 4px 14px;font-family:Montserrat,Inter,sans-serif}.version{color:var(--forest);background:var(--brume);border-radius:5px;padding:5px 7px;font-size:11px}.menu-panel details{border-top:1px solid var(--border);padding:12px 4px}.menu-panel summary{font-weight:700;font-size:13px;cursor:pointer;padding:3px 0}.menu-panel details[open]>summary{margin-bottom:12px}.menu-panel summary span{display:inline-block;background:var(--brume);padding:2px 7px;border-radius:6px;font-size:11px;margin-left:4px}.field{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:650;margin-bottom:12px}.field input,.field select,.field textarea{min-width:0;width:100%;border:1px solid var(--border);color:var(--graphite);border-radius:7px;background:white;min-height:43px;padding:10px;font-size:13px;font-weight:400}.field textarea{resize:vertical;min-height:100px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.search-form{display:flex;align-items:end;gap:8px}.search-form .field{flex:1;margin:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--graphite);border-radius:8px;color:white;background:var(--graphite);font-size:12px;font-weight:650;text-decoration:none;min-height:43px;padding:10px 12px;text-align:center}.btn.secondary{background:var(--brume);border-color:var(--border);color:var(--graphite)}.btn.primary{background:var(--forest);border-color:var(--forest)}.btn.danger{background:white;border-color:#c07a70;color:#934431}.hint{font-size:11px;color:var(--comet);line-height:1.65;margin:10px 0 0}.source-link{font-size:11px;display:inline-block;margin-top:10px}.sync-state{font-size:12px;line-height:1.5;margin:8px 0 12px}.search-results{display:grid;gap:5px;margin:9px 0 12px}.search-results button{border:1px solid var(--border);background:var(--brume);color:var(--graphite);text-align:left;border-radius:7px;padding:9px;font-size:12px;min-height:42px}.export-actions{display:grid;gap:8px}.prospect-list{display:grid;gap:7px;margin:10px 0;max-height:270px;overflow:auto}.prospect-list button{border:1px solid var(--border);border-radius:8px;padding:9px;background:white;text-align:left;font-size:12px;color:var(--graphite);line-height:1.55}.prospect-list button strong{display:block}.prospect-list button small{color:var(--comet)}.follow-up-summary{font-size:12px;line-height:1.65;color:var(--comet)}.brand{display:flex;align-items:center;gap:23px}.brand img{width:252px;height:56px;object-fit:contain}.brand-caption{display:flex;flex-direction:column;gap:5px;border-left:1px solid var(--stone);padding-left:23px}.brand-caption span:first-child{font:700 17px Montserrat,Inter,sans-serif}.brand-caption span:last-child{font-size:11px;letter-spacing:.035em;color:var(--comet)}.map-frame{position:relative;height:calc(100dvh - 216px);min-height:390px;max-height:1000px;border:1px solid var(--stone);border-radius:16px;overflow:hidden;background:#e6eadf;box-shadow:0 9px 30px #2026280b}#oldMap{position:absolute;inset:0;z-index:1;background:#e6eadf;font-family:Inter,Arial,sans-serif}.leaflet-container{font:12px Inter,Arial,sans-serif}.leaflet-container .leaflet-control-attribution{font-size:9px;background:#ffffffde;color:var(--comet);max-width:78vw}.leaflet-container .leaflet-control-attribution a{color:var(--comet)}.leaflet-control-scale{margin-bottom:43px!important}.map-quick-actions{position:absolute;z-index:600;right:16px;top:16px;display:flex;gap:8px}.map-action{display:flex;align-items:center;justify-content:center;gap:7px;min-height:44px;border:1px solid #ffffff90;border-radius:9px;box-shadow:0 2px 8px #2026281c;background:white;color:var(--graphite);padding:10px 12px;font-size:12px;font-weight:650}.map-zoom{position:absolute;z-index:600;right:16px;top:76px;display:grid;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:white;box-shadow:0 2px 8px #2026281c}.map-zoom button{width:44px;height:43px;border:0;background:white;color:var(--graphite);font-size:25px;line-height:1}.map-zoom button+button{border-top:1px solid var(--border)}.map-action:hover,.map-zoom button:hover{background:var(--brume)}.map-caption{position:absolute;bottom:27px;left:16px;z-index:600;border:1px solid #ffffffb8;background:#fffffff0;border-radius:9px;display:flex;align-items:center;gap:10px;padding:9px 12px;font-size:11px;color:var(--comet);box-shadow:0 3px 12px #20262812;max-width:calc(100% - 32px);pointer-events:none}.map-caption>span:first-child{color:var(--graphite);font-weight:700}.map-caption-divider{width:1px;height:11px;background:var(--stone)}.map-loading{position:absolute;z-index:620;left:50%;top:50%;transform:translate(-50%,-50%);max-width:85%;padding:16px 22px;background:white;border-radius:12px;border:1px solid var(--border);box-shadow:0 6px 22px #20262820;font-size:13px;line-height:1.6;text-align:center}.layer-controls{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:14px 0 0;padding:11px 15px;background:white;border:1px solid var(--border);border-radius:12px;box-shadow:0 3px 12px #20262805}.layer-controls legend{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.layer-controls label{display:flex;align-items:center;gap:7px;min-height:32px;font-size:12px;font-weight:550;cursor:pointer;white-space:nowrap}.layer-controls input{width:18px;height:18px;margin:0;accent-color:var(--forest);cursor:pointer}.layer-dot{width:7px;height:7px;border-radius:50%;display:inline-block}.old-dot{background:var(--old)}.zfrr-dot{background:var(--zfrr)}.building-dot{background:var(--blue)}.status-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 2px;color:var(--comet);font-size:10px;line-height:1.5}.status-version{font-weight:650;white-space:nowrap}.toast{position:fixed;z-index:1300;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);padding:13px 18px;border-radius:10px;max-width:calc(100% - 36px);background:var(--graphite);color:white;box-shadow:0 8px 25px #20262830;font-size:13px;line-height:1.5}.detail-sheet{position:fixed;inset:auto 0 0 auto;margin:0;max-height:90dvh;width:510px;max-width:100%;border:0;border-radius:18px 0 0 0;padding:0;color:var(--graphite);background:white;box-shadow:-8px -6px 50px #20262822;overflow:auto;overscroll-behavior:contain}.detail-sheet::backdrop{background:#20262845}.detail-header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 22px;border-bottom:1px solid var(--border);position:sticky;top:0;background:white;z-index:2}.eyebrow{font-size:9px;letter-spacing:.15em;color:var(--forest);font-weight:700}.detail-header h1{font:700 18px/1.4 Montserrat,Inter,sans-serif;margin:7px 0 0}.close-button{border:1px solid var(--border);border-radius:9px;width:42px;height:42px;flex-shrink:0;background:var(--brume);color:var(--graphite);font-size:24px}.detail-body{padding:20px 22px max(22px,env(safe-area-inset-bottom));font-size:13px;line-height:1.7}.detail-body p{margin:8px 0 16px}.status-chip{display:inline-block;border-radius:7px;background:var(--brume);color:var(--forest);font-size:11px;font-weight:700;padding:5px 8px;margin-bottom:12px}.point-metadata{display:grid;gap:5px;font-size:12px;color:var(--comet);margin-bottom:14px}.detail-actions{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 18px}.detail-actions .btn{flex:1}.prospect-form{border-top:1px solid var(--border);padding-top:18px}.prospect-form .field{font-size:12px}.prospect-actions{display:flex;flex-wrap:wrap;gap:8px;position:sticky;bottom:-22px;padding:13px 0 max(13px,env(safe-area-inset-bottom));background:white}.prospect-actions .btn{flex:1}.save-state{font-size:12px;color:var(--forest);display:block;margin:10px 0}.route-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}.route-stats div{padding:11px;background:var(--brume);border-radius:9px;text-align:center;font-size:11px;color:var(--comet)}.route-stats strong{display:block;font-size:19px;color:var(--graphite)}.route-stop{background:var(--graphite);color:white;border:2px solid white;box-shadow:0 1px 5px #20262833;border-radius:50%;display:flex;align-items:center;justify-content:center;font:700 11px Inter,sans-serif}.user-location{border:3px solid white;border-radius:50%;background:#7566a5;box-shadow:0 0 0 4px #7566a533}
@media(max-width:900px){.brand-caption{display:none}.map-frame{height:calc(100dvh - 228px)}.layer-controls{justify-content:start;gap:5px 20px}.layer-controls label{flex:1 0 27%;font-size:11px}.brand img{width:231px}}
@media(max-width:580px){body{padding-inline:max(8px,env(safe-area-inset-left)) max(8px,env(safe-area-inset-right))}.app-header{height:83px;gap:10px}.menu-button{padding:12px;gap:8px;font-size:12px;min-height:45px}.menu-button .chevron{display:none}.brand img{width:195px;height:49px}.menu-panel{left:0;max-width:calc(100vw - 16px);max-height:calc(100dvh - 99px)}.map-frame{border-radius:12px;height:calc(100dvh - 238px);min-height:320px}.map-quick-actions{top:12px;right:12px;gap:6px}.map-action{min-height:42px;padding:8px 10px;font-size:10px;gap:5px}.map-action svg{width:18px;height:18px}.map-zoom{right:12px;top:69px}.map-zoom button{height:42px;width:42px}.map-caption{left:10px;bottom:24px;padding:8px 9px;gap:7px;font-size:9px;max-width:calc(100% - 20px)}.layer-controls{margin-top:10px;padding:8px 10px;gap:6px 12px;border-radius:10px}.layer-controls label{flex:1 0 43%;min-height:30px;font-size:10px;gap:5px}.layer-controls input{width:17px;height:17px}.layer-dot{width:6px;height:6px}.status-bar{font-size:9px;padding:7px 2px;align-items:start}.status-version{display:none}.detail-sheet{width:100%;border-radius:18px 18px 0 0;max-height:92dvh}.detail-header{padding:16px}.detail-body{padding:17px 16px max(20px,env(safe-area-inset-bottom))}.detail-header h1{font-size:16px}.prospect-actions{bottom:-20px}.field-row{gap:8px}}
@media(max-width:350px){.brand img{width:170px}.map-action span{font-size:9px}.layer-controls label{font-size:9px}}
@media print{body{padding:0;background:white}.app-header{height:85px}.menu-anchor,.map-quick-actions,.map-zoom,.status-bar,.toast,.detail-sheet{display:none!important}.map-frame{height:72vh;max-height:none;box-shadow:none;break-inside:avoid}.layer-controls{box-shadow:none;font-size:9px;break-inside:avoid}.brand-caption{display:flex}.leaflet-control-attribution{font-size:8px!important}.app{max-width:100%}.brand img{width:220px}.map-caption{font-size:9px}}

/* Comfortable touch targets and readable field text on phones. */
.menu-button,.btn,.map-action{font-size:14px}.menu-panel summary{font-size:14px}.field{font-size:14px}.field input,.field select,.field textarea{font-size:16px}.hint,.source-link{font-size:12px}.search-results button,.prospect-list button,.follow-up-summary,.sync-state{font-size:14px}.layer-controls label{font-size:14px;min-height:40px}.status-bar{font-size:12px}.brand-caption span:last-child{font-size:12px}.point-metadata,.prospect-form .field,.save-state{font-size:14px}.detail-body{font-size:14px}.map-caption{font-size:12px}.route-stats div{font-size:12px}
@media(max-width:900px){.map-frame{height:calc(100dvh - 249px)}.layer-controls label{font-size:14px;flex:1 0 28%}}
@media(max-width:580px){.map-frame{height:calc(100dvh - 281px);min-height:290px}.menu-button{font-size:14px}.layer-controls label{font-size:14px;flex:1 0 43%;min-height:36px}.layer-controls{gap:5px 10px;padding:8px 10px}.status-bar{font-size:11px}.map-action{font-size:12px}.map-action span{font-size:12px}.map-caption{font-size:10px}.field-row{grid-template-columns:1fr}.menu-panel .field-row{grid-template-columns:1fr 1fr}.map-quick-actions{gap:5px}.map-action{padding:8px}}
@media(max-width:350px){.layer-controls label{font-size:12px}.map-action span{font-size:11px}}

/* HPD GeoProspect: a lighter application shell, with the map taking the space left
   by the header and the six layer controls at every viewport height. */
:root { --zfrr: #77807B; --border: #dce2dd; }
body { background: #f3f5f2; }
.app { height: calc(100dvh - max(8px, env(safe-area-inset-bottom))); min-height: 580px; display: flex; flex-direction: column; }
.app-header { height: 110px; flex: 0 0 110px; gap: 24px; padding-top: max(8px, env(safe-area-inset-top)); padding-bottom: 8px; }
.app > main { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.brand { min-width: 0; flex: 1; justify-content: flex-end; gap: 26px; }
.brand img { width: 360px; height: 94px; max-width: 100%; }
.brand-caption { min-width: 122px; gap: 5px; padding-left: 24px; border-color: #cdd7ca; }
.brand-caption span:first-child { font: 700 25px/1.1 Montserrat, Inter, sans-serif; letter-spacing: -.045em; }
.brand-caption span:last-child { font-size: 12px; color: var(--comet); letter-spacing: .01em; }
.brand-caption .brand-name-dot { color: var(--green); font: inherit; letter-spacing: inherit; }
.menu-button { color: var(--forest); background: #fff; border: 1px solid #d1ddcb; border-radius: 14px; min-height: 48px; padding: 12px 15px; gap: 9px; box-shadow: 0 2px 8px #20262806; transition: background .16s, border-color .16s, box-shadow .16s; }
.menu-button:hover, .menu-button[aria-expanded=true] { background: #e8f0e2; color: var(--forest); border-color: #b5cbaa; box-shadow: 0 3px 10px #355e1b0c; }
.menu-button svg { stroke-width: 1.7; }
.menu-panel { top: calc(100% + 12px); border-color: #d1dbcd; border-radius: 18px; box-shadow: 0 12px 45px #20262820; padding: 16px; max-height: calc(100dvh - 108px); }
.menu-heading { padding: 4px 4px 16px; }
.menu-heading strong { font-size: 22px; letter-spacing: -.04em; }
.version { background: #edf3e8; color: var(--forest); border-radius: 7px; }
.menu-panel details { padding-block: 15px; }
.menu-panel summary { color: #333f32; padding: 3px 0; }
.field input, .field select, .field textarea { border-radius: 10px; border-color: #d7dfd3; background: #fcfdfb; }
.btn { border-radius: 10px; border-color: var(--forest); background: var(--forest); min-height: 44px; }
.btn.secondary { background: #f2f5ef; border-color: #d7dfd3; color: #36472d; }
.btn.danger { background: white; border-color: #c07a70; color: #934431; }
.map-frame { flex: 1; height: auto; min-height: 240px; max-height: none; border: 1px solid #cdd6c8; border-radius: 20px; box-shadow: 0 8px 24px #20262808; }
.map-quick-actions { top: 14px; right: 14px; gap: 8px; }
.map-action { color: #33422d; background: #fffffff5; border-color: #d8e0d3; border-radius: 12px; min-height: 44px; padding: 10px 12px; font-size: 13px; box-shadow: 0 2px 8px #20262812; }
.map-action svg { stroke-width: 1.7; }
.map-zoom { top: 72px; right: 14px; border-radius: 12px; border-color: #d8e0d3; box-shadow: 0 2px 8px #20262812; }
.map-zoom button { width: 46px; height: 44px; color: #33422d; }
.map-caption { left: 14px; bottom: 28px; border-color: #dbe2d6; background: #fffffff5; border-radius: 11px; padding: 9px 11px; box-shadow: 0 2px 8px #2026280a; }
.map-loading { border-radius: 16px; color: #36472d; }
.layer-controls { flex: 0 0 auto; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 6px; margin-top: 10px; padding: 7px; background: #fff; border-color: #dce3d7; border-radius: 16px; box-shadow: 0 2px 10px #20262804; }
.layer-controls label { display: flex; align-items: center; justify-content: flex-start; min-height: 44px; gap: 7px; padding: 7px 9px; font-size: 14px; font-weight: 550; line-height: 1.25; white-space: normal; border: 1px solid transparent; border-radius: 10px; color: #4d5850; transition: background .14s, border-color .14s; }
.layer-controls label:has(input:checked) { background: #edf3e8; border-color: #d6e3ca; color: #2f4b20; }
.layer-controls label:has(#oldZfrrToggle:checked) { background: #edf0ee; border-color: #d4dad6; color: #45524a; }
.layer-controls label:hover { background: #f4f6f2; }
.layer-controls input { width: 18px; height: 18px; flex: 0 0 18px; accent-color: var(--forest); }
.layer-dot { flex: 0 0 6px; width: 6px; height: 6px; }
.zfrr-dot { background: #77807b; }
.status-bar { flex: 0 0 auto; gap: 12px; padding: 8px 4px 6px; font-size: 11px; line-height: 1.45; min-height: 30px; }
.status-version { color: #5b6b54; font-weight: 650; }
.detail-sheet { border-radius: 22px 0 0 0; }
.detail-header { padding: 22px; }
.close-button { border-radius: 12px; color: var(--forest); }
.toast { border-radius: 14px; }

/* The launch introduction stays decorative and never delays map initialization.
   A CSS fail-safe also clears it if a later script unexpectedly fails. */
.app-intro { position: fixed; inset: 0; z-index: 5000; overflow: hidden; display: flex; flex-direction: column; align-items: center; justify-content: center; background: #eef1ef; opacity: 1; transition: opacity 180ms ease; animation: intro-failsafe 1ms 5000ms forwards; }
.app-intro::before { content: ""; position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 34%, #fff 0, #ffffff90 35%, #eef1ef00 75%); pointer-events: none; }
.app-intro.is-leaving { opacity: 0; pointer-events: none; }
.intro-landscape { position: absolute; inset: 0; width: 100%; height: 100%; fill: none; stroke: #355e1b; stroke-width: 1.5; opacity: .055; pointer-events: none; }
.intro-content { position: relative; width: min(660px, calc(100% - 48px)); text-align: center; padding-bottom: 32px; animation: intro-arrival 950ms cubic-bezier(.2,.7,.25,1) both; }
.intro-mark-frame { position: relative; isolation: isolate; width: 160px; height: 160px; margin: 0 auto; border-radius: 35px; overflow: hidden; box-shadow: 0 18px 48px #355e1b14, 0 2px 5px #355e1b0a; }
.intro-mark-frame::after { content: ""; position: absolute; inset: -35% -80%; pointer-events: none; background: linear-gradient(115deg, transparent 37%, #ffffff00 42%, #ffffff70 49%, #ffffff18 55%, transparent 62%); opacity: 0; transform: translateX(-58%); animation: intro-reflection 1200ms 450ms cubic-bezier(.2,.65,.35,1) 2 both; }
.intro-logo { display: block; width: 100%; height: auto; }
.intro-divider { width: 36px; height: 3px; border-radius: 3px; margin: 26px auto 22px; background: var(--green); }
.intro-eyebrow { margin: 0 0 8px; color: #697367; font-size: 10px; font-weight: 650; letter-spacing: .15em; }
.intro-name { margin: 0; color: var(--graphite); font: 700 clamp(44px, 8vw, 66px)/1.1 Montserrat, Inter, sans-serif; letter-spacing: -.06em; }
.intro-name-dot { color: var(--green); }
.intro-signature { margin: 18px 0 0; color: #4d555a; font-size: 13px; font-weight: 500; }
.intro-signature span { color: #a0b592; margin: 0 5px; }
.intro-progress { width: 66px; height: 3px; background: #d7e0d1; border-radius: 3px; margin: 32px auto 0; overflow: hidden; }
.intro-progress span { display: block; width: 45%; height: 100%; border-radius: inherit; background: #6d9b39; animation: intro-progress .8s ease-in-out infinite alternate; }
.intro-footer { position: absolute; bottom: max(32px, env(safe-area-inset-bottom)); left: 24px; right: 24px; text-align: center; font-size: 10px; letter-spacing: .035em; color: #7b8676; margin: 0; }
@keyframes intro-progress { from { transform: translateX(-20%); } to { transform: translateX(145%); } }
@keyframes intro-arrival { from { opacity: 0; transform: translateY(8px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes intro-reflection { 0% { opacity: 0; transform: translateX(-58%); } 20% { opacity: .8; } 70% { opacity: .6; } 100% { opacity: 0; transform: translateX(58%); } }
@keyframes intro-failsafe { to { opacity: 0; visibility: hidden; pointer-events: none; } }

@media (max-width: 1200px) {
  .layer-controls { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .layer-controls label { flex: none; }
}
@media (max-width: 900px) {
  .brand-caption { display: flex; }
  .brand img { width: 330px; height: 87px; }
  .app-header { height: 102px; flex-basis: 102px; }
  .map-frame { height: auto; }
}
@media (max-width: 680px) {
  body { padding-inline: max(8px, env(safe-area-inset-left)) max(8px, env(safe-area-inset-right)); }
  .app-header { height: 88px; flex-basis: 88px; gap: 12px; padding-top: max(4px, env(safe-area-inset-top)); padding-bottom: 4px; }
  .brand { gap: 0; }
  .brand img { width: min(330px, 100%); height: 80px; }
  .brand-caption { display: none; }
  .menu-button { width: 46px; min-height: 46px; padding: 12px; border-radius: 13px; }
  .menu-button span, .menu-button .chevron { display: none; }
  .menu-panel { max-width: calc(100vw - 16px); max-height: calc(100dvh - 94px); padding: 14px; }
  .map-frame { height: auto; min-height: 240px; border-radius: 16px; }
  .map-quick-actions { top: 10px; right: 10px; gap: 6px; }
  .map-action { min-height: 42px; padding: 8px 10px; gap: 6px; font-size: 12px; border-radius: 11px; }
  .map-action svg { width: 18px; height: 18px; }
  .map-action span { font-size: 12px; }
  .map-zoom { top: 64px; right: 10px; }
  .map-zoom button { width: 42px; height: 42px; }
  .map-caption { left: 10px; max-width: calc(100% - 20px); gap: 7px; padding: 8px 9px; font-size: 10px; line-height: 1.25; }
  .map-caption-divider { flex: 0 0 1px; }
  .layer-controls { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; margin-top: 8px; padding: 6px; border-radius: 14px; }
  .layer-controls label { flex: none; min-height: 43px; padding: 7px 8px; font-size: 14px; gap: 7px; }
  .layer-controls .layer-dot { display: none; }
  .status-bar { align-items: flex-start; font-size: 10px; padding: 7px 2px 5px; line-height: 1.4; }
  .status-version { padding-top: 1px; }
  .intro-content { width: calc(100% - 36px); padding-bottom: 24px; }
  .intro-divider { margin-top: 25px; }
  .intro-eyebrow { font-size: 9px; letter-spacing: .11em; }
  .intro-signature { font-size: 12px; }
  .intro-signature span { margin: 0 3px; }
  .intro-footer { bottom: max(24px, env(safe-area-inset-bottom)); font-size: 9px; }
}
@media (max-width: 350px) {
  .app-header { gap: 8px; }
  .layer-controls label { padding-inline: 5px; font-size: 13px; gap: 5px; }
  .map-action { padding-inline: 8px; }
  .map-action span { font-size: 11px; }
  .status-version { display: none; }
}
@media (max-height: 650px) and (min-width: 681px) {
  .app-header { height: 82px; flex-basis: 82px; }
  .brand img { width: 275px; height: 72px; }
  .layer-controls { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (prefers-reduced-motion: reduce) {
  .app-intro, .intro-progress span, .menu-button, .layer-controls label { transition: none; }
  .intro-progress span { animation: none; width: 100%; }
  .intro-content, .intro-mark-frame::after { animation: none; }
  .intro-mark-frame::after { display: none; }
  .app-intro { animation: intro-failsafe 1ms 5000ms forwards; }
}
@media print {
  .app-intro { display: none !important; }
  .app { height: auto; min-height: 0; display: block; }
  .app > main { display: block; }
  .app-header { height: 85px; }
  .brand img { width: 280px; height: 74px; }
  .brand-caption { display: flex; }
  .map-frame { height: 72vh; max-height: none; }
  .layer-controls { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .layer-controls label { font-size: 10px; min-height: 30px; }
}

/* V14.1: application identity, independent of the official company logo. */
.brand { justify-content: center; }
.brand img { width: 425px; height: 90px; }
.intro-logo.intro-app-mark { width: 160px; height: 160px; margin: 0 auto; border-radius: 35px; }
.intro-name { font-size: clamp(36px, 7vw, 52px); letter-spacing: -.05em; }
.intro-eyebrow { font-family: Montserrat, Inter, sans-serif; font-size: 12px; letter-spacing: .2em; color: var(--forest); }
.intro-divider { margin: 26px auto 18px; height: 2px; width: 28px; }
@media (max-width: 900px) { .brand img { width: 385px; height: 82px; } }
@media (max-width: 680px) {
  .brand { justify-content: flex-end; }
  .brand img { width: min(340px, 100%); height: 74px; }
  .intro-logo.intro-app-mark { width: 144px; height: 144px; border-radius: 31px; }
  .intro-mark-frame { width: 144px; height: 144px; border-radius: 31px; }
  .intro-name { font-size: clamp(34px, 9vw, 42px); }
  .intro-eyebrow { font-size: 11px; }
}
@media (max-height: 650px) and (min-width: 681px) { .brand img { width: 310px; height: 66px; } }
@media print { .brand img { width: 310px; height: 66px; } }

/* V14.3: map appearance settings, kept inside the menu. */
:root { --old: #6F835C; }
.field-hint { font-size: 12px; font-weight: 400; line-height: 1.5; color: var(--comet); }
.map-settings { padding-top: 2px; }
.settings-title { margin: 0 0 16px; font-size: 13px; font-weight: 650; line-height: 1.4; color: var(--comet); }
.settings-color-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; font-size: 14px; font-weight: 650; }
.map-settings input[type="color"] { width: 62px; height: 44px; flex: 0 0 62px; border: 1px solid #d7dfd3; border-radius: 10px; padding: 5px; background: #fcfdfb; cursor: pointer; }
.map-settings input[type="color"]::-webkit-color-swatch-wrapper { padding: 0; }
.map-settings input[type="color"]::-webkit-color-swatch { border: 0; border-radius: 5px; }
.map-settings input[type="color"]::-moz-color-swatch { border: 0; border-radius: 5px; }
.settings-range { gap: 3px; margin-bottom: 0; }
.settings-range-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.settings-range-heading output { flex: 0 0 54px; padding: 5px 7px; border: 1px solid #d6e3ca; border-radius: 8px; background: #edf3e8; color: var(--forest); text-align: center; font-size: 13px; font-weight: 650; font-variant-numeric: tabular-nums; }
.map-settings input[type="range"] { width: 100%; min-height: 44px; height: 44px; padding: 0; border: 0; background: transparent; accent-color: var(--forest); cursor: pointer; }
.settings-help { margin: 0; font-size: 12px; }
.settings-preview-row { display: flex; align-items: center; gap: 10px; margin: 16px 0; color: var(--comet); font-size: 12px; }
.settings-preview-frame { display: inline-block; width: 44px; height: 28px; border: 1px solid #d6ded1; border-radius: 7px; background: #eef1ef; overflow: hidden; }
#oldZoneStylePreview { display: block; width: 100%; height: 100%; }
.settings-reset { width: 100%; }
.settings-memory { margin-top: 10px; }

/* V14.4: five compact menu sections, grouped tours and field actions. */
.menu-panel > details { padding: 4px; }
.menu-panel > details > summary { min-height: 44px; padding: 12px 0; line-height: 20px; }
.menu-section-title { margin: 2px 0 14px; font-size: 13px; font-weight: 650; line-height: 1.45; color: var(--comet); }
.settings-divider { height: 1px; background: var(--border); margin: 20px 0; }
.route-groups { display: grid; gap: 8px; margin: 2px 0 12px; }
.menu-panel .route-group { margin: 0; padding: 0; border: 1px solid #d7dfd3; border-radius: 12px; background: #fff; overflow: hidden; }
.menu-panel .route-group > summary { min-height: 44px; margin: 0; padding: 12px; font-size: 14px; line-height: 20px; background: #f2f5ef; }
.menu-panel .route-group[open] > summary { margin: 0; border-bottom: 1px solid #dce3d7; }
.route-card { margin: 10px; padding: 12px; border: 1px solid #dce3d7; border-radius: 10px; color: var(--graphite); background: #fff; font-size: 14px; line-height: 1.5; }
.route-card.is-active, .route-card[data-active="true"], .route-card[aria-current="true"] { border-color: #aac397; background: #f1f6ec; }
.route-card strong { font-weight: 650; }
.route-meta { display: flex; flex-wrap: wrap; gap: 4px 10px; margin: 7px 0 10px; font-size: 12px; line-height: 1.6; color: var(--comet); }
.route-card-actions { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
.route-card-actions .btn, .route-card-actions button { flex: 1 0 42%; min-height: 44px; font-size: 13px; }
.route-selected-detail, .route-create-button { width: 100%; }
.route-create-form { border-top: 1px solid var(--border); margin-top: 18px; padding-top: 18px; }
.route-create-status { margin: 10px 0 0; font-size: 13px; line-height: 1.55; color: var(--forest); }
.route-create-status:empty { display: none; }
.route-history-title { margin-top: 22px; }
.route-history { display: grid; gap: 8px; }
.route-history-item { border: 1px solid #dce3d7; border-radius: 10px; padding: 11px 12px; background: #f8faf6; font-size: 13px; line-height: 1.6; }
.route-history-item strong { display: block; color: #34472a; }
.route-history-item time { font-variant-numeric: tabular-nums; }
.route-history-item p { margin: 4px 0; }
.route-history-item .route-meta { margin-bottom: 0; }
.route-dialog { width: 560px; max-width: calc(100vw - 28px); max-height: calc(100dvh - 32px); margin: auto; padding: 0; border: 1px solid #d3ddce; border-radius: 20px; color: var(--graphite); background: #fff; box-shadow: 0 16px 60px #20262825; overflow: hidden; overscroll-behavior: contain; }
.route-dialog[open] { display: flex; flex-direction: column; }
.route-dialog::backdrop { background: #20262850; }
.route-dialog h2 { margin: 0 0 14px; font: 700 20px/1.4 Montserrat, Inter, sans-serif; }
.route-dialog-header { position: sticky; top: 0; z-index: 1; flex: 0 0 auto; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 18px 22px; border-bottom: 1px solid var(--border); background: #fff; }
.route-dialog-header h2 { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.route-dialog-close { flex: 0 0 auto; min-width: 72px; }
.route-dialog-body { flex: 1 1 auto; min-height: 0; min-width: 0; padding: 18px 22px 22px; overflow: auto; overscroll-behavior: contain; overflow-wrap: anywhere; font-size: 14px; line-height: 1.65; }
.route-dialog-body p { margin: 8px 0 14px; }
.route-dialog-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0 0; padding-top: 14px; border-top: 1px solid var(--border); }
.route-dialog-actions .btn { flex: 1 1 150px; min-width: 0; white-space: normal; overflow-wrap: anywhere; }
.route-summary { margin: 12px 0; border-radius: 12px; padding: 13px; background: #f1f5ed; font-size: 14px; line-height: 1.6; }
.route-validation { display: grid; gap: 9px; margin: 16px 0; }
.route-validation label, label.route-validation, .route-check-list label { display: flex; align-items: flex-start; gap: 10px; min-height: 44px; padding: 11px; border: 1px solid #dbe3d6; border-radius: 10px; background: #f8faf6; font-size: 14px; line-height: 1.5; cursor: pointer; }
.route-validation input[type="checkbox"], .route-check-list input[type="checkbox"] { width: 20px; height: 20px; flex: 0 0 20px; margin: 1px 0 0; accent-color: var(--forest); }
.route-check-list { display: grid; gap: 7px; margin: 14px 0; }
.route-dialog .btn { min-height: 44px; }
.route-dialog form > .btn { margin-top: 8px; }
.route-flyer-stat { min-width: 0; margin: 12px 0; padding: 14px; border: 1px solid #d5e3cb; border-radius: 12px; background: #f1f6ec; color: #355027; overflow-wrap: anywhere; }
.route-flyer-number { display: block; font-size: 25px; font-weight: 700; line-height: 1.2; font-variant-numeric: tabular-nums; }
.route-flyer-label { display: block; margin-top: 4px; font-size: 14px; font-weight: 600; line-height: 1.45; }
.route-flyer-stat p { margin: 7px 0 0; font-size: 12px; line-height: 1.5; }
.route-flyer-coverage { color: var(--comet); }
.route-flyer-progress { color: var(--forest); font-weight: 600; }
.action-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 18px 0; }
.action-cards button { min-height: 74px; white-space: normal; padding: 14px; text-align: left; border: 1px solid #d2dfc9; border-radius: 13px; background: #f2f6ed; color: #355e1b; font-size: 14px; line-height: 1.5; }
.action-cards button strong, .action-cards button small { display: block; }
.action-cards button small { margin-top: 4px; font-size: 12px; font-weight: 400; }
.building-choice { min-height: 56px; border: 1px solid #d7dfd3; border-radius: 11px; background: #fff; color: var(--graphite); padding: 11px 13px; text-align: left; font-size: 14px; line-height: 1.5; }
.business-badge { display: inline-flex; align-items: center; gap: 6px; border: 1px solid #ead8ab; border-radius: 7px; padding: 4px 8px; background: #fff4db; color: #81561c; font-size: 12px; font-weight: 650; line-height: 1.45; }
.flyer-date { display: block; margin: 9px 0 14px; padding: 9px 11px; border: 1px solid #d4e3c9; border-radius: 9px; background: #eff5e9; color: #36552a; font-size: 13px; line-height: 1.5; font-variant-numeric: tabular-nums; }
.circle-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0; }
.circle-actions .btn, .prospect-actions .btn { min-height: 44px; }
.circle-actions .btn { flex: 1 0 42%; }
.map-circle-tools { position: absolute; z-index: 615; left: 14px; bottom: 75px; max-width: calc(100% - 28px); display: flex; align-items: center; gap: 10px; padding: 4px 5px 4px 12px; border: 1px solid #cbdac1; border-radius: 12px; background: #fffffff5; color: #355e1b; box-shadow: 0 3px 12px #2026280c; }
#oldCircleStatus { font-size: 12px; font-weight: 550; line-height: 1.4; }
.circle-clear-button { flex: 0 0 auto; min-width: 54px; min-height: 44px; padding: 8px 10px; border: 1px solid #d5e1cc; border-radius: 9px; color: #355e1b; background: #edf3e8; font-size: 12px; font-weight: 650; }
@media (max-width: 680px) {
  .route-dialog { max-width: calc(100vw - 20px); max-height: calc(100dvh - 24px); border-radius: 17px; }
  .route-dialog h2 { font-size: 18px; }
  .route-dialog-header { padding: 14px 16px; gap: 10px; }
  .route-dialog-body { padding: 14px 16px 18px; }
  .map-circle-tools { left: 10px; bottom: 78px; max-width: calc(100% - 20px); gap: 7px; padding-left: 9px; }
  #oldCircleStatus { font-size: 11px; }
}
@media (max-width: 420px) { .action-cards { grid-template-columns: 1fr; } }
@media print { .map-circle-tools, .route-dialog { display: none !important; } }

/* The adjustable circle and explicit GPS tracking appear only after selection. */
.map-circle-tools { display: grid; width: min(390px, calc(100% - 28px)); gap: 5px; padding: 7px 9px; }
.circle-panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.circle-panel-heading .circle-clear-button { min-width: 56px; padding-inline: 8px; }
.circle-control-row { display: flex; align-items: stretch; gap: 6px; }
.circle-radius-control { display: flex; align-items: center; gap: 5px; flex: 0 1 120px; font-size: 12px; font-weight: 650; }
.circle-radius-label { white-space: nowrap; }
.circle-radius-value { display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; white-space: nowrap; }
.circle-radius-control input { min-width: 0; width: 59px; min-height: 44px; padding: 8px 5px; border: 1px solid #d5e1cc; border-radius: 9px; background: #fff; color: var(--graphite); font-size: 16px; font-weight: 400; }
.circle-gps-button { min-height: 44px; padding: 8px; border: 1px solid #d5e1cc; border-radius: 9px; background: #edf3e8; color: #355e1b; font-size: 12px; font-weight: 650; line-height: 1.25; }
.circle-gps-button { flex: 1 1 105px; }
.circle-gps-button[aria-pressed="true"] { background: #355e1b; border-color: #355e1b; color: #fff; }
.circle-gps-status { margin: 2px 1px 1px; color: var(--comet); font-size: 11px; line-height: 1.45; font-variant-numeric: tabular-nums; }
.circle-gps-status:empty { display: none; }
@media (max-width: 680px) { .map-circle-tools { width: min(390px, calc(100% - 20px)); } }
@media (max-width: 350px) { .circle-control-row { flex-wrap: wrap; } .circle-gps-button { flex-basis: 108px; } }

/* V14.5: clear map surface and a compact command bar below it. */
.brand { justify-content: flex-start; }
.menu-panel { left: auto; right: 0; }
.map-zoom { top: 14px; }
.map-zoom button { width: 44px; height: 44px; }
.map-zoom svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.7; vertical-align: middle; }
.map-zoom button[aria-pressed="true"] { background: #edf3e8; color: var(--forest); }
.map-controls { flex: 0 0 auto; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: 8px 12px; padding: 8px; margin-top: 8px; border: 1px solid #dce3d7; border-radius: 14px; background: #fff; }
.map-control-row { display: flex; align-items: center; gap: 8px; }
.map-controls .map-quick-actions { position: static; display: flex; flex-wrap: wrap; gap: 8px; }
.map-controls .map-action { min-height: 44px; padding: 8px 10px; border-color: #d8e0d3; box-shadow: none; }
.map-controls .map-circle-tools { position: static; z-index: auto; display: grid; width: auto; max-width: none; gap: 3px; padding: 0; border: 0; border-radius: 0; box-shadow: none; background: transparent; }
.map-controls .circle-control-row { flex-wrap: wrap; gap: 8px; }
.map-controls .circle-radius-control { flex: 0 0 auto; gap: 4px; font-size: 12px; min-height: 44px; }
.map-controls .circle-radius-control input { width: 54px; min-height: 44px; font-size: 16px; }
.map-controls .circle-gps-button { flex: 1 1 112px; }
.map-controls .circle-clear-button { flex: 0 0 56px; min-width: 56px; }
.map-controls .circle-panel-heading { justify-content: flex-start; }
.map-controls #oldCircleStatus { font-size: 11px; line-height: 1.4; }
.map-controls .circle-gps-status { margin: 0; font-size: 11px; }
.map-controls .map-caption { position: static; grid-column: 1 / -1; z-index: auto; display: flex; flex-wrap: wrap; gap: 5px 8px; min-width: 0; max-width: none; padding: 0 1px; border: 0; background: transparent; box-shadow: none; border-radius: 0; font-size: 11px; line-height: 1.4; }
.fullscreen-exit { flex: 0 0 auto; }
.detail-header h1 { margin: 0; }

/* V14.6: only radius, GPS tracking and return in the fullscreen command row. */
.app.map-fullscreen { position: fixed; inset: 0; z-index: 1200; width: 100%; max-width: none; height: 100dvh; min-height: 0; margin: 0; padding: max(6px, env(safe-area-inset-top)) max(6px, env(safe-area-inset-right)) max(6px, env(safe-area-inset-bottom)) max(6px, env(safe-area-inset-left)); background: #f3f5f2; }
.app.map-fullscreen .app-header, .app.map-fullscreen .layer-controls, .app.map-fullscreen .status-bar { display: none !important; }
.app.map-fullscreen > main { min-height: 0; }
.app.map-fullscreen .map-frame { min-height: 0; border-radius: 14px; }
.app.map-fullscreen .map-controls { display: flex; flex-direction: column; align-items: stretch; gap: 10px; padding: 10px; margin-top: 8px; border-radius: 12px; max-height: 48dvh; min-height: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; }
.app.map-fullscreen .map-controls > * { flex: 0 0 auto; min-width: 0; }
.app.map-fullscreen .map-control-row, .app.map-fullscreen .map-caption, .app.map-fullscreen .circle-panel-heading, .app.map-fullscreen .circle-gps-status { display: none; }
.app.map-fullscreen .map-circle-tools { display: grid; gap: 10px; width: 100%; }
.app.map-fullscreen .circle-control-row { display: flex; flex-wrap: wrap; align-items: stretch; gap: 10px; }
.app.map-fullscreen .circle-radius-control { display: grid; justify-items: start; align-content: center; gap: 2px; flex: 0 0 auto; min-width: 0; }
.app.map-fullscreen .circle-radius-control input { width: 3.5em; padding-inline: 4px; }
.app.map-fullscreen .circle-gps-button { flex: 1 1 110px; min-width: min(100%, 100px); min-height: 44px; height: auto; align-self: stretch; }
.app.map-fullscreen .fullscreen-exit { flex: 0 0 auto; min-width: 64px; min-height: 44px; height: auto; align-self: stretch; padding-inline: 8px; white-space: nowrap; overflow-wrap: normal; word-break: normal; }
.app.map-fullscreen .fullscreen-exit span { font-size: 12px; white-space: nowrap; overflow-wrap: normal; word-break: normal; }
.app.map-fullscreen .fullscreen-exit svg { display: none; }
.app.map-fullscreen .circle-clear-button { min-height: 44px; background: transparent; border-color: #dce3d7; }
.app.map-fullscreen .map-zoom { top: 12px; right: 12px; }
.radius-validation-status { min-width: 0; margin: 0; color: #934431; font-size: 12px; line-height: 1.4; overflow-wrap: anywhere; }
.map-workspace-grid { display: grid; grid-template-columns: minmax(min-content, 1fr) minmax(0, 1.25fr); gap: 10px; align-items: start; min-width: 0; }
.position-guidance-stack { display: grid; gap: 10px; min-width: 0; }
@media (max-width: 900px) { .map-controls { grid-template-columns: 1fr; gap: 8px; } }
@media (max-width: 680px) {
  .brand { justify-content: flex-start; }
  .menu-panel { left: auto; right: 0; }
  .map-zoom { top: 10px; right: 10px; }
  .map-zoom button { width: 44px; height: 44px; }
  .map-controls { padding: 8px; margin-top: 8px; border-radius: 12px; }
  .map-controls .map-action { font-size: 12px; min-height: 44px; }
  .map-controls .map-caption { font-size: 10px; }
  .map-controls .circle-control-row { gap: 8px; }
  .map-controls .circle-radius-control { gap: 3px; }
  .map-controls .circle-radius-control input { width: 52px; padding-inline: 4px; }
  .map-controls .circle-gps-button { flex-basis: 106px; }
  .map-controls .circle-clear-button { flex-basis: 54px; min-width: 54px; padding-inline: 6px; }
  .app.map-fullscreen .fullscreen-exit svg { display: none; }
}
@media print {
  .map-controls, #oldFullscreenToggle { display: none !important; }
  .app.map-fullscreen { position: static; inset: auto; display: block; height: auto; padding: 0; }
  .app.map-fullscreen > main { display: block; }
  .app.map-fullscreen .app-header { display: flex !important; }
  .app.map-fullscreen .map-frame { height: 72vh; }
}

/* The map caption is below the map, so the distance scale needs no overlay gap. */
.leaflet-control-scale { margin-bottom: 8px !important; }

/* Each GPS line owns its height, including larger fonts and long status text. */
.gps-signal { display: grid; grid-template-columns: 8px minmax(0, 1fr); grid-template-rows: repeat(3, auto); gap: 1px 6px; align-content: center; width: 100%; height: auto; min-height: 52px; padding: 6px; border-radius: 8px; background: #f3f5f1; color: var(--comet); font-size: 11px; line-height: 1.4; font-variant-numeric: tabular-nums; }
.gps-signal-dot { grid-column: 1; grid-row: 1; align-self: center; width: 7px; height: 7px; border-radius: 50%; background: #89928e; }
#oldGpsSignalText { grid-column: 2; grid-row: 1; font-weight: 650; color: var(--graphite); }
#oldGpsSatelliteCount { grid-column: 2; grid-row: 2; }
#oldGpsAccuracy { grid-column: 2; grid-row: 3; }
.gps-signal[data-state="good"] .gps-signal-dot { background: #4a7c2c; }
.gps-signal[data-state="poor"] .gps-signal-dot { background: #b54a3b; }
.gps-signal span:not(.gps-signal-dot) { min-width: 0; white-space: normal; overflow-wrap: anywhere; }

/* V14.7: selection and parcel tools stay below the map until measurements are requested. */
.circle-settings-reset { margin-top: 16px; }
.building-selection-row, .parcel-result-summary { display: none; grid-column: 1 / -1; min-width: 0; align-items: center; gap: 8px; }
.building-selection-row:has(> :not([hidden])), .parcel-result-summary:has(> :not([hidden])) { display: flex; }
.building-selection-status, #oldParcelStatus { flex: 1 1 auto; min-width: 0; margin: 0; color: var(--comet); font-size: 12px; line-height: 1.4; overflow-wrap: anywhere; }
.building-selection-status { color: #075675; font-weight: 600; }
.building-selection-row .circle-clear-button { flex: 0 0 auto; }
.parcel-details-button { flex: 0 0 108px; white-space: normal; line-height: 1.3; }
.parcel-measure-button { white-space: normal; line-height: 1.3; }
.app.map-fullscreen .parcel-measure-button { width: 100%; min-height: 44px; height: auto; min-width: 0; padding: 8px; }
.app.map-fullscreen .building-selection-row, .app.map-fullscreen .parcel-result-summary { flex-wrap: wrap; }

.parcel-dialog { width: 600px; max-width: calc(100vw - 28px); max-height: calc(100dvh - 32px); margin: auto; padding: 0; border: 1px solid #d3ddce; border-radius: 20px; color: var(--graphite); background: #fff; box-shadow: 0 16px 60px #20262825; overflow: hidden; overscroll-behavior: contain; }
.parcel-dialog[open] { display: flex; flex-direction: column; }
.parcel-dialog::backdrop { background: #20262850; }
.parcel-dialog-header { flex: 0 0 auto; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 18px 22px; border-bottom: 1px solid var(--border); }
.parcel-dialog-header h2 { min-width: 0; margin: 0; font: 700 20px/1.4 Montserrat, Inter, sans-serif; overflow-wrap: anywhere; }
.parcel-dialog-header .close-button { width: 44px; height: 44px; }
.parcel-dialog-body { flex: 1 1 auto; min-width: 0; min-height: 0; padding: 18px 22px 22px; overflow: auto; overscroll-behavior: contain; font-size: 14px; line-height: 1.6; overflow-wrap: anywhere; }
.parcel-dialog-body > .hint { margin-top: 0; }
.parcel-dialog-actions { flex: 0 0 auto; display: flex; flex-wrap: wrap; gap: 8px; padding: 14px 22px max(14px, env(safe-area-inset-bottom)); border-top: 1px solid var(--border); background: #fff; }
.parcel-dialog-actions .btn { flex: 1 1 160px; min-width: 0; white-space: normal; }
.parcel-measurements { min-width: 0; margin-top: 14px; }
.parcel-measure-summary { padding: 14px; border: 1px solid #cfdee3; border-radius: 12px; background: #f0f6f8; }
.parcel-measure-summary p { margin: 0 0 8px; }
.parcel-measure-summary p:last-child { margin-bottom: 0; }
.parcel-measure-summary strong { color: #075675; font-size: 17px; line-height: 1.5; }
.parcel-measurements-scroll { max-width: 100%; margin: 16px 0; overflow-x: auto; }
.parcel-measures-table { width: 100%; border-collapse: collapse; font-size: 13px; line-height: 1.5; font-variant-numeric: tabular-nums; }
.parcel-measures-table th, .parcel-measures-table td { padding: 9px 8px; text-align: left; border-bottom: 1px solid #dce4e7; }
.parcel-measures-table th { color: #365562; background: #f0f6f8; font-weight: 650; }
.parcel-measures-table th:last-child, .parcel-measures-table td:last-child { text-align: right; white-space: nowrap; }
.parcel-measurements > .btn { width: 100%; white-space: normal; }
.parcel-terrain-panel { margin-top: 16px; padding: 14px; border: 1px solid #d5e3cb; border-radius: 12px; background: #f2f6ed; }
.parcel-terrain-panel h3 { margin: 0 0 12px; color: var(--forest); font-size: 16px; line-height: 1.4; }
.parcel-terrain-panel > .btn { width: 100%; min-height: 44px; height: auto; margin-top: 12px; white-space: normal; overflow-wrap: normal; word-break: normal; }
.parcel-terrain-panel > .hint { margin-bottom: 0; }
.terrain-measure-values { display: grid; gap: 10px; margin: 0; font-variant-numeric: tabular-nums; }
.terrain-measure-values > div { min-width: 0; }
.terrain-measure-values dt { color: var(--comet); font-size: 13px; line-height: 1.5; }
.terrain-measure-values dd { margin: 3px 0 0; color: var(--forest); font-size: 16px; font-weight: 650; line-height: 1.45; overflow-wrap: anywhere; }
.parcel-segment-label { display: flex; align-items: center; justify-content: center; width: max-content !important; min-width: 20px; height: 20px !important; padding: 0 3px; border: 1px solid #167d9a; border-radius: 5px; background: #fffffff2; color: #075675; box-shadow: 0 1px 4px #2026281a; font: 700 14px/18px Inter, sans-serif; pointer-events: none; }
@media (max-width: 680px) {
  .parcel-dialog { max-width: calc(100vw - 20px); max-height: calc(100dvh - 24px); border-radius: 17px; }
  .parcel-dialog-header { gap: 10px; padding: 14px 16px; }
  .parcel-dialog-header h2 { font-size: 18px; }
  .parcel-dialog-body { padding: 14px 16px 18px; }
  .parcel-dialog-actions { padding: 12px 16px max(12px, env(safe-area-inset-bottom)); }
  .building-selection-row, .parcel-result-summary { gap: 6px; }
  .parcel-details-button { flex-basis: 92px; padding-inline: 6px; }
}
@media print { .parcel-dialog { display: none !important; } }

/* V14.8: focus stays inside its target; adjacent controls keep a visible gap. */
.btn { min-width: 0; min-height: 44px; padding: 8px 10px; font-size: 13px; line-height: 1.4; white-space: normal; overflow-wrap: anywhere; }
.close-button { width: 44px; height: 44px; }
.map-action, .circle-gps-button, .circle-clear-button { min-width: 0; min-height: 44px; line-height: 1.35; white-space: normal; overflow-wrap: anywhere; }
.detail-actions, .prospect-actions, .route-card-actions { gap: 10px; }
.detail-actions .btn, .prospect-actions .btn { flex: 1 1 130px; }
.route-dialog-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 130px), 1fr)); gap: 10px; }
.route-dialog-actions .btn { width: 100%; }
.parcel-dialog-actions { gap: 10px; padding-top: 12px; padding-bottom: max(12px, env(safe-area-inset-bottom)); }
.parcel-dialog-actions .btn { flex: 1 1 calc(50% - 5px); }
.parcel-dialog-actions #oldParcelSaveToClient { flex: 1 1 100%; }
.building-selection-row, .parcel-result-summary { gap: 10px; }

.parcel-selection-tools { grid-column: 1 / -1; min-width: 0; display: grid; gap: 8px; }
.parcel-mode-row { display: flex; align-items: center; gap: 10px; min-width: 0; }
.parcel-mode-button { flex: 0 1 132px; min-height: 44px; }
.parcel-mode-button[aria-pressed="true"] { border-color: #9db8c3; background: #eaf3f6; color: #075675; }
.parcel-selection-row { display: none; align-items: center; gap: 10px; min-width: 0; }
.parcel-selection-row:has(> :not([hidden])) { display: flex; }
#oldParcelSelectionStatus { flex: 1 1 auto; min-width: 0; margin: 0; color: #075675; font-size: 12px; line-height: 1.4; overflow-wrap: anywhere; }
.parcel-client-button { flex: 0 0 96px; }
.app.map-fullscreen .parcel-selection-tools { display: grid; grid-column: auto; gap: 10px; }
.app.map-fullscreen .parcel-mode-row { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
.app.map-fullscreen .parcel-mode-button { width: 100%; min-height: 44px; height: auto; padding: 8px; }
.app.map-fullscreen .parcel-selection-row { flex-direction: column; align-items: stretch; gap: 8px; }
.app.map-fullscreen .parcel-client-button { flex: 0 0 auto; width: 100%; }
@media (max-width: 680px) {
  .parcel-dialog-actions { padding-inline: 16px; }
  .parcel-mode-button { padding-inline: 8px; }
  .parcel-client-button { flex-basis: 88px; padding-inline: 6px; }
}

/* Sound stays below GPS; the distance tool has its own row below the map. */
.circle-sound-controls { flex: 1 0 100%; display: flex; align-items: center; gap: 8px; min-width: 0; }
.circle-sound-button { flex: 0 0 104px; min-width: 0; min-height: 44px; padding: 6px; border: 1px solid #d5e1cc; border-radius: 9px; background: #f5f7f3; color: var(--forest); font-size: 11px; font-weight: 600; line-height: 1.35; white-space: normal; overflow-wrap: anywhere; }
.circle-sound-button[aria-pressed="true"] { background: #edf3e8; border-color: #a9c398; }
.circle-sound-status { flex: 1 1 auto; min-width: 0; color: var(--comet); font-size: 11px; line-height: 1.35; overflow-wrap: anywhere; }
.app.map-fullscreen .circle-sound-controls { display: grid; grid-template-columns: minmax(0, 1fr); gap: 6px; }
.app.map-fullscreen .circle-sound-button { width: 100%; }
.app.map-fullscreen .circle-sound-status { display: block; margin: 0; }
.distance-tools { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 10px; min-width: 0; }
.measurement-modes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; min-width: 0; }
.measurement-modes .map-action { width: 100%; min-width: 0; min-height: 44px; white-space: normal; overflow-wrap: normal; word-break: normal; }
.distance-mode-button[aria-pressed="true"], .area-mode-button[aria-pressed="true"] { border-color: #9db8c3; background: #eaf3f6; color: #075675; }
.distance-status { min-width: 0; margin: 0; padding: 8px 10px; border-radius: 9px; background: #f0f6f8; color: #075675; font-size: 12px; line-height: 1.5; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.measurement-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 130px), 1fr)); gap: 10px; min-width: 0; }
.measurement-actions .map-action { width: 100%; min-width: 0; min-height: 44px; white-space: normal; overflow-wrap: normal; word-break: normal; }
.map-controls .measurement-finish-button { background: var(--forest); color: #fff; border-color: var(--forest); }
.measurement-actions .map-action:disabled { opacity: .5; }
.settings-checkbox { display: flex; align-items: flex-start; gap: 10px; min-width: 0; padding-block: 8px; color: var(--graphite); font-size: 14px; line-height: 1.5; }
.settings-checkbox input { flex: 0 0 20px; width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--forest); }
.settings-checkbox span { min-width: 0; }
.camera-measure-button { width: 100%; }
.camera-measure-status { grid-column: 1 / -1; min-width: 0; margin: 0; color: var(--comet); font-size: 12px; line-height: 1.4; overflow-wrap: anywhere; }
.photo-zoom-status { grid-column: 1 / -1; min-width: 0; margin: 0; color: var(--comet); font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }


/* V15.2: workspace groups stay in normal flow; no cross-group row positions. */
.parcel-action-label { white-space: normal; overflow-wrap: normal; word-break: normal; hyphens: none; font-size: inherit; }
.app.map-fullscreen .parcel-mode-button, .app.map-fullscreen .parcel-measure-button { overflow-wrap: normal; word-break: normal; hyphens: none; }
.route-map-actions { display: none; grid-column: 1 / -1; min-width: 0; }
.route-map-actions:has(> :not([hidden])) { display: flex; }
.route-exit-button { width: 100%; }
.route-selected-actions { display: grid; gap: 10px; margin-top: 10px; }
.route-menu-exit { width: 100%; }
@media screen and (max-width: 680px) {
  .route-dialog-actions { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .parcel-dialog-actions { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .parcel-dialog-actions .btn { width: 100%; }
  .detail-actions, .prospect-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 140px), 1fr)); gap: 10px; }
  .detail-actions .btn, .prospect-actions .btn { width: 100%; }
}
@media screen and (max-width: 350px) {
  .map-workspace-grid { grid-template-columns: minmax(0, 1fr); }
  .measurement-modes { grid-template-columns: minmax(0, 1fr); }
}

/* A short viewport must scroll the complete parcel sheet, including its actions. */
@media screen and (max-height: 600px) {
  .parcel-dialog { overflow-y: auto; overflow-x: hidden; }
  .parcel-dialog[open] { display: block; }
  .parcel-dialog-body { overflow: visible; }
  .parcel-dialog-actions { position: static; }
}

/* V15.5: truthful status above the unchanged approved brand. */
.brand{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;padding-top:12px}
.header-sync{position:absolute;top:1px;left:0;font-size:10px;line-height:1.2;max-width:100%;}
.client-sync-indicator{display:flex;align-items:center;gap:6px;color:#687368;font-size:11px;min-width:0}
.client-sync-indicator [data-sync-label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sync-dot{width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:#86918a}
.client-sync-indicator[data-state=success] .sync-dot{background:#3d772b}
.client-sync-indicator[data-state=pending] .sync-dot{background:#b07d25}
.client-sync-indicator[data-state=error] .sync-dot,.client-sync-indicator[data-state=offline] .sync-dot{background:#b45442}
.client-sync-indicator[data-state=running] .sync-dot{background:#4b8291;animation:sync-pulse 1s ease-in-out infinite alternate}
@keyframes sync-pulse{to{opacity:.3}}
#oldSyncNow[aria-busy=true]{cursor:progress}
.about-version{font-size:13px;color:#354630}.about-source{padding:12px 0;border-bottom:1px solid #dce2dd;font-size:12px;line-height:1.6;overflow-wrap:anywhere}.about-source h3{margin:0 0 6px;font-size:14px}.about-source p{margin:4px 0}
.data-update-banner{flex:0 0 auto;padding:10px;border:1px solid #cadbc1;border-radius:12px;background:#eff5e9;font-size:12px;margin-bottom:8px}.data-update-banner button{min-height:44px;margin-top:6px}
.data-update-notice{padding:12px;background:#eef4e8;border-radius:10px;font-size:12px;margin:10px 0}.data-update-notice .btn{margin:5px 5px 0 0}
.save-measurement-button,.save-camera-button{width:100%;margin-top:8px}
.client-attach-dialog{max-width:520px}.client-attach-dialog form{display:flex;flex-direction:column;min-height:0;overflow:hidden}.client-attach-dialog .parcel-dialog-body{overflow:auto}
@media(prefers-reduced-motion:reduce){.client-sync-indicator .sync-dot{animation:none}}

.map-data-sources{display:grid;gap:10px;margin-top:12px}.map-data-source{border:1px solid #dbe3d4;border-radius:12px;background:#f7f9f5;padding:12px;font-size:12px}.map-data-source h3{font-size:14px;margin:0 0 8px}.map-data-source dl{margin:0;display:grid;gap:8px}.map-data-source dl>div{display:grid;gap:2px}.map-data-source dt{color:#5e695b}.map-data-source dd{margin:0;font-weight:650}.data-status-error{color:#9c493c}.data-status-available{color:#355e1b;font-weight:650}.data-update-item+.data-update-item{border-top:1px solid #d1dcc8;margin-top:10px;padding-top:10px}.data-update-item p{margin:0}.data-update-actions{display:flex;gap:10px;margin-top:8px;flex-wrap:wrap}.data-update-actions .btn{flex:1;min-width:110px}

.app-header{height:122px;flex-basis:122px}
.data-update-banner{max-height:24dvh;overflow:auto;overscroll-behavior:contain}
.app.map-fullscreen .data-update-banner{display:none!important}
@media(max-width:900px){.app-header{height:114px;flex-basis:114px}}
@media(max-width:680px){.app-header{height:100px;flex-basis:100px}}

.commercial-views{display:flex;gap:10px;margin:10px 0 14px;flex-wrap:wrap}.commercial-views .btn{flex:1;min-width:110px}.commercial-views .btn[aria-pressed=true]{background:#e3efd9;border-color:#aabf9b;color:#355e1b}
