:root{
	--ink: #1c1a16;
	--ink-2: #2a2620;
	--cream: #f7f3ea;
	--cream-2: #efe8d8;
	--white: #ffffff;
	--gold: #a8823c;
	--gold-light: #c7a563;
	--text: #2a2620;
	--text-muted: #6b6357;
	--text-faint: #9a9280;
	--border: #e2dbc9;
	--border-invert: rgba(255,255,255,.16);
	--font-mincho: "Shippori Mincho","Noto Serif JP",serif;
	--font-en: "Cormorant Garamond","Noto Serif JP",serif;
	--font-sans: "Noto Sans JP","Hiragino Kaku Gothic ProN",sans-serif;
}

.hotel-body{
	margin:0;
	font-family:var(--font-sans);
	font-weight:300;
	color:var(--text);
	background:var(--white);
	line-height:1.9;
	-webkit-font-smoothing:antialiased;
	letter-spacing:.02em;
}
.hotel-body *{box-sizing:border-box;}
.hotel-body img{max-width:100%;display:block;}
.hotel-wrap{max-width:1180px;margin:0 auto;padding:0 28px;}
.hotel-main{display:block;}
.hotel-body a{text-decoration:none;color:inherit;}
.hotel-en{font-family:var(--font-en);font-style:italic;}

/* Buttons */
.hotel-btn{
	display:inline-block;padding:14px 32px;font-weight:500;
	font-size:13px;transition:all .25s ease;border:1px solid var(--ink);color:var(--ink);
	letter-spacing:.12em;text-align:center;background:transparent;
	font-family:var(--font-sans);text-transform:uppercase;
}
.hotel-btn--gold{background:var(--gold);color:#fff;border-color:var(--gold);}
.hotel-btn--gold:hover{background:var(--ink);border-color:var(--ink);}
.hotel-btn--outline{border-color:var(--ink);}
.hotel-btn--outline:hover{background:var(--ink);color:#fff;}
.hotel-btn--outline-invert{border-color:rgba(255,255,255,.7);color:#fff;}
.hotel-btn--outline-invert:hover{background:#fff;color:var(--ink);}
.hotel-btn--lg{padding:17px 42px;font-size:13.5px;}
.hotel-btn--block{display:block;width:100%;text-align:center;margin-bottom:12px;}

/* Header */
.hotel-header{
	background:rgba(28,26,22,.92);position:fixed;top:0;left:0;right:0;z-index:100;
	backdrop-filter:blur(6px);
}
.hotel-header__inner{display:flex;align-items:center;justify-content:space-between;height:84px;}
.hotel-logo{display:flex;align-items:center;gap:12px;color:#fff;}
.hotel-logo__mark{
	width:38px;height:38px;border:1px solid var(--gold-light);border-radius:50%;color:var(--gold-light);
	display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;font-family:var(--font-mincho);
}
.hotel-logo__text{font-family:var(--font-mincho);font-weight:600;font-size:17px;letter-spacing:.08em;}
.hotel-logo__text em{display:block;font-style:normal;font-family:var(--font-en);font-size:10px;letter-spacing:.3em;color:var(--gold-light);font-weight:500;margin-top:2px;}
.hotel-nav{display:flex;gap:38px;}
.hotel-nav a{color:#e8e2d3;font-weight:400;font-size:13px;letter-spacing:.08em;transition:color .2s;}
.hotel-nav a:hover{color:var(--gold-light);}
.hotel-header__cta{
	border:1px solid var(--gold-light);color:var(--gold-light);padding:11px 24px;font-size:12px;
	letter-spacing:.12em;text-transform:uppercase;transition:all .2s;
}
.hotel-header__cta:hover{background:var(--gold-light);color:var(--ink);}

/* Hero */
.hotel-hero{position:relative;overflow:hidden;color:#fff;height:100vh;min-height:640px;display:flex;align-items:center;isolation:isolate;}
.hotel-hero__media{position:absolute;inset:0;z-index:0;}
.hotel-hero__image,.hotel-hero__video{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;}
.hotel-hero__overlay{
	position:absolute;inset:0;
	background:linear-gradient(180deg, rgba(20,18,14,.55) 0%, rgba(20,18,14,.35) 45%, rgba(20,18,14,.75) 100%);
}
.hotel-hero__inner{position:relative;z-index:1;text-align:center;width:100%;}
.hotel-hero__eyebrow{color:var(--gold-light);font-weight:500;letter-spacing:.32em;margin:0 0 26px;font-size:12px;font-family:var(--font-en);text-transform:uppercase;}
.hotel-hero__title{font-size:56px;line-height:1.55;margin:0 0 26px;font-weight:700;color:#fff;font-family:var(--font-mincho);letter-spacing:.03em;text-shadow:0 2px 24px rgba(0,0,0,.4);}
.hotel-hero__lead{color:#e8e2d3;font-size:18px;max-width:620px;margin:0 auto 44px;font-weight:400;}
.hotel-hero__scroll{position:absolute;bottom:34px;left:50%;transform:translateX(-50%);font-size:10px;letter-spacing:.3em;color:rgba(255,255,255,.75);font-family:var(--font-en);}

/* Eyebrow / section titles */
.hotel-eyebrow{color:var(--gold);font-weight:500;letter-spacing:.28em;font-size:12px;margin:0 0 14px;font-family:var(--font-en);text-transform:uppercase;}
.hotel-eyebrow--invert{color:var(--gold-light);}
.hotel-section{padding:110px 0;}
.hotel-section--muted{background:var(--cream);}
.hotel-section--dark{background:var(--ink);color:#e8e2d3;}
.hotel-section__title{font-size:34px;font-weight:700;margin:0 0 28px;color:var(--ink);font-family:var(--font-mincho);line-height:1.6;letter-spacing:.02em;}
.hotel-section__title--invert{color:#fff;}
.hotel-section__head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:50px;gap:20px;flex-wrap:wrap;}
.hotel-section__head .hotel-section__title{margin-bottom:0;}
.hotel-lead{color:var(--text-muted);font-size:15.5px;max-width:600px;}
.hotel-lead--invert{color:#c9c2b0;max-width:640px;margin:0 auto;text-align:center;}
.hotel-link{color:var(--ink);font-weight:500;font-size:13px;letter-spacing:.08em;border-bottom:1px solid var(--gold);padding-bottom:3px;}
.hotel-link--invert{color:#fff;border-color:var(--gold-light);}

/* Intro */
.hotel-intro__grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center;}
.hotel-intro__media img{border-radius:2px;aspect-ratio:4/5;object-fit:cover;}
.hotel-check-list{list-style:none;margin:26px 0 0;padding:0;}
.hotel-check-list li{padding:13px 0 13px 26px;border-top:1px solid var(--border);position:relative;font-size:14.5px;color:var(--text-muted);}
.hotel-check-list li::before{content:"—";position:absolute;left:0;color:var(--gold);}

/* Room grid & card */
.room-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;}
.room-grid--archive{grid-template-columns:repeat(3,1fr);gap:30px;margin-top:8px;}
.room-card{display:block;background:var(--ink-2);color:#fff;overflow:hidden;position:relative;}
.room-grid--archive .room-card{background:#fff;color:var(--text);border:1px solid var(--border);}
.room-card__media{height:260px;background:linear-gradient(135deg,#3a352b,#1c1a16);background-size:cover;background-position:center;position:relative;transition:transform .5s ease;overflow:hidden;}
.room-card:hover .room-card__media{transform:scale(1.04);}
.room-card__badge{
	position:absolute;top:14px;left:14px;background:rgba(20,18,14,.75);backdrop-filter:blur(4px);color:#fff;font-size:11px;
	font-weight:500;padding:6px 14px;letter-spacing:.08em;
}
.room-card__body{padding:24px 22px 26px;}
.room-grid--archive .room-card__body{padding:22px 4px 4px;}
.room-card__title{font-size:17px;font-weight:600;margin:0 0 10px;line-height:1.6;font-family:var(--font-mincho);}
.room-card__meta{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:#bab29e;margin-bottom:12px;letter-spacing:.03em;}
.room-grid--archive .room-card__meta{color:var(--text-muted);}
.room-card__tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px;}
.room-card__tag{background:rgba(255,255,255,.08);color:#e8e2d3;font-size:10.5px;font-weight:500;padding:5px 12px;letter-spacing:.03em;}
.room-grid--archive .room-card__tag{background:var(--cream);color:var(--ink);}
.room-card__foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.room-card__price{font-size:19px;font-weight:600;font-family:var(--font-en);color:var(--gold-light);}
.room-grid--archive .room-card__price{color:var(--gold);}
.room-card__price small{font-size:11px;color:#bab29e;font-family:var(--font-sans);margin-left:4px;}
.room-card__cta{padding:9px 18px;font-size:11px;}

/* Feature (onsen / dining) split sections */
.hotel-feature{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center;}
.hotel-feature--reverse{direction:rtl;}
.hotel-feature--reverse > *{direction:ltr;}
.hotel-feature__media img{aspect-ratio:4/3;object-fit:cover;border-radius:2px;}

/* Gallery strip */
.hotel-gallery-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;margin-top:50px;}
.hotel-gallery-strip img{aspect-ratio:3/4;object-fit:cover;transition:transform .4s ease;}
.hotel-gallery-strip img:hover{transform:scale(1.03);}

/* About / info table */
.hotel-about{display:grid;grid-template-columns:1.1fr 1fr;gap:60px;align-items:start;}
.hotel-table{width:100%;border-collapse:collapse;font-size:14px;}
.hotel-table th{text-align:left;padding:16px 10px;color:var(--text-muted);width:120px;border-top:1px solid var(--border);font-weight:500;vertical-align:top;}
.hotel-table td{padding:16px 10px;border-top:1px solid var(--border);}
.hotel-about__map{border-radius:2px;overflow:hidden;filter:grayscale(.2);}

/* Reservation form */
.hotel-reservation-head{text-align:center;margin-bottom:50px;}
.hotel-reservation-box{max-width:820px;margin:0 auto;}
.hotel-reservation-notice{padding:18px 22px;margin-bottom:26px;font-size:14px;border:1px solid;}
.hotel-reservation-notice--ok{background:rgba(168,130,60,.12);border-color:var(--gold-light);color:#f2e6c9;}
.hotel-reservation-notice--ng{background:rgba(200,80,80,.12);border-color:#c85050;color:#f2c9c9;}
.hotel-reservation-form{background:rgba(255,255,255,.04);border:1px solid var(--border-invert);padding:40px;}
.hotel-reservation-form__row{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:20px;}
.hotel-reservation-form__field{flex:1;min-width:160px;}
.hotel-reservation-form__field--wide{flex:1 1 100%;}
.hotel-reservation-form__field--sm{flex:0 0 120px;}
.hotel-reservation-form__field label{display:block;font-size:12px;color:#c9c2b0;font-weight:500;margin-bottom:9px;letter-spacing:.05em;}
.hotel-reservation-form__field .req{color:var(--gold-light);font-size:10px;margin-left:6px;font-weight:400;}
.hotel-reservation-form input,
.hotel-reservation-form select,
.hotel-reservation-form textarea{
	width:100%;padding:13px 14px;border:1px solid var(--border-invert);
	font-size:14px;background:rgba(255,255,255,.03);color:#fff;font-family:var(--font-sans);
	transition:border-color .15s ease;
}
.hotel-reservation-form input::placeholder,
.hotel-reservation-form textarea::placeholder{color:#7d7666;}
.hotel-reservation-form input:focus,
.hotel-reservation-form select:focus,
.hotel-reservation-form textarea:focus{border-color:var(--gold-light);outline:none;}
.hotel-reservation-form select option{color:#000;}
.hotel-reservation-form__note{font-size:12px;color:#a39c89;margin:20px 0 24px;line-height:1.8;}

/* Front page reservation section: on dark bg, .hotel-reservation-form already styled for dark. On light page (single-room bottom is also dark section) so fine */

/* Footer */
.hotel-footer{background:#100f0c;color:#a39c89;padding:80px 0 0;}
.hotel-footer__inner{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px;padding-bottom:54px;}
.hotel-logo--footer{color:#fff;margin-bottom:16px;}
.hotel-footer__desc{font-size:13px;color:#8a8371;line-height:1.9;}
.hotel-footer h4{color:#e8e2d3;font-size:13px;margin:0 0 16px;letter-spacing:.08em;font-weight:500;}
.hotel-footer p{font-size:13px;color:#8a8371;line-height:1.9;}
.hotel-footer__bottom{border-top:1px solid rgba(255,255,255,.08);padding:24px 24px;text-align:center;font-size:11.5px;color:#6b6555;}
.hotel-footer__credit{margin-top:6px;color:#565144;}

/* Archive hero */
.hotel-archive-hero{background:var(--cream);padding:150px 0 46px;border-bottom:1px solid var(--border);}
.hotel-archive-hero__title{font-size:32px;font-weight:700;color:var(--ink);margin:0 0 10px;font-family:var(--font-mincho);}
.hotel-archive-hero__lead{color:var(--text-muted);margin:0 0 30px;}
.hotel-result-count{color:var(--text-muted);font-size:13px;margin-bottom:26px;letter-spacing:.03em;}
.hotel-no-results{padding:80px 0;text-align:center;color:var(--text-muted);}
.hotel-pagination{margin-top:54px;text-align:center;}
.hotel-pagination .page-numbers{display:inline-block;padding:10px 16px;margin:0 3px;border:1px solid var(--border);color:var(--ink);font-weight:500;}
.hotel-pagination .page-numbers.current{background:var(--ink);color:#fff;border-color:var(--ink);}

/* Search form */
.hotel-search{
	background:#fff;padding:32px;border:1px solid var(--border);
	text-align:left;max-width:960px;
}
.hotel-search--hero{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2);backdrop-filter:blur(6px);margin-top:10px;}
.hotel-search--hero label{color:#e8e2d3 !important;}
.hotel-search--hero select{background:rgba(255,255,255,.06) !important;color:#fff !important;border-color:rgba(255,255,255,.25) !important;}
.hotel-search--hero .hotel-check{color:#e8e2d3 !important;}
.hotel-search--hero .hotel-checks{background:rgba(255,255,255,.04) !important;border-color:rgba(255,255,255,.15) !important;}
.hotel-search__row{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-end;margin-bottom:18px;}
.hotel-search__row:last-child{margin-bottom:0;}
.hotel-search__field{flex:1;min-width:160px;}
.hotel-search__field--wide{flex:2;min-width:260px;}
.hotel-search__field label{display:block;font-size:11.5px;color:var(--text-muted);font-weight:500;margin-bottom:9px;letter-spacing:.06em;}
.hotel-search select{
	width:100%;padding:13px 14px;border:1px solid var(--border);
	font-size:13.5px;background:var(--cream);color:var(--text);font-family:var(--font-sans);
}
.hotel-search__submit{flex:0 0 auto;white-space:nowrap;}
.hotel-checks{display:flex;flex-wrap:wrap;gap:10px 22px;padding:16px 18px;background:var(--cream);border:1px solid var(--border);}
.hotel-check{font-size:12.5px;display:flex;align-items:center;gap:8px;color:var(--text);cursor:pointer;}
.hotel-check input{accent-color:var(--gold);width:15px;height:15px;flex:0 0 auto;}

/* Breadcrumb */
.hotel-breadcrumb{font-size:.75rem;color:var(--text-faint);padding:150px 0 16px;}
.hotel-breadcrumb a{color:var(--text-faint);}
.hotel-breadcrumb a:hover{color:var(--gold);}
.hotel-breadcrumb__sep{margin:0 6px;}

/* Room detail heading + pill */
.room-detail{padding-bottom:0;}
.room-detail__heading{margin-bottom:26px;}
.hotel-pill{display:inline-block;background:var(--cream);color:var(--ink);font-size:.72rem;font-weight:500;padding:6px 16px;letter-spacing:.06em;margin-bottom:14px;}
.room-detail__title{font-size:2rem;font-weight:700;color:var(--ink);margin:0;font-family:var(--font-mincho);}

/* Room gallery viewer */
.room-gallery{margin-bottom:44px;}
.room-gallery__main{position:relative;overflow:hidden;background:var(--cream);aspect-ratio:16/8;}
.room-gallery__main img{width:100%;height:100%;object-fit:cover;}
.room-gallery__caption{
	position:absolute;left:18px;bottom:18px;background:rgba(20,18,14,.65);color:#fff;
	font-size:12px;padding:8px 16px;backdrop-filter:blur(4px);letter-spacing:.03em;
}
.room-gallery__thumbs{display:flex;gap:10px;margin-top:12px;overflow-x:auto;padding-bottom:4px;}
.room-gallery__thumb{flex:0 0 auto;width:104px;height:72px;overflow:hidden;border:none;padding:0;cursor:pointer;background:none;opacity:.6;transition:opacity .15s;}
.room-gallery__thumb img{width:100%;height:100%;object-fit:cover;}
.room-gallery__thumb:hover{opacity:.85;}
.room-gallery__thumb.is-active{opacity:1;box-shadow:0 0 0 2px var(--gold);}

/* Price highlight */
.room-price-highlight{margin:4px 0 30px;padding-bottom:26px;border-bottom:1px solid var(--border);}
.room-price-highlight__num{font-size:2.1rem;font-weight:700;color:var(--ink);font-family:var(--font-en);}
.room-price-highlight__sub{display:block;font-size:.82rem;color:var(--text-muted);margin-top:6px;}

/* Spec grid */
.room-spec-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-bottom:40px;background:var(--border);}
.room-spec-card{background:var(--cream);padding:20px 16px;display:flex;flex-direction:column;gap:6px;}
.room-spec-card__label{font-size:11px;color:var(--text-muted);font-weight:500;letter-spacing:.06em;}
.room-spec-card__value{font-size:14px;color:var(--ink);font-weight:600;font-family:var(--font-mincho);}

/* Room detail */
.room-detail__layout{display:grid;grid-template-columns:2fr 1fr;gap:60px;margin-top:8px;align-items:start;padding-bottom:100px;}
.room-detail__highlights{background:var(--cream);padding:26px 30px;margin-bottom:34px;}
.room-detail__highlights h2{font-size:16px;margin:0 0 12px;font-family:var(--font-mincho);}
.room-detail__highlights ul{margin:0;padding-left:20px;color:var(--text-muted);font-size:14px;}
.room-detail__content{margin-bottom:34px;color:var(--text);}
.room-detail h2{font-size:19px;font-weight:700;color:var(--ink);margin:44px 0 20px;font-family:var(--font-mincho);}
.room-detail__tags{margin-bottom:12px;}
.room-detail__map{overflow:hidden;filter:grayscale(.2);}
.room-detail__sidebar{position:sticky;top:120px;}
.room-detail__inquiry-box{background:var(--cream);border:1px solid var(--border);padding:32px;text-align:center;}
.room-detail__inquiry-box h3{font-size:16px;margin:0 0 16px;color:var(--ink);font-family:var(--font-mincho);}
.room-detail__inquiry-price{font-size:22px;font-weight:700;color:var(--gold);margin:0 0 22px;font-family:var(--font-en);}
.room-detail__inquiry-note{font-size:11.5px;color:var(--text-muted);margin:16px 0 0;line-height:1.8;}

.hotel-generic-page{padding-top:170px;}

@media (max-width:1000px){
	.hotel-nav{display:none;}
	.hotel-hero__title{font-size:36px;}
	.room-grid{grid-template-columns:repeat(2,1fr);}
	.room-grid--archive{grid-template-columns:repeat(2,1fr);}
	.hotel-intro__grid,.hotel-feature,.hotel-about{grid-template-columns:1fr;gap:40px;}
	.hotel-feature--reverse{direction:ltr;}
	.hotel-footer__inner{grid-template-columns:1fr 1fr;}
	.room-detail__layout{grid-template-columns:1fr;padding-bottom:70px;}
	.room-detail__sidebar{position:static;}
	.room-spec-grid{grid-template-columns:repeat(2,1fr);}
	.hotel-gallery-strip{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:600px){
	.room-grid,.room-grid--archive{grid-template-columns:1fr;}
	.hotel-search__row{flex-direction:column;align-items:stretch;}
	.hotel-hero__title{font-size:28px;}
	.hotel-section{padding:70px 0;}
	.room-spec-grid{grid-template-columns:repeat(2,1fr);}
	.hotel-reservation-form{padding:24px;}
}
