:root{--fg:#1a1a1a;--muted:#666;--accent:#0b66c3;--border:#e2e2e2;--panel:#fff;--panel-border:#e6e6e6;--nav-bg:#0d1b2a;--nav-fg:#f5f7fa}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--fg);line-height:1.5}.app{flex-direction:column;height:100vh}.app,.nav{display:flex}.nav{flex:0 0 auto;align-items:center;gap:1.25rem;padding:.75rem 1.25rem;background:var(--nav-bg);color:var(--nav-fg);z-index:20}.nav-title{font-size:1.1rem;font-weight:700;margin:0}.nav-links{display:flex;gap:1rem;margin-left:auto;font-size:.9rem}.nav-links a{color:var(--nav-fg);text-decoration:none;opacity:.85}.nav-links a:hover{opacity:1;text-decoration:underline}.map-area{position:relative;flex:1 1 auto;min-height:0}.map-container{width:100%;height:100%}.search-panel{position:absolute;top:1rem;left:1rem;width:min(360px,calc(100% - 2rem));background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;box-shadow:0 4px 18px rgba(0,0,0,.18);padding:.75rem;z-index:10}.search-form{display:flex;gap:.5rem}.search-form input{flex:1 1;padding:.55rem .7rem;border:1px solid var(--border);border-radius:8px;font-size:.95rem;color:var(--fg);background:#fff}.search-form button{padding:.55rem 1rem;border:none;border-radius:8px;background:var(--accent);color:#fff;font-weight:600;cursor:pointer}.search-form button:disabled{opacity:.5;cursor:not-allowed}.results{list-style:none;margin:.6rem 0 0;padding:0;max-height:50vh;overflow-y:auto}.result{display:block;width:100%;text-align:left;border:none;background:transparent;padding:.5rem .4rem;border-radius:6px;cursor:pointer;color:var(--fg)}.result:hover{background:#f1f5f9}.result-name{font-weight:600}.result-sub{font-size:.78rem;color:var(--muted)}.result-kind{display:inline-block;font-size:.65rem;text-transform:uppercase;letter-spacing:.04em;padding:.05rem .35rem;border-radius:999px;margin-left:.4rem;vertical-align:middle}.result-kind.place{background:#dcfce7;color:#166534}.result-kind.geo{background:#e0f2fe;color:#075985}.status{margin:.6rem 0 0;font-size:.85rem;color:var(--muted)}.status.error{color:#b3261e}