:root {
    --ink: #0a0a0b;
    --ink-2: #141416;
    --paper: #f2f0e9;
    --paper-2: #e7e3d9;
    --acid: #d9ff3f;
    --orange: #ff4b1f;
    --line: rgba(10,10,11,.16);
    --light-line: rgba(255,255,255,.18);
    --sans: "Arial Narrow", "Helvetica Neue", "Noto Sans JP", Arial, sans-serif;
    --jp: "Noto Sans JP", "Yu Gothic", "Hiragino Kaku Gothic ProN", sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--jp); line-height: 1.75; line-break: strict; overflow-x: hidden; }
h1, h2, h3 { text-wrap: balance; }
p, dd, address { text-wrap: pretty; }
.copy-sp, .br-sp { display: none; }
.nowrap { white-space: nowrap; }
body.menu-open { overflow: hidden; }
body.menu-open .mobile-cta { opacity: 0; pointer-events: none; transform: translateY(100%); }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
button { font: inherit; }
.skip-link { position: fixed; left: 16px; top: -80px; z-index: 999; padding: 10px 16px; background: var(--acid); color: var(--ink); font-weight: 800; }
.skip-link:focus { top: 16px; }
.pointer-glow { position: fixed; z-index: 2; width: 38rem; height: 38rem; border-radius: 50%; pointer-events: none; opacity: .22; background: radial-gradient(circle, rgba(217,255,63,.22), transparent 67%); transform: translate(-50%, -50%); mix-blend-mode: screen; transition: opacity .2s; }
.site-header { position: fixed; inset: 0 0 auto; z-index: 100; min-height: 78px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding: 12px clamp(18px, 3vw, 46px); color: #fff; border-bottom: 1px solid transparent; transition: background .25s, border-color .25s, min-height .25s; }
.site-header.is-scrolled { min-height: 66px; background: rgba(10,10,11,.92); border-color: var(--light-line); backdrop-filter: blur(16px); }
.brand { justify-self: start; position: relative; z-index: 4; display: flex; align-items: center; min-width: 0; }
.brand img { width: auto; height: clamp(48px, 4.6vw, 62px); max-width: min(250px, 24vw); object-fit: contain; object-position: left center; }
.desktop-nav { display: flex; gap: clamp(20px, 3vw, 46px); font: 800 11px/1 var(--sans); letter-spacing: .18em; }
.desktop-nav a { position: relative; padding: 12px 0; }
.desktop-nav a::after { content: ""; position: absolute; inset: auto 0 4px; height: 2px; background: var(--acid); transform: scaleX(0); transform-origin: right; transition: transform .25s; }
.desktop-nav a:hover::after { transform: scaleX(1); transform-origin: left; }
.header-goo { justify-self: end; display: flex; align-items: center; gap: 15px; padding: 11px 15px; border: 1px solid rgba(255,255,255,.35); border-radius: 999px; font: 800 11px/1 var(--sans); letter-spacing: .1em; transition: color .2s, background .2s, border-color .2s; }
.header-goo b { display: grid; place-items: center; width: 25px; height: 25px; border-radius: 50%; background: var(--acid); color: var(--ink); }
.header-goo:hover { background: #fff; color: var(--ink); border-color: #fff; }
.menu-button, .mobile-menu { display: none; }
.hero { position: relative; min-height: 100svh; color: #fff; background: var(--ink); overflow: hidden; isolation: isolate; }
.hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(10,10,11,.96) 0 34%, rgba(10,10,11,.4) 58%, rgba(10,10,11,.2)), linear-gradient(0deg, rgba(10,10,11,.74), transparent 46%); }
.hero-grid { position: absolute; inset: 0; z-index: 0; background-image: linear-gradient(rgba(255,255,255,.07) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.07) 1px, transparent 1px); background-size: 7.5vw 7.5vw; mask-image: linear-gradient(to bottom, rgba(0,0,0,.75), transparent 90%); }
.hero-photo { position: absolute; overflow: hidden; z-index: -2; }
.hero-photo img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.76) contrast(1.14); }
.hero-photo-main { inset: 0 0 0 29%; clip-path: polygon(17% 0, 100% 0, 100% 100%, 0 100%); }
.hero-photo-sub { width: min(28vw, 410px); height: min(32vw, 450px); right: 7vw; bottom: 8vh; z-index: 1; border: 1px solid rgba(255,255,255,.45); box-shadow: 0 35px 90px rgba(0,0,0,.55); transform: rotate(2deg); }
.hero-photo-sub::after { content: "WORKSHOP / 02"; position: absolute; left: 0; bottom: 0; padding: 9px 12px; background: var(--acid); color: var(--ink); font: 900 10px/1 var(--sans); letter-spacing: .14em; }
.hero-copy { position: relative; z-index: 4; width: min(92%, 1500px); margin: 0 auto; padding: clamp(150px, 18vh, 210px) 0 110px; }
.kicker, .section-label { margin: 0 0 25px; font: 900 11px/1 var(--sans); letter-spacing: .22em; text-transform: uppercase; }
.kicker { color: var(--acid); }
.hero-title { margin: 0; max-width: 1050px; font: 900 clamp(58px, 10.6vw, 170px)/.77 var(--sans); letter-spacing: -.075em; text-transform: uppercase; }
.hero-title span { display: block; }
.hero-title .outline { color: transparent; -webkit-text-stroke: clamp(1px, .12vw, 2px) #fff; }
.hero-ja { margin: 34px 0 0; font-weight: 700; font-size: clamp(17px, 1.7vw, 25px); line-height: 1.6; letter-spacing: .03em; }
.hero-actions, .review-buttons, .access-actions, .closing-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 34px; }
.btn { min-height: 54px; display: inline-flex; align-items: center; justify-content: center; gap: 18px; padding: 13px 22px; border: 1px solid currentColor; font: 900 12px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; transition: transform .2s, background .2s, color .2s, border-color .2s; }
.btn:hover { transform: translateY(-3px); }
.btn-acid { border-color: var(--acid); background: var(--acid); color: var(--ink); }
.btn-acid:hover { background: #fff; border-color: #fff; }
.btn-ghost { color: #fff; border-color: rgba(255,255,255,.55); background: rgba(10,10,11,.14); backdrop-filter: blur(8px); }
.btn-ghost:hover { background: #fff; color: var(--ink); border-color: #fff; }
.review-orbit { position: absolute; z-index: 6; top: 23%; right: clamp(24px, 5vw, 82px); width: clamp(180px, 17vw, 250px); aspect-ratio: 1; display: grid; place-content: center; text-align: center; color: #fff; border: 1px solid rgba(255,255,255,.55); border-radius: 50%; background: rgba(10,10,11,.42); backdrop-filter: blur(14px); transition: background .25s, transform .25s; }
.review-orbit::before, .review-orbit::after { content: ""; position: absolute; border-radius: inherit; border: 1px solid rgba(217,255,63,.7); }
.review-orbit::before { inset: -9px; border-left-color: transparent; animation: orbit 12s linear infinite; }
.review-orbit::after { inset: 18px; border-bottom-color: transparent; animation: orbitReverse 8s linear infinite; }
.review-orbit:hover { background: rgba(10,10,11,.76); transform: scale(1.035); }
.orbit-label, .orbit-meta { position: relative; z-index: 1; font: 800 9px/1.2 var(--sans); letter-spacing: .13em; }
.orbit-score { position: relative; z-index: 1; display: flex; justify-content: center; align-items: baseline; gap: 5px; margin: 10px 0; }
.orbit-score b { font: 900 clamp(38px, 4.2vw, 62px)/1 var(--sans); letter-spacing: -.05em; }
.orbit-score small { font: 800 10px/1 var(--sans); }
.hero-location { position: absolute; z-index: 4; left: clamp(18px, 4vw, 64px); bottom: 28px; display: flex; gap: 28px; font: 800 10px/1 var(--sans); letter-spacing: .13em; }
.hero-location span { color: rgba(255,255,255,.52); }
.marquee { overflow: hidden; padding: 14px 0; color: var(--ink); background: var(--acid); border-block: 1px solid var(--ink); }
.marquee-track { width: max-content; display: flex; align-items: center; gap: 30px; animation: marquee 25s linear infinite; font: 900 clamp(24px, 3vw, 48px)/1 var(--sans); letter-spacing: -.03em; }
.marquee-track i { font-style: normal; font-size: .5em; }
.section-index { font: 900 10px/1 var(--sans); letter-spacing: .18em; color: rgba(10,10,11,.5); }
.section-index.light { color: rgba(255,255,255,.5); }
.philosophy { display: grid; grid-template-columns: minmax(130px, .25fr) minmax(340px, 1.1fr) minmax(300px, .72fr); grid-template-rows: auto 1fr; min-height: 920px; border-bottom: 1px solid var(--line); }
.philosophy > * { padding: clamp(50px, 7vw, 110px) clamp(22px, 4vw, 70px); border-right: 1px solid var(--line); }
.philosophy > .section-index { grid-row: 1 / -1; writing-mode: vertical-rl; padding-inline: 35px; }
.philosophy-copy { grid-column: 2; border-bottom: 1px solid var(--line); }
.philosophy-copy h2, .service-sticky h2, .works-head h2, .access-panel h2, .closing h2 { margin: 0; font: 900 clamp(48px, 7vw, 104px)/.98 var(--sans); letter-spacing: -.065em; }
.philosophy-copy h2 em { color: var(--orange); font-family: var(--jp); font-style: normal; font-size: .48em; letter-spacing: -.02em; }
.philosophy-body { grid-column: 2; align-self: stretch; }
.philosophy-body > p { max-width: 710px; margin: 0 0 22px; font-size: clamp(15px, 1.25vw, 18px); }
.facts { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 55px; border-top: 1px solid var(--line); }
.facts div { padding: 25px 18px 0 0; }
.facts b { display: block; font: 900 clamp(35px, 4vw, 62px)/1 var(--sans); letter-spacing: -.04em; }
.facts span { color: rgba(10,10,11,.58); font-size: 12px; }
.philosophy-photo { grid-column: 3; grid-row: 1 / 3; margin: 0; padding: 0; position: relative; overflow: hidden; }
.philosophy-photo img { width: 100%; height: 100%; min-height: 920px; object-fit: cover; filter: grayscale(.18) contrast(1.08); transition: transform .8s cubic-bezier(.2,.7,.2,1); }
.philosophy-photo:hover img { transform: scale(1.035); }
.philosophy-photo figcaption { position: absolute; left: 18px; bottom: 18px; padding: 8px 10px; background: var(--paper); font: 900 9px/1 var(--sans); letter-spacing: .14em; }
.services { display: grid; grid-template-columns: minmax(310px, .9fr) minmax(0, 1.35fr); color: #fff; background: var(--ink); }
.service-sticky { position: sticky; top: 66px; align-self: start; min-height: calc(100svh - 66px); display: flex; flex-direction: column; justify-content: center; padding: clamp(65px, 8vw, 120px); border-right: 1px solid var(--light-line); }
.service-sticky h2 span { color: var(--acid); }
.service-lead { max-width: 430px; margin: 28px 0 0; color: rgba(255,255,255,.62); }
.arrow-link { display: inline-flex; align-items: center; gap: 12px; margin-top: 32px; width: fit-content; padding-bottom: 6px; border-bottom: 1px solid rgba(255,255,255,.35); font: 900 11px/1 var(--sans); letter-spacing: .08em; }
.arrow-link span { transition: transform .2s; }
.arrow-link:hover span { transform: translate(4px,-4px); }
.arrow-link.dark { color: var(--ink); border-color: var(--line); }
.service-list { min-width: 0; }
.service-row { display: grid; grid-template-columns: 62px 140px minmax(200px, .8fr) minmax(240px, 1fr); gap: clamp(18px, 3vw, 48px); align-items: center; min-height: 210px; padding: 30px clamp(24px, 5vw, 80px); border-bottom: 1px solid var(--light-line); transition: background .25s, color .25s; }
.service-row:hover { color: var(--ink); background: var(--acid); }
.service-no { align-self: start; font: 900 11px/1 var(--sans); color: rgba(255,255,255,.45); }
.service-row:hover .service-no { color: rgba(10,10,11,.55); }
.service-image { width: 140px; aspect-ratio: 4/3; overflow: hidden; background: #2b2b2e; }
.service-image img { width: 100%; height: 100%; object-fit: cover; image-rendering: auto; transition: transform .45s; }
.service-row:hover .service-image img { transform: scale(1.08); }
.service-title small { color: var(--acid); font: 900 10px/1 var(--sans); letter-spacing: .14em; }
.service-row:hover .service-title small { color: var(--orange); }
.service-title h3 { margin: 10px 0 0; font-size: clamp(20px, 2vw, 31px); line-height: 1.35; }
.service-row > p { margin: 0; color: rgba(255,255,255,.58); font-size: 14px; }
.service-row:hover > p { color: rgba(10,10,11,.7); }
.review-stage { position: relative; min-height: 760px; display: grid; grid-template-columns: 1.05fr .95fr; color: #fff; background: var(--orange); overflow: hidden; }
.review-copy { position: relative; z-index: 2; display: flex; flex-direction: column; justify-content: center; padding: clamp(75px, 9vw, 140px); background: var(--ink-2); clip-path: polygon(0 0, 100% 0, 86% 100%, 0 100%); }
.review-copy h2 { margin: 20px 0 0; font: 900 clamp(90px, 13vw, 210px)/.78 var(--sans); letter-spacing: -.09em; }
.review-copy h2 small { font-size: .1em; letter-spacing: .04em; }
.review-count { margin: 40px 0 10px; font-size: 16px; }
.review-count b { font: 900 35px/1 var(--sans); color: var(--acid); }
.review-copy > p:not(.section-label):not(.review-count) { max-width: 620px; color: rgba(255,255,255,.62); }
.review-note { display: block; margin-top: 22px; color: rgba(255,255,255,.42); font-size: 10px; }
.review-visual { position: relative; min-height: 760px; display: grid; place-items: center; background: var(--orange); }
.review-word { font: 900 clamp(85px, 13vw, 230px)/1 var(--sans); letter-spacing: -.09em; transform: rotate(90deg); color: rgba(10,10,11,.94); }
.review-ring { position: absolute; width: min(28vw, 390px); aspect-ratio: 1; border: 2px solid var(--acid); border-radius: 50%; box-shadow: 0 0 0 25px rgba(217,255,63,.08), 0 0 0 50px rgba(217,255,63,.04); animation: pulseRing 4s ease-in-out infinite; }
.review-tags { position: absolute; inset: 0; }
.review-tags span { position: absolute; padding: 9px 13px; color: var(--ink); background: var(--acid); font: 900 10px/1 var(--jp); transform: rotate(-4deg); }
.review-tags span:nth-child(1) { top: 17%; left: 15%; }
.review-tags span:nth-child(2) { top: 36%; right: 9%; transform: rotate(7deg); }
.review-tags span:nth-child(3) { bottom: 25%; left: 11%; transform: rotate(4deg); }
.review-tags span:nth-child(4) { bottom: 12%; right: 19%; transform: rotate(-8deg); }
.works { padding: clamp(80px, 10vw, 150px) clamp(18px, 4vw, 65px); background: var(--paper); }
.works-head { display: flex; justify-content: space-between; align-items: end; gap: 30px; margin-bottom: 70px; }
.works-head h2 { max-width: 850px; margin-top: 24px; }
.work-grid { display: grid; grid-template-columns: repeat(12, 1fr); grid-auto-rows: minmax(100px, 9vw); gap: clamp(10px, 1.4vw, 22px); }
.work-grid figure { position: relative; margin: 0; overflow: hidden; background: #bbb; }
.work-grid img { width: 100%; height: 100%; object-fit: cover; transition: transform .65s cubic-bezier(.2,.7,.2,1), filter .4s; filter: saturate(.78) contrast(1.08); }
.work-grid figure:hover img { transform: scale(1.055); filter: saturate(1) contrast(1.04); }
.work-grid figcaption { position: absolute; left: 0; bottom: 0; padding: 9px 12px; color: #fff; background: rgba(10,10,11,.82); font: 900 9px/1 var(--sans); letter-spacing: .13em; }
.work-a { grid-column: 1 / 8; grid-row: 1 / 5; }
.work-b { grid-column: 8 / 11; grid-row: 1 / 3; }
.work-c { grid-column: 11 / 13; grid-row: 1 / 4; }
.work-d { grid-column: 8 / 11; grid-row: 3 / 6; }
.work-e { grid-column: 1 / 5; grid-row: 5 / 8; }
.work-f { grid-column: 5 / 8; grid-row: 5 / 7; }
.access { min-height: 820px; display: grid; grid-template-columns: 1.1fr .9fr; color: #fff; background: var(--ink); }
.access-photo { position: relative; min-height: 820px; overflow: hidden; }
.access-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent 60%, rgba(10,10,11,.75)); }
.access-photo img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.65) contrast(1.12); }
.access-panel { position: relative; display: flex; flex-direction: column; justify-content: center; padding: clamp(60px, 8vw, 125px); border-left: 1px solid var(--light-line); }
.access-panel h2 { margin: 24px 0 40px; }
.access-panel address { display: grid; gap: 8px; font-style: normal; }
.access-panel address span { color: rgba(255,255,255,.5); font: 900 10px/1 var(--sans); letter-spacing: .15em; }
.access-panel address strong { font-size: clamp(18px, 2vw, 29px); line-height: 1.45; }
.access-panel dl { margin: 40px 0 0; border-top: 1px solid var(--light-line); }
.access-panel dl div { display: grid; grid-template-columns: 90px 1fr; gap: 20px; padding: 17px 0; border-bottom: 1px solid var(--light-line); }
.access-panel dt { color: var(--acid); font: 900 10px/1.8 var(--sans); letter-spacing: .12em; }
.access-panel dd { margin: 0; color: rgba(255,255,255,.72); font-size: 14px; }
.payment-block { margin-top: 30px; }
.payment-heading { margin: 0 0 13px; color: #fff; font: 900 12px/1 var(--sans); letter-spacing: .1em; }
.payment-methods { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.payment-methods li { display: inline-flex; align-items: center; gap: 8px; min-height: 38px; padding: 8px 12px; color: rgba(255,255,255,.84); background: rgba(255,255,255,.055); border: 1px solid rgba(255,255,255,.14); border-radius: 999px; font-size: 12px; line-height: 1.2; }
.payment-methods li span { display: grid; min-width: 24px; height: 24px; place-items: center; padding: 0 4px; color: #0a0a0b; background: var(--acid); border-radius: 999px; font: 900 8px/1 var(--sans); letter-spacing: -.02em; }
.payment-note { margin: 11px 0 0; color: rgba(255,255,255,.48); font-size: 11px; line-height: 1.65; }
.closing { min-height: 720px; display: grid; place-content: center; justify-items: center; padding: 100px 20px; text-align: center; color: var(--ink); background: var(--acid); }
.closing-kicker { margin: 0 0 28px; font: 900 11px/1 var(--sans); letter-spacing: .24em; }
.closing h2 { font-size: clamp(54px, 9vw, 142px); }
.closing h2 span { color: transparent; -webkit-text-stroke: 2px var(--ink); }
.closing .btn-acid { background: var(--ink); color: #fff; border-color: var(--ink); }
.closing .btn-acid:hover { background: var(--orange); border-color: var(--orange); }
.site-footer { display: grid; grid-template-columns: 1fr auto; gap: 35px; align-items: end; padding: 55px clamp(22px, 5vw, 80px) 85px; color: rgba(255,255,255,.62); background: var(--ink); border-top: 1px solid var(--light-line); }
.footer-brand img { width: auto; height: 72px; max-width: 200px; object-fit: contain; object-position: left center; margin-bottom: 16px; }
.footer-brand p { margin: 0; font-size: 12px; }
.footer-links { display: flex; gap: 28px; font: 900 10px/1 var(--sans); letter-spacing: .12em; }
.site-footer small { grid-column: 1 / -1; font-size: 9px; color: rgba(255,255,255,.35); }
.mobile-cta { display: none; }
.reveal { opacity: 0; transform: translateY(35px); transition: opacity .85s cubic-bezier(.2,.7,.2,1), transform .85s cubic-bezier(.2,.7,.2,1); }
.reveal.is-visible { opacity: 1; transform: translateY(0); }
@keyframes marquee { to { transform: translateX(-50%); } }
@keyframes orbit { to { transform: rotate(360deg); } }
@keyframes orbitReverse { to { transform: rotate(-360deg); } }
@keyframes pulseRing { 0%,100% { transform: scale(.92); opacity: .65; } 50% { transform: scale(1.05); opacity: 1; } }
@media (max-width: 1100px) {
    .hero-title { font-size: clamp(60px, 11vw, 120px); }
    .review-orbit { top: 19%; }
    .philosophy { grid-template-columns: 80px 1fr .7fr; }
    .philosophy > * { padding: 65px 35px; }
    .service-row { grid-template-columns: 48px 110px minmax(180px,.75fr) 1fr; gap: 22px; padding-inline: 32px; }
    .service-image { width: 110px; }
    .review-copy { padding: 80px 55px; }
}
@media (max-width: 860px) {
    .pointer-glow { display: none; }
    .site-header { grid-template-columns: 1fr auto; min-height: 70px; }
    .desktop-nav, .header-goo { display: none; }
    .menu-button { position: relative; z-index: 5; display: grid; gap: 7px; width: 45px; height: 45px; place-content: center; color: #fff; background: rgba(10,10,11,.3); border: 1px solid rgba(255,255,255,.35); border-radius: 50%; }
    .menu-button span { display: block; width: 18px; height: 1px; background: currentColor; transition: transform .25s; }
    .menu-button[aria-expanded="true"] span:first-child { transform: translateY(4px) rotate(45deg); }
    .menu-button[aria-expanded="true"] span:last-child { transform: translateY(-4px) rotate(-45deg); }
    .mobile-menu { position: fixed; z-index: 3; inset: 0; display: flex; flex-direction: column; justify-content: flex-start; gap: 0; min-height: 100dvh; padding: calc(92px + env(safe-area-inset-top)) 24px calc(88px + env(safe-area-inset-bottom)); color: #fff; background: rgba(10,10,11,.985); overflow-y: auto; overscroll-behavior: contain; visibility: hidden; opacity: 0; pointer-events: none; transform: translateY(-24px); transition: opacity .28s ease, transform .38s cubic-bezier(.2,.7,.2,1), visibility 0s linear .38s; }
    .mobile-menu.is-open { visibility: visible; opacity: 1; pointer-events: auto; transform: translateY(0); transition-delay: 0s; }
    .mobile-menu-head { display: flex; justify-content: space-between; align-items: baseline; padding: 0 0 12px; border-bottom: 1px solid rgba(255,255,255,.34); font: 900 10px/1 var(--sans); letter-spacing: .18em; color: var(--acid); }
    .mobile-menu-head small { color: rgba(255,255,255,.46); font-size: 9px; }
    .mobile-menu a { display: grid; grid-template-columns: 38px minmax(0,1fr); gap: 14px; align-items: center; min-height: 76px; padding: 11px 0; border-bottom: 1px solid var(--light-line); }
    .mobile-menu-no { color: var(--acid); font: 900 10px/1 var(--sans); letter-spacing: .1em; }
    .mobile-menu-copy { min-width: 0; display: grid; gap: 6px; }
    .mobile-menu-copy b { font: 900 clamp(25px,8vw,37px)/.92 var(--sans); letter-spacing: -.035em; white-space: nowrap; }
    .mobile-menu-copy small { color: rgba(255,255,255,.58); font-size: 11px; line-height: 1.25; letter-spacing: .03em; }
    .mobile-menu-goo .mobile-menu-copy b { color: var(--acid); font-size: clamp(22px,7vw,33px); }
    .hero::after { background: linear-gradient(0deg, rgba(10,10,11,.98) 0 22%, rgba(10,10,11,.42) 65%, rgba(10,10,11,.28)); }
    .hero-photo-main { inset: 0; clip-path: none; }
    .hero-photo-sub { display: none; }
    .hero-copy { display: flex; min-height: 100svh; flex-direction: column; justify-content: flex-end; padding: 120px 0 105px; }
    .hero-title { font-size: clamp(58px, 16vw, 112px); }
    .review-orbit { top: 105px; right: 20px; width: 165px; }
    .hero-location { display: none; }
    .philosophy { grid-template-columns: 1fr; grid-template-rows: auto; min-height: auto; }
    .philosophy > .section-index { writing-mode: horizontal-tb; grid-row: auto; padding: 55px 24px 10px; border-right: 0; }
    .philosophy-copy, .philosophy-body, .philosophy-photo { grid-column: 1; grid-row: auto; border-right: 0; }
    .philosophy-copy { padding-top: 25px; }
    .philosophy-photo { height: 68vw; min-height: 440px; }
    .philosophy-photo img { min-height: 0; }
    .services { grid-template-columns: 1fr; }
    .service-sticky { position: relative; top: 0; min-height: auto; padding: 80px 28px; border-right: 0; border-bottom: 1px solid var(--light-line); }
    .service-row { grid-template-columns: 44px 110px 1fr; }
    .service-row > p { grid-column: 2 / -1; }
    .review-stage { grid-template-columns: 1fr; }
    .review-copy { clip-path: none; }
    .review-visual { min-height: 500px; }
    .review-ring { width: min(55vw, 380px); }
    .works-head { align-items: flex-start; flex-direction: column; }
    .access { grid-template-columns: 1fr; }
    .access-photo { min-height: 520px; }
    .access-panel { border-left: 0; border-top: 1px solid var(--light-line); }
}
@media (max-width: 600px) {
    body { padding-bottom: 67px; }
    .site-header { min-height: 68px; padding: 8px 14px; }
    .site-header.is-scrolled { min-height: 62px; }
    .brand img { width: auto; height: 49px; max-width: 134px; }
    .menu-button { width: 42px; height: 42px; }
    .copy-pc { display: none; }
    .copy-sp, .br-sp { display: inline; }
    .hero-copy { width: calc(100% - 32px); }
    .kicker { max-width: 70%; line-height: 1.5; }
    .hero-title { font-size: clamp(49px, 16.2vw, 76px); line-height: .84; letter-spacing: -.068em; }
    .hero-ja { margin-top: 26px; max-width: 22em; font-size: 16px; line-height: 1.72; }
    .hero-actions, .review-buttons, .access-actions, .closing-actions { display: grid; width: 100%; }
    .btn { width: 100%; }
    .review-orbit { top: 88px; width: 140px; }
    .orbit-score b { font-size: 35px; }
    .marquee-track { gap: 18px; font-size: 28px; }
    .philosophy > * { padding: 55px 22px; }
    .philosophy > .section-index { padding-bottom: 0; }
    .philosophy-copy h2, .service-sticky h2, .works-head h2, .access-panel h2, .closing h2 { font-size: clamp(40px, 11.8vw, 61px); line-height: 1.02; letter-spacing: -.055em; }
    .philosophy-copy h2 em { display: inline-block; margin-top: .12em; font-size: .5em; line-height: 1.3; }
    .service-sticky h2 span, .closing h2 span { display: inline-block; }
    .works-head h2 { max-width: 9em; }
    .access-panel h2 { max-width: 7em; }
    .facts { grid-template-columns: 1fr; gap: 18px; }
    .facts div { display: flex; align-items: baseline; gap: 14px; padding-top: 18px; border-bottom: 1px solid var(--line); }
    .philosophy-photo { min-height: 360px; height: 82vw; }
    .service-row { grid-template-columns: 34px 82px 1fr; min-height: 185px; gap: 14px; padding: 25px 18px; }
    .service-image { width: 82px; }
    .service-title h3 { font-size: 18px; }
    .service-row > p { font-size: 12px; }
    .review-copy { padding: 75px 24px; }
    .review-copy h2 { font-size: clamp(85px, 28vw, 145px); }
    .review-visual { min-height: 390px; }
    .review-word { font-size: 27vw; }
    .works { padding-inline: 12px; }
    .work-grid { grid-template-columns: repeat(2,1fr); grid-auto-rows: 180px; gap: 8px; }
    .work-a, .work-b, .work-c, .work-d, .work-e, .work-f { grid-column: auto; grid-row: auto; }
    .work-a { grid-column: 1 / -1; grid-row: span 2; }
    .work-d { grid-row: span 2; }
    .access-photo { min-height: 390px; }
    .access-panel { padding: 70px 22px; }
    .access-panel dl div { grid-template-columns: 70px 1fr; }
    .payment-methods { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
    .payment-methods li { min-width: 0; padding-inline: 10px; font-size: 11px; }
    .closing { min-height: 610px; }
    .site-footer { grid-template-columns: 1fr; padding-bottom: 50px; }
    .footer-links { flex-wrap: wrap; }
    .mobile-cta { position: fixed; inset: auto 0 0; z-index: 150; display: grid; transition: opacity .2s, transform .25s; grid-template-columns: repeat(3,1fr); min-height: 67px; padding-bottom: env(safe-area-inset-bottom); color: #fff; background: rgba(10,10,11,.97); border-top: 1px solid var(--light-line); backdrop-filter: blur(15px); }
    .mobile-cta a { display: grid; place-items: center; border-right: 1px solid var(--light-line); font-size: 12px; font-weight: 800; }
}

@media (max-width: 380px) {
    .site-header { padding-inline: 12px; }
    .brand img { height: 45px; max-width: 120px; }
    .mobile-menu { padding-inline: 18px; }
    .mobile-menu a { min-height: 69px; grid-template-columns: 31px minmax(0,1fr); gap: 10px; }
    .mobile-menu-copy b { font-size: 25px; }
    .hero-title { font-size: clamp(46px, 15.8vw, 60px); }
    .review-orbit { width: 126px; right: 14px; }
    .philosophy-copy h2, .service-sticky h2, .works-head h2, .access-panel h2, .closing h2 { font-size: clamp(37px, 11.5vw, 48px); }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
    .reveal { opacity: 1; transform: none; }
    .pointer-glow { display: none; }
}
.legal-page { min-height: 100vh; background: var(--paper); }
.legal-header { min-height: 78px; display: flex; align-items: center; justify-content: space-between; padding: 12px clamp(20px,4vw,60px); color: #fff; background: var(--ink); border-bottom: 1px solid var(--light-line); }
.legal-header img { width: auto; height: 58px; max-width: 180px; object-fit: contain; object-position: left center; }
.legal-header > a:last-child { font: 900 10px/1 var(--sans); letter-spacing: .15em; }
.legal-main { display: grid; grid-template-columns: minmax(250px,.62fr) minmax(0,1.38fr); gap: clamp(42px,7vw,105px); padding: clamp(72px,8vw,118px) clamp(22px,7vw,110px) clamp(90px,10vw,150px); }
.legal-title-block { position: sticky; top: 112px; align-self: start; }
.legal-title-block .section-label { margin: 0 0 24px; }
.legal-main h1 { max-width: 520px; margin: 0; font: 900 clamp(42px,5.3vw,78px)/.96 var(--sans); letter-spacing: -.065em; overflow-wrap: normal; word-break: keep-all; }
.legal-updated { margin: 24px 0 0; color: rgba(10,10,11,.52); font-size: 11px; font-weight: 700; letter-spacing: .06em; }
.legal-content { width: 100%; max-width: 820px; font-size: 15px; line-height: 1.9; }
.legal-content section { padding: 0 0 38px; border-bottom: 1px solid rgba(10,10,11,.14); }
.legal-content section + section { padding-top: 38px; }
.legal-lead { margin: 0 0 44px; padding: 24px 26px; color: rgba(10,10,11,.82) !important; background: rgba(217,255,63,.2); border-left: 5px solid #91ad00; font-weight: 700; }
.legal-content h2 { display: flex; gap: 12px; align-items: baseline; margin: 0 0 15px; font: 900 clamp(18px,1.8vw,22px)/1.35 var(--sans); letter-spacing: -.025em; }
.legal-content h2 span { flex: 0 0 auto; color: #789000; font-size: 10px; letter-spacing: .1em; }
.legal-content p { margin: 0; color: rgba(10,10,11,.72); }
.legal-content p + p { margin-top: 14px; }
.legal-content ul { display: grid; gap: 8px; margin: 14px 0 0; padding: 0; list-style: none; }
.legal-content li { position: relative; padding-left: 20px; color: rgba(10,10,11,.72); }
.legal-content li::before { content: ''; position: absolute; left: 2px; top: .82em; width: 6px; height: 6px; border-radius: 50%; background: #91ad00; }
.legal-operator { display: grid; gap: 0; margin: 18px 0 0; border-top: 1px solid rgba(10,10,11,.16); }
.legal-operator div { display: grid; grid-template-columns: 120px minmax(0,1fr); gap: 18px; padding: 15px 0; border-bottom: 1px solid rgba(10,10,11,.16); }
.legal-operator dt { color: rgba(10,10,11,.52); font-size: 12px; font-weight: 900; }
.legal-operator dd { margin: 0; font-weight: 700; }
.legal-contact { margin-top: 18px; padding: 24px 26px; background: #fff; border: 1px solid rgba(10,10,11,.14); }
.legal-contact strong { display: block; margin-bottom: 12px; font-family: var(--sans); font-size: 16px; }
.legal-contact a { text-decoration: underline; text-underline-offset: 3px; }
.legal-back { margin-top: 42px !important; }
@media (max-width: 840px) {
    .legal-main { grid-template-columns: 1fr; gap: 48px; padding-top: 62px; }
    .legal-title-block { position: static; }
    .legal-main h1 { font-size: clamp(40px,10.8vw,62px); line-height: .98; }
    .legal-content { max-width: none; font-size: 14px; line-height: 1.85; }
}
@media (max-width: 520px) {
    .legal-header { min-height: 68px; padding: 9px 16px; }
    .legal-header img { height: 48px; max-width: 145px; }
    .legal-main { gap: 38px; padding: 48px 18px 92px; }
    .legal-title-block .section-label { margin-bottom: 16px; }
    .legal-main h1 { font-size: clamp(38px,12vw,52px); letter-spacing: -.055em; }
    .legal-updated { margin-top: 17px; }
    .legal-lead { margin-bottom: 34px; padding: 20px 18px; }
    .legal-content section { padding-bottom: 30px; }
    .legal-content section + section { padding-top: 30px; }
    .legal-content h2 { gap: 9px; font-size: 18px; }
    .legal-operator div { grid-template-columns: 1fr; gap: 5px; }
    .legal-contact { padding: 20px 18px; }
}

/* Reservation system */
.reservation { display: grid; grid-template-columns: minmax(320px,.78fr) minmax(0,1.22fr); color: #fff; background: var(--ink-2); border-top: 1px solid var(--light-line); }
.reservation-intro { position: sticky; top: 0; min-height: 100svh; align-self: start; display: flex; flex-direction: column; justify-content: center; padding: clamp(80px,9vw,140px) clamp(28px,6vw,95px); background: linear-gradient(145deg, rgba(217,255,63,.11), transparent 48%), var(--ink); border-right: 1px solid var(--light-line); }
.reservation-intro h2 { margin: 24px 0 30px; font: 900 clamp(48px,6.6vw,106px)/.88 var(--sans); letter-spacing: -.07em; }
.reservation-intro > p:not(.section-label) { max-width: 590px; color: rgba(255,255,255,.7); }
.reservation-intro ul { display: grid; gap: 0; margin: 45px 0 0; padding: 0; list-style: none; border-top: 1px solid var(--light-line); }
.reservation-intro li { display: grid; grid-template-columns: 45px 1fr; gap: 18px; align-items: center; padding: 17px 0; border-bottom: 1px solid var(--light-line); }
.reservation-intro li b { color: var(--acid); font: 900 11px/1 var(--sans); }
.reservation-intro li span { font-size: 13px; font-weight: 700; }
.reservation-form-wrap { padding: clamp(70px,8vw,120px) clamp(24px,6vw,90px); background: var(--paper); color: var(--ink); }
.reservation-alert { margin-bottom: 25px; padding: 18px 20px; border-left: 6px solid var(--orange); background: #fff; box-shadow: 0 12px 32px rgba(0,0,0,.07); }
.reservation-alert-success { border-left-color: #74b800; background: #f7ffe0; }
.reservation-alert p { margin: 0; }
.reservation-alert p + p { margin-top: 6px; }
.reservation-alert strong { display: block; margin-top: 10px; font-family: var(--sans); letter-spacing: .08em; }
.reservation-form { display: grid; gap: 40px; }
.reservation-form fieldset { display: grid; gap: 20px; margin: 0; padding: 0 0 36px; border: 0; border-bottom: 1px solid var(--line); }
.reservation-form legend { width: 100%; margin-bottom: 22px; padding: 0; font: 900 clamp(20px,2.5vw,32px)/1.1 var(--sans); letter-spacing: -.035em; }
.reservation-form legend span { display: inline-grid; place-items: center; width: 34px; height: 34px; margin-right: 10px; border-radius: 50%; color: var(--ink); background: var(--acid); font-size: 11px; letter-spacing: 0; vertical-align: .2em; }
.form-grid { display: grid; gap: 18px; }
.form-grid.two { grid-template-columns: repeat(2,minmax(0,1fr)); }
.form-grid.date-grid { grid-template-columns: minmax(180px,1fr) minmax(125px,.55fr) minmax(180px,1fr) minmax(125px,.55fr); }
.reservation-form label { display: grid; gap: 8px; min-width: 0; }
.reservation-form label > span { font-size: 12px; font-weight: 900; }
.reservation-form label em { margin-left: 5px; color: #7d9000; font-size: 10px; font-style: normal; }
.reservation-form input:not([type="checkbox"]), .reservation-form select, .reservation-form textarea { width: 100%; min-height: 52px; padding: 12px 14px; color: var(--ink); background: #fff; border: 1px solid rgba(10,10,11,.3); border-radius: 0; font: inherit; transition: border-color .2s, box-shadow .2s; }
.reservation-form textarea { min-height: 155px; resize: vertical; }
.reservation-form input:focus, .reservation-form select:focus, .reservation-form textarea:focus { outline: 0; border-color: #789000; box-shadow: 0 0 0 3px rgba(217,255,63,.35); }
.consent { grid-template-columns: auto 1fr; align-items: start; gap: 12px !important; }
.consent input { width: 19px; height: 19px; margin: 4px 0 0; accent-color: #91ad00; }
.consent a { text-decoration: underline; text-underline-offset: 3px; }
.reservation-submit { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 76px; padding: 16px 22px; color: var(--ink); background: var(--acid); border: 0; font: 900 clamp(17px,2vw,24px)/1 var(--sans); letter-spacing: -.02em; cursor: pointer; transition: background .2s, transform .2s; }
.reservation-submit b { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; color: #fff; background: var(--ink); }
.reservation-submit:hover { background: #fff; transform: translateY(-3px); }
.reservation-submit[disabled] { opacity: .65; cursor: wait; transform: none; }
.form-note { margin: -20px 0 0; color: rgba(10,10,11,.58); font-size: 11px; }
.form-honeypot { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

/* Floating back-to-top */
.back-to-top { position: fixed; z-index: 145; right: clamp(16px,2.5vw,36px); bottom: clamp(18px,2.5vw,34px); width: 64px; height: 64px; display: grid; place-content: center; gap: 2px; color: var(--ink); background: var(--acid); border: 1px solid rgba(10,10,11,.25); border-radius: 50%; box-shadow: 0 14px 38px rgba(0,0,0,.26); opacity: 0; visibility: hidden; transform: translateY(18px) scale(.9); cursor: pointer; transition: opacity .25s, transform .3s, visibility 0s linear .3s, background .2s; }
.back-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0) scale(1); transition-delay: 0s; }
.back-to-top span { font: 900 22px/1 var(--sans); }
.back-to-top small { font: 900 8px/1 var(--sans); letter-spacing: .14em; }
.back-to-top:hover { background: #fff; transform: translateY(-4px) scale(1.03); }
body.menu-open .back-to-top { opacity: 0; pointer-events: none; transform: translateY(20px); }

@media (max-width: 980px) {
    .reservation { grid-template-columns: 1fr; }
    .reservation-intro { position: relative; min-height: auto; padding: 90px 28px; border-right: 0; border-bottom: 1px solid var(--light-line); }
    .reservation-intro h2 { font-size: clamp(48px,11vw,82px); }
    .form-grid.date-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
    .reservation-intro { padding: 76px 22px; }
    .reservation-intro h2 { font-size: clamp(42px,12vw,58px); line-height: .98; }
    .reservation-form-wrap { padding: 65px 18px 85px; }
    .reservation-form { gap: 32px; }
    .form-grid.two, .form-grid.date-grid { grid-template-columns: 1fr; }
    .reservation-form fieldset { gap: 17px; padding-bottom: 30px; }
    .reservation-form legend { font-size: 22px; }
    .reservation-submit { min-height: 68px; font-size: 18px; }
    .mobile-cta { grid-template-columns: repeat(4,1fr); }
    .mobile-cta a { font-size: 11px; }
    .mobile-cta-reserve { color: var(--ink); background: var(--acid); }
    .back-to-top { right: 14px; bottom: calc(78px + env(safe-area-inset-bottom)); width: 54px; height: 54px; }
}
@media (max-width: 380px) {
    .mobile-cta a { font-size: 10px; }
    .back-to-top { width: 50px; height: 50px; }
}

/* Reservation availability */
.availability-guide { display: flex; align-items: center; gap: 9px; margin: -4px 0 18px; padding: 12px 14px; background: rgba(217,255,63,.18); border-left: 4px solid #809700; font-size: 12px; font-weight: 800; }
.availability-guide span { color: #809700; font-size: 10px; }
.availability-status { min-height: 18px; color: #666; font-size: 11px; font-weight: 800; }
.availability-status.is-open { color: #547000; }
.availability-status.is-full, .availability-status.is-error { color: #a3352a; }
.availability-status.is-loading { color: #777; }
.reservation-form option:disabled { color: #999; background: #efefef; }

/* Typography balance and controlled line breaks v3.3 */
.hero-title,
.heading-philosophy,
.heading-service,
.heading-works,
.reservation-intro h2,
.heading-access,
.heading-closing {
    word-break: keep-all;
    overflow-wrap: normal;
    text-wrap: initial;
}

.hero-title {
    max-width: min(920px, 64vw);
    font-size: clamp(72px, 9.1vw, 148px);
    line-height: .82;
    letter-spacing: -.068em;
}
.hero-ja {
    max-width: 34em;
    font-size: clamp(16px, 1.35vw, 21px);
    line-height: 1.75;
}

.philosophy-copy h2 {
    font-size: clamp(46px, 5.6vw, 82px);
    line-height: 1.03;
    letter-spacing: -.055em;
}
.philosophy-copy h2 em {
    display: inline-block;
    margin-top: .24em;
    font-size: .43em;
    line-height: 1.35;
    letter-spacing: -.025em;
}
.service-sticky h2 {
    max-width: 8.8em;
    font-size: clamp(44px, 5.25vw, 78px);
    line-height: 1.02;
    letter-spacing: -.055em;
}
.service-sticky h2 strong {
    color: var(--acid);
    font: inherit;
}
.works-head h2 {
    max-width: 11.5em;
    font-size: clamp(44px, 5.35vw, 80px);
    line-height: 1.02;
    letter-spacing: -.055em;
}
.review-copy h2 {
    font-size: clamp(86px, 11.2vw, 180px);
    line-height: .82;
}
.review-copy h2 small {
    display: inline-block;
    margin-left: .16em;
    font-size: .115em;
    white-space: nowrap;
}
.reservation-intro h2 {
    max-width: 8.5em;
    font-size: clamp(46px, 5.4vw, 82px);
    line-height: 1;
    letter-spacing: -.055em;
}
.access-panel h2 {
    max-width: 7.5em;
    font-size: clamp(46px, 5.6vw, 84px);
    line-height: 1;
    letter-spacing: -.055em;
}
.closing h2 {
    max-width: 10.5em;
    font-size: clamp(56px, 7.4vw, 112px);
    line-height: .98;
    letter-spacing: -.06em;
}
.closing h2 strong {
    color: transparent;
    font: inherit;
    -webkit-text-stroke: clamp(1px, .13vw, 2px) var(--ink);
}

.reservation-form legend {
    font-size: clamp(20px, 2vw, 28px);
    line-height: 1.25;
}
.reservation-form label > span {
    font-size: 12px;
    line-height: 1.45;
}
.reservation-form input:not([type="checkbox"]),
.reservation-form select,
.reservation-form textarea {
    font-size: 15px;
    line-height: 1.5;
}

@media (min-width: 981px) and (max-width: 1280px) {
    .hero-title { max-width: 720px; font-size: clamp(70px, 8.8vw, 112px); }
    .philosophy-copy h2 { font-size: clamp(44px, 5.1vw, 66px); }
    .service-sticky h2 { font-size: clamp(42px, 4.7vw, 61px); }
    .works-head h2 { font-size: clamp(43px, 5vw, 66px); }
    .reservation-intro h2 { font-size: clamp(43px, 5vw, 66px); }
    .access-panel h2 { font-size: clamp(43px, 5vw, 66px); }
    .closing h2 { font-size: clamp(54px, 7vw, 90px); }
}

@media (max-width: 980px) {
    .hero-title {
        max-width: 760px;
        font-size: clamp(60px, 13vw, 104px);
        line-height: .84;
    }
    .philosophy-copy h2,
    .service-sticky h2,
    .works-head h2,
    .access-panel h2 {
        max-width: 12em;
        font-size: clamp(44px, 8.2vw, 70px);
        line-height: 1.02;
    }
    .reservation-intro h2 {
        max-width: 10em;
        font-size: clamp(44px, 8.2vw, 70px);
        line-height: 1.02;
    }
    .closing h2 {
        font-size: clamp(52px, 10vw, 84px);
    }
}

@media (max-width: 600px) {
    .hero-copy {
        padding-bottom: 96px;
    }
    .kicker,
    .section-label {
        margin-bottom: 18px;
        font-size: 9px;
        line-height: 1.5;
        letter-spacing: .17em;
    }
    .hero-title {
        max-width: 100%;
        font-size: clamp(45px, 14.2vw, 64px);
        line-height: .87;
        letter-spacing: -.058em;
    }
    .hero-ja {
        margin-top: 24px;
        max-width: 20em;
        font-size: clamp(14px, 4vw, 16px);
        line-height: 1.72;
        letter-spacing: .015em;
    }
    .philosophy-copy h2 {
        max-width: none;
        font-size: clamp(35px, 10.1vw, 47px);
        line-height: 1.06;
        letter-spacing: -.045em;
    }
    .philosophy-copy h2 em {
        margin-top: .28em;
        font-size: .48em;
        line-height: 1.45;
    }
    .service-sticky h2 {
        max-width: 8.5em;
        font-size: clamp(36px, 10.3vw, 48px);
        line-height: 1.05;
        letter-spacing: -.045em;
    }
    .works-head h2 {
        max-width: 9em;
        font-size: clamp(35px, 9.8vw, 46px);
        line-height: 1.06;
        letter-spacing: -.045em;
    }
    .review-copy h2 {
        font-size: clamp(76px, 24vw, 112px);
        letter-spacing: -.075em;
    }
    .review-count {
        margin-top: 28px;
        font-size: 14px;
    }
    .review-count b {
        font-size: 28px;
    }
    .reservation-intro h2 {
        max-width: 8em;
        font-size: clamp(35px, 10vw, 47px);
        line-height: 1.06;
        letter-spacing: -.045em;
    }
    .reservation-intro > p:not(.section-label) {
        font-size: 13px;
        line-height: 1.85;
    }
    .reservation-form legend {
        display: flex;
        align-items: center;
        font-size: 19px;
        line-height: 1.3;
    }
    .reservation-form legend span {
        flex: 0 0 32px;
        width: 32px;
        height: 32px;
    }
    .reservation-form label > span {
        font-size: 12px;
    }
    .reservation-form input:not([type="checkbox"]),
    .reservation-form select,
    .reservation-form textarea {
        font-size: 16px;
    }
    .heading-access {
        max-width: 7em;
        font-size: clamp(36px, 10.2vw, 48px) !important;
        line-height: 1.04 !important;
        letter-spacing: -.045em !important;
    }
    .heading-closing {
        max-width: 8em;
        font-size: clamp(39px, 11vw, 52px) !important;
        line-height: 1.03 !important;
        letter-spacing: -.05em !important;
    }
    .closing h2 strong {
        -webkit-text-stroke: 1px var(--ink);
    }
    .closing-actions {
        max-width: 340px;
    }
}

@media (max-width: 380px) {
    .hero-title { font-size: clamp(42px, 13.8vw, 52px); }
    .philosophy-copy h2,
    .service-sticky h2,
    .works-head h2,
    .reservation-intro h2,
    .heading-access {
        font-size: clamp(33px, 9.8vw, 40px) !important;
    }
    .heading-closing {
        font-size: clamp(36px, 10.5vw, 44px) !important;
    }
}

/* Final heading fit corrections */
.service-sticky {
    padding-inline: clamp(28px, 4vw, 60px);
}
.service-sticky h2 > .copy-pc,
.service-sticky h2 > .copy-sp {
    color: inherit;
}
.closing h2 > .copy-pc,
.closing h2 > .copy-sp {
    color: inherit;
    -webkit-text-stroke: 0;
}
.philosophy-copy h2 { font-size: clamp(44px, 4.9vw, 70px); }
.service-sticky h2 { font-size: clamp(40px, 3.8vw, 58px); }
.works-head h2 { font-size: clamp(42px, 4.6vw, 68px); }
.reservation-intro h2 { font-size: clamp(42px, 3.8vw, 56px); }
.access-panel h2 { font-size: clamp(42px, 4vw, 60px); }
.closing h2 { font-size: clamp(52px, 6vw, 88px); }

@media (min-width: 981px) and (max-width: 1280px) {
    .philosophy-copy h2 { font-size: clamp(42px, 4.6vw, 59px); }
    .service-sticky h2 { font-size: clamp(38px, 3.6vw, 46px); }
    .works-head h2 { font-size: clamp(40px, 4.3vw, 55px); }
    .reservation-intro h2 { font-size: clamp(40px, 3.7vw, 48px); }
    .access-panel h2 { font-size: clamp(40px, 4vw, 51px); }
    .closing h2 { font-size: clamp(50px, 5.8vw, 74px); }
}

@media (max-width: 600px) {
    .service-sticky h2 > .copy-pc,
    .closing h2 > .copy-pc {
        display: none !important;
    }
    .service-sticky h2 > .copy-sp,
    .closing h2 > .copy-sp {
        display: inline !important;
    }
    .service-sticky h2 { font-size: clamp(36px, 10.3vw, 48px); }
    .works-head h2 { font-size: clamp(35px, 9.8vw, 46px); }
    .reservation-intro h2 { font-size: clamp(35px, 10vw, 47px); }
    .heading-access { font-size: clamp(36px, 10.2vw, 48px) !important; }
    .heading-closing { font-size: clamp(39px, 11vw, 52px) !important; }
}
