/* Global foundation — imports the Waystone design tokens, then a minimal
   reset establishing the dark Exploration surface as the default. */

/* ─────────────────────────────────────────────────────────────
   Waystone Web — Design System tokens
   Ported verbatim from the WaystoneWebsite design skill
   (colors_and_type.css) and the iOS theme.js (Section C of the
   port inventory). Dark mode is the default / Exploration surface.
   Paper mode is carried for future Reading surfaces.
   Font URLs are rewritten to this repo's src/fonts/ location.
   ───────────────────────────────────────────────────────────── */

/* ── Fonts (8 TTFs copied from WanderPing/assets/fonts) ── */

@font-face {
  font-family: 'Cormorant Garamond';
  src: url('/assets/CormorantGaramond-Light-Jd3jEDF-.ttf') format('truetype');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Cormorant Garamond';
  src: url('/assets/CormorantGaramond-LightItalic-nEHpQe_c.ttf') format('truetype');
  font-weight: 300;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Cormorant Garamond';
  src: url('/assets/CormorantGaramond-Regular-BtKDB5pG.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Cormorant Garamond';
  src: url('/assets/CormorantGaramond-SemiBold-AmV_v4Jw.ttf') format('truetype');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Cormorant Garamond';
  src: url('/assets/CormorantGaramond-Bold-Q3jUdXm6.ttf') format('truetype');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'DM Sans';
  src: url('/assets/DMSans-Regular-Dvt-avFb.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'DM Sans';
  src: url('/assets/DMSans-Medium-BjjbzgJR.ttf') format('truetype');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'DM Sans';
  src: url('/assets/DMSans-Bold-DRMr3LYH.ttf') format('truetype');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* DM Mono is referenced in the brand doc but not bundled — JetBrains Mono
   substituted as fallback (flagged in the design skill). */

:root {
  /* ─────────── DARK MODE (default / Exploration) ─────────── */
  --void:         #0B0D12;   /* design-skill primary dark background */
  --surface:      #11141C;   /* cards, bottom sheets */
  --raised:       #181C28;   /* elevated, modals */
  --raised-2:     #232940;   /* higher elevation */

  /* App-code background (theme.js THEME.colors.background) — the canonical
     page background the inventory Section C / Part 1 mandates. */
  --background:   #0a0f1a;

  --gold:         #C9A84C;   /* primary accent — use sparingly */
  --gold-dim:     #7A6228;   /* inactive gold, rules */
  --gold-bright:  #F0D080;   /* shimmer peak */
  --gold-deep:    #3A2A08;   /* dark gold shadow */

  /* App-code gold (softer variant used in theme.js) */
  --gold-soft:        #F4D58D;
  --gold-soft-dark:   #D4A03C;
  --gold-soft-light:  #F7E4A8;

  --moonlight:    #EDE9E2;   /* primary text on dark */
  --mist:         #7A8090;   /* secondary text on dark */
  --shadow-fg:    #363B48;   /* tertiary / disabled */

  --user-blue:    #4A90D9;   /* custom user pins, own messages */
  --ancient-blue: #4A9ECC;   /* Ancient Ground cyan glow */
  --error:        #E85D5D;

  /* Foreground semantic aliases (dark default) */
  --fg1: var(--moonlight);
  --fg2: var(--mist);
  --fg3: var(--shadow-fg);
  --accent: var(--gold);
  --accent-dim: var(--gold-dim);

  --bg1: var(--void);
  --bg2: var(--surface);
  --bg3: var(--raised);

  --rule: rgba(201, 168, 76, 0.12);         /* hairline divider */
  --rule-strong: rgba(201, 168, 76, 0.30);
  --surface-border: rgba(244, 213, 141, 0.08);

  /* Glass fill for map controls / overlay surfaces (design skill) */
  --glass: rgba(10, 15, 26, 0.82);

  /* ─────────── Type families ─────────── */
  --font-display: 'Cormorant Garamond', 'EB Garamond', Garamond, serif;
  --font-body:    'DM Sans', ui-sans-serif, system-ui, -apple-system, sans-serif;
  --font-mono:    'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  /* ─────────── Type scale (px) ─────────── */
  --fs-wordmark:   96px;
  --fs-hero:       58px;
  --fs-h1:         40px;
  --fs-h2:         34px;
  --fs-h3:         28px;
  --fs-pull:       22px;
  --fs-ui-heading: 22px;
  --fs-lg:         17px;
  --fs-body:       15px;
  --fs-sm:         13px;
  --fs-xs:         11px;
  --fs-label:      10px;
  --fs-coord:      11px;

  /* ─────────── Spacing (4-based) ─────────── */
  --sp-xs: 4px;
  --sp-sm: 8px;
  --sp-md: 16px;
  --sp-lg: 24px;
  --sp-xl: 32px;
  --sp-xxl: 48px;

  /* ─────────── Radii ─────────── */
  --r-sm: 6px;
  --r-md: 10px;
  --r-lg: 14px;
  --r-xl: 20px;
  --r-pill: 28px;

  /* ─────────── Elevation ─────────── */
  --shadow-card: 0 2px 8px rgba(0,0,0,0.30);
  --shadow-sheet: 0 -8px 24px rgba(0,0,0,0.45);
  --shadow-modal: 0 20px 60px rgba(0,0,0,0.60);
  --inner-top-dark: inset 0 1px 0 rgba(255,255,255,0.05);

  /* Gold glow — used on active pills, CTAs, focused controls */
  --glow-gold: 0 0 0 1px rgba(201,168,76,0.30), 0 0 24px rgba(201,168,76,0.18);

  /* Tracking */
  --tr-label: 0.15em;
  --tr-cap:   0.08em;
  --tr-body:  0.02em;
  --tr-display: 0.015em;

  /* Standard easing (design skill: out-cubic) */
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
}

/* ─────────── PAPER MODE (carried for future Reading surfaces) ─────────── */

[data-mode="paper"] {
  --laid:       #FBF6E9;
  --vellum:     #F3EAD2;
  --gilt:       #8B6820;
  --gilt-light: #BF9A40;
  --ink:        #1C1710;
  --ink-mid:    #4A4238;
  --ink-faint:  #8A8070;

  --fg1: var(--ink);
  --fg2: var(--ink-mid);
  --fg3: var(--ink-faint);
  --accent: var(--gilt);
  --accent-dim: var(--gilt-light);

  --bg1: var(--laid);
  --bg2: var(--vellum);
  --bg3: #E8DDBE;

  --rule: rgba(139, 104, 32, 0.22);
  --rule-strong: rgba(139, 104, 32, 0.50);
  --surface-border: rgba(139, 104, 32, 0.18);

  --shadow-card: 0 2px 6px rgba(92,70,24,0.18);
  --glow-gold: 0 0 0 1px rgba(139,104,32,0.35);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body,
#root {
  height: 100%;
}

body {
  margin: 0;
  background: var(--background); /* #0a0f1a — no white anywhere */
  color: var(--fg1);
  font-family: var(--font-body);
  font-size: var(--fs-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow: hidden; /* map-first, full-bleed; no page scroll */
}

/* Brand text selection. */

::selection {
  background: rgba(244, 213, 141, 0.25);
  color: var(--moonlight);
}

/* Consistent keyboard focus ring (gold), suppressed for mouse interactions. */

:focus-visible {
  outline: 1.5px solid var(--rule-strong);
  outline-offset: 2px;
}

button:focus:not(:focus-visible),
a:focus:not(:focus-visible),
input:focus:not(:focus-visible) {
  outline: none;
}
.maplibregl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgb(0 0 0/0)}.maplibregl-canvas{left:0;position:absolute;top:0}.maplibregl-map:fullscreen{height:100%;width:100%}.maplibregl-ctrl-group button.maplibregl-ctrl-compass{touch-action:none}.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures,.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}.maplibregl-ctrl-top-left{left:0;top:0}.maplibregl-ctrl-top-right{right:0;top:0}.maplibregl-ctrl-bottom-left{bottom:0;left:0}.maplibregl-ctrl-bottom-right{bottom:0;right:0}.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}.maplibregl-ctrl-group{background:#fff;border-radius:4px}.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (forced-colors:active){.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.maplibregl-ctrl-group button{background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;padding:0;width:29px}.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.maplibregl-ctrl button .maplibregl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}@media (forced-colors:active){.maplibregl-ctrl-icon{background-color:transparent}.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl button:disabled{cursor:not-allowed}.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}@media (hover:hover){.maplibregl-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}}.maplibregl-ctrl button:not(:disabled):active{background-color:rgba(0,0,0,.05)}.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-globe .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' stroke='%23333' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='8.5'/%3E%3Cpath d='M17.5 11c0 4.819-3.02 8.5-6.5 8.5S4.5 15.819 4.5 11 7.52 2.5 11 2.5s6.5 3.681 6.5 8.5Z'/%3E%3Cpath d='M13.5 11c0 2.447-.331 4.64-.853 6.206-.262.785-.562 1.384-.872 1.777-.314.399-.58.517-.775.517s-.461-.118-.775-.517c-.31-.393-.61-.992-.872-1.777C8.831 15.64 8.5 13.446 8.5 11s.331-4.64.853-6.206c.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517s.461.118.775.517c.31.393.61.992.872 1.777.522 1.565.853 3.76.853 6.206Z'/%3E%3Cpath d='M11 7.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138q.07-.058.224-.138c.299-.151.763-.302 1.379-.434C7.378 5.666 9.091 5.5 11 5.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138q-.07.058-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428ZM4.486 6.436ZM11 16.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138 1.3 1.3 0 0 1 .224-.138c.299-.151.763-.302 1.379-.434C7.378 14.666 9.091 14.5 11 14.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138a1.3 1.3 0 0 1-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm-6.514-1.064ZM11 12.5c-2.46 0-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.5 1.5 0 0 1-.39-.272.3.3 0 0 1-.047-.064.3.3 0 0 1 .048-.064c.066-.073.189-.167.389-.272.399-.21 1.009-.413 1.805-.59C6.328 9.722 8.54 9.5 11 9.5s4.672.222 6.256.574c.795.177 1.405.38 1.804.59.2.105.323.2.39.272a.3.3 0 0 1 .047.064.3.3 0 0 1-.048.064 1.4 1.4 0 0 1-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002zm0 .018v.002zm17.002.002v-.002zm0-.018v-.002z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-globe-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' stroke='%2333b5e5' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='8.5'/%3E%3Cpath d='M17.5 11c0 4.819-3.02 8.5-6.5 8.5S4.5 15.819 4.5 11 7.52 2.5 11 2.5s6.5 3.681 6.5 8.5Z'/%3E%3Cpath d='M13.5 11c0 2.447-.331 4.64-.853 6.206-.262.785-.562 1.384-.872 1.777-.314.399-.58.517-.775.517s-.461-.118-.775-.517c-.31-.393-.61-.992-.872-1.777C8.831 15.64 8.5 13.446 8.5 11s.331-4.64.853-6.206c.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517s.461.118.775.517c.31.393.61.992.872 1.777.522 1.565.853 3.76.853 6.206Z'/%3E%3Cpath d='M11 7.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138q.07-.058.224-.138c.299-.151.763-.302 1.379-.434C7.378 5.666 9.091 5.5 11 5.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138q-.07.058-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428ZM4.486 6.436ZM11 16.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138 1.3 1.3 0 0 1 .224-.138c.299-.151.763-.302 1.379-.434C7.378 14.666 9.091 14.5 11 14.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138a1.3 1.3 0 0 1-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm-6.514-1.064ZM11 12.5c-2.46 0-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.5 1.5 0 0 1-.39-.272.3.3 0 0 1-.047-.064.3.3 0 0 1 .048-.064c.066-.073.189-.167.389-.272.399-.21 1.009-.413 1.805-.59C6.328 9.722 8.54 9.5 11 9.5s4.672.222 6.256.574c.795.177 1.405.38 1.804.59.2.105.323.2.39.272a.3.3 0 0 1 .047.064.3.3 0 0 1-.048.064 1.4 1.4 0 0 1-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002zm0 .018v.002zm17.002.002v-.002zm0-.018v-.002z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%23333' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%2333b5e5' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23aaa' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:maplibregl-spin 2s linear infinite}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23999' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23666' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}}@keyframes maplibregl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (forced-colors:active){a.maplibregl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E")}}.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:hsla(0,0%,100%,.5);margin:0;padding:0 5px}@media screen{.maplibregl-ctrl-attrib.maplibregl-compact{background-color:#fff;border-radius:12px;box-sizing:content-box;color:#000;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.maplibregl-ctrl-attrib-button{background-color:hsla(0,0%,100%,.5);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E");border:0;border-radius:12px;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:none;position:absolute;right:0;top:0;width:24px}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:rgba(0,0,0,.05)}.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{right:0;top:0}.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{left:0;top:0}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (forced-colors:active){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}@media screen and (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}.maplibregl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.maplibregl-attrib-empty{display:none}.maplibregl-ctrl-scale{background-color:hsla(0,0%,100%,.75);border:2px solid #333;border-top:#333;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px;white-space:nowrap}.maplibregl-popup{display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.maplibregl-popup-anchor-left{flex-direction:row}.maplibregl-popup-anchor-right{flex-direction:row-reverse}.maplibregl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}.maplibregl-popup-anchor-top .maplibregl-popup-tip{align-self:center;border-bottom-color:#fff;border-top:none}.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.maplibregl-popup-anchor-left .maplibregl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.maplibregl-popup-anchor-right .maplibregl-popup-tip{align-self:center;border-left-color:#fff;border-right:none}[dir=rtl] .maplibregl-popup-anchor-left{flex-direction:row-reverse}[dir=rtl] .maplibregl-popup-anchor-right{flex-direction:row}[dir=rtl] .maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-end}[dir=rtl] .maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-start}[dir=rtl] .maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-end}[dir=rtl] .maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-start}.maplibregl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}.maplibregl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.maplibregl-popup-content{background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:15px 10px;pointer-events:auto;position:relative}.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.maplibregl-popup-track-pointer{display:none}.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.maplibregl-marker{left:0;position:absolute;top:0;transition:opacity .2s;will-change:transform}.maplibregl-user-location-dot,.maplibregl-user-location-dot:before{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}.maplibregl-user-location-dot:before{animation:maplibregl-user-location-dot-pulse 2s infinite;content:"";position:absolute}.maplibregl-user-location-dot:after{border:2px solid #fff;border-radius:50%;box-shadow:0 0 3px rgba(0,0,0,.35);box-sizing:border-box;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px}@media (prefers-reduced-motion:reduce){.maplibregl-user-location-dot:before{animation:none}}@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.maplibregl-user-location-dot-stale{background-color:#aaa}.maplibregl-user-location-dot-stale:after{display:none}.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;height:1px;width:1px}.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.maplibregl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}.maplibregl-cooperative-gesture-screen{align-items:center;background:rgba(0,0,0,.4);color:#fff;display:flex;font-size:1.4em;inset:0;justify-content:center;line-height:1.2;opacity:0;padding:1rem;pointer-events:none;position:absolute;transition:opacity 1s ease 1s;z-index:99999}.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;transition:opacity .05s}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}@media (hover:none),(pointer:coarse){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}.maplibregl-pseudo-fullscreen{height:100%!important;left:0!important;position:fixed!important;top:0!important;width:100%!important;z-index:99999}/* MapView — full-bleed basemap + Waystone dark/gold restyle of the
   default MapLibre GL JS controls (which ship light/white). */

.ws-map {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  background: var(--background); /* prevents any white flash before tiles paint */
}

/* ── Control group: glass-dark surface with a 1px gold border (design skill:
   map controls use rgba(10,15,26,0.82) + 1px gold border). ── */
.ws-map .maplibregl-ctrl-group {
  background: var(--glass);
  border: 1px solid var(--rule-strong);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

/* Hairline gold divider between stacked buttons (design skill list rule). */
.ws-map .maplibregl-ctrl-group button + button {
  border-top: 1px solid var(--rule);
}

.ws-map .maplibregl-ctrl-group button {
  width: 36px;
  height: 36px;
  background-color: transparent;
  transition: background-color 0.2s var(--ease-out);
}

.ws-map .maplibregl-ctrl-group button:hover {
  background-color: rgba(244, 213, 141, 0.10);
}

.ws-map .maplibregl-ctrl-group button:active {
  background-color: rgba(244, 213, 141, 0.18);
}

.ws-map .maplibregl-ctrl-group button:focus,
.ws-map .maplibregl-ctrl-group button:focus-visible {
  outline: none;
  box-shadow: inset 0 0 0 1px var(--rule-strong);
}

.ws-map .maplibregl-ctrl-group button:focus:not(:focus-visible) {
  box-shadow: none;
}

/* Disabled (e.g. zoom-in at max zoom) — dim the gold icon. */
.ws-map .maplibregl-ctrl-group button:disabled .maplibregl-ctrl-icon {
  opacity: 0.3;
}

/* ── Gold icons (override MapLibre's dark default SVGs) ──
   gold-soft #F4D58D reads warm on the near-black map, matching the pin gold. */
.ws-map .maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='M10 5v10M5 10h10' stroke='%23F4D58D' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
}

.ws-map .maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='M5 10h10' stroke='%23F4D58D' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* Compass needle — gold north half, mist-grey south half. MapLibre rotates
   this icon with the map bearing, so the arrow tracks north. */
.ws-map .maplibregl-ctrl-compass .maplibregl-ctrl-icon {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='M10 2.5l3.4 7.5H6.6z' fill='%23F4D58D'/%3E%3Cpath d='M10 17.5l-3.4-7.5h6.8z' fill='%237A8090'/%3E%3C/svg%3E");
}

/* ── Attribution — dark glass to match. ── */
.ws-map .maplibregl-ctrl-attrib {
  background: var(--glass);
  color: var(--fg2);
  border-radius: var(--r-sm) 0 0 0;
  font-family: var(--font-body);
  font-size: 10px;
}

.ws-map .maplibregl-ctrl-attrib a {
  color: var(--fg2);
}

.ws-map .maplibregl-ctrl-attrib-button {
  filter: invert(1) opacity(0.5);
}
/* Share Feedback dialog — web port of the iOS sheet (FeedbackContext.jsx).
   Waystone glass: navy ground, gold hairline edges, warm gold accents. */

.fbk-overlay {
  position: fixed;
  inset: 0;
  z-index: 200;            /* above the sidebar (95) and login modal (100) */
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(4, 7, 14, 0.62);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: fbk-fade 0.2s var(--ease-out);
}
@keyframes fbk-fade { from { opacity: 0; } to { opacity: 1; } }

.fbk-modal {
  width: 100%;
  max-width: 540px;
  max-height: 88vh;
  display: flex;
  flex-direction: column;
  background:
    radial-gradient(120% 55% at 50% 0%, rgba(244, 213, 141, 0.05), transparent 60%),
    rgba(10, 14, 24, 0.96);
  border: 1px solid rgba(244, 213, 141, 0.16);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-modal), 0 0 40px rgba(244, 213, 141, 0.06), inset 0 1px 0 rgba(255, 255, 255, 0.06);
  overflow: hidden;
  animation: fbk-rise 0.32s var(--ease-out);
}
@keyframes fbk-rise { from { opacity: 0; transform: translateY(14px) scale(0.985); } to { opacity: 1; transform: none; } }

.fbk-head {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px 13px;
  border-bottom: 1px solid rgba(244, 213, 141, 0.08);
}
.fbk-title { font-family: var(--font-display); font-weight: 600; font-size: 21px; letter-spacing: 0.3px; color: var(--gold); }
.fbk-close {
  width: 30px; height: 30px;
  display: flex; align-items: center; justify-content: center;
  border: 0; background: transparent; color: var(--gold-soft); opacity: 0.7;
  border-radius: var(--r-sm); cursor: pointer;
  transition: background 0.15s var(--ease-out), opacity 0.15s var(--ease-out);
}
.fbk-close:hover { background: rgba(244, 213, 141, 0.08); opacity: 1; }

.fbk-body { flex: 1 1 auto; overflow-y: auto; padding: 20px; }

/* Hero — the "Field Note" framing */
.fbk-hero {
  display: flex; flex-direction: column;
  position: relative; overflow: hidden;
  padding: 20px;
  border: 1px solid rgba(244, 213, 141, 0.18);
  border-radius: var(--r-xl);
  background:
    linear-gradient(135deg, rgba(244, 213, 141, 0.1), rgba(244, 213, 141, 0.02) 50%, transparent),
    rgba(244, 213, 141, 0.03);
}
.fbk-badge {
  display: inline-flex; align-items: center; gap: 7px;
  align-self: flex-start;
  padding: 6px 10px; margin-bottom: 16px;
  border: 1px solid rgba(244, 213, 141, 0.16); border-radius: var(--r-pill);
  background: rgba(255, 255, 255, 0.03);
  color: var(--gold);
  font: 600 11px/1 var(--font-body); letter-spacing: 0.12em; text-transform: uppercase;
}
.fbk-hero-title { margin: 0 0 8px; font-family: var(--font-display); font-weight: 600; font-size: 27px; line-height: 1.08; color: var(--gold); }
.fbk-hero-body { margin: 0 0 18px; font: 400 15px/1.5 var(--font-body); color: var(--fg2); }
.fbk-meta { display: flex; flex-wrap: wrap; gap: 8px; }
.fbk-pill {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 12px; border-radius: var(--r-pill);
  border: 1px solid rgba(244, 213, 141, 0.12); background: rgba(10, 15, 26, 0.5);
  color: var(--fg2); font: 400 13px/1 var(--font-body);
}
.fbk-pill svg { color: var(--gold); flex: 0 0 auto; }

/* Gilt ornament */
.fbk-orn { display: flex; align-items: center; gap: 16px; margin: 18px 24px; }
.fbk-orn i { flex: 1; height: 1px; background: rgba(244, 213, 141, 0.16); }
.fbk-orn b { font-weight: 400; font-size: 11px; color: var(--gold); opacity: 0.5; }

/* Editor */
.fbk-editor {
  padding: 18px;
  border: 1px solid rgba(244, 213, 141, 0.1); border-radius: var(--r-xl);
  background: rgba(255, 255, 255, 0.025);
}
.fbk-editor-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.fbk-label { font: 600 11px/1 var(--font-body); letter-spacing: 0.14em; text-transform: uppercase; color: var(--fg3); }
.fbk-counter { font: 400 11px/1 var(--font-body); color: var(--mist); opacity: 0.85; }
.fbk-input {
  width: 100%; box-sizing: border-box;
  min-height: 200px; max-height: 320px; resize: vertical;
  padding: 14px; border-radius: var(--r-md);
  border: 1px solid rgba(244, 213, 141, 0.1); background: rgba(10, 15, 26, 0.52);
  font: 400 15px/1.5 var(--font-body); color: var(--fg1);
  outline: none; transition: border-color 0.2s var(--ease-out);
}
.fbk-input::placeholder { color: var(--fg3); }
.fbk-input:focus { border-color: rgba(244, 213, 141, 0.4); }
.fbk-helper { display: flex; align-items: center; gap: 8px; margin-top: 14px; color: var(--mist); }
.fbk-helper svg { color: var(--gold); flex: 0 0 auto; }
.fbk-helper span { font: 400 13px/1.4 var(--font-body); }

/* Response cards */
.fbk-resp {
  display: flex; align-items: center; gap: 10px; margin-top: 14px;
  padding: 12px 14px; border-radius: var(--r-md);
  border: 1px solid rgba(244, 213, 141, 0.12); background: rgba(255, 255, 255, 0.025);
  font: 400 13px/1.4 var(--font-body);
}
.fbk-resp--err { color: var(--error); border-color: rgba(232, 93, 93, 0.3); }
.fbk-resp--ok { color: var(--gold-bright); }
.fbk-resp svg { flex: 0 0 auto; }

/* Action bar */
.fbk-foot {
  flex: 0 0 auto;
  padding: 14px 20px 18px;
  border-top: 1px solid rgba(244, 213, 141, 0.1);
  background: rgba(10, 15, 26, 0.5);
}
.fbk-send {
  width: 100%;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 14px; border: 0; border-radius: var(--r-pill);
  background: var(--gold); color: var(--background);
  font: 700 15px/1 var(--font-body); cursor: pointer;
  box-shadow: 0 10px 24px rgba(201, 168, 76, 0.2);
  transition: filter 0.18s var(--ease-out), transform 0.12s var(--ease-out);
}
.fbk-send:hover:not(:disabled) { filter: brightness(1.06); }
.fbk-send:active:not(:disabled) { transform: scale(0.99); }
.fbk-send:disabled { background: rgba(244, 213, 141, 0.25); color: rgba(10, 15, 26, 0.6); box-shadow: none; cursor: default; }
.fbk-foot-note { margin: 12px 0 0; text-align: center; font: 400 11px/1.4 var(--font-body); color: var(--mist); opacity: 0.85; }
/* Filter legend content — rehoused inside the Sidebar panel (the standalone
   sidebar wrapper, hamburger toggle, and header now live in Sidebar). */
.filterpanel {
  display: flex;
  flex-direction: column;
}

/* ── Gilt ornament — the page opens / closes ── */
.filters__ornament {
  display: flex;
  align-items: center;
  gap: var(--sp-md);
  padding: var(--sp-sm) var(--sp-lg) var(--sp-xs);
}
.filters__rule {
  flex: 1;
  height: 1px;
  background: rgba(244, 213, 141, 0.15);
}
.filters__star {
  font-size: var(--fs-xs);
  color: var(--gold);
  opacity: 0.4;
}

/* ── Count whisper — cartographer's margin note (Cormorant light) ── */
.filters__whisper {
  margin: 0 0 var(--sp-sm);
  text-align: center;
  font-family: var(--font-display);
  font-weight: 300;
  font-size: var(--fs-sm);
  color: var(--fg2);
  letter-spacing: 0.02em;
}

/* ── Legend grid — cartographic icon cards, 2-up ── */
.filters__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 6px;
}
.filtercard {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 12px 4px 8px;
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: var(--r-md);
  background: rgba(255, 255, 255, 0.02);
  cursor: pointer;
  overflow: hidden;
  transition: background 0.22s var(--ease-out), border-color 0.22s var(--ease-out);
}
.filtercard:hover { background: rgba(244, 213, 141, 0.05); }
.filtercard.is-on {
  background: rgba(244, 213, 141, 0.06);
  border-color: rgba(244, 213, 141, 0.18);
}

/* Radial gold wash on active cards (CSS, mirrors the app's glow PNG). */
.filtercard__glow {
  position: absolute;
  inset: -30% -30% auto -30%;
  height: 170%;
  background: radial-gradient(ellipse at 50% 28%, rgba(244, 213, 141, 0.18), transparent 62%);
  opacity: 0;
  transition: opacity 0.22s var(--ease-out);
  pointer-events: none;
}
.filtercard.is-on .filtercard__glow { opacity: 1; }

/* Cartographic illustration — gold (active) / dim grey (inactive). */
.filtercard__icon {
  width: 40px;
  height: 40px;
  object-fit: contain;
  filter: brightness(0) saturate(100%) invert(42%); /* dim grey */
  opacity: 0.7;
  transition: filter 0.22s var(--ease-out), opacity 0.22s var(--ease-out);
}
.filtercard.is-on .filtercard__icon {
  filter: brightness(0) saturate(100%) invert(78%) sepia(28%) saturate(620%) hue-rotate(2deg) brightness(96%); /* gold */
  opacity: 1;
}

/* Caption — tiny Cormorant cartographic label. */
.filtercard__label {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.02em;
  color: var(--fg3);
  text-align: center;
  line-height: 1.1;
}
.filtercard.is-on .filtercard__label { color: var(--fg2); }

/* ── Responsive ── */
@media (max-width: 1100px) {
  .filtercard__icon { width: 36px; height: 36px; }
}
@media (max-height: 720px) {
  .filtercard { padding: 9px 4px 7px; }
  .filters__ornament { padding-top: var(--sp-xs); }
}
/* LayersPanel — cartographer's overlay controls (iOS SheetLayers), tuned for
   the desktop sidebar. Understated gold radio/toggle dots, gilt ✦ dividers,
   Cormorant captions; period colour dots on the AAME rows. */

.layers {
  display: flex;
  flex-direction: column;
}

/* Gilt ✦ ornament divider */
.layers__ornament {
  display: flex;
  align-items: center;
  gap: var(--sp-md);
  padding: var(--sp-xs) var(--sp-lg);
}
.layers__rule { flex: 1; height: 1px; background: rgba(244, 213, 141, 0.15); }
.layers__star { font-size: var(--fs-xs); color: var(--gold); opacity: 0.4; }

.layers__title {
  margin: 0 0 var(--sp-sm);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-ui-heading);
  color: var(--gold);
  letter-spacing: 0.01em;
}

/* Section caption — cartographic label */
.layers__section {
  margin: var(--sp-sm) 0 var(--sp-xs);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 13px;
  color: var(--fg2);
  letter-spacing: 0.04em;
}

/* ── Basemap radio ── */
.layers__radio {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 10px var(--sp-sm);
  background: none;
  border: 1px solid transparent;
  border-radius: var(--r-md);
  cursor: pointer;
  text-align: left;
  transition: background 0.18s var(--ease-out), border-color 0.18s var(--ease-out);
}
.layers__radio:hover { background: rgba(255, 255, 255, 0.02); }
.layers__radio.is-on { background: rgba(244, 213, 141, 0.05); }
.layers__radiomark {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1.5px solid rgba(255, 255, 255, 0.18);
  border-radius: 50%;
  transition: border-color 0.18s var(--ease-out);
}
.layers__radio.is-on .layers__radiomark { border-color: var(--gold-soft); }
.layers__radiodot { width: 10px; height: 10px; border-radius: 50%; background: var(--gold-soft); }
.layers__radiolabel {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 16px;
  color: var(--fg2);
  letter-spacing: 0.02em;
}
.layers__radio.is-on .layers__radiolabel { color: var(--gold-soft); }
.layers__radiosuffix {
  font-family: var(--font-display);
  font-weight: 300;
  font-size: 13px;
  color: var(--fg3);
}

/* ── Opacity slider ── */
.layers__slider {
  padding: var(--sp-xs) var(--sp-sm) var(--sp-sm) 42px;
}
.layers__sliderlabel {
  display: block;
  margin-bottom: var(--sp-sm);
  font-family: var(--font-display);
  font-weight: 300;
  font-size: var(--fs-sm);
  color: var(--fg2);
  letter-spacing: 0.02em;
}
.layers__slider input[type='range'] {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 4px;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.08);
  outline: none;
  cursor: pointer;
}
.layers__slider input[type='range']::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: rgba(244, 213, 141, 0.18);
  border: 1.5px solid rgba(244, 213, 141, 0.5);
  box-shadow: var(--glow-gold);
}
.layers__slider input[type='range']::-moz-range-thumb {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: rgba(244, 213, 141, 0.18);
  border: 1.5px solid rgba(244, 213, 141, 0.5);
}

/* ── Overlay / AAME toggle rows ── */
.layers__toggle {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px var(--sp-sm);
  margin-bottom: 6px;
  background: rgba(255, 255, 255, 0.022);
  border: 1px solid rgba(244, 213, 141, 0.1);
  border-radius: var(--r-md);
  cursor: pointer;
  text-align: left;
  transition: background 0.22s var(--ease-out), border-color 0.22s var(--ease-out);
}
.layers__toggle:hover { background: rgba(244, 213, 141, 0.045); border-color: rgba(244, 213, 141, 0.18); }
.layers__toggle.is-on {
  background: rgba(244, 213, 141, 0.055);
  border-color: rgba(244, 213, 141, 0.2);
}
.layers__perioddot { width: 7px; height: 7px; border-radius: 50%; opacity: 0.9; flex: 0 0 7px; }
.layers__toggleinfo { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.layers__togglename {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-body);
  color: var(--fg1);
  letter-spacing: 0.01em;
}
.layers__toggle.is-on .layers__togglename { color: var(--gold-soft); }
.layers__toggledesc {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 12px;
  line-height: 1.45;
  color: rgba(237, 233, 226, 0.68);
  letter-spacing: 0.005em;
}
.layers__toggledot {
  width: 10px;
  height: 10px;
  flex: 0 0 10px;
  border-radius: 50%;
  border: 1.5px solid rgba(255, 255, 255, 0.18);
  transition: background 0.22s var(--ease-out), border-color 0.22s var(--ease-out);
}
.layers__toggle.is-on .layers__toggledot {
  background: var(--gold-soft);
  border-color: var(--gold-soft);
}

/* "Coming soon" overlay (e.g. LiDAR) — dimmed, non-interactive, with a quiet badge. */
.layers__toggle.is-soon { opacity: 0.5; cursor: default; }
.layers__toggle.is-soon:hover { background: rgba(255, 255, 255, 0.022); border-color: rgba(244, 213, 141, 0.1); }
.layers__soon {
  flex: 0 0 auto;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 8px;
  letter-spacing: var(--tr-label);
  text-transform: uppercase;
  color: var(--gold-dim);
  border: 1px solid var(--rule);
  border-radius: var(--r-sm);
  padding: 2px 5px;
}

.layers__disclaimer {
  margin: 0 0 var(--sp-sm);
  padding: 0 var(--sp-sm);
  font-family: var(--font-display);
  font-weight: 400;
  font-style: italic;
  font-size: 13px;
  line-height: 1.5;
  color: rgba(237, 233, 226, 0.56);
  letter-spacing: 0.01em;
}
/* SidePanels — shared styling for the sidebar detail pages (Style, Bookmarks,
   History, Profile, About). Faithful to the iOS sheets: Cormorant headings,
   gilt ✦ ornaments, soft-gold (#f4d58d) accents, understated rows. */

.sp { display: flex; flex-direction: column; }

/* ── Gilt ✦ ornament ── */
.sp-ornament {
  display: flex;
  align-items: center;
  gap: var(--sp-md);
  padding: var(--sp-xs) var(--sp-lg);
}
.sp-ornament__rule { flex: 1; height: 1px; background: rgba(244, 213, 141, 0.15); }
.sp-ornament__star { font-size: var(--fs-xs); color: var(--gold); opacity: 0.4; }

/* ── Section caption ── */
.sp-section {
  margin: var(--sp-sm) 0 var(--sp-xs);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 13px;
  color: var(--fg2);
  letter-spacing: 0.04em;
}

/* ── Empty state (Bookmarks / History) ── */
.sp-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: var(--sp-xl) var(--sp-md);
  gap: var(--sp-xs);
}
.sp-empty__star { font-size: 18px; color: var(--gold); opacity: 0.5; margin-bottom: var(--sp-xs); }
.sp-empty__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-lg);
  color: var(--fg2);
  letter-spacing: 0.01em;
}
.sp-empty__body {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 300;
  font-size: var(--fs-sm);
  line-height: 1.45;
  color: var(--fg3);
  max-width: 230px;
}

/* ── Narrator cards (Style) ── */
.sp-narrators { display: flex; flex-direction: column; gap: var(--sp-sm); }
.sp-narrator {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--sp-sm);
  padding: var(--sp-md) var(--sp-sm) var(--sp-md) 4px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(244, 213, 141, 0.1);
  border-radius: var(--r-lg);
  cursor: pointer;
  text-align: left;
  transition: background 0.2s var(--ease-out), border-color 0.2s var(--ease-out);
}
.sp-narrator:hover { background: rgba(244, 213, 141, 0.045); }
.sp-narrator.is-on {
  background: rgba(244, 213, 141, 0.06);
  border-color: rgba(244, 213, 141, 0.25);
}

/* Medallion — a centred area; the illustration is contained (never cropped). */
.sp-narrator__medallion {
  flex: 0 0 76px;
  width: 76px;
  height: 76px;
  display: flex;
  align-items: center;
  justify-content: center;
}
/* Tinted like the iOS tintColor: dim grey when resting, gold when chosen
   (same recolour technique as the category icons — normalises any source). */
.sp-narrator__portrait {
  object-fit: contain;
  filter: brightness(0) saturate(100%) invert(48%);
  opacity: 0.75;
  transition: filter 0.22s var(--ease-out), opacity 0.22s var(--ease-out);
}
.sp-narrator.is-on .sp-narrator__portrait {
  filter: brightness(0) saturate(100%) invert(78%) sepia(28%) saturate(620%) hue-rotate(2deg) brightness(96%);
  opacity: 1;
}

.sp-narrator__text { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.sp-narrator__name {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 18px;
  color: var(--moonlight);
  letter-spacing: 0.01em;
}
.sp-narrator.is-on .sp-narrator__name { color: var(--gold-soft); }
.sp-narrator__desc {
  /* DM Sans for small descriptive copy — Cormorant (serif display) is muddy at
     this size. Brighter than mist so it's comfortably readable on the dark card. */
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 12.5px;
  line-height: 1.55;
  letter-spacing: 0.005em;
  color: rgba(237, 233, 226, 0.64);
}
.sp-narrator.is-on .sp-narrator__desc { color: rgba(237, 233, 226, 0.9); }
.sp-narrator__check {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  color: var(--gold-soft);
  background: rgba(244, 213, 141, 0.12);
  border-radius: 50%;
}

/* ── Bookmark list ── */
.sp-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.sp-bookmark {
  display: flex;
  align-items: center;
  border-bottom: 1px solid rgba(244, 213, 141, 0.08);
}
.sp-bookmark:last-child { border-bottom: none; }
.sp-bookmark__main {
  flex: 1;
  display: flex;
  align-items: center;
  gap: var(--sp-sm);
  padding: 10px var(--sp-xs);
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  min-width: 0;
}
.sp-bookmark__main:hover .sp-bookmark__name { color: var(--gold-soft); }
.sp-bookmark__icon {
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  object-fit: contain;
  filter: brightness(0) saturate(100%) invert(78%) sepia(28%) saturate(620%) hue-rotate(2deg) brightness(96%);
  opacity: 0.9;
}
.sp-bookmark__text { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.sp-bookmark__name {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-lg);
  color: var(--moonlight);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: color 0.15s var(--ease-out);
}
.sp-bookmark__cat {
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: var(--tr-cap);
  color: var(--fg3);
}
.sp-bookmark__remove {
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  border-radius: var(--r-sm);
  color: var(--gold-soft);
  cursor: pointer;
  transition: background 0.15s var(--ease-out), color 0.15s var(--ease-out);
}
.sp-bookmark__remove:hover { background: rgba(244, 213, 141, 0.08); color: var(--gold-bright); }

/* ── Profile: bookplate name ── */
.sp-bookplate { display: flex; flex-direction: column; align-items: center; gap: var(--sp-xs); padding: var(--sp-sm) 0; }
.sp-bookplate__input {
  width: 100%;
  text-align: center;
  padding: 11px var(--sp-md);
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(244, 213, 141, 0.12);
  border-radius: var(--r-md);
  color: var(--moonlight);
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-ui-heading);
  letter-spacing: 0.01em;
  outline: none;
  transition: border-color 0.2s var(--ease-out), box-shadow 0.2s var(--ease-out);
}
.sp-bookplate__input::placeholder { color: var(--fg3); }
.sp-bookplate__input:focus { border-color: var(--rule-strong); box-shadow: var(--glow-gold); }
.sp-bookplate__help {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 300;
  font-style: italic;
  font-size: var(--fs-sm);
  color: var(--fg3);
}

/* ── Profile: interests pills ── */
.sp-interests { display: flex; flex-wrap: wrap; gap: 6px; }
.sp-interest {
  padding: 7px 13px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(244, 213, 141, 0.1);
  border-radius: var(--r-pill);
  color: var(--fg2);
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 13.5px;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: background 0.18s var(--ease-out), border-color 0.18s var(--ease-out), color 0.18s var(--ease-out);
}
.sp-interest:hover { background: rgba(244, 213, 141, 0.05); border-color: rgba(244, 213, 141, 0.2); }
.sp-interest.is-on {
  background: rgba(244, 213, 141, 0.08);
  border-color: rgba(244, 213, 141, 0.28);
  color: var(--gold-soft);
}

/* ── Profile: narrator card (→ Style) ── */
.sp-narratorcard {
  display: flex;
  align-items: center;
  gap: var(--sp-sm);
  width: 100%;
  padding: 10px var(--sp-sm);
  background: rgba(244, 213, 141, 0.04);
  border: 1px solid rgba(244, 213, 141, 0.13);
  border-radius: var(--r-md);
  cursor: pointer;
  text-align: left;
  transition: background 0.18s var(--ease-out);
}
.sp-narratorcard:hover { background: rgba(244, 213, 141, 0.07); }
.sp-narratorcard__portrait {
  width: 52px;
  height: 52px;
  flex: 0 0 52px;
  object-fit: contain; /* contained illustration, never cropped/stretched */
  filter: brightness(0) saturate(100%) invert(78%) sepia(28%) saturate(620%) hue-rotate(2deg) brightness(96%);
}
.sp-narratorcard__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.sp-narratorcard__name { font-family: var(--font-display); font-weight: 600; font-size: var(--fs-lg); color: var(--gold-soft); }
.sp-narratorcard__desc {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 12px;
  line-height: 1.5;
  color: rgba(237, 233, 226, 0.6);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.sp-narratorcard__chev { flex: 0 0 auto; font-size: 22px; color: var(--gold-soft); line-height: 1; }

/* ── Profile: AI engine segmented control ── */
.sp-segment {
  display: flex;
  gap: 4px;
  padding: 4px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(244, 213, 141, 0.1);
  border-radius: var(--r-md);
}
.sp-segment__opt {
  flex: 1;
  padding: 8px;
  background: none;
  border: none;
  border-radius: var(--r-sm);
  color: var(--fg2);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-body);
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: background 0.18s var(--ease-out), color 0.18s var(--ease-out);
}
.sp-segment__opt.is-on { background: rgba(244, 213, 141, 0.12); color: var(--gold-soft); }
.sp-segment__desc {
  margin: var(--sp-xs) 0 0;
  font-family: var(--font-display);
  font-weight: 300;
  font-style: italic;
  font-size: var(--fs-sm);
  color: var(--fg3);
  letter-spacing: 0.01em;
}

/* ── Profile: reset + guest note ── */
.sp-reset {
  width: 100%;
  padding: 10px;
  background: none;
  border: 1px solid rgba(232, 93, 93, 0.25);
  border-radius: var(--r-md);
  color: var(--error);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-body);
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: background 0.15s var(--ease-out);
}
.sp-reset:hover { background: rgba(232, 93, 93, 0.08); }
.sp-guestnote {
  margin: var(--sp-sm) 0 0;
  text-align: center;
  font-family: var(--font-display);
  font-weight: 300;
  font-style: italic;
  font-size: var(--fs-sm);
  color: var(--fg3);
}

/* ── About ── */
.sp-about__hero { display: flex; flex-direction: column; align-items: center; text-align: center; padding: var(--sp-sm) 0 var(--sp-md); }
.sp-about__compass { font-size: 40px; filter: drop-shadow(0 0 16px rgba(244, 213, 141, 0.3)); }
.sp-about__title {
  margin: var(--sp-sm) 0 4px;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 38px;
  line-height: 1;
  color: var(--gold);
}
.sp-about__subtitle {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--fg2);
  letter-spacing: 0.22em;
}
.sp-about__mission {
  margin: 0 0 var(--sp-lg);
  text-align: center;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-lg);
  line-height: 1.5;
  color: var(--fg2);
  letter-spacing: 0.01em;
}
.sp-about__sources { list-style: none; margin: 0 0 var(--sp-md); padding: 0; }
.sp-about__source {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--sp-sm);
  padding: 8px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.04);
}
.sp-about__sourcename { font-family: var(--font-display); font-weight: 500; font-size: var(--fs-body); color: var(--moonlight); }
.sp-about__sourcelicence { font-family: var(--font-display); font-weight: 300; font-size: var(--fs-xs); color: var(--fg3); text-align: right; flex: 0 0 auto; }
.sp-about__body {
  margin: 0 0 var(--sp-md);
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: 1.5;
  color: var(--fg2);
}
.sp-about__link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 11px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.04);
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-lg);
  color: var(--gold);
  text-decoration: none;
}
.sp-about__link:hover { color: var(--gold-bright); }
.sp-about__version {
  margin: var(--sp-md) 0 0;
  text-align: center;
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  color: var(--fg3);
}

/* ── Account (Profile tab) ── */
.sp-account {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-bottom: var(--sp-sm);
}
.sp-account__name {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-lg);
  color: var(--gold);
}
.sp-account .sp-reset { margin-top: var(--sp-xs); }
/* Sidebar — master–detail. Two panels of Waystone "glass": navy-black ground,
   gold hairline edges, a specular top highlight and a faint grain — vibrant
   material, not a heavy frost. Gold returns as warmth (edges, the search lens,
   accents) over the navy; the blue-black + gold pairing is the signature. */

.sidebar {
  position: absolute;
  top: var(--sp-md);
  left: var(--sp-md);
  bottom: var(--sp-md);
  /* Above the Ancient Ground viewer (90) so its detail tabs stay usable while
     the viewer is open (below the login modal at 100). The home panel never
     overlaps the centred viewer; only an open detail tab briefly reaches into
     the viewer's left margin. */
  z-index: 95;
  display: flex;
  align-items: stretch;
  gap: var(--sp-sm);
  pointer-events: none;
}
.sidebar > * { pointer-events: auto; }

/* ── Panel shells — Waystone glass (navy ground, gold edge, grain) ── */
.sidepanel {
  position: relative;
  display: flex;
  flex-direction: column;
  max-height: 100%;
  padding: var(--sp-md);
  background: rgba(10, 14, 24, 0.74);
  border: 1px solid rgba(244, 213, 141, 0.12);
  border-radius: var(--r-lg);
  box-shadow:
    0 12px 40px rgba(0, 0, 0, 0.46),
    inset 0 1px 0 rgba(255, 255, 255, 0.07);
  backdrop-filter: blur(20px) saturate(125%);
  -webkit-backdrop-filter: blur(20px) saturate(125%);
  overflow: hidden;
}
/* Faint film grain — keeps the translucent surface from banding (premium feel) */
.sidepanel::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  opacity: 0.04;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.sidepanel > * { position: relative; z-index: 1; }

.sidepanel--home { width: 322px; flex: 0 0 322px; }
.sidepanel--detail {
  width: 308px;
  flex: 0 0 308px;
  animation: detail-in 0.28s var(--ease-out);
}
@keyframes detail-in {
  from { opacity: 0; transform: translateX(-12px); }
  to   { opacity: 1; transform: translateX(0); }
}

/* Wordmark — gold "stone" with a slow luminance shimmer (book in the hands) */
.sidepanel__brand {
  font-family: var(--font-display);
  font-weight: 300;
  font-size: 26px;
  line-height: 1;
  letter-spacing: 0.015em;
  color: var(--fg1);
  user-select: none;
}
.sidepanel__brand span {
  color: var(--gold);
  animation: ws-shimmer 3.6s ease-in-out infinite alternate;
}
@keyframes ws-shimmer {
  from { filter: brightness(1); }
  to   { filter: brightness(1.18); }
}
.sidepanel__rule {
  width: 34px;
  height: 1px;
  background: rgba(244, 213, 141, 0.4);
  margin: 10px 0 var(--sp-md);
}

.sidepanel__body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 0;
  overflow-y: auto;
}

/* ── Home view ── */
.sidehome__row { display: flex; gap: var(--sp-sm); }

/* Action pills — quiet navy-glass fill, gold hairline edge */
.sidehome__pill {
  position: relative;
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(244, 213, 141, 0.1);
  border-radius: var(--r-pill);
  padding: 9px 10px;
  color: var(--fg1);
  cursor: pointer;
  overflow: hidden;
  transition: background 0.18s var(--ease-out), border-color 0.18s var(--ease-out), color 0.18s var(--ease-out), box-shadow 0.22s var(--ease-out);
}
.sidehome__pill:not(.is-soon):hover {
  background: rgba(244, 213, 141, 0.05);
  border-color: rgba(244, 213, 141, 0.45);
  box-shadow: inset 0 0 11px rgba(244, 213, 141, 0.2);
}
.sidehome__pill:not(.is-soon):active { transform: scale(0.985); }
.sidehome__pill svg { flex: 0 0 auto; color: var(--gold-soft); opacity: 0.85; }
.sidehome__dot {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--gold-soft);
  flex: 0 0 auto;
}

/* Active (expanded) — warm gold fill + edge */
.sidehome__pill.is-active,
.sidehome__btn.is-active {
  background: rgba(244, 213, 141, 0.1);
  border-color: rgba(244, 213, 141, 0.34);
  color: var(--gold-soft);
}

/* Wispy magical glow — soft gold blobs that drift, swell and swirl within the
   fill. Only appears on hover (invisible at rest) and stays clipped inside the
   pill, so nothing spills outside. The outline glow on hover is handled by the
   contained inset box-shadow on the :hover rules above. Content is lifted above
   the glow so labels stay crisp. */
/* The magical-energy hover glow now lives in the reusable `.ws-wisp` utility
   (App.css), applied to these buttons via that class. The pills keep their own
   contained outline glow on hover (the inset box-shadow on the :hover rules
   above); the fluid gold churn comes from .ws-wisp. */

/* Ask Waystone hero card */
.sidehome__ask {
  position: relative;
  width: 100%;
  display: flex;
  align-items: center;
  gap: var(--sp-md);
  padding: 14px var(--sp-md);
  background: rgba(244, 213, 141, 0.05);
  border: 1px solid rgba(244, 213, 141, 0.16);
  border-radius: var(--r-lg);
  text-align: left;
  cursor: pointer;
  overflow: hidden;
}
.sidehome__ask::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(120% 90% at 14% 0%, rgba(244, 213, 141, 0.09), transparent 58%);
  pointer-events: none;
}
.sidehome__ask svg { color: var(--gold-soft); flex: 0 0 auto; opacity: 0.92; }
.sidehome__asktext { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sidehome__asktitle {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 17px;
  color: var(--gold-soft);
  letter-spacing: 0.01em;
}
.sidehome__asksub {
  font-family: var(--font-body);
  font-size: 12px;
  color: rgba(237, 233, 226, 0.6);
  letter-spacing: 0.005em;
}

/* Secondary buttons — Profile / About */
.sidehome__btn {
  position: relative;
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(244, 213, 141, 0.1);
  border-radius: var(--r-pill);
  padding: 9px 12px;
  color: var(--fg1);
  cursor: pointer;
  overflow: hidden;
  transition: background 0.18s var(--ease-out), border-color 0.18s var(--ease-out), color 0.18s var(--ease-out), box-shadow 0.22s var(--ease-out);
}
.sidehome__btn:not(.is-soon):hover {
  background: rgba(244, 213, 141, 0.05);
  border-color: rgba(244, 213, 141, 0.45);
  box-shadow: inset 0 0 11px rgba(244, 213, 141, 0.2);
}
.sidehome__btn:not(.is-soon):active { transform: scale(0.985); }

/* Shared pill / button label — Cormorant medium */
.sidehome__label {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 15px;
  letter-spacing: 0.01em;
  white-space: nowrap;
}

/* "Soon" */
.is-soon { opacity: 0.45; cursor: default; }
.soon {
  position: absolute;
  top: 6px;
  right: 9px;
  font-family: var(--font-body);
  font-size: 8.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--fg3);
}

/* ── Cycling tips — marginalia pinned to the panel's foot (the dead space) ── */
.sidehome__tips {
  margin-top: auto;                  /* absorb the dead space; sit at the foot */
  flex: 0 0 auto;
  padding-top: var(--sp-md);
  border-top: 1px solid var(--rule); /* gilt hairline — the page's lower edge */
  text-align: center;
  cursor: pointer;
  user-select: none;
}
.sidehome__tips-head {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-sm);
  margin-bottom: var(--sp-sm);
}
.sidehome__tips-mark {
  font-size: 11px;
  line-height: 1;
  color: var(--gold-soft);
  opacity: 0.55;
  transition: opacity 0.2s var(--ease-out);
}
.sidehome__tips-kicker {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: var(--tr-label);
  color: var(--gold-dim);
}
.sidehome__tips-text {
  margin: 0;
  min-height: 57px;                  /* ~3 lines — no jump as tip length varies */
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 15px;
  line-height: 1.32;
  letter-spacing: var(--tr-display);
  color: var(--fg2);
  transition: opacity 260ms var(--ease-out), color 0.2s var(--ease-out);
}
.sidehome__tips-text.is-in  { opacity: 1; }
.sidehome__tips-text.is-out { opacity: 0; }
.sidehome__tips:hover .sidehome__tips-text { color: var(--fg1); }
.sidehome__tips:hover .sidehome__tips-mark { opacity: 0.85; }

@media (prefers-reduced-motion: reduce) {
  .sidehome__tips-text { transition: color 0.2s var(--ease-out); }
}

/* ── Detail header ── */
.sidepanel__subhead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-sm);
  padding-bottom: var(--sp-sm);
  margin-bottom: var(--sp-sm);
  border-bottom: 1px solid rgba(244, 213, 141, 0.1);
}
.sidepanel__subtitle {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 21px;
  color: var(--gold);
  letter-spacing: 0.01em;
}
.sidepanel__subactions { display: flex; align-items: center; gap: var(--sp-sm); }
.sidepanel__showall {
  background: none;
  border: none;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 12px;
  color: var(--gold-soft);
  letter-spacing: 0.02em;
  cursor: pointer;
}
.sidepanel__showall:hover { color: var(--gold-bright); }
.sidepanel__close {
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  border-radius: var(--r-sm);
  color: var(--fg3);
  font-size: 19px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.15s var(--ease-out), color 0.15s var(--ease-out);
}
.sidepanel__close:hover { background: rgba(244, 213, 141, 0.08); color: var(--gold-soft); }

/* ── Responsive ── */
@media (max-width: 1100px) {
  .sidepanel--home { width: 290px; flex-basis: 290px; }
  .sidepanel--detail { width: 280px; flex-basis: 280px; }
}
@media (prefers-reduced-motion: reduce) {
  .sidepanel--detail { animation: none; }
  .sidepanel__brand span { animation: none; }
}
/* SearchDock — floating bottom-centre search over the map. Two distinct glass
   treatments: the BAR is light transparent frosted glass with the gold lens rim;
   the RESULTS pop-up is a separate dark glass card floating above it. */

.searchdock {
  position: absolute;
  bottom: var(--sp-lg);
  left: 50%;
  transform: translateX(-50%);
  z-index: 18;
  display: flex;
  flex-direction: column;
  width: 420px;
  max-width: calc(100vw - 2 * var(--sp-lg));
  transition: width 0.26s var(--ease-out);
}
.searchdock.is-active { width: 500px; }

/* ── The bar — genuinely transparent frosted glass; the gold rim is a masked
   pseudo-element so it doesn't fill the interior. ── */
.searchdock__bar {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  height: 52px;
  padding: 0 20px;
  border-radius: var(--r-pill);
  background: rgba(221, 233, 255, 0.11);
  box-shadow:
    0 10px 30px rgba(0, 0, 0, 0.36),
    inset 0 1px 0 rgba(255, 255, 255, 0.16);
  backdrop-filter: blur(12px) saturate(130%);
  -webkit-backdrop-filter: blur(12px) saturate(130%);
  overflow: hidden;
  transition: box-shadow 0.22s var(--ease-out);
}
/* Gold gradient rim — only the 1.5px edge (interior masked out) */
.searchdock__bar::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1.5px;
  background: linear-gradient(180deg, var(--gold-soft), var(--gold-soft-dark));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  pointer-events: none;
}
.searchdock__bar::after {
  /* lens highlight — light catching the top-left of the glass */
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(150deg, rgba(255, 255, 255, 0.14), transparent 46%);
  pointer-events: none;
}
.searchdock.is-active .searchdock__bar,
.searchdock__bar:hover {
  box-shadow:
    0 10px 30px rgba(0, 0, 0, 0.36),
    inset 0 1px 0 rgba(255, 255, 255, 0.16),
    0 0 22px rgba(244, 213, 141, 0.16);
}

.searchdock__searchicon { position: relative; z-index: 1; display: flex; color: var(--gold-soft); flex: 0 0 auto; }
.searchdock__input {
  position: relative;
  z-index: 1;
  flex: 1;
  min-width: 0;
  height: 100%;
  border: none;
  outline: none;
  background: none;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 18px;
  letter-spacing: 0.02em;
  color: var(--gold-soft-light);
}
.searchdock__input::placeholder { color: var(--moonlight); opacity: 0.6; }

/* ── Results pop-up — separate dark glass card, floating above the bar ── */
.searchdock__results {
  margin: 0 0 10px;
  padding: 6px;
  list-style: none;
  max-height: 46vh;
  overflow-y: auto;
  background: rgba(10, 14, 24, 0.86);
  border: 1px solid rgba(244, 213, 141, 0.13);
  border-radius: var(--r-lg);
  box-shadow: 0 14px 44px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(22px) saturate(120%);
  -webkit-backdrop-filter: blur(22px) saturate(120%);
  animation: dock-results-in 0.2s var(--ease-out);
}
@keyframes dock-results-in {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

.searchdock__row {
  display: flex;
  align-items: center;
  gap: var(--sp-sm);
  width: 100%;
  padding: 9px 12px;
  background: none;
  border: none;
  border-radius: var(--r-md);
  cursor: pointer;
  text-align: left;
  transition: background 0.15s var(--ease-out);
}
.searchdock__row:hover { background: rgba(244, 213, 141, 0.08); }
.searchdock__icon {
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
  display: flex;
  align-items: center;
  justify-content: center;
}
/* Category illustration — gold-tinted, contained (replaces the old emoji) */
.searchdock__icon--cat {
  object-fit: contain;
  filter: brightness(0) saturate(100%) invert(78%) sepia(28%) saturate(620%) hue-rotate(2deg) brightness(96%);
  opacity: 0.92;
}
.searchdock__icon--glyph { color: var(--fg2); }
.searchdock__text { display: flex; flex-direction: column; min-width: 0; }
.searchdock__name {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 17px;
  color: var(--moonlight);
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.searchdock__meta {
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: var(--tr-cap);
  color: var(--fg3);
  margin-top: 1px;
}

@media (prefers-reduced-motion: reduce) {
  .searchdock { transition: none; }
  .searchdock__results { animation: none; }
}
/* RightDock — reserved right-hand column for chat / narration (dormant in v1).
   A glass column docked to the right edge, mirroring the left sidebar's
   materiality so the future conversational surface lands consistent. The map
   sits behind; this only occupies space once the feature is built and active. */

.rightdock {
  position: absolute;
  top: var(--sp-md);
  right: var(--sp-md);
  bottom: var(--sp-md);
  z-index: 16;
  width: 360px;
  max-width: 34vw;
  display: flex;
  flex-direction: column;
  background: var(--glass);
  border: 1px solid var(--surface-border);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-card), var(--inner-top-dark);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  overflow: hidden;
}

@media (max-width: 1100px) {
  .rightdock { width: 320px; }
}
/* Pin-anchored callout — faithful to the iOS POICallout. Compact, content-height
   card on solid --void with a pointer tail, positioned above the pin. */

.callout {
  position: absolute;
  transform: translate(-50%, calc(-100% - 16px));
  width: 256px;
  z-index: 20;
  pointer-events: none; /* wrapper transparent; card re-enables */
  animation: callout-in 200ms var(--ease-out);
}
.callout__card,
.callout__tail { pointer-events: auto; }

@keyframes callout-in {
  from { opacity: 0; transform: translate(-50%, calc(-100% - 6px)); }
  to { opacity: 1; transform: translate(-50%, calc(-100% - 16px)); }
}

.callout__card {
  position: relative;
  background: var(--void); /* solid #0B0D12, as the app */
  border: 1px solid rgba(201, 168, 76, 0.18);
  border-radius: var(--r-md);
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.45);
  overflow: hidden;
}

.callout__close {
  position: absolute;
  top: 7px;
  right: 7px;
  width: 26px;
  height: 26px;
  border: none;
  border-radius: 50%;
  background: rgba(11, 13, 18, 0.7);
  color: rgba(201, 168, 76, 0.7);
  font-size: 12px;
  cursor: pointer;
  z-index: 2;
  transition: background 0.2s var(--ease-out), color 0.2s var(--ease-out);
}
.callout__close:hover { background: rgba(244, 213, 141, 0.18); color: var(--gold); }

.callout__plate {
  height: 88px;
  background: #0d1220; /* design-skill image skeleton */
}
.callout__plate[data-has-image='no'] { display: none; }
.callout__plate img { width: 100%; height: 100%; object-fit: cover; display: block; }

.callout__entry {
  display: flex;
  align-items: center;
  padding: 10px 12px 9px;
}
.callout__vignette {
  width: 42px;
  height: 42px;
  margin-right: 10px;
  flex: 0 0 42px;
  object-fit: contain; /* never stretch non-square category art */
  opacity: 0.55;
  filter: brightness(0) saturate(100%) invert(72%) sepia(38%) saturate(518%) hue-rotate(3deg) brightness(93%) contrast(88%);
}
.callout__body { flex: 1; min-width: 0; }

/* Title — Cormorant (display). The dominant typeface. */
.callout__title {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 18px;
  line-height: 1.2;
  color: var(--gold);
  letter-spacing: 0.01em;
}
/* Meta line — the small DM Sans caps (one of the few DM Sans uses). */
.callout__meta {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 9px;
  letter-spacing: var(--tr-label);
  text-transform: uppercase;
  color: var(--mist);
  margin-top: 3px;
}
/* Distance + compass — DM Sans, faithful to the iOS callout. */
.callout__distance {
  font-family: var(--font-body);
  font-size: 10px;
  color: var(--mist);
  margin-top: 2px;
}

/* Bookmark — inline at the right of the entry (iOS placement). Inactive in v1. */
.callout__bookmark {
  width: 30px;
  height: 30px;
  margin-left: 4px;
  flex: 0 0 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  border-radius: 50%;
  background: none;
  color: rgba(201, 168, 76, 0.5);
  cursor: pointer;
  transition: background 0.15s var(--ease-out), color 0.15s var(--ease-out);
}
.callout__bookmark:hover { background: rgba(244, 213, 141, 0.1); color: var(--gold-soft); }
.callout__bookmark.is-on { color: var(--gold-soft); }

/* Footer action bar — Explore (+ View Ancient Ground when eligible). Faithful
   to the iOS callout's footer; destinations are out of v1, so present-but-quiet. */
.callout__footer {
  display: flex;
  border-top: 1px solid rgba(201, 168, 76, 0.1);
}
.callout__action {
  flex: 1;
  position: relative;
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 7px;
  padding: 11px 12px 10px;
  border: none;
  font-family: var(--font-display); /* Cormorant — like the app's Explore CTA */
  font-weight: 500;
  font-size: 15px;
  letter-spacing: 0.04em;
  color: var(--gold);
  background: rgba(201, 168, 76, 0.06);
  cursor: pointer;
  transition: background 0.15s var(--ease-out), color 0.15s var(--ease-out);
}
.callout__action:hover { background: rgba(201, 168, 76, 0.13); color: var(--gold-bright); }
.callout__action-arr { font-size: 18px; font-weight: 400; line-height: 1; transform: translateY(1px); }
/* The "View Ancient Ground" variant — the app's blue treatment. */
.callout__action--ag {
  color: #8abfdf;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 10px;
  letter-spacing: var(--tr-cap);
  text-transform: uppercase;
  background: rgba(74, 158, 204, 0.15);
  border-left: 1px solid rgba(201, 168, 76, 0.1);
}
.callout__action--ag:hover { background: rgba(74, 158, 204, 0.26); color: #a8d4ee; }
/* Quiet "coming soon" marker — small, muted, unobtrusive. */
.callout__soon {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 7px;
  letter-spacing: var(--tr-label);
  text-transform: uppercase;
  color: var(--fg3);
  align-self: center;
  border: 1px solid var(--rule);
  border-radius: var(--r-sm);
  padding: 1px 4px;
}

/* Pointer tail — points down at the pin. */
.callout__tail {
  width: 0;
  height: 0;
  margin: 0 auto;
  border-left: 8px solid transparent;
  border-right: 8px solid transparent;
  border-top: 10px solid var(--void);
  filter: drop-shadow(0 1px 0 rgba(201, 168, 76, 0.12));
}
/* OverlayTooltip — AAME polygon metadata card. Top-centre glass card with a
   period-coloured edge accent, gold border + soft glow. Interactive (so the
   record link works); auto-dismiss pauses on hover. */

.overlaytip {
  position: absolute;
  top: var(--sp-lg);
  left: 50%;
  /* Base transform matches the animation's end state so the resting card stays
     centred — without this it jumps sideways when the animation fill reverts. */
  transform: translateX(-50%);
  z-index: 30;
  width: 300px;
  max-width: calc(100vw - 2 * var(--sp-md));
  padding: 12px 14px 13px 18px;
  background: rgba(10, 15, 26, 0.9);
  border: 1px solid rgba(200, 160, 80, 0.28);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card), var(--inner-top-dark), 0 0 22px rgba(201, 168, 76, 0.14);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  overflow: hidden;
  animation: overlaytip-in 0.22s var(--ease-out);
}
@keyframes overlaytip-in {
  from { opacity: 0; transform: translate(-50%, -8px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}

/* Period-coloured edge accent */
.overlaytip__accent {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 3px;
  background: var(--period, var(--gold));
  opacity: 0.9;
}

.overlaytip__close {
  position: absolute;
  top: 6px;
  right: 8px;
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  border-radius: var(--r-sm);
  color: var(--fg3);
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.15s var(--ease-out), color 0.15s var(--ease-out);
}
.overlaytip__close:hover { background: rgba(244, 213, 141, 0.1); color: var(--gold); }

/* ── Header ── */
.overlaytip__head { padding-right: 20px; }
.overlaytip__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 19px;
  line-height: 1.15;
  letter-spacing: 0.01em;
  color: var(--moonlight);
}

/* ── Details ── */
.overlaytip__details {
  margin: 10px 0 0;
  padding-top: 9px;
  border-top: 1px solid rgba(244, 213, 141, 0.08);
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.overlaytip__detail {
  display: flex;
  align-items: baseline;
  gap: var(--sp-sm);
}
.overlaytip__detail dt {
  flex: 0 0 58px;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: var(--tr-cap);
  color: var(--fg3);
  padding-top: 2px;
}
.overlaytip__detail dd {
  margin: 0;
  flex: 1;
  min-width: 0;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: 1.3;
  color: var(--fg2);
}
/* Reference-style data (area, source) in mono — precision contexts (brand). */
.overlaytip__detail--mono dd {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--fg2);
  word-break: break-word;
}
/* Period value tinted to its layer colour — ties to the edge accent, no kicker. */
.overlaytip__detail--period dd {
  color: var(--period, var(--gold));
  font-weight: 500;
}

@media (prefers-reduced-motion: reduce) {
  .overlaytip { animation: none; }
}
/* NarrationPanel — right-hand reading window + editorial reading surface.
   Palette mirrors the iOS SheetChat READING_SURFACE (warm parchment greys on
   the dark glass), not the cooler app chrome. */

.np-panel {
  --np-text: #EDE9E2;
  --np-text-2: #9A9080;
  --np-text-3: #6A6459;
  --np-gold: #C9A84C;
  --np-gold-muted: rgba(201, 168, 76, 0.35);

  position: absolute;
  top: var(--sp-md);
  right: var(--sp-md);
  bottom: var(--sp-md);
  z-index: 22; /* above the POI callout (20) and docks (16) */
  width: 520px;
  max-width: 46vw;
  display: flex;
  flex-direction: column;
  background: var(--glass);
  border: 1px solid var(--surface-border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-modal), var(--inner-top-dark);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  overflow: hidden;

  /* Slide-in: parked off the right edge, eased in when open. Always mounted so
     both directions animate. */
  transform: translateX(calc(100% + var(--sp-lg)));
  opacity: 0;
  pointer-events: none;
  transition: transform 0.46s var(--ease-out), opacity 0.36s var(--ease-out);
}
.np-panel.is-open {
  transform: translateX(0);
  opacity: 1;
  pointer-events: auto;
}

@media (max-width: 1100px) {
  .np-panel { width: 440px; max-width: 80vw; }
}
@media (prefers-reduced-motion: reduce) {
  .np-panel { transition: opacity 0.2s linear; transform: none; }
  .np-panel:not(.is-open) { opacity: 0; pointer-events: none; }
}

/* ── Header ── */
.np-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--sp-sm) var(--sp-md);
  border-bottom: 1px solid rgba(201, 168, 76, 0.08);
  flex: 0 0 auto;
}
.np-header-eyebrow {
  font-family: var(--font-body);
  font-size: var(--fs-label);
  letter-spacing: var(--tr-label);
  text-transform: uppercase;
  color: var(--np-text-3);
}
.np-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
/* Shown only when the Ancient Ground viewer was closed but its narration is
   still open — a one-tap way back into the 3D terrain. */
.np-reopen-ag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 11px;
  border-radius: var(--r-pill);
  border: 1px solid rgba(201, 168, 76, 0.32);
  background: rgba(201, 168, 76, 0.08);
  color: var(--np-gold);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: var(--fs-xs);
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: background 0.2s var(--ease-out), border-color 0.2s var(--ease-out);
}
.np-reopen-ag:hover {
  background: rgba(201, 168, 76, 0.16);
  border-color: rgba(201, 168, 76, 0.5);
}
.np-close {
  appearance: none;
  border: none;
  background: transparent;
  color: var(--np-gold);
  font-size: 15px;
  line-height: 1;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  cursor: pointer;
  transition: background 0.2s var(--ease-out);
}
.np-close:hover { background: rgba(201, 168, 76, 0.12); }

/* ── Body (scroll viewport + floating header overlay) ── */
.np-body {
  position: relative;
  flex: 1 1 auto;
  overflow: hidden;
}
.np-scroll {
  position: absolute;
  inset: 0;
  overflow-y: auto;
  padding: 16px var(--sp-lg) var(--sp-md);
  scrollbar-width: thin;
  scrollbar-color: rgba(201, 168, 76, 0.3) transparent;
}
.np-scroll::-webkit-scrollbar { width: 8px; }
.np-scroll::-webkit-scrollbar-thumb {
  background: rgba(201, 168, 76, 0.22);
  border-radius: 4px;
}

/* ── Chapter title page (in-flow) ── */
.np-chapter {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding-top: 24px;
}
/* In-flow name reserves the title's vertical space; the visible title is the
   floating overlay (so it can pin on scroll). */
.np-ch-name {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 26px;
  line-height: 1.15;
  letter-spacing: 0.5px;
  color: var(--np-gold);
  opacity: 0;
}
.np-ch-meta {
  display: flex;
  flex-direction: column;
  align-items: center;
  will-change: opacity, transform;
}
/* Gold-tinted splash engraving — alpha silhouette filled gold (mirrors the iOS
   tintColor), letterboxed in a fixed band so nothing reflows as it loads. */
.np-ch-illus {
  width: 80%;
  height: 168px;
  margin-top: var(--sp-sm);
  background-color: var(--np-gold);
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
  animation: np-illus-in 0.5s var(--ease-out) both;
}
@keyframes np-illus-in { from { opacity: 0; } to { opacity: 1; } }
.np-chapter-rule {
  width: 40px;
  height: 1px;
  background: var(--np-gold-muted);
  margin: var(--sp-sm) 0;
}
.np-chapter-cat {
  font-family: var(--font-body);
  font-weight: 700;
  font-size: var(--fs-xs);
  letter-spacing: var(--tr-label);
  text-transform: uppercase;
  color: var(--np-text-3);
}

/* ── Ornamental divider ── */
.np-divider {
  display: flex;
  align-items: center;
  align-self: stretch;
  gap: 12px;
  padding: 0 var(--sp-xl);
  margin: var(--sp-md) 0 var(--sp-sm);
}
.np-divider-inline { margin: var(--sp-lg) 0; }
.np-divider-rule {
  flex: 1;
  height: 1px;
  background: var(--np-gold-muted);
  opacity: 0.25;
}
.np-divider-star {
  font-size: 12px;
  color: var(--np-gold);
  opacity: 0.4;
}

/* ── Floating header overlay (scroll choreography) ── */
.np-fh-layer {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 5;
  pointer-events: none;
}
/* Gradient backdrop that fades in once the title pins, so prose scrolls under
   it cleanly. */
.np-fh-fade {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 96px;
  background: linear-gradient(to bottom, rgba(10, 15, 26, 1) 0%, rgba(10, 15, 26, 1) 55%, rgba(10, 15, 26, 0) 100%);
  opacity: 0;
}
.np-fh {
  position: absolute;
  left: 0;
  right: 0;
  top: 40px; /* overridden imperatively: max(40 - scroll, 14) */
  display: flex;
  flex-direction: column;
  align-items: center;
  will-change: top;
}
.np-fh-title {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 26px;
  line-height: 1.15;
  letter-spacing: 0.5px;
  color: var(--np-gold);
  text-align: center;
  padding: 0 var(--sp-md);
}
.np-fh-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 0 var(--sp-xl);
  margin-top: 6px;
}
.np-fh-rule {
  flex: 1;
  height: 1px;
  background: var(--np-gold-muted);
  opacity: 0;
  transform: scaleX(0);
}
.np-fh-rule--l { transform-origin: right center; }
.np-fh-rule--r { transform-origin: left center; }
.np-fh-star {
  font-size: 12px;
  color: var(--np-gold);
  opacity: 0;
}

/* ── Assistant prose ── */
.np-assistant { margin-bottom: var(--sp-md); }
.np-para {
  margin: 0 0 16px;
  font-family: var(--font-display);
  font-weight: 300;
  font-size: 17px;
  line-height: 1.62;
  letter-spacing: 0.2px;
  color: var(--np-text);
}
.np-para:last-child { margin-bottom: 0; }
.np-para-first { font-weight: 400; }

/* Drop cap (first paragraph of the first narration) */
.np-dropcap-wrap { overflow: hidden; }
.np-dropcap-letter {
  float: left;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 52px;
  line-height: 0.86;
  color: var(--np-gold);
  padding: 4px 10px 0 0;
}

/* Word-by-word reveal */
.np-word {
  opacity: 0;
  animation-name: np-word-in;
  animation-fill-mode: forwards;
  animation-timing-function: ease-out;
}
@keyframes np-word-in { to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .np-word { opacity: 1; animation: none; }
}

/* Pull quotes */
.np-pullquote {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0 var(--sp-xl);
  margin: var(--sp-md) 0;
}
.np-pullquote-rule {
  width: 60%;
  height: 1px;
  background: var(--np-gold-muted);
  margin: var(--sp-md) 0;
}
.np-pullquote-text {
  margin: 0;
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 300;
  font-size: 19px;
  line-height: 1.55;
  text-align: center;
  color: var(--np-text);
}

/* Token usage footer */
.np-tokens {
  margin-top: var(--sp-sm);
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--np-text-3);
}

/* User annotation bubble */
.np-user-bubble {
  align-self: flex-end;
  max-width: 82%;
  margin: 0 0 var(--sp-md) auto;
  padding: 10px 14px;
  border: 1px solid rgba(74, 144, 217, 0.2);
  background: rgba(74, 144, 217, 0.12);
  border-radius: 14px 14px 4px 14px;
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.4;
  color: var(--np-text);
}

/* ── Shimmer loading ── */
.np-shimmer { margin: var(--sp-md) 0; }
.np-shimmer-bar {
  position: relative;
  height: 2px;
  border-radius: 1px;
  background: rgba(201, 168, 76, 0.08);
  overflow: hidden;
  margin-bottom: var(--sp-sm);
}
.np-shimmer-sweep {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 120px;
  background: linear-gradient(90deg, rgba(201,168,76,0.04), rgba(201,168,76,0.4), rgba(201,168,76,0.04));
  animation: np-sweep 1.8s ease-in-out infinite;
}
@keyframes np-sweep {
  0% { left: -120px; }
  100% { left: 100%; }
}
.np-shimmer-text {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 14px;
  text-align: center;
  color: var(--np-text-3);
}
.np-skeleton {
  margin-top: var(--sp-md);
  display: flex;
  flex-direction: column;
  gap: 8px;
  animation: np-pulse 2s ease-in-out infinite;
}
.np-skeleton-line {
  height: 12px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.04);
}
@keyframes np-pulse { 0%, 100% { opacity: 0.5; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .np-shimmer-sweep, .np-skeleton { animation: none; }
}

/* ── Image carousel (FIXED-SIZE box) ── */
.np-carousel { margin: 0 0 var(--sp-md); }
.np-carousel-frame { position: relative; }
.np-carousel-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(201, 168, 76, 0.25);
  border-radius: 50%;
  background: rgba(10, 15, 26, 0.72);
  color: var(--np-gold);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  transition: background 0.2s var(--ease-out), opacity 0.2s var(--ease-out);
}
.np-carousel-arrow--prev { left: 8px; }
.np-carousel-arrow--next { right: 8px; }
.np-carousel-arrow:hover:not(:disabled) { background: rgba(10, 15, 26, 0.9); }
.np-carousel-arrow:disabled { opacity: 0.25; cursor: default; }
.np-carousel-track {
  display: flex;
  height: 220px;            /* constant — the image never resizes the box */
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  border-radius: var(--r-sm);
  scrollbar-width: none;
}
.np-carousel-track::-webkit-scrollbar { display: none; }
.np-carousel-slide {
  position: relative;
  flex: 0 0 100%;
  height: 100%;
  scroll-snap-align: start;
  background: rgba(201, 168, 76, 0.04);
}
.np-carousel-img {
  width: 100%;
  height: 100%;
  object-fit: contain;      /* letterbox inside the fixed frame */
  display: block;
  border-radius: var(--r-sm);
}
.np-carousel-source {
  position: absolute;
  right: 8px;
  bottom: 6px;
  font-family: var(--font-body);
  font-size: 11px;
  color: var(--np-text-2);
  background: rgba(10, 15, 26, 0.7);
  padding: 2px 5px;
  border-radius: 4px;
}
.np-carousel-dots {
  display: flex;
  justify-content: center;
  gap: 6px;
  margin-top: 8px;
}
.np-carousel-dot {
  width: 6px;
  height: 6px;
  padding: 0;
  border: none;
  appearance: none;
  border-radius: 50%;
  background: rgba(201, 168, 76, 0.25);
  cursor: pointer;
  transition: all 0.2s var(--ease-out);
}
.np-carousel-dot.is-active {
  width: 6px;
  height: 6px;
  background: var(--np-gold);
}
.np-carousel-caption {
  font-family: var(--font-body);
  font-size: 11px;
  color: var(--np-text-3);
  text-align: right;
  margin-top: 4px;
}

/* ── Follow-up pills ── */
.np-followups {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: var(--sp-md) 0;
}
.np-followups-header {
  font-family: var(--font-body);
  font-weight: 700;
  font-size: var(--fs-label);
  letter-spacing: var(--tr-label);
  text-transform: uppercase;
  color: var(--np-text-3);
  text-align: center;
}
.np-followup-pill {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  text-align: left;
  padding: 11px 16px;
  border: 1px solid rgba(244, 213, 141, 0.18);
  border-radius: var(--r-pill);
  background: transparent;
  color: var(--np-text);
  font-family: var(--font-body);
  font-size: 13px;
  cursor: pointer;
  transition: border-color 0.2s var(--ease-out), background 0.2s var(--ease-out);
}
.np-followup-pill:hover {
  border-color: var(--np-gold-muted);
  background: rgba(201, 168, 76, 0.06);
}
.np-followup-arrow { color: var(--np-gold); }

/* ── Sources ── */
.np-sources {
  margin-top: var(--sp-md);
  border-top: 1px solid var(--surface-border);
  padding-top: var(--sp-sm);
}
.np-sources-header {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  background: transparent;
  border: none;
  padding: var(--sp-sm) 0;
  cursor: pointer;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: var(--fs-sm);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--np-gold);
}
.np-sources-chevron { font-size: 10px; }
.np-sources-list {
  display: flex;
  flex-direction: column;
  gap: var(--sp-md);
  margin-top: var(--sp-sm);
}
.np-source-row {
  background: var(--surface);
  border: 1px solid var(--surface-border);
  border-radius: var(--r-md);
  padding: var(--sp-md);
}
.np-source-title {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 16px;
  color: var(--np-gold);
}
.np-source-sub {
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  color: var(--np-text-3);
  margin-top: 2px;
}
.np-source-passage {
  display: block;
  text-align: left;
  background: transparent;
  border: none;
  padding: var(--sp-sm) 0 0;
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: 1.45;
  color: var(--np-text);
  cursor: default;
}
.np-source-passage[disabled] { cursor: default; }
.np-source-passage:not([disabled]) { cursor: pointer; }
.np-source-toggle {
  display: block;
  margin-top: var(--sp-xs);
  font-weight: 500;
  font-size: var(--fs-xs);
  color: var(--np-gold);
}
.np-source-link {
  display: block;
  margin-top: var(--sp-sm);
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  color: var(--np-gold);
  word-break: break-all;
  text-decoration: none;
}
.np-source-link:hover { text-decoration: underline; }

/* ── Rating row ── */
.np-rating { padding: var(--sp-sm) 0 var(--sp-md); }
.np-rating-label {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: var(--fs-xs);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--np-text-3);
  margin-bottom: var(--sp-sm);
}
.np-rating-actions { display: flex; gap: var(--sp-sm); }
.np-rating-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  border: 1px solid rgba(201, 168, 76, 0.18);
  border-radius: var(--r-pill);
  background: rgba(255, 255, 255, 0.02);
  color: var(--np-gold);
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  cursor: pointer;
  transition: all 0.2s var(--ease-out);
}
.np-rating-btn.is-active {
  background: var(--np-gold);
  border-color: var(--np-gold);
  color: var(--background);
}

/* ── Access gate (auth / credits) ── */
.np-access {
  border: 1px solid rgba(244, 213, 141, 0.16);
  background: rgba(244, 213, 141, 0.05);
  border-radius: var(--r-lg);
  padding: var(--sp-md);
  margin-top: var(--sp-md);
}
.np-access-eyebrow {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: var(--fs-xs);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--np-text-3);
  margin-bottom: var(--sp-sm);
}
.np-access-title {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 22px;
  color: var(--np-gold);
  margin-bottom: var(--sp-xs);
}
.np-access-body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  line-height: 1.5;
  color: var(--np-text-2);
}
.np-access-hint {
  margin: var(--sp-sm) 0 0;
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  line-height: 1.5;
  color: var(--np-text-3);
}
.np-access-hint code {
  font-family: var(--font-mono);
  color: var(--np-gold);
  background: rgba(201, 168, 76, 0.1);
  padding: 1px 4px;
  border-radius: 3px;
}
.np-access-btn {
  margin-top: var(--sp-md);
  padding: 8px 16px;
  border: 1px solid rgba(244, 213, 141, 0.22);
  border-radius: var(--r-pill);
  background: transparent;
  color: var(--np-gold);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: var(--fs-sm);
  cursor: pointer;
}
.np-access-btn:hover { background: rgba(201, 168, 76, 0.08); }

/* ── Error ── */
.np-error {
  padding: var(--sp-md) 0;
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  color: var(--error);
  text-align: center;
}

/* ── Input bar ── */
.np-input-row {
  display: flex;
  align-items: center;
  gap: var(--sp-sm);
  padding: var(--sp-sm) var(--sp-md) var(--sp-md);
  border-top: 1px solid rgba(201, 168, 76, 0.08);
  flex: 0 0 auto;
}
.np-input {
  flex: 1;
  height: 40px;
  padding: 0 var(--sp-md);
  border: 1px solid var(--surface-border);
  border-radius: var(--r-pill);
  background: var(--surface);
  color: var(--np-text);
  font-family: var(--font-body);
  font-size: 15px;
  outline: none;
  transition: border-color 0.2s var(--ease-out);
}
.np-input:focus { border-color: var(--np-gold-muted); }
.np-input::placeholder { color: var(--np-text-3); }
.np-input:disabled { opacity: 0.6; }
.np-send {
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid rgba(244, 213, 141, 0.15);
  background: var(--surface);
  color: var(--np-gold);
  font-size: 14px;
  cursor: pointer;
  transition: all 0.2s var(--ease-out);
}
.np-send:disabled { color: var(--shadow-fg); cursor: default; }
.np-send:not(:disabled):hover { background: rgba(201, 168, 76, 0.12); }
/* LoginModal — centered sign-in box over a gently blurred, dimmed app. */

.login-overlay {
  position: fixed;
  inset: 0;
  z-index: 100; /* above every panel/callout */
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--sp-lg);
  background: rgba(6, 9, 14, 0.55);
  backdrop-filter: blur(8px) saturate(0.9);
  -webkit-backdrop-filter: blur(8px) saturate(0.9);
  animation: login-fade 0.3s var(--ease-out);
}

@keyframes login-fade { from { opacity: 0; } to { opacity: 1; } }

.login-box {
  position: relative;
  width: 100%;
  max-width: 380px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: var(--sp-xl) var(--sp-lg) var(--sp-lg);
  background: var(--glass);
  border: 1px solid var(--surface-border);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-modal), var(--inner-top-dark);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  animation: login-rise 0.42s var(--ease-out);
}

@keyframes login-rise {
  from { opacity: 0; transform: translateY(14px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.login-close {
  position: absolute;
  top: var(--sp-sm);
  right: var(--sp-sm);
  width: 30px;
  height: 30px;
  border: none;
  border-radius: 50%;
  background: transparent;
  color: var(--mist);
  font-size: 14px;
  cursor: pointer;
  transition: background 0.2s var(--ease-out), color 0.2s var(--ease-out);
}
.login-close:hover { background: rgba(255, 255, 255, 0.06); color: var(--moonlight); }

.login-brand {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 34px;
  letter-spacing: 0.5px;
  color: var(--gold-soft);
}
.login-brand span { color: var(--moonlight); }

.login-rule {
  width: 44px;
  height: 1px;
  background: var(--rule-strong);
  margin: var(--sp-sm) 0 var(--sp-md);
}

.login-tagline {
  margin: 0 0 var(--sp-lg);
  font-family: var(--font-display);
  font-size: 16px;
  font-style: italic;
  line-height: 1.5;
  color: var(--mist);
  max-width: 300px;
}

.login-providers {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-sm);
  width: 100%;
}

.login-apple {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 320px;
  max-width: 100%;
  height: 44px;
  border: none;
  border-radius: var(--r-pill);
  background: #f5f5f7;
  color: #111;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 15px;
  cursor: pointer;
  transition: background 0.2s var(--ease-out), transform 0.1s var(--ease-out);
}
.login-apple:hover:not(:disabled) { background: #fff; }
.login-apple:active:not(:disabled) { transform: scale(0.985); }
.login-apple:disabled { opacity: 0.6; cursor: default; }

/* Google renders its own button inside this container. */
.login-google {
  width: 320px;
  max-width: 100%;
  display: flex;
  justify-content: center;
  min-height: 44px;
}

.login-google-fallback {
  width: 320px;
  max-width: 100%;
  height: 44px;
  border: 1px solid var(--surface-border);
  border-radius: var(--r-pill);
  background: var(--surface);
  color: var(--mist);
  font-family: var(--font-body);
  font-size: 15px;
  cursor: default;
}

.login-error {
  margin: var(--sp-md) 0 0;
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  color: var(--error);
}
.login-busy {
  margin: var(--sp-sm) 0 0;
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  color: var(--mist);
}

.login-guest {
  margin-top: var(--sp-lg);
  border: none;
  background: transparent;
  color: var(--gold-soft);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: var(--fs-sm);
  letter-spacing: 0.02em;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-color: rgba(244, 213, 141, 0.4);
}
.login-guest:hover { text-decoration-color: var(--gold-soft); }

.login-fineprint {
  margin: var(--sp-sm) 0 0;
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  line-height: 1.5;
  color: var(--shadow-fg);
  max-width: 300px;
}

@media (prefers-reduced-motion: reduce) {
  .login-overlay, .login-box { animation: none; }
}
.app-shell {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

/* Chrome (left sidebar, right dock, POI callout) is owned by its own
   components; the shell is just the full-bleed map stage. */

/* Hidden container for SVG filter defs (the turbulence filter). */
.ws-defs { position: absolute; width: 0; height: 0; overflow: hidden; }

/* Ancient Ground — gentle blur of the MAP ONLY. Sits above the map but below
   all chrome (sidebar z16, callout z20, etc.), so backdrop-filter blurs the
   map behind it while every UI panel paints on top, sharp and untouched. */
.ag-map-blur {
  position: absolute;
  inset: 0;
  z-index: 10;
  pointer-events: none;
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  animation: ag-blur-in 0.3s var(--ease-out);
}
@keyframes ag-blur-in { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .ag-map-blur { animation: none; }
}

/* ── Subtle gold hover glow — reusable utility ──
   Drop `ws-wisp` on any button. The previous churning gold "smoke" (an animated
   SVG turbulence layer) is replaced by a quiet inset gold glow that lifts in on
   hover — matching the rest of the sidebar's buttons. */
.ws-wisp { position: relative; overflow: hidden; transition: box-shadow 0.22s var(--ease-out); }
.ws-wisp > * { position: relative; z-index: 1; }
.ws-wisp:not(.is-soon):hover {
  box-shadow: inset 0 0 12px rgba(244, 213, 141, 0.2);
}
