:root{
  --bg:#f7f3ee;
  --surface:#ffffff;
  --surface-soft:#faf7f2;
  --text:#292524;
  --muted:#78716c;
  --border:#d6d3d1;
  --brand:#166534;
  --brand-dark:#065f46;
  --danger:#dc2626;
  --shadow:0 20px 60px rgba(0,0,0,.08);
  --radius-xl:2rem;
  --radius-hero:2.5rem;
  --container:1280px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  background:var(--bg);
  color:var(--text);
}
img{max-width:100%;display:block}
a{text-decoration:none;color:inherit}
button,input{font:inherit}

.site-shell{min-height:100vh}
.container{max-width:var(--container);margin:0 auto;padding:0 24px}

.topbar{
  position:sticky;
  top:0;
  z-index:50;
  border-bottom:1px solid rgba(214,211,209,.7);
  background:rgba(247,243,238,.92);
  backdrop-filter:blur(12px);
}
.topbar-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding:16px 0;
}
.brand-mark{border:0;background:none;padding:0;cursor:pointer;text-align:left}
.brand-overline{
  margin:0;
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--brand);
}
.brand-title{margin:.2rem 0 0;font-size:1.25rem;font-weight:600}

.nav{display:flex;align-items:center;gap:32px}
.nav a,.nav button{
  border:0;
  background:none;
  padding:0;
  cursor:pointer;
  font-size:.95rem;
  font-weight:500;
  color:var(--text);
}
.nav a:hover,.nav button:hover{color:var(--brand)}

.menu-toggle{display:none;border:0;background:none;padding:0;cursor:pointer}
.mobile-nav{display:none;border-top:1px solid var(--border);padding:16px 0}
.mobile-nav.open{display:block}
.mobile-nav-inner{display:flex;flex-direction:column;gap:16px}
.mobile-nav a,.mobile-nav button{border:0;background:none;padding:0;cursor:pointer;text-align:left}

.hero-grid{
  display:grid;
  grid-template-columns:1.15fr .85fr;
  gap:40px;
  padding:64px 24px 0;
  align-items:stretch;
}
.hero-copy{display:flex;flex-direction:column;justify-content:center;gap:24px}
.eyebrow{
  margin:0;
  font-size:.82rem;
  font-weight:700;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--brand);
}
.hero-title{
  margin:0;
  max-width:760px;
  font-size:clamp(2.8rem,6vw,4.8rem);
  line-height:1.05;
  letter-spacing:-.03em;
  font-weight:600;
}
.hero-text,.section-text,.policy-body p,.coin-note{
  margin:0;
  color:var(--muted);
  line-height:1.8;
  font-size:1.05rem;
}
.button-row{display:flex;flex-wrap:wrap;gap:16px}
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  border-radius:999px;
  padding:14px 24px;
  border:1px solid transparent;
  cursor:pointer;
  transition:transform .2s ease,background .2s ease,color .2s ease,border-color .2s ease;
  font-weight:500;
}
.btn:hover{transform:translateY(-2px)}
.btn-primary{background:var(--brand-dark);color:#fff}
.btn-secondary{background:#fff;border-color:var(--border);color:var(--text)}

.hero-card{
  min-height:520px;
  border-radius:var(--radius-hero);
  overflow:hidden;
  box-shadow:0 20px 60px rgba(0,0,0,.12);
  position:relative;
}
.hero-bg{position:absolute;inset:0;background-size:cover;background-position:center}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.25),rgba(0,0,0,.1),transparent)}

.section{padding:40px 0 64px}
.section-tight-top{padding-top:40px}
.section-heading{max-width:680px}
.section-title{
  margin:.4rem 0 0;
  font-size:clamp(2rem,5vw,3.4rem);
  line-height:1.08;
  letter-spacing:-.03em;
  font-weight:600;
}
.section-text{margin-top:12px}

.card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;margin-top:40px}
.card-grid.single-card{grid-template-columns:minmax(0,1fr);max-width:640px}
.card{
  background:var(--surface);
  border-radius:var(--radius-xl);
  overflow:hidden;
  box-shadow:var(--shadow);
}
.card-image{height:288px;background-size:cover;background-position:center}
.card-body{padding:32px;display:flex;flex-direction:column;gap:16px}
.card-overline{
  margin:0;
  font-size:.82rem;
  font-weight:700;
  letter-spacing:.26em;
  text-transform:uppercase;
  color:var(--brand);
}
.card-title{margin:0;font-size:2rem;line-height:1.1;letter-spacing:-.03em;font-weight:600}
.card-action{display:inline-flex;align-items:center;gap:8px;font-size:.95rem;font-weight:700}

.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.stat-card{background:#fff;border-radius:var(--radius-xl);padding:32px;box-shadow:var(--shadow)}
.stat-label{margin:0;font-size:.82rem;letter-spacing:.25em;text-transform:uppercase;color:var(--muted)}
.stat-value{margin:12px 0 0;font-size:2.7rem;font-weight:600}

.toolbar{display:flex;flex-direction:column;gap:16px;margin-top:32px}
.toggle-row,.filter-row{display:flex;flex-wrap:wrap;gap:12px}
.pill{
  border-radius:999px;
  border:1px solid var(--border);
  background:#fff;
  color:var(--text);
  padding:10px 20px;
  cursor:pointer;
  transition:background .2s ease,color .2s ease,border-color .2s ease;
}
.pill.active{background:var(--brand-dark);color:#fff;border-color:var(--brand-dark)}
.filter-stack{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.filter-row{flex:1}
.search-wrap{
  display:flex;
  align-items:center;
  gap:12px;
  width:320px;
  flex:0 0 320px;
  border:1px solid rgba(0,0,0,.08);
  background:rgba(255,255,255,0.9);
  border-radius:999px;
  padding:12px 16px;
  color:var(--muted);
  transition:all .2s ease;
}
.search-wrap input{border:0;outline:none;background:transparent;width:100%;font:inherit}
.search-wrap input::placeholder{color:rgba(0,0,0,0.45)}
.search-wrap:hover{border-color:rgba(0,0,0,0.15)}
.search-wrap:focus-within{
  border-color:var(--brand);
  box-shadow:0 0 0 2px rgba(22,101,52,0.1);
  background:#fff;
}

.mug-grid,.coin-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:32px;
  margin-top:40px;
}
.mug-card,.coin-card,.coin-section-card,.policy-card,.map-shell,.map-side-card{
  background:#fff;
  border-radius:var(--radius-xl);
  box-shadow:var(--shadow);
}
.mug-card-header{border-bottom:1px solid #e7e5e4;background:var(--surface-soft);padding:20px 24px}
.mug-card-body{padding:24px}
.city-list{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px}
.city-button{
  border-radius:999px;
  border:1px solid var(--border);
  background:#fff;
  color:#44403c;
  padding:10px 16px;
  cursor:pointer;
  transition:border-color .2s ease,color .2s ease,background .2s ease;
}
.city-button:hover{border-color:#78716c;color:#1c1917}

.coin-card{padding:32px;display:flex;flex-direction:column;gap:16px;transition:transform .2s ease}
.coin-card:hover{transform:translateY(-6px)}
.coin-section-grid{display:grid;gap:24px;margin-top:48px}
.coin-section-card{padding:32px}
.coin-section-title{
  margin:0;
  font-size:1rem;
  font-weight:700;
  letter-spacing:.26em;
  text-transform:uppercase;
  color:var(--brand);
}
.coin-section-subtitle{margin:12px 0 0;font-size:1rem;color:var(--muted);line-height:1.7}

.policy-wrap{max-width:896px;margin:0 auto;padding:48px 24px 64px}
.back-btn{
  margin-bottom:32px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  border:1px solid var(--border);
  border-radius:999px;
  padding:10px 16px;
  background:#fff;
  font-size:.95rem;
  font-weight:700;
  transition:background .2s ease;
}
.back-btn:hover{background:#f5f5f4}
.policy-card{padding:40px}
.policy-meta{margin-top:16px;font-size:.82rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
.policy-stack{display:grid;gap:32px;margin-top:32px}
.policy-stack h3{margin:0;font-size:1.25rem}
.policy-stack p{margin-top:12px}

.map-layout{
  display:grid;
  grid-template-columns:minmax(0,1.9fr) minmax(280px,.9fr);
  gap:24px;
  margin-top:32px;
  align-items:start;
}
.map-shell{overflow:hidden}
.map-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:20px 24px;
  border-bottom:1px solid #e7e5e4;
  background:var(--surface-soft);
  flex-wrap:wrap;
}
.map-controls{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.map-search{
  display:flex;
  align-items:center;
  gap:12px;
  min-width:260px;
  padding:10px 14px;
  border:1px solid rgba(0,0,0,.08);
  border-radius:999px;
  background:#fff;
  color:var(--muted);
}
.map-search input{border:0;outline:none;background:transparent;width:100%}
.map-search:focus-within{border-color:var(--brand);box-shadow:0 0 0 2px rgba(22,101,52,.1)}
.map-meta{font-size:.95rem;color:var(--muted)}
.map-canvas{height:680px;width:100%}
.map-side-stack{display:grid;gap:24px}
.map-side-card{padding:24px}
.legend-list{display:grid;gap:14px;margin-top:16px}
.legend-item{display:flex;align-items:center;gap:12px;color:var(--text)}
.legend-swatch{
  width:14px;
  height:14px;
  border-radius:999px;
  box-shadow:0 0 0 4px rgba(0,0,0,.05);
}
.legend-swatch.yah{background:#065f46}
.legend-swatch.been-there{background:#7dd3fc}
.legend-swatch.disney{background:#113CCF}
.legend-swatch.universal{background:#f97316}
.legend-swatch.campus{background:#6b7280}
.legend-swatch.wants{background:var(--danger)}
.map-note{margin-top:16px;color:var(--muted);line-height:1.7}
.map-empty{
  padding:24px;
  color:var(--muted);
  font-size:.98rem;
}
.map-stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:20px}
.map-stat{
  background:var(--surface-soft);
  border-radius:1.25rem;
  padding:18px;
}
.map-stat strong{display:block;font-size:1.8rem;margin-top:8px;color:var(--text)}
.map-list{display:grid;gap:12px;margin-top:18px;max-height:360px;overflow:auto;padding-right:4px}
.map-list-item{
  padding:14px 16px;
  border:1px solid #ebe7e2;
  border-radius:1rem;
  background:#fff;
}
.map-list-item h4{margin:0 0 8px;font-size:1rem}
.map-list-item p{margin:0;color:var(--muted);line-height:1.6;font-size:.94rem}
.status-chip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:6px 10px;
  border-radius:999px;
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:10px;
}
.status-chip.collection{background:rgba(6,95,70,.12);color:var(--brand-dark)}
.status-chip.wants{background:rgba(220,38,38,.12);color:var(--danger)}
.map-popup{min-width:220px}
.map-popup h3{margin:0 0 10px;font-size:1.1rem;line-height:1.2}
.map-popup p{margin:0;color:var(--muted);line-height:1.6}
.map-popup p + p{margin-top:10px}
.map-popup .status-chip{margin-top:0}

.map-pin{
  position:relative;
  display:block;
  width:22px;
  height:22px;
  border-radius:50%;
  border:2px solid #fff;
  box-shadow:0 8px 18px rgba(0,0,0,.28);
}

.map-pin::before{
  content:"";
  position:absolute;
  left:50%;
  bottom:-7px;
  width:12px;
  height:12px;
  transform:translateX(-50%) rotate(45deg);
  background:inherit;
  border-right:2px solid #fff;
  border-bottom:2px solid #fff;
  border-radius:0 0 3px 0;
}

.map-pin::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:8px;
  height:8px;
  transform:translate(-50%,-50%);
  background:#fff;
  border-radius:50%;
  z-index:1;
}

.map-pin.yah{background:#065f46}
.map-pin.been-there{background:#7dd3fc}
.map-pin.disney{background:#113CCF}
.map-pin.universal{background:#f97316}
.map-pin.campus{background:#6b7280}
.map-pin.wants{background:var(--danger)}

.map-cluster{
  background:rgba(55,65,81,.92);
  border:3px solid #fff;
  border-radius:999px;
  box-shadow:0 8px 18px rgba(0,0,0,.18);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:700;
}
.map-cluster span{line-height:1}
.map-cluster-small{width:40px;height:40px}
.map-cluster-medium{width:46px;height:46px}
.map-cluster-large{width:52px;height:52px}

.leaflet-div-icon{
  background:transparent;
  border:0;
}
.leaflet-popup-content-wrapper{border-radius:1rem;box-shadow:0 20px 60px rgba(0,0,0,.15)}
.leaflet-popup-content{margin:16px 18px}

.footer{border-top:1px solid var(--border);background:var(--bg);margin-top:32px}
.footer-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:24px 0;
  font-size:.95rem;
  color:var(--muted);
}
.footer-links{display:flex;flex-wrap:wrap;gap:16px}
.footer-links a,.footer-links button{
  border:0;
  border-radius:999px;
  background:none;
  padding:6px 12px;
  cursor:pointer;
  color:inherit;
  transition:background .2s ease,color .2s ease;
}
.footer-links a:hover,.footer-links button:hover{background:#ede7dd;color:var(--text)}

.modal{
  position:fixed;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  background:rgba(0,0,0,.45);
  padding:24px;
  z-index:80;
}
.modal.open{display:flex}
.modal-card{
  width:min(100%,760px);
  background:#fff;
  border-radius:var(--radius-xl);
  box-shadow:0 20px 80px rgba(0,0,0,.18);
  padding:32px;
}
.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}
.modal-close{
  border:1px solid var(--border);
  background:#fff;
  border-radius:999px;
  width:40px;
  height:40px;
  display:grid;
  place-items:center;
  cursor:pointer;
}
.modal-close:hover{background:#fafaf9}
.modal-panel{margin-top:32px;background:var(--surface-soft);border-radius:1.5rem;padding:24px}
.modal-panel p{margin:0}
.modal-panel p+p{margin-top:16px}


.mug-shop-panel{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:8px;
}

.mug-shop-image-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:0;
  border:0;
  background:transparent;
  padding:0;
  margin:0;
}

.mug-shop-image-link:hover{
  transform:translateY(-1px);
}

.mug-shop-image{
  display:block !important;
  width:110px !important;
  height:55px !important;
  max-width:110px !important;
  object-fit:contain;
  border:0 !important;
}

.mug-shop-note{
  margin:8px 0 0;
  max-width:260px;
  text-align:center;
  color:var(--muted);
  font-size:.72rem;
  line-height:1.45;
}

.map-popup-action{
  margin-top:14px;
  display:flex;
  flex-direction:column;
  align-items:center;
}

.map-popup-shop-note{
  max-width:200px;
}

.icon-arrow,.icon-search{font-size:1rem}
.icon-menu{font-size:1.4rem;line-height:1}

@media (max-width:1100px){
  .map-layout{grid-template-columns:1fr}
}

@media (max-width:980px){
  .nav{display:none}
  .menu-toggle{display:block}

  .hero-grid,
  .card-grid,
  .mug-grid,
  .coin-grid,
  .stats-grid{grid-template-columns:1fr}

  .hero-grid{padding-top:48px}

  .section{padding:28px 0 44px}
  .container{padding:0 16px}
  .section-heading{max-width:100%}
  .section-title{
    font-size:clamp(1.9rem,8vw,2.5rem);
    line-height:1.08;
    letter-spacing:-.03em;
  }
  .section-text{font-size:.98rem;line-height:1.7}

  .toolbar{gap:14px;margin-top:24px}
  .toggle-row,.filter-row{gap:10px}
  .pill{padding:10px 16px;font-size:.95rem}
  .filter-stack{display:flex;flex-direction:column;gap:14px}

  .search-wrap{width:100%;flex:unset;padding:12px 14px;border-radius:18px}
  .search-wrap input{font-size:14px}

  .mug-grid{gap:18px;margin-top:28px}
  .mug-card{border-radius:1.4rem;overflow:hidden}
  .mug-card-header{padding:18px 18px 16px}
  .mug-card-header .card-title{font-size:1.35rem !important;line-height:1.15}
  .mug-card-body{padding:18px}
  .city-list{gap:10px;margin-top:12px}
  .city-button{
    padding:10px 14px;
    font-size:.95rem;
    line-height:1.25;
    max-width:100%;
    white-space:normal;
    overflow-wrap:anywhere;
  }

  .map-toolbar{padding:18px}
  .map-controls{width:100%}
  .map-search{width:100%;min-width:0}
  .map-canvas{height:520px}

  .modal{padding:14px}
  .modal-card{padding:20px;border-radius:1.4rem}
  .modal-panel{margin-top:18px;padding:18px;border-radius:1.1rem}

  .footer-inner{flex-direction:column;align-items:flex-start}
}

@media (max-width:640px){
  .topbar-inner{gap:12px;padding:12px 0}
  .brand-overline{font-size:.62rem;letter-spacing:.22em}
  .brand-title{font-size:1rem}

  .section{padding:24px 0 38px}
  .container{padding:0 14px}
  .section-title{font-size:clamp(1.75rem,8.5vw,2.2rem)}

  .card-overline,
  .stat-label,
  .policy-meta,
  .eyebrow{letter-spacing:.18em}

  .pill,
  .city-button{border-radius:999px}

  .map-canvas{height:460px}
  .map-stat-grid{grid-template-columns:1fr}
}
.seo-mug-list{margin:14px 0 0;padding-left:1.2rem;color:var(--text);line-height:1.8}.seo-mug-list li{margin:.25rem 0}
