:root {
        --ink: #151109;
        --ink2: #221c12;
        --paper: #f8f4ec;
        --paper2: #efe4cf;
        --terracotta: #d97a52;
        --terracotta-deep: #9c4f34;
        --clay: #9c4f34;
        --line: rgba(247, 243, 236, 0.18);
        --line-dark: rgba(21, 17, 9, 0.14);
      }
      * {
        box-sizing: border-box;
        margin: 0;
        padding: 0;
      }
      html {
        scroll-behavior: smooth;
      }
      body {
        font-family: "Noto Sans JP", sans-serif;
        background: var(--paper);
        color: var(--ink);
        -webkit-font-smoothing: antialiased;
        line-height: 1.8;
      }
      h1,
      h2,
      h3,
      .serif {
        font-family: "Shippori Mincho", serif;
        font-weight: 600;
      }
      img {
        max-width: 100%;
        display: block;
      }
      .wrap {
        max-width: 1180px;
        margin: 0 auto;
        padding: 0 40px;
      }
      a {
        color: inherit;
      }

      /* ---- nav ---- */
      header {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        z-index: 100;
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 22px 48px;
        transition: 0.35s;
        color: var(--paper);
        background: rgba(21, 17, 9, 0);
      }
      header.solid {
        background: rgba(21, 17, 9, 0.94);
        backdrop-filter: blur(6px);
        box-shadow: 0 4px 22px rgba(0, 0, 0, 0.25);
      }
      .logo {
        font-family: "Shippori Mincho", serif;
        font-size: 15px;
        letter-spacing: 0.22em;
        cursor: pointer;
      }
      .logo-img {
        height: 44px;
        width: auto;
        cursor: pointer;
      }
      nav {
        display: flex;
        align-items: center;
        gap: 26px;
        font-size: 11px;
        letter-spacing: 0.06em;
      }
      nav .navlink {
        background: none;
        border: none;
        color: inherit;
          /* <button> 에서 <a> 로 바뀌었으므로 링크 기본 스타일을 지운다 */
          text-decoration: none;
          display: inline-block;
        font-family: "Noto Sans JP", sans-serif;
        font-size: 11px;
        letter-spacing: 0.06em;
        cursor: pointer;
        position: relative;
        padding: 4px 0;
        opacity: 0.88;
      }
      nav .navlink.active {
        opacity: 1;
      }
      nav .navlink::after {
        content: "";
        position: absolute;
        left: 0;
        bottom: 0;
        width: 0;
        height: 1px;
        background: var(--terracotta);
        transition: 0.3s;
      }
      nav .navlink:hover::after,
      nav .navlink.active::after {
        width: 100%;
      }
      .btn-reserve {
        background: var(--terracotta);
        color: var(--paper) !important;
        border: none;
        padding: 9px 20px;
        border-radius: 2px;
        font-size: 11px;
        letter-spacing: 0.1em;
        transition: 0.2s;
        cursor: pointer;
        font-family: "Noto Sans JP", sans-serif;
      }
      .btn-reserve:hover {
        background: var(--terracotta-deep);
      }

      .hamburger {
        display: none;
        flex-direction: column;
        justify-content: center;
        gap: 5px;
        width: 28px;
        height: 22px;
        background: none;
        border: none;
        cursor: pointer;
        z-index: 200;
        position: relative;
      }
      .hamburger span {
        display: block;
        height: 2px;
        width: 100%;
        background: #fff;
        transition: 0.3s;
      }
      .hamburger.active span:nth-child(1) {
        transform: translateY(7px) rotate(45deg);
      }
      .hamburger.active span:nth-child(2) {
        opacity: 0;
      }
      .hamburger.active span:nth-child(3) {
        transform: translateY(-7px) rotate(-45deg);
      }
      .nav-overlay {
        display: none;
        position: fixed;
        inset: 0;
        background: rgba(21, 17, 9, 0.45);
        z-index: 90;
      }
      .nav-overlay.active {
        display: block;
      }
      body.nav-open {
        overflow: hidden;
      }

      .page {
        display: none;
      }
      .page.active {
        display: block;
      }

      /* ---- hero ---- */
      .hero {
        height: 92vh;
        min-height: 560px;
        position: relative;
        display: flex;
        align-items: flex-end;
        color: var(--paper);
        background-size: cover;
        background-position: center;
      }
      .hero::before {
        content: "";
        position: absolute;
        inset: 0;
        z-index: 1;
        background: linear-gradient(
          180deg,
          rgba(21, 17, 9, 0.18) 0%,
          rgba(21, 17, 9, 0.12) 40%,
          rgba(21, 17, 9, 0.86) 100%
        );
      }
      .hero-slides {
        position: absolute;
        inset: 0;
        overflow: hidden;
        z-index: 0;
      }
      .hero-slide {
        position: absolute;
        inset: 0;
        background-size: cover;
        background-position: center;
        opacity: 0;
        transition: opacity 1.6s ease;
      }
      .hero-slide.active {
        opacity: 1;
      }
      .hero-inner {
        position: relative;
        z-index: 2;
        padding: 0 48px 80px;
        width: 100%;
      }
      .hero-logo {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 2;
        text-align: center;
      }
      .hero-logo img {
        width: clamp(150px, 20vw, 240px);
        height: auto;
        filter: drop-shadow(0 2px 18px rgba(0, 0, 0, 0.45));
      }
      .hero-kicker {
        font-size: 11px;
        letter-spacing: 0.3em;
        color: var(--terracotta);
        margin-bottom: 20px;
      }
      .hero h1 {
        font-size: clamp(26px, 4.6vw, 50px);
        line-height: 1.55;
        max-width: 800px;
        margin-bottom: 16px;
      }
      .hero-sub {
        font-size: 13px;
        letter-spacing: 0.05em;
        color: #e4d9bf;
        max-width: 520px;
      }

      section {
        position: relative;
      }
      .band-paper {
        background: var(--paper);
        padding: 110px 0;
      }
      .band-ink {
        background: var(--ink);
        color: var(--paper);
        padding: 110px 0;
      }
      .band-ink2 {
        background: var(--ink2);
        color: var(--paper);
        padding: 110px 0;
      }
      /* 같은 배경의 밴드가 연달아 오면 아래 여백 110 + 위 여백이 겹쳐
         빈 공간이 두 배로 보인다. 앞쪽 밴드의 아래 여백을 없앤다.
         사이에 다른 배경의 섹션이 다시 들어오면 규칙이 저절로 풀린다. */
      .band-paper:has(+ .band-paper),
      .band-ink:has(+ .band-ink),
      .band-ink2:has(+ .band-ink2) {
        padding-bottom: 0;
      }
      .kicker {
        font-size: 11px;
        letter-spacing: 0.28em;
        color: var(--terracotta-deep);
        margin-bottom: 16px;
        text-transform: uppercase;
      }
      .band-ink .kicker,
      .band-ink2 .kicker {
        color: var(--terracotta);
      }
      h2.headline {
        font-size: clamp(22px, 3vw, 34px);
        line-height: 1.6;
        margin-bottom: 22px;
      }
      .lead {
        font-size: 14.5px;
        line-height: 2.1;
        max-width: 600px;
        color: #4d4130;
      }
      .band-ink .lead,
      .band-ink2 .lead {
        color: #e6ddc9;
      }

      /* ---- intro (drop cap + image) ---- */
      .intro {
        display: grid;
        grid-template-columns: 1.1fr 0.9fr;
        gap: 64px;
        align-items: center;
      }
      .intro .cap {
        font-size: 48px;
        color: var(--terracotta-deep);
        font-family: "Shippori Mincho", serif;
        float: left;
        line-height: 0.8;
        margin: 6px 10px 0 0;
      }
      .intro p {
        font-size: 14.5px;
        line-height: 2.15;
        color: #4d4130;
      }
      .intro img {
        width: 100%;
        height: 480px;
        object-fit: cover;
      }

      /* ---- pillars ---- */
      .pillars {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 0;
        margin-top: 50px;
      }
      .pillar {
        padding: 0 32px;
        border-left: 1px solid var(--line);
      }
      .pillar:first-child {
        border-left: none;
        padding-left: 0;
      }
      .pillar .num {
        font-family: "Shippori Mincho", serif;
        font-size: 13px;
        color: var(--terracotta);
        letter-spacing: 0.15em;
        margin-bottom: 12px;
      }
      .pillar h3 {
        font-size: 16.5px;
        margin-bottom: 10px;
      }
      .pillar p {
        font-size: 12.5px;
        color: #d8cfb5;
        line-height: 1.95;
      }

      /* ---- origin grid (4 col, concept page) ---- */
      .origin-grid {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        gap: 0;
        margin-top: 44px;
      }
      .origin {
        padding: 0 26px;
        border-left: 1px solid var(--line-dark);
      }
      .origin:first-child {
        border-left: none;
        padding-left: 0;
      }
      .origin .rn {
        font-size: 10.5px;
        letter-spacing: 0.14em;
        color: var(--terracotta-deep);
        margin-bottom: 10px;
      }
      .origin h3 {
        font-size: 14.5px;
        margin-bottom: 8px;
        line-height: 1.5;
      }
      .origin p {
        font-size: 12px;
        color: #6b5c40;
        line-height: 1.8;
      }

      .cta {
        display: inline-block;
        margin-top: 36px;
        font-size: 12px;
        letter-spacing: 0.1em;
        padding-bottom: 5px;
        border-bottom: 1px solid var(--terracotta);
        text-decoration: none;
        cursor: pointer;
        background: none;
        border-top: none;
        border-left: none;
        border-right: none;
        color: inherit;
        font-family: "Noto Sans JP", sans-serif;
      }
      .band-paper .cta {
        border-bottom-color: var(--terracotta-deep);
      }

      /* ---- rooms grid ---- */
      .rooms-grid {
        display: grid;
        grid-template-columns: 1.4fr 1fr;
        grid-template-rows: auto auto;
        gap: 16px;
        margin-top: 44px;
      }
      .rooms-grid.even {
        grid-template-columns: 1fr 1fr;
      }
      .room-tile {
        position: relative;
        overflow: hidden;
        cursor: pointer;
      }
      .room-tile img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform 0.6s ease;
      }
      .room-tile:hover img {
        transform: scale(1.05);
      }
      .room-tile.big {
        grid-row: span 2;
        min-height: 520px;
      }
      .room-tile.small {
        min-height: 250px;
      }
      .room-tile.even-tile {
        min-height: 320px;
      }
      .room-overlay {
        position: absolute;
        inset: 0;
        background: linear-gradient(
          180deg,
          rgba(21, 17, 9, 0) 40%,
          rgba(21, 17, 9, 0.88) 100%
        );
        display: flex;
        flex-direction: column;
        justify-content: flex-end;
        padding: 26px;
        color: var(--paper);
      }
      .room-overlay .rk {
        font-size: 10px;
        letter-spacing: 0.2em;
        color: var(--terracotta);
        margin-bottom: 8px;
      }
      .room-overlay h3 {
        font-size: 18px;
        line-height: 1.5;
      }

      /* ---- stat / statement ---- */
      .stat-split {
        display: grid;
        grid-template-columns: 0.8fr 1.2fr;
        gap: 56px;
        align-items: center;
      }
      .stat-num {
        font-family: "Shippori Mincho", serif;
        font-size: 56px;
        line-height: 1.15;
        color: var(--terracotta);
      }
      .stat-num small {
        font-size: 15px;
        display: block;
        color: #cbbf9e;
        margin-top: 8px;
        font-family: "Noto Sans JP", sans-serif;
        letter-spacing: 0.05em;
      }
      .statement {
        font-family: "Shippori Mincho", serif;
        font-size: clamp(20px, 2.6vw, 30px);
        line-height: 1.9;
        text-align: center;
        max-width: 760px;
        margin: 0 auto;
      }

      /* ---- split media ---- */
      .split {
        display: grid;
        grid-template-columns: 1fr 1fr;
        min-height: 560px;
      }
      .split .media {
        height: 100%;
        min-height: 360px;
      }
      .split .media img {
        width: 100%;
        height: 100%;
        object-fit: cover;
      }
      .split .text {
        display: flex;
        flex-direction: column;
        justify-content: center;
        padding: 70px 64px;
      }
      .split .text p {
        font-size: 14.5px;
        line-height: 2.05;
        max-width: 440px;
      }
      .split.reverse {
        direction: rtl;
      }
      .split.reverse > * {
        direction: ltr;
      }

      /* ---- facility columns ---- */
      .fac-cols {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 40px;
        margin-top: 44px;
      }
      .fac-col h3 {
        font-size: 14px;
        margin-bottom: 14px;
        color: var(--terracotta);
        letter-spacing: 0.05em;
      }
      .fac-col p {
        font-size: 12.5px;
        line-height: 2.1;
        color: #d8cfb5;
      }

      /* ---- room sub nav + detail ---- */
      .room-subnav {
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
        margin: 50px 0 0;
        border-top: 1px solid var(--line-dark);
        padding-top: 36px;
      }
      .room-subnav button {
        font-size: 12px;
        padding: 9px 18px;
        border-radius: 999px;
        border: 1px solid var(--line-dark);
        background: transparent;
        cursor: pointer;
        color: var(--ink);
        font-family: "Noto Sans JP", sans-serif;
        letter-spacing: 0.03em;
      }
      .room-subnav button.active {
        background: var(--ink);
        color: var(--paper);
        border-color: var(--ink);
      }
      .room-detail {
        display: none;
        margin-top: 0;
      }
      .room-detail.active {
        display: block;
      }

      /* ---- day strip ---- */
      .day-strip {
        display: grid;
        grid-template-columns: repeat(5, 1fr);
        gap: 1px;
        background: var(--line);
        margin-top: 50px;
      }
      .day-col {
        background: var(--ink);
        padding: 28px 20px;
      }
      .day-col.highlight {
        background: #241611;
        border-top: 2px solid var(--clay);
      }
      .day-col .time {
        font-size: 10px;
        letter-spacing: 0.15em;
        color: var(--terracotta);
        margin-bottom: 14px;
      }
      .day-col.highlight .time {
        color: #e08a5e;
      }
      .day-col img {
        width: 100%;
        height: 110px;
        object-fit: cover;
        margin-bottom: 14px;
      }
      .day-col h3 {
        font-size: 13.5px;
        line-height: 1.6;
        margin-bottom: 6px;
        /* 칸은 밝은 섹션(band-paper) 안에서도 어두운 카드다.
           색을 지정하지 않으면 섹션 색을 물려받아 過ごし方 쪽에서
           어두운 글씨가 어두운 배경에 깔려 안 보인다. */
        color: var(--paper);
      }
      .day-col p {
        font-size: 11px;
        color: #c9bea0;
        line-height: 1.8;
      }

      /* ---- access ---- */
      .access-split {
        display: grid;
        grid-template-columns: 1fr 1fr;
      }
      .access-split img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        min-height: 440px;
      }
      .access-text {
        padding: 70px 64px;
        display: flex;
        flex-direction: column;
        justify-content: center;
      }
      .access-list {
        list-style: none;
        font-size: 13px;
        line-height: 2.3;
        color: #4d4130;
        margin-top: 22px;
        text-align: right;
      }
      .access-list li {
        border-top: 1px solid var(--line-dark);
        padding: 13px 0;
        display: flex;
        justify-content: space-between;
        gap: 18px;
      }
      .access-list li span:first-child {
        color: #8a7a55;
        font-size: 11px;
        letter-spacing: 0.05em;
        white-space: nowrap;
      }

      .notice {
        font-size: 12px;
        color: #8a7a55;
        border-left: 2px solid var(--terracotta);
        padding-left: 14px;
        margin-top: 20px;
        max-width: 560px;
      }
      .band-ink .notice,
      .band-ink2 .notice {
        color: #c9bea0;
      }

      footer {
        background: var(--ink);
        color: #cbbf9e;
        padding: 64px 0 30px;
      }
      .foot-logo-img {
        height: 66px;
        width: auto;
        margin-bottom: 18px;
      }
      .foot-grid {
        display: flex;
        justify-content: space-between;
        flex-wrap: wrap;
        gap: 36px;
        padding-bottom: 44px;
        border-bottom: 1px solid var(--line);
      }
      .foot-nav {
        display: flex;
        gap: 24px;
        flex-wrap: wrap;
        font-size: 12px;
      }
      .foot-bottom {
        display: flex;
        justify-content: space-between;
        padding-top: 22px;
        font-size: 11px;
        color: #8a7a55;
        flex-wrap: wrap;
        gap: 10px;
      }

      @media (max-width: 900px) {
        header {
          padding: 16px 22px;
        }
        .hamburger {
          display: flex;
        }
        nav {
          position: fixed;
          top: 0;
          right: 0;
          height: 100vh;
          width: min(78vw, 320px);
          background: rgba(21, 17, 9, 0.97);
          backdrop-filter: blur(6px);
          flex-direction: column;
          align-items: flex-start;
          justify-content: center;
          gap: 28px;
          padding: 100px 40px 40px;
          font-size: 15px;
          transform: translateX(100%);
          transition: transform 0.35s ease;
          z-index: 150;
        }
        nav.open {
          transform: translateX(0);
        }
        nav .btn-reserve {
          margin-top: 8px;
        }
        .wrap {
          padding: 0 22px;
        }
        .intro,
        .stat-split,
        .split,
        .access-split,
        .collage {
          grid-template-columns: 1fr;
        }
        .rooms-grid,
        .rooms-grid.even {
          grid-template-columns: 1fr;
        }
        .room-tile.big {
          min-height: 340px;
        }
        .pillars,
        .origin-grid,
        .fac-cols {
          grid-template-columns: 1fr;
        }
        .pillar,
        .origin {
          border-left: none;
          padding-left: 0;
          padding-bottom: 20px;
          border-bottom: 1px solid var(--line-dark);
          margin-bottom: 20px;
        }
        .day-strip {
          grid-template-columns: 1fr 1fr;
        }
        .split .text,
        .access-text {
          padding: 44px 22px;
        }
      }

      /* ---- Instagram 플로팅 버튼 ---- */
      .fab-instagram {
        position: fixed;
        right: 0;
        bottom: 0;
        width: 54px;
        height: 54px;
        border-radius: 0;
        display: flex;
        align-items: center;
        justify-content: center;
        background: var(--terracotta);
        z-index: 120;
        transition: background 0.25s ease;
      }
      .fab-instagram:hover {
        background: var(--terracotta-deep);
      }
      .fab-instagram svg {
        width: 26px;
        height: 26px;
        fill: #fff;
      }
      body.nav-open .fab-instagram {
        display: none;
      }
      @media (max-width: 900px) {
        .fab-instagram {
          right: 0;
          bottom: 0;
          width: 48px;
          height: 48px;
        }
        .fab-instagram svg {
          width: 22px;
          height: 22px;
        }
      }

      /* ---- ご予約ドロップダウン（489ban 検索ウィジェット） ---- */
      /* 위젯 스크립트가 document.write 를 쓰기 때문에 파싱 중에 반드시
         실행돼야 한다. 그래서 body 끝에 미리 심어두고, 열 때 예약 버튼의
         위치를 계산해 그 아래에 붙인다. */
      .reserve-dd {
        display: none;
        position: fixed;
        z-index: 210;
      }
      .reserve-dd.open {
        display: block;
      }
      .reserve-dd-backdrop {
        display: none;
        position: fixed;
        inset: 0;
        z-index: 205;
      }
      .reserve-dd-backdrop.open {
        display: block;
      }
      @media (max-width: 900px) {
        /* 모바일에서는 버튼이 슬라이드 메뉴 안에 있어 기준점이 흔들린다.
           화면 중앙에 고정한다. */
        .reserve-dd.open {
          top: 50% !important;
          left: 50% !important;
          right: auto !important;
          transform: translate(-50%, -50%);
        }
      }

      /* 以下 489ban 提供の公式スタイル */
      #search_489ban {
        margin: 0 auto;
        padding: 25px 10px;
        width: 290px;
        background: #fafafa;
        border: 1px solid #ccc;
        box-sizing: border-box;
        color: var(--ink);
      }
      #search_489ban dl {
        display: inline-table;
        margin: 0 0 5px;
        width: 100%;
      }
      #search_489ban dt,
      #search_489ban dd {
        margin: 0;
        padding: 0;
        display: table-cell;
        vertical-align: top;
      }
      #search_489ban dt {
        width: 80px;
      }
      #search_489ban dd span,
      #search_489ban label,
      #search_489ban input,
      #search_489ban select {
        display: inline-block;
        margin: 2px 2px 5px;
      }
      #search_489ban li {
        margin-bottom: 3px;
        list-style: none;
        display: inline-block;
      }
      #search_489ban button {
        display: block;
        margin: 10px 0 0;
        padding: 7px 0;
        width: 100%;
        box-sizing: border-box;
      }
      #search_489ban .inbox_489ban {
        clear: both;
      }
      #search_489ban .inbox_489ban:after {
        clear: both;
        content: ".";
        display: block;
        height: 0;
        font-size: 0;
        visibility: hidden;
      }
      #search_489ban .stay_489ban,
      #search_489ban .room_489ban,
      #search_489ban .person_489ban {
        width: 50%;
        float: left;
      }
      #search_489ban .stay_489ban dt,
      #search_489ban .room_489ban dt,
      #search_489ban .person_489ban dt {
        width: auto;
      }
      #search_489ban .child_489ban {
        border-bottom: 1px dotted #dedede;
      }
      #search_489ban .child_489ban:first-of-type {
        padding: 5px 0 0;
        border-top: 1px dotted #dedede;
      }
      #search_489ban .child_489ban:last-of-type {
        margin: 0 0 10px;
        padding: 0 0 5px;
      }
      #search_489ban .child_489ban dt {
        width: auto;
      }
      #search_489ban .child_489ban dd {
        width: 70px;
        vertical-align: middle;
      }
      #search_489ban .child_489ban dt span {
        display: block;
        font-size: 12px;
      }
      #search_489ban .price_489ban dt {
        width: 65px;
      }
      #search_489ban .price_489ban div {
        display: inline-block;
      }
      #search_489ban .price_489ban span {
        font-size: 12px;
      }
      #search_489ban .tag_489ban,
      #search_489ban .tag_489ban dt,
      #search_489ban .tag_489ban dd {
        width: 100%;
        display: block;
      }
      #search_489ban .tag_489ban .tag_mode_489ban {
        font-size: 13px;
      }
      #search_489ban .child_input p {
        text-align: center;
        margin: 0;
      }
