/* self-hosted fonts (OFL 1.1, subset; no external link) */
@font-face{font-family:"MaruBuri";font-style:normal;font-weight:400 700;font-display:swap;src:url("../fonts/maruburi-700.woff2") format("woff2")}
@font-face{font-family:"KM Sans";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/km-sans-400.woff2") format("woff2")}
@font-face{font-family:"KM Sans";font-style:normal;font-weight:500 600;font-display:swap;src:url("../fonts/km-sans-600.woff2") format("woff2")}
@font-face{font-family:"KM Sans";font-style:normal;font-weight:700 900;font-display:swap;src:url("../fonts/km-sans-700.woff2") format("woff2")}
/* www.gangnam-kingsman.com — "재단 주문서" edition (design M002.P024.T111); T119 first screen 「걸린 라벨」:
   a tailor's label hangs over a full-bleed gold/silver room photo, a tape-measure bar carries hours / closed / area / call.
   Two voices: MaruBuri Bold (display) + KM Sans (IBM Plex Sans KR, renamed) — self-hosted subsets.
   grey flannel ground, ink text, one mulberry chalk accent; serif headings (system serif faces), system-ui body.
   No web font, no outlines around blocks, no colour bars. */
:root {
  --bg: #15161b;
  --paper: #1f2028;
  --ink: #f4efe6;
  --mute: #bdb5a8;
  --acc: #e58ad3;
  --acc-d: #f2b3e4;
  --char: #0f1013;
  --char-2: #24252d;
  --on-char: #ececef;
  --on-char-mute: #b9bac4;
  --acc-lt: #f1a7df;
  --tick: rgba(244, 239, 230, .4);
  --tape: #2e2f38;
  --serif: "MaruBuri", ui-serif, Georgia, "AppleMyungjo", serif;
  --sans: "KM Sans", system-ui, sans-serif;
  --gold: #e2c27e;
  --gold-l: #f2deb0;
  --night: #15161b;
  --ivory: #f4efe6;
}
html:lang(ja) { --serif: "MaruBuri", "Hiragino Mincho ProN", "Yu Mincho", serif; }
html:lang(zh-Hans) { --serif: "MaruBuri", "Songti SC", "Noto Serif SC", serif; }
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; background: var(--bg); color: var(--ink); font-family: var(--sans); font-size: 17px; line-height: 1.7; overflow-wrap: anywhere; }
html:lang(ko) body { word-break: keep-all; }
html:lang(ja) body, html:lang(zh-Hans) body { word-break: normal; line-break: strict; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
p { margin: 0; font-size: 17px; }
h1, h2, h3, h4 { margin: 0; font-weight: 400; }
ul, ol { margin: 0; padding: 0; list-style: none; }
dl, dd { margin: 0; }
table { border-collapse: collapse; width: 100%; }
th, td { text-align: left; font-weight: 400; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.nw { white-space: nowrap; }
.km-ico { flex: none; }
:focus-visible { outline: 3px solid var(--acc); outline-offset: 2px; }

.km-wrap { max-width: 1200px; margin: 0 auto; padding-left: 24px; padding-right: 24px; }
@media (max-width: 699px) { .km-wrap { padding-left: 20px; padding-right: 20px; } }

.km-skip { position: absolute; left: 12px; top: -60px; background: var(--ink); color: #15161b; padding: 10px 14px; z-index: 9; }
.km-skip:focus { top: 12px; }

/* header (T119: night bar over the photo) */
.km-head { position: relative; z-index: 3; background: #0f1013; color: var(--ivory); box-shadow: inset 0 -1px 0 rgba(226, 194, 126, .35); }
.km-head-row { display: flex; align-items: center; gap: 12px; min-height: 72px; }
.km-mark { display: inline-flex; align-items: baseline; gap: 10px; text-decoration: none; margin-right: auto; }
.km-mark-en { font-family: var(--serif); font-weight: 700; font-size: 20px; letter-spacing: .16em; color: var(--gold-l); }
.km-mark-ko { font-size: 14px; color: #cbbfa6; font-weight: 600; }
.km-langs { display: flex; align-items: center; font-family: var(--sans); }
.km-langs a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 11px; font-size: 15px; text-decoration: none; color: #cfc8bb; border-radius: 4px; }
.km-langs a:hover { color: #fff; background: rgba(255, 255, 255, .08); }
.km-langs a[aria-current] { color: #fff; font-weight: 700; background: rgba(255, 255, 255, .1); }
.km-langd { display: none; position: relative; font-family: var(--sans); }
.km-langd summary { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 12px; font-size: 15px; font-weight: 700; cursor: pointer; list-style: none; background: rgba(255, 255, 255, .1); color: #fff; border-radius: 4px; white-space: nowrap; }
.km-langd summary::-webkit-details-marker { display: none; }
.km-langd ul { position: absolute; right: 0; top: calc(100% + 6px); background: #1c1d23; border-radius: 6px; box-shadow: 0 10px 30px rgba(0, 0, 0, .45); padding: 6px; min-width: 160px; z-index: 5; }
.km-langd a { display: flex; align-items: center; min-height: 44px; padding: 0 12px; text-decoration: none; font-size: 16px; border-radius: 4px; color: var(--ivory); }
.km-langd a[aria-current] { font-weight: 700; color: var(--gold); }
.km-19 { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 32px; height: 32px; border-radius: 50%; box-shadow: inset 0 0 0 1.5px var(--gold); color: var(--gold-l); font-size: 14px; font-weight: 700; }
.km-call { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 16px; background: var(--gold); color: var(--night); text-decoration: none; font-size: 15px; font-weight: 700; border-radius: 4px; margin-left: 4px; }
.km-call:hover { background: var(--gold-l); }
.km-head :focus-visible, .km-stage :focus-visible, .km-dock :focus-visible { outline-color: var(--gold-l); }
@media (max-width: 700px) {
  .km-langs { display: none; }
  .km-langd { display: block; }
}
@media (max-width: 430px) {
  .km-call span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .km-call { padding: 0 13px; margin-left: 0; }
  .km-mark-en { font-size: 17px; letter-spacing: .12em; }
  .km-mark-ko { display: none; }
}

/* shared opening bits (kept from T111) */
.km-kicker { font-size: 15px; color: var(--mute); letter-spacing: .02em; }
.km-lead { margin-top: 18px; max-width: 34em; color: var(--ink); }
.km-acts { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 24px; margin-top: 26px; }
.km-btn { display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 48px; padding: 0 22px; background: var(--gold); color: var(--night); text-decoration: none; font-weight: 700; font-size: 17px; border-radius: 4px; border: 0; }
.km-btn:hover { background: var(--gold-l); }
.km-go { color: var(--ink); font-weight: 600; text-decoration: underline; text-decoration-color: var(--acc); text-decoration-thickness: 2px; text-underline-offset: 5px; }
.km-g figcaption { font-size: 14px; color: var(--mute); margin-top: 8px; }

/* first screen (T119): full-bleed room photo, hanging label, tape-measure bar */
.km-stage { --m: max(24px, calc((100vw - 1200px) / 2 + 24px)); position: relative; isolation: isolate; height: calc(100vh - 72px); height: calc(100svh - 72px); min-height: 600px; max-height: 1180px; background: var(--night); color: var(--ivory); overflow: hidden; }
.km-stage-ph { position: absolute; inset: 0; z-index: 0; margin: 0; }
.km-stage-ph picture, .km-stage-ph img, .km-vid { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 60% 50%; }
.km-vid { display: block; }
.km-vctl { position: absolute; right: 16px; bottom: 130px; z-index: 2; min-height: 44px; padding: 0 18px; border: 0; border-radius: 999px; background: rgba(15, 16, 19, .82); color: var(--ivory); font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; }
.km-vctl:hover { background: rgba(40, 42, 50, .92); }
.km-vctl[hidden] { display: none; }
.km-aitag { position: absolute; right: 16px; bottom: 94px; z-index: 2; font-size: 12px; line-height: 1.3; padding: 4px 8px; background: rgba(15, 16, 19, .78); color: var(--ivory); }
.km-label-w { position: absolute; z-index: 1; left: var(--m); top: 0; width: clamp(460px, 36vw, 590px); filter: drop-shadow(0 26px 40px rgba(0, 0, 0, .5)); }
.km-label { position: relative; display: flex; flex-direction: column; align-items: center; padding: 30px 44px 92px; background: rgba(21, 22, 27, .95); clip-path: polygon(0 0, 100% 0, 100% 100%, 50% calc(100% - 58px), 0 100%); text-align: center; }
.km-label::before { content: ""; position: absolute; inset: 0 12px 70px; border: 1px dashed rgba(196, 64, 170, .75); border-top: 0; pointer-events: none; }
.km-btnobj { display: block; width: 64px; height: 64px; filter: drop-shadow(0 6px 10px rgba(0, 0, 0, .5)); }
.km-label-tag { margin-top: 12px; font-size: 13px; line-height: 1.3; letter-spacing: .32em; color: var(--gold); }
.km-sign { display: block; margin-top: 8px; color: inherit; text-decoration: none; }
.km-sign-en { display: block; white-space: nowrap; font: 700 clamp(46px, 3.9vw, 70px)/1 var(--serif); letter-spacing: .08em; margin-right: -.08em; color: #f8e9c4; text-shadow: 0 0 1px rgba(255, 246, 220, .9), 0 0 18px rgba(226, 194, 126, .55), 0 0 44px rgba(226, 194, 126, .28); }
.km-sign-rule { display: flex; align-items: center; justify-content: center; gap: 10px; margin-top: 14px; font-size: 16px; font-weight: 700; line-height: 1.3; color: var(--gold-l); }
.km-sign-rule i { width: 44px; height: 1px; background: var(--gold); }
.km-sign-rule b, .km-dia { width: 6px; height: 6px; background: var(--gold); transform: rotate(45deg); flex: none; }
.km-label .km-kicker { margin-top: 22px; font-size: 15px; color: #d9c79e; letter-spacing: .02em; }
.km-label .km-h1 { margin-top: 6px; font-family: var(--serif); font-weight: 700; font-size: clamp(42px, 3.5vw, 56px); line-height: 1.14; color: #fff; }
html:lang(en) .km-label .km-h1, html:lang(ja) .km-label .km-h1, html:lang(zh-Hans) .km-label .km-h1 { font-size: clamp(28px, 2.3vw, 36px); line-height: 1.22; }
.km-en { display: block; margin-top: 8px; font-family: var(--serif); font-size: 16px; letter-spacing: .06em; color: #cbbfa6; }
.km-fact1 { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 4px 12px; margin-top: 14px; font-size: 16px; font-weight: 600; color: var(--ivory); }
.km-label .km-lead { margin-top: 14px; max-width: 26em; font-size: 16px; line-height: 1.65; color: #d8d2c6; }

/* tape-measure bar */
.km-bar { position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; background-color: rgba(13, 14, 17, .92); background-image: linear-gradient(90deg, rgba(226, 194, 126, .85) 1px, transparent 1px), linear-gradient(90deg, rgba(226, 194, 126, .45) 1px, transparent 1px); background-size: 60px 12px, 12px 6px; background-repeat: repeat-x; background-position: 0 0, 0 0; box-shadow: inset 0 1px 0 rgba(226, 194, 126, .7); }
.km-bar-in { display: flex; align-items: center; gap: 16px 28px; padding: 16px var(--m) 12px; }
.km-strip { display: flex; align-items: baseline; flex-wrap: nowrap; flex: 1 1 auto; min-width: 0; }
.km-strip li { display: flex; align-items: baseline; gap: 9px; white-space: nowrap; padding: 0 18px; box-shadow: inset 1px 0 0 rgba(226, 194, 126, .35); }
.km-strip li:first-child { padding-left: 0; box-shadow: none; }
.km-st-k { font-size: 14px; font-weight: 700; color: var(--gold); }
.km-st-l { font-size: 17px; font-weight: 600; color: var(--ivory); font-variant-numeric: tabular-nums; }
.km-st-s { display: none; font-size: 15px; font-weight: 600; color: var(--ivory); }
.km-acts--bar { flex: none; margin-top: 0; gap: 10px; flex-wrap: nowrap; }
.km-acts--bar .km-btn--gold { display: none; }
.km-acts--label { justify-content: center; margin-top: 20px; }
.km-acts--label .km-btn--gold { min-width: 260px; }
.km-btn--gold { min-height: 54px; padding: 0 28px; background: var(--gold); color: var(--night); font-weight: 700; box-shadow: 0 10px 28px rgba(226, 194, 126, .32); }
.km-btn--gold:hover { background: var(--gold-l); }
.km-btn--ink { min-height: 54px; padding: 0 22px; background: rgba(255, 255, 255, .08); color: var(--ivory); box-shadow: inset 0 0 0 1px rgba(226, 194, 126, .65); }
.km-btn--ink:hover { background: rgba(255, 255, 255, .16); }
.km-dock { display: none; }
@media (min-width: 1600px) and (min-height: 980px) {
  /* long banner on big screens: the swallowtail drops below the wall screen, over the carpet */
  .km-label { min-height: 760px; justify-content: center; padding-top: 40px; }
  .km-label .km-kicker { margin-top: 28px; }
  .km-label .km-lead { margin-top: 20px; }
}
@media (max-height: 800px) and (min-width: 701px) {
  .km-label .km-lead { display: none; }
  .km-label { padding-top: 22px; padding-bottom: 66px; }
  .km-label .km-kicker { margin-top: 16px; }
}
@media (max-width: 1240px) {
  .km-st-l { display: none; }
  .km-st-s { display: inline; }
}
@media (max-width: 1100px) and (min-width: 701px) {
  .km-bar-in { flex-direction: column; align-items: stretch; gap: 12px; padding-top: 18px; }
  .km-acts--bar { order: -1; }
  .km-acts--bar .km-btn { flex: 1 1 0; justify-content: center; }
  .km-aitag { bottom: 160px; }
  .km-label-w { width: min(440px, calc(100vw - 2 * var(--m))); }
}

/* opening: tape measure + index under the first screen */
.km-tapebar { padding-top: 40px; padding-bottom: 28px; background-color: var(--bg); background-image: linear-gradient(90deg, rgba(244, 239, 230, .035) 1px, transparent 1px); background-size: 26px 100%; }
.km-tapebar .km-tape { margin-top: 0; }

/* tape measure */
.km-tape { margin-top: 36px; background: var(--paper); padding: 20px 24px 18px; border-radius: 4px; }
.km-tape-h { font-family: var(--serif); font-size: 19px; }
.km-tape-scale, .km-tape-rows li { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr) 17.5rem; gap: 0 18px; align-items: center; }
.km-tape-scale { margin-top: 12px; }
.km-tape-ticks { position: relative; height: 30px; background: linear-gradient(90deg, var(--tick) 1px, transparent 1px) 0 100% / calc(100% / 22) 8px repeat-x; }
.km-tape-ticks span { position: absolute; top: 0; font-size: 14px; line-height: 1; color: var(--mute); transform: translateX(-50%); font-variant-numeric: tabular-nums; }
.km-tape-ticks span:first-child { transform: none; }
.km-tape-ticks span:last-child { transform: translateX(-100%); }
.km-tape-rows li { padding: 8px 0; }
.km-tape-d { font-size: 16px; font-weight: 600; }
.km-tape-track { position: relative; display: block; height: 22px; background: var(--tape); border-radius: 2px; }
.km-tape-track i { position: absolute; height: 9px; border-radius: 1px; }
.km-tape-track i.p1 { top: 0; background: var(--acc); }
.km-tape-track i.p2 { bottom: 0; background: var(--ink); }
.km-tape-t { display: flex; flex-wrap: wrap; gap: 0 16px; font-size: 16px; font-variant-numeric: tabular-nums; }
.km-tape-t > span { white-space: nowrap; }
.km-tape-ticks span { white-space: nowrap; }
.km-tape-t b { font-weight: 600; color: var(--mute); }
.km-tape-rows li.is-today .km-tape-d { color: var(--acc); }
.km-tag-today { display: inline-block; margin-left: 6px; font-size: 13px; font-weight: 700; color: #15161b; background: var(--acc); padding: 0 6px; border-radius: 3px; vertical-align: 2px; }
.km-tape-note { margin-top: 8px; font-size: 16px; color: var(--mute); }
.km-index { margin-top: 26px; }
.km-index ul { display: flex; flex-wrap: wrap; gap: 4px 2px; }
.km-index a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 12px; font-size: 16px; text-decoration: none; color: var(--ink); border-radius: 4px; }
.km-index a:hover { background: var(--paper); color: var(--acc); }
.km-index li + li::before { content: "·"; color: var(--acc); margin-right: 2px; }
.km-index li { display: inline-flex; align-items: center; }

/* number band */
.km-nums { background: var(--char); color: var(--on-char); padding-top: 56px; padding-bottom: 56px; }
.km-nums-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px 32px; }
.km-nums-grid div { display: flex; flex-direction: column-reverse; gap: 6px; }
.km-nums-grid dt { font-size: 16px; color: var(--on-char-mute); }
.km-num-v { font-family: var(--serif); font-size: 80px; line-height: 1; color: #f8e9c4; font-variant-numeric: lining-nums tabular-nums; }
.km-nums-grid div:nth-child(-n+2) .km-num-v { color: var(--acc-lt); }

/* price key line */
.km-price-key { font-family: var(--serif); font-size: 40px; line-height: 1.25; max-width: 20em; }
.km-price-call { margin-top: 20px; margin-bottom: 36px; }

/* sections */
.km-sec { padding-top: 84px; padding-bottom: 84px; }
.km-sec--paper { background: var(--paper); }
.km-sec--char { background: var(--char); color: var(--on-char); }
.km-sh { margin-bottom: 36px; }
.km-sh-row { display: flex; align-items: center; gap: 18px; }
.km-h2 { font-family: var(--serif); font-size: 34px; line-height: 1.25; flex: none; max-width: 75%; color: #f8e9c4; }
.km-stitch { flex: 1 1 auto; min-width: 24px; height: 2px; background: linear-gradient(90deg, var(--acc) 55%, transparent 55%) 0 0 / 13px 2px repeat-x; }
.km-sec--char .km-stitch { background: linear-gradient(90deg, var(--acc-lt) 55%, transparent 55%) 0 0 / 13px 2px repeat-x; }
.km-sh-lab { flex: none; font-size: 15px; color: #e2c27e; letter-spacing: .04em; font-family: var(--serif); padding: 5px 20px 5px 12px; background: rgba(226, 194, 126, .12); clip-path: polygon(0 0, 100% 0, calc(100% - 9px) 50%, 100% 100%, 0 100%); }
.km-sec--char .km-sh-lab { color: #e2c27e; }
.km-sh-sub { margin-top: 12px; max-width: 46em; color: var(--mute); }
.km-sec--char .km-sh-sub { color: var(--on-char-mute); }
.km-h3 { font-family: var(--serif); font-size: 23px; line-height: 1.35; margin: 40px 0 16px; }
.km-note { margin-top: 18px; font-size: 16px; color: var(--mute); max-width: 52em; }
.km-sec--char .km-note { color: var(--on-char-mute); }
.km-tx { color: var(--acc); font-weight: 600; text-underline-offset: 3px; }

/* details chart */
.km-chart { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; }
.km-chart div { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr); gap: 16px; padding: 14px 16px; }
.km-chart div:nth-child(4n+1), .km-chart div:nth-child(4n+2) { background: var(--bg); }
.km-chart dt { font-size: 16px; color: var(--mute); }
.km-chart dd { font-size: 17px; }

/* price tags */
.km-tags { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.km-tags li { position: relative; background: var(--paper); padding: 22px 20px 22px 42px; clip-path: polygon(18px 0, 100% 0, 100% 100%, 18px 100%, 0 50%); display: flex; flex-direction: column; gap: 4px; }
.km-tags li::before { content: ""; position: absolute; left: 20px; top: 50%; width: 10px; height: 10px; margin-top: -5px; border-radius: 50%; background: var(--bg); }
.km-tag-l { font-size: 16px; font-weight: 600; }
.km-tag-v { font-family: var(--serif); font-size: 19px; color: #e2c27e; line-height: 1.3; }
.km-tag-s { font-size: 15px; color: var(--mute); }
.km-setrow { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 32px; align-items: start; margin-top: 44px; }
.km-setrow .km-h3 { margin: 0; }
.km-set { counter-reset: s; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.km-set li { counter-increment: s; background: var(--paper); padding: 14px 14px 16px; font-size: 16px; }
.km-set li::before { content: counter(s); display: block; font-family: var(--serif); font-size: 22px; color: #e2c27e; line-height: 1.2; margin-bottom: 4px; }

/* menu */
.km-menu-top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 56px; }
.km-menu-top .km-h3:first-child { margin-top: 0; }
.km-wh th, .km-wh td, .km-mt th, .km-mt td { padding: 8px 10px; font-size: 16px; vertical-align: top; }
.km-wh thead th, .km-mt thead th { font-size: 14px; color: var(--on-char-mute); }
.km-wh td { color: var(--on-char-mute); white-space: nowrap; }
.km-wh tbody tr:nth-child(odd), .km-mt tbody tr:nth-child(odd) { background: var(--char-2); }
.km-mt .n { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.km-mt .ko { display: block; font-size: 14px; color: var(--on-char-mute); }
.km-food { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 32px; }
.km-food h4 { font-family: var(--serif); font-size: 20px; color: var(--acc-lt); margin: 8px 0 8px; }
.km-tc { max-width: 420px; }

/* hours */
.km-hrs th, .km-hrs td { padding: 13px 14px; font-size: 17px; font-variant-numeric: tabular-nums; vertical-align: middle; }
.km-hrs thead th { font-size: 15px; color: var(--mute); }
.km-hrs tbody tr:nth-child(odd) { background: var(--bg); }
.km-hrs .km-hrs-line { width: 38%; }
.km-hrs .km-off { color: var(--mute); }
.km-hrs tr.is-today th, .km-hrs tr.is-today td { font-weight: 700; }
.km-hrs tr.is-today th { color: var(--acc); }
.km-hnotes { margin-top: 22px; display: grid; gap: 6px; }
.km-hnotes li { font-size: 16px; color: var(--mute); padding-left: 18px; position: relative; }
.km-hnotes li::before { content: "–"; position: absolute; left: 0; color: var(--acc); }

/* guide */
.km-guide { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 48px; }
.km-guide li { position: relative; padding: 18px 0 18px 30px; }
.km-guide li::before { content: ""; position: absolute; left: 2px; top: 28px; width: 10px; height: 10px; background: #e2c27e; transform: rotate(45deg); }
.km-guide b { display: block; font-family: var(--serif); font-weight: 400; font-size: 21px; margin-bottom: 4px; }

/* reserve */
.km-res { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 56px; align-items: start; }
.km-steps { counter-reset: st; display: grid; gap: 22px; }
.km-steps li { counter-increment: st; display: grid; grid-template-columns: 3.4rem minmax(0, 1fr); column-gap: 8px; }
.km-steps li::before { content: counter(st, decimal-leading-zero); grid-row: span 2; font-family: var(--serif); font-size: 30px; line-height: 1.1; color: #e2c27e; }
.km-steps h3 { font-size: 19px; font-weight: 700; }
.km-res-side { position: relative; background: var(--bg); padding: 28px 28px 30px; border-radius: 4px; box-shadow: inset 0 0 0 1px rgba(226, 194, 126, .28); }
.km-res-l { display: block; font-size: 15px; color: var(--mute); }
.km-tel { display: block; font-family: var(--serif); font-size: 30px; line-height: 1.3; margin: 4px 0 16px; text-decoration: none; color: #f8e9c4; white-space: nowrap; }
.km-res-side .km-h3 { margin-top: 28px; font-size: 20px; }
.km-check { display: grid; gap: 6px; }
.km-check li { padding-left: 26px; position: relative; font-size: 16px; }
.km-check li::before { content: ""; position: absolute; left: 2px; top: .62em; width: 12px; height: 7px; border-radius: 1px; background: var(--acc); clip-path: polygon(0 40%, 18% 30%, 38% 62%, 82% 0, 100% 12%, 38% 100%); }

/* about + gallery */
.km-prose { max-width: 44em; }
.km-prose p { line-height: 1.9; margin-bottom: 1.1em; }
.km-gal-h { margin-top: 48px; margin-bottom: 4px; }
.km-gal-sub { color: var(--mute); font-size: 16px; }
.km-gal { display: grid; grid-template-columns: 1.5fr 1fr 1.33fr; gap: 20px; margin-top: 20px; align-items: start; }
.km-g { margin: 0; }
.km-g img { width: 100%; height: 420px; object-fit: cover; border-radius: 3px; }

/* faq */
.km-faq { display: grid; gap: 8px; max-width: 920px; }
.km-q { background: var(--bg); border-radius: 4px; }
.km-q summary { position: relative; cursor: pointer; list-style: none; padding: 17px 20px 17px 50px; font-weight: 600; font-size: 17px; }
.km-q summary::-webkit-details-marker { display: none; }
.km-q summary::before { content: "+"; position: absolute; left: 20px; top: 13px; font-family: var(--serif); font-size: 24px; line-height: 1.2; color: var(--acc); }
.km-q[open] summary::before { content: "−"; }
.km-q-a { padding: 0 20px 20px 50px; color: var(--ink); }

/* location */
.km-loc { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; align-items: start; }
.km-addr-l { display: block; font-size: 15px; color: var(--mute); }
.km-addr-v { font-family: var(--serif); font-size: 25px; line-height: 1.4; margin-top: 4px; }
.km-copy { min-height: 48px; padding: 0 18px; background: var(--paper); color: var(--ink); font: inherit; font-weight: 600; border: 0; border-radius: 4px; cursor: pointer; }
.km-copy:hover { color: var(--acc); }
.km-ways { display: grid; gap: 14px; }
.km-ways li { background: var(--paper); padding: 16px 20px; border-radius: 4px; }
.km-ways b { display: block; font-size: 17px; }

/* sister sites */
.km-sites { background: var(--bg); padding-top: 40px; padding-bottom: 40px; }
.km-sites h2 { font-family: var(--serif); font-size: 21px; margin-bottom: 12px; }
.km-sites ul { display: flex; flex-wrap: wrap; gap: 8px 22px; }
.km-sites a { color: var(--ink); text-decoration-color: var(--acc); text-underline-offset: 4px; }

/* footer */
.km-foot { background: var(--char); color: var(--on-char); padding-top: 56px; padding-bottom: 40px; }
.km-foot p { font-size: 16px; color: var(--on-char-mute); }
.km-foot a { color: var(--on-char); }
.km-foot-grid { display: grid; grid-template-columns: 1.3fr 1fr 1.2fr; gap: 36px; }
.km-foot-name { font-family: var(--serif); font-size: 21px; color: var(--on-char) !important; margin-bottom: 6px; }
.km-foot nav ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px 16px; }
.km-foot nav a { display: inline-flex; min-height: 36px; align-items: center; text-decoration: none; font-size: 16px; }
.km-foot nav a:hover { color: var(--acc-lt); }
.km-fine { margin-top: 36px; }
.km-prov { margin-top: 20px; background: var(--char-2); padding: 18px 20px; border-radius: 4px; }
.km-prov p { color: var(--on-char); }
.km-prov-links { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-top: 6px; }
.km-prov-links a { font-size: 16px; text-underline-offset: 3px; }
.km-prov details { margin-top: 10px; }
.km-prov summary { cursor: pointer; font-size: 16px; color: var(--on-char-mute); }
.km-prov dl { margin-top: 10px; display: grid; gap: 8px; }
.km-prov dt { font-size: 15px; color: var(--on-char-mute); }
.km-prov dd { font-size: 15px; word-break: break-all; }
.km-prov dd ul { display: grid; gap: 2px; }

/* 404 */
.km-nf { padding-top: 96px; padding-bottom: 96px; min-height: 70vh; }
.km-nf-code { font-family: var(--serif); font-size: 40px; color: var(--acc); }
.km-nf-h1 { font-family: var(--serif); font-size: 36px; margin: 8px 0 12px; }
.km-nf p { max-width: 40em; margin-top: 12px; }

/* tablet */
@media (max-width: 1080px) {
  .km-tags { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .km-set { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .km-setrow { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .km-menu-top { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .km-tape-scale, .km-tape-rows li { grid-template-columns: 5.5rem minmax(0, 1fr) 15.5rem; }
  .km-num-v { font-size: 64px; }
  .km-g img { height: 340px; }
}
@media (max-width: 900px) {
  .km-nums-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .km-price-key { font-size: 32px; }
  .km-chart { grid-template-columns: minmax(0, 1fr); }
  .km-chart div:nth-child(4n+1), .km-chart div:nth-child(4n+2) { background: transparent; }
  .km-chart div:nth-child(odd) { background: var(--bg); }
  .km-res, .km-loc { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .km-foot-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .km-tape-scale, .km-tape-rows li { grid-template-columns: 4.5rem minmax(0, 1fr); }
  .km-tape-scale .km-tape-gap2 { display: none; }
  .km-tape-rows li .km-tape-t { grid-column: 2; margin-top: 4px; }
}
/* mobile */
@media (max-width: 699px) {
  body { font-size: 17px; }
  .km-head-row { min-height: 64px; gap: 8px; }
  .km-nums { padding-top: 40px; padding-bottom: 40px; }
  .km-num-v { font-size: 48px; }
  .km-price-key { font-size: 27px; }
  .km-lead { margin-top: 14px; }
  .km-acts { margin-top: 20px; }
  .km-tape { padding: 16px 16px 14px; }
  .km-tape-ticks span.mn { display: none; }
  .km-sec { padding-top: 60px; padding-bottom: 60px; }
  .km-h2 { font-size: 27px; }
  .km-sh-row { gap: 12px; }
  .km-sh-lab { display: none; }
  .km-chart div { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .km-tags { grid-template-columns: minmax(0, 1fr); }
  .km-set { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .km-set li { display: flex; align-items: baseline; gap: 14px; padding: 12px 14px; }
  .km-set li::before { margin-bottom: 0; flex: none; }
  .km-food { grid-template-columns: minmax(0, 1fr); }
  .km-hrs .km-hrs-line { display: none; }
  .km-hrs th, .km-hrs td { padding: 12px 8px; font-size: 16px; }
  .km-guide { grid-template-columns: minmax(0, 1fr); }
  .km-gal { grid-template-columns: minmax(0, 1fr); }
  .km-g img { height: 280px; }
  .km-foot-grid { grid-template-columns: minmax(0, 1fr); }
  .km-tel { font-size: 26px; }
  .km-res-side { padding: 22px 20px; }
  .km-addr-v { font-size: 22px; }
  /* T119 first screen, phone */
  .km-head-row { min-height: 64px; }
  .km-stage { height: calc(100vh - 64px); height: calc(100svh - 64px); min-height: 540px; }
  .km-stage-ph picture, .km-stage-ph img, .km-vid { object-position: 50% 50%; }
  .km-aitag { right: 10px; top: 10px; bottom: auto; font-size: 11px; }
  .km-label-w { left: 14px; width: min(318px, calc(100% - 28px)); filter: drop-shadow(0 14px 22px rgba(0, 0, 0, .5)); }
  .km-label { padding: 14px 22px 46px; clip-path: polygon(0 0, 100% 0, 100% 100%, 50% calc(100% - 26px), 0 100%); }
  .km-label::before { inset: 0 8px 32px; }
  .km-btnobj { width: 34px; height: 34px; }
  .km-label-tag, .km-label .km-kicker, .km-en, .km-label .km-lead { display: none; }
  .km-sign { margin-top: 6px; }
  .km-sign-en { font-size: clamp(30px, 9vw, 38px); }
  .km-sign-rule { margin-top: 8px; font-size: 15px; }
  .km-sign-rule i { width: 26px; }
  .km-label .km-h1 { margin-top: 10px; font-size: clamp(25px, 7.4vw, 30px); }
  html:lang(en) .km-label .km-h1, html:lang(ja) .km-label .km-h1, html:lang(zh-Hans) .km-label .km-h1 { font-size: clamp(18px, 5vw, 21px); }
  .km-fact1 { margin-top: 8px; gap: 2px 9px; }
  .km-bar { background-size: 48px 10px, 12px 5px; }
  .km-bar-in { flex-direction: column; align-items: stretch; gap: 8px; padding: 14px 14px 10px; }
  .km-acts--bar { order: -1; }
  .km-acts--bar .km-btn--gold { display: flex; width: 100%; min-height: 54px; font-size: 17px; }
  .km-acts--label { display: none; }
  .km-acts--bar .km-btn--ink { display: none; }
  .km-strip { justify-content: center; }
  .km-strip li { padding: 0 11px; }
  .km-st-k { display: none; }
  .km-dock { position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 8px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); background: rgba(15, 16, 19, .96); box-shadow: inset 0 1px 0 rgba(226, 194, 126, .6); transform: translateY(110%); transition: transform .25s; }
  .km-dock .km-btn { min-height: 50px; padding: 0 10px; font-size: 16px; }
  .km-past .km-dock { transform: none; }
  .km-foot { padding-bottom: 96px; }
}
@media (max-width: 359px) {
  .km-strip li { padding: 0 7px; }
  .km-st-s { font-size: 14px; }
  .km-set { grid-template-columns: minmax(0, 1fr); }
  .km-num-v { font-size: 40px; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .km-dock { transition: none; } .km-vid, .km-vctl { display: none !important; } }
