/* ささの音 共通スタイル（見た目のルール.md と対応） */
:root{
  --bg:#fafaf8; --bg2:#f2f2ef; --ink:#58574c; --ink-strong:#58574c; --muted:#7a796f;
  --sasa:#58574c; --sasa-dark:#3e3d35; --line:#d6d5ce; --white:#fff;
  --mincho:"Yu Mincho","YuMincho","Hiragino Mincho ProN","Hiragino Mincho Pro","Noto Serif JP","Noto Serif CJK JP","BIZ UDPMincho",serif;
  --fs-body:16px; --lh-body:2.1; --ls-body:.3em;
  --fs-h2:24px; --fs-h3:20px; --fs-small:14px;
  --sec:144px; --maxw:720px; --side:240px; --gutter:20px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--mincho);color:var(--ink);font-size:var(--fs-body);line-height:var(--lh-body);letter-spacing:var(--ls-body);
  background-color:var(--bg);
  background-image:radial-gradient(ellipse 60% 40% at 15% 10%,rgba(150,150,148,.16),transparent 70%),radial-gradient(ellipse 50% 35% at 85% 45%,rgba(140,140,138,.13),transparent 70%),radial-gradient(ellipse 70% 40% at 30% 85%,rgba(150,150,148,.14),transparent 70%);
  background-attachment:fixed;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
main{overflow-x:clip}
.skip{position:absolute;left:-999px;top:0}.skip:focus{left:8px;z-index:100;background:#fff;padding:8px}
/* 左の固定メニュー（PC） */
.side{position:fixed;left:0;top:0;bottom:0;width:var(--side);background:rgba(250,250,248,.96);border-right:1px solid var(--line);z-index:40;display:flex;flex-direction:column;align-items:center;padding:44px 0 0;gap:40px;overflow:hidden}
.logo{writing-mode:vertical-rl;text-decoration:none;color:var(--ink-strong);display:flex;align-items:center;gap:10px;min-height:44px}
.logo small{font-size:12px;letter-spacing:.3em;color:var(--muted)}
.logo span{font-size:26px;letter-spacing:.35em}
.menu-btn,.sp-head,.sp-nav{display:none}
.wrap{margin-left:var(--side)}
/* 最初の画面 */
.hero{position:relative;height:100vh;min-height:560px;overflow:hidden;background:#222}
.hero .slide{position:absolute;inset:0;opacity:0;transition:opacity 1s ease}
.hero .slide.on{opacity:1;z-index:1}
.hero .slide img{width:100%;height:100%;object-fit:cover}
.hero .slide.on img{animation:kbR 7.5s linear forwards}
.hero .slide.on.l img{animation-name:kbL}
@keyframes kbR{from{transform:scale(1.02) translateX(-1.5%)}to{transform:scale(1.14) translateX(1.5%)}}
@keyframes kbL{from{transform:scale(1.02) translateX(1.5%)}to{transform:scale(1.14) translateX(-1.5%)}}
.hero::after{content:"";position:absolute;inset:0;z-index:2;background:linear-gradient(90deg,rgba(0,0,0,0) 45%,rgba(0,0,0,.42)),linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,0) 22%)}
.hero .copy{position:absolute;z-index:3;right:12%;top:13%;writing-mode:vertical-rl;color:#fff;margin:0;font-weight:normal;font-size:36px;letter-spacing:.28em;line-height:1.9;text-shadow:0 2px 14px rgba(0,0,0,.45)}
.hero .copy span{opacity:0;animation:ch .9s ease forwards}
@keyframes ch{from{opacity:0}to{opacity:1}}
.hero .sub{position:absolute;z-index:3;right:calc(12% + 100px);top:13%;writing-mode:vertical-rl;color:#fff;font-size:15px;letter-spacing:.35em;margin:0;text-shadow:0 1px 8px rgba(0,0,0,.5)}
.hero .scroll{position:absolute;z-index:3;left:50%;bottom:0;color:#fff;font-size:12px;letter-spacing:.3em;text-align:center;transform:translateX(-50%)}
.hero .scroll::after{content:"";display:block;width:1px;height:64px;background:rgba(255,255,255,.8);margin:8px auto 0;animation:sl 2.4s ease infinite;transform-origin:top}
@keyframes sl{0%{transform:scaleY(0)}50%{transform:scaleY(1)}100%{transform:scaleY(1);opacity:0}}
.hero .cta{position:absolute;z-index:3;left:48px;bottom:48px}
/* ボタン */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:14px 36px;background:var(--sasa);color:#fff;text-decoration:none;letter-spacing:.2em;font-size:15px;border:1px solid var(--sasa);transition:background .3s,color .3s}
.btn:hover{background:var(--sasa-dark)}
.btn.ghost{background:transparent;color:var(--sasa)}
.btn.ghost:hover{background:var(--sasa);color:#fff}
.more{display:inline-flex;align-items:center;gap:14px;min-height:44px;text-decoration:none;letter-spacing:.2em;font-size:15px;color:var(--sasa)}
.more::after{content:"";width:48px;height:1px;background:currentColor;transition:width .4s}
.more:hover::after{width:72px}
/* セクション */
.sec{padding:var(--sec) 40px}
.inner{max-width:var(--maxw);margin:0 auto}
.wide{max-width:1080px;margin:0 auto}
.label{display:flex;align-items:center;gap:14px;font-size:var(--fs-small);letter-spacing:.3em;color:var(--sasa);margin:0 0 20px}
.label::before{content:"";width:32px;height:1px;background:currentColor}
h1,h2,h3{font-weight:normal;color:var(--ink-strong)}
h2{font-size:var(--fs-h2);letter-spacing:.3em;line-height:1.7;margin:0 0 36px}
h3{font-size:var(--fs-h3);letter-spacing:.18em;line-height:1.6;margin:0 0 20px}
p{margin:0 0 1.4em}
.center{text-align:center}
.center .label{justify-content:center}
.intro p{line-height:2.4}
.river{display:block;width:100%;max-width:520px;margin:56px auto 0;color:var(--line)}
/* 写真の重ね置き */
.overlap{display:grid;grid-template-columns:repeat(12,1fr);align-items:end;margin-bottom:140px}
.overlap .a{grid-column:1/10;grid-row:1}
.overlap .b{grid-column:8/13;grid-row:1;margin-bottom:-64px;border:10px solid var(--bg);box-shadow:0 10px 30px rgba(0,0,0,.08)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.split.rev .ph{order:2}
.types{list-style:none;padding:0;margin:96px 0 40px;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line)}
.types li{padding:24px 20px;border-bottom:1px solid var(--line)}
.types li+li{border-left:1px solid var(--line)}
.types b{display:block;font-weight:normal;font-size:18px;color:var(--ink-strong);letter-spacing:.15em}
.types span{font-size:var(--fs-small);color:var(--muted)}
/* 流れる帯 */
.marquee{overflow:hidden;margin:56px 0 0;padding:4px 0}
.marquee .track{display:flex;gap:16px;width:max-content;animation:mq 48s linear infinite}
.marquee:hover .track{animation-play-state:paused}
.marquee figure{margin:0;width:360px;flex:none}
.marquee img{width:360px;height:240px;object-fit:cover}
.marquee figcaption{font-size:var(--fs-small);color:var(--muted);margin-top:8px}
@keyframes mq{to{transform:translateX(-50%)}}
.band{background:rgba(239,237,229,.7)}
/* 表・一覧 */
.dl{display:grid;grid-template-columns:9em 1fr;margin:0 0 32px;border-top:1px solid var(--line)}
.dl dt,.dl dd{margin:0;padding:16px 8px;border-bottom:1px solid var(--line)}
.dl dt{color:var(--sasa);letter-spacing:.15em}
.news{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.news li{display:flex;gap:32px;padding:20px 8px;border-bottom:1px solid var(--line)}
.news time{color:var(--muted);font-size:var(--fs-small);flex:none;padding-top:2px}
.btns{display:flex;flex-wrap:wrap;gap:16px;align-items:center}
.center .btns{justify-content:center}
/* 下層ページ */
.page-head{padding:200px 40px 96px;position:relative}
.page-head h1{font-size:34px;letter-spacing:.26em;line-height:1.7;margin:0 0 32px}
.page-head .lead{max-width:36em}
.page-head svg{position:absolute;right:6%;bottom:40px;width:260px;color:var(--line)}
.room{padding:72px 0;border-top:1px solid var(--line)}
.room:first-child{border-top:0;padding-top:0}
.room .ph img{width:100%}
.qa{margin:0;border-top:1px solid var(--line)}
.qa details{border-bottom:1px solid var(--line)}
.qa summary{cursor:pointer;padding:20px 40px 20px 8px;list-style:none;position:relative;color:var(--ink-strong);min-height:44px}
.qa summary::-webkit-details-marker{display:none}
.qa summary::before{content:"問";color:var(--sasa);margin-right:14px}
.qa summary::after{content:"";position:absolute;right:12px;top:50%;width:12px;height:1px;background:var(--ink);box-shadow:none;transition:transform .3s}
.qa details:not([open]) summary::after{background:linear-gradient(var(--ink),var(--ink)) center/1px 12px no-repeat,linear-gradient(var(--ink),var(--ink)) center/12px 1px no-repeat;height:12px;margin-top:-6px}
.qa .a{padding:0 8px 24px 46px}
.map iframe{width:100%;height:420px;border:0;display:block;filter:grayscale(.3)}
.siteplan{width:100%;height:auto;color:var(--ink)}
/* フッター */
footer{background:#fff;color:var(--ink);border-top:1px solid var(--line);padding:80px 40px 48px;font-size:15px}
footer a{text-decoration:none}
footer .f-grid{max-width:1080px;margin:0 auto;display:grid;grid-template-columns:1.2fr 1fr;gap:48px}
footer .f-name{font-size:22px;letter-spacing:.3em;color:var(--ink);margin-bottom:16px}
footer ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:4px 24px}
footer ul a{display:flex;justify-content:space-between;align-items:center;padding:10px 4px;min-height:44px;border-bottom:1px solid var(--line)}
footer ul a::after{content:"›";font-size:18px}
footer .sns{display:inline-flex;align-items:center;gap:10px;min-height:44px}
footer .sns svg{width:22px;height:22px}
footer small{display:block;text-align:center;margin-top:56px;color:var(--muted);font-size:13px}
.analytics{display:none}
.pagetop{position:fixed;right:20px;bottom:24px;writing-mode:vertical-rl;font-size:12px;letter-spacing:.3em;text-decoration:none;color:var(--muted);z-index:20;padding:10px;min-width:44px}
.spbar{display:none}
/* ふわっと出る */
.fx{opacity:0;transform:translateY(28px);transition:opacity 1.2s ease,transform 1.2s ease}
.fx.in{opacity:1;transform:none}
.ph-reveal{clip-path:inset(0 100% 0 0);transition:clip-path 1.4s cubic-bezier(.6,0,.2,1)}
.ph-reveal.in{clip-path:inset(0 0 0 0)}
/* タブレット・スマホ */
@media (max-width:1023px){
  :root{--side:0px;--sec:96px}
  .side,.topnav{display:none}
  .wrap{margin-left:0}
  .sp-head{display:flex;position:fixed;top:0;left:0;right:0;height:60px;z-index:50;align-items:center;justify-content:space-between;padding:0 8px 0 var(--gutter);background:rgba(250,250,248,.96);border-bottom:1px solid var(--line)}
  .sp-head .logo{writing-mode:horizontal-tb;gap:10px}
  .sp-head .logo span{font-size:19px;letter-spacing:.2em}
  .sp-head .logo small{font-size:12px;letter-spacing:.1em}
  .menu-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:56px;height:56px;background:none;border:0;font-family:inherit;color:var(--ink);font-size:12px;letter-spacing:.1em;cursor:pointer}
  .menu-btn i{display:block;width:26px;height:1px;background:currentColor}
  .sp-nav{position:fixed;inset:60px 0 0;background:var(--bg);z-index:49;padding:24px var(--gutter) 120px;overflow:auto;display:none}
  .sp-nav.open{display:block}
  .sp-nav ul{list-style:none;margin:0;padding:0}
  .sp-nav a{display:block;padding:16px 4px;border-bottom:1px solid var(--line);text-decoration:none;font-size:18px;letter-spacing:.2em}
  .hero{height:calc(100svh - 60px - 64px);min-height:480px;margin-top:60px}
  .hero .copy{right:18%;top:12%;font-size:32px}
  .hero .sub{right:calc(18% + 136px);top:12%;font-size:13px}
  .hero .cta{display:none}
  .hero .scroll{display:none}
  .sec{padding:var(--sec) var(--gutter)}
  .page-head{padding:132px var(--gutter) 64px}
  .page-head svg{width:160px;bottom:20px;opacity:.7}
  .split{grid-template-columns:1fr;gap:32px}
  .split.rev .ph{order:0}
  .types{grid-template-columns:1fr;margin-top:88px}
  .types li+li{border-left:0}
  .spbar{display:grid;grid-template-columns:1fr 1fr;position:fixed;left:0;right:0;bottom:0;z-index:45;height:64px;padding-bottom:env(safe-area-inset-bottom)}
  .spbar a{display:flex;align-items:center;justify-content:center;text-decoration:none;font-size:16px;letter-spacing:.15em;color:#fff;background:var(--sasa)}
  .spbar a+a{background:#7a796f}
  footer{padding:64px var(--gutter) 104px}
  footer .f-grid{grid-template-columns:1fr;gap:32px}
  .pagetop{display:none}
}
@media (max-width:599px){
  :root{--fs-h2:22px;--fs-h3:19px;--ls-body:.2em;--sec:88px}
  .hero .copy{font-size:28px;right:14%}
  .hero .sub{right:calc(14% + 120px)}
  .page-head h1{font-size:27px}
  .overlap .a{grid-column:1/12}
  .overlap .b{grid-column:5/13;margin-bottom:-48px;border-width:6px}
  .marquee figure,.marquee img{width:240px}
  .marquee img{height:160px}
  .dl{grid-template-columns:1fr}
  .dl dt{padding-bottom:0;border-bottom:0}
  .news li{flex-direction:column;gap:4px}
  .map iframe{height:320px}
  .btn{width:100%}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .fx{opacity:1;transform:none}.ph-reveal{clip-path:none}
  .hero .copy span{opacity:1}
  .marquee{overflow-x:auto}
}
/* 帆山亭の傾向：写真の上の縦書きラベル・2列の写真格子 */
.vt-wrap{position:relative}.vt-wrap img{display:block;width:100%}
.vt{position:absolute;top:24px;right:24px;writing-mode:vertical-rl;color:#fff;font-size:20px;letter-spacing:.4em;text-shadow:0 1px 6px rgba(0,0,0,.5)}
.gal-head{display:flex;justify-content:space-between;align-items:flex-start}
.gal-head h2 small{display:block;font-size:13px;letter-spacing:.4em;margin-top:14px;color:var(--ink)}
.gal-head .sns svg{width:34px;height:34px}
.gallery{list-style:none;padding:0;margin:48px auto 0;max-width:1080px;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.gallery img{width:100%;aspect-ratio:1;object-fit:cover;display:block}
@media (max-width:599px){.gallery{grid-template-columns:repeat(2,1fr);margin:32px 0 0}.vt{font-size:15px;top:12px;right:12px}}

/* 2026-10-16 帆山亭に合わせた形（左240pxの列・予約の行・PAGE TOP） */
.side .logo{padding-bottom:14px;flex-direction:column;align-items:flex-start;gap:14px;flex:none}.side .logo span{font-size:28px;line-height:1.2}.side .logo small{line-height:1.2}
.side-nav ul{list-style:none;margin:0;padding:0;text-align:left}
.side-nav a{display:block;text-decoration:none;font-size:14px;letter-spacing:.3em;padding:7px 0;line-height:1.6}
.side-nav a[aria-current]{border-bottom:1px solid currentColor}
.v-btns{margin-top:auto;display:flex;width:100%;border-top:1px solid var(--line)}
.v-btns .v-btn{flex:1;writing-mode:vertical-rl;display:flex;align-items:center;justify-content:center;padding:22px 0;background:var(--ink);color:#fff;text-decoration:none;font-size:14px;letter-spacing:.3em;transition:background .3s}
.v-btns .v-btn.tel{background:#fff;color:var(--ink);font-size:13px;letter-spacing:.15em}
.v-btns .v-btn:hover{background:var(--sasa-dark);color:#fff}
h2::after{content:"——";display:block;font-size:14px;letter-spacing:0;margin-top:10px;color:var(--muted)}
.gal-head h2::after{display:none}
.reserve{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.rows{list-style:none;padding:0;margin:40px auto 0;max-width:520px;border-top:1px solid var(--line);text-align:left}
.rows a{display:flex;justify-content:space-between;align-items:center;min-height:60px;padding:14px 8px;border-bottom:1px solid var(--line);text-decoration:none;letter-spacing:.3em}
.rows a::after{content:"›";font-size:20px}
.rows a:hover{background:var(--bg2)}
.pagetop{right:22px;bottom:28px;display:flex;flex-direction:column-reverse;align-items:center;gap:12px;color:var(--ink)}
.pagetop::after{content:"";width:1px;height:72px;background:currentColor}
@media (min-width:1024px) and (max-height:860px){
  .side{padding-top:24px;gap:20px}.side .logo span{font-size:22px}.side .logo small{font-size:11px}
  .side-nav a{padding:3px 0;font-size:13px}.v-btns .v-btn{padding:14px 0}
}
@media (max-width:1023px){.v-btns{display:none}.pagetop{display:none}}
@media (max-width:599px){h1,h2,h3,.sp-nav a,.rows a{letter-spacing:.2em}}


/* ===== 改行と文の切り方（日本語の折り返しを整える） ===== */
body {
  word-break: auto-phrase;      /* 言葉のかたまりで折り返し、言葉の途中で切らない（対応ブラウザー） */
  line-break: strict;           /* 句読点や「ー」を行の頭に置かない */
}
h1, h2, h3, h4 { text-wrap: balance; }   /* 複数行のとき行の長さをそろえる */
p, li, dd, td, figcaption, blockquote { text-wrap: pretty; }   /* 最後の行に1〜2文字だけ残るのを防ぐ */
.nobr { display: inline-block; }
@media (max-width: 767px) { .pc-only { display: none; } }
