/* ページ全体の背景は style.css の body::before（haikei.webp グレースケール）を使用 */
        body {
            background: transparent;
            color: #fff;
            margin: 0;
            overflow: hidden;
            font-family: 'Shippori Antique B1', sans-serif;
        }

        /* 共通ガラスパネル（メタリックフレーム）に統一 */
        .cyber-window {
            background: linear-gradient(135deg, rgba(160,70,15,0.12) 0%, rgba(90,20,75,0.08) 45%, rgba(20,15,70,0.14) 100%),
                        linear-gradient(135deg, rgba(186,199,212,0.26) 0%, rgba(186,199,212,0.2) 50%, rgba(186,199,212,0.22) 100%);
            border-radius: 16px;
            border-top: 2px solid #f4f4f4;
            border-left: 2px solid #cfcfcf;
            border-right: 2px solid #6a6a6a;
            border-bottom: 2px solid #454545;
            box-shadow: 0 8px 32px rgba(0,0,0,0.45), inset 1px 1px 2px rgba(255,255,255,0.45), inset -1px -1px 2px rgba(0,0,0,0.4);
            backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }

        .cyber-title-bar {
            padding: 12px 16px;
            font-family: 'Excelorate', 'Lexend Tera', sans-serif;
            font-size: 16px;
            letter-spacing: 3px;
            text-transform: uppercase;
            color: #fff;
            text-shadow: 0 1px 3px rgba(0,0,0,0.3);
            border-bottom: 1px solid rgba(255, 255, 255, 0.3);
            cursor: grab;
        }
        .cyber-title-bar:active { cursor: grabbing; }

        /* マップ描画エリア */
        #map-viewport {
            position: relative;
            flex: 1;
            overflow: hidden;
            cursor: grab;
            touch-action: none;
            user-select: none;
            border-radius: 0 0 8px 8px;
            background-color: #e0e0e0; /* オリジナルの背景色を追加 */
        }
        #map-viewport:active { cursor: grabbing; }

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

        /* マップ画像（オリジナルの色） */
        #map-bg-image {
            position: absolute;
            top: 0; left: 0;
            width: 100%; height: 100%;
            object-fit: cover;
            pointer-events: none;
        }

        /* マップUI (検索窓・ズームボタン) */
        .cyber-map-ui {
            position: absolute;
            background: rgba(0, 0, 0, 0.2);
            border: 1px solid rgba(255, 255, 255, 0.5);
            color: #fff;
            border-radius: 4px;
            z-index: 1000;
            pointer-events: auto;
        }

        .gm-search-box {
            top: 15px; left: 15px;
            width: 240px; height: 36px;
            display: flex; align-items: center;
            padding: 0 10px;
        }
        .gm-search-input {
            background: transparent;
            border: none;
            color: #fff;
            outline: none;
            width: 100%;
            font-family: inherit;
        }
        .gm-search-input::placeholder { color: rgba(255,255,255,0.5); }

        .gm-controls {
            bottom: 15px; right: 15px;
            display: flex; flex-direction: column;
        }
        .gm-btn {
            width: 32px; height: 32px;
            background: transparent;
            border: none; border-bottom: 1px solid rgba(255,255,255,0.3);
            color: #fff; cursor: pointer;
            display: flex; justify-content: center; align-items: center;
            font-size: 18px;
        }
        .gm-btn:last-child { border-bottom: none; }
        .gm-btn:hover { background: rgba(255,255,255,0.2); }

/* サイバー調のピン */
        .gm-poi {
            position: absolute;
            z-index: 100;
            display: flex;
            cursor: pointer;
            transform: translate(-10px, -10px) scale(calc(1 / var(--map-scale, 1)));
            transform-origin: 10px 10px;
            align-items: center;
            gap: 6px;
        }
        .gm-poi-icon {
            width: 20px; height: 20px;
            border: 1px solid #fff;
            border-radius: 50%;
            display: flex; justify-content: center; align-items: center;
            font-size: 10px; color: #fff;
            /* 半透明だったのを不透明な赤に変更 */
            background: #e63939; 
            transition: 0.2s;
        }
        .gm-poi:hover .gm-poi-icon {
            background: #fff;
            color: #e63939;
            box-shadow: 0 0 8px rgba(255,255,255,0.8);
        }
        .gm-poi-label {
            font-size: 13px;
            font-weight: bold;
            color: #fff;
            font-family: 'MS PGothic', sans-serif;
            letter-spacing: 1px;
            white-space: nowrap;
            /* 可読性を上げるために半透明の黒背景を追加 */
            background: rgba(0, 0, 0, 0.6);
            padding: 2px 6px;
            border-radius: 4px;
            text-shadow: 1px 1px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000;
            transition: color 0.2s, background 0.2s;
        }
        .gm-poi:hover .gm-poi-label { 
            color: #ffaaaa;
            background: rgba(0, 0, 0, 0.8);
        }

        /* スポット詳細ウィンドウ */
        #spot-detail-window {
            position: absolute; /* ここで個別に指定する */
            width: 320px; max-width: calc(100vw - 16px); max-height: calc(100dvh - 16px);
            display: none;
            z-index: 4000;
        }
        .close-btn {
            border: 0; padding: 0; background: none; color: inherit;
            float: right;
            cursor: pointer;
            font-family: monospace;
            font-size: 16px;
            line-height: 1;
        }
        .spot-content {
            overflow-y: auto;
            padding: 15px;
            font-size: 12px;
            line-height: 1.6;
        }
        .spot-image-placeholder {
            width: 100%; height: 120px;
            border: 1px solid rgba(255,255,255,0.5);
            margin-bottom: 12px;
            display: flex; justify-content: center; align-items: center;
            color: rgba(255,255,255,0.5);
            background: rgba(0,0,0,0.3);
        }
        .spot-image {
            width: 100%; height: 120px;
            border: 1px solid rgba(255,255,255,0.5);
            margin-bottom: 12px;
            object-fit: cover; /* 枠の比率に合わせてトリミングする */
            display: none; /* 初期状態は非表示 */
        }
        /* メインレイアウト（左右分割） */
        .main-layout {
            display: flex;
            width: 100vw;
            height: 100vh;
            padding: 70px 20px 20px 20px; /* 上部は戻るボタン用に余白を空ける */
            box-sizing: border-box;
            gap: 20px;
        }

        /* 左側のメニューカラム */
        .side-menu {
            width: 260px;
            display: flex;
            flex-direction: column;
            gap: 15px;
            flex-shrink: 0;
        }

        /* コンテンツ選択カード */
        .content-card {
            background: rgba(255, 255, 255, 0.04);
            border: 1px solid rgba(255, 255, 255, 0.8);
            border-radius: 8px;
            padding: 20px;
            cursor: pointer;
            transition: all 0.2s;
            display: flex;
            flex-direction: column;
            gap: 8px;
        }
        .content-card:hover {
            background: rgba(255, 255, 255, 0.15);
            box-shadow: 0 0 12px rgba(255, 255, 255, 0.3);
            transform: translateX(4px);
        }
        .card-title {
            font-size: 16px;
            font-weight: normal;
            color: #fff;
            font-family: 'Shippori Antique B1', sans-serif;
            letter-spacing: 2px;
        }
        .card-desc {
            font-size: 10px;
            color: rgba(255, 255, 255, 0.6);
            font-family: 'Excelorate', 'Lexend Tera', sans-serif;
            letter-spacing: 2px;
            text-transform: uppercase;
        }
        /* 選択中のカードのスタイル */
        .content-card.active {
            background: rgba(255, 255, 255, 0.15);
            box-shadow: 0 0 12px rgba(255, 255, 255, 0.3);
            border-color: #fff;
        }

        /* 右側のコンテンツ表示エリア */
        .content-area {
            flex: 1;
            position: relative;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        /* 各コンテンツパネル（非表示がデフォルト） */
        .content-panel {
            display: none;
            width: 100%;
        }
        .content-panel.active {
            display: block; /* activeクラスがついたものだけ表示 */
        }

.map-status { top: 58px; left: 15px; max-width: calc(100% - 30px); max-height: 40%; overflow-y: auto; padding: 10px; background: rgba(0,0,0,.8); font-size: 12px; }
.map-status button { display: block; background: none; color: #fff; border: 1px solid #aaa; margin-top: 8px; padding: 6px; cursor: pointer; }
#spot-description { white-space: pre-line; }
@media (max-width: 900px) {
  body { overflow-y: auto; height: auto; min-height: 100dvh; }
  .main-layout { width: 100%; height: auto; min-height: 100dvh; flex-direction: column; padding: 65px 12px 20px; }
  .side-menu { width: 100%; flex-direction: row; flex-wrap: wrap; gap: 8px; }
  .content-card { flex: 1; min-width: 130px; padding: 12px; }
  .card-title { font-size: 13px; }
  .card-desc { font-size: 8px; }
  .content-area { width: 100%; min-width: 0; }
  .cyber-title-bar { cursor: default; font-size: 13px; }
}
