
/* Map 2.0 keeps the map bounded and replaces modern pin shapes with archival cartographic seals. */
#places .world-map-shell{position:relative;overscroll-behavior:contain;scrollbar-gutter:stable;background:radial-gradient(circle at 50% 35%,rgba(104,185,213,.045),transparent 45%),rgba(18,18,24,.9)}
#places .world-map{isolation:isolate}
#places .world-map::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.42;background-image:linear-gradient(rgba(210,177,116,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(210,177,116,.035) 1px,transparent 1px);background-size:54px 54px;mask-image:radial-gradient(circle at center,#000 10%,transparent 88%)}
#places .map-pin{--map2-scale:1;--map2-shape-radius:50%;min-width:52px;width:max-content;max-width:190px;transform:translate(-50%,-50%);display:grid;justify-items:center;gap:5px;padding:8px 8px 5px;border-radius:16px;filter:none;transition:transform .18s ease,filter .18s ease,opacity .18s ease;touch-action:manipulation}
#places .map-pin:hover,#places .map-pin:focus-visible{transform:translate(-50%,-50%) scale(1.06);z-index:20;filter:drop-shadow(0 8px 16px rgba(0,0,0,.5))}
#places .map-pin.dragging{transform:translate(-50%,-50%) scale(1.08)!important}
#places .map-pin-mark{position:relative;width:calc(38px * var(--map2-scale));height:calc(38px * var(--map2-scale));margin:0;border-radius:var(--map2-shape-radius);transform:none!important;display:grid;place-items:center;background:radial-gradient(circle at 35% 28%,color-mix(in srgb,var(--pin-color) 35%,#f4ead9),color-mix(in srgb,var(--pin-color) 62%,#15161c) 54%,#111218);border:1px solid color-mix(in srgb,var(--pin-color) 78%,#ead9b8);box-shadow:0 0 0 3px rgba(12,13,18,.75),0 0 0 4px color-mix(in srgb,var(--pin-color) 28%,transparent),0 6px 18px rgba(0,0,0,.46);animation:map2SealBreath 5.8s ease-in-out infinite}
#places .map-pin-mark::after{content:attr(data-map2-glyph);position:static;width:auto;height:auto;border-radius:0;background:none;color:color-mix(in srgb,var(--pin-color) 34%,#fff3d9);font:700 calc(19px * var(--map2-scale))/1 Georgia,serif;text-shadow:0 1px 0 #08090c,0 0 10px color-mix(in srgb,var(--pin-color) 28%,transparent)}
#places .map-pin[data-map2-shape="square"] .map-pin-mark{--map2-shape-radius:10px 10px 5px 10px}
#places .map-pin[data-map2-shape="soft"] .map-pin-mark{--map2-shape-radius:15px 7px 15px 7px}
#places .map-pin[data-map2-shape="danger"] .map-pin-mark{--map2-shape-radius:13px 5px 13px 5px}
#places .map-pin[data-map2-shape="wild"] .map-pin-mark{--map2-shape-radius:48% 48% 36% 48%}
#places .map-pin-label{position:relative;max-width:176px;padding:4px 8px 5px;border-radius:4px 10px 4px 10px;border:1px solid color-mix(in srgb,var(--pin-color) 25%,var(--line));background:linear-gradient(90deg,rgba(14,15,20,.9),rgba(24,22,26,.92),rgba(14,15,20,.9));font:600 11px/1.25 Georgia,serif;letter-spacing:.015em;box-shadow:0 6px 14px rgba(0,0,0,.28);white-space:normal}
#places .map-pin-label::before,#places .map-pin-label::after{content:"";position:absolute;top:50%;width:7px;height:1px;background:color-mix(in srgb,var(--pin-color) 42%,transparent)}
#places .map-pin-label::before{right:100%}#places .map-pin-label::after{left:100%}
#places .map2-state-badges{position:absolute;left:50%;top:2px;width:calc(48px * var(--map2-scale));height:calc(48px * var(--map2-scale));transform:translateX(-50%);pointer-events:none}
#places .map2-state-badge{position:absolute;display:grid;place-items:center;width:18px;height:18px;border-radius:50%;border:1px solid rgba(239,224,196,.46);background:#111219;color:#f0dfbc;font:700 10px/1 Georgia,serif;box-shadow:0 3px 9px rgba(0,0,0,.48)}
#places .map2-state-badge.current{left:-7px;bottom:-6px;width:20px;height:20px;color:#dff8ff;border-color:rgba(125,221,248,.78);background:linear-gradient(145deg,#17303a,#10151b);box-shadow:0 0 0 2px rgba(10,12,17,.76),0 0 15px rgba(104,185,213,.55);font-size:12px}
#places .map2-state-badge.quest{right:-7px;top:-7px;color:#f1d9a5;border-color:rgba(241,217,165,.58);animation:map2QuestTwinkle 2.7s ease-in-out infinite}
#places .map2-state-badge.undiscovered{left:-7px;top:-7px;color:#b8c1cc}
#places .map2-state-badge.secret{right:-7px;bottom:-6px;color:#bb91db}
#places .map-pin.map2-current .map-pin-mark{border-color:rgba(160,231,250,.92);box-shadow:0 0 0 3px rgba(12,13,18,.8),0 0 0 5px rgba(104,185,213,.3),0 0 24px rgba(104,185,213,.3),0 7px 20px rgba(0,0,0,.52)}
#places .map-pin.map2-current .map-pin-mark::before{content:"";position:absolute;inset:-10px;border:2px solid rgba(137,221,245,.78);border-radius:inherit;box-shadow:0 0 18px rgba(104,185,213,.58),inset 0 0 10px rgba(104,185,213,.12);animation:map2CurrentPulse 2.2s ease-in-out infinite}
#places .map-pin.map2-current .map-pin-label{border-color:rgba(104,185,213,.55);box-shadow:0 6px 14px rgba(0,0,0,.28),0 0 13px rgba(104,185,213,.13)}
#places .map-pin.map2-undiscovered:not(:hover):not(:focus-visible){opacity:.74}
#places .map-pin.map2-undiscovered .map-pin-mark{filter:saturate(.58) contrast(.92)}
#places .map-pin.map2-undiscovered .map-pin-label{border-style:dashed}
#places .map2-place-state-strip{display:flex;gap:5px;flex-wrap:wrap;margin:8px 0 2px}
#places .map2-place-state-strip span{display:inline-flex;align-items:center;gap:4px;padding:4px 7px;border-radius:999px;border:1px solid rgba(210,177,116,.18);background:rgba(255,255,255,.025);color:var(--muted);font-size:9px}
#places .map2-place-state-strip .current{color:#d8e8ed;border-color:rgba(104,185,213,.32)}#places .map2-place-state-strip .quest{color:#ead3a0;border-color:rgba(214,173,85,.32)}#places .map2-place-state-strip .secret{color:#c9a8e1;border-color:rgba(139,105,176,.32)}
.map2-atlas-tools{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.map2-legend{margin:0 0 12px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(135deg,rgba(18,18,24,.94),rgba(13,14,19,.94));overflow:hidden}
.map2-legend summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;cursor:pointer;color:var(--gold-2);font:600 12px Georgia,serif}.map2-legend summary::-webkit-details-marker{display:none}.map2-legend summary::after{content:"⌄";color:var(--muted);transition:transform .18s ease}.map2-legend[open] summary::after{transform:rotate(180deg)}
.map2-legend-body{display:flex;align-items:center;gap:7px 10px;flex-wrap:wrap;padding:0 12px 11px;border-top:1px solid rgba(210,177,116,.08)}
.map2-legend-section{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-top:9px}.map2-legend-title{color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.12em;margin-right:2px}
.map2-legend-chip{--legend-color:#85858f;display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border-radius:999px;border:1px solid color-mix(in srgb,var(--legend-color) 30%,var(--line));background:color-mix(in srgb,var(--legend-color) 7%,transparent);font-size:9px;color:#cfc4b7}.map2-legend-chip b{color:color-mix(in srgb,var(--legend-color) 64%,#fff);font:700 12px Georgia,serif}.map2-legend-divider{width:1px;height:22px;background:var(--line);margin:9px 2px 0}
.map2-peek{--peek-color:#d2b174;position:fixed;z-index:2800;width:min(310px,calc(100vw - 24px));padding:0;border:1px solid color-mix(in srgb,var(--peek-color) 35%,var(--line));border-radius:15px;background:rgba(13,14,19,.97);box-shadow:0 20px 50px rgba(0,0,0,.52),0 0 24px color-mix(in srgb,var(--peek-color) 9%,transparent);pointer-events:none;opacity:0;transform:translateY(5px) scale(.985);transition:opacity .13s ease,transform .13s ease;overflow:hidden}.map2-peek.visible{opacity:1;transform:none}.map2-peek-image{height:82px;background:linear-gradient(135deg,color-mix(in srgb,var(--peek-color) 16%,#26232b),#111218);background-size:cover;background-position:center}.map2-peek-copy{padding:11px 12px 12px}.map2-peek-type{color:var(--peek-color);font-size:9px;text-transform:uppercase;letter-spacing:.13em}.map2-peek h5{margin:4px 0 5px;color:#f0e4d4;font:600 17px Georgia,serif}.map2-peek p{margin:0;color:#b9afb3;font-size:11px;line-height:1.42;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.map2-peek-states{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.map2-peek-states span{font-size:9px;color:#cdbfbb}
.map2-state-editor{margin-top:3px}.map2-state-editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.map2-state-option{display:grid!important;grid-template-columns:auto auto minmax(0,1fr);gap:8px;align-items:center;margin:0!important;padding:10px;border:1px solid var(--line);border-radius:13px;background:rgba(255,255,255,.022);cursor:pointer}.map2-state-option input{margin:0}.map2-state-rune{width:28px;height:28px;display:grid;place-items:center;border:1px solid rgba(210,177,116,.22);border-radius:9px;color:var(--gold-2);font:700 15px Georgia,serif}.map2-state-option strong{display:block;color:#ddd1c0;font-size:11px}.map2-state-option small{display:block;margin-top:2px;color:var(--muted);font-size:9px;line-height:1.35}
@keyframes map2SealBreath{0%,100%{box-shadow:0 0 0 3px rgba(12,13,18,.75),0 0 0 4px color-mix(in srgb,var(--pin-color) 22%,transparent),0 6px 18px rgba(0,0,0,.46)}50%{box-shadow:0 0 0 3px rgba(12,13,18,.75),0 0 0 6px color-mix(in srgb,var(--pin-color) 12%,transparent),0 7px 20px rgba(0,0,0,.5)}}
@keyframes map2CurrentPulse{0%,100%{opacity:.45;transform:scale(.92)}50%{opacity:.95;transform:scale(1.09)}}@keyframes map2QuestTwinkle{0%,100%{transform:scale(.9);opacity:.7}50%{transform:scale(1.08);opacity:1}}
body.calm-mode #places .map-pin-mark,body.calm-mode #places .map2-state-badge.quest,body.calm-mode #places .map-pin.map2-current .map-pin-mark::before{animation:none!important}
@media(max-width:760px){.map2-state-editor-grid{grid-template-columns:1fr}.map2-legend{margin-bottom:9px}.map2-legend-body{max-height:26dvh;overflow:auto}.map2-legend-divider{display:none}#places .map-pin{max-width:150px;padding:9px 9px 5px}#places .map-pin-label{max-width:138px;font-size:10px}.map2-peek{display:none!important}}
body.editing.role-chronicler #places .map-pin,body.editing.role-editor #places .map-pin,body.editing.role-owner #places .map-pin{touch-action:none}
#localMapModal .local-map-point-mark{display:grid;place-items:center;border-radius:12px 7px 12px 7px;background:radial-gradient(circle at 35% 28%,color-mix(in srgb,var(--point-color) 32%,#f1e5cf),color-mix(in srgb,var(--point-color) 60%,#15161c) 56%,#111218);border:1px solid color-mix(in srgb,var(--point-color) 72%,#ead9b8)}
#localMapModal .local-map-point-mark::after{content:attr(data-map2-glyph);position:static;left:auto;top:auto;width:auto;height:auto;border-radius:0;background:none;transform:none;color:color-mix(in srgb,var(--point-color) 38%,#fff2d8);font:700 14px/1 Georgia,serif}
