/* Map controls share the active site theme; daylight is calculated separately. */
:root {
  --map-ocean:#0b192a; --map-border:#304054; --map-ink:#b2c6d5;
  --map-pin:#89abbc; --map-pin-border:#d4e9ef; --map-selected:#e9e9c5;
  --map-selected-border:#fff6d7; --map-halo:#e2dfb828; --map-glow:#ffe8a959;
  --map-label:#071321ed; --map-label-text:#dce5e7; --map-day:#b5aa87; --map-night:#111e30;
}
:root[data-theme="light"] {
  --map-ocean:#dce8f0; --map-border:#a9bfcd; --map-ink:#314e64;
  --map-pin:#345e75; --map-pin-border:#f8fbff; --map-selected:#996016;
  --map-selected-border:#fff3d8; --map-halo:#99601624; --map-glow:#99601640;
  --map-label:#fffffff2; --map-label-text:#233e52; --map-day:#e7d8af; --map-night:#9baebd;
}
:root[data-theme="dusk"] {
  --map-ocean:#2b2333; --map-border:#705564; --map-ink:#dfbfc4;
  --map-pin:#d7b6aa; --map-pin-border:#f7e9df; --map-selected:#ffd2a1;
  --map-selected-border:#fff1e5; --map-halo:#f4b07828; --map-glow:#f4b07859;
  --map-label:#30252eed; --map-label-text:#f7e9df; --map-day:#d6ab82; --map-night:#221d2c;
}
.home-heading { display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:20px; padding:15px 0 24px; }
.home-market-clock { margin:0 0 8px auto; color:var(--secondary); font:500 14px 'DM Mono',monospace; white-space:nowrap; }
.home-heading h1 { font-size:34px; margin:10px 0 8px; letter-spacing:-1px; }
.home-map-shell { position:relative; background:var(--map-ocean); border:1px solid var(--map-border); border-radius:12px; overflow:hidden; box-shadow:0 16px 50px #00000015; color:var(--text); }
.home-map-viewport { overflow:hidden; }
.home-map-stage { position:relative; width:100%; aspect-ratio:2.25; min-height:345px; isolation:isolate; overflow:hidden; }
.home-map-camera { position:absolute; inset:0; transform-origin:0 0; transition:transform .85s cubic-bezier(.22,.68,.2,1); --map-zoom:1; }
.home-map-camera .world-pin { transform:translate(-50%,-50%) scale(calc(1 / var(--map-zoom))); }
#world-map { position:absolute; inset:0; width:100%; height:100%; display:block; }
.home-map-copy { position:absolute; top:0; width:100%; height:100%; display:block; pointer-events:none; }
.home-map-copy-west { left:-100%; }.home-map-copy-east { left:100%; }
.home-map-top { position:absolute; top:21px; left:22px; right:22px; display:flex; align-items:center; justify-content:space-between; pointer-events:none; }
.home-map-kicker { color:var(--map-ink); font:9px 'DM Mono',monospace; letter-spacing:2.5px; }
.home-map-top time { color:var(--map-ink); font:10px 'DM Mono',monospace; letter-spacing:1px; }
.home-map-pins { position:absolute; inset:0; pointer-events:none; }
.world-pin { position:absolute; transform:translate(-50%,-50%); width:24px; height:24px; border:0; padding:0; background:transparent; display:grid; place-items:center; cursor:pointer; pointer-events:auto; z-index:2; }
.world-pin i { display:block; width:7px; height:7px; border:1px solid var(--map-pin-border); background:var(--map-pin); border-radius:50%; box-shadow:0 0 0 4px var(--map-halo); transition:box-shadow .18s,background .18s; }
.world-pin:hover i,.world-pin:focus-visible i,.world-pin.is-selected i { width:9px; height:9px; background:var(--map-selected); border-color:var(--map-selected-border); box-shadow:0 0 0 5px var(--map-halo),0 0 15px var(--map-glow); }
.world-pin:focus-visible { outline:1px solid var(--map-selected); border-radius:50%; }.world-pin.is-selected,.world-pin:hover,.world-pin:focus-visible { z-index:4; }
.world-pin-label { position:absolute; top:-18px; left:50%; transform:translateX(-50%); padding:3px 5px; border-radius:3px; background:var(--map-label); color:var(--map-label-text); white-space:nowrap; font-size:9px; opacity:0; pointer-events:none; }
.world-pin:hover .world-pin-label,.world-pin:focus-visible .world-pin-label,.world-pin.is-selected .world-pin-label { opacity:1; }
.home-selected-panel { position:absolute; bottom:20px; left:22px; width:190px; padding:12px; background:color-mix(in srgb,var(--panel) 96%,transparent); border:1px solid var(--line); border-radius:8px; box-shadow:0 8px 30px #0004; backdrop-filter:blur(12px); }
.home-place-overline { display:flex; justify-content:space-between; align-items:center; color:var(--muted); font:8px 'DM Mono',monospace; letter-spacing:1.3px; }
.home-place-overline>span:last-child { letter-spacing:0; color:var(--accent); font:10px 'DM Sans','Noto Sans TC',sans-serif; }
.home-place-title { display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-top:12px; }
.home-place-title h2 { margin:0; color:var(--bright); font-size:24px; font-weight:500; letter-spacing:-.8px; }
.home-place-title time { color:var(--secondary); font:13px 'DM Mono',monospace; }
.home-place-venue { font-size:9px; color:var(--muted); margin:5px 0 14px; line-height:1.6; }
.home-place-quote { padding:12px 0; border-top:1px solid var(--line); }
.home-place-quote>div { display:flex; justify-content:space-between; align-items:center; gap:6px; }
.home-place-quote>div:first-child { color:var(--secondary); font-size:10px; margin-bottom:8px; }
.home-place-quote time { color:var(--muted); font:8px 'DM Mono',monospace; }
.home-market-link { display:flex; justify-content:space-between; color:var(--secondary); border-top:1px solid var(--line); padding-top:11px; font-size:10px; text-decoration:none; }
.home-market-link:hover { color:var(--bright); }
.home-map-error { position:absolute; bottom:45px; right:20px; color:var(--accent); padding:6px; background:var(--panel); font-size:10px; }
.home-market-section { margin-top:35px; }
.home-market-heading { display:flex; justify-content:space-between; align-items:center; gap:14px; margin-bottom:18px; }
.home-market-heading h2 { color:var(--bright); font-size:19px; font-weight:500; margin:7px 0 0; }
.home-region-tabs { display:flex; gap:3px; border:1px solid var(--line); border-radius:6px; padding:3px; background:var(--panel); }
.home-region-tabs button { border:0; border-radius:3px; padding:6px 12px; background:transparent; color:var(--muted); font-size:11px; cursor:pointer; white-space:nowrap; }
.home-region-tabs button.selected { background:var(--active); color:var(--active-text); }
.home-quote-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.home-region-group { margin-bottom:25px; }
.home-region-group>h3 { color:var(--secondary); font-size:14px; font-weight:500; margin:0 0 12px; }
.home-quote-card { min-width:0; padding:15px 16px; text-align:left; background:linear-gradient(135deg,var(--card-start),var(--card-end)); color:var(--text); border:1px solid var(--line); border-radius:8px; cursor:pointer; transition:border-color .18s,transform .18s; }
.home-quote-card:hover { transform:translateY(-2px); border-color:var(--active-border); }.home-quote-card.is-selected { border-color:var(--active-text); box-shadow:inset 0 0 0 1px var(--active-border); }
.home-quote-card:focus-visible,.home-region-tabs button:focus-visible { outline:2px solid var(--active-text); outline-offset:3px; }
.home-quote-top { display:flex; justify-content:space-between; gap:7px; color:var(--muted); font-size:9px; }.home-quote-top code { color:var(--secondary); font:500 12px 'DM Mono',monospace; }
.home-quote-heading { display:flex; align-items:baseline; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.home-quote-heading h4 { color:var(--bright); font-size:18px; font-weight:500; line-height:1.4; margin:0; }
.home-quote-heading code { margin-left:auto; color:var(--muted); font:400 18px 'DM Mono',monospace; }
.home-quote-value { margin:18px 0; }
.home-close { color:var(--muted); font:400 12px 'DM Mono',monospace; }
.home-place-quote>.home-place-value { align-items:flex-start; margin:10px 0 0; }
.home-place-quote:first-child { border-top:0; padding-top:0; }
.home-place-quote:last-child { padding-bottom:0; }
.home-quote-bottom { display:flex; justify-content:space-between; align-items:center; gap:6px; }.home-quote-bottom time { color:var(--muted); font:8px 'DM Mono',monospace; white-space:nowrap; }
.home-change { font:500 10px 'DM Mono',monospace; white-space:nowrap; padding:4px 5px; border-radius:3px; }
.home-change-primary { display:inline-block; font-size:clamp(26px,2.7vw,36px); font-weight:500; letter-spacing:-1px; padding:0; line-height:1.2; }
.home-change.up { color:var(--red); background:color-mix(in srgb,var(--red) 9%,transparent); }.home-change.down { color:var(--green); background:color-mix(in srgb,var(--green) 9%,transparent); }.home-change.flat { color:var(--muted); background:var(--hover); }
.home-change-primary.up,.home-change-primary.down,.home-change-primary.flat { background:transparent; }
.home-notes { display:flex; justify-content:space-between; flex-wrap:wrap; gap:6px 20px; color:var(--subtle); font-size:9px; line-height:1.9; margin-top:20px; }
.home-data-error { color:var(--muted); font-size:12px; margin:0 0 16px; }
.home-notes a { color:inherit; }
@media (max-width:1150px) { .home-quote-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }.home-selected-panel { width:190px; padding:12px; }.home-place-title h2 { font-size:21px; } }
@media (max-width:700px) {
  .home-heading { padding-top:10px; gap:10px; }.home-heading h1 { font-size:29px; }
  .home-selected-panel { position:static; width:auto; border:0; border-top:1px solid var(--line); border-radius:0; padding:17px 20px; background:var(--panel); backdrop-filter:none; box-shadow:none; }.home-place-overline { font-size:8px; }.home-place-venue { margin-bottom:10px; }.home-place-quote { padding:11px 0; }.home-place-title h2 { font-size:22px; }
  .home-map-stage { min-height:0; }
  .home-market-heading { flex-wrap:wrap; align-items:flex-end; }.home-market-heading h2 { font-size:18px; }.home-region-tabs button { padding:6px 10px; font-size:10px; }
  .home-quote-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }.home-quote-card { padding:13px 11px; }.home-quote-bottom time { font-size:7px; }.home-change-primary { font-size:28px; padding:0; }
}
@media (prefers-reduced-motion:reduce) { .home-map-camera,.home-quote-card,.world-pin i { transition:none; }.home-quote-card:hover { transform:none; } }
