.map-page{height:100vh;height:100dvh;overflow:hidden}.map-header{padding:0 20px}.map-shell{position:fixed;inset:68px 0 0 0;display:grid;grid-template-columns:350px 1fr;grid-template-rows:100%}.map{height:100%;min-height:0}.panel{position:relative;z-index:3;display:flex;flex-direction:column;min-height:0;padding:22px 18px 16px;gap:14px;background:var(--paper-2) var(--paper-tex);border-right:1.5px solid var(--ink-2);box-shadow:6px 0 18px rgba(60,40,15,.12)}.panel-head h1{font-family:var(--serif);font-size:34px;line-height:1.05;margin-top:4px}.panel-head h1::first-letter{color:var(--rubric)}.panel .eyebrow{font-size:15px}.search{display:flex;align-items:center;gap:10px;padding:0 14px;height:46px;background:rgba(255,252,242,.7);border:1.5px solid var(--ink-2);border-radius:4px}.search:focus-within{border-color:var(--rubric)}.search svg{width:17px;height:17px;fill:var(--ink-dim);flex:none}.search input{flex:1;min-width:0;background:none;border:0;outline:0;color:var(--ink);font:inherit;font-size:17px}.search input::placeholder{color:var(--ink-dim);font-style:italic}.cats{display:flex;flex-wrap:wrap;gap:6px}.cat{display:inline-flex;align-items:center;gap:7px;padding:4px 11px 4px 8px;border-radius:999px;font-size:15px;color:var(--ink);background:rgba(255,252,242,.55);border:1px solid var(--line-soft);transition:all .2s var(--ease)}.cat i{width:11px;height:11px;border-radius:50%;background:var(--c);border:1px solid var(--ink)}.cat small{color:var(--ink-dim);font-weight:700}.cat:hover{border-color:var(--ink-2)}.cat.off{opacity:.45;text-decoration:line-through}.places-head{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--caps);font-size:17px;color:var(--rubric);border-top:1px solid var(--line-soft);padding-top:12px}.places-head b{color:var(--ink-dim)}.places{list-style:none;overflow-y:auto;min-height:0;flex:1;margin:0 -6px;padding:0 6px}.place{display:flex;align-items:center;gap:12px;padding:8px;border-radius:4px;cursor:pointer;transition:background .2s}.place:hover,.place.sel{background:rgba(154,42,29,.08)}.place .pin-mini{width:30px;height:36px;flex:none}.place b{display:block;font-size:17px;color:var(--ink)}.place span{display:block;font-size:14px;color:var(--ink-dim);font-style:italic}.places .none{color:var(--ink-dim);font-style:italic;padding:12px 4px}.map-note{font-size:14px;font-style:italic;color:var(--ink-dim);border-left:2px solid var(--rubric);padding-left:10px}.leaflet-container{background:var(--paper-3);font-family:var(--serif)}.leaflet-control-zoom{border:1.5px solid var(--ink-2) !important;box-shadow:0 6px 16px rgba(60,40,15,.2) !important;border-radius:4px !important;overflow:hidden}.leaflet-control-zoom a{width:40px !important;height:40px !important;line-height:38px !important;font-size:22px !important;background:var(--paper-hi) !important;color:var(--ink) !important;border-color:var(--line-soft) !important}.leaflet-control-zoom a:hover{color:var(--rubric) !important}.leaflet-control-attribution{background:rgba(236,224,194,.8) !important;color:var(--ink-dim) !important;font-size:12px}.leaflet-control-attribution a{color:var(--rubric) !important}.pin{width:34px;height:42px;filter:drop-shadow(0 3px 2px rgba(40,25,10,.45));transition:transform .2s var(--ease);transform-origin:50% 100%}.pin:hover,.pin.sel{transform:scale(1.18)}.pin svg{width:100%;height:100%;overflow:visible}.pin .shield{stroke:var(--ink);stroke-width:1.8}.pin .glyph{fill:none;stroke:#1c130b;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.pin-label{position:absolute;left:50%;top:100%;transform:translate(-50%,4px);white-space:nowrap;pointer-events:none;font-family:var(--serif);font-weight:700;font-size:16px;color:var(--ink);text-shadow:0 0 3px var(--paper-hi),0 0 6px var(--paper-hi),0 0 10px var(--paper-hi);opacity:0;transition:opacity .2s}.show-labels .pin-label{opacity:1}.pin:hover .pin-label{opacity:1}.player-dot{width:14px;height:14px;border-radius:50%;background:var(--c,#fff);border:2px solid var(--ink);box-shadow:0 0 0 3px rgba(255,250,235,.7)}.leaflet-popup-content-wrapper{background:var(--paper-hi) var(--paper-tex);color:var(--ink);border:1.5px solid var(--ink-2);border-radius:3px;box-shadow:inset 0 0 0 4px var(--paper-hi),inset 0 0 0 5px var(--line-soft),0 14px 30px rgba(40,25,10,.3)}.leaflet-popup-tip{background:var(--paper-hi);border:1.5px solid var(--ink-2)}.leaflet-popup-content{margin:16px 20px;font-size:16px;line-height:1.45;min-width:210px}.leaflet-container a.leaflet-popup-close-button{color:var(--ink-dim);top:6px;right:6px}.pop-cat{font-family:var(--caps);font-size:15px;color:var(--rubric)}.pop-cat::before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--c);border:1px solid var(--ink);margin-right:6px}.pop-title{font-family:var(--serif);font-size:24px;font-weight:700;line-height:1.1;margin:2px 0 6px}.pop-text{color:var(--ink-2);font-style:italic}.pop-coords{display:flex;gap:12px;margin-top:8px;font-family:Consolas,monospace;font-size:13px;color:var(--ink-dim)}.pop-link{margin-top:8px;font-family:var(--caps);font-size:15px;color:var(--rubric);cursor:pointer}.pop-link:hover{text-decoration:underline}.coords{position:absolute;z-index:4;right:16px;bottom:16px;display:flex;gap:14px;padding:7px 14px;background:var(--paper-hi) var(--paper-tex);border:1.5px solid var(--ink-2);border-radius:3px;font-family:Consolas,monospace;font-size:13px;color:var(--ink-dim);cursor:pointer;box-shadow:0 6px 16px rgba(60,40,15,.2)}.coords b{color:var(--ink)}.panel-toggle{display:none}@media (max-width:860px){.map-shell{grid-template-columns:1fr}.panel{position:absolute;left:0;top:0;bottom:0;width:min(350px,88vw);transform:translateX(-102%);transition:transform .35s var(--ease)}.panel-open .panel{transform:none}.panel-toggle{display:grid;place-items:center;position:absolute;z-index:4;left:16px;top:16px;width:46px;height:46px;border-radius:4px;background:var(--paper-hi);border:1.5px solid var(--ink-2);box-shadow:0 6px 16px rgba(60,40,15,.2)}.panel-toggle svg{width:20px;height:20px;stroke:var(--ink);stroke-width:2;fill:none;stroke-linecap:round}.panel-open .panel-toggle{left:calc(min(350px,88vw) + 12px)}.coords{left:16px;right:auto}.leaflet-top.leaflet-left{top:70px}}