.map-toolbar { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin:8px 0; }
.map-toolbar .btn { padding:6px 12px; font-size:0.85rem; }
.map-toolbar .tool-btn.active { outline:2px solid var(--accent-color, #5865f2); }
.map-zoom-scroll { overflow:hidden; max-width:100%; position:relative; touch-action:none; cursor:grab; border:1px solid var(--border-color); border-radius:10px; background:#111; }
.map-zoom-scroll.is-panning { cursor:grabbing; }
.map-viewport-wrap { position:relative; display:block; width:100%; max-width:100%; overflow:visible; background:transparent; will-change:transform; }
#map-image { display:block; width:100%; height:auto; user-select:none; -webkit-user-drag:none; user-drag:none; pointer-events:auto; }
#map-canvas { position:absolute; inset:0; touch-action:none; }
#map-pois-layer { position:absolute; inset:0; pointer-events:none; }
.map-poi-marker {
    position:absolute; transform:translate(-50%,-50%); pointer-events:auto; cursor:pointer;
    width:30px; height:30px; display:flex; align-items:center; justify-content:center;
    font-size:18px; border-radius:50%; background:rgba(20,20,20,0.75); border:2px solid #fff;
    box-shadow:0 2px 6px rgba(0,0,0,0.4); user-select:none;
}
.map-poi-marker.on-cooldown { box-shadow:0 0 0 3px #e74c3c, 0 2px 6px rgba(0,0,0,0.4); }
.map-poi-marker.scout-covered {
    background: rgba(88, 101, 242, 0.4);
}
.map-poi-marker.scout-mine {
    background: rgba(241, 196, 15, 0.5);
}
.map-poi-marker.scout-not-here {
    background: rgba(231, 76, 60, 0.45);
}
.map-poi-marker.spawn-reported {
    box-shadow: 0 0 0 3px #e74c3c, 0 2px 6px rgba(0,0,0,0.4);
    z-index: 12;
}
.map-poi-marker.spawn-reported.scout-covered {
    background: rgba(88, 101, 242, 0.48);
}
.map-poi-marker.spawn-reported.scout-mine {
    background: rgba(241, 196, 15, 0.55);
}
.map-poi-marker.is-pending {
    opacity: 0.45;
    filter: grayscale(0.85);
    box-shadow: 0 0 0 2px rgba(140, 140, 140, 0.7), 0 2px 6px rgba(0,0,0,0.35);
}
.map-poi-marker.placing-preview { opacity:0.6; }
.map-poi-marker.editable { cursor:grab; }
.map-poi-marker.dragging { cursor:grabbing; opacity:0.85; z-index:20; }
.map-poi-cooldown-badge {
    position:absolute; top:100%; left:50%; transform:translate(-50%,4px);
    background:#e74c3c; color:#fff; font-size:11px; font-weight:600; line-height:1;
    padding:2px 6px; border-radius:10px; white-space:nowrap; pointer-events:none;
    box-shadow:0 1px 3px rgba(0,0,0,0.5);
}
.poi-done-history { margin-top:16px; padding-top:14px; border-top:1px solid var(--border-color); }
.poi-done-history h4 { margin:0 0 8px; font-size:0.95rem; }
.poi-done-comment-input {
    display:block; width:100%; box-sizing:border-box; margin-bottom:6px;
    padding:5px 6px; border-radius:6px; border:1px solid var(--border-color);
    background:var(--card-bg); color:var(--text-primary); font-size:0.78rem;
}
.poi-done-add-row {
    display:flex; gap:6px; flex-wrap:nowrap; align-items:center; margin-bottom:10px;
}
.poi-done-add-row input[type="datetime-local"] {
    flex:1 1 0; min-width:0; width:0; max-width:100%;
    padding:5px 6px; border-radius:6px; border:1px solid var(--border-color);
    background:var(--card-bg); color:var(--text-primary); font-size:0.78rem;
}
.poi-done-add-row .btn {
    flex:0 0 auto; white-space:nowrap; padding:5px 10px; font-size:0.82rem;
}
.poi-custom-cooldown-row {
    display:flex; gap:6px; flex-wrap:nowrap; align-items:center;
}
.poi-custom-cooldown-row input[type="number"] {
    flex:1 1 0; min-width:0; width:0; max-width:100%;
    padding:5px 6px; border-radius:6px; border:1px solid var(--border-color);
    background:var(--card-bg); color:var(--text-primary); font-size:0.78rem;
}
.poi-custom-cooldown-row .btn {
    flex:0 0 auto; white-space:nowrap; padding:5px 10px; font-size:0.82rem;
}
.poi-done-history-list { list-style:none; margin:0; padding:0; max-height:220px; overflow-y:auto; }
.poi-done-history-list li {
    padding:8px 10px; border:1px solid var(--border-color); border-radius:8px; margin-bottom:6px;
    font-size:0.85rem; background:rgba(0,0,0,0.15);
}
.poi-done-history-list li .poi-done-entry-row {
    display:flex; align-items:center; justify-content:space-between; gap:8px;
}
.poi-done-history-list li .poi-done-delete-btn {
    flex:0 0 auto; background:none; border:none; cursor:pointer; font-size:0.85rem;
    line-height:1; padding:2px 4px; border-radius:4px; opacity:0.7;
}
.poi-done-history-list li .poi-done-delete-btn:hover:not(:disabled) { opacity:1; background:rgba(231,76,60,0.15); }
.poi-done-history-list li .poi-done-delete-btn:disabled { opacity:0.4; cursor:default; }
.poi-done-history-list li .poi-done-comment {
    font-size:0.82rem; margin-top:3px; white-space:pre-wrap; overflow-wrap:anywhere;
}
.poi-done-history-list li .poi-done-meta { color:var(--text-secondary); font-size:0.78rem; margin-top:2px; }
.poi-done-history-empty { color:var(--text-secondary); font-size:0.85rem; margin:0; }
#map-stroke-edit-layer { position:absolute; inset:0; pointer-events:none; }
.map-stroke-handle {
    position:absolute; width:14px; height:14px; border-radius:50%; background:#fff;
    border:2px solid var(--accent-color, #5865f2); transform:translate(-50%,-50%);
    cursor:pointer; pointer-events:auto; z-index:15; box-shadow:0 1px 4px rgba(0,0,0,0.4);
}
.map-stroke-handle-move {
    border-radius:4px; background:var(--accent-color, #5865f2); border-color:#fff;
    width:12px; height:12px; cursor:move;
}
.map-stroke-toolbar {
    position:absolute; transform:translate(-50%, calc(-100% - 20px)); display:flex; gap:6px; align-items:center;
    background:var(--card-bg); border:1px solid var(--border-color); border-radius:8px; padding:4px 6px;
    z-index:16; pointer-events:auto; box-shadow:0 2px 8px rgba(0,0,0,0.35);
}
.map-stroke-toolbar input[type="color"] { width:26px; height:22px; padding:0; border:none; background:none; cursor:pointer; }
.map-stroke-toolbar button { border:none; background:none; cursor:pointer; font-size:0.95rem; padding:2px 4px; }
#map-placement-overlay { position:absolute; inset:0; cursor:crosshair; display:none; z-index:5; }
.map-detail-page { padding:10px 12px 14px; }
.map-detail-hub { width:100%; max-width:none; margin:0; padding:0; box-sizing:border-box; }
/* Edit mode is local/session-only (default off). Hide canvas edit chrome until enabled in Map settings. */
.map-detail-hub:not(.map-edit-mode) .map-edit-only { display: none !important; }
.map-local-edit-mode {
    margin: 0 0 16px;
    padding: 12px;
    border: 1px solid var(--border-color);
    border-radius: 10px;
    background: rgba(128,128,128,0.08);
}
.map-local-edit-mode label {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    cursor: pointer;
    font-weight: 600;
    margin: 0;
}
.map-local-edit-mode input { margin-top: 3px; }
.map-local-edit-mode small {
    display: block;
    margin: 8px 0 0 26px;
    color: var(--text-secondary);
    font-weight: 400;
    line-height: 1.4;
}
.map-detail-back { margin:0 0 6px; }
.map-detail-header {
    display:flex; justify-content:space-between; align-items:flex-start; flex-wrap:wrap; gap:10px;
    position:sticky; top:0; z-index:40; background:var(--card-bg);
    margin:0 -12px 8px; padding:10px 12px; border-bottom:1px solid var(--border-color);
}
.map-zoom-row { display:flex; align-items:center; gap:10px; margin:8px 0; flex-wrap:wrap; }
.map-zoom-row .map-zoom-label { font-size:0.85rem; color:var(--text-secondary); flex-shrink:0; }
.map-zoom-row input[type="range"] { flex:0 0 auto; width:180px; max-width:40vw; accent-color:var(--accent-color, #5865f2); }
.map-zoom-row .map-zoom-value { font-size:0.8rem; color:var(--text-secondary); min-width:3.6em; }
.map-zoom-row .btn { padding:4px 10px; font-size:0.8rem; }
.map-zoom-hint { font-size:0.78rem; color:var(--text-secondary); margin:0 0 6px; }
.map-detail-layout { display:flex; gap:14px; align-items:stretch; width:100%; }
.map-detail-main { flex:1 1 0; min-width:0; }
.map-detail-side {
    flex:0 0 340px; width:340px; max-width:340px; min-width:260px;
}
.map-detail-info-panel {
    position:sticky; top:calc(var(--map-header-h, 64px) + 12px);
    max-height:calc(100vh - var(--map-header-h, 64px) - 28px); overflow-y:auto;
    overflow-x:hidden;
    padding:14px 16px 16px; border:1px solid var(--border-color); border-radius:10px;
    background:var(--card-bg);
}
.map-detail-info-panel.has-selection { padding-right:36px; }
.map-info-panel-empty {
    margin:0; color:var(--text-secondary); font-size:0.88rem; line-height:1.45;
    white-space:normal; overflow-wrap:anywhere; word-break:break-word;
}
.map-side-subtabs {
    display:flex; gap:0; margin:0 0 12px;
    border:1px solid var(--border-color); border-radius:8px;
    overflow:hidden; background:rgba(0,0,0,0.18);
}
.map-side-subtab {
    flex:1 1 0; min-width:0;
    appearance:none; -webkit-appearance:none;
    margin:0; border:0; border-radius:0;
    background:transparent; cursor:pointer;
    padding:7px 8px; font:inherit; font-size:0.78rem; font-weight:600;
    line-height:1.2; color:var(--text-secondary);
    text-align:center; box-shadow:none;
    transition:background 0.15s ease, color 0.15s ease;
}
.map-side-subtab + .map-side-subtab {
    border-left:1px solid var(--border-color);
}
.map-side-subtab:hover {
    color:var(--text-primary);
    background:rgba(255,255,255,0.04);
    transform:none; box-shadow:none;
}
.map-side-subtab:focus-visible {
    outline:2px solid rgba(88,101,242,0.65);
    outline-offset:-2px; z-index:1;
}
.map-side-subtab.is-active {
    color:var(--text-primary);
    background:rgba(88,101,242,0.22);
}
.map-scout-leaderboard-hint {
    margin:0 0 12px; font-size:0.78rem; color:var(--text-secondary); line-height:1.4;
    overflow-wrap:anywhere; word-break:break-word;
}
.map-scout-lb-server { margin:0 0 14px; }
.map-scout-lb-server:last-child { margin-bottom:0; }
.map-scout-lb-server-head {
    display:flex; align-items:baseline; justify-content:space-between; gap:8px;
    margin:0 0 6px;
}
.map-scout-lb-server-name {
    margin:0; font-size:0.86rem; font-weight:700; line-height:1.3;
    overflow-wrap:anywhere; word-break:break-word; min-width:0;
}
.map-scout-lb-server-count {
    flex-shrink:0; font-size:0.72rem; color:var(--text-secondary); white-space:nowrap;
}
.map-scout-lb-reporters {
    list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px;
}
.map-scout-lb-reporter {
    display:flex; align-items:baseline; justify-content:space-between; gap:8px;
    padding:6px 8px; border-radius:6px;
    border:1px solid var(--border-color);
    background:var(--command-section-bg, rgba(128,128,128,0.06));
    font-size:0.8rem; line-height:1.3;
}
.map-scout-lb-rank { color:var(--text-secondary); font-weight:600; margin-right:4px; }
.map-scout-lb-name { min-width:0; overflow-wrap:anywhere; word-break:break-word; }
.map-scout-lb-stats {
    flex-shrink:0; font-size:0.72rem; color:var(--text-secondary); white-space:nowrap;
}
.map-region-timers { margin-top:16px; }
.map-page-region-group + .map-page-region-group { margin-top:18px; }
.map-page-region-group .map-region-scout-host { margin-top:10px; }
.map-page-region-group .map-region-scout { margin-top:0; }
.map-page-region-group .map-region-scout + .map-region-scout { margin-top:10px; }
.map-region-scout { margin-top:16px; }
.map-other-cooldowns { margin-top:16px; }
.map-region-scout-heading {
    margin:0 0 6px; font-size:0.82rem; font-weight:600; color:var(--text-secondary);
    text-transform:uppercase; letter-spacing:0.04em;
}
.map-region-scout-hint {
    margin:0 0 10px; font-size:0.8rem; color:var(--text-secondary); line-height:1.4;
}
.map-region-scout-list { display:flex; flex-direction:column; gap:8px; }
.map-region-scout-row {
    display:flex; align-items:flex-start; gap:8px; padding:10px 12px;
    border:1px solid var(--border-color); border-radius:8px;
    background:var(--command-section-bg, rgba(128,128,128,0.06));
    cursor:pointer;
}
.map-region-scout-row:hover {
    border-color:rgba(88, 101, 242, 0.45);
}
.map-region-scout-row:focus-visible {
    outline:2px solid rgba(88, 101, 242, 0.65);
    outline-offset:2px;
}
/* Covered = blue; your claim = yellow; not here = red. Buttons follow Discord. */
.map-region-scout-row.is-covered {
    border-color:rgba(88, 101, 242, 0.5);
    background:rgba(88, 101, 242, 0.12);
}
.map-region-scout-row.is-mine {
    border-color:rgba(241, 196, 15, 0.65);
    background:rgba(241, 196, 15, 0.16);
}
.map-region-scout-row.is-not-here {
    border-color:rgba(231, 76, 60, 0.65);
    background:rgba(231, 76, 60, 0.16);
}
/* Spawn report = red accent ring, same signal as map markers. */
.map-region-scout-row.is-spawn-reported {
    box-shadow:0 0 0 2px #e74c3c;
    border-color:rgba(231, 76, 60, 0.85);
}
.map-region-scout-row.is-spawn-reported.is-covered {
    background:rgba(88, 101, 242, 0.16);
}
.map-region-scout-row.is-spawn-reported.is-mine {
    background:rgba(241, 196, 15, 0.18);
}
.map-region-scout-main { flex:1; min-width:0; }
.map-region-scout-title { margin:0 0 4px; font-size:0.92rem; font-weight:600; line-height:1.3; }
.map-region-scout-count {
    display:inline-block; margin-left:4px; font-size:0.78rem; font-weight:600;
    color:var(--text-secondary);
}
.map-region-scout-not-here-tag {
    display:inline-block; margin-left:6px; font-size:0.72rem; font-weight:700;
    color:#e74c3c; text-transform:uppercase; letter-spacing:0.02em;
}
.map-region-scout-spawn-tag {
    display:inline-block; margin-left:6px; font-size:0.72rem; font-weight:700;
    color:#e74c3c; text-transform:uppercase; letter-spacing:0.02em;
}
.map-region-scout-spawn-banner {
    margin:0 0 10px; padding:6px 10px; border-radius:6px;
    font-size:0.82rem; font-weight:700; color:#fff; background:#e74c3c;
    text-transform:uppercase; letter-spacing:0.03em;
}
.map-region-scout-custom-banner {
    margin:0 0 10px; padding:8px 10px; border-radius:6px;
    border:1px solid rgba(231, 76, 60, 0.45);
    background:rgba(231, 76, 60, 0.12);
    font-size:0.85rem; color:var(--text-primary);
}
.map-region-scout-custom-banner strong {
    display:block; color:#e74c3c; font-size:0.82rem; font-weight:700;
    text-transform:uppercase; letter-spacing:0.03em;
}
.map-region-scout-custom-note,
.map-region-scout-report-note {
    margin:6px 0 0; font-size:0.82rem; color:var(--text-secondary);
    white-space:pre-wrap; word-break:break-word; line-height:1.35;
}
.map-region-scout-report-through {
    margin:4px 0 0; font-size:0.78rem; color:var(--text-secondary);
    font-style:italic;
}
.map-region-scout-names {
    margin:0; font-size:0.8rem; color:var(--text-secondary); line-height:1.35;
    word-break:break-word;
}
.map-region-scout-none { opacity:0.7; font-style:italic; }
.map-region-scout-action { flex-shrink:0; align-self:center; }
.map-region-scout-action-stack {
    display:flex; flex-direction:column; align-items:flex-end; gap:6px;
}
.map-region-scout-you {
    font-size:0.78rem; font-weight:600; color:#f1c40f; white-space:nowrap;
}
.map-region-scout-empty { margin:0; font-size:0.85rem; color:var(--text-secondary); }
.map-region-scout-cover-btn,
.map-region-scout-not-here-btn,
.map-region-scout-report-btn { padding:4px 10px; font-size:0.78rem; }
.map-region-scout-report-btn.btn-success {
    background:#248046 !important;
    color:#fff !important;
}
.map-region-scout-report-btn.btn-success:hover {
    background:#1a6334 !important;
}
.map-region-scout-cover-btn.btn-primary {
    background:#5865f2 !important;
    color:#fff !important;
}
.map-region-scout-cover-btn.btn-primary:hover {
    background:#4752c4 !important;
}
.map-region-scout-cover-btn.btn-secondary {
    background:#4e5058 !important;
    color:#dbdee1 !important;
}
.map-region-scout-cover-btn.btn-secondary:hover {
    background:#6d6f78 !important;
}
.map-region-scout-cover-btn.btn-danger,
.map-region-scout-not-here-btn.btn-danger {
    background:#e74c3c !important;
    color:#fff !important;
}
.map-region-scout-cover-btn.btn-danger:hover,
.map-region-scout-not-here-btn.btn-danger:hover {
    background:#c0392b !important;
}
.map-active-cooldowns { margin-top:16px; }
.map-active-cooldowns-heading {
    margin:0 0 10px; font-size:0.82rem; font-weight:600; color:var(--text-secondary);
    text-transform:uppercase; letter-spacing:0.04em;
}
.map-cooldown-list { display:flex; flex-direction:column; gap:10px; }
.map-cooldown-list-item {
    display:flex; align-items:flex-start; gap:8px; padding:10px 12px;
    border:1px solid var(--border-color); border-radius:8px;
    background:var(--command-section-bg, rgba(128,128,128,0.06));
}
.map-cooldown-list-open {
    flex:1; min-width:0; margin:0; padding:0; border:none; background:none;
    text-align:left; cursor:pointer; color:inherit; font:inherit;
}
.map-cooldown-list-open:hover .map-cooldown-list-title { color:var(--accent-color, #5865f2); }
.map-cooldown-list-title { margin:0 0 4px; font-size:0.95rem; font-weight:600; line-height:1.3; }
.map-cooldown-list-desc {
    margin:0 0 6px; font-size:0.82rem; color:var(--text-secondary); line-height:1.4;
    white-space:pre-wrap; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.map-cooldown-list-timing {
    margin:0; font-size:0.82rem; color:var(--text-secondary); line-height:1.35;
}
.map-cooldown-list-in { font-weight:600; color:var(--text-primary); }
.map-cooldown-list-item.is-over {
    border-color:rgba(231, 76, 60, 0.38);
    background:rgba(231, 76, 60, 0.09);
}
.map-cooldown-list-item.is-over .map-cooldown-list-in { color:#e57373; }
.map-cooldown-list-item.is-low {
    border-color:rgba(241, 196, 15, 0.45);
    background:rgba(241, 196, 15, 0.1);
}
.map-cooldown-list-item.is-low .map-cooldown-list-in { color:#e6b800; }
.map-cooldown-page-group + .map-cooldown-page-group { margin-top:14px; }
.map-cooldown-page-heading {
    margin:0 0 8px; font-size:0.84rem; font-weight:600; color:var(--text-primary);
}
.map-cooldown-list-sep { opacity:0.55; }
.map-cooldown-reset-btn { flex-shrink:0; padding:4px 10px; font-size:0.78rem; align-self:center; }
.map-info-panel-close {
    position:absolute; top:10px; right:12px; background:none; border:none; font-size:1.3rem;
    cursor:pointer; color:var(--text-secondary); display:none;
}
.map-detail-info-panel.has-selection .map-info-panel-close { display:block; }
.map-settings-drawer {
    position:fixed; top:0; right:0; height:100%; width:min(360px, 100vw);
    background:var(--card-bg); border-left:1px solid var(--border-color);
    box-shadow:-8px 0 24px rgba(0,0,0,0.35); transform:translateX(100%);
    transition:transform 0.2s ease; z-index:2000; overflow-y:auto; padding:18px;
}
.map-settings-drawer.open { transform:translateX(0); }
.map-settings-drawer .map-drawer-close { position:absolute; top:12px; right:14px; background:none; border:none; font-size:1.3rem; cursor:pointer; color:var(--text-secondary); }
@media (max-width: 900px) {
    .map-detail-layout { flex-direction:column; }
    .map-detail-side { flex:1 1 auto; width:100%; max-width:none; min-width:0; }
}
@media (max-width: 768px) {
    .map-detail-page { padding:60px 10px 12px; }
    .map-detail-header { margin:0 -10px 8px; padding:8px 10px; top:0; }
    .map-zoom-row input[type="range"] { width:140px; }
}
.map-visibility-badge { display:inline-block; font-size:0.7rem; font-weight:600; padding:2px 8px; border-radius:999px; margin-left:6px; }
.map-visibility-badge.public { background:rgba(46, 204, 113, 0.18); color:#2ecc71; }
.map-visibility-badge.private { background:rgba(231, 76, 60, 0.18); color:#e74c3c; }
.editor-pill { display:inline-flex; align-items:center; gap:6px; padding:4px 10px; border-radius:999px; background:var(--command-section-bg); font-size:0.82rem; margin:2px; }
.editor-pill button { border:none; background:none; cursor:pointer; color:var(--text-secondary); font-size:1rem; }
.map-scout-ban-by-id {
    display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-top:10px;
}
.map-scout-ban-by-id input {
    flex:1; min-width:180px; padding:6px 8px; border-radius:6px;
    border:1px solid var(--border-color); background:var(--card-bg); color:var(--text-primary);
    font-size:0.85rem;
}
.map-share-box { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.map-share-box input { flex:1; min-width:180px; padding:6px 8px; border-radius:6px; border:1px solid var(--border-color); background:var(--card-bg); color:var(--text-primary); }
.map-page-tabs { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin:8px 0 0; }
.map-page-tab {
    display:flex; align-items:center; gap:6px; padding:4px 6px 4px 4px; border-radius:8px;
    border:1px solid var(--border-color); background:var(--card-bg); text-decoration:none; color:var(--text-primary);
    font-size:0.82rem; position:relative;
}
.map-page-tab.active { border-color:var(--accent-color, #5865f2); box-shadow:0 0 0 1px var(--accent-color, #5865f2) inset; }
.map-page-tab img { width:44px; height:30px; object-fit:cover; border-radius:5px; display:block; }
.map-page-tab-remove {
    border:none; background:rgba(0,0,0,0.55); color:#fff; border-radius:50%; width:18px; height:18px;
    font-size:0.75rem; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center;
}
.map-page-tab-remove:hover { background:rgba(220,53,69,0.9); }
.map-page-add-tile {
    width:44px; height:30px; border-radius:5px; border:2px dashed var(--border-color); background:none;
    color:var(--text-secondary); font-size:1.1rem; cursor:pointer; display:flex; align-items:center; justify-content:center;
}
.map-page-add-panel { margin-top:10px; max-width:360px; }
.settings-image-row {
    display:flex; align-items:center; gap:8px; margin:6px 0; padding:6px; border-radius:8px; border:1px solid var(--border-color);
    flex-wrap:wrap;
}
.settings-image-row img { width:56px; height:38px; object-fit:cover; border-radius:5px; }
.settings-image-row input[type="text"] { flex:1; min-width:120px; padding:4px 6px; border-radius:5px; border:1px solid var(--border-color); background:var(--card-bg); color:var(--text-primary); font-size:0.82rem; transition:border-color 0.2s ease; }
.settings-image-row input[type="text"].saved { border-color:#2ecc71; }
.settings-image-actions { display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
.settings-image-actions .btn { font-size:0.78rem; padding:4px 8px; }
.settings-image-move { display:flex; flex-direction:column; gap:2px; }
.settings-image-move button {
    width:22px; height:18px; line-height:1; padding:0; font-size:10px; border-radius:4px;
    border:1px solid var(--border-color); background:var(--card-bg); color:var(--text-primary); cursor:pointer;
}
.settings-image-move button:hover:not(:disabled) { background:var(--accent-color, #5865f2); color:#fff; }
.settings-image-move button:disabled { opacity:0.35; cursor:default; }
.settings-pages-hint { font-size:0.78rem; color:var(--text-secondary); margin:6px 0 10px; line-height:1.4; }
.settings-pages-dirty { font-size:0.78rem; color:var(--accent-color, #5865f2); margin:8px 0 0; display:none; }
.settings-pages-dirty.is-visible { display:block; }
#map-settings-form .map-settings-save-row { margin-top:14px; }
#btn-subscribe-map[aria-pressed="true"],
.poi-subscribe-btn[aria-pressed="true"] {
    background:var(--accent-color, #5865f2); color:#fff; border-color:var(--accent-color, #5865f2);
}
.map-poi-marker.poi-subscribed::after {
    content:'🔔'; position:absolute; top:-6px; right:-8px; font-size:10px; line-height:1;
    pointer-events:none; filter:drop-shadow(0 1px 2px rgba(0,0,0,0.6));
}
.map-layers-panel {
    margin:8px 0 0;
}
.map-layers-panel-hint {
    font-size:0.78rem; color:var(--text-secondary); margin:0 0 8px;
}
.map-layer-tabs-wrap {
    display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin:0;
}
.map-layers-bar-label {
    font-size:0.82rem; font-weight:600; flex-shrink:0; color:var(--text-secondary);
}
.map-layer-tabs {
    display:flex; gap:8px; flex-wrap:wrap; align-items:center; flex:1; min-width:0;
}
.map-layer-add-tile {
    width:32px; height:30px; border-radius:8px; border:2px dashed var(--border-color); background:none;
    color:var(--text-secondary); font-size:1.1rem; cursor:pointer; display:flex; align-items:center;
    justify-content:center; flex-shrink:0;
}
.map-layer-add-tile:hover:not(:disabled) { border-color:var(--accent-color, #5865f2); color:var(--accent-color, #5865f2); }
.map-layer-add-tile:disabled { opacity:0.35; cursor:default; }
.layer-row {
    display:inline-flex; align-items:center; gap:4px; padding:4px 6px;
    border:1px solid var(--border-color); border-radius:8px; background:var(--card-bg);
    cursor:default; user-select:none; font-size:0.82rem; flex:0 1 auto; max-width:100%;
}
.layer-row.active { border-color:var(--accent-color, #5865f2); box-shadow:0 0 0 1px var(--accent-color, #5865f2) inset; }
.layer-row.dragging { opacity:0.4; }
.layer-row.drag-over { border-color:var(--accent-color, #5865f2); }
.layer-row-handle { cursor:grab; color:var(--text-secondary); font-size:0.82rem; flex:0 0 auto; touch-action:none; line-height:1; }
.layer-row-handle:active { cursor:grabbing; }
.layer-row-name {
    flex:0 1 auto; width:7rem; max-width:9rem; min-width:3.5rem; background:none; border:none;
    color:var(--text-primary); font-size:0.82rem; padding:2px 4px; border-radius:4px; cursor:pointer;
}
.layer-row-name:hover { background:rgba(255,255,255,0.06); }
.layer-row button {
    flex:0 0 auto; border:none; background:none; cursor:pointer; font-size:0.82rem; padding:2px 4px;
    border-radius:4px; color:var(--text-secondary); line-height:1;
}
.layer-row button:hover { background:rgba(255,255,255,0.08); color:var(--text-primary); }
.layer-row button.layer-row-hidden { opacity:0.45; }
@media (max-width: 640px) {
    .map-layer-tabs-wrap { flex-direction:column; align-items:stretch; }
    .map-layer-tabs { flex-direction:column; align-items:stretch; }
    .layer-row { display:flex; width:100%; }
    .layer-row-name { flex:1; width:auto; max-width:none; }
    .map-layer-add-tile { width:100%; height:34px; }
}
.map-toolbar-row2 { margin-top:-6px; }
.map-spawn-report-popup {
    position: fixed;
    right: 20px;
    bottom: 20px;
    z-index: 1200;
    max-width: min(420px, calc(100vw - 32px));
    pointer-events: none;
}
.map-spawn-report-popup[hidden] { display: none !important; }
.map-spawn-report-popup-card {
    pointer-events: auto;
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    border-radius: 12px;
    box-shadow: 0 12px 40px rgba(0,0,0,0.45);
    padding: 14px 16px;
    color: var(--text-primary);
}
.map-spawn-report-popup-card h3 {
    margin: 0 0 8px;
    font-size: 1.05rem;
}
.map-spawn-report-popup-body {
    font-size: 0.88rem;
    color: var(--text-secondary);
    line-height: 1.45;
}
.map-spawn-report-popup-body p { margin: 0 0 6px; }
.map-spawn-report-popup-body .map-spawn-report-note {
    margin-top: 8px;
    white-space: pre-wrap;
    word-break: break-word;
    color: var(--text-primary);
}
.map-spawn-report-popup-actions {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    margin-top: 12px;
    flex-wrap: wrap;
}
