:root{--paper:#f8f5ee;--card:#fffdf8;--ink:#253f36;--muted:#737b70;--line:#dddeda;--accent:#9e5a39;--soft:#e9eee6;--shadow:0 12px 42px #20372e20}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.6 Arial,Tahoma,sans-serif}body.dark{--paper:#192a24;--card:#22382f;--ink:#f3f0e6;--muted:#bcc8bc;--line:#45564b;--soft:#334a3e}button,input,select,textarea{font:inherit}button{cursor:pointer;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 13px}button:hover{background:var(--soft)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,svg:focus-visible{outline:3px solid #b67a42;outline-offset:3px}header{height:91px;display:flex;align-items:center;justify-content:space-between;padding:12px 30px;border-bottom:1px solid var(--line);background:var(--card);gap:12px}.brand{display:flex;align-items:center;gap:14px}.mark{font-family:Georgia,serif;border:1px solid #aab5a5;border-radius:50%;width:48px;height:48px;text-align:center;font-size:30px;line-height:43px}h1{font:30px/1.1 Georgia,Tahoma,serif;margin:0}header p{margin:5px 0 0;color:var(--muted);font-size:12px;letter-spacing:.4px}nav{display:flex;gap:8px}.workspace{display:flex;height:calc(100dvh - 91px)}aside{width:345px;flex-shrink:0;padding:23px 22px 0;display:flex;flex-direction:column;border-inline-end:1px solid var(--line);background:var(--paper);min-height:0;z-index:5}.eyebrow{font-size:10px;font-weight:bold;letter-spacing:1.7px;color:var(--accent)}h2{font-family:Georgia,Tahoma,serif;font-size:25px;line-height:1.4;margin:8px 0}.intro p{font-size:13px;color:var(--muted);margin:0 0 20px}.search{display:flex;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:9px;padding:0 11px;gap:8px}.search span{font-size:25px}.search input{width:100%;padding:12px 0;background:transparent;color:var(--ink);border:0;min-width:0;font-size:16px}#tabs{display:flex;gap:4px;flex-wrap:wrap;margin:15px 0 12px}#tabs button{font-size:12px;padding:6px 9px;border-radius:20px}#tabs button.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}select{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}.resulthead{display:flex;justify-content:space-between;align-items:center;margin:12px 0 5px;color:var(--muted);font-size:12px}.resulthead button{border:0;background:none;padding:4px}#results{overflow:auto;flex:1;min-height:0;margin-inline:-7px;padding:0 7px}.record{display:flex;text-align:start;width:100%;gap:11px;align-items:center;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:13px 2px}.record.selected{background:var(--soft)}.record .badge{font-size:11px;min-width:30px;height:30px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;color:var(--accent)}.record strong{font-size:15px;font-weight:500}.record small{display:block;font-size:11px;color:var(--muted);margin-top:2px}footer{display:flex;gap:7px;padding:14px 0}footer button{font-size:11px;flex:1}main{flex:1;position:relative;overflow:hidden;background:#e7edde;min-width:0}#map{width:100%;height:100%;touch-action:none;display:block;cursor:grab}#map:active{cursor:grabbing}.maptitle{position:absolute;top:20px;inset-inline-start:20px;background:#fffdf8ed;color:#253f36;padding:12px 18px;border:1px solid #d9dfd3;border-radius:10px;pointer-events:none;box-shadow:var(--shadow)}.maptitle strong{display:block;font:20px Georgia,Tahoma,serif}.maptitle span{font-size:11px;color:#687565}.controls{position:absolute;inset-inline-end:20px;top:20px;display:flex;flex-direction:column;gap:6px}.controls button{min-width:45px;height:42px;font-size:13px;box-shadow:0 3px 10px #253f3610}#plus,#minus{font-size:23px}.mapfooter{position:absolute;bottom:0;inset-inline:0;display:flex;justify-content:space-between;padding:7px 18px;background:#fffdf8e8;color:#52624f;font-size:11px;pointer-events:none}.house{fill:#a9693310;stroke:#9c613b;stroke-width:1.1;vector-effect:non-scaling-stroke;cursor:pointer}.house.approx{stroke-dasharray:4 3}.house:hover,.house.active{fill:#b46b3b70;stroke:#763e1e;stroke-width:2.5}.house.dim{opacity:.18}.pin{cursor:pointer}.pin text{font:12px Arial,Tahoma,sans-serif;paint-order:stroke;stroke:#fffdf8;stroke-width:4px;stroke-linejoin:round;fill:#243c31}.pin .number{stroke:none;fill:white;font-weight:bold}.selection{fill:none;stroke:#a54f22;stroke-width:3;pointer-events:none}#detail{position:absolute;inset-inline-start:20px;bottom:49px;width:min(410px,calc(100% - 40px));max-height:65%;overflow:auto;padding:25px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);z-index:6}#close{position:absolute;top:8px;inset-inline-end:10px;font-size:22px;border:0;padding:0 7px}#detail h2{padding-inline-end:15px;font-size:25px}#detail p{margin:12px 0}.tag{display:inline-block;border:1px solid var(--line);padding:2px 8px;border-radius:15px;font-size:11px;margin:3px}.source{font-size:11px;color:var(--muted)}textarea{display:block;width:100%;min-height:80px;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:8px;padding:10px;margin:8px 0}.note{border-top:1px solid var(--line);padding-top:13px;margin-top:15px}.note label{font-size:13px}.note small{display:block;color:var(--muted);font-size:11px}.note button{font-size:12px}.empty{color:var(--muted);padding:25px 5px;font-size:14px}dialog{max-width:590px;width:calc(100% - 32px);max-height:85dvh;overflow:auto;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:16px;padding:32px;box-shadow:var(--shadow)}dialog::backdrop{background:#10251bb0}#closeInfo{float:inline-end;border:0;font-size:24px;padding:0 8px}#browse{display:none}#status{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:30;background:var(--ink);color:var(--paper);padding:10px 20px;border-radius:9px;display:none}details summary{cursor:pointer;font-size:12px;color:var(--muted)}@media(max-width:760px){header{height:75px;padding:10px 14px}h1{font-size:24px}header p{font-size:10px}.mark{width:36px;height:36px;line-height:32px;font-size:24px}.brand{gap:9px}nav{gap:4px}nav button{padding:7px 9px;font-size:12px}.workspace{height:calc(100dvh - 75px)}aside{position:absolute;inset-inline:0;bottom:0;width:100%;height:64dvh;box-shadow:0 -10px 40px #213a3320;border-radius:18px 18px 0 0;padding:17px 19px 0;transform:translateY(110%);transition:transform .2s;z-index:8}aside.open{transform:none}.intro h2{font-size:20px}.intro p{display:none}.intro .eyebrow{display:none}.intro{margin-bottom:10px}#tabs{margin:10px 0}.maptitle{top:14px;inset-inline-start:13px;padding:10px 12px}.maptitle strong{font-size:17px}.maptitle span{font-size:10px}.controls{top:14px;inset-inline-end:13px}#browse{display:block;position:absolute;bottom:45px;left:50%;transform:translateX(-50%);white-space:nowrap;box-shadow:var(--shadow);background:#253f36;color:white;border:0;padding:12px 24px;border-radius:24px;z-index:9}body.browsing #browse{bottom:calc(64dvh + 10px)}#detail{bottom:99px;max-height:56%;inset-inline-start:13px;width:calc(100% - 26px);padding:20px}footer{padding:10px 0 16px}.mapfooter{font-size:10px}dialog{padding:23px}}

/* Keep map gestures and scrollable panels within the application. */
html,body{height:100%;overflow:hidden;overscroll-behavior:none}#mapArea,#map{overscroll-behavior:none}#results,#detail,dialog{overscroll-behavior:contain}#results,#detail{touch-action:pan-y}button:disabled{opacity:.4;cursor:default}

/* Keep the map viewport bounded while letting mobile records use normal page scroll. */
#mapCanvas{position:relative;width:100%;height:100%;overflow:hidden;isolation:isolate}
#markers[aria-pressed="false"]{background:var(--soft);border-color:var(--accent)}
@media(max-width:760px){
 html,body{height:auto;min-height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:auto}
 .workspace{height:auto;display:flex;flex-direction:column;overflow:visible}
 #mapArea{order:0;flex:none;overflow:visible;width:100%}
 #mapCanvas{height:65svh;min-height:390px;max-height:650px}
 #directory,#directory.open{order:1;position:relative;inset:auto;width:100%;height:auto;transform:none;transition:none;box-shadow:none;border-radius:0;padding:24px 19px calc(28px + env(safe-area-inset-bottom));overflow:visible}
 #results{flex:none;max-height:none;overflow:visible}
 #detail{position:relative;inset:auto;bottom:auto;width:100%;max-height:none;overflow:visible;border-radius:0;box-shadow:none;padding:24px 20px;scroll-margin-top:12px}
 #detail p{font-size:16px;line-height:1.85}
 #browse,body.browsing #browse{bottom:44px}
 #directory .intro p{display:block;margin-bottom:18px}
 .mapfooter{padding-bottom:9px}
 .record{padding:15px 2px}
 footer{padding-bottom:20px}
}
