/* =========================================================================
   あおぞら歯科クリニック ｜ 共有スタイルシート（オリウェブ 制作例）
   1ページ版 samples/clinic/index.html のブランドを継承した多ページ用 DRY 構成。
   明るい白＋パステル（ミント/スカイ）、丸ゴシック、やわらかい角丸、重い影は避ける。
   ========================================================================= */

:root{
  --white:#ffffff;
  --mint:#5ec5c0;
  --mint-d:#3aa6a1;
  --sky:#cfeaf4;
  --sky-soft:#e8f5fa;
  --ink:#21424a;
  --ink-soft:#5b757c;
  --paper:#f5fbfc;
  --line:#e2eef1;
  --r-lg:28px;
  --r-md:20px;
  --r-sm:14px;
  --display:"Zen Maru Gothic",system-ui,sans-serif;
  --body:"Noto Sans JP",system-ui,sans-serif;
  --shadow-soft:0 14px 40px -18px rgba(33,66,74,.22);
  --shadow-card:0 10px 30px -16px rgba(33,66,74,.20);
  --maxw:1160px;
}

/* ---------- reset / base ---------- */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--body);color:var(--ink);background:var(--white);
  line-height:1.85;-webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:var(--display);font-weight:700;letter-spacing:.01em;line-height:1.4}
.shell{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- top app bar (light, sticky, floating) ---------- */
.appbar{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.88);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.appbar-in{display:flex;align-items:center;gap:18px;min-height:70px;flex-wrap:wrap}
.logo{display:flex;align-items:center;gap:11px;font-family:var(--display);font-weight:900;font-size:1.12rem;color:var(--ink)}
.logo .mark{width:40px;height:40px;flex:none;border-radius:13px;background:linear-gradient(150deg,var(--sky),var(--mint));display:grid;place-items:center;box-shadow:0 8px 18px -8px rgba(94,197,192,.7)}
.logo small{display:block;font-family:var(--body);font-weight:500;font-size:.62rem;letter-spacing:.18em;color:var(--mint-d);margin-top:-3px}
.appnav{margin-left:auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.appnav a{font-size:.83rem;font-weight:500;color:var(--ink-soft);padding:.5em .9em;border-radius:999px;transition:.2s;white-space:nowrap}
.appnav a:hover{background:var(--sky-soft);color:var(--ink)}
.appnav a[aria-current="page"]{background:var(--mint);color:#fff;font-weight:700}
.appbar .tel{font-family:var(--display);font-weight:700;font-size:.95rem;color:var(--ink);display:flex;align-items:center;gap:7px;white-space:nowrap}
.appbar .tel svg{width:16px;height:16px}
/* mobile: nav drops to its own full-width row, scrolls horizontally if needed (no hamburger) */
@media(max-width:880px){
  .appbar-in{gap:10px;padding-top:10px;padding-bottom:8px}
  .logo{font-size:.96rem}
  .logo>span{white-space:nowrap}
  .appbar .tel{margin-left:auto;font-size:.82rem}
  .appnav{order:3;width:100%;margin-left:0;justify-content:flex-start;gap:6px 5px;flex-wrap:wrap;padding-bottom:2px}
  .appnav a{font-size:.8rem;padding:.45em .8em}
}

/* ---------- buttons / text links ---------- */
.btn{display:inline-flex;align-items:center;gap:9px;font-family:var(--display);font-weight:700;border-radius:999px;padding:.95em 1.75em;font-size:.95rem;transition:transform .18s,box-shadow .18s,border-color .18s;cursor:pointer;border:none}
.btn-primary{background:var(--mint);color:#fff;box-shadow:0 16px 30px -12px rgba(94,197,192,.85)}
.btn-primary:hover{transform:translateY(-3px);box-shadow:0 22px 38px -14px rgba(94,197,192,.95)}
.btn-ghost{background:#fff;color:var(--ink);border:1.5px solid var(--line)}
.btn-ghost:hover{transform:translateY(-3px);border-color:var(--mint)}
.tlink{color:var(--mint-d);font-family:var(--display);font-weight:700;font-size:.9rem;display:inline-flex;align-items:center;gap:6px;border-bottom:2px solid transparent;transition:.2s}
.tlink:hover{border-color:var(--mint)}
.tlink svg{width:15px;height:15px}

/* ---------- section base / headings ---------- */
section{padding:clamp(50px,7vw,84px) 0}
.sec-head{max-width:36em}
.sec-head.center{margin:0 auto;text-align:center}
.kicker{display:inline-block;font-family:var(--display);font-weight:700;font-size:.78rem;letter-spacing:.04em;color:var(--mint-d);background:var(--sky-soft);padding:.4em 1em;border-radius:999px;margin-bottom:16px}
.sec-head h2{font-size:clamp(1.6rem,3.6vw,2.35rem);font-weight:900}
.sec-head p{margin-top:14px;color:var(--ink-soft);font-size:.98rem}
.paper{background:var(--paper)}

/* ---------- page banner (compact hero for sub-pages) ---------- */
.banner{position:relative;overflow:hidden;background:
    radial-gradient(120% 120% at 90% -20%,var(--sky) 0%,rgba(207,234,244,0) 55%),
    radial-gradient(90% 90% at -5% 120%,#eaf8f3 0%,rgba(234,248,243,0) 60%),
    var(--white);
  padding:clamp(40px,6vw,72px) 0 clamp(36px,5vw,56px)}
.banner .blob{position:absolute;border-radius:50%;filter:blur(6px);opacity:.45;pointer-events:none}
.banner .blob.b1{width:200px;height:200px;background:#dff4f1;top:-40px;left:-50px}
.banner .blob.b2{width:130px;height:130px;background:#e3f1f9;bottom:-30px;right:12%}
.banner-in{position:relative}
.crumb{font-size:.76rem;color:var(--ink-soft);margin-bottom:14px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.crumb a{color:var(--mint-d);font-weight:500}
.crumb a:hover{text-decoration:underline}
.crumb .sep{color:#b9ccd0}
.banner h1{font-size:clamp(1.9rem,5vw,3rem);font-weight:900;letter-spacing:.005em}
.banner h1 .hl{position:relative;white-space:nowrap}
.banner h1 .hl::after{content:"";position:absolute;left:-2px;right:-2px;bottom:.08em;height:.32em;background:var(--sky);z-index:-1;border-radius:4px}
.banner .lead{margin-top:18px;font-size:1.02rem;color:var(--ink-soft);max-width:30em}

/* ---------- hero (top page, with side app panel) ---------- */
.hero{position:relative;background:
    radial-gradient(120% 90% at 88% -10%,var(--sky) 0%,rgba(207,234,244,0) 55%),
    radial-gradient(90% 70% at 0% 110%,#eaf8f3 0%,rgba(234,248,243,0) 60%),
    var(--white);
  padding:clamp(40px,7vw,86px) 0 clamp(48px,7vw,90px);overflow:hidden}
.blob{position:absolute;border-radius:50%;filter:blur(6px);opacity:.5;pointer-events:none}
.hero .blob.b1{width:220px;height:220px;background:#dff4f1;top:8%;left:-60px}
.hero .blob.b2{width:150px;height:150px;background:#e3f1f9;bottom:6%;right:14%}
.hero-grid{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,4vw,58px);align-items:center}
@media(max-width:900px){.hero-grid{grid-template-columns:1fr;gap:34px}}
.hero-copy .ping{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);padding:.45em .95em;border-radius:999px;font-size:.76rem;font-weight:700;color:var(--mint-d);box-shadow:var(--shadow-card)}
.hero-copy .ping i{width:8px;height:8px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 4px rgba(94,197,192,.22)}
.hero-copy h1{font-size:clamp(2.05rem,5.4vw,3.5rem);font-weight:900;margin:22px 0 0;letter-spacing:.005em}
.hero-copy h1 .hl{position:relative;white-space:nowrap}
.hero-copy h1 .hl::after{content:"";position:absolute;left:-2px;right:-2px;bottom:.08em;height:.34em;background:var(--sky);z-index:-1;border-radius:4px}
.hero-copy .sub{margin-top:20px;font-size:1.02rem;color:var(--ink-soft);max-width:24em}
.hero-actions{margin-top:30px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.hero-meta{margin-top:26px;display:flex;gap:22px;flex-wrap:wrap}
.hero-meta .m{display:flex;align-items:center;gap:9px;font-size:.83rem;color:var(--ink-soft)}
.hero-meta .m svg{width:19px;height:19px;flex:none;color:var(--mint-d)}

/* reservation panel (app-like card) */
.resv{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-soft);padding:22px 22px 24px;position:relative}
.resv .resv-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.resv .resv-top h2{font-size:1.04rem;font-weight:700}
.resv .resv-top .live{font-size:.68rem;font-weight:700;color:var(--mint-d);background:var(--sky-soft);padding:.32em .7em;border-radius:999px;display:inline-flex;align-items:center;gap:6px}
.resv .resv-top .live i{width:7px;height:7px;border-radius:50%;background:var(--mint);animation:pulse 1.8s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.resv .hint{font-size:.76rem;color:var(--ink-soft);margin-bottom:16px}
.seg{display:flex;background:var(--paper);border-radius:var(--r-sm);padding:5px;gap:5px;margin-bottom:18px}
.seg .opt{flex:1;text-align:center;font-family:var(--display);font-weight:700;font-size:.82rem;color:var(--ink-soft);padding:.6em 0;border-radius:10px}
.seg .opt.on{background:#fff;color:var(--ink);box-shadow:0 4px 12px -6px rgba(33,66,74,.25)}
.daystrip{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin-bottom:18px}
.day{text-align:center;border:1px solid var(--line);border-radius:13px;padding:8px 0;cursor:pointer;background:#fff;transition:.15s}
.day .wd{font-size:.64rem;color:var(--ink-soft);font-weight:700}
.day .dd{font-family:var(--display);font-weight:700;font-size:1.05rem;margin-top:2px}
.day .dot{width:5px;height:5px;border-radius:50%;background:var(--mint);margin:5px auto 0}
.day.off{opacity:.4}
.day.off .dot{background:#cdd9dc}
.day.sel{border-color:var(--mint);background:var(--sky-soft);box-shadow:0 0 0 3px rgba(94,197,192,.18)}
.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.slot{border:1px solid var(--line);background:#fff;border-radius:11px;padding:.7em 0;text-align:center;font-family:var(--display);font-weight:700;font-size:.82rem;color:var(--ink);cursor:pointer;transition:.15s}
.slot.taken{color:#b9c7cb;background:var(--paper);text-decoration:line-through;cursor:not-allowed}
.slot.pick{background:var(--mint);color:#fff;border-color:var(--mint)}
.resv .resv-go{margin-top:18px;width:100%;justify-content:center}
.resv .foot{margin-top:12px;text-align:center;font-size:.72rem;color:var(--ink-soft)}
@media(max-width:420px){.slots{grid-template-columns:repeat(3,1fr)}.daystrip{grid-template-columns:repeat(4,1fr)}}

/* ---------- feature row (icon + copy, used on top page) ---------- */
.feat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:40px}
@media(max-width:760px){.feat-grid{grid-template-columns:1fr}}
.feat{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:28px;transition:transform .2s,box-shadow .2s}
.feat:hover{transform:translateY(-4px);box-shadow:var(--shadow-soft)}
.feat .ico{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;margin-bottom:16px;background:var(--sky-soft)}
.feat .ico svg{width:30px;height:30px;color:var(--mint-d)}
.feat h3{font-size:1.1rem;font-weight:700}
.feat p{margin-top:8px;font-size:.9rem;color:var(--ink-soft)}

/* ---------- services : big rounded cards + custom svg icons ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin-top:40px}
.svc-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:30px 30px 28px;position:relative;transition:transform .2s,box-shadow .2s}
.svc-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-soft)}
.svc-card .ico{width:62px;height:62px;border-radius:18px;display:grid;place-items:center;margin-bottom:18px}
.svc-card .ico svg{width:32px;height:32px}
.ico.c1{background:var(--sky-soft)}.ico.c1 svg{color:var(--mint-d)}
.ico.c2{background:#eef9f0}.ico.c2 svg{color:#52b48a}
.ico.c3{background:#fff2ec}.ico.c3 svg{color:#e89368}
.ico.c4{background:#f0eefb}.ico.c4 svg{color:#7e74c9}
.ico.c5{background:#fdeef4}.ico.c5 svg{color:#d77aa6}
.ico.c6{background:#eef6fb}.ico.c6 svg{color:#5b9bd1}
.svc-card h3{font-size:1.18rem;font-weight:700}
.svc-card p{margin-top:9px;font-size:.9rem;color:var(--ink-soft)}
.svc-card .tag{display:inline-block;margin-top:16px;font-size:.72rem;font-weight:700;color:var(--mint-d);background:var(--sky-soft);padding:.34em .8em;border-radius:999px}
.svc-card .price{margin-top:14px;font-family:var(--display);font-weight:900;font-size:1.05rem;color:var(--ink)}
.svc-card .price small{font-family:var(--body);font-weight:500;font-size:.72rem;color:var(--ink-soft);margin-left:4px}
@media(max-width:680px){.svc-grid{grid-template-columns:1fr}}

/* ---------- gallery : rounded photo cards ---------- */
.gallery{display:grid;grid-template-columns:1.3fr 1fr 1fr;grid-template-rows:auto auto;gap:14px;margin-top:42px}
.pho{border-radius:var(--r-md);overflow:hidden;position:relative;box-shadow:var(--shadow-card);background:var(--sky-soft)}
.pho img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3}
.pho .cap{position:absolute;left:12px;bottom:12px;background:rgba(255,255,255,.92);backdrop-filter:blur(4px);font-size:.7rem;font-weight:700;color:var(--ink);padding:.4em .85em;border-radius:999px}
.pho.tall{grid-row:span 2}
.pho.tall img{aspect-ratio:auto;height:100%}
@media(max-width:760px){.gallery{grid-template-columns:1fr 1fr}.pho.tall{grid-row:span 1}.pho.tall img{aspect-ratio:4/3}}
@media(max-width:440px){.gallery{grid-template-columns:1fr}}

/* gallery grid (even cards, for the 院内 page) */
.gal-even{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:40px}
@media(max-width:820px){.gal-even{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.gal-even{grid-template-columns:1fr}}

/* ---------- split (photo + text, alternating) ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,52px);align-items:center;margin-top:46px}
.split:first-of-type{margin-top:40px}
.split.flip .split-media{order:2}
.split-media{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-card);background:var(--sky-soft)}
.split-media img{width:100%;height:100%;object-fit:cover;aspect-ratio:5/4}
.split-body h3{font-size:clamp(1.25rem,2.6vw,1.55rem);font-weight:900}
.split-body p{margin-top:14px;color:var(--ink-soft);font-size:.96rem}
.split-body .chips{margin-top:18px;display:flex;flex-wrap:wrap;gap:8px}
.chip{font-size:.74rem;font-weight:700;color:var(--mint-d);background:var(--sky-soft);padding:.4em .9em;border-radius:999px;font-family:var(--display)}
@media(max-width:760px){.split{grid-template-columns:1fr;gap:24px}.split.flip .split-media{order:0}}

/* ---------- flow : vertical timeline rail ---------- */
.flow-rail{position:relative;max-width:780px;margin:40px 0 0;counter-reset:step}
.flow-rail::before{content:"";position:absolute;left:25px;top:14px;bottom:18px;width:2px;background:linear-gradient(var(--sky),var(--mint));border-radius:2px}
.fstep{position:relative;display:grid;grid-template-columns:52px 1fr;gap:20px;padding-bottom:30px}
.fstep:last-child{padding-bottom:0}
.fnum{position:relative;z-index:1;width:52px;height:52px;border-radius:17px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-card);display:grid;place-items:center;font-family:var(--display);font-weight:900;font-size:1.2rem;color:var(--mint-d)}
.fnum::before{counter-increment:step;content:counter(step)}
.fstep:nth-child(even) .fnum{background:var(--mint);color:#fff;border-color:var(--mint)}
.fbody{padding-top:5px}
.fbody .when{display:inline-block;font-family:var(--display);font-weight:700;font-size:.68rem;letter-spacing:.03em;color:var(--mint-d);background:var(--sky-soft);padding:.28em .7em;border-radius:999px;margin-bottom:9px}
.fbody h4{font-size:1.08rem;font-weight:700}
.fbody p{margin-top:6px;font-size:.88rem;color:var(--ink-soft);max-width:36em}
@media(max-width:440px){.flow-rail::before{left:21px}.fstep{grid-template-columns:44px 1fr;gap:15px}.fnum{width:44px;height:44px;border-radius:14px;font-size:1.05rem}}

/* ---------- patient voices : snap-scroll rail ---------- */
.vhead{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:22px}
.vhead .nav-hint{font-size:.78rem;color:var(--ink-soft);display:inline-flex;align-items:center;gap:7px}
.vhead .nav-hint svg{width:16px;height:16px;color:var(--mint-d)}
.vrail{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 4px 14px;margin:0 -4px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.vrail::-webkit-scrollbar{height:6px}
.vrail::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px}
.vcard{scroll-snap-align:start;flex:0 0 clamp(258px,72vw,310px);background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:24px 24px 22px;box-shadow:var(--shadow-card)}
.vcard .stars{color:var(--mint);font-size:.82rem;letter-spacing:3px}
.vcard blockquote{margin-top:11px;font-size:.95rem;color:var(--ink);font-weight:500;line-height:1.85}
.vcard .who{margin-top:16px;display:flex;align-items:center;gap:11px}
.vcard .who .av{width:36px;height:36px;flex:none;border-radius:50%;background:linear-gradient(150deg,var(--sky),var(--mint));display:grid;place-items:center;font-family:var(--display);font-weight:900;font-size:.9rem;color:#fff}
.vcard .who .nm{font-size:.82rem;font-weight:700;font-family:var(--display)}
.vcard .who .nm small{display:block;font-family:var(--body);font-weight:500;color:var(--ink-soft);font-size:.72rem;margin-top:1px}
.vnote{margin-top:8px;font-size:.72rem;color:var(--ink-soft)}

/* ---------- staff cards (医院紹介) ---------- */
.staff-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:40px}
@media(max-width:820px){.staff-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.staff-grid{grid-template-columns:1fr}}
.staff{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-card)}
.staff .ph{aspect-ratio:4/3;overflow:hidden;background:var(--sky-soft)}
.staff .ph img{width:100%;height:100%;object-fit:cover}
.staff .bd{padding:20px 22px 22px}
.staff .role{font-size:.72rem;font-weight:700;color:var(--mint-d);background:var(--sky-soft);padding:.3em .8em;border-radius:999px;display:inline-block}
.staff h3{margin-top:11px;font-size:1.12rem;font-weight:700}
.staff h3 small{display:block;font-family:var(--body);font-weight:500;font-size:.7rem;letter-spacing:.12em;color:var(--ink-soft);margin-top:2px}
.staff p{margin-top:10px;font-size:.86rem;color:var(--ink-soft)}

/* ---------- stat strip ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:40px}
@media(max-width:680px){.stat-grid{grid-template-columns:1fr 1fr}}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:24px 20px;text-align:center}
.stat .n{font-family:var(--display);font-weight:900;font-size:clamp(1.6rem,3vw,2.1rem);color:var(--mint-d);line-height:1.1}
.stat .l{margin-top:8px;font-size:.8rem;color:var(--ink-soft)}

/* ---------- access : map + info ---------- */
.access-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:24px;margin-top:40px;align-items:stretch}
@media(max-width:820px){.access-grid{grid-template-columns:1fr}}
.map-card{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);background:#eaf3f5;min-height:300px;position:relative}
.map-card svg{display:block;width:100%;height:100%}
.map-pin{position:absolute;left:50%;top:46%;transform:translate(-50%,-100%);text-align:center}
.map-pin .bubble{background:#fff;box-shadow:var(--shadow-card);font-family:var(--display);font-weight:700;font-size:.78rem;color:var(--ink);padding:.5em 1em;border-radius:999px;white-space:nowrap}
.map-pin .needle{width:14px;height:14px;background:var(--mint);border:3px solid #fff;border-radius:50%;margin:6px auto 0;box-shadow:0 4px 10px -3px rgba(33,66,74,.5)}
.info-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:30px}
.info-card h3{font-size:1.2rem;font-weight:700;margin-bottom:18px}
.info-row{display:grid;grid-template-columns:84px 1fr;gap:12px;padding:13px 0;border-bottom:1px dashed var(--line);font-size:.88rem}
.info-row:last-of-type{border-bottom:none}
.info-row dt{font-family:var(--display);font-weight:700;color:var(--mint-d)}
.info-row dd{color:var(--ink)}

/* hours table */
.hours{width:100%;border-collapse:collapse;margin-top:6px;font-size:.8rem}
.hours th,.hours td{border:1px solid var(--line);padding:.55em .2em;text-align:center}
.hours thead th{background:var(--sky-soft);font-family:var(--display);font-weight:700;font-size:.74rem}
.hours tbody th{background:var(--paper);font-family:var(--display);font-weight:700;text-align:left;padding-left:.8em;white-space:nowrap}
.hours .o{color:var(--mint-d);font-weight:700}
.hours .x{color:#c2cfd2}

/* generic price table */
.ptable{width:100%;border-collapse:collapse;margin-top:24px;font-size:.9rem;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.ptable th,.ptable td{padding:.85em 1em;text-align:left;border-bottom:1px solid var(--line)}
.ptable thead th{background:var(--sky-soft);font-family:var(--display);font-weight:700;font-size:.82rem;color:var(--ink)}
.ptable tbody tr:last-child td{border-bottom:none}
.ptable td.num{text-align:right;font-family:var(--display);font-weight:700;white-space:nowrap}
.ptable .muted{color:var(--ink-soft);font-size:.8rem}

/* ---------- FAQ (details/summary) ---------- */
.faq{max-width:760px;margin:36px 0 0}
.faq details{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);margin-bottom:12px;overflow:hidden}
.faq summary{list-style:none;cursor:pointer;padding:18px 22px;font-family:var(--display);font-weight:700;font-size:.98rem;display:flex;align-items:center;gap:12px}
.faq summary::-webkit-details-marker{display:none}
.faq summary .q{flex:none;width:26px;height:26px;border-radius:9px;background:var(--sky-soft);color:var(--mint-d);display:grid;place-items:center;font-weight:900;font-size:.85rem}
.faq summary .mk{margin-left:auto;color:var(--mint-d);transition:transform .2s}
.faq details[open] summary .mk{transform:rotate(45deg)}
.faq .a{padding:0 22px 20px 60px;font-size:.9rem;color:var(--ink-soft)}

/* ---------- contact / reservation form ---------- */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:620px){.form-grid{grid-template-columns:1fr}}
.field{display:flex;flex-direction:column;gap:7px}
.field.full{grid-column:1 / -1}
.field label{font-family:var(--display);font-weight:700;font-size:.84rem;color:var(--ink);display:flex;align-items:center;gap:8px}
.field label .req{font-size:.66rem;font-weight:700;color:#fff;background:var(--mint);padding:.12em .5em;border-radius:999px}
.field input,.field select,.field textarea{font-family:var(--body);font-size:.92rem;color:var(--ink);background:#fff;border:1.5px solid var(--line);border-radius:var(--r-sm);padding:.8em .95em;width:100%;transition:border-color .2s,box-shadow .2s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--mint);box-shadow:0 0 0 3px rgba(94,197,192,.18)}
.field textarea{resize:vertical;min-height:120px;line-height:1.7}
.radio-row{display:flex;flex-wrap:wrap;gap:10px}
.radio-row label{font-family:var(--body);font-weight:500;font-size:.86rem;border:1.5px solid var(--line);border-radius:999px;padding:.55em 1.1em;cursor:pointer;transition:.2s}
.radio-row input{position:absolute;opacity:0;pointer-events:none;width:auto;height:auto}
.radio-row input:checked + span{}
.radio-row label:has(input:checked){border-color:var(--mint);background:var(--sky-soft);color:var(--ink);font-weight:700}
.form-note{margin-top:14px;font-size:.74rem;color:var(--ink-soft)}
.form-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-soft);padding:clamp(24px,4vw,38px)}

/* ---------- final cta band ---------- */
.cta-band{background:linear-gradient(120deg,var(--sky-soft),#eef9f6)}
.cta-in{text-align:center;max-width:40em;margin:0 auto}
.cta-in h2{font-size:clamp(1.7rem,4vw,2.5rem);font-weight:900}
.cta-in p{margin:16px auto 0;color:var(--ink-soft);max-width:30em}
.cta-in .row{margin-top:28px;display:flex;justify-content:center;gap:13px;flex-wrap:wrap}

/* ---------- footer ---------- */
footer{background:#fff;border-top:1px solid var(--line);padding:48px 0 40px;margin-top:0}
.foot-grid{display:flex;justify-content:space-between;gap:30px;flex-wrap:wrap;align-items:flex-start}
.foot-grid .logo{margin-bottom:10px}
.foot-note{font-size:.82rem;color:var(--ink-soft);max-width:24em}
.foot-links{display:flex;gap:30px;flex-wrap:wrap}
.foot-links .col h5{font-family:var(--display);font-weight:700;font-size:.82rem;margin-bottom:10px;color:var(--ink)}
.foot-links .col a{display:block;font-size:.8rem;color:var(--ink-soft);padding:3px 0}
.foot-links .col a:hover{color:var(--mint-d)}
.sample-badge{display:inline-flex;align-items:center;gap:8px;background:var(--sky-soft);border:1px solid var(--line);color:var(--mint-d);font-size:.72rem;font-weight:700;padding:.45em 1em;border-radius:999px;margin-top:24px}
.sample-badge svg{width:14px;height:14px}
.foot-fine{margin-top:18px;font-size:.74rem;color:var(--ink-soft);line-height:1.8}
.foot-fine .by{font-family:var(--display);font-weight:700;color:var(--ink)}
.copy{margin-top:14px;font-size:.74rem;color:#9fb2b6}

/* ---------- persistent floating WEB予約 pill ---------- */
.fab{position:fixed;right:20px;bottom:20px;z-index:80;display:inline-flex;align-items:center;gap:10px;background:var(--mint);color:#fff;font-family:var(--display);font-weight:700;font-size:.92rem;padding:.95em 1.5em;border-radius:999px;box-shadow:0 18px 34px -12px rgba(94,197,192,.95);transition:transform .18s}
.fab:hover{transform:translateY(-3px) scale(1.02)}
.fab svg{width:18px;height:18px}
.fab .pip{width:8px;height:8px;border-radius:50%;background:#fff;opacity:.85;animation:pulse 1.8s infinite}
@media(max-width:520px){.fab{right:14px;bottom:14px;padding:.85em 1.25em;font-size:.86rem}}
