@charset "UTF-8";
/* te no Wa Reborn — 下層ページ。style.css（TOP）の上に重ねる */

/* ------------------------------------------------ メニューごとの色（空・水・アクセント）
   空と水の 3D の色は sub.js の COLORS。ここはそれと同じ色相の、文字・ボタン・地の色 */
:root, [data-theme="sky"] {
  --sky-a: #a9c9e8; --sky-b: #ddd8f0; --sky-c: #b9c3df; --sky-d: #8d9ac0;
  --soft: rgba(229, 149, 163, 0.16);
  --tint: #eef0f8;
}
[data-theme="facial"] {
  --pink: #e595a3; --pink-deep: #b8506e; --orange: #f4c39b; --orange-soft: #fbdfe2;
  --sky-a: #eeb4c8; --sky-b: #fbdfe3; --sky-c: #e9bccb; --sky-d: #b98098;
  --soft: rgba(229, 149, 163, 0.18); --tint: #fbeef1;
  --btn-grad: linear-gradient(120deg, #b04a66, #c25a72 40%, #d27a6c 72%, #e6a46e);
  --btn-grad-hover: linear-gradient(120deg, #e6a46e, #d27a6c 28%, #c25a72 60%, #a94462);
}
[data-theme="korugi"] {
  --pink: #a98fe0; --pink-deep: #6c4cae; --orange: #d7c6f2; --orange-soft: #e8dff8;
  --sky-a: #b3a2e2; --sky-b: #e4daf6; --sky-c: #c2b6e4; --sky-d: #8678b4;
  --soft: rgba(150, 120, 215, 0.17); --tint: #f1edfa;
  --btn-grad: linear-gradient(120deg, #6444a8, #7655b8 40%, #8e62bb 72%, #c58fc2);
  --btn-grad-hover: linear-gradient(120deg, #c58fc2, #8e62bb 28%, #7655b8 60%, #5d3f9f);
}
[data-theme="wedding"] { /* 2026-11-10: ティファニーブルー系。色相を青寄り（183°）に、明るい端は #0abab5。白文字が乗る中央は 3.8 以上 */
  --pink: #3fc4bf; --pink-deep: #097a80; --orange: #c4ecea; --orange-soft: #def5f4;
  --sky-a: #8fdcd8; --sky-b: #e0f6f5; --sky-c: #ade3e0; --sky-d: #5fb3b1;
  --soft: rgba(10, 186, 181, 0.16); --tint: #ebf8f8;
  --btn-grad: linear-gradient(120deg, #097a80, #0b8a8d 40%, #0e9196 72%, #0abab5);
  --btn-grad-hover: linear-gradient(120deg, #0abab5, #0e9196 28%, #0b8a8d 60%, #086f75);
}
[data-theme="body"] {
  --pink: #eda877; --pink-deep: #a95a24; --orange: #f7d2ab; --orange-soft: #fce6cf;
  --sky-a: #f8b888; --sky-b: #ffe0be; --sky-c: #f3c29c; --sky-d: #c98b62;
  --soft: rgba(235, 160, 100, 0.18); --tint: #fdf2e6;
  --btn-grad: linear-gradient(120deg, #a7562a, #b86332 40%, #c9793f 72%, #e6a86e);
  --btn-grad-hover: linear-gradient(120deg, #e6a86e, #c9793f 28%, #b86332 60%, #9c4e24);
}
[data-theme="men"] { /* 2026-11-10: ブライダルと色を入れ替え（メンズ＝青） */
  --pink: #8fbde2; --pink-deep: #3a6f9e; --orange: #cfe3f3; --orange-soft: #e0eef8;
  --sky-a: #a6d0ee; --sky-b: #e3f0fa; --sky-c: #b7d3ea; --sky-d: #7ea1c2;
  --soft: rgba(110, 170, 220, 0.17); --tint: #edf5fb;
  --btn-grad: linear-gradient(120deg, #356b9c, #4379aa 40%, #5a8db6 72%, #94bdd0);
  --btn-grad-hover: linear-gradient(120deg, #94bdd0, #5a8db6 28%, #4379aa 60%, #2f6392);
}

/* ------------------------------------------------ 空（3D が出るまで、または出せない環境） */
body.sub { background: var(--tint); }
.sky { position: fixed; inset: 0; z-index: -1; background: linear-gradient(180deg, var(--sky-a) 0%, var(--sky-b) 74%, var(--sky-b) 78%, var(--sky-c) 79%, var(--sky-d) 100%); }
.sub .stage { opacity: 0; transition: opacity 1.4s var(--ease); }
.is-stage .sub .stage { opacity: 1; }
.sub main { z-index: 2; }
.sub .footer { z-index: 3; }

/* ページの移り変わり（対応ブラウザだけ） */
@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: 0.45s; animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }

/* ------------------------------------------------ 現れる（JS があるときだけ隠す） */
.js .rv { opacity: 0; translate: 0 22px; transition: opacity 0.9s var(--ease) var(--d, 0ms), translate 1.1s var(--ease) var(--d, 0ms); }
.js .rv.in { opacity: 1; translate: 0 0; }

/* ------------------------------------------------ 冒頭 */
.kv { position: relative; min-height: 100svh; padding: 118px var(--gutter) 40px; display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); gap: clamp(24px, 5vw, 88px); align-items: center; }
.kv__text { position: relative; z-index: 2; max-width: 640px; padding-bottom: 8svh; }
.crumbs { margin-bottom: 22px; }
.crumbs ol { display: flex; flex-wrap: wrap; gap: 2px 10px; font-size: 12.5px; color: var(--ink); }
.crumbs li + li::before { content: '\203A'; margin-right: 10px; color: var(--muted); }
.crumbs a { text-decoration: none; }
.crumbs a:hover { color: var(--pink-deep); text-decoration: underline; text-underline-offset: 3px; }
.kv__en { font-family: var(--f-latin); font-size: clamp(16px, 1.5vw, 20px); letter-spacing: 0.1em; color: var(--pink-deep); margin-bottom: 10px; font-weight: 500; }
.kv__title { font-family: var(--f-serif); font-weight: 500; font-size: clamp(34px, 4.4vw, 64px); line-height: 1.34; letter-spacing: 0.03em; color: var(--ink-deep); margin-bottom: 26px; text-shadow: 0 0 34px rgba(255, 255, 255, 0.75); }
.kv__title .ch { display: inline-block; }
.js .kv__title .ch { opacity: 0; translate: 0 0.5em; }
.js:not(.is-split) .kv__title { visibility: hidden; animation: kv-title-safety 0s 2.5s forwards; } @keyframes kv-title-safety { to { visibility: visible; } } /* JS が読めなかったときも 2.5 秒で出す */ /* 11/14 1 文字ずつに分けるまで隠す（2 回浮き上がって見えないように） */
.is-in .kv__title .ch { opacity: 1; translate: 0 0; transition: opacity 0.9s var(--ease) calc(var(--i) * 28ms), translate 1.1s var(--ease) calc(var(--i) * 28ms); }

/* 概要。AI にも人にも最初に読まれる 2〜3 行 */
.answer { position: relative; padding: 20px 24px; border-radius: 20px; background: rgba(255, 255, 255, 0.76); border: 1px solid rgba(255, 255, 255, 0.8); backdrop-filter: blur(12px) saturate(1.1); -webkit-backdrop-filter: blur(12px) saturate(1.1); box-shadow: 0 24px 60px -44px rgba(90, 55, 45, 0.6); }
.answer p { font-size: clamp(15px, 1.15vw, 16.5px); line-height: 1.95; color: var(--ink-deep); }

.facts { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 1px; margin-top: 16px; border-radius: 18px; overflow: hidden; background: var(--line); border: 1px solid var(--line); }
.facts > div { padding: 12px 16px; background: rgba(255, 255, 255, 0.72); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
.facts dt { font-size: 13px; letter-spacing: 0.08em; color: var(--muted); line-height: 1.5; margin-bottom: 4px; }
.facts dd { margin: 0; font-size: 15.5px; line-height: 1.6; color: var(--ink-deep); }
.facts b { font-family: var(--f-num); font-weight: 600; font-size: 1.32em; letter-spacing: 0.01em; color: var(--pink-deep); }
.facts a { color: var(--pink-deep); }
.facts a[href^="tel:"] { font-family: var(--f-num); font-weight: 600; font-size: 1.3em; letter-spacing: 0.02em; }
.kv__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
.kv__cue { position: absolute; left: 50%; bottom: 18px; translate: -50% 0; display: grid; justify-items: center; gap: 8px; font-family: var(--f-latin); font-size: 11px; letter-spacing: 0.3em; color: var(--ink); z-index: 3; }
.kv__cue i { width: 1px; height: 34px; background: linear-gradient(var(--ink), transparent); animation: cue 2.4s var(--ease) infinite; transform-origin: top; }

/* 写真の窓: 足元を 3D の水平線（画面の 78%）に合わせて立たせ、下へ映り込む */
.arch { position: absolute; z-index: 1; right: clamp(24px, 7vw, 120px); bottom: 22svh; height: min(66svh, 46vw * 1.34); aspect-ratio: 3 / 4.1; margin: 0; }
.arch__win { position: absolute; inset: 0; border-radius: 999px 999px 0 0; overflow: hidden; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 9px rgba(255, 255, 255, 0.22), 0 50px 90px -50px rgba(70, 45, 60, 0.55); background: var(--tint); }
.arch__win img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 42%; transform: scale(1.12); transition: transform 1.6s var(--ease); }
.arch__mirror { position: absolute; left: 0; right: 0; top: 100%; height: 34svh; overflow: hidden; pointer-events: none; -webkit-mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.5), transparent 92%); mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.5), transparent 92%); }
.arch__mirror img { position: absolute; left: 0; top: 0; width: 100%; height: calc(100% * (66 / 34)); object-fit: cover; object-position: 50% 42%; transform: scaleY(-1) scaleX(1.02); transform-origin: 50% 50%; filter: blur(2.5px) saturate(0.92); }

/* 写真のないページの冒頭 */
.kv--compact { min-height: 0; grid-template-columns: minmax(0, 1fr); padding-top: 132px; padding-bottom: 28px; }
.kv--compact .kv__text { max-width: 840px; margin-inline: auto; width: 100%; padding-bottom: 0; }
.kv--compact .kv__title { font-size: clamp(30px, 3.6vw, 52px); }
.kv--with-round { grid-template-columns: minmax(0, 1fr) minmax(0, 340px); max-width: 1200px; margin-inline: auto; }
.kv--with-round .kv__text { margin-inline: 0; }
.kv__round { border-radius: 50%; overflow: hidden; aspect-ratio: 1; box-shadow: 0 0 0 1px #fff, 0 0 0 9px rgba(255, 255, 255, 0.3), 0 40px 80px -40px rgba(70, 45, 60, 0.55); }
.kv__round img { width: 100%; height: 100%; object-fit: cover; filter: contrast(0.86) saturate(0.88) brightness(1.04); }

/* ------------------------------------------------ セクション */
.sec { position: relative; padding: clamp(14px, 2vh, 22px) var(--gutter); }
.sec__panel, .sec__bare { width: min(1180px, 100%); margin-inline: auto; }
.sec__panel { background: rgba(255, 255, 255, 0.78); }
.sec__bare { padding-block: clamp(20px, 3.2vh, 36px); }
.sec__h { margin-bottom: clamp(40px, calc(3vh + 20px), 52px); max-width: 44em; }
.sec__title { font-family: var(--f-serif); font-weight: 500; font-size: clamp(22px, 2.3vw, 32px); line-height: 1.55; letter-spacing: 0.06em; color: var(--ink-deep); }
.sec__bare .sec__title { text-shadow: 0 0 26px rgba(255, 255, 255, 0.9); }
.sec__lead { margin-top: 22px; font-size: 14.5px; line-height: 1.95; }
.sec__bare .sec__lead, .sec__bare .kicker span { color: var(--ink-deep); }
.sec__bare .kicker { text-shadow: 0 0 18px rgba(255, 255, 255, 0.9); }
.prose { max-width: 46em; font-size: 15px; line-height: 2.05; }
.prose + .prose { margin-top: 20px; }
.prose a { color: var(--pink-deep); }
.sub-h { font-family: var(--f-serif); font-weight: 500; font-size: 18px; letter-spacing: 0.08em; color: var(--ink-deep); margin: 26px 0 12px; }
.sm { font-size: 12.5px; color: var(--muted); line-height: 1.8; }
.dots li { position: relative; padding-left: 1.2em; font-size: 14px; line-height: 1.9; }
.dots li + li { margin-top: 4px; }
.dots li::before { content: ''; position: absolute; left: 0; top: 0.75em; width: 6px; height: 6px; border-radius: 50%; background: var(--pink); }
.prose + .dots, .dots + .prose { margin-top: 16px; }
.note { margin-top: 16px; }
.tags { display: flex; flex-wrap: wrap; gap: 6px; }
.tags li { font-size: 12.5px; line-height: 1.6; padding: 3px 12px; border-radius: 999px; background: var(--orange-soft); color: var(--ink-deep); }

/* ------------------------------------------------ 料金カード */
.plans { display: grid; gap: 16px; }
.plans--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.plans--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.plan { position: relative; display: grid; gap: 18px; align-content: start; padding: clamp(22px, 2.4vw, 32px); border-radius: var(--radius); background: rgba(255, 255, 255, 0.82); border: 1px solid rgba(255, 255, 255, 0.9); backdrop-filter: blur(14px) saturate(1.1); -webkit-backdrop-filter: blur(14px) saturate(1.1); box-shadow: 0 30px 70px -48px rgba(90, 55, 45, 0.55); }
.plans--one .plan { grid-template-columns: minmax(0, 1fr); padding: clamp(20px, 2.2vw, 30px); background: rgba(255, 255, 255, 0.72); box-shadow: none; }
.plans--one .plan:has(.plan__img) { grid-template-columns: 200px minmax(0, 1fr); gap: 28px; }
.plan__img { border-radius: 18px; overflow: hidden; aspect-ratio: 4 / 3; }
.plan__img img { width: 100%; height: 100%; object-fit: cover; }
.plan__img--round { border-radius: 50%; aspect-ratio: 1; width: min(76%, 200px); margin-inline: auto; }
.plan__img--round img { filter: contrast(0.86) saturate(0.88) brightness(1.04); }
.plan__en { font-family: var(--f-latin); font-size: 17px; font-weight: 500; color: var(--pink-deep); line-height: 1.3; }
.plan__name { font-family: var(--f-serif); font-weight: 500; font-size: 22px; letter-spacing: 0.06em; color: var(--ink-deep); line-height: 1.5; margin: 2px 0 10px; }
.plan__prices { display: grid; gap: 6px; margin-bottom: 14px; }
.plan__prices li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 14px; }
.plan__min { font-family: var(--f-num); font-size: 26px; font-weight: 500; color: var(--ink-deep); font-variant-numeric: tabular-nums; }
.plan__min small { font-family: var(--f-sans); font-size: 12px; margin-left: 2px; color: var(--muted); }
.plan__yen { font-family: var(--f-num); font-size: 32px; font-weight: 600; letter-spacing: 0.01em; color: var(--pink-deep); font-variant-numeric: tabular-nums; line-height: 1.25; }
.plan__yen small { font-family: var(--f-sans); font-size: 11px; font-weight: 400; color: var(--muted); margin-left: 4px; letter-spacing: 0.06em; }
.plan__note { flex-basis: 100%; font-size: 12.5px; line-height: 1.7; color: var(--muted); }
.plan__desc { font-size: 14px; line-height: 1.95; }
.plan__inc { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.plan__inc h4 { font-family: var(--f-serif); font-weight: 500; font-size: 13px; letter-spacing: 0.1em; color: var(--muted); margin-bottom: 8px; }
.plan__inc > ul:not(.tags) { display: grid; gap: 2px; }
.plan__inc > ul:not(.tags) li { position: relative; padding-left: 1.1em; font-size: 13.5px; line-height: 1.8; }
.plan__inc > ul:not(.tags) li::before { content: ''; position: absolute; left: 0; top: 0.72em; width: 5px; height: 5px; border-radius: 50%; background: var(--pink); }
.plan .link { margin-top: 16px; justify-self: end; }

/* 表（料金・会社情報）。折り返しても読めるように、スマホでは行を縦に積む */
.tbl { width: 100%; }
.tbl table { width: 100%; border-collapse: collapse; font-size: 14px; }
.tbl th, .tbl td { padding: 13px 14px 13px 0; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; line-height: 1.8; font-weight: 400; }
.tbl tbody th { font-family: var(--f-serif); font-weight: 500; color: var(--ink-deep); width: 13em; }
.tbl thead th { font-size: 12px; letter-spacing: 0.08em; color: var(--muted); padding-block: 0 8px; }
.tbl b { font-family: var(--f-num); font-weight: 600; font-size: 1.5em; line-height: 1.3; letter-spacing: 0.02em; color: var(--pink-deep); } /* 11/14 金額を 1.2→1.5 倍（会員特典のフリーパス・回数券） */
.tbl a { color: var(--pink-deep); }
.tbl--price .num { white-space: nowrap; font-family: var(--f-num); font-weight: 500; font-size: 16px; font-variant-numeric: tabular-nums; }
.tbl--price .price { font-size: 19px; font-weight: 600; color: var(--pink-deep); }
.tbl--price .sm { color: var(--ink); }
.tbl--price tbody th, .tbl--price tbody td { vertical-align: baseline; } /* 11/14 文字の大きさが違う列でも、文字の下端をそろえる */

/* 5 つのアーチ（/price） */
.arches { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: clamp(10px, 1.4vw, 20px); }
.archcard { display: grid; justify-items: center; text-align: center; gap: 2px; text-decoration: none; color: var(--ink-deep); }
.archcard__win { display: block; width: 100%; aspect-ratio: 3 / 4.1; border-radius: 999px 999px 0 0; overflow: hidden; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 6px rgba(255, 255, 255, 0.24), 0 0 0 7px var(--soft); margin-bottom: 14px; background: var(--tint); }
.archcard__win img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 42%; transition: transform 1.4s var(--ease); }
.archcard:hover .archcard__win img { transform: scale(1.05); }
.archcard__en { font-family: var(--f-latin); font-size: 13px; font-weight: 500; color: var(--pink-deep); text-shadow: 0 0 12px #fff; }
.archcard__name { font-family: var(--f-serif); font-size: clamp(18px, 1.7vw, 23px); font-weight: 500; letter-spacing: 0.06em; text-shadow: 0 0 12px #fff; }
.archcard__price { font-family: var(--f-num); font-size: 13.5px; font-weight: 500; text-shadow: 0 0 12px #fff; }

/* ------------------------------------------------ FAQ */
.faq--stack { grid-template-columns: 1fr 1fr; }
.sec--faq .sec__panel { background: rgba(255, 255, 255, 0.84); }
.sub .qa { background: rgba(255, 255, 255, 0.7); border-color: var(--line); scroll-margin-top: 96px; }
.sub .qa[open], .sub .qa.is-target { background: #fff; }
.sub .qa.is-target { box-shadow: 0 0 0 2px var(--pink); }
.qa__a > div { min-width: 0; }
.qa__link { margin-top: 6px; }
.qa__link a { color: var(--muted); font-size: 11.5px; }

/* /qa */
.qa-layout { width: min(1180px, 100%); margin-inline: auto; display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 20px; align-items: start; }
.qa-side { position: sticky; top: 92px; padding: 18px; border-radius: 22px; background: rgba(255, 255, 255, 0.82); border: 1px solid rgba(255, 255, 255, 0.85); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.qa-search input { width: 100%; min-height: 44px; padding: 0 14px; border-radius: 999px; border: 1px solid var(--line); background: #fff; font: inherit; font-size: 13.5px; color: var(--ink); }
.qa-side nav { margin-top: 12px; }
.qa-side a { display: flex; justify-content: space-between; align-items: center; min-height: 36px; font-size: 13.5px; text-decoration: none; border-bottom: 1px solid var(--line); }
.qa-side a:hover { color: var(--pink-deep); }
.qa-side small { font-family: var(--f-num); font-size: 12px; color: var(--muted); }
.qa-count { margin-top: 10px; font-size: 12.5px; color: var(--pink-deep); }
.qa-main { display: grid; gap: 16px; min-width: 0; }
.qa-group { width: 100%; scroll-margin-top: 96px; background: rgba(255, 255, 255, 0.84); padding: clamp(22px, 2.6vw, 38px); }
.qa-group .sec__title { margin-bottom: 18px; }
.qa-group .faq--stack { grid-template-columns: 1fr; }

/* ------------------------------------------------ 本文のカード・手順 */
.blocks { display: grid; gap: 12px; }
.blocks--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.blocks--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.block { padding: 20px 22px; border-radius: 18px; background: var(--soft); }
.block h3 { font-family: var(--f-serif); font-weight: 500; font-size: 16.5px; letter-spacing: 0.05em; color: var(--ink-deep); line-height: 1.6; margin-bottom: 14px; }
.block p { font-size: 13.5px; line-height: 1.95; }
.block .tags { margin-top: 10px; }
.block .tags li { background: rgba(255, 255, 255, 0.72); }
.blocks + .prose { margin-top: 20px; }

.steps { display: grid; gap: 0; }
.steps > li { display: grid; grid-template-columns: 46px minmax(0, 1fr); gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--line); }
.steps > li:first-child { padding-top: 0; }
.steps__n { width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--pink); color: var(--pink-deep); display: grid; place-items: center; font-family: var(--f-num); font-size: 20px; }
.steps h3 { font-family: var(--f-serif); font-weight: 500; font-size: 17px; letter-spacing: 0.05em; color: var(--ink-deep); }
.steps p { font-size: 14px; line-height: 1.95; margin-top: 2px; }
.steps + .prose { margin-top: 20px; }

.voices--grid { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.voices--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sub .voice { background: rgba(255, 255, 255, 0.72); }
.sub .voice blockquote { font-size: 14px; }

/* 関連ページ */
.rel { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 12px; }
.rel__card { display: grid; gap: 4px; padding: 20px 22px; border-radius: 20px; text-decoration: none; background: rgba(255, 255, 255, 0.82); border: 1px solid rgba(255, 255, 255, 0.9); box-shadow: inset 0 3px 0 var(--pink); transition: translate 0.7s var(--ease), box-shadow 0.7s var(--ease), background 0.4s; }
.rel__card:hover { translate: 0 -3px; background: #fff; box-shadow: inset 0 3px 0 var(--pink), 0 24px 50px -32px rgba(90, 55, 45, 0.5); }
.rel__h { font-family: var(--f-serif); font-weight: 500; font-size: 17px; letter-spacing: 0.05em; color: var(--ink-deep); }
.rel__b { font-size: 12.5px; line-height: 1.8; }

/* 化粧品 */
.products { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.product { position: relative; padding: 24px; border-radius: 22px; background: rgba(255, 255, 255, 0.84); border: 1px solid rgba(255, 255, 255, 0.9); display: grid; gap: 8px; align-content: start; }
.product__n { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: var(--btn-grad); color: #fff; font-family: var(--f-num); font-size: 16px; }
.product h3 { font-family: var(--f-serif); font-weight: 500; font-size: 17px; letter-spacing: 0.04em; color: var(--ink-deep); line-height: 1.55; }
.product p { font-size: 13.5px; line-height: 1.85; }
.product dl { display: flex; gap: 18px; margin: 0; font-size: 12.5px; color: var(--muted); }
.product dd { margin: 0; color: var(--ink); }
.product__price { font-family: var(--f-num); font-size: 24px !important; font-weight: 600; color: var(--pink-deep); }
.product__price small { font-family: var(--f-sans); font-size: 11px; font-weight: 400; color: var(--muted); }

/* 会員 */
.ranks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.rank { padding: 26px; border-radius: 22px; background: rgba(255, 255, 255, 0.84); border: 1px solid rgba(255, 255, 255, 0.9); }
.rank__en { font-family: var(--f-latin); font-size: 14px; font-weight: 500; color: var(--pink-deep); }
.rank h3 { font-family: var(--f-serif); font-weight: 500; font-size: 21px; letter-spacing: 0.06em; color: var(--ink-deep); margin-bottom: 8px; }
.rank > p { font-size: 13.5px; line-height: 1.9; }
.rank b { font-family: var(--f-num); font-weight: 600; color: var(--pink-deep); font-size: 1.5em; line-height: 1.3; letter-spacing: 0.02em; } /* 11/14 1.2→1.5 倍 */
.rank h4 { font-family: var(--f-serif); font-weight: 500; font-size: 13px; letter-spacing: 0.1em; color: var(--muted); margin: 14px 0 6px; }
.rank .dots li { font-size: 13.5px; }
.rank .sm { margin-top: 8px; }

/* 店舗案内 */
.guide-grid { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 40px; }

/* ------------------------------------------------ フォーム */
.form { display: grid; gap: 20px; max-width: 760px; }
.field > label { display: flex; align-items: center; gap: 8px; font-family: var(--f-serif); font-weight: 500; font-size: 15px; letter-spacing: 0.05em; color: var(--ink-deep); margin-bottom: 8px; }
.field em, .hope legend em { font-style: normal; font-family: var(--f-sans); font-size: 10.5px; line-height: 1; padding: 4px 8px; border-radius: 999px; background: var(--pink-deep); color: #fff; letter-spacing: 0.06em; }
.form input:not([type=radio]):not([type=checkbox]), .form select, .form textarea { width: 100%; min-height: 48px; padding: 10px 14px; border-radius: 12px; border: 1px solid var(--line); background: #fff; font: inherit; font-size: 15px; color: var(--ink); }
.form textarea { min-height: 110px; line-height: 1.8; resize: vertical; }
.form input:focus-visible, .form select:focus-visible, .form textarea:focus-visible { outline: 2px solid var(--pink-deep); outline-offset: 1px; }
.field__hint { font-size: 12px; line-height: 1.7; color: var(--muted); margin-top: 6px; }
.radios { display: flex; flex-wrap: wrap; gap: 8px 20px; }
.radios label { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-size: 14px; }
.hopes { display: grid; gap: 12px; }
.hope { margin: 0; padding: 16px 18px 18px; border: 1px solid var(--line); border-radius: 18px; background: var(--soft); min-width: 0; }
.hope legend { display: flex; align-items: center; gap: 8px; padding: 0 8px; font-family: var(--f-serif); font-weight: 500; font-size: 15px; letter-spacing: 0.05em; color: var(--ink-deep); }
.hope__row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.hope__row span { display: block; font-size: 12px; color: var(--muted); margin-bottom: 4px; }
/* 11/14 日付欄: iPhone でも「年 / 月 / 日」とカレンダーの印が見えるように（印は自前、欄全体を押すと選べる） */
.hope__date { position: relative; display: block; margin: 0; }
.form .hope__row .hope__date input[type=date] { -webkit-appearance: none; appearance: none; display: block; min-height: 48px; padding-right: 46px; text-align: left; line-height: 1.4; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b75a72' stroke-width='1.6' stroke-linecap='round'%3E%3Crect x='3.5' y='5' width='17' height='15.5' rx='3'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4'/%3E%3C/svg%3E") no-repeat right 14px center / 20px; }
.hope__date input::-webkit-date-and-time-value { text-align: left; }
.hope__date input::-webkit-calendar-picker-indicator { position: absolute; inset: 0; width: auto; height: auto; margin: 0; opacity: 0; cursor: pointer; }
.hope__date input.is-empty:not(:focus)::-webkit-datetime-edit { color: transparent; }
.hope__row .hope__ph { display: none; position: absolute; left: 15px; top: 50%; translate: 0 -50%; margin: 0; font-size: 15px; letter-spacing: 0.06em; color: #9a8d90; pointer-events: none; }
.hope__date input.is-empty:not(:focus) + .hope__ph { display: block; }
.hope__msg { margin-top: 10px; padding: 8px 12px; font-size: 13px; line-height: 1.7; border-radius: 10px; background: #fff; color: var(--pink-deep); border: 1px solid var(--pink); }
.demo { padding: 14px 16px; border-radius: 14px; background: #fff; border: 1px solid var(--pink); color: var(--pink-deep); font-size: 13.5px; }
.form .btn { justify-self: center; border: 0; cursor: pointer; } /* 11/14 送信ボタンは左右中央（右寄せから変更） */
/* 送信フォーム（static-form）: 罠の項目・入力エラー・送信中 */
.sf-hp { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.sf-error { margin-top: 8px; font-size: 13px; line-height: 1.7; color: var(--pink-deep); }
.sf-error::before { content: "※ "; }
.form [aria-invalid="true"] { border-color: var(--pink-deep); }
.form__status { font-size: 13.5px; line-height: 1.7; color: var(--pink-deep); }
.form__status:empty { display: none; }
.form[aria-busy="true"] .btn { opacity: 0.55; }
.consent label { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; font-size: 14px; color: var(--ink-deep); }
.consent input { flex: none; width: 30px; height: 30px; margin: 0; accent-color: var(--pink-deep); cursor: pointer; } /* 11/14 48px（入力欄の指定がかかっていた）→ 2/3 の 30px */
.hpb { margin-top: 22px; font-size: 13px; }
.order-list { display: grid; gap: 0; border-top: 1px solid var(--line); }
.order-row { display: grid; grid-template-columns: minmax(0, 1fr) 90px 76px; gap: 12px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--line); }
.order-row strong { font-weight: 500; font-size: 14px; color: var(--ink-deep); display: block; line-height: 1.6; }
.order-row div > span { font-size: 12px; color: var(--muted); }
.order-row__price { font-family: var(--f-num); font-weight: 600; font-size: 16px; text-align: right; color: var(--pink-deep); }
.order-row select { min-height: 42px !important; padding: 6px 10px !important; }
.order-total { margin-top: 14px; text-align: right; font-size: 13px; }
.order-total b { font-family: var(--f-num); font-size: 24px; font-weight: 600; color: var(--pink-deep); margin-left: 8px; }
.order-total small { margin-left: 6px; color: var(--muted); }

/* ------------------------------------------------ 一覧・記事 */
.posts { display: grid; }
.post { border-bottom: 1px solid var(--line); }
.post a { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 4px 22px; padding: 18px 0; text-decoration: none; transition: padding-left 0.7s var(--ease); }
.post a:hover { padding-left: 10px; }
.post a:hover h3 { color: var(--pink-deep); }
.post time { font-family: var(--f-num); font-weight: 500; font-size: 14px; color: var(--muted); padding-top: 3px; grid-row: span 2; }
/* 2026-11-14 サムネイル付き（アイキャッチ → 本文の最初の画像 → ロゴ）。左に角丸の正方形、右に日付・タイトル・冒頭の文 */
.post a:has(.post__thumb) { grid-template-columns: 132px minmax(0, 1fr); gap: 0 26px; align-items: center; }
.post__thumb { display: block; aspect-ratio: 1; border-radius: 18px; overflow: hidden; background: linear-gradient(145deg, #fbeef0, #f6e3e7 60%, #f3e6ea); box-shadow: 0 10px 24px -16px rgba(120, 70, 85, 0.45); }
.post__thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease); }
.post a:hover .post__thumb img { transform: scale(1.05); }
.post__thumb--logo { display: grid; place-items: center; }
.post__thumb--logo img { width: 58%; height: auto; object-fit: contain; opacity: 0.55; }
.post a:hover .post__thumb--logo img { transform: none; }
.post__body { min-width: 0; }
.post__body time { display: block; padding: 0; margin-bottom: 4px; font-size: 13px; }
.post__body h3 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.post__body p { margin-top: 4px; color: var(--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
@media (prefers-reduced-motion: reduce) { .post__thumb img { transition: none; } }
.post h3 { font-family: var(--f-serif); font-weight: 500; font-size: 17px; letter-spacing: 0.04em; color: var(--ink-deep); line-height: 1.6; transition: color 0.3s; }
.post p { font-size: 13.5px; line-height: 1.8; }
.pager { display: flex; gap: 8px; margin-top: 24px; flex-wrap: wrap; }
.pager a, .pager span { min-width: 44px; min-height: 44px; display: grid; place-items: center; padding: 0 14px; border-radius: 999px; border: 1px solid var(--line); text-decoration: none; font-family: var(--f-num); font-size: 14px; background: rgba(255, 255, 255, 0.6); }
.pager span[aria-current] { background: var(--btn-grad); color: #fff; border-color: transparent; }
.pager .pager__dots { min-width: 24px; padding: 0 2px; border: 0; background: none; color: var(--muted); } /* 11/14 「…」は現在のページではないので色を付けない */
.article { max-width: 820px; margin-inline: auto; min-width: 0; overflow-wrap: anywhere; }
/* 古い記事の書き方（行を折り返さない指定・幅を固定した画像や表・長い URL）でも、画面の幅に収める（11/14） */
.article [style*="nowrap"], .article nobr { white-space: normal !important; }
.article pre { white-space: pre-wrap; }
.article [style*="width"], .article img, .article video, .article iframe, .article figure, .article div { max-width: 100% !important; }
.article img, .article video { height: auto; }
.article table { display: block; max-width: 100%; overflow-x: auto; }
/* 11/14 記事の見出し: h2 は上に大きな余白と下線＋ピンクの短い線、h3 は左にピンクの線、h4 は小さな丸 */
.article h2 { position: relative; font-family: var(--f-serif); font-weight: 500; font-size: clamp(22px, 2.2vw, 28px); line-height: 1.6; letter-spacing: 0.05em; color: var(--ink-deep); margin: 72px 0 24px; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.article h2::after { content: ''; position: absolute; left: 0; bottom: -1px; width: 56px; height: 2px; background: var(--btn-grad, var(--pink-deep)); }
.article > h2:first-child, .article > :first-child h2:first-child { margin-top: 0; }
.article h3 { font-family: var(--f-serif); font-weight: 500; font-size: 19px; line-height: 1.6; letter-spacing: 0.05em; color: var(--ink-deep); margin: 48px 0 18px; padding-left: 14px; border-left: 3px solid var(--pink); }
.article h4 { display: flex; align-items: baseline; gap: 10px; font-family: var(--f-serif); font-weight: 500; font-size: 16.5px; line-height: 1.7; letter-spacing: 0.04em; color: var(--pink-deep); margin: 32px 0 12px; }
.article h4::before { content: ''; flex: none; width: 8px; height: 8px; border-radius: 50%; border: 2px solid var(--pink); translate: 0 -2px; }
.article h2 + h3, .article h3 + h4 { margin-top: 20px; }
.article p { font-size: 15.5px; line-height: 2.1; }
.article p + p { margin-top: 16px; }
.article ul, .article ol { margin: 16px 0; padding: 16px 20px; border-radius: 16px; background: rgba(255, 255, 255, 0.55); border: 1px solid var(--line); }
.article li { position: relative; padding-left: 1.4em; font-size: 15px; line-height: 1.9; }
.article li + li { margin-top: 6px; }
.article ul > li::before { content: ''; position: absolute; left: 0.1em; top: 0.75em; width: 7px; height: 7px; border-radius: 50%; background: var(--pink); }
/* 番号付き: ピンクの丸に白い数字 */
.article ol { counter-reset: art-ol; }
.article ol > li { counter-increment: art-ol; padding-left: 2.1em; }
.article ol > li::before { content: counter(art-ol); position: absolute; left: 0; top: 0.3em; width: 1.5em; height: 1.5em; display: grid; place-items: center; border-radius: 50%; background: var(--pink-deep); color: #fff; font-family: var(--f-num); font-size: 12px; font-weight: 600; line-height: 1; }
.article li ul, .article li ol { margin: 6px 0 0; padding: 0; border: 0; background: none; }
/* 前後の記事と、一覧へ戻る（中央） */
.post-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; max-width: 820px; margin: 0 auto 28px; }
.post-nav a { display: grid; gap: 4px; padding: 16px 20px; border-radius: 18px; background: rgba(255, 255, 255, 0.78); border: 1px solid var(--line); text-decoration: none; transition: border-color 0.3s, background 0.3s; }
.post-nav a:hover { border-color: var(--pink); background: #fff; }
.post-nav span { font-size: 12px; letter-spacing: 0.08em; color: var(--pink-deep); }
.post-nav__prev span::before { content: '← '; }
.post-nav__next span { justify-self: end; } /* 11/14 「次の記事 →」は右、タイトルは左寄せ */
.post-nav__next span::after { content: ' →'; }
.post-nav strong { font-weight: 500; font-size: 14px; line-height: 1.6; color: var(--ink-deep); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.back { display: flex; justify-content: center; }
.back .link { margin: 0 auto; } /* .link は右寄せ（margin-left: auto）が基本なので、ここだけ中央 */
.article blockquote { margin: 24px 0; padding: 4px 0 4px 18px; border-left: 2px solid var(--pink); font-size: 15.5px; line-height: 2; color: var(--ink-deep); }

/* ------------------------------------------------ ページの最後の予約 */
.end { position: relative; padding: clamp(60px, 11vh, 120px) var(--gutter) clamp(60px, 11vh, 120px); text-align: center; }
.end__title { font-family: var(--f-serif); font-weight: 500; font-size: clamp(26px, 3.4vw, 50px); line-height: 1.6; letter-spacing: 0.12em; color: var(--ink-deep); text-shadow: 0 0 34px rgba(255, 255, 255, 0.95); margin-bottom: 30px; }
.end__sub { margin-bottom: 22px; }
.end__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; }
.end .btn--ghost { background: rgba(255, 255, 255, 0.76); }
.end .text-link { text-shadow: 0 0 10px #fff; }
.end__info { margin-top: 20px; font-size: 12.5px; color: var(--ink-deep); text-shadow: 0 0 10px #fff; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 8px 22px; }
/* 2026-11-14: 半角スペースだけの区切りは読みにくいので、項目名を小さな枠で区切る */
.end__info b { display: inline-block; margin-right: 8px; padding: 1px 10px; border-radius: 999px; font-size: 11px; font-weight: 500; letter-spacing: 0.08em; line-height: 1.7; text-shadow: none; background: rgba(255, 255, 255, 0.85); }
.sp-br { display: none; }
@media (max-width: 820px) {
  .end__info { flex-direction: column; gap: 6px; }
  .sp-br { display: inline; }
}


/* ------------------------------------------------ 幅に合わせる */
@media (max-width: 1100px) {
  .plans--3, .products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .arches { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .blocks--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .guide-grid { grid-template-columns: 1fr; }
  .qa-layout { grid-template-columns: 1fr; }
  .qa-side { position: static; }
  .qa-side ul { display: flex; flex-wrap: wrap; gap: 6px; }
  .qa-side a { min-height: 36px; padding: 0 12px; gap: 6px; border: 1px solid var(--line); border-radius: 999px; background: rgba(255, 255, 255, 0.6); }
}
@media (max-width: 820px) {
  /* スマホ: 答えを先に。文字 → 写真の順で積み、窓は通常の流れに戻す */
  .kv { display: block; min-height: 0; padding: 92px var(--gutter) 24px; }
  .kv__text { padding-bottom: 0; max-width: none; }
  .crumbs { margin-bottom: 14px; }
  .kv__title { font-size: clamp(30px, 8.6vw, 40px); margin-bottom: 16px; }
  .answer { padding: 16px 18px; }
  .answer p { font-size: 15px; line-height: 1.9; }
  .facts > div { padding: 10px 10px; }
  .facts dt { font-size: 12px; }
  .facts dd { font-size: 14.5px; }
  .kv__actions { display: none; } /* 下の予約バーと同じ内容なので */
  .arch { position: relative; right: auto; bottom: auto; height: auto; width: min(62vw, 272px); margin: 30px auto 20vw; }
  .arch__win { position: relative; aspect-ratio: 3 / 4.1; inset: auto; }
  .arch__mirror { height: 20vw; }
  .arch__mirror img { height: calc(min(62vw, 272px) * 4.1 / 3); }
  .kv__cue { display: none; }
  .kv--with-round { display: grid; grid-template-columns: 1fr; gap: 24px; }
  .kv__round { width: 58vw; max-width: 240px; margin-inline: auto; order: -1; }
  .kv--compact { padding-top: 96px; }
  .sec { padding-inline: 12px; }
  .sub .panel { width: 100%; padding: 22px 18px; }
  .sec__bare { padding-inline: 6px; }
  .plans--3, .plans--2, .products, .ranks, .blocks--2, .blocks--3, .voices--2 { grid-template-columns: minmax(0, 1fr); }
  .plans--one .plan:has(.plan__img) { grid-template-columns: minmax(0, 1fr); }
  .arches { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px 18px; padding-bottom: 36px; } /* 画像どうしの間と、料金の下を広げる（11/14。10px から） */
  .faq--stack, .sub .faq { grid-template-columns: minmax(0, 1fr); }
  .sub .qa summary { padding: 14px; gap: 10px; }
  .qa__a { padding: 0 14px 16px; gap: 10px; }
  .tbl table, .tbl tbody, .tbl tr, .tbl th, .tbl td { display: block; width: 100%; }
  .tbl:not(.tbl--price) th { padding-bottom: 0; border-bottom: 0; }
  .tbl:not(.tbl--price) td { padding-top: 2px; }
  .tbl--price thead { display: none; }
  .tbl--price tr { display: grid; grid-template-columns: auto 1fr; gap: 0 14px; align-items: baseline; padding: 12px 0; border-bottom: 1px solid var(--line); }
  .tbl--price th, .tbl--price td { border: 0; padding: 0; width: auto; }
  .tbl--price tbody th { grid-column: 1 / -1; width: auto; }
  .tbl--price .sm { grid-column: 1 / -1; font-size: 12.5px; margin-top: 4px; }
  .steps > li { grid-template-columns: 38px minmax(0, 1fr); gap: 12px; }
  .steps__n { width: 36px; height: 36px; font-size: 17px; }
  .hope__row { grid-template-columns: minmax(0, 1fr); gap: 10px; } /* 11/14 スマホは日付と時間を縦に（日付が見切れないように） */
  .order-row { grid-template-columns: minmax(0, 1fr) 76px 68px; gap: 8px; }
  .post a { grid-template-columns: minmax(0, 1fr); }
  .post time { grid-row: auto; padding: 0; }
  .posts { border-top: 1px solid var(--line); } /* 11/14 スマホは見出しの下に一覧が続くので、最初の記事の上にも線 */
  /* 11/14 スマホは画像を右に（文字から読み始められる） */
  .post a:has(.post__thumb) { grid-template-columns: minmax(0, 1fr) 88px; gap: 0 16px; padding: 14px 0; }
  .post__thumb { order: 2; border-radius: 14px; }
  .post-nav { grid-template-columns: 1fr; gap: 10px; }
  .post-nav .is-empty { display: none; }
  .article h2 { margin-top: 56px; }
  .post__body h3 { font-size: 15px; line-height: 1.55; }
  .post__body p { font-size: 12.5px; line-height: 1.7; }
  .end { padding-bottom: 72px; }
  .end__actions .btn { width: 100%; }
  .end__title { letter-spacing: 0.08em; }
  .access__map { height: 240px; }
}
@media (prefers-reduced-motion: reduce) {
  .js .rv { opacity: 1; translate: none; }
  .js .kv__title .ch { opacity: 1; translate: none; }
}
.perf-lite .answer, .perf-lite .facts > div, .perf-lite .plan, .perf-lite .qa-side { backdrop-filter: none; -webkit-backdrop-filter: none; }
.perf-lite .answer, .perf-lite .plan { background: rgba(255, 255, 255, 0.92); }

/* 休業日カレンダー */
.calendar { margin-top: 18px; border-radius: 16px; overflow: hidden; border: 1px solid var(--line); background: #fff; height: 340px; }
.calendar iframe { display: block; width: 100%; height: 100%; border: 0; }

/* ------------------------------------------------ 見出しを左に、本文を右に流す（PC）。箱の連続に見えないように */
@media (min-width: 1000px) {
  .sec__panel { display: grid; grid-template-columns: minmax(0, 0.58fr) minmax(0, 1.42fr); column-gap: clamp(32px, 4.4vw, 72px); align-items: start; }
  .sec__panel > * { grid-column: 2; }
  .sec__panel > .sec__h { grid-column: 1; grid-row: 1 / span 12; position: sticky; top: 96px; margin-bottom: 0; }
  .sec__panel .sec__title { font-size: clamp(21px, 1.9vw, 27px); }
  .sec__panel .sec__lead { font-size: 13.5px; }
  .sec__panel > .link { justify-self: end; }
  .sec__panel .faq { grid-template-columns: minmax(0, 1fr); }
  .sec__panel .voices--grid { grid-template-columns: minmax(0, 1fr); }
  .sec__panel .blocks--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sec__panel .blocks--3 > :last-child:nth-child(odd) { grid-column: 1 / -1; }
  .article { display: block; }
}
/* 1 メニューの料金: 箱の中の箱にせず、名前と数字を大きく */
.sec__panel .plans--one .plan { padding: 0; background: none; border: 0; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; }
.sec__panel .plans--one .plan__yen { font-size: clamp(38px, 4vw, 54px); }
.sec__panel .plans--one .plan__min { font-size: clamp(28px, 2.6vw, 36px); }
.sec__panel .plans--one .plan__name { font-size: clamp(22px, 2vw, 26px); }
.sec__panel .plans--one + .prose { margin-top: 18px; }
.sec__bare .plans--one .plan { background: rgba(255, 255, 255, 0.84); padding: clamp(22px, 3vw, 40px); }
@media (min-width: 1000px) {
  .sec__bare .plans--one .plan .plan__body { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); column-gap: 40px; }
  .sec__bare .plans--one .plan .plan__body > * { grid-column: 2; }
  .sec__bare .plans--one .plan .plan__en, .sec__bare .plans--one .plan .plan__name, .sec__bare .plans--one .plan .plan__prices { grid-column: 1; }
  .sec__bare .plans--one .plan .plan__en { grid-row: 1; }
  .sec__bare .plans--one .plan .plan__name { grid-row: 2; }
  .sec__bare .plans--one .plan .plan__prices { grid-row: 3 / span 4; }
  .sec__bare .plans--one .plan .plan__desc { grid-row: 1 / span 2; }
}
/* カードのメニューは価格を際立たせる */
.plans--3 .plan__yen, .plans--2 .plan__yen { font-size: clamp(30px, 2.8vw, 38px); }
/* 表の幅が狭い列で崩れないように */
.sec__panel .tbl tbody th { width: 11em; }
.facts a { white-space: nowrap; }
@media (max-width: 820px) {
  .facts a b { font-size: 1em; }
  .facts a[href^="tel:"] { font-size: 1.25em; }
  .arch { margin-bottom: 15vw; }
  .arch__mirror { height: 13vw; }
}
@media (max-width: 820px) {
  .facts b { font-size: 1.4em; white-space: nowrap; } /* 値段を目立たせる（11/14 に 1.1em から） */
}

/* ------------------------------------------------ 見出し（2026-11-07）: 主題を大きく色付きで、結論を一回り小さく */
.sec__title { display: grid; gap: 10px; }
.sec__main { color: var(--pink-deep); }
.sec__sub { font-size: 0.72em; line-height: 1.6; letter-spacing: 0.05em; color: var(--ink-deep); }
/* 長いカタカナ（社名など）は文節で切れないので、はみ出すときだけ途中で折り返す */
.sec__title, .tbl td { overflow-wrap: anywhere; }
.qa-group .sec__title { display: block; }

/* 要点の数字: スマホは 2 列にし、余った 1 つ（電話など）は 1 行を使う */
@media (max-width: 820px) {
  .facts { grid-auto-flow: row; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .facts > div:last-child:nth-child(odd) { grid-column: 1 / -1; }
  /* 11/14 電話番号は半分の幅だと見切れるので、1 行を使う（最初に置く） */
  .facts > div:has(a[href^="tel:"]) { grid-column: 1 / -1; order: -1; }
  .facts > div:has(a[href^="tel:"]) ~ div:last-child:nth-child(odd) { grid-column: auto; }
}

/* オリジナル化粧品: 実物の写真 */
.product__img { margin: -8px -8px 6px; border-radius: 16px; overflow: hidden; aspect-ratio: 4 / 3; }
.product__img img { width: 100%; height: 100%; object-fit: cover; }
.product__img + .product__n { margin-top: -30px; margin-left: 8px; position: relative; box-shadow: 0 0 0 3px #fff; }

/* 部品と部品の間（2026-11-07）: 本文のすぐ後にカード・表・一覧などが続くと詰まって見えたので、
   個別の指定がない組み合わせはすべて 32px 空ける（:where で詳細度 0 にし、個別の指定を優先） */
:where(.sec__panel, .sec__bare) > :where(:not(.sec__h)) + :where(:not(.sec__h)) { margin-top: 32px; }
.prose + .prose { margin-top: 20px; }
.block p + p, .block ul + p, .block p + ul { margin-top: 12px; }
