@font-face{font-family:'Nunito Cidade';src:url('/fonts/nunito-v32-latin.woff2') format('woff2');font-weight:200 900;font-display:swap}
.living-map{position:relative;flex:1;min-height:200px;height:100%;width:100%;overflow:hidden;overflow-anchor:none;border:1px solid #C9D6C4;border-radius:18px;background:#B4C5A2;touch-action:none;cursor:grab;isolation:isolate}
.living-map.dragging{cursor:grabbing}.living-map.pointing{cursor:pointer}
.living-map .cv-canvas{display:block;width:100%;height:100%;touch-action:none}
.living-map .cv-canvas:focus-visible{outline:3px solid #D9A400;outline-offset:-3px}
.living-map .cv-clock,.living-map .cv-hud{position:absolute;left:12px;display:flex;gap:6px;flex-wrap:wrap;margin:0;pointer-events:none;z-index:2;font-family:'Nunito Cidade',Arial,sans-serif}
.living-map .cv-clock{top:12px;max-width:calc(100% - 84px)}
.living-map .cv-clock span{padding:6px 10px;border-radius:8px;font-size:11px;line-height:1.35;font-weight:800;background:#243D34;color:#fff;font-variant-numeric:tabular-nums}
.living-map .cv-clock span+span{background:#F7F9F0EB;color:#284C3A;font-weight:600}
.living-map .cv-hud{right:72px;bottom:12px}
.living-map .cv-hud span{background:#F7F9F0EB;color:#284C3A;border-radius:8px;padding:6px 10px;font-size:11px;line-height:1.35;font-weight:650;font-variant-numeric:tabular-nums}
.living-map .cv-hud .cv-hint{font-weight:500;color:#5E7365}
.living-map .cv-zoom{position:absolute;right:12px;top:12px;display:flex;flex-direction:column;gap:5px;z-index:3}
.living-map .cv-zoom button{display:grid;place-items:center;min-width:44px;min-height:44px;padding:0;background:#F7F9F0F2;color:#274C3A;border:1px solid #B7C6AE;border-radius:9px;font-size:23px;line-height:1;cursor:pointer}
.living-map .cv-zoom button[data-control=motion]{font-size:16px}
.living-map .cv-card{position:absolute;left:0;top:0;padding:9px 12px;background:#243D34;color:white;border-radius:9px;pointer-events:none;z-index:4;box-shadow:0 5px 16px #163D3526;white-space:nowrap;font:600 12px/1.45 'Nunito Cidade',Arial,sans-serif}
.living-map .cv-card .lines{display:flex;flex-direction:column;font-size:10px;color:#DAE4CF}
.living-map .cv-person{position:absolute;left:0;top:0;z-index:3;pointer-events:none;background:#FFFDF5;color:#243D34;border-radius:7px;border-bottom:3px solid #D9A400;box-shadow:0 2px 6px #163D3528;padding:5px 9px;font:850 11px/1.4 'Nunito Cidade',Arial,sans-serif;white-space:nowrap}
.world-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:1}
.city-label{position:absolute;left:0;top:0;display:flex;align-items:center;justify-content:center;min-width:44px;height:44px;padding:0 7px;border:0;color:var(--tag-ink);background:transparent;font-family:'Nunito Cidade',Arial,sans-serif;pointer-events:auto;isolation:isolate;touch-action:manipulation}
.city-label::before{content:'';position:absolute;inset:10px 0;border-radius:6px;background:linear-gradient(var(--tag-secondary),var(--tag-secondary)) bottom/100% 4px no-repeat,var(--tag-primary);border:1px solid #ffffff9c;box-shadow:0 2px 3px #23423428;z-index:-1}
.city-label .label-text{display:flex;flex-direction:column;min-width:0;line-height:1.12;text-align:center}
.city-label strong{font-size:11px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.01em}
.city-label small{display:none;font-size:9px;font-weight:650;white-space:nowrap;opacity:.87;margin-top:3px}
.city-label .label-letter{display:none}
.city-label.detailed::before{inset:3px 0;border-radius:8px}
.city-label.detailed:not(.has-caption)::before{inset:8px 0;border-radius:7px}
.city-label.detailed strong{font-size:12px;letter-spacing:0}
.city-label.detailed small{display:block}
.city-label.division-label{height:48px;gap:9px;padding:6px 10px;justify-content:flex-start}
.city-label.division-label::before{inset:0;border-radius:10px;background:var(--tag-primary);border-color:#ffffffe0;box-shadow:0 3px 0 #2544371c,0 5px 12px #193d3220}
.city-label.division-label::after{content:'';position:absolute;left:calc(50% - 1px);top:100%;width:2px;height:16px;background:var(--tag-primary);border-radius:2px;pointer-events:none}
.city-label.division-label[data-dock=below]::after{top:auto;bottom:100%}
.division-label .label-letter{display:grid;place-items:center;width:28px;height:31px;flex:none;font-size:23px;font-weight:900;border-right:1px solid currentColor;padding-right:8px}
.division-label .label-text{text-align:left}
.division-label strong{font-size:13px;font-weight:900;letter-spacing:0}
.division-label small{display:block;font-size:10px}
.city-label:hover{background:transparent}
.city-label:hover::before,.city-label.selected::before{outline:2px solid #fffffff0;outline-offset:1px;box-shadow:0 3px 8px #18392d45}
.city-label:focus-visible{outline:3px solid #18392D;outline-offset:2px;border-radius:8px}

@media(max-width:540px){.living-map{border-radius:13px}.living-map .cv-hint{display:none}.living-map .cv-clock{left:9px;top:9px;gap:4px}.living-map .cv-clock span{font-size:10px;padding:5px 8px}.living-map .cv-hud{left:9px;bottom:9px;right:52px}.living-map .cv-hud span{font-size:10px;padding:5px 8px}.living-map .cv-zoom{right:9px;top:9px}.living-map .cv-card{max-width:calc(100% - 18px);white-space:normal;width:max-content}}
@media(max-width:540px){.living-map .city-label.division-label{height:44px;gap:6px;padding:5px 7px}.living-map .division-label .label-letter{width:19px;height:26px;font-size:18px;padding-right:5px}.living-map .division-label strong{font-size:11px}.living-map .division-label small{font-size:9px;margin-top:2px}}
