/* ArtDEAN Heritage Scout — Cinematic Atlas */
:root { --ad-gold:#C9A765; --ad-ivory:#F4F0E7; --ad-ink:#070B13; --ad-muted:#9299A7; }

/* Smart header: generous on arrival, compact while exploring */
header { transform-origin:top left; transition:width .36s cubic-bezier(.22,.8,.22,1), padding .36s, gap .36s, background .3s, box-shadow .3s; }
header.is-compact { width:min(430px,calc(100vw - 28px)); padding:8px 9px; gap:0; border-radius:15px; }
header.is-compact .brand { position:absolute; left:9px; top:8px; z-index:2; }
header.is-compact .brand > div, header.is-compact #newsBtn, header.is-compact .mainrow,
header.is-compact .grouptray, header.is-compact #filtersTray, header.is-compact #status,
header.is-compact .search-modes { display:none!important; }
header.is-compact .brand-mark { width:38px; height:38px; margin:0; }
header.is-compact .searchrow { padding-left:47px; gap:5px; }
header.is-compact .searchrow input { height:38px; }
header.is-compact #nearBtn { display:none; }
header.is-compact #deepBtn { width:38px; height:38px; }
header::after { content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none; border:1px solid rgba(201,167,101,.06); }

/* Evidence, place navigation and gallery discovery are distinct intents. */
.search-modes {
  display:flex; gap:3px; align-self:flex-start; padding:3px;
  border:1px solid rgba(255,255,255,.09); border-radius:10px;
  background:rgba(255,255,255,.025);
}
.search-modes button {
  min-height:28px; padding:4px 10px; border:0; border-radius:7px;
  background:transparent; color:#AEB5C1; cursor:pointer;
  font-size:10px; font-weight:760; letter-spacing:.065em; text-transform:uppercase;
}
.search-modes button:hover,.search-modes button:focus-visible { color:var(--ad-ivory); }
.search-modes button.is-active {
  color:#151922; background:var(--ad-gold); box-shadow:0 2px 10px rgba(0,0,0,.22);
}

/* Search becomes a catalogue gallery */
#adSearchGallery { position:absolute; top:calc(100% + 10px); left:0; width:min(620px,calc(100vw - 28px));
  max-height:min(68vh,650px); overflow:auto; border:1px solid rgba(255,255,255,.11); border-radius:18px;
  background:rgba(8,12,20,.97); color:var(--ad-ivory); box-shadow:0 24px 70px rgba(0,0,0,.66);
  backdrop-filter:blur(20px) saturate(1.25); opacity:0; transform:translateY(-7px) scale(.99); pointer-events:none;
  transition:opacity .18s ease,transform .22s cubic-bezier(.22,.8,.22,1); z-index:1700; }
#adSearchGallery.open { opacity:1; transform:none; pointer-events:auto; }
.adsg-head { display:flex; justify-content:space-between; align-items:end; padding:17px 18px 10px; border-bottom:1px solid rgba(255,255,255,.08); }
.adsg-query { font:600 22px/1.1 'Iowan Old Style','Palatino Linotype',Palatino,Georgia,serif; letter-spacing:.02em; }
.adsg-meta { color:var(--ad-muted); font-size:11px; }
.adsg-section { padding:12px 12px 4px; }
.adsg-label { padding:0 6px 7px; color:var(--ad-gold); font-size:10px; font-weight:750; letter-spacing:.13em; }
.adsg-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; }
.adsg-item { display:grid; grid-template-columns:58px 1fr auto; gap:10px; align-items:center; min-height:70px; padding:8px;
  border:1px solid rgba(255,255,255,.07); border-radius:12px; background:rgba(255,255,255,.035); cursor:pointer; text-align:left; color:inherit; }
.adsg-item:hover,.adsg-item:focus-visible { border-color:rgba(201,167,101,.55); background:rgba(201,167,101,.08); outline:none; }
.adsg-thumb { width:58px; height:54px; object-fit:cover; border-radius:8px; background:#141a26; }
.adsg-title { font:600 15px/1.2 'Iowan Old Style','Palatino Linotype',Palatino,Georgia,serif; }
.adsg-sub { margin-top:3px; color:#aeb3bd; font-size:11px; line-height:1.3; }
.adsg-verified { color:#d9bd84; font-size:10px; white-space:nowrap; }
.adsg-empty { padding:24px 18px 28px; color:#aeb3bd; font-size:13px; }

/* Curated world constellation layer */
.ad-constellation { position:relative; width:31px; height:31px; border:1px solid rgba(201,167,101,.78); border-radius:50%;
  background:rgba(7,11,19,.55); box-shadow:0 0 0 4px rgba(201,167,101,.07),0 0 28px rgba(201,167,101,.12); }
.ad-constellation::after { content:""; position:absolute; inset:10px; border-radius:50%; background:var(--ad-gold); }
.ad-constellation span { position:absolute; left:36px; top:5px; color:var(--ad-ivory); font:600 12px/1.2 system-ui,sans-serif;
  text-shadow:0 2px 8px #000; opacity:0; transform:translateX(-4px); transition:.18s; white-space:nowrap; pointer-events:none; }
.ad-constellation.named span,.ad-constellation:hover span { opacity:1; transform:none; }
#adGlobalHint { position:absolute; left:50%; top:50%; transform:translate(-50%,190px); z-index:1000; color:#a6acb7;
  background:rgba(7,11,19,.72); border:1px solid rgba(255,255,255,.08); border-radius:999px; padding:7px 14px;
  font-size:11.5px; letter-spacing:.01em; pointer-events:none; transition:opacity .4s; }

/* Dossier: quick preview + deep research tabs */
#panel { transition:transform .34s cubic-bezier(.22,.8,.22,1),opacity .25s; }
#panel.open { animation:adCaseOpen .36s cubic-bezier(.22,.8,.22,1); }
@keyframes adCaseOpen { from { opacity:0; transform:translateX(28px) scale(.985); } to { opacity:1; transform:none; } }
.ad-dossier-nav { display:flex; gap:4px; margin:16px 0 0; padding-bottom:8px; overflow-x:auto; border-bottom:1px solid rgba(20,25,40,.13); scrollbar-width:none; }
.ad-dossier-tab { border:0; background:transparent; color:#77766f; font-size:11px; padding:7px 9px; border-radius:8px; white-space:nowrap; cursor:pointer; }
.ad-dossier-tab.on { color:#1c2029; background:rgba(201,167,101,.18); font-weight:700; }
.ad-dossier-deep { margin-top:14px; animation:adFade .2s ease; }
.ad-quick-deep { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-top:13px; }
.ad-open-full { border:1px solid rgba(20,25,40,.16); background:#fffaf0; color:#20242d; border-radius:999px; padding:8px 12px; cursor:pointer; font-weight:650; font-size:11px; }
@keyframes adFade { from { opacity:0; transform:translateY(5px); } to { opacity:1; transform:none; } }

/* Time Lens signature state */
#timeLens { transition:box-shadow .28s,transform .28s,opacity .28s; }
#timeLens.is-changing { box-shadow:0 10px 45px rgba(201,167,101,.23); transform:translateX(-50%) translateY(-2px); }
#timeContext { position:absolute; left:50%; bottom:66px; transform:translateX(-50%) translateY(8px); z-index:1420;
  min-width:220px; text-align:center; color:var(--ad-ivory); opacity:0; pointer-events:none; transition:.25s; }
#timeContext.on { opacity:1; transform:translateX(-50%); }
#timeContext strong { display:block; color:var(--ad-gold); font:600 22px/1 'Iowan Old Style','Palatino Linotype',Palatino,Georgia,serif; }
#timeContext span { display:block; margin-top:4px; color:#aeb3bd; font-size:11px; }
#mobileTimeBtn { display:none; position:absolute; left:50%; bottom:18px; transform:translateX(-50%); z-index:1450; border:1px solid rgba(255,255,255,.13);
  background:rgba(8,12,20,.9); color:var(--ad-ivory); border-radius:999px; padding:9px 15px; box-shadow:0 8px 28px rgba(0,0,0,.4); }
#mobileTimeSheet { display:none; position:absolute; left:8px; right:8px; bottom:70px; z-index:1800; padding:13px; border:1px solid rgba(255,255,255,.12);
  border-radius:17px; background:rgba(8,12,20,.97); box-shadow:0 18px 60px rgba(0,0,0,.62); }
#mobileTimeSheet.open { display:block; animation:adFade .2s ease; }
.mts-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; margin-top:9px; }
.mts-era { border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.04); color:#d9dce2; border-radius:10px; padding:10px 4px; font-size:11px; }
.mts-era.on { background:var(--ad-gold); color:#141820; border-color:var(--ad-gold); font-weight:750; }

/* Image-led Discover editorial dock */
#adDiscoverDock { position:absolute; left:50%; bottom:74px; transform:translate(-50%,15px); z-index:1750; width:min(930px,calc(100vw - 28px));
  max-height:58vh; overflow:auto; opacity:0; pointer-events:none; border:1px solid rgba(255,255,255,.1); border-radius:20px;
  background:rgba(8,12,20,.96); color:var(--ad-ivory); box-shadow:0 24px 80px rgba(0,0,0,.68); backdrop-filter:blur(20px); transition:.25s; }
#adDiscoverDock.open { opacity:1; pointer-events:auto; transform:translate(-50%,0); }
.add-head { display:flex; justify-content:space-between; align-items:center; padding:15px 17px 10px; }
.add-kicker { color:var(--ad-gold); font-size:10px; font-weight:800; letter-spacing:.14em; }
.add-close { border:0; background:transparent; color:#d9dce2; font-size:20px; cursor:pointer; }
.add-cards { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; padding:0 13px 14px; }
.add-card { min-height:176px; position:relative; overflow:hidden; border-radius:14px; border:1px solid rgba(255,255,255,.08); background:#111725; cursor:pointer; }
.add-card img { width:100%; height:112px; object-fit:cover; display:block; }
.add-card-body { padding:9px 10px; }
.add-card-tag { color:var(--ad-gold); font-size:9px; letter-spacing:.08em; text-transform:uppercase; }
.add-card-title { margin-top:4px; font:600 14px/1.2 'Iowan Old Style','Palatino Linotype',Palatino,Georgia,serif; }
.add-tours { display:flex; gap:8px; overflow:auto; padding:0 13px 15px; }
.add-tour { flex:0 0 auto; border:1px solid rgba(255,255,255,.1); border-radius:999px; padding:9px 13px; background:transparent; color:#d9dce2; font-size:11px; cursor:pointer; }

/* Selection halo communicates state, no constant pulsing */
.leaflet-marker-icon.ad-selected { filter:drop-shadow(0 0 6px rgba(201,167,101,.9)) drop-shadow(0 0 17px rgba(201,167,101,.45)); }

@media (max-width:980px) {
  #mobileTimeBtn { display:block; }
  #adSearchGallery { width:calc(100vw - 16px); left:-2px; }
  .adsg-grid { grid-template-columns:1fr; }
  #adDiscoverDock { bottom:68px; max-height:66vh; }
  .add-cards { grid-template-columns:repeat(2,1fr); }
}
@media (max-width:720px) {
  .search-modes { width:100%; }
  .search-modes button { flex:1; padding-inline:5px; }
  header.is-compact { left:8px; right:8px; width:auto; max-width:none; top:8px; }
  header.is-compact .brand-mark { width:37px; height:37px; }
  #adGlobalHint { top:auto; bottom:114px; transform:translateX(-50%); max-width:calc(100vw - 24px); text-align:center; }
  .add-cards { grid-template-columns:1fr 1fr; }
  .add-card { min-height:155px; }
  .add-card img { height:94px; }
  #adDiscoverDock { left:8px; right:8px; width:auto; transform:translateY(15px); }
  #adDiscoverDock.open { transform:none; }
}
@media (max-width:460px) {
  .add-cards { grid-template-columns:1fr; }
  .add-card { display:grid; grid-template-columns:112px 1fr; min-height:100px; }
  .add-card img { height:100%; min-height:100px; }
}
@media (prefers-reduced-motion:reduce) {
  header,#adSearchGallery,#adDiscoverDock,#panel,#timeLens,#timeContext { transition:none!important; animation:none!important; }
}

/* ========================================================================
   PROFESSIONAL EXPERIENCE
   A single finishing layer for hierarchy, legibility and responsive flow.
   ======================================================================== */
:root {
  --ad-gold:#D2B06D;
  --ad-gold-strong:#E4C986;
  --ad-ink:#060A12;
  --ad-surface:rgba(8,13,23,.94);
  --ad-surface-raised:#111827;
  --ad-ivory:#F7F2E8;
  --ad-text:#F2F0EB;
  --ad-muted:#D2D7E0;
  --ad-line:rgba(255,255,255,.12);
  --ad-serif:Georgia,'Times New Roman',serif;
  --ad-sans:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}

html { background:var(--ad-ink); }
body {
  color:var(--ad-text);
  font-family:var(--ad-sans);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
#introVeil { transition-duration:.45s; }
button,input,select { font:inherit; }

header {
  width:min(470px,calc(100vw - 32px));
  padding:14px;
  gap:10px;
  border:1px solid var(--ad-line);
  border-radius:20px;
  background:linear-gradient(145deg,rgba(14,20,33,.96),rgba(7,11,19,.92));
  box-shadow:0 22px 70px rgba(0,0,0,.5),inset 0 1px rgba(255,255,255,.035);
  backdrop-filter:blur(22px) saturate(1.25);
}
header h1,.iv-name,.ob-card h2,.adsg-query,.adsg-title,.add-card-title,
#panel h2,#timeContext strong { font-family:var(--ad-serif); }
.brand-mark { width:38px; height:38px; border-radius:10px; }
.brand-actions { display:flex; gap:5px; margin-left:auto; }
.brand-actions .iconbtn { flex:0 0 auto; margin-left:0; text-decoration:none; }
header h1 { font-size:27px; letter-spacing:.015em; }
.brand-cap { color:var(--ad-gold); font-size:10px; letter-spacing:.31em; }
.brand-aei { color:#C8CED8; font-size:10px; }
.searchrow input {
  height:46px;
  border-radius:14px;
  background:rgba(255,255,255,.055);
  border-color:rgba(255,255,255,.16);
  color:var(--ad-text);
}
.searchrow input::placeholder { color:#C2C8D2; }
.iconbtn.big { width:46px; height:46px; }
.mainrow { gap:6px; }
.mainrow .chip {
  min-height:36px;
  border-radius:12px;
  padding:7px 12px;
  background:rgba(255,255,255,.045);
}
.chip:hover { transform:none; background:rgba(255,255,255,.085); }
.chip.on { background:var(--ad-gold); color:#131720; }
#typeChips .chip[data-category="gallery"].on { background:#2F80ED; color:#fff; }
#status { color:#D3D8E1; font-size:12px; line-height:1.45; }

/* A calm world view: destination beacons lead, supporting marks recede. */
.ad-constellation {
  width:27px; height:27px;
  border-color:rgba(210,176,109,.72);
  background:rgba(7,11,19,.72);
  box-shadow:0 0 0 3px rgba(210,176,109,.055),0 5px 24px rgba(0,0,0,.35);
}
.ad-constellation::after { inset:9px; }
.ad-constellation span {
  left:33px; top:4px; font-size:12px; color:#FFF9ED;
  text-shadow:0 2px 5px #000,0 0 14px rgba(0,0,0,.94);
}
#adGlobalHint {
  max-width:520px;
  padding:9px 16px;
  color:#C7CCD5;
  background:rgba(7,11,19,.88);
  border-color:rgba(255,255,255,.1);
  font-size:12px;
}
.marker-cluster { box-shadow:0 0 0 3px rgba(210,176,109,.05),0 5px 22px rgba(0,0,0,.32); }

/* Search acts like a proper catalogue, not an autocomplete tooltip. */
#adSearchGallery { border-radius:20px; }
.adsg-head { padding:19px 20px 12px; }
.adsg-query { font-size:24px; text-transform:none; }
.adsg-meta,.adsg-sub { font-size:12px; }
.adsg-item { min-height:76px; border-radius:14px; }
.adsg-item[aria-selected="true"] { border-color:var(--ad-gold); background:rgba(210,176,109,.11); }

/* Editorial Discover surface. */
#adDiscoverDock { border-radius:24px; }
.add-head { padding:18px 20px 12px; }
.add-kicker { color:var(--ad-gold-strong); font-size:11px; }
.add-context { margin-top:4px; color:var(--ad-muted); font-size:12px; }
.add-card { min-height:190px; border-radius:16px; }
.add-card img { height:122px; }
.add-card-title { font-size:16px; }
.add-place-card {
  min-height:132px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  padding:16px;
  border:1px solid rgba(255,255,255,.1);
  border-radius:16px;
  color:var(--ad-ivory);
  text-align:left;
  cursor:pointer;
  background:
    linear-gradient(180deg,rgba(8,12,20,.05),rgba(8,12,20,.96)),
    radial-gradient(circle at 75% 20%,rgba(210,176,109,.25),transparent 48%),
    #111827;
}
.add-place-card:hover,.add-place-card:focus-visible { border-color:var(--ad-gold); }
.add-place-card span { color:var(--ad-gold); font-size:10px; letter-spacing:.12em; text-transform:uppercase; }
.add-place-card strong { margin-top:6px; font:600 20px/1.1 var(--ad-serif); }
.add-loading { padding:24px 20px 30px; color:var(--ad-muted); font-size:13px; }
.add-loading::before {
  content:""; display:block; width:42px; height:3px; margin-bottom:14px;
  border-radius:4px; background:linear-gradient(90deg,var(--ad-gold),transparent);
  animation:adLoading 1.1s ease-in-out infinite alternate;
}
@keyframes adLoading { to { width:110px; opacity:.45; } }

/* First visit: editorial invitation with quick destination choices. */
#onboard {
  justify-content:flex-start;
  padding:clamp(20px,6vw,86px);
  background:linear-gradient(90deg,rgba(4,7,13,.88),rgba(4,7,13,.42) 58%,rgba(4,7,13,.18));
}
.ob-card {
  width:min(520px,100%);
  max-width:520px;
  padding:32px;
  border-radius:24px;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(247,242,232,.98);
  box-shadow:0 30px 100px rgba(0,0,0,.58);
}
.ob-card h2 { font-size:clamp(30px,4vw,46px); line-height:1.04; }
.ob-card p { margin:14px 0 20px; color:#4E5460; font-size:15px; line-height:1.6; }
.ob-destinations { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin-bottom:22px; }
.ob-destinations button {
  padding:11px 13px;
  border:1px solid rgba(20,25,40,.15);
  border-radius:11px;
  background:rgba(255,255,255,.66);
  color:#20252E;
  cursor:pointer;
  text-align:left;
}
.ob-destinations button:hover,.ob-destinations button:focus-visible { border-color:#A37E3E; background:#fff; }

/* Mobile navigation is intentionally outside the floating header. */
#mobilePrimaryNav { display:none; }

@media (max-width:720px) {
  header {
    top:8px; left:8px; right:8px; width:auto;
    padding:10px; gap:8px; border-radius:17px;
    max-height:none; overflow:visible;
  }
  .brand { min-height:38px; }
  .brand-mark { width:32px; height:32px; }
  header h1 { font-size:21px; }
  .brand-cap { font-size:9px; letter-spacing:.25em; }
  .brand-aei { display:none; }
  #newsBtn,#portalLink { width:36px; height:36px; }
  .searchrow input { height:44px; }
  .iconbtn.big { width:44px; height:44px; }
  header .mainrow,header .grouptray,header #filtersTray { display:none!important; }
  header #status { display:none; }

  .mobile-sheet {
    display:flex!important;
    position:fixed;
    left:8px; right:8px; bottom:78px;
    z-index:2280;
    max-height:min(58dvh,520px);
    overflow:auto;
    padding:16px;
    border:1px solid rgba(255,255,255,.12);
    border-radius:20px;
    background:rgba(7,11,19,.98);
    box-shadow:0 24px 70px rgba(0,0,0,.62);
  }
  #filtersTray.mobile-sheet { display:flex!important; flex-direction:column; gap:12px; }
  #filtersTray.mobile-sheet #typeChips {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    width:100%;
  }
  #filtersTray.mobile-sheet #typeChips .chip { min-width:0; padding-inline:5px; font-size:11px; }
  .grouptray.mobile-sheet { display:flex!important; flex-wrap:wrap; }
  .mobile-sheet .chip { min-height:42px; justify-content:center; }

  header.is-compact { padding:8px 9px; }
  header.is-compact .brand { display:none; }
  header.is-compact .searchrow { padding-left:0; }
  header.is-compact .searchrow input { height:42px; }
  header.is-compact #nearBtn { display:inline-flex; }

  #mobilePrimaryNav {
    position:fixed; left:8px; right:8px; bottom:calc(8px + env(safe-area-inset-bottom));
    z-index:2300;
    display:grid; grid-template-columns:repeat(5,1fr); gap:2px;
    min-height:62px; padding:6px;
    border:1px solid rgba(255,255,255,.12);
    border-radius:18px;
    background:rgba(7,11,19,.96);
    box-shadow:0 18px 60px rgba(0,0,0,.58);
    backdrop-filter:blur(22px);
  }
  #mobilePrimaryNav button {
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
    border:0; border-radius:12px; background:transparent; color:#D5DAE3;
    font-size:10px; font-weight:600; cursor:pointer;
  }
  #mobilePrimaryNav button.is-active { color:#F4D58E; background:rgba(210,176,109,.1); }
  #mobilePrimaryNav svg {
    width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.7;
    stroke-linecap:round; stroke-linejoin:round;
  }

  #mobileTimeBtn { bottom:82px; padding:8px 14px; }
  #mobileTimeSheet { bottom:126px; }
  #adGlobalHint { bottom:126px; font-size:11px; }
  #adDiscoverDock {
    left:8px; right:8px; bottom:78px; width:auto;
    max-height:min(56vh,500px);
    border-radius:20px;
  }
  .add-head { padding:15px 16px 10px; }
  .add-cards { grid-template-columns:repeat(2,minmax(0,1fr)); padding:0 10px 12px; }
  .add-card { min-height:145px; }
  .add-card img { height:88px; }
  .add-card-title { font-size:14px; }
  .add-place-card { min-height:112px; padding:12px; }
  .add-place-card strong { font-size:17px; }
  .add-tours { padding-bottom:14px; }
  .add-tour { font-size:12px; }

  #panel { bottom:78px; max-height:72dvh; border-radius:22px 22px 0 0; }
  #toast { bottom:146px; max-width:calc(100vw - 32px); }
  #leftStack { bottom:158px; }
  #aboutBtn,#surpriseBtn { display:none; }
  .leaflet-bottom { bottom:76px; }
  .leaflet-control-zoom { margin-bottom:12px!important; }

  #onboard { align-items:flex-end; padding:12px 12px calc(82px + env(safe-area-inset-bottom)); }
  .ob-card { padding:24px; border-radius:22px; }
  .ob-card h2 { font-size:30px; }
  .ob-destinations { grid-template-columns:repeat(2,1fr); }
  .tc-actions { flex-direction:column; }
  .tc-actions .chip { justify-content:center; min-height:44px; }
}

@media (max-width:400px) {
  .searchrow input { min-width:0; }
  .add-cards { grid-template-columns:1fr; }
  .add-place-card { min-height:88px; }
}

@media (prefers-reduced-motion:reduce) {
  .add-loading::before { animation:none; width:84px; }
}

/* Keep information anchored to screen edges legible over every map region. */
.tl-label {
  color:#F3D891;
  text-shadow:0 1px 8px #000,0 0 16px rgba(210,176,109,.28);
}
.tl-era { color:#DCE1E8; }
.tl-adv { color:#C8CED8; }
.leaflet-control-attribution {
  background:rgba(5,9,16,.92)!important;
  color:#DCE1E8!important;
  font-size:11px!important;
  text-shadow:0 1px 2px #000;
}
.leaflet-control-attribution a { color:#F3D891!important; }
.leaflet-control-zoom a,
.world-reset a,
#aboutBtn,
#surpriseBtn { color:#FFF!important; }
#legendToggle,
#regionToggle,
#mapLegend,
#regionSummary { color:#E4E8EE; }
.rs-muted { color:#C8CED8; }
#map .leaflet-tile-pane {
  filter:brightness(var(--atlas-b,1.24)) contrast(1.05) saturate(var(--atlas-s,1.03));
}

/* Featured partners: premium visibility with explicit sponsorship disclosure. */
.ad-featured-icon { background:none!important; border:0!important; }
.ad-featured-marker {
  display:flex; align-items:center; gap:9px; width:max-content; max-width:240px;
  padding:7px 11px 7px 7px;
  border:1px solid rgba(244,213,142,.78); border-radius:14px;
  background:rgba(6,10,18,.94); color:#FFF9ED;
  box-shadow:0 8px 28px rgba(0,0,0,.55),0 0 0 4px rgba(210,176,109,.1);
  cursor:pointer; backdrop-filter:blur(12px);
}
.ad-featured-gem {
  display:grid; place-items:center; width:31px; height:31px; flex:0 0 31px;
  border-radius:10px; background:linear-gradient(145deg,#F4D58E,#A87935);
  color:#111722; font-size:14px; box-shadow:inset 0 1px rgba(255,255,255,.5);
}
.ad-featured-pin {
  display:grid; place-items:center; width:38px; height:38px;
  border:1px solid #F4D58E; border-radius:12px;
  background:rgba(6,10,18,.96); color:#111722;
  box-shadow:0 7px 22px rgba(0,0,0,.5),0 0 0 4px rgba(210,176,109,.13);
  cursor:pointer;
}
.ad-featured-pin span {
  display:grid; place-items:center; width:27px; height:27px; border-radius:9px;
  background:linear-gradient(145deg,#F4D58E,#A87935); font-size:12px;
  box-shadow:inset 0 1px rgba(255,255,255,.5);
}
.ad-featured-pin:hover { border-color:#FFF0BA; transform:translateY(-1px); }
.ad-featured-marker small,.ad-featured-marker strong { display:block; white-space:nowrap; }
.ad-featured-marker small { color:#F4D58E; font-size:8px; font-weight:800; letter-spacing:.15em; }
.ad-featured-marker strong { max-width:175px; overflow:hidden; text-overflow:ellipsis; font:600 13px/1.3 var(--ad-serif); }
.ad-featured-marker:hover { border-color:#FFF0BA; transform:translateY(-1px); }
.ad-featured-marker.is-compact {
  width:38px; height:38px; padding:3px; gap:0; border-radius:12px;
}
.ad-featured-marker.is-compact .ad-featured-gem {
  width:30px; height:30px; flex-basis:30px; border-radius:9px;
}

#adFeaturedTeaser {
  position:absolute; top:16px; right:16px; z-index:1450;
  width:min(270px,calc(100vw - 32px)); overflow:hidden;
  border:1px solid rgba(244,213,142,.6); border-radius:16px;
  background:linear-gradient(135deg,rgba(19,28,44,.97),rgba(6,10,18,.95));
  color:#FFF9ED; text-align:left;
  box-shadow:0 16px 48px rgba(0,0,0,.5),inset 0 1px rgba(255,255,255,.04);
  backdrop-filter:blur(18px); transition:transform .18s,border-color .18s;
}
#adFeaturedTeaser:hover,#adFeaturedTeaser:focus-within { transform:translateY(-2px); border-color:#F4D58E; }
#adFeaturedTeaser[hidden] { display:none!important; }
.ad-featured-teaser-open { display:flex; flex-direction:column; align-items:flex-start; width:100%; padding:12px 36px 12px 15px; border:0; background:none; color:inherit; text-align:left; cursor:pointer; }
.ad-featured-teaser-dismiss { position:absolute; top:4px; right:4px; width:30px; height:30px; border:0; border-radius:50%; background:transparent; color:#D2D7E0; font-size:18px; cursor:pointer; }
.ad-featured-teaser-dismiss:hover,.ad-featured-teaser-dismiss:focus-visible { background:rgba(255,255,255,.1); color:#fff; }
#adFeaturedTeaser span { color:#F4D58E; font-size:9px; font-weight:800; letter-spacing:.16em; }
#adFeaturedTeaser strong { margin-top:4px; font:600 18px/1.15 var(--ad-serif); }
#adFeaturedTeaser small { margin-top:3px; color:#D2D7E0; font-size:11px; }
#adFeaturedTeaser.is-returning { width:205px; }
#adFeaturedTeaser.is-returning small { display:none; }
#adFeaturedTeaser.is-returning strong { font-size:14px; }

.ad-partner-hero {
  position:relative; min-height:245px; margin:0 -22px 17px; overflow:hidden;
  background:
    radial-gradient(circle at 22% 28%,rgba(80,131,213,.9),transparent 30%),
    radial-gradient(circle at 74% 64%,rgba(18,56,121,.95),transparent 34%),
    linear-gradient(145deg,#07152E 8%,#174A89 48%,#08101E 100%);
  color:#fff; isolation:isolate;
}
.ad-partner-hero::before,.ad-partner-hero::after {
  content:""; position:absolute; border-radius:50%; filter:blur(2px); opacity:.82;
}
.ad-partner-hero::before { width:210px; height:210px; right:-45px; top:-58px; border:32px solid rgba(105,170,235,.34); }
.ad-partner-hero::after { width:145px; height:250px; left:28%; bottom:-170px; border:26px solid rgba(13,31,82,.8); transform:rotate(38deg); }
.ad-partner-hero-wash { position:absolute; inset:0; background:linear-gradient(0deg,rgba(3,7,14,.88),transparent 74%); }
.ad-partner-hero-copy { position:absolute; left:24px; right:24px; bottom:21px; z-index:1; }
.ad-partner-hero-copy span,.ad-partner-hero-copy small { display:block; letter-spacing:.18em; }
.ad-partner-hero-copy span { color:#F4D58E; font-size:9px; font-weight:800; }
.ad-partner-hero-copy strong { display:block; margin:6px 0 2px; font:500 42px/.92 var(--ad-serif); letter-spacing:.045em; }
.ad-partner-hero-copy small { color:#E4E8EE; font-size:9px; }
.ad-partner-disclosure {
  display:flex; align-items:center; gap:8px; margin:0 0 8px;
  color:#666D79; font-size:10px; letter-spacing:.03em;
}
.ad-partner-disclosure span { padding:3px 7px; border-radius:999px; background:#E7D09A; color:#292217; font-weight:800; letter-spacing:.1em; }
.ad-partner-location { margin:-1px 0 13px; color:#7A6238; font-size:12px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
.ad-partner-description { margin:0 0 18px; color:#404651; font-size:14px; line-height:1.62; }
.ad-partner-programs { display:grid; gap:8px; margin:18px 0; }
.ad-partner-program {
  display:flex; flex-direction:column; gap:5px; padding:13px 15px;
  border:1px solid rgba(20,25,40,.12); border-radius:12px; background:rgba(255,255,255,.62);
}
.ad-partner-program.is-current { border-color:rgba(128,95,42,.42); background:#F5EDDC; }
.ad-partner-program-state { color:#8A6A33; font-size:9px; font-weight:800; letter-spacing:.11em; }
.ad-partner-program strong { color:#1A202A; font:600 16px/1.25 var(--ad-serif); }
.ad-partner-program a { color:#55461F!important; font-size:12px; }
.ad-partner-facts { display:grid; grid-template-columns:1.25fr 1fr; gap:8px; margin:18px 0; }
.ad-partner-facts > div { padding:13px; border-radius:12px; background:rgba(20,25,40,.055); }
.ad-partner-facts span { display:block; margin-bottom:5px; color:#8A6A33; font-size:9px; font-weight:800; letter-spacing:.12em; }
.ad-partner-facts strong { color:#303641; font-size:12px; line-height:1.5; }
.ad-partner-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:18px; }
.ad-partner-actions a,.ad-partner-actions button {
  display:flex; align-items:center; justify-content:center; min-height:42px; padding:9px 11px;
  border:1px solid rgba(20,25,40,.16); border-radius:11px; background:#fff;
  color:#202630!important; font-size:12px; font-weight:700; text-align:center; text-decoration:none; cursor:pointer;
}
.ad-partner-actions .ad-partner-primary { grid-column:span 2; background:#151D2A; border-color:#151D2A; color:#FFF9ED!important; }
.ad-partner-actions a:hover,.ad-partner-actions button:hover { border-color:#9A7740; }
.ad-partner-principle { margin:16px 0 3px; padding-top:13px; border-top:1px solid rgba(20,25,40,.12); color:#6A707B; font-size:10.5px; line-height:1.5; }

.add-partner-card {
  grid-column:span 2; position:relative; min-height:132px; overflow:hidden;
  padding:18px; border:1px solid rgba(244,213,142,.62); border-radius:16px;
  background:radial-gradient(circle at 82% 20%,rgba(55,111,187,.75),transparent 28%),linear-gradient(135deg,#121E33,#07101E);
  color:#FFF9ED; text-align:left; cursor:pointer;
}
.add-partner-card::after { content:"◆"; position:absolute; right:20px; bottom:10px; color:rgba(244,213,142,.2); font-size:64px; }
.add-partner-card span,.add-partner-card strong,.add-partner-card small { display:block; position:relative; z-index:1; }
.add-partner-card span { color:#F4D58E; font-size:9px; font-weight:800; letter-spacing:.15em; }
.add-partner-card strong { margin-top:11px; font:600 23px/1.05 var(--ad-serif); }
.add-partner-card small { margin-top:6px; color:#D8DEE7; font-size:11px; }
.add-partner-card:hover,.add-partner-card:focus-visible { border-color:#FFF0BA; }
.adsg-featured { color:#9A702B; font-size:9px; font-weight:800; letter-spacing:.1em; }
.adsg-add-gallery { display:inline-block; margin-top:7px; color:#4F95F5; font-weight:800; text-decoration:none; }
.adsg-add-gallery:hover,.adsg-add-gallery:focus-visible { color:#82B7FF; text-decoration:underline; }

@media (max-width:720px) {
  #adFeaturedTeaser { top:126px; right:8px; width:154px; border-radius:12px; }
  .ad-featured-teaser-open { padding:7px 31px 7px 10px; }
  #adFeaturedTeaser span { font-size:7px; letter-spacing:.1em; }
  #adFeaturedTeaser strong { font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:134px; }
  #adFeaturedTeaser small { display:none; }
  .ad-featured-marker { max-width:195px; }
  .ad-featured-marker strong { max-width:137px; overflow:visible; white-space:normal; font-size:11.5px; line-height:1.05; }
  .ad-partner-hero { min-height:185px; }
  .ad-partner-hero-copy strong { font-size:34px; }
  .ad-partner-facts { grid-template-columns:1fr; }
  .add-partner-card { grid-column:1/-1; min-height:112px; padding:15px; }
}

@media (prefers-reduced-motion:reduce) {
  #adFeaturedTeaser,.ad-featured-marker { transition:none!important; }
}

/* Gallery directory: blue commercial listings remain distinct from red heritage. */
.gallery-panel-head {
  display:flex; flex-direction:column; justify-content:flex-end; min-height:150px;
  margin:0 -22px 18px; padding:24px;
  background:radial-gradient(circle at 78% 15%,rgba(103,174,255,.72),transparent 27%),linear-gradient(145deg,#07162E,#134C91);
  color:#fff;
}
.gallery-panel-head span { color:#BFD9FF; font-size:9px; font-weight:800; letter-spacing:.18em; }
.gallery-panel-head strong { margin-top:7px; font:600 27px/1.05 var(--ad-serif); }
.gallery-badge { background:#DCEBFF!important; color:#145DAA; font-weight:800; }
.gallery-desc { color:#454B55; font-size:14px; line-height:1.6; }
.gallery-facts { display:grid; gap:8px; margin:16px 0; }
.gallery-facts > div { padding:12px 14px; border-radius:11px; background:rgba(47,128,237,.075); }
.gallery-facts span { display:block; margin-bottom:4px; color:#1769D2; font-size:9px; font-weight:800; letter-spacing:.12em; }
.gallery-facts strong { color:#303641; font-size:12px; line-height:1.5; }
.gallery-actions { display:grid!important; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.gallery-actions a,.gallery-actions button { display:flex; align-items:center; justify-content:center; min-height:42px; margin:0!important; padding:9px 11px; border:1px solid rgba(20,25,40,.15); border-radius:10px; background:#fff; font-size:12px; font-weight:700; text-align:center; text-decoration:none; }
.gallery-actions a:first-child { background:#1769D2; border-color:#1769D2; color:#fff!important; }
.gallery-source,.gallery-claim { margin-top:16px; padding:13px; border-radius:11px; color:#626975; font-size:11px; line-height:1.55; background:#F1F3F6; }
.gallery-claim { display:flex; justify-content:space-between; gap:14px; align-items:center; background:#EAF3FF; }
.gallery-claim a { color:#145DAA!important; font-weight:800; }
.ad-sym-gallery svg { filter:drop-shadow(0 2px 4px rgba(23,105,210,.55)); }

@media (max-width:720px) {
  .gallery-panel-head { min-height:120px; }
  .gallery-actions { grid-template-columns:1fr 1fr; }
  .gallery-claim { align-items:flex-start; flex-direction:column; }
}
