@charset "UTF-8";
/* ============================================================
   客室詳細ページ共通 (room-detail.css)  — room1〜room4
   PC: Figma「room1〜4」フレーム準拠 / SP: room_spパターン
============================================================ */

.rd-content{
  position:relative;z-index:2;
  background:var(--white) url('../images/bg-texture.png') top left/800px auto;
  display:flex;flex-direction:column;align-items:center;
  padding-bottom:100px;
}

/* パンくず的リンクバー */
.rd-linkbar{
  width:100%;background:rgb(17 17 17 / 60%);
  display:flex;gap:10px;align-items:center;flex-wrap:wrap;
  padding:20px 66px;font-size:15px;font-weight:500;
}
.rd-linkbar a{transition:opacity .3s;}
.rd-linkbar a:hover{opacity:.55;}
.rd-linkbar .sep,.rd-linkbar .label{color:var(--text2);}

/* イントロ */
.rd-intro{
  display:flex;flex-direction:column;gap:77px;
  max-width:1550px;text-align:center;padding:100px 40px 50px;
}
.rd-intro h2{font-size:40px;font-weight:500;line-height:1.4;}
.rd-intro p{font-size:15px;line-height:2;}

/* スライダー 3枚 */
  .rd-slider {
    width: 100%;
    position: relative;
    padding: 50px 0;
    overflow: hidden; /* 画面外の要素を隠す */
  }
  .rd-slider__track {
    display: flex;
    align-items: center; /* 【修正点】stretchによる意図しない縦伸びを防ぐ */
    gap: 30px;
    width: max-content; /* スライドが横一列に並ぶように中身に合わせる */
    position: relative;
    will-change: transform;
    /* ▼ ちらつき（フリッカー）防止 ▼ */
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
  }
  .rd-slider__slide {
    /* 画面幅が小さい時は80%にして左右が見えるようにし、最大1200pxに制限 */
    width: min(1200px, 80vw);
    /* 元のサイズ（1200x724等）の比率を維持してレスポンシブ対応 */
    aspect-ratio: 1200 / 724;
    flex: 0 0 auto;
    overflow: hidden; /* 【修正点】念のためのはみ出し防止 */
    /* ▼ ちらつき（フリッカー）防止 ▼ */
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
  }
  .rd-slider__slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    background-color: #ddd; /* 画像がない場合のダミー色 */
    display: block; /* 【修正点】imgタグ特有の下部の数pxの隙間をなくす */
  }
  /* ナビゲーションドット */
  .rd-slider__dots {
    position: absolute;
    bottom: 84px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 20px;
    z-index: 3;
  }
  .rd-slider__dots button {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    border: 0;
    padding: 0;
    cursor: pointer;
    background: rgba(255, 255, 255, 0.55);
    transition: background 0.3s;
    box-shadow: 0 0 3px rgba(0,0,0,0.3); /* 白背景でも見やすいように微調整 */
  }
  .rd-slider__dots button.is-active {
    background: #fff;
  }
  /* --- スマホ閲覧時のレスポンシブ調整 --- */
  @media (max-width: 768px) {
    .rd-slider__track {
      gap: 20px; /* 隙間をスマホ向けに狭める */
    }
    .rd-slider__dots {
      bottom: 60px;
    }
  }

  

/* 線上タイトル（左寄せ） */
.rd-ttl{display:flex;flex-direction:column;gap:52px;align-items:flex-start;}
.rd-ttl::before{content:"";width:79px;height:1px;background:currentColor;display:block;}
.rd-ttl h3,.rd-ttl h2{font-size:40px;font-weight:500;line-height:1.5;}
/* 線上タイトル（中央） */
.rd-ttl--center{align-items:center;text-align:center;gap:34px;}

/* 特徴（テキスト＋2枚組画像） */
.rd-feature{
  display:flex;gap:85px;align-items:center;justify-content:center;
  padding:50px 40px;width:100%;
}
.rd-feature__txt{width:608px;display:flex;flex-direction:column;gap:73px;}
.rd-feature__txt p{font-size:15px;line-height:2;}
.rd-feature__imgs{display:flex;gap:32px;align-items:flex-start;}
.rd-feature__imgs figure{margin:0;width:339px;height:523px;}
.rd-feature__imgs figure:nth-child(2){margin-top:10%;}
.rd-feature__imgs img{width:100%;height:100%;object-fit:cover;}

/* 客室露天風呂（濃紺） */
.rd-bath{
  width:100%;background:var(--navy);color:#fff;
  display:flex;gap:75px;align-items:center;
  margin-top:50px;
}
.rd-bath__img{width:58.6%;flex-shrink:0;height:734px;}
.rd-bath__img img{width:100%;height:100%;object-fit:cover;}
.rd-bath__txt{display:flex;flex-direction:column;gap:73px;max-width:100%;padding-right:40px;}
.rd-bath__txt p{font-size:15px;line-height:2;}

/* 客室概要（info + 間取り図） */
.rd-outline{
  width:100%;display:flex;justify-content:center;padding:100px 40px;
}
.rd-outline__inner{display:flex;gap:5%;align-items:center;width:1400px;max-width:100%;}
.rd-outline__txt{width:40%;flex-shrink:0;display:flex;flex-direction:column;gap:30px;}
.rd-outline .info-list{border-top:1px solid rgba(51,51,51,.2);}
.rd-outline .info-list>div{padding:15px 0;}
.rd-outline__floor{
  flex:1;min-width:0;background:#fff;padding:10px;
  display:flex;align-items:center;justify-content:center;
}
.rd-outline__floor img{width:100%;height:auto;}

/* おすすめプラン */
.rd-plan{
  width:100%;display:flex;flex-direction:column;align-items:center;gap:77px;
  padding:50px 40px 100px;
}
.rd-plan__card{
  display:flex;width:1400px;max-width:100%;
  filter:drop-shadow(0 4px 10px rgba(0,0,0,.06));
}
.rd-plan__img{flex:1;min-width:0;height:616px;}
.rd-plan__img img{width:100%;height:100%;object-fit:cover;}
.rd-plan__body{
  width:681px;flex-shrink:0;background:#fff;height:616px;
  display:flex;flex-direction:column;justify-content:center;gap:60px;
  padding:80px;
}
.rd-plan__body h4{font-size:30px;line-height:1.5;font-weight:400;}
.rd-plan__body p{font-size:15px;line-height:2;}
.rd-plan__btn{
  display:flex;align-items:center;justify-content:center;
  height:76px;border:1px solid var(--text);border-radius:5px;
  font-size:20px;font-weight:500;transition:.35s var(--ease);
}
.rd-plan__btn:hover{background:var(--gold);border-color:var(--gold);color:#fff;}

/* lightbox */
.image-wrapper {
    position: relative;
    display: inline-block;
    cursor: zoom-in;
    border-radius: 8px;
    overflow: hidden;
    transition: opacity 0.2s ease, transform 0.2s ease;
}

.image-wrapper:hover {
    opacity: 0.95;
}

.image-wrapper img {
    display: block;
    max-width: 100%;
    max-height: 88vh;
    height: auto;
    object-fit: contain;
    margin: 0 auto;
    border-radius: 8px;
}

.hover-hint {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.35);
    opacity: 0;
    transition: opacity 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.image-wrapper:hover .hover-hint {
    opacity: 1;
}

.hint-badge {
    background: rgba(0, 0, 0, 0.8);
    color: #ffffff;
    padding: 0.5rem 1rem;
    border-radius: 9999px;
    font-size: 0.875rem;
    font-weight: 500;
    border: 1px solid rgba(255, 255, 255, 0.2);
    display: flex;
    align-items: center;
    gap: 0.5rem;
    backdrop-filter: blur(4px);
}

.lightbox-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    z-index: 9999;
    background-color: rgba(12, 10, 9, 0.93);
    backdrop-filter: blur(8px);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    user-select: none;
    -webkit-user-select: none;
    transition: opacity 0.3s ease, visibility 0.3s ease;
}

.lightbox-overlay.hidden-lightbox {
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
}

.lightbox-overlay.active-lightbox {
    opacity: 1;
    pointer-events: auto;
    visibility: visible;
}

.lightbox-header {
    padding: 0.75rem 2rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    z-index: 10;
    background: linear-gradient(to bottom, rgba(0,0,0,0.9), rgba(0,0,0,0));
    width: 100%;
}

.lightbox-title-group {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0; /* Flexbox ellipsis に必須 */
    flex: 1;
}

.dot-indicator {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: #c5a059;
    flex-shrink: 0;
}

.lightbox-title {
    font-family: 'Noto Serif JP', serif;
    font-size: 0.9rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    color: #ffffff;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lightbox-controls {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    flex-shrink: 0;
}

.ctrl-btn {
    background: rgba(255, 255, 255, 0.15);
    color: #e7e5e4;
    border: none;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 9999px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease, transform 0.1s ease;
    font-size: 0.85rem;
}

.ctrl-btn:hover {
    background: rgba(255, 255, 255, 0.3);
    color: #ffffff;
}

.ctrl-btn:active {
    transform: scale(0.95);
}

.zoom-text {
    font-family: monospace;
    font-size: 0.75rem;
    width: 2.8rem;
    text-align: center;
    color: #d6d3d1;
}

.reset-btn {
    width: auto;
    padding: 0 0.65rem;
    height: 2.25rem;
    font-size: 0.75rem;
    gap: 0.25rem;
}

.reset-text {
    display: inline;
}

.divider {
    width: 1px;
    height: 1.25rem;
    background-color: rgba(255, 255, 255, 0.2);
    margin: 0 0.15rem;
}

.close-btn {
    background: rgba(220, 38, 38, 0.8);
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: #ffffff;
}

.close-btn:hover {
    background: #ef4444;
}

.lightbox-viewport {
    flex-grow: 1;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    touch-action: none; /* スマホでのデフォルトスクロールを防止 */
}

.grab-cursor {
    cursor: grab;
}

.grabbing-cursor {
    cursor: grabbing !important;
}

.lightbox-img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    transform-origin: center center;
    will-change: transform;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.6);
    border-radius: 4px;
    user-select: none;
    -webkit-user-drag: none;
}

.lightbox-footer {
    padding: 0.6rem 1rem;
    text-align: center;
    color: #a8a29e;
    font-size: 0.75rem;
    z-index: 10;
    background: linear-gradient(to top, rgba(0,0,0,0.9), rgba(0,0,0,0));
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
    width: 100%;
}

.footer-guide-item {
    display: flex;
    align-items: center;
    gap: 0.35rem;
}

.footer-guide-item i {
    color: #78716c;
}

/* レスポンシブ調整（スマホ・タブレット向け） */
@media (max-width: 640px) {
    .lightbox-header {
        padding: 0.5rem 0.75rem;
    }

    .lightbox-title {
        font-size: 0.8rem;
        max-width: 120px;
    }

    .ctrl-btn {
        width: 2rem;
        height: 2rem;
        font-size: 0.75rem;
    }

    .reset-btn {
        padding: 0 0.5rem;
        height: 2rem;
    }

    .reset-text {
        display: none; /* モバイルでは「リセット」テキストを隠してアイコンのみ */
    }

    .zoom-text {
        width: 2.2rem;
        font-size: 0.7rem;
    }

    .lightbox-footer {
        padding: 0.5rem 0.5rem;
        font-size: 0.7rem;
        gap: 0.75rem;
    }

    .guide-keyboard {
        display: none; /* スマホではEscキー説明を非表示 */
    }
}


/* ============================================================
   レスポンシブ
============================================================ */
@media (max-width:1400px){
  .rd-outline__txt{width: 40%;}
  .rd-plan__img,.rd-plan__body{height: 500px;}
  .rd-plan__body{gap: 10%;}
}

@media (max-width:900px){
  .rd-feature{gap:50px;flex-wrap:wrap;}
  .rd-outline__inner{flex-wrap:wrap;gap:50px;}
  .rd-outline__txt{width:100%;}
  .rd-plan__card{flex-direction:column;}
  .rd-plan__body{width:100%;height:auto;padding:50px;}
  .rd-bath{flex-wrap:wrap;gap:40px;}
  .rd-bath__img{width:100%;height:auto;aspect-ratio:1065/734;}
  .rd-bath__txt{padding:0 40px 60px;}
  .rd-slider__track{padding:0 8%;}
  .rd-slider__slide{flex-basis:84%;height:auto;aspect-ratio:1200/812;max-width: 77vw;}
  
  .rd-content{padding-bottom:60px;}
  .rd-linkbar{padding:14px 20px;font-size:13px;}
  .rd-intro{padding:60px 30px 30px;gap:30px;}
  .rd-intro h2{font-size:26px;}
  .rd-slider{padding:20px 0;}
  .rd-slider__track{gap:15px;padding:0 30px;}
  .rd-slider__slide{flex-basis:100%;}
  .rd-slider__dots{bottom:40px;}
  .rd-ttl{gap:26px;}
  .rd-ttl h2,.rd-ttl h3{font-size:26px;}
  .rd-feature{flex-direction:column;padding:30px;gap:40px;}
  .rd-feature__txt{width:100%;gap:36px;}
  .rd-feature__imgs{gap:15px;}
  .rd-feature__imgs figure{width:calc(50% - 8px);height:auto;aspect-ratio:339/523;}
  .rd-feature__imgs figure:nth-child(2){margin-top:60px;}
  .rd-bath{margin-top:30px;padding-bottom:0;}
  .rd-bath__txt{padding:0 30px 60px;gap:36px;}
  .rd-outline{padding:60px 30px;}
  .rd-outline__inner{gap:40px;}
  .rd-plan{padding:30px 30px 60px;gap:40px;}
  .rd-plan__body{padding:30px 20px;gap:36px;}
  .rd-plan__body h4{font-size:24px;}
  .rd-plan__img{height:auto;aspect-ratio:16/10;}
  .rd-plan__btn{font-size:16px;height:60px;width: min(100%, 300px);margin: auto;}
  .rd-outline__floor{max-width: 100%;margin: auto;}
  .room-reserve {padding: 50px 30px 0;}

  .lightbox-header {padding: 0.75rem 1rem;}
  .lightbox-footer{display: none;}
}

@media (max-width:600px){
  .rd-slider__slide{height: 230px;max-width: 80vw;}
}

/* 下部リンク */
.rd-back{
  display:inline-flex;flex-direction:column;gap:10px;
  font-size:20px;font-weight:500;text-align:center;
}
.rd-back .more-btn__line{width:384px;height:10px;}
.more-btn{width:384px;}
.more-btn__line::after {
    left: 97%;
    bottom: 11px;
}


@media (max-width:900px){
  .rd-back{font-size:16px;}
  .rd-back .more-btn__line{width:100%;}
}


@media (max-width:600px){
.more-btn {
    width: 85%;
}
.rd-linkbar{display: flex;}
.rd-outline .info-list>div{padding:10px 0;}
.rd-slider__dots {bottom: 31px;}
.rd-outline {padding: 60px 30px 0;}
.room-reserve{margin-bottom: 10%!important;}
}

