:root{
  --paper:#d9c590;
  --paper-deep:#c4ad70;
  --paper-ink:#3d2f22;
  --paper-soft:#f0e5c3;
  --accent:#7a1f13;
  --accent-soft:#9f513f;
  --gold:#b38a4c;
  --shadow:0 10px 30px rgba(46,31,18,.25);
  --panel:rgba(246,236,203,.93);
  --line:rgba(85,58,31,.28);
  --mobile-info-height: 35vh;
}
html,body{height:100%;margin:0;font-family:"Cormorant Garamond", Georgia, serif;color:var(--paper-ink);background:#d4c08f;}
body{overflow:hidden;}
*{box-sizing:border-box;}
button, select{font:inherit;}
#app{position:relative;width:100%;height:100%;}
#map{position:absolute;inset:0;background:#d7c48e;}
.leaflet-container{background:#d7c48e;}
.leaflet-control-attribution{background:rgba(245,235,210,.86)!important;border-top-left-radius:10px;color:#4a3926;font-size:.78rem;padding:2px 8px;box-shadow:var(--shadow);}
.leaflet-pane.leaflet-tile-pane{filter: sepia(.92) saturate(.45) brightness(1.07) contrast(.88) hue-rotate(-8deg);}
.paper-overlay{position:absolute;inset:0;pointer-events:none;background:
    radial-gradient(circle at 18% 15%, rgba(255,250,233,.28), transparent 30%),
    radial-gradient(circle at 78% 72%, rgba(113,83,40,.10), transparent 24%),
    radial-gradient(circle at 50% 50%, rgba(255,244,212,.18), transparent 54%),
    linear-gradient(rgba(229,205,149,.44), rgba(221,194,129,.54));
  mix-blend-mode:multiply;z-index:420;}
.paper-overlay::after{content:"";position:absolute;inset:0;opacity:.22;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.95' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");background-size:180px 180px;}
.vignette{position:absolute;inset:0;pointer-events:none;z-index:421;box-shadow: inset 0 0 180px rgba(90,60,27,.24), inset 0 0 40px rgba(255,247,220,.35);}
.topbar{
  position:absolute;
  top:16px;
  left:16px;
  right:16px;
  z-index:900;
  display:block;
  pointer-events:none;
}

.title-card,
.panel-card{
  background:var(--panel);
  border:1px solid var(--line);
  box-shadow:var(--shadow);
  backdrop-filter: blur(4px);
}
.title-card{
  padding:14px 18px 12px;
  border-radius:6px;
  max-width:min(860px, calc(100vw - 32px));
  pointer-events:auto;
}

.title-row{display:flex;align-items:center;gap:14px;}
.title-row img{width:70px;height:auto;flex:none;opacity:.96;}
h1{margin:0;font-family:"Cinzel Decorative","Times New Roman",serif;font-size:clamp(1.2rem, 2.7vw, 2.4rem);letter-spacing:.02em;line-height:1.08;color:#5a2417;}
.subtitle{margin-top:5px;font-size:1rem;letter-spacing:.03em;color:#5b4430;max-width:62ch;}
.sources-button{
  position:absolute;
  right:2px;
  top:2px;
  z-index:910;
  padding:0;
  display:flex;
  gap:10px;
  align-items:center;
  background:none;
  border:none;
  box-shadow:none;
  backdrop-filter:none;
  pointer-events:auto;
}
.sources-button button{
  border:none;
  background:linear-gradient(#f6ebc7, #e6d3a2);
  color:#4a311b;
  padding:10px 14px;
  border-radius:6px;
  cursor:pointer;
  box-shadow:var(--shadow), inset 0 0 0 1px rgba(105,72,35,.22);
}
.sources-button button:hover, .panel-actions button:hover, .splash-cta:hover{transform:translateY(-1px);}
.left-panel{
  position:absolute;
  top:172px;
  left:16px;
  z-index:890;
  width:min(340px, calc(100vw - 32px));
}

.panel-card{
  border-radius:6px;
  padding:14px;
}
.panel-title{margin:0 0 10px;font-family:"Cinzel Decorative","Times New Roman",serif;color:#62311d;font-size:1.06rem;}
.panel-copy{margin:0 0 10px;font-size:1rem;}
.select-wrap{display:grid;gap:10px;}
.place-select{
  width:100%;
  appearance:none;
  border-radius:6px;
  border:1px solid rgba(89,60,31,.25);
  padding:12px 42px 12px 12px;
  background:
    linear-gradient(180deg, #fff4cf, #ebdbb2),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23553a1f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 12px center / 18px;
  color:#3e2e20;
}
.place-list{margin:12px 0 0;padding:0;list-style:none;max-height:220px;overflow:auto;border-top:1px solid var(--line);}
.place-list li{padding:9px 2px;border-bottom:1px solid rgba(89,60,31,.12);}
.place-list button{cursor:pointer;width:100%;background:none;border:none;text-align:left;padding:0;color:#4e3a2a;}
.place-list small{display:block;color:#6d5a45;}
.info-panel{position:absolute;right:16px;bottom:16px;z-index:900;width:min(400px, calc(100vw - 32px));min-height:220px;transform:translateY(0);transition:transform .28s ease;}
..info-panel .panel-card{
  padding:16px 16px 14px;
  border-radius:6px;
}

.panel-actions button{
  border:none;
  border-radius:6px;
  padding:9px 11px;
  cursor:pointer;
  background:linear-gradient(#f6ebc7, #e2cca0);
  color:#4a311b;
}

.info-eyebrow{text-transform:uppercase;letter-spacing:.16em;color:#7a553b;font-size:.76rem;margin-bottom:6px;}
.info-panel h2{margin:0 0 6px;font-family:"Cinzel Decorative","Times New Roman",serif;font-size:1.3rem;color:#5a2417;}
.info-address{margin:0 0 10px;font-style:italic;color:#5a4636;}
.info-panel p{margin:.45rem 0;font-size:1.02rem;line-height:1.28;}
.info-panel h3{margin:12px 0 6px;font-size:1rem;letter-spacing:.02em;}
.sources-inline{margin-top:10px;font-size:.92rem;}
.sources-inline ul{margin:.25rem 0 0 1rem;padding:0;}
.sources-inline a, .modal-body a{color:#6f2617;}
.panel-actions button{border:none;border-radius:10px;padding:9px 11px;cursor:pointer;background:linear-gradient(#f6ebc7, #e2cca0);color:#4a311b;}
.panel-actions button.secondary{background:transparent;border:1px solid rgba(89,60,31,.18);}
.hidden{display:none !important;}
.status{
  position:absolute;
  left:50%;
  bottom:22px;
  transform:translateX(-50%);
  z-index:930;
  background:rgba(60,41,24,.76);
  color:#fff5dd;
  padding:8px 14px;
  border-radius:6px;
  font-size:.92rem;
  box-shadow:var(--shadow);
}
.splash{position:absolute;inset:0;z-index:1400;display:flex;align-items:center;justify-content:center;background:
    linear-gradient(rgba(70,48,29,.55), rgba(70,48,29,.45)),
    radial-gradient(circle at 50% 20%, rgba(255,248,225,.12), transparent 30%);padding:20px;}
.splash-card{
  width:min(860px, calc(100vw - 24px));
  max-height:min(90vh, 900px);
  overflow:auto;
  background:rgba(242,228,189,.97);
  border:1px solid rgba(83,57,30,.24);
  border-radius:6px;
  box-shadow:0 18px 60px rgba(0,0,0,.28);
  padding:22px 22px 18px;
  position:relative;
}
.splash-card::before{
  content:"";
  position:absolute;
  inset:10px;
  border:1px solid rgba(113,79,43,.20);
  border-radius:6px;
  pointer-events:none;
}

.splash-cta{
  margin-top:10px;
  padding:12px 18px;
  border:none;
  border-radius:6px;
  cursor:pointer;
  background:linear-gradient(#8d3a26, #692114);
  color:#fff3d5;
  font-size:1.05rem;
  box-shadow:var(--shadow);
}
.splash h2{margin:0 0 10px;font-family:"Cinzel Decorative","Times New Roman",serif;font-size:clamp(1.3rem, 3vw, 2.15rem);color:#5a2417;}
.splash p{font-size:1.12rem;line-height:1.42;margin:.72rem 0;}
.modal-backdrop{position:absolute;inset:0;z-index:1500;background:rgba(45,31,18,.42);display:flex;align-items:center;justify-content:center;padding:20px;}
.modal h2{margin:0 0 6px;font-family:"Cinzel Decorative","Times New Roman",serif;color:#5a2417;}
.modal p, .modal li{font-size:1rem;line-height:1.35;}
.modal-header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;}
.modal-body section{margin-top:14px;padding-top:14px;border-top:1px solid rgba(90,60,27,.15);}
.legend-chip{display:inline-flex;gap:8px;align-items:center;margin-right:10px;margin-top:8px;}
.legend-dot{width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 35% 35%, #f7e9c0 0, #d1b57d 30%, #6c301f 75%, #441509 100%);box-shadow:0 0 0 1px rgba(63,27,17,.6), 0 0 12px rgba(139,64,37,.3);}
.custom-marker-wrap{position:relative;width:28px;height:36px;transform:translate(-14px, -34px);}
.custom-marker{width:28px;height:36px;position:relative;}
.custom-marker svg{overflow:visible;}
.marker-highlight{width:22px;height:22px;position:absolute;left:3px;top:2px;border-radius:50%;box-shadow:0 0 0 0 rgba(155,64,36,.5);animation:none;}
.marker-active .marker-highlight{animation:pulse 1.7s infinite;}
.modal{
  width:min(860px, calc(100vw - 32px));
  max-height:85vh;
  overflow:auto;
  background:rgba(245,236,207,.98);
  border-radius:6px;
  border:1px solid rgba(83,57,30,.22);
  box-shadow:0 20px 60px rgba(0,0,0,.25);
  padding:18px;
}

.modal-close{
  border:none;
  background:#ead8aa;
  color:#4a311b;
  border-radius:6px;
  width:38px;
  height:38px;
  cursor:pointer;
}

.modal-body{
  padding:8px 10px 12px;
}

.modal-body a{
  color:#6f2617;
}
@keyframes pulse{0%{ box-shadow:0 0 0 0 rgba(155,64,36,.48);}80%{ box-shadow:0 0 0 16px rgba(155,64,36,0);}100%{ box-shadow:0 0 0 0 rgba(155,64,36,0);}}
@@media (max-width: 900px){
  .topbar{
    display:block;
  }

  .title-card{
    max-width:none;
  }

  .sources-button{
    left:16px;
    bottom:calc(var(--mobile-info-height) + 16px);
  }

  .left-panel{
    top:auto;
    left:16px;
    right:16px;
    bottom:calc(var(--mobile-info-height) + 72px);
    width:auto;
  }

  .place-list{
    max-height:120px;
  }

  .info-panel{
    width:auto;
    left:0;
    right:0;
    bottom:0;
    max-width:none;
  }

  .info-panel .panel-card{
    border-radius:6px 6px 0 0;
    min-height:var(--mobile-info-height);
    max-height:52vh;
    overflow:auto;
  }
}
@media (max-width: 640px){
  .topbar{
    top:10px;
    left:10px;
    right:10px;
  }

  .title-row img{
    width:52px;
  }

  .title-card{
    padding:11px 12px 10px;
    border-radius:6px;
  }

  .subtitle{
    font-size:.95rem;
  }

  .left-panel{
    left:10px;
    right:10px;
    bottom:calc(var(--mobile-info-height) + 12px);
  }

  .panel-card{
    padding:12px;
  }

  .info-panel{
    right:0;
    left:0;
    bottom:0;
  }

  .info-panel .panel-card{
    padding:14px 14px 12px;
  }

  .splash{
    padding:10px;
  }

  .splash-card{
    padding:16px 16px 14px;
    border-radius:6px;
  }

  .splash p{
    font-size:1.02rem;
  }
}