/* =========================
   全体
========================= */

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
}

body {
    font-family:
        "Yu Gothic",
        "Hiragino Kaku Gothic ProN",
        sans-serif;

    color: #2d2925;
    background-color: #f8f5ee;
    line-height: 1.8;
}

img {
    display: block;
    width: 100%;
}

a {
    color: inherit;
    text-decoration: none;
}


/* =========================
   ヘッダー
========================= */

.header {
    position: sticky;
    top: 0;
    z-index: 1000;

    background-color: #2d2925;
    color: #ffffff;
}

.header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;

    max-width: 1200px;
    height: 80px;
    margin: 0 auto;
    padding: 0 30px;
}

.logo {
    font-size: 24px;
    font-weight: bold;
    letter-spacing: 2px;
}

.logo span {
    font-weight: normal;
}

.nav {
    display: flex;
    gap: 35px;
}

.nav a {
    font-size: 14px;
    letter-spacing: 1px;
    transition: 0.3s;
}

.nav a:hover {
    opacity: 0.6;
}


/* =========================
   スマホメニュー
========================= */

.menu-button {
    display: none;

    width: 45px;
    height: 45px;

    border: none;
    background: transparent;

    cursor: pointer;
}

.menu-button span {
    display: block;

    width: 28px;
    height: 2px;
    margin: 6px auto;

    background-color: #ffffff;

    transition:
        transform 0.3s ease,
        opacity 0.3s ease;
}

.menu-button.active span:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
}

.menu-button.active span:nth-child(2) {
    opacity: 0;
}

.menu-button.active span:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
}

.mobile-nav {
    display: none;
}


/* =========================
   ボタン
========================= */

.btn {
    display: inline-block;

    width: fit-content;
    padding: 13px 35px;

    background-color: #ffffff;
    color: #2d2925;

    font-weight: bold;

    transition: 0.3s;
}

.btn:hover {
    transform: translateY(-3px);
}

.btn-dark {
    margin-top: 40px;

    background-color: #2d2925;
    color: #ffffff;
}


/* =========================
   セクション共通
========================= */

.section {
    padding: 100px 20px;
}

.section-inner {
    max-width: 1100px;
    margin: 0 auto;
}

.section-label {
    margin-bottom: 10px;

    color: #806b52;

    font-size: 13px;
    font-weight: bold;
    letter-spacing: 3px;
}

.section h2 {
    margin-bottom: 35px;

    font-size: clamp(30px, 4vw, 48px);
    line-height: 1.4;
}


/* =========================
   ページ共通ヒーロー
========================= */

.page-hero {
    padding: 100px 20px;

    background-color: #2d2925;
    color: #ffffff;

    text-align: center;
}

.page-hero-inner {
    max-width: 900px;
    margin: 0 auto;
}

.page-hero h1 {
    margin-bottom: 20px;

    font-size: clamp(45px, 7vw, 75px);
    letter-spacing: 5px;
}

.page-hero .section-label {
    color: #c4a77d;
}

.page-hero p:last-child {
    font-size: 16px;
}


/* =========================
   HOME
========================= */

/* ---------- メインビジュアル ---------- */

.hero {
    position: relative;

    height: 720px;

    overflow: hidden;
}

.hero-image {
    position: absolute;
    inset: 0;
}

.hero-image img {
    height: 100%;

    object-fit: cover;
}

.hero-image::after {
    content: "";

    position: absolute;
    inset: 0;

    background:
        linear-gradient(
            90deg,
            rgba(0, 0, 0, 0.65),
            rgba(0, 0, 0, 0.15)
        );
}

.hero-content {
    position: relative;
    z-index: 2;

    display: flex;
    flex-direction: column;
    justify-content: center;

    max-width: 1200px;
    height: 100%;
    margin: 0 auto;
    padding: 0 30px;

    color: #ffffff;
}

.hero-subtitle {
    margin-bottom: 20px;

    font-size: 14px;
    letter-spacing: 4px;
}

.hero h1 {
    margin-bottom: 20px;

    font-size: clamp(42px, 6vw, 78px);
    line-height: 1.2;
}

.hero-content > p:not(.hero-subtitle) {
    margin-bottom: 35px;

    font-size: 20px;
}


/* ---------- 予約のお知らせ ---------- */

.welcome-text {
    position: relative;

    display: inline-block;
}

.reservation-notice {
    position: absolute;

    left: 90%;
    bottom: 100%;

    margin-bottom: 10px;
    padding: 60px 70px;

    background-color: #ffffff;
    color: #2d2925;

    border-radius:
        50% 45% 55% 40%
        / 45% 55% 40% 50%;

    font-size: 20px;
    font-weight: bold;
    line-height: 1.6;
    white-space: nowrap;

    opacity: 0;

    animation: noticeFadeIn 1.5s ease forwards;
}

.reservation-notice::after {
    content: "";

    position: absolute;

    left: 30%;
    bottom: -6px;

    transform: translateX(-50%);

    border-top: 12px solid #ffffff;
    border-right: 12px solid transparent;
    border-left: 12px solid transparent;
}

@keyframes noticeFadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}


/* ---------- ABOUT ---------- */

.about-preview {
    background-color: #f8f5ee;
}

.section-text {
    max-width: 700px;
    margin-bottom: 20px;
}

.text-link {
    display: inline-block;

    margin-top: 15px;

    font-weight: bold;

    border-bottom: 1px solid #2d2925;

    transition: 0.3s;
}

.text-link:hover {
    opacity: 0.5;
}


/* ---------- MENU ---------- */

.menu-preview {
    background-color: #e8e0d2;
}

.menu-cards {
    display: grid;

    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
}

.menu-preview .menu-card {
    background-color: #ffffff;
}

.menu-preview .menu-card img {
    height: 250px;

    object-fit: cover;
}

.menu-preview .menu-card-content {
    padding: 25px;
}

.menu-preview .menu-card h3 {
    margin-bottom: 10px;

    font-size: 22px;
}

.menu-preview .menu-card p {
    font-size: 14px;
}


/* ---------- 営業案内 ---------- */

.information {
    background-color: #2d2925;
    color: #ffffff;
}

.information .section-label {
    color: #c4a77d;
}

.information-box {
    display: grid;

    grid-template-columns: repeat(3, 1fr);

    border-top: 1px solid rgba(255, 255, 255, 0.4);
    border-bottom: 1px solid rgba(255, 255, 255, 0.4);
}

.info-item {
    padding: 30px;

    border-right: 1px solid rgba(255, 255, 255, 0.4);
}

.info-item:last-child {
    border-right: none;
}

.info-item h3 {
    margin-bottom: 10px;

    color: #c4a77d;
}

.notice {
    margin-top: 25px;

    font-size: 13px;
}


/* ---------- ACCESS ---------- */

.access-preview {
    background-color: #f8f5ee;
}

.access-content {
    display: grid;

    grid-template-columns: 1.2fr 1fr;
    gap: 50px;

    align-items: center;
}

.access-content img {
    height: 400px;

    object-fit: cover;
}

.access-text p {
    margin-bottom: 20px;
}


/* =========================
   MENUページ
========================= */

/* ---------- メニュー全体 ---------- */

.menu-section {
    padding: 80px 20px;

    background-color: #f8f5ee;
}

.menu-inner {
    max-width: 1100px;
    margin: 0 auto;
}


/* ---------- カテゴリーナビ ---------- */

.menu-category-nav {
    display: flex;
    justify-content: center;

    gap: 15px;

    margin-bottom: 100px;
}

.menu-category-nav a {
    min-width: 150px;
    padding: 15px 25px;

    border: 1px solid #2d2925;

    text-align: center;

    font-size: 13px;
    letter-spacing: 2px;

    transition: 0.3s;
}

.menu-category-nav a:hover {
    background-color: #2d2925;
    color: #ffffff;
}


/* ---------- カテゴリー ---------- */

.menu-category {
    margin-bottom: 120px;
}

.category-title {
    margin-bottom: 40px;

    text-align: center;
}

.category-title h2 {
    font-size: 42px;
}


/* ---------- メニューカード ---------- */

.menu-grid {
    display: grid;

    grid-template-columns: repeat(2, 1fr);
    gap: 40px;
}

.menu-section .menu-card {
    overflow: hidden;

    background-color: #ffffff;

    box-shadow:
        0 5px 20px rgba(0, 0, 0, 0.08);
}

.menu-card-image {
    overflow: hidden;

    aspect-ratio: 4 / 3;
}

.menu-card-image img {
    width: 100%;
    height: 100%;

    object-fit: cover;

    transition: transform 0.5s;
}

.menu-section .menu-card:hover .menu-card-image img {
    transform: scale(1.04);
}

.menu-section .menu-card-content {
    padding: 25px 30px 30px;
}

.menu-card-category {
    margin-bottom: 5px;

    color: #806b52;

    font-size: 11px;
    letter-spacing: 2px;
}

.menu-section .menu-card h3 {
    margin-bottom: 8px;

    font-size: 24px;
}

.menu-card-price {
    margin-bottom: 20px;

    font-size: 18px;
    font-weight: bold;
}


/* ---------- 詳細ボタン ---------- */

.detail-button {
    width: 100%;
    padding: 13px;

    border: 1px solid #2d2925;

    background-color: transparent;
    color: #2d2925;

    font-family: inherit;

    cursor: pointer;

    transition: 0.3s;
}

.detail-button:hover {
    background-color: #2d2925;
    color: #ffffff;
}


/* ---------- ドリンク ---------- */

.drink-list {
    max-width: 800px;
    margin: 0 auto;

    background-color: #ffffff;
}

.drink-item {
    padding: 20px 25px;

    border-bottom: 1px solid #ddd6ca;
}

.drink-item:last-child {
    border-bottom: none;
}

.drink-item-header {
    display: flex;
    justify-content: space-between;

    gap: 20px;
}

.drink-item-header span:first-child {
    font-weight: 700;
}

.drink-name {
    font-size: 17px;
    font-weight: bold;
}

.drink-price {
    white-space: nowrap;

    font-weight: bold;
}

.drink-description {
    margin-top: 5px;

    color: #806b52;

    font-size: 13px;
}


/* ---------- 冬季限定 ---------- */

.winter-title {
    margin-top: 40px;
    margin-bottom: 20px;
    padding-top: 20px;

    border-top: 1px solid #cfc7bb;

    color: #806b52;

    text-align: center;

    font-size: 12px;
    letter-spacing: 2px;
}

.winter-title span {
    display: block;

    margin-top: 5px;

    color: #2d2925;

    font-size: 20px;
    font-weight: bold;
    letter-spacing: 1px;
}


/* ---------- アルコール ---------- */

.alcohol-title {
    margin-top: 45px;
    margin-bottom: 20px;
    padding-top: 20px;

    border-top: 1px solid #cfc7bb;

    text-align: center;
}

.alcohol-title p {
    margin-bottom: 5px;

    color: #806b52;

    font-size: 12px;
    letter-spacing: 2px;
}

.alcohol-title h3 {
    font-size: 20px;
    font-weight: bold;
}

.alcohol-notice {
    margin-top: 30px;
    padding: 14px 20px;
    background-color: #eee8de;
    border-radius: 6px;
    color: #6a5e52;
    font-size: 13px;
    line-height: 1.6;
    text-align: center;
}


/* ---------- モーダル ---------- */

.menu-modal {
    position: fixed;
    inset: 0;
    z-index: 2000;

    display: none;
    justify-content: center;
    align-items: center;

    padding: 30px;

    background-color: rgba(0, 0, 0, 0.75);
}

.menu-modal.show {
    display: flex;
}

.modal-content {
    position: relative;

    display: grid;

    grid-template-columns: 1fr 1fr;

    width: min(900px, 100%);
    max-height: 90vh;

    overflow-y: auto;

    background-color: #f8f5ee;
}

.modal-content > img {
    width: 100%;
    height: 100%;
    min-height: 500px;

    object-fit: cover;
}

.modal-text {
    padding: 50px 40px;
}

.modal-category {
    margin-bottom: 5px;

    color: #806b52;

    font-size: 12px;
    letter-spacing: 2px;
}

.modal-text h2 {
    margin-bottom: 10px;

    font-size: 32px;
}

.modal-price {
    margin-bottom: 30px;

    font-size: 20px;
    font-weight: bold;
}

.modal-details {
    margin-bottom: 30px;

    border-top: 1px solid #ccc;
}

.modal-details p {
    display: grid;

    grid-template-columns: 80px 1fr;

    padding: 12px 0;

    border-bottom: 1px solid #ccc;

    font-size: 14px;
}

.modal-details strong {
    font-weight: bold;
}

.modal-description {
    font-size: 14px;
}

.modal-close {
    position: absolute;
    top: 15px;
    right: 15px;
    z-index: 5;

    width: 40px;
    height: 40px;

    border: none;
    border-radius: 50%;

    background-color: rgba(0, 0, 0, 0.7);
    color: #ffffff;

    font-size: 28px;
    line-height: 1;

    cursor: pointer;
}

body.modal-open {
    overflow: hidden;
}


/* =========================
   COMMITMENT
========================= */

/* ---------- 導入 ---------- */

.commitment-intro {
    padding: 120px 20px;

    background-color: #f8f5ee;
}

.commitment-intro-inner {
    max-width: 800px;
    margin: 0 auto;

    text-align: center;
}

.commitment-intro h2 {
    margin-bottom: 35px;

    font-size: clamp(32px, 5vw, 50px);
    line-height: 1.4;
}

.commitment-intro p:not(.section-label) {
    margin-bottom: 20px;

    font-size: 16px;
}


/* ---------- 写真＋文章 ---------- */

.commitment-block {
    display: grid;

    grid-template-columns: 1fr 1fr;

    max-width: 1200px;
    min-height: 550px;
    margin: 0 auto;
}

.commitment-image {
    overflow: hidden;
}

.commitment-image img {
    width: 100%;
    height: 100%;
    min-height: 550px;

    object-fit: cover;

    transition: transform 0.6s;
}

.commitment-block:hover .commitment-image img {
    transform: scale(1.03);
}

.commitment-text {
    display: flex;
    flex-direction: column;
    justify-content: center;

    padding: 80px;

    background-color: #e8e0d2;
}

.commitment-text h2 {
    margin-bottom: 30px;

    font-size: clamp(30px, 4vw, 45px);
    line-height: 1.4;
}

.commitment-text p:not(.section-label) {
    margin-bottom: 20px;

    font-size: 15px;
}


/* ---------- 左右反転 ---------- */

.commitment-block-reverse .commitment-image {
    order: 2;
}

.commitment-block-reverse .commitment-text {
    order: 1;
}


/* ---------- 八ヶ岳 ---------- */

.commitment-full {
    position: relative;

    min-height: 650px;

    overflow: hidden;
}

.commitment-full-image {
    position: absolute;
    inset: 0;
}

.commitment-full-image img {
    width: 100%;
    height: 100%;

    object-fit: cover;
}

.commitment-full-image::after {
    content: "";

    position: absolute;
    inset: 0;

    background:
        linear-gradient(
            90deg,
            rgba(0, 0, 0, 0.65),
            rgba(0, 0, 0, 0.1)
        );
}

.commitment-full-content {
    position: relative;
    z-index: 2;

    display: flex;
    flex-direction: column;
    justify-content: center;

    max-width: 1100px;
    min-height: 650px;
    margin: 0 auto;
    padding: 80px 30px;

    color: #ffffff;
}

.commitment-full-content .section-label {
    color: #c4a77d;
}

.commitment-full-content h2 {
    margin-bottom: 30px;

    font-size: clamp(35px, 5vw, 60px);
}

.commitment-full-content p:not(.section-label) {
    max-width: 550px;

    font-size: 17px;
}


/* ---------- STORY ---------- */

.commitment-story {
    padding: 120px 20px;

    background-color: #2d2925;
    color: #ffffff;

    text-align: center;
}

.commitment-story-inner {
    max-width: 750px;
    margin: 0 auto;
}

.commitment-story .section-label {
    color: #c4a77d;
}

.commitment-story h2 {
    margin-bottom: 35px;

    font-size: clamp(32px, 5vw, 50px);
}

.commitment-story p:not(.section-label) {
    margin-bottom: 20px;

    font-size: 16px;
}


/* =========================
   NEWSページ
========================= */

/* ---------- 今回のおすすめ ---------- */

.recommend-section {
    padding: 100px 20px;
}

.recommend-inner {
    max-width: 1100px;
    margin: 0 auto;
}

.recommend-text {
    margin-top: 20px;

    line-height: 1.8;
}

.recommend-list {
    margin-top: 50px;
}

.recommend-card {
    display: grid;

    grid-template-columns: 1fr 1fr;

    overflow: hidden;

    background-color: #f5f3ef;
}

.recommend-image img {
    width: 100%;
    height: 100%;
    min-height: 350px;

    object-fit: cover;
}

.recommend-content {
    display: flex;
    flex-direction: column;
    justify-content: center;

    padding: 60px;
}

.recommend-date {
    margin-bottom: 20px;

    color: #777777;

    font-size: 14px;
}

.recommend-content h3 {
    margin-bottom: 20px;

    font-size: 28px;
}

.recommend-content p {
    line-height: 1.8;
}


/* ---------- NEWS一覧 ---------- */

.news-section {
    padding: 100px 20px;

    background-color: #2d2925;
    color: #ffffff;
}

.news-inner {
    max-width: 900px;
    margin: 0 auto;
}

.news-list {
    max-height: 500px;
    margin-top: 50px;
    padding-right: 10px;

    overflow-y: auto;

    border-top: 1px solid rgba(255, 255, 255, 0.3);
}

.news-item {
    display: grid;

    grid-template-columns: 150px 1fr;
    gap: 30px;

    padding: 30px 10px;

    border-bottom: 1px solid rgba(255, 255, 255, 0.3);
}

.news-date,
.news-item time {
    color: #cccccc;

    font-size: 14px;
}

.news-content,
.news-item-content {
    line-height: 1.8;
}


/* ---------- Instagram ---------- */

.instagram-area {
    display: flex;
    align-items: center;

    gap: 15px;

    margin-top: 20px;
}

.instagram-btn {
    padding-bottom: 4px;

    color: #ffffff;

    font-size: 15px;

    border-bottom: 1px solid #ffffff;

    transition: 0.3s;
}

.instagram-btn:hover {
    opacity: 0.7;
}

.instagram-bubble {
    position: relative;

    display: inline-block;

    padding: 8px 14px;

    background-color: #ffffff;
    color: #2d2925;

    border-radius: 6px;

    font-size: 13px;
    white-space: nowrap;
}

.instagram-bubble::before {
    content: "";

    position: absolute;

    top: 50%;
    left: -10px;

    transform: translateY(-50%);

    border-top: 7px solid transparent;
    border-bottom: 7px solid transparent;
    border-right: 10px solid #ffffff;
}


/* =========================
   ACCESSページ
========================= */

/* ---------- 店舗アクセス ---------- */

.access-section {
    padding: 100px 20px;

    background-color: #f8f5ee;
}

.access-inner {
    display: grid;

    grid-template-columns: 1fr 1fr;
    gap: 60px;

    align-items: start;

    max-width: 1100px;
    margin: 0 auto;
}

.access-information h2 {
    margin-bottom: 40px;

    font-size: 40px;
}

.access-info-list {
    border-top: 1px solid #cfc7bb;
}

.access-info-item {
    padding: 22px 0;

    border-bottom: 1px solid #cfc7bb;
}

.access-info-item h3 {
    margin-bottom: 7px;

    color: #806b52;

    font-size: 12px;
    letter-spacing: 2px;
}

.access-info-item p {
    font-size: 15px;
}


/* ---------- Googleマップ ---------- */

.access-map {
    width: 100%;

    aspect-ratio: 1 / 1;
}

.access-map iframe {
    width: 100%;
    height: 100%;

    border: 0;
}


/* ---------- アクセス方法 ---------- */

.access-route {
    padding: 100px 20px;

    background-color: #e8e0d2;
}

.access-route-inner {
    max-width: 800px;
    margin: 0 auto;

    text-align: center;
}

.access-route h2 {
    margin-bottom: 25px;

    font-size: 42px;
}

.access-route .section-label {
    margin-bottom: 10px;
}

.access-route-dark {
    background-color: #2d2925;
    color: #ffffff;
}

.access-route-dark .section-label {
    color: #c4a77d;
}


/* ---------- 営業カレンダー ---------- */

.business-calendar {
    margin-top: 60px;
}

.business-calendar h3 {
    margin-bottom: 25px;

    color: #c4a77d;

    font-size: 24px;

    text-align: center;
}

.calendar-frame {
    width: 100%;
    max-width: 900px;
    margin: 0 auto;

    background-color: #ffffff;
}

.calendar-frame iframe {
    display: block;

    width: 100%;
    min-height: 600px;

    border: 0;
}


/* ---------- 周辺アクセスマップ ---------- */

.area-access {
    padding: 100px 20px;
}

.area-access-inner {
    max-width: 1100px;
    margin: 0 auto;
}

.area-access-text {
    margin-top: 20px;

    line-height: 1.8;
}

.interactive-map {
    position: relative;

    width: 100%;

    margin-top: 50px;
}

.interactive-map img {
    display: block;

    width: 100%;
    height: auto;
}



/* =========================
   周辺アクセスマップへの案内
========================= */

.area-map-guide {

    padding: 70px 20px;

    background-color: #e8e0d2;

}


.area-map-guide-inner {

    max-width: 900px;

    margin: 0 auto;

    text-align: center;

}


.area-map-guide h2 {

    margin-bottom: 20px;

    font-size: 36px;

}


.area-map-guide p {

    line-height: 1.8;

}


.area-map-button {

    display: inline-block;

    margin-top: 30px;

    padding: 15px 35px;

    background-color: #2d2925;

    color: #ffffff;

    text-decoration: none;

    font-weight: bold;

    transition: 0.3s;

}


.area-map-button:hover {

    transform: translateY(-3px);

}


#areaMap {

    scroll-margin-top: 100px;

}










/* ---------- 地図上のスポット ---------- */

.map-point {
    position: absolute;
    z-index: 10;

    padding: 8px 12px;

    border: none;
    border-radius: 20px;

    background-color: #ffffff;
    color: #2d2925;

    font-size: 14px;

    cursor: pointer;

    transition: 0.3s;

    overflow: visible;
}

.map-point::before {
    content: "";

    position: absolute;

    left: 50%;
    bottom: -8px;

    transform: translateX(-50%);

    border-top: 8px solid #ffffff;
    border-right: 8px solid transparent;
    border-left: 8px solid transparent;
}

.map-point::after {
    content: "";

    position: absolute;

    left: 50%;
    bottom: -20px;

    transform: translateX(-50%);

    width: 12px;
    height: 12px;

    background-color: #2d2925;

    border-radius: 50%;
}

.map-point:hover {
    transform: scale(1.08);
}


/* ---------- 各スポットの位置 ---------- */

.point-takashima {
    top: 30%;
    left: 30%;
}

.point-suwako {
    top: 20%;
    left: 23%;
}

.point-chino-station {
    top: 50%;
    left: 40%;
}

.point-tateshina-lake {
    top: 43%;
    left: 81%;
}

.point-shirakaba-lake {
    top: 3%;
    left: 75%;
}

.point-kurumayama {
    top: 3%;
    left: 68%;
}

.point-kirigamine {
    top: 6%;
    left: 58%;
}

.point-yatsugatake {
    top: 60%;
    left: 70%;
}

.point-tateshina-mountain {
    top: 14%;
    left: 85%;
}

.point-suwa-inter {
    top: 40%;
    left: 30%;
}

.point-suwa-taisha {
    top: 45%;
    left: 25%;
}

.point-fujimi {
    top: 65%;
    left: 45%;
}

.point-takato {
    top: 85%;
    left: 20%;
}


/* ---------- WOODMAN PLUSの位置 ---------- */

/* =========================
   WOODMAN PLUSの位置
========================= */

.map-shop-point {

    position: absolute;
    z-index: 15;

    top: 57%;
    left: 55%;

    transform: translate(-50%, -100%);

    display: flex;
    flex-direction: column;
    align-items: center;

}


/* ---------- 店舗ピン ---------- */

.shop-pin {

    position: relative;

    display: flex;
    align-items: center;
    justify-content: center;

    width: 70px;
    height: 70px;

    background-color: #2d2925;
    color: #ffffff;

    border: 3px solid #ffffff;
    border-radius: 50% 50% 50% 0;

    transform: rotate(-45deg);

    box-shadow:
        0 5px 15px rgba(0, 0, 0, 0.3);

}


/* ピンの文字 */

.shop-pin span {

    transform: rotate(45deg);

    font-size: 10px;
    font-weight: bold;

    line-height: 1.3;

    text-align: center;

}



/* ---------- スポット詳細 ---------- */

.spot-detail {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 20;

    display: none;
    justify-content: center;
    align-items: center;

    width: 100%;
    height: 100%;
}

.spot-detail.active {
    display: flex;
}

.spot-detail-card {
    position: relative;

    width: 45%;
    max-width: 450px;

    padding: 15px;

    background-color: #ffffff;

    border-radius: 10px;

    box-shadow:
        0 10px 30px rgba(0, 0, 0, 0.25);
}

.spot-detail-card img {
    display: block;

    width: 100%;
    height: 220px;

    object-fit: cover;
}

.spot-detail-content {
    padding: 20px 10px 10px;

    text-align: center;
}

.spot-detail-content h3 {
    margin-bottom: 15px;

    font-size: 24px;
}

.spot-detail-content p {
    margin: 5px 0;
}

.spot-time {
    margin-top: 15px;

    font-size: 24px;
    font-weight: bold;
}

.spot-close {
    position: absolute;
    top: -15px;
    right: -15px;
    z-index: 30;

    width: 40px;
    height: 40px;

    border: none;
    border-radius: 50%;

    background-color: #2d2925;
    color: #ffffff;

    font-size: 24px;

    cursor: pointer;
}

.spot-close:hover {
    transform: scale(1.1);
}


/* =========================
   RESERVATIONページ
========================= */

.reservation-section {
    padding: 100px 20px;
}

.reservation-inner {
    max-width: 900px;
    margin: 0 auto;

    text-align: center;
}


/* ---------- 説明 ---------- */

.reservation-inner h2 {
    margin-top: 20px;

    font-size: 36px;
    line-height: 1.5;
}

.reservation-text {
    margin-top: 30px;

    line-height: 2;
}


/* ---------- 電話番号 ---------- */

.reservation-phone {
    margin-top: 50px;
    padding: 40px 20px;

    background-color: #2d2925;
    color: #ffffff;
}

.reservation-phone-label {
    margin-bottom: 10px;

    font-size: 14px;
    letter-spacing: 2px;
}

.reservation-phone a {
    color: #ffffff;

    font-size: 36px;
    font-weight: bold;
}

.reservation-phone-text {
    margin-top: 15px;

    font-size: 14px;

    opacity: 0.8;
}


/* ---------- 営業時間 ---------- */

.reservation-info {
    display: grid;

    grid-template-columns: repeat(3, 1fr);
    gap: 20px;

    margin-top: 50px;
}

.reservation-info-item {
    padding: 30px 20px;

    background-color: #f5f3ef;
}

.reservation-info-item h3 {
    margin-bottom: 20px;

    font-size: 14px;
    letter-spacing: 1px;
}

.reservation-info-item p {
    line-height: 1.8;
}


/* ---------- 注意事項 ---------- */

.reservation-notice-box {
    margin-top: 50px;
    padding: 30px;

    border: 1px solid #ddd;
}

.reservation-notice-box h3 {
    margin-bottom: 15px;
}

.reservation-notice-box p {
    line-height: 1.8;
}


/* =========================
   フッター
========================= */

.footer {
    padding: 60px 20px 30px;

    background-color: #211e1b;
    color: #ffffff;
}

.footer-inner {
    max-width: 1100px;
    margin: 0 auto;

    text-align: center;
}

.footer-logo {
    margin-bottom: 25px;

    font-size: 24px;
    font-weight: bold;
    letter-spacing: 2px;
}

.footer-logo span {
    font-weight: normal;
}

.footer-nav {
    display: flex;
    justify-content: center;

    gap: 30px;

    margin-bottom: 30px;
}

.footer-nav a {
    font-size: 13px;
}

.footer-address {
    margin-bottom: 40px;

    font-size: 13px;
}

.copyright {
    padding-top: 20px;

    border-top: 1px solid rgba(255, 255, 255, 0.2);

    font-size: 12px;
}


/* =========================
   スマホ対応
========================= */

@media (max-width: 768px) {

    /* ---------- 共通 ---------- */

    .page-hero {
        padding: 70px 20px;
    }

    .page-hero h1 {
        font-size: clamp(24px, 7vw, 36px);
        letter-spacing: 0.04em;
        overflow-wrap: anywhere;
    }

    .section {
        padding: 70px 20px;
    }

    .section h2 {
        font-size: 32px;
    }


    /* ---------- ヘッダー ---------- */

    .header-inner {
        height: 65px;
        padding: 0 20px;
    }

    .logo {
        font-size: 20px;
    }

    .nav {
        display: none;
    }

    .menu-button {
        display: block;
    }

    .mobile-nav {
        display: none;
        flex-direction: column;

        background-color: #f8f5ee;
    }

    .mobile-nav.active {
        display: flex;
    }

    .mobile-nav a {
        padding: 18px 25px;

        border-top: 1px solid #ddd5c9;

        color: #2d2925;

        text-align: center;

        font-size: 14px;
        letter-spacing: 2px;

        transition: 0.3s;
    }

    .mobile-nav a:hover {
        background-color: #2d2925;
        color: #ffffff;
    }


    /* ---------- HOME ---------- */

    .hero {
        height: 600px;
    }

    .hero-content {
        padding: 0 25px;
    }

    .hero h1 {
        font-size: 42px;
    }

    .hero-content > p:not(.hero-subtitle) {
        font-size: 17px;
    }

    .reservation-notice {
        left: 70%;
        bottom: 100%;

        margin-bottom: 10px;
        padding: 30px 50px;

        font-size: 15px;
    }

    .menu-cards {
        grid-template-columns: 1fr;
        gap: 20px;
    }

    .menu-preview .menu-card img {
        height: 230px;
    }

    .information-box {
        grid-template-columns: 1fr;
    }

    .info-item {
        border-right: none;
        border-bottom: 1px solid rgba(255, 255, 255, 0.4);
    }

    .info-item:last-child {
        border-bottom: none;
    }

    .access-content {
        grid-template-columns: 1fr;
        gap: 30px;
    }

    .access-content img {
        height: 280px;
    }


    /* ---------- MENU ---------- */

    .menu-section {
        padding: 60px 15px;
    }

    .menu-category-nav {
        gap: 8px;
        flex-wrap: wrap;

        margin-bottom: 70px;
    }

    .menu-category-nav a {
        flex: 1;

        min-width: auto;
        padding: 12px 5px;

        font-size: 11px;
    }

    .menu-category {
        margin-bottom: 80px;
    }

    .category-title h2 {
        font-size: 32px;
    }

    .menu-grid {
        grid-template-columns: 1fr;
        gap: 25px;
    }

    .menu-section .menu-card-content {
        padding: 20px;
    }

    .menu-section .menu-card h3 {
        font-size: 21px;
    }

    .drink-item {
        padding: 15px 18px;
    }

    .menu-modal {
        padding: 15px;
    }

    .modal-content {
        display: block;

        max-height: 90vh;
    }

    .modal-content > img {
        height: 280px;
        min-height: 0;
    }

    .modal-text {
        padding: 30px 25px;
    }

    .modal-text h2 {
        font-size: 27px;
    }


    /* ---------- COMMITMENT ---------- */

    .commitment-intro {
        padding: 80px 20px;
    }

    .commitment-intro h2 {
        font-size: 32px;
    }

    .commitment-block {
        display: flex;
        flex-direction: column;

        min-height: auto;
    }

    .commitment-image {
        order: 1 !important;
    }

    .commitment-image img {
        height: 300px;
        min-height: 300px;
    }

    .commitment-text {
        order: 2 !important;

        padding: 55px 25px;
    }

    .commitment-text h2 {
        font-size: 32px;
    }

    .commitment-full {
        min-height: 550px;
    }

    .commitment-full-content {
        min-height: 550px;
        padding: 60px 25px;
    }

    .commitment-full-content h2 {
        font-size: 40px;
    }

    .commitment-full-content p:not(.section-label) {
        font-size: 15px;
    }

    .commitment-story {
        padding: 80px 20px;
    }

    .commitment-story h2 {
        font-size: 32px;
    }


    /* ---------- NEWS ---------- */

    .recommend-section {
        padding: 70px 20px;
    }

    .recommend-card {
        grid-template-columns: 1fr;
    }

    .recommend-image img {
        min-height: 250px;
    }

    .recommend-content {
        padding: 35px 25px;
    }

    .recommend-content h3 {
        font-size: 22px;
    }

    .news-section {
        padding: 70px 20px;
    }

    .news-list {
        max-height: 400px;
        padding-right: 5px;
    }

    .news-item {
        grid-template-columns: 1fr;
        gap: 10px;

        padding: 25px 0;
    }

    .news-date,
    .news-item time {
        font-size: 13px;
    }


    /* ---------- ACCESS ---------- */

    .access-section {
        padding: 70px 20px;
    }

    .access-inner {
        grid-template-columns: 1fr;
        gap: 50px;
    }

    .access-information h2 {
        font-size: 32px;
    }

    .access-map {
        aspect-ratio: 4 / 3;
    }

    .access-route {
        padding: 70px 20px;
    }

    .access-route h2 {
        font-size: 32px;
    }

    .business-calendar {
        margin-top: 45px;
    }

    .business-calendar h3 {
        font-size: 21px;
    }

    .calendar-frame iframe {
        min-height: 500px;
    }

    .area-access {
        padding: 70px 20px;
    }

    .area-access-inner {
        overflow-x: auto;
    }

    .interactive-map {
        min-width: 800px;
    }

    .spot-detail {
        position: fixed;
        inset: 0;
        width: 100vw;
        height: 100dvh;
        z-index: 2000;
        background: rgba(0, 0, 0, 0.65);
    }

    .map-point {
        padding: 5px 8px;

        font-size: 10px;
    }

    .map-shop-point {
        padding: 6px 10px;

        font-size: 10px;
    }

    .spot-detail-card {
        width: min(90vw, 450px);
        max-height: 80dvh;
        overflow-y: auto;
        padding: 20px;
    }

    .spot-detail-card img {
        width: 100%;
        height: auto;
    }

    .spot-detail-content {
        padding: 15px 5px 5px;
    }

    .spot-detail-content h3 {
        font-size: 18px;
    }

    .spot-time {
        font-size: 20px;
    }

    .spot-close {
        top: -12px;
        right: -12px;

        width: 35px;
        height: 35px;

        font-size: 20px;
    }


    /* ---------- RESERVATION ---------- */

    .reservation-section {
        padding: 70px 20px;
    }

    .reservation-inner h2 {
        font-size: 26px;
    }

    .reservation-phone {
        margin-top: 40px;
        padding: 30px 15px;
    }

    .reservation-phone a {
        font-size: 28px;
    }

    .reservation-info {
        grid-template-columns: 1fr;
        gap: 15px;

        margin-top: 40px;
    }

    .reservation-info-item {
        padding: 25px 20px;
    }

    .reservation-notice-box {
        margin-top: 40px;
        padding: 25px 20px;
    }


    /* ---------- フッター ---------- */

    .footer-nav {
        flex-direction: column;
        gap: 15px;
    }
}

@media (max-width: 480px) {
    .welcome-text {
        position: static;
    }

    .reservation-notice {
        left: auto;
        right: 18px;
        top: 75px;
        bottom: auto;
        margin-bottom: 0;
        padding: 12px 16px;
        font-size: 14px;
        line-height: 1.5;
    }

    .reservation-notice::after {
        left: 70%;
    }
}




/* =========================
   STORYページ
========================= */


/* ---------- ページタイトル ---------- */

.story-page-hero {

    position: relative;

    overflow: hidden;

}


/* =========================
   オープニング
========================= */

.story-opening {

    padding: 180px 20px;

    background-color: #f8f5ee;

}


.story-opening-inner {

    max-width: 900px;

    margin: 0 auto;

    text-align: center;

}


.story-opening h2 {

    margin: 30px 0;

    font-size: clamp(38px, 6vw, 72px);

    line-height: 1.5;

}


.story-opening-text {

    font-size: 20px;

    line-height: 2.2;

}


/* =========================
   ストーリーシーン
========================= */

.story-scene {

    padding: 120px 20px;

    background-color: #ffffff;

}


.story-scene:nth-of-type(even) {

    background-color: #f8f5ee;

}


.story-scene-inner {

    display: grid;

    grid-template-columns: 1fr 1fr;

    gap: 100px;

    align-items: center;

    max-width: 1200px;

    margin: 0 auto;

}


/* 逆向き */

.story-scene-reverse .story-visual {

    order: 2;

}


.story-scene-reverse .story-content {

    order: 1;

}


/* =========================
   写真・シルエット
========================= */

.story-visual {

    position: relative;

    overflow: hidden;

    min-height: 600px;

    background-color: #f6f3ef;

}


.story-visual img {

    display: block;

    width: 100%;

    height: 100%;

    min-height: 600px;

    object-fit: cover;

    object-position: center;

    filter:
        grayscale(100%)
        contrast(1.2)
        brightness(0.55);

    transform: scale(1.08);

    transition:
        transform 1.5s ease,
        filter 1s ease;

}


/* 画像の上に暗い層 */

.story-visual::after {

    content: "";

    position: absolute;

    inset: 0;

    background:
        linear-gradient(
            to bottom,
            rgba(0, 0, 0, 0.15),
            rgba(0, 0, 0, 0.55)
        );

    pointer-events: none;

}


/* 表示された時 */

.story-reveal.show .story-visual img,
.story-visual.story-reveal.show img {

    transform: scale(1);

}


/* =========================
   文章
========================= */

.story-content {

    max-width: 500px;

}


.story-number {

    margin-bottom: 20px;

    color: #c4a77d;

    font-size: 14px;

    letter-spacing: 4px;

}


.story-content h2 {

    margin-bottom: 35px;

    font-size: clamp(32px, 4vw, 52px);

    line-height: 1.5;

}


.story-content p {

    margin-bottom: 20px;

    line-height: 2;

}


.story-emphasis {

    margin-top: 30px;

    font-size: 20px;

    font-weight: bold;

    line-height: 2;

}


/* =========================
   人生の言葉
========================= */

.story-quote-section {

    padding: 180px 20px;

    background-color: #2d2925;

    color: #ffffff;

}


.story-quote-inner {

    max-width: 900px;

    margin: 0 auto;

    text-align: center;

}


.story-quote-section .section-label {

    color: #c4a77d;

}


.story-quote-section h2 {

    margin: 30px 0 50px;

    font-size: clamp(38px, 6vw, 70px);

    line-height: 1.5;

}


.story-quote-section p {

    margin-bottom: 25px;

    line-height: 2;

}


/* =========================
   ラスト
========================= */

.story-final {

    position: relative;

    display: flex;

    justify-content: center;

    align-items: center;

    min-height: 900px;

    overflow: hidden;

    color: #ffffff;

    text-align: center;

}


.story-final-image {

    position: absolute;

    inset: 0;

}


.story-final-image img {

    width: 100%;

    height: 100%;

    object-fit: cover;

    filter:
        grayscale(100%)
        contrast(1.2)
        brightness(0.35);

}


.story-final::after {

    content: "";

    position: absolute;

    inset: 0;

    background-color: rgba(0, 0, 0, 0.45);

}


.story-final-content {

    position: relative;

    z-index: 2;

    max-width: 800px;

    padding: 120px 20px;

}


.story-final-content .section-label {

    color: #c4a77d;

}


.story-final h2 {

    margin: 30px 0;

    font-size: clamp(32px, 5vw, 60px);

    line-height: 1.5;

}


.story-final-content > p {

    margin-bottom: 20px;

    line-height: 2;

}


.story-final-message {

    margin: 60px 0;

    padding: 40px 20px;

    border-top: 1px solid rgba(255, 255, 255, 0.5);

    border-bottom: 1px solid rgba(255, 255, 255, 0.5);

}


.story-final-message p {

    font-size: 20px;

    line-height: 2;

}


.story-final h3 {

    margin-bottom: 20px;

    color: #c4a77d;

    font-size: 16px;

    letter-spacing: 2px;

}


.story-shop-name {

    font-size: clamp(40px, 7vw, 80px) !important;

    letter-spacing: 3px;

}


.story-final-line {

    margin-top: 50px;

    font-size: 22px;

    line-height: 2;

}


/* =========================
   スクロールアニメーション
========================= */

.story-reveal {

    opacity: 0;

    transform: translateY(50px);

    transition:

        opacity 1s ease,

        transform 1s ease;

}


.story-reveal.show {

    opacity: 1;

    transform: translateY(0);

}


/* 左から */

.story-reveal-left {

    opacity: 0;

    transform: translateX(-60px);

    transition:

        opacity 1s ease,

        transform 1s ease;

}


.story-reveal-left.show {

    opacity: 1;

    transform: translateX(0);

}


/* 右から */

.story-reveal-right {

    opacity: 0;

    transform: translateX(60px);

    transition:

        opacity 1s ease,

        transform 1s ease;

}


.story-reveal-right.show {

    opacity: 1;

    transform: translateX(0);

}


/* =========================
   スマホ
========================= */

@media screen and (max-width: 768px) {


    .story-opening {

        padding: 120px 20px;

    }


    .story-scene {

        padding: 80px 20px;

    }


    .story-scene-inner {

        grid-template-columns: 1fr;

        gap: 50px;

    }


    .story-scene-reverse .story-visual {

        order: 1;

    }


    .story-scene-reverse .story-content {

        order: 2;

    }


    .story-visual {

        min-height: 420px;

    }


    .story-visual img {

        min-height: 420px;

    }


    .story-content h2 {

        font-size: 32px;

    }


    .story-quote-section {

        padding: 120px 20px;

    }


    .story-final {

        min-height: 800px;

    }


    .story-final-content {

        padding: 100px 20px;

    }

}


.chef-story-link {
    padding: 140px 20px;
    text-align: center;
    background: #f3f0e8;
}

.chef-story-link-inner {
    max-width: 800px;
    margin: 0 auto;
}

.chef-story-link h2 {
    margin: 20px 0 30px;
    font-size: 36px;
    line-height: 1.7;
}

.chef-story-link p {
    line-height: 2;
}

.chef-story-button {
    display: inline-flex;
    align-items: center;
    gap: 30px;

    margin-top: 40px;
    padding: 18px 35px;

    border: 1px solid #222;
    color: #222;
    text-decoration: none;

    transition: 0.3s;
}

.chef-story-button span {
    transition: transform 0.3s;
}

.chef-story-button:hover {
    background: #222;
    color: #fff;
}

.chef-story-button:hover span {
    transform: translateX(6px);
}

@media (max-width: 600px) {

    .chef-story-link {
        padding: 100px 20px;
    }

    .chef-story-link h2 {
        font-size: 26px;
    }

    .chef-story-button {
        width: 100%;
        justify-content: space-between;
    }

}

/* ナビゲーション・写真枠・詳細文の表示調整 */
.nav-menu{position:relative;display:flex;align-items:center}
.nav .nav-menu-link{display:inline-flex;align-items:center;gap:8px}
.nav-menu-link::after{content:"";width:5px;height:5px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:translateY(-2px) rotate(45deg)}
.nav-dropdown{position:absolute;top:100%;left:50%;width:250px;padding:15px 20px;background:#f8f5ee;color:#2d2925;border:1px solid #ddd5c9;box-shadow:0 16px 30px rgba(0,0,0,.18);transform:translate(-50%,8px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s,transform .2s,visibility .2s}
.nav-menu:hover .nav-dropdown,.nav-menu:focus-within .nav-dropdown{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,0)}
.nav .nav-dropdown a{display:flex;justify-content:space-between;align-items:center;padding:11px 4px;border-bottom:1px solid #ddd5c9;font-size:14px;letter-spacing:.06em}
.nav .nav-dropdown a:last-child{border-bottom:0}
.nav .nav-dropdown a:hover,.nav .nav-dropdown a:focus-visible{color:#806b52;opacity:1}
.nav-dropdown span{color:#806b52}
.mobile-subnav{display:none}
.access-photo-frame{padding:12px;border:1px solid #cfc7bb;background:#fff;box-shadow:12px 12px 0 #e8e0d2}
.access-photo-frame img{height:400px;object-fit:cover}
.commitment-empty{min-height:550px;background:#f8f5ee}
.modal-text h2,.modal-details span,.modal-description{white-space:pre-line;overflow-wrap:anywhere}
.modal-text h2{line-height:1.45;text-wrap:balance}
.modal-details p{grid-template-columns:74px minmax(0,1fr);gap:10px}
.menu-section .menu-card h3{text-wrap:balance;overflow-wrap:anywhere}
.drink-item p{overflow-wrap:anywhere}
@media(max-width:768px){.mobile-subnav{display:block;background:#eee8de}.mobile-nav .mobile-subnav-link{display:block;padding:11px 25px;font-size:12px;letter-spacing:.08em}.commitment-empty{display:none}.access-photo-frame{padding:8px;box-shadow:8px 8px 0 #e8e0d2}.access-photo-frame img{height:280px}.modal-details p{grid-template-columns:68px minmax(0,1fr);font-size:13px}}

.menu-category{scroll-margin-top:100px}

/* 後から写真を入れる枠。読み込めるまでは空白にしておく */
.replaceable-photo img {
    visibility: hidden;
    object-position: var(--photo-position, center);
}

.replaceable-photo.image-ready img {
    visibility: visible;
}

.commitment-image.replaceable-photo {
    min-height: 550px;
    background: #f8f5ee;
}

@media (max-width: 768px) {
    .commitment-image.replaceable-photo {
        min-height: 300px;
    }
}

/* 画像がないアクセス詳細にも写真分の余白を確保する */
.spot-photo-space {
    height: 220px;
    background: #ffffff;
}

.spot-detail-card .spot-photo-space img {
    display: block;
    width: 100%;
    height: 220px;
    object-fit: cover;
}

/* 信州の食材は文章を左、余白を右にする */
.commitment-block-ingredients .commitment-empty {
    order: 2;
}

/* 予約の吹き出しをリンクとして使えるようにする */
.reservation-notice {
    cursor: pointer;
    text-decoration: none;
}
.reservation-notice:focus-visible {
    outline: 3px solid #c4a77d;
    outline-offset: 5px;
}
.reservation-section {
    scroll-margin-top: 80px;
}

/* メニュー詳細：横長では指定位置で改行し、縦長では一続きに表示 */
.modal-title-second-line { display: block; }
.modal-price { white-space: pre-line; }
@media (orientation: portrait) {
    .modal-title-second-line { display: inline; }
    .modal-name-responsive {
        font-size: clamp(14px, 4.4vw, 27px);
        white-space: nowrap;
        overflow-wrap: normal;
        text-wrap: nowrap;
    }
}

/* スマホのメニュー項目は矢印で開閉する */
.mobile-nav .mobile-menu-row { display:flex; align-items:stretch; border-top:1px solid #ddd5c9; }
.mobile-nav .mobile-menu-row > a { flex:1; border-top:0; }
.mobile-subnav-toggle { width:58px; border:0; border-left:1px solid #ddd5c9; background:#f8f5ee; color:#2d2925; font-size:30px; cursor:pointer; }
.mobile-subnav-toggle[aria-expanded="true"] { background:#eee8de; }
.mobile-nav .mobile-subnav { display:none; }
.mobile-nav .mobile-subnav.is-open { display:block; }
.mobile-nav .mobile-subnav-link { display:block; }

/* 料理名はスマホの縦長表示で指定位置に改行する */
.menu-title-portrait { display:none; }
@media (max-aspect-ratio: 3/4.75) {
    .has-portrait-title .menu-title-regular { display:none; }
    .has-portrait-title .menu-title-portrait { display:inline; }
    .modal-text h2.has-portrait-title { font-size:27px; white-space:normal; overflow-wrap:normal; text-wrap:auto; }
}

/* おすすめカード全体を詳細画面への入口にする */
.menu-preview .menu-card[data-menu-index] { cursor:pointer; }
.menu-preview .menu-card[data-menu-index]:focus-visible { outline:3px solid #806b52; outline-offset:4px; }

@media (pointer:fine) {
    .modal-text h2.desktop-title-no-break {
        font-size: 27px;
        white-space: nowrap;
        overflow-wrap: normal;
        text-wrap: nowrap;
    }
}

@media (pointer:fine) {
    .menu-section .menu-card h3.desktop-title-no-break,
    .menu-preview .menu-card h3.desktop-title-no-break {
        white-space: nowrap;
        overflow-wrap: normal;
        text-wrap: nowrap;
        font-size: 24px;
    }
    .menu-section .menu-card h3.desktop-title-exact-lines,
    .menu-preview .menu-card h3.desktop-title-exact-lines,
    .modal-text h2.desktop-title-exact-lines {
        font-size: 24px;
    }
    .desktop-title-exact-lines .menu-title-regular {
        white-space: nowrap;
        overflow-wrap: normal;
        text-wrap: nowrap;
    }
}

@media (max-width:768px)  {
    .spot-detail-card .spot-close { top:8px; right:8px; }
}
@media (max-width:768px) and (pointer:fine) {
    .menu-section .menu-card h3.desktop-title-no-break,
    .menu-section .menu-card h3.desktop-title-exact-lines,
    .menu-preview .menu-card h3.desktop-title-no-break,
    .menu-preview .menu-card h3.desktop-title-exact-lines,
    .modal-text h2.desktop-title-no-break,
    .modal-text h2.desktop-title-exact-lines {
        font-size: 21px;
    }
}

/* 金額の「税込み」部分を小さくする設定 */
.tax-price {
    font-size: 0.8em;        /* 通常より少し小さくする（0.7em〜0.8emあたりがおすすめ） */
    color: #666666;          /* お好みで文字の色を少し薄いグレーにすると、よりメインの金額が引き立ちます */
    margin-left: 4px;        /* 左側に少しだけ隙間をあける */
}
