/* 喫茶こもれび — 見本サイト（架空店舗・自主制作サンプル） */
:root{
  --cream:#F8F3EA; --cream-2:#EFE6D6; --cream-3:#E4D8C2;
  --ink:#3A2A20; --ink-2:#6A5546; --mute:#8A7461;
  --line:#DCCFB9; --line-2:#B9A78C;
  --amber:#C48A2C; --amber-deep:#A5711F; --moss:#5F6B45;
  --dark:#2C1F17; --on-dark:#F8F3EA; --on-dark-2:#CDBFAE;
  --mincho:"Zen Old Mincho","Hiragino Mincho ProN","Yu Mincho","BIZ UDPMincho",serif;
  --gothic:"Zen Kaku Gothic New","Hiragino Sans","BIZ UDPGothic","Yu Gothic",Meiryo,sans-serif;
  --serif:"Instrument Serif","Times New Roman",Georgia,serif;
  --ease:cubic-bezier(.22,1,.36,1);
  --g:20px; --max:1040px; --hh:60px;
}
@media (min-width:768px){ :root{ --g:40px; --hh:72px; } }
*,*::before,*::after{ box-sizing:border-box; }
body{ margin:0; background:var(--cream); color:var(--ink); font-family:var(--gothic); font-size:16px; line-height:1.9; letter-spacing:.02em; -webkit-font-smoothing:antialiased; }
:lang(ja){ word-break:keep-all; overflow-wrap:normal; line-break:strict; }
.nb{ white-space:nowrap; }
a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; height:auto; }
h1,h2,h3{ margin:0; font-family:var(--mincho); font-weight:500; line-height:1.5; letter-spacing:.04em; font-feature-settings:"palt" 1; }
p{ margin:0; } ul,ol{ margin:0; padding:0; list-style:none; }
button{ font:inherit; color:inherit; background:none; border:0; padding:0; cursor:pointer; }
:focus-visible{ outline:2px solid var(--ink); outline-offset:3px; }
.wrap{ max-width:var(--max); margin:0 auto; padding:0 var(--g); }

/* 見本の帯 */
.sample{ background:var(--dark); color:var(--on-dark-2); font-size:12px; letter-spacing:.06em; text-align:center; padding:7px var(--g); line-height:1.5; }
.sample a{ color:var(--on-dark); border-bottom:1px solid var(--on-dark-2); margin-left:10px; }

/* ヘッダー */
.hd{ position:sticky; top:0; z-index:20; height:var(--hh); display:flex; align-items:center; background:rgba(248,243,234,.9); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); border-bottom:1px solid var(--line); }
.hd__in{ display:flex; align-items:center; justify-content:space-between; gap:16px; }
.brand{ font-family:var(--mincho); font-size:20px; letter-spacing:.12em; font-weight:500; display:flex; align-items:center; gap:10px; }
.brand__leaf{ width:22px; height:22px; border-radius:50% 0 50% 0; background:var(--moss); transform:rotate(-10deg); }
.nav{ display:none; }
.nav a{ font-size:13px; letter-spacing:.14em; padding:6px 0; border-bottom:1px solid transparent; }
.nav a:hover, .nav a[aria-current="page"]{ border-color:var(--ink); }
.hd__btn{ display:inline-flex; align-items:center; min-height:40px; padding:0 16px; border:1px solid var(--ink); border-radius:999px; font-size:13px; letter-spacing:.1em; }
.menu-btn{ display:inline-flex; align-items:center; gap:8px; font-size:12px; letter-spacing:.14em; }
.menu-btn i{ display:block; width:22px; height:1px; background:currentColor; box-shadow:0 -6px 0 currentColor, 0 6px 0 currentColor; }
@media (min-width:860px){ .nav{ display:flex; gap:26px; } .menu-btn{ display:none; } }
.menu{ position:fixed; inset:0; z-index:30; background:var(--dark); color:var(--on-dark); padding:calc(var(--hh) + 20px) var(--g) 30px; display:none; }
.is-menu-open .menu{ display:flex; flex-direction:column; justify-content:flex-end; }
.is-menu-open{ overflow:hidden; }
.menu a{ display:block; padding:14px 0; border-bottom:1px solid #4A3A2E; font-family:var(--mincho); font-size:22px; letter-spacing:.1em; }
.menu__x{ position:fixed; top:14px; right:var(--g); z-index:31; color:var(--on-dark); font-size:13px; letter-spacing:.14em; display:none; }
.is-menu-open .menu__x{ display:block; }
.is-menu-open .hd{ visibility:hidden; }

/* ヒーロー */
.hero{ position:relative; }
.hero__img{ height:min(78vh, 640px); overflow:hidden; }
.hero__img img{ width:100%; height:100%; object-fit:cover; }
.hero__body{ padding:36px 0 0; }
.hero__en{ font-family:var(--serif); font-style:italic; font-size:18px; color:var(--amber); letter-spacing:.02em; }
.hero__h1{ margin-top:12px; font-size:34px; line-height:1.45; }
.hero__p{ margin-top:18px; max-width:32em; color:var(--ink-2); }
.hero__meta{ margin-top:22px; display:flex; flex-wrap:wrap; gap:8px 22px; font-size:13px; letter-spacing:.06em; color:var(--mute); }
.hero__cta{ margin-top:26px; display:flex; flex-wrap:wrap; gap:12px; }
@media (min-width:860px){
  .hero{ display:grid; grid-template-columns:1.1fr .9fr; align-items:center; gap:0; }
  .hero__img{ height:min(84vh, 720px); }
  .hero__body{ padding:40px var(--g) 40px 56px; }
  .hero__h1{ font-size:46px; }
}

/* ボタン */
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:50px; padding:0 24px; border-radius:999px; font-size:14px; letter-spacing:.1em; transition:transform .25s var(--ease), background-color .25s var(--ease); }
.btn--fill{ background:var(--ink); color:var(--on-dark); }
.btn--fill:hover{ background:#000; transform:translateY(-2px); }
.btn--line{ border:1px solid var(--ink); }
.btn--line:hover{ transform:translateY(-2px); }
.btn--amber{ background:var(--amber); color:#fff; }
.btn--amber:hover{ background:var(--amber-deep); transform:translateY(-2px); }

/* 節 */
.sec{ padding:64px 0; }
.sec + .sec{ border-top:1px solid var(--line); }
.sec--cream{ background:var(--cream-2); }
.sec--dark{ background:var(--dark); color:var(--on-dark); }
.sec--dark .lbl{ color:var(--on-dark-2); }
.lbl{ font-family:var(--serif); font-style:italic; font-size:17px; color:var(--amber); letter-spacing:.02em; }
.lbl + .h2{ margin-top:10px; }
.h2{ font-size:26px; }
.h3{ font-size:19px; }
.lead{ margin-top:18px; color:var(--ink-2); max-width:34em; }
.sec--dark .lead{ color:var(--on-dark-2); }
@media (min-width:768px){ .sec{ padding:96px 0; } .h2{ font-size:34px; } .h3{ font-size:21px; } }

/* 二段 */
.two{ display:grid; gap:28px; }
.two__img{ border-radius:8px; overflow:hidden; }
.two__img img{ width:100%; aspect-ratio:4/5; object-fit:cover; }
@media (min-width:860px){ .two{ grid-template-columns:1fr 1fr; gap:56px; align-items:center; } .two--rev .two__img{ order:2; } }

/* メニュー */
.mgrid{ display:grid; gap:28px; margin-top:32px; }
.mcard img{ width:100%; aspect-ratio:1/1; object-fit:cover; border-radius:8px; }
.mcard__t{ margin-top:14px; display:flex; justify-content:space-between; align-items:baseline; gap:12px; font-family:var(--mincho); font-size:18px; }
.mcard__t .yen{ font-family:var(--serif); font-size:17px; color:var(--ink-2); white-space:nowrap; }
.mcard__d{ margin-top:6px; font-size:14px; color:var(--ink-2); }
@media (min-width:768px){ .mgrid{ grid-template-columns:repeat(3,1fr); gap:24px; } }
.mlist{ margin-top:24px; }
.mlist li{ display:flex; align-items:baseline; gap:12px; padding:14px 0; border-bottom:1px dotted var(--line-2); }
.mlist .n{ font-family:var(--mincho); font-size:17px; }
.mlist .dots{ flex:1; }
.mlist .yen{ font-family:var(--serif); font-size:18px; white-space:nowrap; }
.mlist .d{ width:100%; font-size:13px; color:var(--ink-2); margin-top:2px; }
.mlist li{ flex-wrap:wrap; }
.mlist .n, .mlist .yen{ order:1; }
.mlist .d{ order:2; }
.msec + .msec{ margin-top:44px; }
.msec .h3{ display:flex; align-items:baseline; gap:12px; }
.msec .h3 .lbl{ font-size:15px; }

/* 情報 */
.info{ display:grid; gap:0; border-top:1px solid var(--line); margin-top:28px; }
.info > div{ display:grid; gap:2px; padding:14px 0; border-bottom:1px solid var(--line); }
.info dt{ font-size:12px; letter-spacing:.14em; color:var(--mute); }
.info dd{ margin:0; }
@media (min-width:768px){ .info > div{ grid-template-columns:160px 1fr; gap:20px; padding:18px 0; } .info dt{ padding-top:4px; } }

/* よくある質問 */
.q{ border-top:1px solid var(--line); }
.q:last-child{ border-bottom:1px solid var(--line); }
.q summary{ list-style:none; cursor:pointer; display:grid; grid-template-columns:1fr 28px; gap:12px; padding:18px 0; font-family:var(--mincho); font-size:17px; }
.q summary::-webkit-details-marker{ display:none; }
.q summary::after{ content:"+"; font-family:var(--serif); font-size:26px; color:var(--amber); text-align:center; line-height:1; transition:transform .3s var(--ease); }
.q[open] summary::after{ transform:rotate(45deg); }
.q__a{ padding:0 0 20px; font-size:15px; color:var(--ink-2); max-width:40em; }

/* 特長（LP） */
.feat3{ display:grid; gap:20px; margin-top:32px; }
.feat3 > div{ padding:24px 22px; background:#fff; border:1px solid var(--line); border-radius:8px; }
.feat3 .n{ font-family:var(--serif); font-style:italic; font-size:26px; color:var(--amber); line-height:1; }
.feat3 .t{ margin-top:10px; font-family:var(--mincho); font-size:19px; }
.feat3 .d{ margin-top:8px; font-size:14px; color:var(--ink-2); }
@media (min-width:768px){ .feat3{ grid-template-columns:repeat(3,1fr); } }
.flow3{ display:grid; gap:0; margin-top:32px; }
.flow3 > div{ display:grid; grid-template-columns:48px 1fr; gap:14px; padding:20px 0; border-top:1px solid var(--line); }
.flow3 > div:last-child{ border-bottom:1px solid var(--line); }
.flow3 .n{ font-family:var(--serif); font-style:italic; font-size:30px; color:var(--amber); line-height:1; }
.flow3 .t{ font-family:var(--mincho); font-size:18px; }
.flow3 .d{ margin-top:6px; font-size:14px; color:var(--ink-2); }
.notice{ margin-top:28px; padding:18px 20px; border:1px solid var(--line-2); border-radius:8px; font-size:14px; color:var(--ink-2); background:#fff; }

/* フォーム（見本・送信しない） */
.form{ display:grid; gap:18px; max-width:600px; margin-top:28px; }
.fld{ display:grid; gap:6px; }
.fld label{ font-size:13px; letter-spacing:.1em; }
.in{ width:100%; font:inherit; font-size:16px; padding:12px 14px; border:1px solid var(--line-2); border-radius:6px; background:#fff; color:var(--ink); }
.in:focus{ outline:none; border-color:var(--ink); }
textarea.in{ min-height:140px; resize:vertical; }
.form__note{ font-size:13px; color:var(--mute); }

/* フッター */
.ft{ background:var(--dark); color:var(--on-dark-2); padding:40px 0 32px; font-size:13px; }
.ft__in{ display:grid; gap:20px; }
.ft .brand{ color:var(--on-dark); }
.ft__nav{ display:flex; flex-wrap:wrap; gap:8px 18px; letter-spacing:.1em; }
.ft__nav a:hover{ color:var(--on-dark); }
.ft__c{ font-family:var(--serif); }
@media (min-width:768px){ .ft__in{ grid-template-columns:auto 1fr auto; align-items:center; gap:40px; } .ft__nav{ justify-content:center; } }

/* 下層の頭 */
.ph{ padding:44px 0 36px; border-bottom:1px solid var(--line); }
.ph .h1{ font-size:30px; margin-top:8px; }
@media (min-width:768px){ .ph{ padding:72px 0 56px; } .ph .h1{ font-size:40px; } }

/* 動き */
.rv{ opacity:0; transform:translateY(16px); transition:opacity .8s var(--ease), transform .9s var(--ease); }
.rv.is-in{ opacity:1; transform:none; }
.hero__img img{ transform:scale(1.04); transition:transform 1.6s var(--ease); }
.is-loaded .hero__img img{ transform:none; }
@media (prefers-reduced-motion:reduce){ *{ transition:none !important; animation:none !important; } .rv{ opacity:1; transform:none; } .hero__img img{ transform:none; } }
.is-static .rv{ opacity:1; transform:none; transition:none; }
.is-static .hero__img img{ transform:none; }
@media (max-width:479px){ .hd__btn{ display:none; } .brand{ font-size:18px; letter-spacing:.08em; } }
