  :root{
    --sumi:#2B2420;
    --kinari:#EDE6D6;
    --kinari-deep:#E3D9C2;
    --kacha:#4A362A;
    --kacha-soft:#6B5643;
    --matsuba:#3C4A3A;
    --matsuba-deep:#2A362B;
    --tsuchi:#B5652E;
    --line:#C9BBA0;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--kinari);
    color:var(--sumi);
    font-family:"Zen Kaku Gothic New","Yu Gothic","Hiragino Kaku Gothic ProN","Meiryo",sans-serif;
    line-height:1.9;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  h1,h2,h3{
    font-family:"Zen Old Mincho","Yu Mincho","Hiragino Mincho ProN","YuMincho",serif;
    font-weight:600;
    margin:0;
    color:var(--kacha);
    letter-spacing:.08em;
  }
  img,svg{max-width:100%;display:block;}
  .wrap{max-width:640px;margin:0 auto;padding:0 24px;}
  .wrap-wide{max-width:1040px;margin:0 auto;padding:0 24px;}

  /* ---- reveal animation ---- */
  .reveal{opacity:0;transform:translateY(28px);transition:opacity .9s ease, transform .9s ease;}
  .reveal.is-visible{opacity:1;transform:none;}
  @media (prefers-reduced-motion: reduce){
    .reveal{opacity:1;transform:none;transition:none;}
  }

  /* ---- photo box: tone background reserved until real photo arrives ---- */
  .photo{
    position:relative;
    width:100%;
    background:
      repeating-linear-gradient(120deg, rgba(43,36,32,0.07) 0 16px, rgba(43,36,32,0.02) 16px 32px),
      linear-gradient(155deg,#DDD0AF 0%, #CBB98D 55%, #B7A170 100%);
    display:flex;
    overflow:hidden;
  }
  .photo::after{
    content:"";position:absolute;inset:10px;
    border:1px solid rgba(43,36,32,.32);
    pointer-events:none;
  }
  .photo img{
    position:absolute;inset:0;width:100%;height:100%;
    object-fit:cover;background-color:#C9B98D;
  }
  .photo.dark{
    background:
      repeating-linear-gradient(120deg, rgba(0,0,0,0.12) 0 16px, rgba(0,0,0,0.04) 16px 32px),
      linear-gradient(155deg,#4A5C4C 0%, #2F3E30 60%, #202B21 100%);
  }
  .photo.dark::after{border-color:rgba(237,230,214,.35);}
  .photo.dark img{background-color:#3A4A3B;}

  .eyebrow{
    display:block;
    font-family:"Zen Old Mincho","Yu Mincho","Hiragino Mincho ProN",serif;
    font-size:13px;
    letter-spacing:.32em;
    color:var(--tsuchi);
    margin-bottom:16px;
  }

  /* ---- hero ---- */
  .hero{position:relative;background:var(--sumi);}
  .hero .photo{
    aspect-ratio:3/4;
    min-height:420px;
  }
  .hero-vertical{
    position:absolute;
    top:40px;right:20px;
    writing-mode:vertical-rl;
    text-orientation:mixed;
    color:#F4EEDF;
    font-family:"Zen Old Mincho","Yu Mincho","Hiragino Mincho ProN",serif;
    font-size:17px;
    letter-spacing:.32em;
    line-height:1.9;
    text-shadow:0 1px 10px rgba(0,0,0,.5);
    z-index:2;
  }
  .hero-base{
    position:absolute;
    left:0;right:0;bottom:0;
    padding:0 24px 30px;
    z-index:2;
    background:linear-gradient(to top, rgba(20,16,13,0.75), rgba(20,16,13,0.02) 82%);
  }
  .hero-base .logo{
    font-family:"Zen Kaku Gothic New","Yu Gothic","Hiragino Kaku Gothic ProN","Meiryo",sans-serif;
    font-weight:400;
    color:#F7F2E4;font-size:27px;letter-spacing:.14em;margin:0 0 4px;
  }
  .hero-base .kana{
    display:block;color:#D8CBA9;font-size:11px;letter-spacing:.3em;
    font-family:"Zen Kaku Gothic New","Yu Gothic","Hiragino Kaku Gothic ProN","Meiryo",sans-serif;margin-top:6px;
  }
  .scroll-cue{
    position:absolute;right:54px;bottom:26px;z-index:2;
    color:#D8CBA9;font-size:11px;letter-spacing:.14em;
    writing-mode:vertical-rl;
  }

  /* ---- about ---- */
  .about{background:var(--kinari);padding:72px 0 0;}
  .about .photo{aspect-ratio:16/9;}
  .about-body{padding:40px 0 76px;}
  .about-body .inner{max-width:520px;margin-left:0;}
  .about h2{font-size:24px;margin-bottom:22px;}
  .about p{color:var(--kacha-soft);font-size:15.5px;max-width:520px;}

  /* ---- kodawari (filmstrip, unequal widths) ---- */
  .kodawari{background:var(--kinari-deep);padding:76px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
  .kodawari .head{display:flex;align-items:baseline;gap:18px;margin-bottom:12px;}
  .kodawari h2{font-size:23px;}
  .filmstrip{display:flex;flex-direction:column;gap:26px;margin-top:44px;}
  .film-item{flex:none;}
  .film-item .photo{aspect-ratio:4/3;}
  .film-num{
    font-family:"Zen Old Mincho","Yu Mincho",serif;font-size:13px;color:var(--tsuchi);
    letter-spacing:.24em;margin:18px 0 8px;
  }
  .film-item h3{font-size:17px;margin-bottom:8px;}
  .film-item p{color:var(--kacha-soft);font-size:14.5px;margin:0;max-width:36em;}

  /* ---- menu ---- */
  .menu{background:var(--kinari);padding:76px 0;}
  .menu .head{margin-bottom:44px;}
  .menu h2{font-size:23px;}
  .menu-cat{max-width:640px;margin:0 auto 38px;border-left:2px solid var(--tsuchi);padding-left:20px;}
  .menu-cat h3{
    font-family:"Zen Old Mincho","Yu Mincho",serif;font-size:15px;color:var(--matsuba);
    letter-spacing:.18em;margin-bottom:16px;font-weight:600;
  }
  .menu-item{
    display:flex;gap:16px;align-items:center;
    padding:13px 0;border-bottom:1px dotted var(--line);
  }
  .menu-item:last-child{border-bottom:none;}
  .menu-thumb{flex:0 0 68px;width:68px;height:68px;}
  .menu-info{flex:1;min-width:0;}
  .menu-name{font-size:15.5px;color:var(--sumi);}
  .menu-note{font-size:12px;color:var(--tsuchi);margin-top:2px;}
  .menu-price{
    font-family:"Zen Old Mincho","Yu Mincho",serif;font-size:16px;color:var(--kacha);
    white-space:nowrap;
  }
  .menu-foot{text-align:left;font-size:12.5px;color:var(--kacha-soft);max-width:640px;margin:8px auto 0;padding-left:22px;}

  /* ---- gallery (uneven grid, full-bleed, no side padding) ---- */
  .gallery{background:var(--sumi);padding:76px 0;}
  .gallery .head{padding:0 24px;margin-bottom:8px;}
  .gallery .head .eyebrow{color:#D8AE7F;}
  .gallery h2{color:#F4EEDF;font-size:23px;}
  .gallery-lead{color:#C9BBA0;font-size:14.5px;padding:0 24px;margin:14px 0 0;}
  .g-grid{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    grid-auto-rows:120px;
    gap:3px;
    margin-top:36px;
  }
  .g-grid .photo{height:100%;aspect-ratio:auto;}
  .g-big{grid-column:span 2;grid-row:span 2;}
  .g-tall{grid-row:span 2;}
  .g-wide{grid-column:span 2;}

  /* ---- info ---- */
  .info{background:var(--kinari);padding:76px 0;}
  .info h2{font-size:23px;}
  .info-list{max-width:520px;margin:40px 0 0;border-top:1px solid var(--line);}
  .info-row{
    display:flex;justify-content:space-between;gap:20px;
    padding:15px 2px;border-bottom:1px solid var(--line);font-size:14.5px;
  }
  .info-row .label{color:var(--matsuba);flex:0 0 6.4em;letter-spacing:.06em;}
  .info-row .value{color:var(--sumi);text-align:right;}
  .map-block{margin-top:44px;max-width:640px;}
  .map-block .photo{aspect-ratio:16/9;}
  .map-caption{font-size:14px;color:var(--kacha-soft);margin-top:14px;}
  .info-note{
    margin-top:26px;font-size:13px;color:var(--kacha-soft);
    border-left:2px solid var(--tsuchi);padding:4px 0 4px 16px;max-width:520px;
  }

  /* ---- footer ---- */
  .site-footer{background:var(--matsuba-deep);color:#E9E2CE;text-align:left;padding:60px 24px 30px;}
  .site-footer .wrap{text-align:left;padding:0;}
  .site-footer .f-logo{font-family:"Zen Old Mincho","Yu Mincho",serif;font-size:22px;letter-spacing:.12em;margin:0 0 10px;color:#F4EEDF;}
  .site-footer .f-message{font-size:13.5px;color:#C7BE9E;margin-bottom:26px;}
  .sns-row{display:flex;gap:20px;margin-bottom:30px;}
  .sns-row a{
    color:#E9E2CE;text-decoration:none;
    width:38px;height:38px;border:1px solid #5A6558;border-radius:50%;
    display:flex;align-items:center;justify-content:center;font-size:12.5px;
  }
  .made-note{
    font-size:14px;color:#F7F2E4;background:rgba(255,255,255,0.06);
    display:inline-block;padding:10px 20px;margin-bottom:16px;letter-spacing:.02em;
  }
  .copyright{font-size:11.5px;color:#8B9184;margin:0;}

  @media (min-width:860px){
    .wrap,.wrap-wide{padding:0 48px;}
    .hero .photo{aspect-ratio:21/9;min-height:640px;}
    .hero-vertical{top:60px;right:56px;font-size:19px;}
    .hero-base{padding:0 56px 52px;}
    .hero-base .logo{font-size:42px;}
    .scroll-cue{right:56px;bottom:40px;}

    .about{padding:120px 0 0;}
    .about-body{padding:56px 0 120px;}
    .about-body .inner{margin-left:auto;margin-right:0;max-width:46%;}
    .about h2{font-size:30px;}

    .kodawari{padding:120px 0;}
    .kodawari h2{font-size:28px;}
    .filmstrip{flex-direction:row;align-items:flex-start;gap:20px;}
    .film-item:nth-child(1){flex:1 1 45%;}
    .film-item:nth-child(2){flex:1 1 30%;}
    .film-item:nth-child(3){flex:1 1 25%;}
    .film-item:nth-child(1) .photo{aspect-ratio:5/4;}
    .film-item:nth-child(2) .photo{aspect-ratio:3/4;}
    .film-item:nth-child(3) .photo{aspect-ratio:3/4;}

    .menu{padding:120px 0;}
    .menu h2{font-size:28px;}

    .gallery{padding:120px 0;}
    .gallery h2{font-size:28px;}
    .g-grid{grid-template-columns:repeat(4,1fr);grid-auto-rows:180px;}
    .g-big{grid-column:span 4;}

    .info{padding:120px 0;}
    .info h2{font-size:28px;}

    .site-footer{padding:80px 56px 36px;}
  }
