
:root { color-scheme: light; --ink: #252423; --muted: #605e5b; --line: #dedcd9; }
* { box-sizing: border-box; }
body.upstair-renewal { margin: 0; background: #fff; color: var(--ink); font: 15px/1.8 -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic ProN", Meiryo, sans-serif; }
.upstair-renewal a { color: inherit; text-underline-offset: .25em; }
.upstair-renewal a:focus-visible { outline: 2px solid #795940; outline-offset: 4px; }
.upstair-renewal img { display: block; }
.bar, .caption, .page-content, .footer-inner { width: min(1320px, calc(100% - 96px)); margin-inline: auto; }
.site-header { position: sticky; top: 0; z-index: 10; background: #fff; }
.bar { min-height: 94px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.logo { width: 154px; height: auto; }
.upstair-renewal nav, .nav-links { display: flex; align-items: center; gap: 32px; font-size: 13px; }
.nav-links { order: -1; }
.nav-toggle { display: none; }
.upstair-renewal nav a, .reserve { text-decoration: none; }
.upstair-renewal .reserve { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 44px; padding: 0 18px; border-radius: 2px; background: #4a342a; color: #fffaf5; white-space: nowrap; font-weight: 600; letter-spacing: .04em; }
.reserve:hover { background: #33251e; }
.reserve svg { width: 16px; height: 16px; flex: none; }
.hero { margin: 0; }
.hero-stage { --main: 80%; --gap: 8px; position: relative; overflow: hidden; height: clamp(300px, 39vw, 560px); background: #fff; }
.hero-frame { position: absolute; inset-block: 0; overflow: hidden; margin: 0; background: #ebe8e2; }
.hero-frame[data-slot="main"] { left: 0; width: var(--main); }
.hero-frame[data-slot="next"] { left: calc(var(--main) + var(--gap)); width: calc(100% - var(--main) - var(--gap)); }
.hero-frame[data-slot="off"] { left: 100%; width: calc(100% - var(--main) - var(--gap)); }
.hero-frame img { width: 100%; height: 100%; object-fit: cover; object-position: var(--position, center); }
.hero-frame:not([data-slot="main"]) { filter: brightness(.78); }
.hero-next { position: absolute; inset: 0 0 0 calc(var(--main) + var(--gap)); z-index: 2; padding: 0; border: 0; background: transparent; cursor: pointer; }
.hero-next:focus-visible { outline: 2px solid white; outline-offset: -5px; }
.caption { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--line); }
.upstair-renewal h1 { font-size: 14px; font-weight: 500; margin: 0; letter-spacing: .07em; }
.caption small { color: var(--muted); font-size: 10px; letter-spacing: .18em; }
.tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; margin: 48px 0 64px; }
.tiles a { display: block; text-decoration: none; padding-bottom: 8px; }
.tiles a:hover img { opacity: .86; }
.tiles img { width: 100%; aspect-ratio: 1.75; object-fit: cover; }
.tiles strong { display: block; width: fit-content; margin-top: 12px; font: 400 clamp(16px, 2vw, 24px)/1.25 Georgia, serif; letter-spacing: .04em; }
.tiles strong::after { content: ''; display: block; width: 19px; height: 1px; margin: 5px 0 3px; background: #8b6c58; transition: width 240ms ease; }
.tiles a:hover strong::after, .tiles a:focus-visible strong::after { width: 100%; }
@media (prefers-reduced-motion: reduce) { .tiles strong::after { transition: none; } }
.tiles span { font-size: 12px; color: var(--muted); }
.news { display: grid; grid-template-columns: 1fr 3fr; border-top: 1px solid var(--line); padding: 28px 0 54px; }
.news h2 { margin: 0; font: 400 24px/1.5 Georgia, serif; letter-spacing: .07em; }
.news a { display: grid; grid-template-columns: 7.5em minmax(0, 1fr); align-items: baseline; gap: 12px; padding: 10px 0; text-decoration: none; }
.news a + a { border-top: 1px solid var(--line); }
.news a:hover { color: #785541; }
.upstair-renewal time { font-variant-numeric: tabular-nums; font-size: 12px; margin-right: 14px; color: var(--muted); }
.site-footer { background: #272420; color: #faf7f2; }
.footer-inner { display: grid; grid-template-columns: 1fr 1fr auto; gap: 24px; align-items: start; padding: 42px 0 28px; font-size: 13px; }
.footer-brand img { width: 180px; height: auto; }
@media (max-width: 680px) { .footer-brand img { margin-inline: auto; } }
.footer-inner p { margin: .25rem 0; }
.footer-inner address { font-style: normal; }
.footer-links { display: grid; grid-template-columns: repeat(2, minmax(112px, 1fr)); gap: 8px; }
.footer-links a { display: grid; place-items: center; min-height: 44px; padding: 6px 12px; border: 1px solid #756b62; text-decoration: none; white-space: nowrap; }
.footer-links a:hover { background: #3b342e; border-color: #cbbbae; }
.footer-copy { grid-column: 1 / -1; border-top: 1px solid #635950; padding-top: 16px; color: #d7cfc5; }
@media (max-width: 680px) {
.bar, .caption, .page-content, .footer-inner { width: calc(100% - 32px); }
.bar { min-height: 64px; gap: 8px; }
.logo { width: clamp(93px, 31vw, 122px); }
.site-header nav { gap: 6px; }
.site-header .reserve { padding: 0 9px; gap: 5px; font-size: 12px; }
.nav-toggle { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; background: transparent; color: var(--ink); cursor: pointer; }
.nav-toggle svg { width: 22px; height: 22px; }
.nav-toggle .nav-close, .nav-toggle[aria-expanded="true"] .nav-open { display: none; }
.nav-toggle[aria-expanded="true"] .nav-close { display: block; }
.nav-links { display: none; position: absolute; inset: 100% 0 auto; padding: 6px 16px 14px; background: #fff; border-top: 1px solid var(--line); box-shadow: 0 12px 16px #25242312; max-height: calc(100dvh - 64px); overflow-y: auto; }
.nav-toggle[aria-expanded="true"] + .nav-links { display: grid; gap: 0; }
.nav-links a { padding: 12px 4px; }
.nav-links a + a { border-top: 1px solid var(--line); }
.hero-stage { --main: 82%; --gap: 4px; height: clamp(205px, 58vw, 310px); }
.footer-inner { grid-template-columns: 1fr; padding-top: 32px; text-align:center; }

.caption { padding: 14px 0; }
.upstair-renewal h1 { font-size: 11px; letter-spacing: .02em; }
.caption small { display: none; }
.tiles { display: block; margin: 22px 0 34px; }
.tiles a { display: grid; grid-template-columns: 104px 1fr; column-gap: 16px; padding: 10px 0; align-items: end; }
.tiles img { grid-row: span 2; }
.tiles strong { margin: 0; }
.tiles span { align-self: start; }
.news { display: block; padding: 18px 0 30px; }
.news h2 { margin-bottom: 8px; }
.news a { font-size: 13px; gap: 4px; }
}

:root { --title-font: Georgia,serif; }
.inner-heading,.inner-content { width:min(1120px,calc(100% - 96px)); margin-inline:auto; }
.page-title { position:relative; display:grid; align-items:center; background:#eee8e0; border-bottom:1px solid #ded5ca; }
.inner-heading { padding:39px 0 36px; text-align:center; }
.inner-heading h1 { font:500 clamp(14px,1.55vw,18px)/1.55 system-ui,sans-serif; letter-spacing:.075em; margin:8px 0 0; }
.back { color:var(--muted); font-size:12px; text-decoration-color:#a08977; }
.title-label { margin:0; color:#332b25; font:400 clamp(35px,6vw,78px)/1 var(--title-font); letter-spacing:.025em; }
.inner-intro { text-wrap:balance; margin:10px auto 0; max-width:42em; color:var(--muted); font-size:clamp(12px,1.2vw,14px); line-height:1.8; }
.inner-intro span + span::before { content:" "; }
.inner-content { padding:42px 0 72px; min-height:210px; }
.inner-content h2 { font-weight:500; font-size:clamp(20px,3vw,30px); line-height:1.4; margin:0 0 20px; }
.inner-content h3 { font-weight:600; margin:28px 0 12px; }
.inner-content img { max-width:100%; height:auto; }
.inner-content iframe { display:block; width:100%; border:0; background:#f5f2ee; }
.inner-content table { width:100%; border-collapse:collapse; }
.inner-content td,.inner-content th { padding:13px 10px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; overflow-wrap:anywhere; }
.inner-content th { font-weight:600; }
.price { max-width:880px; padding-top:20px; }
.price-sections { margin-top:6px; }
.price-section { scroll-margin-top:105px; }
.price-category { margin:18px 0 28px; }
.price-category > h2 { display:flex; align-items:center; width:100%; min-height:44px; margin:0; padding:8px 12px; background:#f3efeb; color:#45372f; font:400 16px/1.5 var(--title-font); letter-spacing:.065em; }
.price-list { list-style:none; padding:0; margin:0; }
.price-row { display:grid; grid-template-columns:minmax(0,1fr) 64px 94px; align-items:baseline; gap:4px 10px; padding:14px 4px; }
.price-row + .price-row { border-top:1px solid #eeeae6; }
.price-row h3 { margin:0; font-size:15px; line-height:1.55; }
.price-service { display:contents; }
.price-row .duration { display:inline-block; justify-self:end; padding:2px 8px; border-radius:3px; background:#eee8e0; color:#4a342a; font-size:13px; font-weight:600; line-height:1.5; white-space:nowrap; font-variant-numeric:tabular-nums; }
.price-row .amount { margin:0; justify-self:end; color:#4a342a; font-size:17px; font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap; }
.price-note { grid-column:1/-1; max-width:72ch; margin-top:2px; color:#5b524c; font-size:13px; line-height:1.65; }
.price-note p { margin:0; }
.price-note p + p { margin-top:4px; }
.price-note .price-condition { color:#66554a; font-size:12px; }
.menu-booking { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-top:42px; padding:24px clamp(20px,4vw,38px); background:#f3efeb; }
.menu-booking .menu-booking-label { margin:0 0 4px; color:#785541; font:400 12px/1.5 Georgia,serif; letter-spacing:.14em; }
.menu-booking h2 { margin:0 0 5px; font-size:19px; }
.menu-booking p { margin:0; color:var(--muted); font-size:13px; }
@media (max-width:680px) {
.menu-booking { flex-direction:column; align-items:center; text-align:center; gap:14px; margin-top:28px; }
.menu-booking p { text-wrap:balance; }
}
.card-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px; }
.editorial-card { display:block; text-decoration:none; border-bottom:1px solid var(--line); padding-bottom:20px; }
.editorial-card img { width:100%; aspect-ratio:1.65; object-fit:cover; }
.editorial-card h2 { margin:10px 0 4px; }
.editorial-card p { margin:6px 0 0; color:var(--muted); }
.editorial-card small { display:block; margin-top:14px; color:#785541; }
.editorial-card:hover h2,.listing-row:hover { color:#785541; }
.profile,.location { display:grid; grid-template-columns:1fr 1fr; gap:36px; align-items:start; }
.section-links { display:flex; gap:26px; border-bottom:1px solid var(--line); }
.section-links a { position:relative; padding:12px 2px; text-decoration:none; font-weight:600; color:#6a615b; }
.section-links a:hover,.section-links a[aria-selected="true"] { color:#30241d; }
.section-links a[aria-selected="true"]::after { content:""; position:absolute; inset:auto 0 -1px; height:2px; background:#755443; }
.staff-page { padding-top:40px; }
.staff-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(18px,4vw,44px); max-width:880px; margin-inline:auto; }
.staff-profile { scroll-margin-top:105px; }
.staff-profile img { width:100%; aspect-ratio:4/5; object-fit:cover; object-position:center 35%; background:#f5f2ee; }
.staff-copy { padding:18px 0 6px; border-bottom:1px solid var(--line); min-height:110px; }
.staff-copy h2 { font:400 clamp(24px,4vw,39px)/1.15 Georgia,serif; letter-spacing:.045em; margin:0 0 8px; }
.staff-copy p { margin:0; color:var(--muted); font-size:14px; }
.staff-booking { margin:32px auto 0; max-width:880px; }
.profile img { width:100%; max-height:560px; object-fit:cover; }
.location iframe { grid-column:1/-1; height:390px; }
.location table th,.location table td:first-child { width:7em; }
.listing { border-top:1px solid var(--line); }
.listing-row { display:grid; grid-template-columns:7em minmax(0,1fr); gap:14px; padding:16px 0; align-items:baseline; border-bottom:1px solid var(--line); text-decoration:none; }
.listing-row small { color:var(--muted); }
.reading { max-width:770px; }
.reading p { margin:0 0 1.3em; }
.reading img { margin-block:12px; }
.reading .back { display:inline-block; margin-top:24px; }
.booking-page { max-width:960px; }
body.upstair-renewal:has(.booking-page) { min-height:100vh; display:flex; flex-direction:column; }
body.upstair-renewal:has(.booking-page) main { flex:1; }
.booking-choices { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.booking-choice { display:flex; flex-direction:column; align-items:flex-start; padding:clamp(20px,3vw,32px); background:#f5f1ed; border:1px solid #eee7df; }
.booking-choice .booking-label { margin:0 0 8px; color:#735542; font:400 13px/1.4 Georgia,serif; letter-spacing:.10em; }
.booking-choice h2 { margin:0 0 8px; font-size:20px; }
.booking-choice p { margin:0 0 18px; color:var(--muted); font-size:14px; }
.booking-choice .reserve { margin-top:auto; }
.booking-choice .booking-secondary { background:#fff; color:#4a342a; border:1px solid #baa99c; }
.booking-choice .booking-secondary:hover { background:#efe7df; }
.booking-help { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-top:18px; }
.booking-help a { display:grid; grid-template-columns:26px 1fr; align-items:center; gap:12px; padding:15px 18px; border:1px solid var(--line); text-decoration:none; }
.booking-help a:hover { background:#faf7f4; }
.booking-help svg { width:23px; height:23px; color:#785541; }
.booking-help small { display:block; color:var(--muted); font-size:12px; }
.booking-help strong { font-size:15px; }
.booking-choice .booking-direct { margin-top:10px; font-size:12px; color:var(--muted); }
.booking-choice .booking-card-spacer { margin-top:10px; }
@media(max-width:680px) {
.booking-choices,.booking-help { grid-template-columns:1fr; gap:12px; }
.booking-help { margin-top:18px; }
}
.preview-note { color:var(--muted); background:#f6f2ee; padding:15px 18px; margin:0 0 22px; font-size:13px; }
.demo-form { display:grid; gap:14px; max-width:520px; }
.demo-form label { display:grid; gap:4px; }
.demo-form input,.demo-form textarea { padding:10px; width:100%; border:1px solid #b7aea6; background:#faf8f6; font:inherit; color:var(--ink); }
.demo-form button { justify-self:start; border:0; opacity:.7; }
.utility { text-align:center; padding:12px 16px; font-size:12px; color:var(--muted); }
@media(max-width:680px) {
.inner-heading,.inner-content { width:calc(100% - 32px); }
.inner-heading { padding:25px 0 22px; }
.inner-intro span { display:block; }
.inner-intro span + span::before { content:none; }

.inner-content { padding:27px 0 46px; }
.card-grid,.profile,.location { grid-template-columns:1fr; gap:20px; }
.listing-row { grid-template-columns:6em minmax(0,1fr); gap:8px; font-size:13px; }
.inner-content td,.inner-content th { padding:9px 4px; }

.price-row { grid-template-columns:minmax(0,1fr) auto; padding:10px 2px; column-gap:10px; }
.price-row h3 { font-size:14px; }
.price-service { display:flex; flex-wrap:wrap; align-items:baseline; gap:3px 7px; }
.price-row .duration { padding:1px 5px; font-size:12px; }
.price-row .amount { font-size:16px; }
.staff-grid { grid-template-columns:1fr; gap:20px; }
.staff-profile { display:grid; grid-template-columns:minmax(100px,36%) minmax(0,1fr); align-items:center; gap:14px; padding-bottom:18px; border-bottom:1px solid var(--line); }
.staff-profile:last-child { padding-bottom:0; border-bottom:0; }
.staff-copy { min-height:0; padding:0; border:0; }
.staff-copy h2 { font-size:24px; }
.staff-copy p { font-size:13px; }
.location iframe { height:300px; }
}
.renewal-news-list { display:block; padding:0; }
.renewal-news-list > a + a { border-top:1px solid var(--line); }
body.upstair-renewal.admin-bar .site-header { top:32px; }
@media(max-width:782px) { body.upstair-renewal.admin-bar .site-header { top:46px; } }
@media(max-width:600px) { body.upstair-renewal.admin-bar .site-header { top:0; } }
.renewal-contact :is(input:not([type=submit]),textarea) { width:100%; max-width:100%; border:1px solid var(--line); padding:10px 12px; font:inherit; }
.renewal-contact input[type=submit] { min-height:44px; padding:0 18px; border:0; border-radius:2px; background:#4a342a; color:#fffaf5; font:inherit; cursor:pointer; }
.renewal-account { max-width:640px; }
