:root{color-scheme:light;--font-size-base:16px;--foreground:#172b3a;--muted-foreground:#505d69;--popover:#fff;--background:#fff;--border:#b8c4cc;font:16px/1.5 Arial,Helvetica,sans-serif}
*{box-sizing:border-box}body{margin:0;background:#fff;color:var(--foreground)}
.world-map-page{width:min(1200px,calc(100% - 32px));margin:26px auto 40px}
h2{font-size:24px;line-height:1.2;font-weight:500;margin:0}
.text-small{font-size:12px}.tabular-nums{font-variant-numeric:tabular-nums}
.viz-controls{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.btn{font:inherit;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:1px solid #b8c4cc;border-radius:5px;background:white;color:#172b3a;padding:8px 14px;cursor:pointer;min-height:40px}
.btn-primary{background:#172b3a;color:white;border-color:#172b3a}.btn-ghost{border-color:transparent}
.form-label{display:flex;flex-direction:column;gap:4px;font-size:14px}.form-select{font:inherit;max-width:100%;min-height:40px;background:white;color:#172b3a;border:1px solid #b8c4cc;border-radius:4px;padding:7px 28px 7px 10px}
.form-range{width:100%;accent-color:#006cb4;min-height:24px}.card{background:white;color:#172b3a;border:1px solid #b8c4cc;border-radius:6px;padding:14px;box-shadow:0 4px 16px #00000015}
a{color:#0060a0}.cursor-interaction{cursor:pointer}:focus-visible{outline:3px solid #006cb4;outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:600px){.world-map-page{width:calc(100% - 16px);margin-top:16px}.btn,.form-select{min-height:44px}h2{font-size:22px}.event-panel .event-city{flex-basis:100%}.event-panel .form-label{flex:1;min-width:140px}}


#jbs-world-map {color:var(--foreground);position:relative;display:grid;gap:calc(var(--font-size-base)*.7);--map-sea:#006cb4;--map-land:#fff;--map-border:#afb9c1;--map-red:#f00000;}
#jbs-world-map .heading,#jbs-world-map .now,#jbs-world-map .foot {display:flex;align-items:center;justify-content:space-between;gap:calc(var(--font-size-base)*.7);flex-wrap:wrap;}
#jbs-world-map .heading {padding-right:90px;align-items:baseline;}
#jbs-world-map .now {min-height:calc(var(--font-size-base)*3);}
#jbs-world-map .place {font-weight:500;}
#jbs-world-map .date,#jbs-world-map .note {color:var(--muted-foreground);}
#jbs-world-map .atlas {width:100%;display:block;touch-action:pan-y;overflow:hidden;}
#jbs-world-map .timeline-label {flex:1;min-width:150px;display:grid;grid-template-columns:1fr auto;gap:4px;}
#jbs-world-map .timeline {grid-column:1/-1;}
#jbs-world-map .continent {fill:white;opacity:.72;letter-spacing:1px;}
#jbs-world-map .map-caption {fill:white;}
#jbs-world-map .inset-caption {fill:#172b3a;}
#jbs-world-map .country {fill:var(--map-land);stroke:var(--map-border);stroke-width:.5;}
#jbs-world-map .city {fill:var(--map-red);stroke:white;stroke-width:.65;}
#jbs-world-map .halo {fill:none;stroke:var(--map-red);}
#jbs-world-map .hit {fill:transparent;}
#jbs-world-map .event-panel {position:absolute;top:calc(var(--font-size-base)*4.6);left:8px;right:8px;z-index:5;}
#jbs-world-map .event-panel[hidden] {display:none;}
#jbs-world-map .event-city {font-weight:500;flex:1;min-width:140px;}
#jbs-world-map .city-label {fill:#152a3a;stroke:white;stroke-width:3px;paint-order:stroke;stroke-linejoin:round;font-weight:500;}
@media(max-width:450px){#jbs-world-map .heading{display:block;}#jbs-world-map .count {width:100%;}#jbs-world-map .timeline-label {flex-basis:100%;}}
/* Open date menu and fixed world viewport */
#jbs-world-map .event-panel{left:auto;right:12px;width:min(420px,calc(100% - 24px));align-items:center;gap:10px}
#jbs-world-map .event-dates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:100%;max-height:220px;overflow-y:auto;overscroll-behavior:contain;padding:3px}
#jbs-world-map .event-date-option{display:block;padding:8px 10px;border:1px solid #c7d2db;border-radius:4px;text-decoration:none;color:#005a94;background:#fff;font-size:14px;line-height:1.3}
#jbs-world-map .event-date-option:hover{background:#eaf4ff;border-color:#006cb4}
#jbs-world-map .world-geography .country,#jbs-world-map .world-geography .route{vector-effect:non-scaling-stroke}
@media(max-width:600px){#jbs-world-map .event-panel{top:calc(var(--font-size-base)*5.7);right:8px;width:min(360px,calc(100% - 16px))}#jbs-world-map .event-dates{max-height:160px}#jbs-world-map .event-date-option{min-height:44px}}
/* Keep event choices beside the map, never above its geography. */
#jbs-world-map{grid-template-columns:minmax(0,1fr)}
#jbs-world-map .event-panel{position:static;top:auto;right:auto;left:auto;width:auto;max-width:100%;align-self:start;grid-column:1;grid-row:4}
#jbs-world-map .heading{grid-column:1;grid-row:1}
#jbs-world-map .now{grid-column:1;grid-row:2}
#jbs-world-map .atlas{grid-column:1;grid-row:3;min-width:0}
#jbs-world-map>.viz-controls:not(.event-panel){grid-column:1;grid-row:5}
#jbs-world-map .foot{grid-column:1;grid-row:6}
#jbs-world-map .note{grid-column:1;grid-row:7}
@media(min-width:1000px){
 #jbs-world-map:has(.event-panel:not([hidden])){grid-template-columns:minmax(0,1fr) 300px;column-gap:20px}
 #jbs-world-map .event-panel{grid-column:2;grid-row:3 / span 3}
 #jbs-world-map .heading,#jbs-world-map .now,#jbs-world-map .foot,#jbs-world-map .note{grid-column:1 / -1}
 #jbs-world-map .event-dates{grid-template-columns:1fr;max-height:420px}
}

/* Keep dates visible above the geography at every viewport width. */
#jbs-world-map,#jbs-world-map:has(.event-panel:not([hidden])){grid-template-columns:minmax(0,1fr);}
#jbs-world-map .heading,#jbs-world-map .now,#jbs-world-map .foot,#jbs-world-map .note{grid-column:1;}
#jbs-world-map .event-panel{grid-column:1;grid-row:3;position:static;width:auto;max-width:100%;}
#jbs-world-map .atlas{grid-column:1;grid-row:4;}
#jbs-world-map .event-dates{grid-template-columns:repeat(auto-fit,minmax(145px,1fr));max-height:145px;}

/* A stable layout prevents the menu from pushing the Europe target away. */
@media(min-width:700px){
 #jbs-world-map,#jbs-world-map:has(.event-panel:not([hidden])){grid-template-columns:minmax(0,1fr) 240px;column-gap:16px}
 #jbs-world-map .heading,#jbs-world-map .now,#jbs-world-map .foot,#jbs-world-map .note{grid-column:1 / -1}
 #jbs-world-map .atlas{grid-column:1;grid-row:3}
 #jbs-world-map .event-panel{grid-column:2;grid-row:3 / span 2;width:auto}
 #jbs-world-map .event-dates{grid-template-columns:1fr;max-height:340px}
}
@media(max-width:699px){#jbs-world-map .atlas{grid-row:3}#jbs-world-map .event-panel{grid-row:4}}

#jbs-world-map[data-city-pinned="true"] .event-city{font-size:24px;font-weight:700;}

/* Full-width map; reserve menu space only when dates are open. */
#jbs-world-map,#jbs-world-map:has(.event-panel:not([hidden])){grid-template-columns:minmax(0,1fr);column-gap:0;}
#jbs-world-map .heading,#jbs-world-map .now,#jbs-world-map .foot,#jbs-world-map .note{grid-column:1;}
#jbs-world-map .atlas{grid-column:1;grid-row:3;}
#jbs-world-map .event-panel{grid-column:1;grid-row:4;width:auto;}
#jbs-world-map .event-dates{grid-template-columns:repeat(auto-fit,minmax(145px,1fr));max-height:180px;}
#jbs-world-map .archive-totals{font-size:16px;font-weight:500;}

/* Floating event bubble, rendered above the page without taking layout space. */
#jbs-world-map .event-panel{position:fixed!important;inset:auto!important;left:var(--bubble-x,12px)!important;top:var(--bubble-y,12px)!important;width:min(370px,calc(100vw - 24px))!important;max-width:calc(100vw - 24px);margin:0!important;z-index:10020;border-radius:16px;box-shadow:0 12px 40px #00000030;overflow:visible;grid-column:auto;grid-row:auto;}
#jbs-world-map .event-panel .event-dates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-height:min(280px,45vh);overflow:auto;}
#jbs-world-map .event-panel::before{content:"";position:absolute;left:var(--bubble-tail,24px);width:13px;height:13px;background:white;transform:rotate(45deg);pointer-events:none;}
#jbs-world-map .event-panel[data-side="above"]::before{bottom:-7px;border-right:1px solid #b8c4cc;border-bottom:1px solid #b8c4cc;}
#jbs-world-map .event-panel[data-side="below"]::before{top:-7px;border-left:1px solid #b8c4cc;border-top:1px solid #b8c4cc;}

#jbs-world-map .atlas{user-select:none;-webkit-user-select:none;touch-action:none;}

/* Clear heading hierarchy on desktop and mobile. */
#jbs-world-map .heading{display:grid;grid-template-columns:minmax(0,1fr);justify-items:start;align-items:start;gap:6px;padding-right:0}
#jbs-world-map .heading h2{margin:0;line-height:1.2}
#jbs-world-map .heading>.text-small{display:block;font-size:14px;line-height:1.4}
#jbs-world-map .heading>.text-small:not(.archive-totals){white-space:nowrap;color:var(--muted-foreground)}
#jbs-world-map .heading>.archive-totals{margin-top:2px;font-size:12px}
