/* WORLD — 地球を主役にした表示。G2-0A の runtime contract は変更しない。 */
.world-shell{
  --controls-w:248px;--inspector-w:300px;--legend-bottom:22px;--dock-h:auto;
  width:100%;height:calc(100vh - var(--site-header-height));
  height:calc(100dvh - var(--site-header-height));
  min-width:0;min-height:560px;display:grid;
  grid-template-rows:32px minmax(0,1fr) auto;
  background:#050b14;position:relative;overflow:hidden}

/* ---------- 1. compact context bar ---------- */
.world-context{position:relative;min-width:0;display:flex;align-items:center;gap:8px;
  padding:0 14px;border-bottom:1px solid var(--line);background:#091321;
  color:#aab4c2;font:700 10px/1 Inter,sans-serif;white-space:nowrap;overflow:hidden}
.ctx-brand{color:var(--text);font:800 11px/1 "SFMono-Regular",Consolas,monospace;letter-spacing:.14em}
.ctx-badges{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:7px;overflow-x:auto;scrollbar-width:none}.ctx-badges::-webkit-scrollbar{display:none}.ctx-scope{flex:0 0 auto;color:var(--muted)}
.ctx-badge{flex:0 0 auto;padding:3px 7px;border:1px solid var(--line);border-radius:999px;
  font-size:9px;font-weight:800;color:#c6ced8;text-decoration:none}
.ctx-badge.is-proxy{border-color:#4a5a3a;color:#c7d39a}
.ctx-badge.is-warn{border-color:#5a4436;color:var(--amber)}
.ctx-badge.is-link{border-color:#2c5a58;color:var(--teal)}
.ctx-badge.is-link:hover,.ctx-badge.is-link:focus-visible{border-color:var(--teal);background:rgba(63,184,175,.1)}
.ctx-info{width:20px;height:20px;padding:0;border:1px solid var(--line);border-radius:50%;
  background:#0d1928;color:var(--teal);font:800 10px/1 sans-serif;cursor:pointer}
.ctx-info:hover,.ctx-info:focus-visible{border-color:var(--teal)}
.ctx-state{margin-left:auto;flex:0 0 auto;display:flex;align-items:center;gap:6px;
  color:var(--amber);font-weight:800;overflow:hidden;text-overflow:ellipsis}
.ctx-state::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.ctx-state[data-state="ready"]{color:var(--success)}
.ctx-state[data-state="degraded"]{color:var(--error)}
.context-detail{position:absolute;z-index:14;top:32px;left:10px;width:min(520px,calc(100vw - 24px));
  padding:14px 16px;border:1px solid var(--line);border-top:0;border-radius:0 0 6px 6px;
  background:#0b1626;box-shadow:0 18px 40px rgba(0,0,0,.5);white-space:normal;
  color:#c6ced8;font:400 12px/1.6 Inter,sans-serif}
.context-detail p{margin:0 0 10px}
.context-detail a{color:var(--teal)}
.context-detail dl{display:grid;grid-template-columns:84px minmax(0,1fr);gap:4px 12px;margin:0;
  font:700 10px/1.5 "SFMono-Regular",Consolas,monospace}
.context-detail dt{color:var(--muted)}
.context-detail dd{margin:0;overflow-wrap:anywhere}

/* ---------- 2. workspace ---------- */
.world-workspace{min-width:0;min-height:0;display:grid;
  grid-template-columns:var(--controls-w) minmax(0,1fr) var(--inspector-w);overflow:hidden}
.world-panel{min-width:0;min-height:0;display:flex;flex-direction:column;
  background:#0a1422;overflow:hidden}
.panel-body{min-height:0;flex:1 1 auto;overflow:auto;scrollbar-width:thin;padding:12px 14px 18px}
.controls-panel{grid-column:1;border-right:1px solid var(--line)}
.inspector-panel{grid-column:3;border-left:1px solid var(--line)}
.panel-heading{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;
  gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);background:#0b1728}
.panel-heading h1,.panel-heading h2{margin:2px 0 0;font-size:14px;line-height:1.25}
.kicker{display:block;color:var(--amber);font:800 9px/1.2 "SFMono-Regular",Consolas,monospace;letter-spacing:.1em}
.sheet-grip{display:none}
.icon-button{flex:0 0 auto;width:30px;height:30px;padding:0;border:1px solid var(--line);
  border-radius:4px;background:#0d1928;color:var(--muted);font-size:14px;cursor:pointer}
.icon-button:hover{color:var(--text);border-color:var(--teal)}
.panel-close{display:block}

.control-block{display:grid;gap:7px;padding:0 0 14px;margin-bottom:14px;border-bottom:1px solid rgba(38,56,78,.7)}
.control-label{display:flex;align-items:baseline;justify-content:space-between;gap:8px;
  color:var(--muted);font:800 10px/1.2 Inter,sans-serif;letter-spacing:.06em}
.control-label output{color:var(--teal);font:800 11px/1 "SFMono-Regular",Consolas,monospace}
.world-panel select{width:100%;height:36px;padding:0 10px;border:1px solid var(--line);
  border-radius:4px;background:#0d1928;color:var(--text);font-size:12px}
.world-panel select:hover{border-color:#3c5470}
.control-note{margin:0;color:#c1c9d4;font-size:11px;line-height:1.5}
.control-meta{margin:0;color:var(--muted);font:700 9px/1.4 "SFMono-Regular",Consolas,monospace;overflow-wrap:anywhere}
.display-authority{display:grid;gap:5px;padding:8px 10px;border-left:2px solid var(--teal);background:#0c1927}
.display-authority div{display:grid;grid-template-columns:60px 1fr;gap:8px}
.display-authority span{color:var(--muted);font-size:9px}
.display-authority b{font:800 9px/1.3 "SFMono-Regular",Consolas,monospace}
input[type=range]#baseOpacity{width:100%;accent-color:var(--teal)}
.switch-grid{display:grid;gap:8px}
.switch{display:flex;align-items:center;gap:9px;color:#c6ced8;font-size:11px;font-weight:700;cursor:pointer}
.switch input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.switch-track{flex:0 0 auto;width:32px;height:18px;border:1px solid var(--line);border-radius:999px;
  background:#0d1928;position:relative;transition:background .14s,border-color .14s}
.switch-track::after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;
  border-radius:50%;background:var(--muted);transition:transform .14s,background .14s}
.switch input:checked+.switch-track{background:rgba(63,184,175,.24);border-color:var(--teal)}
.switch input:checked+.switch-track::after{transform:translateX(14px);background:var(--teal)}
.switch input:focus-visible+.switch-track{outline:2px solid var(--focus);outline-offset:2px}
.control-reset{width:100%;min-height:34px;margin-bottom:14px;padding:0 10px;border:1px solid var(--line);
  border-radius:4px;background:#0d1928;color:#c6ced8;font-size:11px;font-weight:700;cursor:pointer}
.control-reset:hover,.control-reset:focus-visible{border-color:var(--teal);color:var(--text)}
.control-provenance summary,.provenance summary{cursor:pointer;color:var(--muted);
  font:800 10px/1.4 Inter,sans-serif;list-style:none}
.control-provenance summary::-webkit-details-marker,.provenance summary::-webkit-details-marker{display:none}
.control-provenance summary::after,.provenance summary::after{content:"＋";float:right;color:var(--teal)}
.control-provenance[open] summary::after,.provenance[open] summary::after{content:"−"}
.control-provenance dl,.provenance dl{display:grid;grid-template-columns:76px minmax(0,1fr);
  gap:5px 10px;margin:10px 0 0;font:700 9px/1.45 "SFMono-Regular",Consolas,monospace}
.control-provenance dt,.provenance dt{color:var(--muted)}
.control-provenance dd,.provenance dd{margin:0;overflow-wrap:anywhere}

/* ---------- 3. map stage ---------- */
.map-stage{grid-column:2;min-width:0;min-height:0;position:relative;overflow:hidden;background:#050b14}
.map{position:absolute;inset:0}
.maplibregl-canvas{outline:none}
.maplibregl-ctrl-group{border-radius:4px!important;background:rgba(10,20,34,.92)!important;border:1px solid #33465c!important}
.maplibregl-ctrl button{width:30px!important;height:30px!important}.maplibregl-ctrl-top-right{top:48px}
.maplibregl-ctrl-icon{filter:invert(1);opacity:.78}
.maplibregl-ctrl-scale{border-color:#9eabb9!important;color:#c5ccd5!important;background:rgba(5,11,20,.72)!important;font-size:9px!important}
.map-toolbar{position:absolute;z-index:5;top:10px;left:10px;display:flex;gap:5px}
.map-toolbar button,.panel-reopen{display:inline-flex;align-items:center;gap:5px;height:32px;
  padding:0 11px;border:1px solid #33465c;border-radius:4px;background:rgba(7,16,28,.92);
  color:#d8dee6;font:800 10px/1 Inter,sans-serif;cursor:pointer;transition:border-color .12s,color .12s,background .12s}
.map-toolbar button:hover,.panel-reopen:hover{border-color:var(--teal);color:var(--text)}
.map-toolbar button:active{background:rgba(63,184,175,.16)}
.map-toolbar button:focus-visible,.panel-reopen:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.map-toolbar button[aria-pressed="true"]{border-color:var(--amber);color:var(--amber);background:rgba(232,163,61,.14)}
.panel-reopen{display:none;position:absolute;z-index:6;top:52px}
.controls-reopen{left:10px}.inspector-reopen{top:10px;right:10px}
.world-shell.controls-hidden{--controls-w:0}
.world-shell.inspector-hidden{--inspector-w:0}
.world-shell.controls-hidden .controls-panel,.world-shell.inspector-hidden .inspector-panel{display:none}
.world-shell.controls-hidden .controls-reopen,.world-shell.inspector-hidden .inspector-reopen{display:inline-flex}

.map-loading{position:absolute;z-index:5;top:10px;left:50%;transform:translateX(-50%);
  display:flex;align-items:center;gap:7px;padding:6px 11px;border:1px solid #33465c;border-radius:999px;
  background:rgba(7,16,28,.92);color:#d6dce5;font:800 9px/1 Inter,sans-serif;pointer-events:none;
  transition:opacity .2s}
.map-loading i{width:7px;height:7px;border-radius:50%;background:var(--amber);animation:pulse 1s steps(2,end) infinite}
.map-loading.ready{opacity:0}
.map-loading.ready i{background:var(--success);animation:none}
.map-loading[data-state="degraded"] i{background:var(--error);animation:none}
@keyframes pulse{50%{opacity:.25}}
.map-message{position:absolute;z-index:7;left:50%;bottom:16px;max-width:min(460px,calc(100% - 32px));
  display:flex;align-items:center;gap:10px;transform:translate(-50%,10px);padding:10px 13px;
  border:1px solid var(--error);border-radius:5px;background:rgba(26,16,22,.96);color:#f1c3c3;
  font-size:11px;line-height:1.5;opacity:0;pointer-events:none;transition:.16s}
.map-message.show{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.map-message button{flex:0 0 auto;min-height:28px;padding:0 10px;border:1px solid var(--error);
  border-radius:4px;background:rgba(226,120,120,.14);color:#ffd9d9;font-size:11px;font-weight:800;cursor:pointer}
.map-message button:hover:not(:disabled){background:rgba(226,120,120,.26)}
.map-message button:disabled{opacity:.55;cursor:progress}

.legend{position:absolute;z-index:4;right:10px;bottom:var(--legend-bottom);width:212px;
  padding:9px 10px;border:1px solid #304257;border-radius:5px;background:rgba(6,14,24,.94);
  font:800 9px/1.3 "SFMono-Regular",Consolas,monospace}
.legend-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.legend-head b{font-size:11px;color:var(--text)}
.legend-head span{color:var(--amber)}
.legend-unit{margin-top:2px;color:var(--teal);font-size:9px}
.legend-ramp{height:9px;margin:7px 0 5px;border-radius:2px;--ramp:#102b3b,#3fb8af,#e8a33d;background:linear-gradient(90deg,var(--ramp))}
.legend-scale{display:flex;justify-content:space-between;gap:6px;color:#c6ced8}
.legend-scale-note{margin-top:2px;color:var(--muted);font-weight:700}
.legend-foot{display:flex;align-items:center;gap:6px;margin-top:7px;padding-top:6px;
  border-top:1px solid rgba(48,66,87,.8);color:var(--muted);font-weight:700;white-space:normal;line-height:1.4}
.legend-nodata{flex:0 0 auto;width:10px;height:10px;border-radius:2px;background:#33383f;border:1px solid #4a505a}

/* ---------- 4. inspector ---------- */
.cell-identity{color:var(--teal);font:800 11px/1.4 "SFMono-Regular",Consolas,monospace;overflow-wrap:anywhere}
.inspector-empty{grid-column:1/-1;margin:0;padding:26px 12px;color:var(--muted);font-size:11px;line-height:1.6;text-align:center}
.fact-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:5px;overflow:hidden}
.primary-value{grid-column:1/-1;padding:13px 12px;background:#0d1c2c}
.primary-value span{display:block;color:var(--teal);font:800 9px/1.2 Inter,sans-serif;letter-spacing:.08em}
.primary-value b{display:block;margin-top:5px;font:800 24px/1.1 "SFMono-Regular",Consolas,monospace;color:var(--text);overflow-wrap:anywhere}
.primary-value em{display:block;margin-top:4px;color:var(--muted);font:700 9px/1.4 Inter,sans-serif;font-style:normal}
.fact{min-width:0;padding:9px 10px;background:#0a1422}
.fact span{display:block;color:var(--muted);font-size:8px}
.fact b{display:block;margin-top:3px;font:800 12px/1.25 "SFMono-Regular",Consolas,monospace;overflow-wrap:anywhere}
.fact.is-unavailable b{color:var(--muted)}
.fact-note{grid-column:1/-1;margin:0;padding:9px 10px;background:#0a1422;color:#c6ced8;font-size:10px;line-height:1.5}
.inspector-action{grid-column:1/-1;min-height:38px;padding:9px 10px;border:0;border-top:1px solid var(--line);
  background:rgba(232,163,61,.1);color:var(--amber);font-size:11px;font-weight:800;cursor:pointer}
.inspector-action:hover,.inspector-action:focus-visible{background:rgba(232,163,61,.2)}
.provenance{margin-top:12px;padding-top:11px;border-top:1px solid var(--line)}

/* ---------- 5. compact dock ---------- */
.world-utility-dock{position:relative;min-width:0;display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,1.25fr) minmax(0,.7fr);
  align-items:center;gap:0;max-height:38vh;overflow:auto;
  border-top:1px solid var(--line);background:#0a1422}
.dock-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px;margin:0;
  padding:10px 14px;border-right:1px solid var(--line);font-size:11px}
.dock-facts div{display:flex;gap:7px;min-width:0}
.dock-facts dt{flex:0 0 auto;color:var(--muted);font-size:10px}
.dock-facts dd{margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#dce2ea}
.dock-flow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0;padding:10px 14px;
  border-right:1px solid var(--line);list-style:none;font-size:10px}
.dock-flow li{display:flex;align-items:baseline;gap:5px;min-width:0}
.dock-flow li+li::before{content:"→";margin-right:5px;color:var(--muted)}
.dock-flow b{color:#dce2ea;font-weight:700}
.dock-flow span{color:var(--teal)}
.world-utility-dock #worldSpatialStatus span{color:var(--amber)}
.dock-links{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin:0;padding:10px 14px}
.dock-links a,.dock-more{padding:6px 10px;border:1px solid var(--line);border-radius:4px;
  background:#0d1928;color:#c6ced8;font-size:11px;font-weight:700;text-decoration:none;cursor:pointer}
.dock-links a:hover,.dock-more:hover,.dock-links a:focus-visible,.dock-more:focus-visible{border-color:var(--teal);color:var(--text)}
.dock-detail{grid-column:1/-1;padding:0 14px 12px;color:#c6ced8;font-size:11px;line-height:1.6}
.dock-detail p{margin:0}

/* ---------- 6. focus / fullscreen ---------- */
.world-focus .site-header{display:none}
.world-focus .world-shell{height:100vh;height:100dvh}
.world-shell.is-focus{--controls-w:0;--inspector-w:0}
.world-shell.is-focus .world-panel{display:none}
.world-shell.is-focus .world-utility-dock{display:none}
.world-shell.is-focus .panel-reopen{display:inline-flex}
.world-shell.controls-open{--controls-w:248px}
.world-shell.controls-open .controls-panel{display:flex}
.world-shell.inspector-open{--inspector-w:300px}
.world-shell.inspector-open .inspector-panel{display:flex}
.world-shell:fullscreen{height:100vh;grid-template-rows:32px minmax(0,1fr) auto}
.world-shell:fullscreen{--controls-w:0;--inspector-w:0}
.world-shell:fullscreen.controls-open{--controls-w:248px}
.world-shell:fullscreen.inspector-open{--inspector-w:300px}
.world-shell:fullscreen .world-panel{display:none}
.world-shell:fullscreen.controls-open .controls-panel{display:flex}
.world-shell:fullscreen.inspector-open .inspector-panel{display:flex}
.world-shell:fullscreen .world-utility-dock{display:none}
.world-shell:fullscreen .panel-reopen{display:inline-flex}

/* ---------- 7. narrow desktop ---------- */
@media(max-width:1180px){
  .world-shell{--controls-w:232px;--inspector-w:268px}
  .world-shell.controls-open{--controls-w:232px}
  .world-shell.inspector-open{--inspector-w:268px}
  .legend{width:186px}
}
@media(max-height:760px){
  .world-shell{min-height:0}
  .world-utility-dock{max-height:30vh}
  .dock-flow{font-size:9px}
}

/* ---------- 8. tablet / mobile : bottom sheets ---------- */
@media(max-width:900px){
  .world-panel,.map-stage{grid-column:auto}
  .world-shell{--legend-bottom:18px;min-height:0;grid-template-rows:auto minmax(0,1fr) auto}
  .world-context{min-height:36px;padding:0 10px;gap:6px}
  .ctx-scope{display:none}
  .ctx-state{margin-left:auto}
  .context-detail{top:100%;left:6px;right:6px;width:auto}
  .world-workspace{grid-template-columns:minmax(0,1fr)}
  .world-panel{position:fixed;z-index:20;left:0;right:0;bottom:0;display:none;
    max-height:min(58dvh,520px);border:1px solid var(--line);border-bottom:0;
    border-radius:14px 14px 0 0;box-shadow:0 -18px 44px rgba(0,0,0,.55)}
  .world-shell.controls-open .controls-panel,.world-shell.inspector-open .inspector-panel{display:flex}
  .panel-body{padding-bottom:calc(18px + env(safe-area-inset-bottom));overscroll-behavior:contain}
  .panel-heading{padding:8px 14px 10px;position:relative}
  .sheet-grip{display:block;position:absolute;top:5px;left:50%;transform:translateX(-50%);
    width:38px;height:4px;border-radius:999px;background:#33465c}
  .icon-button{width:34px;height:34px}
  .world-shell.controls-open,.world-shell.inspector-open{--legend-bottom:calc(min(58dvh,520px) + 12px)}
  .panel-reopen{display:inline-flex;bottom:calc(12px + env(safe-area-inset-bottom));top:auto}
  .controls-reopen{left:10px}
  .inspector-reopen{right:10px}
  .world-shell.controls-open .controls-reopen,.world-shell.inspector-open .inspector-reopen{display:none}
  .map-toolbar{top:8px;left:8px;gap:4px}
  .map-toolbar button{height:34px;padding:0 9px;font-size:10px}
  /* toolbar と状態表示・zoom control が重ならないようにする。 */
  .map-loading{top:50px;max-width:calc(100% - 24px)}
  .maplibregl-ctrl-top-right{display:none}
  .legend{right:8px;width:168px;padding:8px}
  .legend-foot{display:none}
  .map-message{bottom:calc(58px + env(safe-area-inset-bottom));width:calc(100% - 24px)}
  .world-utility-dock{grid-template-columns:minmax(0,1fr);max-height:30dvh}
  .dock-facts,.dock-flow{border-right:0;border-bottom:1px solid var(--line)}
  .dock-facts{display:flex;flex-wrap:nowrap;gap:14px;padding:7px 12px;font-size:10px;
    overflow-x:auto;scrollbar-width:none}
  .dock-facts::-webkit-scrollbar{display:none}
  .dock-facts div{flex:0 0 auto}
  .dock-facts dt{font-size:9px}
  .dock-facts dd{max-width:160px}
  .dock-flow{flex-wrap:nowrap;overflow-x:auto;padding:7px 12px;font-size:9px;scrollbar-width:none}
  .dock-flow::-webkit-scrollbar{display:none}
  .dock-flow li{flex:0 0 auto}
  .dock-links{padding:7px 12px;gap:6px}
  .dock-links a,.dock-more{padding:6px 9px;font-size:10px}
  .fact-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:400px){
  .ctx-badge{font-size:8px;padding:2px 6px}
  .legend{width:150px}
  .map-toolbar button{padding:0 7px}
}
@media(prefers-reduced-motion:reduce){
  .map-loading,.map-message,.switch-track,.switch-track::after,.map-toolbar button,.panel-reopen{transition:none}
  .map-loading i{animation:none}
}

/* G2-0D: G1 全球集計 Observatory。地図とは独立した read-only view。
   地図面積を削らないよう、dock 内では1行ずつの横スクロール帯にする。 */
.world-utility-dock{grid-template-columns:minmax(0,.7fr) minmax(0,1.6fr) minmax(0,.55fr)}
.dock-observatory{min-width:0;padding:8px 14px;border-right:1px solid var(--line);background:#0b1728}
.dock-observatory .eyebrow{display:inline;margin:0 8px 0 0;color:var(--amber)}
.obs-scope{display:inline;margin:0;color:var(--muted);font-size:9px}
.dock-observatory .obs-controls{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;
  margin:5px 0 4px;overflow-x:auto;scrollbar-width:none}
.dock-observatory .obs-controls::-webkit-scrollbar{display:none}
.dock-observatory .obs-field{flex:0 0 auto;display:flex;align-items:center;gap:5px}
.dock-observatory .obs-field span{color:var(--muted);font:800 9px/1.2 Inter,sans-serif;letter-spacing:.06em}
.dock-observatory .obs-field select{height:26px;padding:0 7px;border:1px solid var(--line);border-radius:4px;background:#0d1928;color:var(--text);font-size:11px}
.dock-observatory .obs-nav{flex:0 0 auto;display:flex;gap:4px}
.dock-observatory .obs-nav button{min-height:26px;padding:0 9px;border:1px solid var(--line);border-radius:4px;background:#0d1928;color:var(--text);font-size:10px;font-weight:700;cursor:pointer}
.dock-observatory .obs-nav button:hover:not(:disabled),.dock-observatory .obs-nav button:focus-visible{border-color:var(--teal)}
.dock-observatory .obs-nav button:disabled{opacity:.45;cursor:not-allowed}
.dock-observatory .status-line{flex:0 0 auto;margin:0;color:var(--teal);font-size:10px;white-space:nowrap}
.obs-values{display:flex;flex-wrap:nowrap;gap:14px;margin:0 0 4px;font-size:10px;
  overflow-x:auto;scrollbar-width:none}
.obs-values::-webkit-scrollbar{display:none}
.obs-values div{flex:0 0 auto;display:flex;gap:6px}
.obs-values dt{color:var(--muted);font-size:9px;white-space:nowrap}
.obs-values dd{margin:0;color:#dce2ea;font:700 10px/1.4 "SFMono-Regular",Consolas,monospace;white-space:nowrap}
.dock-observatory .obs-events{display:flex;flex-wrap:nowrap;gap:5px;margin:0 0 4px;
  overflow-x:auto;scrollbar-width:none}
.dock-observatory .obs-events::-webkit-scrollbar{display:none}
.dock-observatory .obs-chip{flex:0 0 auto;padding:3px 8px;border:1px solid var(--line);border-radius:999px;background:#0d1928;color:#c6ced8;font-size:10px;font-weight:700;cursor:pointer}
.dock-observatory .obs-chip:hover,.dock-observatory .obs-chip:focus-visible{border-color:var(--amber);color:var(--amber)}
.dock-observatory .obs-chip[aria-current="true"]{border-color:var(--amber);background:rgba(232,163,61,.14);color:var(--amber)}
.dock-observatory .obs-note{margin:0;color:var(--muted);font-size:9px;line-height:1.45;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dock-observatory .obs-error{margin:0 0 5px;padding:6px 9px;border:1px solid var(--error);border-radius:4px;background:rgba(226,120,120,.08);color:#f1c3c3;font-size:10px;line-height:1.5}
.dock-observatory .obs-error button{margin-left:8px;min-height:24px;padding:0 8px;border:1px solid var(--error);border-radius:4px;background:transparent;color:#ffd9d9;font-size:10px;font-weight:700;cursor:pointer}
@media(max-width:900px){
  .world-utility-dock{grid-template-columns:minmax(0,1fr)}
  .dock-observatory{border-right:0;border-bottom:1px solid var(--line);padding:6px 12px}
  /* 地図面積を優先し、補足文は展開側（この流れの説明）へ寄せる。 */
  .dock-observatory .obs-scope,.dock-observatory .obs-note{display:none}
  .dock-observatory .status-line{max-width:100%;overflow:hidden;text-overflow:ellipsis}
}

/* G2-E track 切替。dock の既存 style を再利用する。 */
.obs-track{display:flex;gap:6px;margin:6px 0 10px}
.obs-track button{min-height:28px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:transparent;color:#c6ced8;font:700 11px/1 Inter,sans-serif;cursor:pointer}
.obs-track button.on{border-color:var(--amber);color:var(--amber);background:rgba(232,163,61,.12)}
