/* ============ world map (#/map) — js/map.js ============ */
body.view-map #content{max-width:none;padding:18px clamp(12px,2vw,28px) 24px;}
.smap-page{height:calc(100vh - 42px);min-height:420px;}
@media (max-width:760px){ .smap-page{height:calc(100vh - 110px);} }

.smap-frame{
  position:relative;height:100%;overflow:hidden;border-radius:6px;
  background:#cbcdb6;
  border:1px solid #6b5536;
  box-shadow:0 0 0 4px #efe2c0, 0 0 0 5px #6b5536, var(--shadow);
  margin:5px;height:calc(100% - 10px);
  font-family:'IM Fell English',Georgia,'Times New Roman',serif;color:#3b2d1f;
  --smap-ink:#3b2d1f;--smap-paper:#f1e4c3;--smap-red:#7b2f22;
}
.smap-stage{position:absolute;inset:0;cursor:grab;touch-action:none;outline:none;user-select:none;-webkit-user-select:none;}
.smap-stage.is-dragging{cursor:grabbing;}
.smap-stage:focus-visible{box-shadow:inset 0 0 0 2px var(--smap-red);}
.smap-layer{position:absolute;inset:0;transform-origin:0 0;will-change:transform;}
.smap-svg{display:block;position:absolute;left:-25%;top:-25%;width:150%;height:150%;}
.smap-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  font-size:20px;font-style:italic;color:#5a4630;text-align:center;padding:20px;}
.smap-loading small{font-size:13px;font-style:normal;}
.smap-paper,.smap-vignette{position:absolute;inset:0;pointer-events:none;}
.smap-paper{mix-blend-mode:multiply;opacity:.55;background-size:384px 384px;}
.smap-vignette{box-shadow:inset 0 0 90px rgba(92,62,26,.45), inset 0 0 22px rgba(92,62,26,.35);}

/* layers */
.smap-svg.hide-nations .smap-layer-nations{display:none;}
.smap-svg.hide-roads .smap-layer-roads{display:none;}
.smap-svg.hide-relief .smap-layer-relief{display:none;}
.smap-svg.hide-labels .smap-layer-labels{display:none;}
.smap-svg.hide-towns .smap-burg.is-town:not(.is-linked):not(.is-selected){display:none;}

.smap-state{fill-opacity:.2;cursor:pointer;transition:fill-opacity .15s;}
.smap-state:hover{fill-opacity:.3;}
.smap-state.is-selected{fill-opacity:.36;}
.smap-halos{opacity:.33;}
.smap-layer-relief use{transform:scale(calc(var(--s,1) * var(--rinv,1)));}

.smap-nation-label,.smap-region-label{
  font-family:'IM Fell English SC','IM Fell English',Georgia,serif;
  paint-order:stroke;stroke:#ecdcb3;stroke-width:2.2px;stroke-linejoin:round;
  opacity:var(--area-label-opacity,1);
}
.smap-nation-label{fill:#6e2a1e;letter-spacing:.32em;}
.smap-region-label{fill:#3b2d1f;font-style:italic;letter-spacing:.18em;}

/* settlements: .inv counter-scales so icons stay readable at every zoom */
.smap-burg .inv{transform:scale(var(--inv,1));}
.smap-burg{cursor:pointer;}
.smap-burg .hit{fill:transparent;stroke:none;}
.smap-burg .ring{fill:#f4e8c8;stroke:var(--smap-ink);stroke-width:.9;}
.smap-burg .core{fill:var(--smap-ink);stroke:none;}
.smap-burg.is-capital .ring{stroke-width:1.1;}
.smap-burg.is-capital .core{fill:#8a2d1f;}
.smap-burg.is-town .ring{stroke-width:.75;}
.smap-burg.is-linked .ring{stroke:#8a2d1f;}
.smap-burg.is-town.is-linked .ring{fill:#8a2d1f;stroke:var(--smap-ink);}
.smap-burg:hover .ring,.smap-burg.is-selected .ring{stroke:#8a2d1f;stroke-width:1.4;}
.smap-burg.is-selected .ring{fill:#f7d98a;}
.smap-burg-label{
  text-anchor:middle;font-family:'IM Fell English',Georgia,serif;fill:var(--smap-ink);
  paint-order:stroke;stroke:#efe1bb;stroke-width:2.4px;stroke-linejoin:round;
  font-size:5.2px;pointer-events:none;
}
.smap-burg.is-city .smap-burg-label{font-size:7px;}
.smap-burg.is-capital .smap-burg-label{font-size:8.6px;font-family:'IM Fell English SC','IM Fell English',Georgia,serif;letter-spacing:.04em;}
.smap-burg.is-linked .smap-burg-label{fill:#6e2a1e;}
.smap-burg-label.is-hidden{display:none;}
/* towns: dot always visible, name only once zoomed in (or if it has a page) */
.smap-svg:not(.z-towns) .smap-burg.is-town:not(.is-linked):not(.is-selected) .smap-burg-label{display:none;}
.smap-svg:not(.z-towns) .smap-burg.is-town:not(.is-linked):not(.is-selected) .ring{stroke-width:.6;}

/* chrome */
.smap-cartouche{
  position:absolute;left:18px;top:16px;pointer-events:none;text-align:center;
  padding:8px 22px 9px;background:rgba(241,228,195,.86);
  border:1px solid #6b5536;box-shadow:0 0 0 3px rgba(241,228,195,.86), 0 0 0 4px #6b5536, 0 4px 14px rgba(60,40,15,.25);
  border-radius:3px;
}
.smap-cartouche .t{font-family:'IM Fell English SC','IM Fell English',Georgia,serif;font-size:30px;line-height:1;letter-spacing:.14em;color:#3b2d1f;}
.smap-cartouche .s{font-style:italic;font-size:13px;color:#6b5536;margin-top:3px;}
.smap-cartouche .s:empty{display:none;}
.smap-compass{position:absolute;left:14px;bottom:14px;width:104px;height:104px;pointer-events:none;opacity:.85;}
.smap-compass svg{width:100%;height:100%;overflow:visible;}
.smap-scale{position:absolute;right:18px;bottom:16px;pointer-events:none;text-align:center;
  background:rgba(241,228,195,.8);padding:6px 10px 5px;border-radius:3px;border:1px solid rgba(107,85,54,.5);}
.smap-scale .bar{display:flex;height:6px;border:1px solid #3b2d1f;margin:0 auto;}
.smap-scale .bar span{flex:1;}
.smap-scale .bar span:nth-child(odd){background:#3b2d1f;}
.smap-scale .lbl{font-size:12.5px;margin-top:3px;font-style:italic;}

.smap-tools{position:absolute;right:14px;top:14px;display:flex;flex-direction:column;align-items:flex-end;gap:8px;max-width:calc(100% - 28px);}
.smap-find{position:relative;}
.smap-find input{
  width:220px;max-width:100%;font:inherit;font-size:15px;padding:7px 11px;border-radius:4px;
  border:1px solid #6b5536;background:rgba(246,236,210,.95);color:#3b2d1f;box-shadow:0 2px 8px rgba(60,40,15,.18);
}
.smap-find input::placeholder{color:#8a7555;font-style:italic;}
.smap-find input:focus{outline:2px solid rgba(123,47,34,.45);outline-offset:1px;}
.smap-find-results{position:absolute;right:0;top:calc(100% + 4px);width:260px;max-width:80vw;z-index:3;
  background:#f6ecd2;border:1px solid #6b5536;border-radius:4px;box-shadow:0 8px 24px rgba(60,40,15,.3);padding:4px;}
.smap-find-results button{display:flex;justify-content:space-between;align-items:baseline;gap:10px;width:100%;text-align:left;
  font:inherit;font-size:15px;color:#3b2d1f;background:none;border:0;border-radius:3px;padding:6px 8px;cursor:pointer;}
.smap-find-results button small{font-size:12px;color:#7a6446;font-style:italic;white-space:nowrap;}
.smap-find-results button.on,.smap-find-results button:hover{background:#e7d4a6;}
.smap-find-results .none{padding:8px;font-style:italic;color:#7a6446;font-size:14px;}
.smap-btns{display:flex;flex-direction:column;border:1px solid #6b5536;border-radius:4px;overflow:hidden;box-shadow:0 2px 8px rgba(60,40,15,.18);}
.smap-btns button{width:36px;height:34px;font-family:Georgia,serif;font-size:19px;line-height:1;color:#3b2d1f;
  background:rgba(246,236,210,.95);border:0;border-top:1px solid rgba(107,85,54,.35);cursor:pointer;padding:0;}
.smap-btns button:first-child{border-top:0;}
.smap-btns button:hover{background:#e7d4a6;}
.smap-layers{background:#f6ecd2;border:1px solid #6b5536;border-radius:4px;padding:8px 12px;box-shadow:0 8px 24px rgba(60,40,15,.3);font-size:15px;}
.smap-layers label{display:flex;gap:8px;align-items:center;padding:3px 0;cursor:pointer;white-space:nowrap;}
.smap-layers input{accent-color:#7b2f22;}

.smap-tip{position:absolute;left:0;top:0;pointer-events:none;background:rgba(40,30,18,.9);color:#f4e8c8;
  font-size:13.5px;padding:3px 8px;border-radius:3px;white-space:nowrap;z-index:2;}

.smap-card{
  position:absolute;left:0;top:0;z-index:4;width:250px;max-width:calc(100% - 16px);
  background:#f6ecd2;border:1px solid #6b5536;border-radius:4px;padding:12px 16px 14px;
  box-shadow:0 0 0 3px #f6ecd2, 0 0 0 4px rgba(107,85,54,.5), 0 12px 30px rgba(50,32,12,.35);
}
.smap-card.is-offscreen{opacity:.0;pointer-events:none;}
.smap-card .k{font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:#7b2f22;font-family:'IM Fell English SC','IM Fell English',Georgia,serif;}
.smap-card .n{font-family:'IM Fell English SC','IM Fell English',Georgia,serif;font-size:25px;line-height:1.1;margin:2px 22px 4px 0;}
.smap-card .m{font-style:italic;color:#5c4a33;font-size:14.5px;margin-bottom:10px;}
.smap-card-link{display:inline-block;font-size:15px;color:#f6ecd2;background:#7b2f22;border-radius:3px;padding:6px 12px;text-decoration:none;}
.smap-card-link:hover{background:#5e2129;color:#fff;}
.smap-card-create{font:inherit;font-size:15px;color:#7b2f22;background:transparent;border:1px dashed #7b2f22;border-radius:3px;padding:6px 12px;cursor:pointer;}
.smap-card-create:hover{background:#efdcae;}
.smap-card-none{font-size:13.5px;color:#8a7555;font-style:italic;}
.smap-card-x{position:absolute;right:6px;top:4px;border:0;background:none;font-size:22px;line-height:1;color:#6b5536;cursor:pointer;padding:4px;}
.smap-card-x:hover{color:#7b2f22;}

@media (max-width:640px){
  .smap-cartouche{left:10px;top:10px;padding:5px 12px;}
  .smap-cartouche .t{font-size:20px;}
  .smap-compass{width:64px;height:64px;left:8px;bottom:8px;}
  .smap-tools{right:8px;top:8px;}
  .smap-find input{width:150px;font-size:14px;}
  .smap-scale{right:8px;bottom:8px;}
}

/* sidebar + home entry points */
.nav-map-link{display:flex;align-items:center;gap:9px;margin:2px 0 10px;padding:8px 10px;border-radius:7px;
  font-family:var(--font-display);font-weight:600;font-size:17px;color:var(--ink);text-decoration:none;border:1px solid var(--line-soft);}
.nav-map-link:hover{background:var(--paper-raised);}
.nav-map-link.active{border-color:var(--gold-soft);background:var(--paper-raised);}
.nav-map-link .ic{font-size:16px;line-height:1;}
.home-map-card{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 22px;padding:16px 20px;
  border-radius:var(--radius);border:1px solid var(--line);background:var(--paper-raised);box-shadow:var(--shadow);
  color:var(--ink);text-decoration:none;}
.home-map-card:hover{border-color:var(--gold-soft);}
.home-map-card .t{font-family:var(--font-display);font-size:24px;font-weight:700;}
.home-map-card .d{color:var(--ink-dim);font-size:15px;}
.home-map-card .go{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);white-space:nowrap;}
