@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;650;700;750;800&display=swap');

:root{color-scheme:dark;font-family:'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#edf1ee;background:#111517;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-optical-sizing:auto;--page:#111517;--surface:#1b2326ed;--surface-solid:#1b2326;--input:#151b1e;--line:#303a3e;--text:#edf1ee;--muted:#a3b0aa;--accent:#75b59f;--focus:#65a994;--map:#171d20;--control-text:#dfe8e4;--shadow:0 5px 18px #0005;--tile-filter:invert(.88) hue-rotate(180deg) brightness(.78) contrast(.92) saturate(.68)}
:root[data-theme="light"]{color-scheme:light;color:#242820;background:#f7f7f5;--page:#f7f7f5;--surface:#ffffffed;--surface-solid:#fff;--input:#fff;--line:#e3e6df;--text:#242820;--muted:#73786e;--accent:#59845e;--focus:#769d70;--map:#e9ece6;--control-text:#434a3e;--shadow:0 5px 18px #1f25141a;--tile-filter:none}
*{box-sizing:border-box}
html,body{width:100%;height:100%;margin:0}
body{min-width:320px;overflow:hidden;background:var(--page);color:var(--text)}
.app-shell{position:relative;width:100%;height:100%;min-height:360px}
.topbar{position:fixed;z-index:1000;top:14px;left:24px;right:24px;height:46px;display:flex;align-items:center;justify-content:space-between;border:0;pointer-events:none}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font-size:19px;font-weight:750;letter-spacing:-.5px;pointer-events:auto}
.brand-region{color:var(--muted);font-weight:500}
.brand-mark{width:23px;height:23px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:2px;transform:rotate(-8deg)}
.brand-mark span{background:var(--accent);border-radius:3px}.brand-mark span:nth-child(2){opacity:.68}.brand-mark span:nth-child(3){opacity:.8}.brand-mark span:nth-child(4){opacity:.42}
.theme-toggle{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line);border-radius:12px;background:var(--surface-solid);color:var(--text);box-shadow:var(--shadow);cursor:pointer;pointer-events:auto;transition:background .16s ease,border-color .16s ease,transform .16s ease}
.theme-toggle:hover{border-color:var(--focus);transform:translateY(-1px)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.theme-toggle svg{width:19px;height:19px;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.theme-icon-moon{display:none}
:root[data-theme="light"] .theme-icon-sun{display:none}:root[data-theme="light"] .theme-icon-moon{display:block}
.map-frame{position:fixed;z-index:0;inset:0;margin:0;border:0;border-radius:0;overflow:hidden;background:var(--map)}
#map{position:absolute;inset:0;background:var(--map)}
.leaflet-container{font-family:'DM Sans',sans-serif;background:var(--map)}.leaflet-tile{filter:var(--tile-filter)}
.leaflet-control-zoom{border:1px solid var(--line)!important;border-radius:11px!important;overflow:hidden;box-shadow:var(--shadow)!important}
.leaflet-control-zoom a{width:44px!important;height:44px!important;line-height:42px!important;color:var(--control-text)!important;background:var(--surface-solid)!important;border:0!important;font-size:21px!important}
.leaflet-control-zoom-in{border-bottom:1px solid var(--line)!important}.leaflet-control-zoom a:hover{background:var(--input)!important}
.leaflet-bottom.leaflet-right{margin:0 20px 48px 0}
.leaflet-control-scale-line{border:1px solid var(--muted)!important;border-top:0!important;color:var(--text)!important;background:var(--surface)!important;font-size:9px!important;text-shadow:none!important}
.map-heading{position:fixed;z-index:600;top:82px;left:24px;width:300px;padding:11px 12px 12px;border:1px solid var(--line);background:var(--surface);border-radius:12px;box-shadow:var(--shadow);backdrop-filter:blur(12px)}
.map-heading label{display:block;margin:0 0 7px 1px;color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.02em}
.map-heading input{display:block;width:100%;height:44px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background-color:var(--input);color:var(--text);font:12px 'DM Sans',sans-serif;outline:none}
.map-heading input::placeholder{color:var(--muted)}.map-heading input:focus{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 20%,transparent)}
.place-options{position:absolute;top:calc(100% - 5px);left:12px;right:12px;z-index:5;max-height:min(360px,calc(100vh - 190px));overflow:auto;margin:0;padding:5px;list-style:none;border:1px solid var(--line);border-radius:9px;background:var(--surface-solid);box-shadow:var(--shadow)}
.place-options[hidden]{display:none}.place-option{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:40px;padding:7px 9px;border-radius:6px;cursor:pointer}.place-option:hover,.place-option[aria-selected="true"]{background:color-mix(in srgb,var(--accent) 15%,var(--surface-solid))}.place-option-name{font-size:12px;color:var(--text)}.place-option-detail{font-size:10px;color:var(--muted);text-align:right}.place-options-empty{padding:11px 9px;color:var(--muted);font-size:11px}
.search-feedback{display:none;padding:8px 1px 0;color:var(--muted);font-size:10px;line-height:1.4}.search-feedback.is-visible{display:block}.search-feedback.is-error{color:#e77f75}:root[data-theme="light"] .search-feedback.is-error{color:#a44f48}
.zoom-readout{position:fixed;z-index:600;right:24px;top:82px;display:flex;align-items:center;gap:11px;padding:10px 13px;border:1px solid var(--line);background:var(--surface);border-radius:11px;box-shadow:var(--shadow);backdrop-filter:blur(12px);pointer-events:none}
.readout-label{font:10px 'DM Mono',monospace;letter-spacing:1px;color:var(--muted)}.zoom-readout strong{font:500 14px 'DM Mono',monospace;color:var(--text);min-width:15px;text-align:center}
.map-footer{position:fixed;z-index:600;left:24px;bottom:20px;height:36px;display:flex;align-items:center;gap:10px;padding:0 12px;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);backdrop-filter:blur(12px);color:var(--text);font:10px 'DM Mono',monospace;pointer-events:none}
.coordinate-dot{width:7px;height:7px;background:var(--accent);border-radius:50%;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}
.locate-button,.reset-button{position:fixed;z-index:600;left:24px;width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line);border-radius:11px;background:var(--surface-solid);color:var(--text);box-shadow:var(--shadow);cursor:pointer;transition:background .16s ease,border-color .16s ease,transform .16s ease}
.locate-button{bottom:68px}.reset-button{bottom:120px}.locate-button:hover,.reset-button:hover{background:var(--input);border-color:var(--focus);transform:translateY(-1px)}
.locate-button:focus-visible,.reset-button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.locate-button svg,.reset-button svg{width:19px;height:19px;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.page-footer{position:fixed;z-index:600;right:24px;bottom:19px;color:var(--text);font-size:10px;text-shadow:0 1px 8px var(--page);pointer-events:none}.page-footer i{padding:0 3px;font-style:normal;color:var(--muted)}
@media(max-width:640px){
  .topbar{top:10px;left:12px;right:12px;height:46px}.brand{font-size:17px}.brand-mark{width:21px;height:21px}
  .map-heading{top:70px;left:12px;width:min(300px,calc(100% - 100px));padding:9px;border-radius:11px}.map-heading label{margin-bottom:6px}.map-heading input{height:42px;font-size:11px}.place-options{left:9px;right:9px}
  .zoom-readout{top:70px;right:12px;gap:8px;padding:9px 10px;border-radius:10px}.readout-label{font-size:9px}.zoom-readout strong{font-size:12px}
  .map-footer{left:12px;bottom:14px;height:34px;gap:8px;padding:0 10px;font-size:9px}
  .locate-button,.reset-button{left:12px;width:44px;height:44px}.locate-button{bottom:60px}.reset-button{bottom:112px}
  .page-footer{right:12px;bottom:16px;font-size:9px}.leaflet-bottom.leaflet-right{margin:0 12px 48px 0}
}
@media(max-width:360px){.map-heading{width:calc(100% - 100px)}.map-footer{font-size:8px}.page-footer{font-size:8px}}
