
* { margin:0; padding:0; box-sizing:border-box; }

.jcm-root {
  --bg: #f0f4f8;
  --ui-bg: rgba(30,58,95,0.1);
  --ui-text: #1e3a5f;
  --ui-text-sub: rgba(30,58,95,0.6);
  --btn-active: #1e3a5f;
  --btn-active-text: #ffffff;
  --border: rgba(30,58,95,0.2);
}

.jcm-root {
  width:100vw; height:100vh; overflow:hidden;
  background: #f0f4f8;
  font-family:'M PLUS Rounded 1c','BIZ UDGothic',sans-serif;
  transition: background 0.3s;
}

#jcm-map-area {
  width:100%; height:600px;
  overflow:hidden; position:relative;
  cursor: grab;
}
#jcm-map-area.dragging { cursor: grabbing; }

#jcm-map-wrap {
  position:absolute;
  transform-origin: 0 0;
  will-change: transform;
}

#jcm-svg path {
  fill: #c8dde8;
  stroke: var(--map-stroke, #1e3a5f);
  stroke-width: 0.8;
  cursor: pointer;
  transition: opacity 0.12s;
}
#jcm-svg text {
  fill: var(--map-stroke, #1e3a5f);
}
#jcm-svg path:hover { opacity: 0.72; }
#jcm-svg text {
  font-size: 6px;
  font-weight: bold;
  pointer-events: none;
  text-anchor: middle;
  dominant-baseline: middle;
}

/* 沖縄ラベル位置補正用 */
#okinawa-label {
  font-size: 5.5px;
}

#jcm-zoom-btns {
  position:fixed; bottom:16px; right:16px;
  display:flex; flex-direction:column; gap:6px;
}
.zoom-btn {
  width:40px; height:40px; border-radius:50%; border: 1px solid var(--border);
  background: var(--ui-bg);
  color: var(--ui-text);
  font-size:20px; font-weight:bold;
  cursor:pointer; backdrop-filter:blur(6px);
  display:flex; align-items:center; justify-content:center;
  transition: background 0.15s;
  line-height:1;
}
.zoom-btn:hover { background: rgba(255,255,255,0.3); }

#jcm-toolbar {
  position:fixed; bottom:16px; left:16px;
  display:flex; flex-direction:column; gap:8px;
  user-select:none;
}

.palette-wrap {
  background: var(--ui-bg);
  padding:8px 10px;
  border-radius:14px;
  backdrop-filter:blur(6px);
  border:1px solid var(--border);
  max-width:300px;
}
.palette-label {
  color: var(--ui-text-sub);
  font-size:11px; font-weight:bold;
  margin-bottom:5px;
}
.palette-row {
  display:flex; flex-wrap:wrap; gap:5px;
}

.color-btn {
  width:34px; height:34px; border-radius:50%;
  border:3px solid transparent;
  cursor:pointer;
  transition:transform 0.1s, border-color 0.1s, box-shadow 0.1s;
  flex-shrink:0;
}
.color-btn:hover { transform:scale(1.15); }
.color-btn.active {
  border-color: var(--btn-active);
  transform:scale(1.2);
  box-shadow:0 0 0 2px rgba(255,255,255,0.6);
}
.color-btn.eraser {
  background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2'%3E%3Cpath d='M20 20H7L3 16l10-10 7 7-3 4'/%3E%3C/svg%3E") center/20px no-repeat;
}

#jcm-tool-row {
  display:flex; gap:6px; flex-wrap:wrap;
}
.tool-btn {
  padding:7px 13px; border-radius:20px; border: 1px solid var(--border);
  background: var(--ui-bg);
  color: var(--ui-text);
  font-size:12px; font-weight:bold;
  cursor:pointer; backdrop-filter:blur(6px);
  transition:background 0.15s, color 0.15s;
  font-family:inherit;
  white-space:nowrap;
}
.tool-btn:hover { background:rgba(255,255,255,0.3); }
.tool-btn.active {
  background: var(--btn-active);
  color: var(--btn-active-text);
  border-color: transparent;
}

#jcm-mode-tabs {
  display:flex; gap:0; overflow:hidden;
  border-radius:20px; border:1px solid var(--border);
  backdrop-filter:blur(6px);
}
.mode-tab {
  padding:7px 14px; border:none;
  background: var(--ui-bg);
  color: var(--ui-text);
  font-size:12px; font-weight:bold;
  cursor:pointer; font-family:inherit;
  transition:background 0.15s, color 0.15s;
}
.mode-tab.active {
  background: var(--btn-active);
  color: var(--btn-active-text);
}

#jcm-tooltip {
  position:fixed;
  background:rgba(30,58,95,0.92);
  color:#fff; padding:4px 10px;
  border-radius:8px; font-size:13px; font-weight:bold;
  pointer-events:none; display:none;
  border:1px solid #d4af37;
  white-space:nowrap; z-index:50;
}

/* ===== 沖縄設定モード ===== */
/* 設定パネル（左上固定） */
#ok-panel {
  position:fixed; top:16px; left:50%;
  transform:translateX(-50%);
  background:#fff;
  border-radius:14px;
  padding:12px 18px;
  display:none; flex-direction:column; gap:6px;
  z-index:200;
  box-shadow:0 4px 20px rgba(0,0,0,0.25);
  min-width:300px;
  pointer-events:auto;
}
#ok-panel.open { display:flex; }
#ok-panel h4 { color:#1e3a5f; font-size:13px; margin:0; }
#ok-step-msg {
  font-size:13px; font-weight:bold;
  color:#1e3a5f;
  background:#e8f4f8;
  border-radius:8px;
  padding:7px 12px;
}
#ok-progress {
  display:flex; gap:4px;
}
.ok-prog-dot {
  width:10px; height:10px; border-radius:50%;
  background:#ccc; transition:background 0.2s;
}
.ok-prog-dot.done { background:#1dd1a1; }
.ok-prog-dot.active { background:#d4af37; }
#ok-coords-list {
  font-size:11px; color:#888;
  display:flex; flex-direction:column; gap:2px;
}
.ok-coord-item { display:flex; gap:6px; align-items:center; }
.ok-coord-label { width:130px; color:#555; }
.ok-coord-val {
  font-family:monospace; color:#1e3a5f; font-weight:bold;
  background:#f0f4f8; padding:1px 6px; border-radius:4px;
}
#ok-panel-btns { display:flex; gap:6px; margin-top:2px; }

/* 地図上クリックカーソル */
.jcm-root.ok-mode #jcm-map-area { cursor: crosshair !important; }
.jcm-root.ok-mode #jcm-map-area.dragging { cursor: crosshair !important; }

/* クリックマーカー */
.ok-marker {
  pointer-events:none;
}

/* ハイライト枠 */
#ok-highlight {
  position:fixed;
  border:2px dashed #d4af37;
  border-radius:4px;
  pointer-events:none;
  display:none;
  z-index:150;
}

#jcm-save-dialog {
  position:fixed; inset:0;
  background:rgba(0,0,0,0.5);
  display:none; align-items:center; justify-content:center;
  z-index:100;
}
#jcm-save-dialog.open { display:flex; }
#jcm-save-box {
  background:#fff; border-radius:16px;
  padding:24px; min-width:280px;
  display:flex; flex-direction:column; gap:12px;
}
#jcm-save-box h3 { color:#1e3a5f; font-size:16px; }
#jcm-save-title {
  border:2px solid #1e3a5f; border-radius:8px;
  padding:8px 12px; font-size:14px;
  font-family:inherit; outline:none;
}
#jcm-save-title:focus { border-color:#d4af37; }
.dialog-btns { display:flex; gap:8px; justify-content:flex-end; }
.dialog-btn {
  padding:8px 18px; border-radius:20px; border:none;
  font-size:14px; font-weight:bold; cursor:pointer; font-family:inherit;
}
.btn-ok { background:#1e3a5f; color:#fff; }
.btn-cancel { background:#eee; color:#555; }

