@charset "utf-8";

/* ============================================================
    access.css - Access & Location Section (Production Mode)
   ============================================================ */

.access {
    background-color: #ffffff;
    text-align: center;
}

.access-info {
    margin-bottom: 40px;
}

/* 導入テキスト */
.access-text {
    max-width: 700px;
    margin: 0 auto 25px;
    font-size: 16px;
    line-height: 1.8;
    color: #666;
}

/* 住所エリアの装飾 */
.address-box {
    display: inline-block;
    padding: 20px 40px;
    border-top: 1px solid #eee;
    border-bottom: 1px solid #eee;
}

.address-box .zip {
    font-size: 14px;
    letter-spacing: 0.1em;
    color: #8b5e3c;
    margin-bottom: 5px;
}

.address-box .address {
    font-size: 18px;
    font-weight: 600;
    color: #1a3d32;
    letter-spacing: 0.05em;
}

/* 店舗名表示のスタイリング */
.address-box .store-name {
    margin-top: 5px;
    font-size: 18px;
    font-weight: 700;
    color: #1a3d32;
    letter-spacing: 0.05em;
}

/* 営業時間表示のスタイリング */
.address-box .business-hours {
    margin-top: 10px;
    font-size: 14px;
    color: #666;
    letter-spacing: 0.05em;
    line-height: 1.6;
}

/* 営業時間の左右配置と頭揃えの設定（追記部分） */
.address-box .business-hours .hours-flex {
    display: inline-flex;
    align-items: flex-start;
    text-align: left; /* 左揃えにして頭位置を固定 */
}

/* 「営業時間」ラベルの調整（追記部分） */
.address-box .business-hours .hours-label {
    margin-right: 0.5em; /* 「営業時間」と数字の間の余白 */
    white-space: nowrap; /* 途中で改行させない */
}

/* 複数行の時間データを並べるコンテナ（追記部分） */
.address-box .business-hours .hours-data {
    display: flex;
    flex-direction: column;
}

/* 時間データの各行リセット（追記部分） */
.address-box .business-hours .hours-data p {
    margin: 0;
    line-height: 1.6;
}

/* ラストオーダーのテキスト装飾 */
.address-box .business-hours .lo-text {
    font-size: 0.9em;
    color: #888;
    font-weight: normal;
    margin-left: 4px;
}

/* 定休日表示のスタイリング */
.address-box .business-hours .holiday {
    margin-top: 4px;
    color: #c0392b;
    font-weight: 700;
}

/* 専用駐車場案内のスタイリング（文字サイズをさらに拡大） */
.address-box .parking-info {
    margin-top: 20px;
    padding: 15px 20px;
    background-color: #fcf9f5;
    border: 2px dashed #8b5e3c; /* 枠線を2pxに太くして強調 */
    text-align: center;
}

.address-box .parking-info .parking-title {
    font-size: 16px; /* 13pxから16pxへ拡大 */
    font-weight: 700;
    color: #8b5e3c;
    margin-bottom: 8px;
    letter-spacing: 0.05em;
}

.address-box .parking-info .parking-title i {
    margin-right: 6px;
}

.address-box .parking-info .parking-text {
    font-size: 16px; /* 14pxから16pxへ拡大 */
    color: #222222;  /* 文字色を少し濃くして視認性アップ */
    line-height: 1.6;
    margin: 0;
    font-weight: 600;
}

.address-box .parking-info .parking-text strong {
    color: #1a3d32;
    font-weight: 700;
    background: linear-gradient(transparent 50%, #fff2cc 50%); /* マーカーを太く */
    padding: 0 4px;
    font-size: 20px; /* 番号を20pxに特大化 */
}

.sp-only {
    display: none;
}

/* 駐車場配置の補足マップ画像エリア
   デフォルト状態をコンパクト（最大幅400px）にして中央に配置
*/
.parking-map-img {
    width: 100%;
    max-width: 400px;
    margin: 0 auto 25px; /* ボタンとの余白調整 */
    box-sizing: border-box;
    cursor: pointer;
    position: relative;
    border: 1px solid #eee;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

/* ホバー時にわずかに浮き上がる演出 */
.parking-map-img:hover {
    transform: scale(1.02);
    box-shadow: 0 6px 20px rgba(0,0,0,0.1);
}

.parking-map-img img {
    width: 100%;
    height: auto;
    display: block;
}

/* 画像右下に表示する拡大案内のラベルスタイル */
.parking-map-img .zoom-hint {
    position: absolute;
    bottom: 10px;
    right: 10px;
    background-color: rgba(26, 61, 50, 0.85); /* 店舗テーマカラーの深緑 */
    color: #ffffff;
    font-size: 11px;
    font-weight: 700;
    padding: 5px 10px;
    border-radius: 4px;
    pointer-events: none;
    letter-spacing: 0.05em;
    box-shadow: 0 2px 6px rgba(0,0,0,0.2);
}

/* ルート案内ボタンのエリア（配置変更に伴い下部マップとの余白を30pxに確保） */
.map-link-btn {
    margin-top: 0;
    margin-bottom: 30px;
}

/* ルート案内ボタン本体
   ヘッダーの「西川グループ」ボタンの演出を完全再現
*/
.btn-map {
    position: relative;
    display: inline-flex !important;
    background: linear-gradient(135deg, #1a3d32 0%, #0d251e 100%) !important;
    color: #ffffff !important;
    padding: 12px 35px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.15em;
    border-radius: 0; /* カード内の角丸 */
    text-decoration: none !important;
    transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
    align-items: center;
    justify-content: center;
    border: 1px solid #d4af37 !important;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
    line-height: 1;
}

/* 擬似要素で「流れる光」を演出 */
.btn-map::before {
    content: "";
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(
        120deg,
        transparent,
        rgba(255, 255, 255, 0.2),
        transparent
    );
    transition: all 0.6s;
}

/* ホバー時の挙動：白背景へ反転（西川グループボタンと同一） */
.btn-map:hover {
    background: #ffffff !important;
    color: #1a3d32 !important;
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
    border-color: #1a3d32 !important;
}

/* ホバー時の光エフェクトの動き */
.btn-map:hover::before {
    left: 100%;
}

/* 右側の矢印アイコン */
.btn-map::after {
    content: "〉";
    font-size: 10px;
    margin-left: 8px;
    transition: transform 0.3s ease, color 0.3s ease;
    position: static;
    width: auto;
    height: auto;
    background: none;
    color: #ffffff !important; /* 初期状態は白 */
}

/* ホバー時の矢印の動きと色変更（西川グループボタンと同一） */
.btn-map:hover::after {
    transform: translateX(2px);
    color: #d4af37 !important; /* ホバー時はゴールド */
}

/* ポップアップ表示（モーダルレイヤー）の基本設定
   ズレの原因となる親要素の影響を完全にリセットし、画面中央にきれいに100%固定
*/
.parking-modal {
    position: fixed !important;
    top: 0 !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
    margin: auto !important;
    width: 100vw !important;
    height: 100vh !important;
    max-width: 100% !important;
    background-color: rgba(0, 0, 0, 0.85); /* 背景を暗く */
    z-index: 999999 !important; /* 他のアニメーション要素より最前面に配置 */
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.35s cubic-bezier(0.25, 0.8, 0.25, 1);
}

/* JavaScript制御用の有効化クラス */
.parking-modal.is-active {
    opacity: 1;
    pointer-events: auto;
}

/* モーダル内の画像コンテナ（ふわっと拡大して出現） */
.parking-modal .modal-content {
    width: auto;
    height: auto;
    max-width: 90%;
    max-height: 85%;
    margin: 0 auto !important;
    display: flex;
    align-items: center;
    justify-content: center;
    transform: scale(0.9);
    transition: transform 0.35s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.parking-modal.is-active .modal-content {
    transform: scale(1);
}

.parking-modal .modal-content img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    box-shadow: 0 5px 25px rgba(0,0,0,0.5);
}

/* クローズ（×）ボタンのスタイリング */
.parking-modal .modal-close {
    position: absolute;
    top: 20px;
    right: 25px;
    background: none;
    border: none;
    color: #ffffff;
    font-size: 46px;
    line-height: 1;
    cursor: pointer;
    transition: color 0.2s ease, transform 0.2s ease;
}

.parking-modal .modal-close:hover {
    color: #d4af37; /* ホバー時は西川ゴールド */
    transform: scale(1.1);
}

/* モーダル展開時に背面（ページ本体）のスクロールを止めるクラス */
body.modal-open {
    overflow: hidden;
}

/* 地図埋め込みエリア */
.access-map {
    width: 100%;
    max-width: 900px;
    margin: 0 auto;
    aspect-ratio: 16 / 9;
    background: #f9f9f9;
    border-radius: 0; /* カード内の角丸 */
    overflow: hidden;
    border: 1px solid #eee;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}

/* 地図（iframe）が挿入された時の設定 */
.access-map iframe {
    width: 100% !important;
    height: 100% !important;
    border: none;
    display: block;
}

/* --- レスポンシブ --- */
@media (max-width: 768px) {
    .access-info {
        margin-bottom: 30px;
    }

    .access-text {
        font-size: 14px;
        padding: 0 10px;
    }

    .address-box {
        padding: 15px 20px;
        width: 100%; 
        box-sizing: border-box;
    }

    .address-box .address {
        font-size: 16px;
    }

    /* スマホ時の営業時間内の改行時の行間調整 */
    .address-box .business-hours {
        line-height: 1.8;
    }

    /* スマホ時の縦並び調整（追記部分） */
    .address-box .business-hours .hours-data p {
        line-height: 1.8;
    }

    /* スマホ環境でもしっかり読める大きさに調整 */
    .address-box .parking-info {
        padding: 12px 10px;
        margin-top: 15px;
    }

    .address-box .parking-info .parking-title {
        font-size: 14px;
    }

    .address-box .parking-info .parking-text {
        font-size: 14px;
    }

    .address-box .parking-info .parking-text strong {
        font-size: 17px;
    }

    .sp-only {
        display: inline;
    }

    /* スマホ時の駐車場配置マップ画像のデフォルトサイズ・余白調整 */
    .parking-map-img {
        max-width: 320px; /* スマホ画面用に収まりの良いサイズへ縮小 */
        margin-bottom: 20px;
        padding: 0 10px;
        border: none;
        box-shadow: none;
    }
    
    .parking-map-img:hover {
        transform: none; /* スマホではホバーの拡大を無効化 */
    }

    /* モーダル表示のスマホ最適化 */
    .parking-modal .modal-close {
        top: 15px;
        right: 20px;
        font-size: 40px;
    }

    .parking-modal .modal-content {
        max-width: 95%;
    }

    /* スマホでのボタンサイズ・余白調整 */
    .map-link-btn {
        margin-bottom: 25px;
        padding: 0 10px;
    }

    .btn-map {
        width: 100%;
        box-sizing: border-box;
        padding: 18px 20px;
        font-size: 14px;
    }

    .access-map {
        aspect-ratio: 4 / 3;
    }
}