  /* ---------- THEME TOKENS (override here or via SITE.theme) ---------- */
  :root{
    --indigo:#18233B;      /* deep base — noren / shibori indigo   */
    --indigo-2:#101829;    /* darker indigo for footer / depth     */
    --sumi:#13151B;        /* sumi ink — near-black text on light  */
    --washi:#F3ECDD;       /* warm rice-paper cream                */
    --washi-2:#EAE0CC;     /* slightly deeper paper                */
    --kinari:#C8BCA4;      /* muted taupe — secondary text         */
    --maguro:#B23A2E;      /* tuna red — primary accent (sparing)  */
    --maguro-hi:#C9483A;   /* hover red                            */
    --kohaku:#C8923D;      /* sake amber — fine details / stars    */
    --rule-dark:rgba(243,236,221,.18);
    --rule-light:rgba(19,21,27,.18);

    --display:'Shippori Mincho', Georgia, serif;
    --body:'Zen Kaku Gothic New', system-ui, -apple-system, sans-serif;

    --maxw:1180px;
    --pad:clamp(20px,5vw,64px);
    --sect:clamp(64px,9vw,128px);
    --r:14px;
    --ease:cubic-bezier(.2,.7,.2,1);
  }

  *{box-sizing:border-box;margin:0;padding:0}
  html{scroll-behavior:smooth}
  @media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
  body{
    font-family:var(--body);
    background:var(--washi);
    color:var(--sumi);
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  img{display:block;max-width:100%}
  a{color:inherit;text-decoration:none}
  button{font-family:inherit;cursor:pointer;border:none;background:none}
  :focus-visible{outline:2px solid var(--kohaku);outline-offset:3px;border-radius:4px}

  .wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad)}
  .section{padding-block:var(--sect)}

  /* eyebrow / kicker label */
  .eyebrow{
    font-size:.72rem;font-weight:700;letter-spacing:.28em;text-transform:uppercase;
    color:var(--kohaku);display:inline-flex;align-items:center;gap:.7em;margin-bottom:1.1rem;
  }
  .eyebrow::before{content:"";width:28px;height:1px;background:var(--kohaku);opacity:.7}

  h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.08;letter-spacing:-.01em}
  .h-xl{font-size:clamp(2.6rem,7vw,5rem)}
  .h-lg{font-size:clamp(2rem,4.6vw,3.2rem)}
  .h-md{font-size:clamp(1.3rem,2.4vw,1.7rem)}

  /* ---------- buttons ---------- */
  .btn{
    display:inline-flex;align-items:center;justify-content:center;gap:.55em;
    padding:.92em 1.7em;font-weight:700;font-size:.92rem;letter-spacing:.02em;
    border-radius:999px;transition:transform .25s var(--ease),background .25s,color .25s,border-color .25s;
    white-space:nowrap;
  }
  .btn-fill{background:var(--maguro);color:var(--washi)}
  .btn-fill:hover{background:var(--maguro-hi);transform:translateY(-2px)}
  .btn-ghost{border:1px solid currentColor;color:inherit}
  .btn-ghost:hover{transform:translateY(-2px);background:rgba(255,255,255,.06)}
  .btn-ghost.on-light:hover{background:rgba(19,21,27,.05)}

  /* =================== TOP UTILITY BAR =================== */
  .topbar{
    background:var(--indigo-2);color:var(--washi);font-size:.8rem;
    border-bottom:1px solid var(--rule-dark);position:relative;z-index:60;
  }
  .topbar .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;height:40px}
  .topbar a{display:inline-flex;align-items:center;gap:.45em;opacity:.92;transition:opacity .2s}
  .topbar a:hover{opacity:1;color:var(--kohaku)}
  .topbar .tb-tag{color:var(--kinari);letter-spacing:.06em}
  @media(max-width:680px){.topbar .tb-tag{display:none}}

  /* =================== NAV =================== */
  .nav{
    position:sticky;top:0;z-index:50;background:var(--indigo);
    transition:background .35s var(--ease),box-shadow .35s,padding .35s;
    padding-block:18px;
  }
  .nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:1.2rem}
  .nav.scrolled{background:var(--indigo);box-shadow:0 6px 30px rgba(0,0,0,.28);padding-block:11px}
  .brand{font-family:var(--display);font-weight:700;font-size:1.45rem;color:var(--washi);letter-spacing:.04em;line-height:1;display:flex;align-items:center;gap:.5rem}
  .brand .mark{
    width:34px;height:34px;border-radius:50%;display:grid;place-items:center;
    background:var(--maguro);color:var(--washi);font-size:1rem;font-weight:700;flex:none;
  }
  .nav-links{display:flex;align-items:center;gap:1.6rem;list-style:none}
  .nav-links a{color:var(--washi);font-size:.92rem;font-weight:500;opacity:.9;position:relative;padding-block:.3em;transition:opacity .2s}
  .nav-links a::after{content:"";position:absolute;left:0;bottom:0;height:1.5px;width:0;background:var(--kohaku);transition:width .25s var(--ease)}
  .nav-links a:hover{opacity:1}
  .nav-links a:hover::after{width:100%}
  .nav-cta{display:flex;align-items:center;gap:.8rem}
  .nav-toggle{display:none;width:42px;height:42px;border-radius:10px;color:var(--washi);align-items:center;justify-content:center}
  .nav-toggle svg{width:24px;height:24px}

  @media(max-width:920px){
    .nav-links{
      position:fixed;inset:0 0 0 auto;width:min(80vw,330px);background:var(--indigo-2);
      flex-direction:column;align-items:flex-start;justify-content:center;gap:1.4rem;
      padding:2rem var(--pad);transform:translateX(110%);transition:transform .4s var(--ease);
      box-shadow:-20px 0 60px rgba(0,0,0,.4);z-index:70;
    }
    .nav-links.open{transform:translateX(0)}
    .nav-links a{font-size:1.2rem}
    .nav-toggle{display:inline-flex}
    .nav-cta .btn{display:none}
    .nav-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);opacity:0;visibility:hidden;transition:.3s;z-index:65}
    .nav-backdrop.show{opacity:1;visibility:visible}
  }

  /* =================== HERO =================== */
  .hero{position:relative;background:var(--indigo);color:var(--washi);overflow:hidden;margin-top:-1px}
  .hero-media{position:absolute;inset:0;z-index:0}
  .hero-media::after{content:"";position:absolute;inset:0;
    background:linear-gradient(180deg,rgba(16,24,41,.55) 0%,rgba(16,24,41,.78) 60%,var(--indigo) 100%);}
  .hero .wrap{position:relative;z-index:2;padding-block:clamp(90px,16vh,180px) clamp(80px,12vh,140px)}
  .hero-inner{max-width:760px}
  .hero .eyebrow{display:flex}
  .hero h1{margin:.4rem 0 0;position:relative;display:inline-block}
  .hero-brush{position:absolute;left:-2%;bottom:-.22em;width:104%;height:.5em;color:var(--maguro);pointer-events:none}
  .hero-brush path{fill:currentColor}
  .hero-sub{font-size:clamp(1.05rem,1.8vw,1.32rem);color:var(--kinari);max-width:46ch;margin-top:1.6rem}
  .hero-cta{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:2.2rem}
  /* vertical tate-gaki accent */
  .hero-vertical{
    position:absolute;right:clamp(14px,3vw,46px);top:50%;transform:translateY(-50%);z-index:2;
    writing-mode:vertical-rl;text-orientation:mixed;font-family:var(--display);
    font-size:.86rem;letter-spacing:.42em;color:var(--washi);opacity:.5;
  }
  @media(max-width:760px){.hero-vertical{display:none}}

  /* small running marquee under hero */
  .strip{background:var(--indigo-2);color:var(--kinari);border-top:1px solid var(--rule-dark);border-bottom:1px solid var(--rule-dark);overflow:hidden}
  .strip-track{display:flex;gap:3rem;white-space:nowrap;padding:14px 0;animation:marq 28s linear infinite;font-size:.82rem;letter-spacing:.22em;text-transform:uppercase;font-weight:500}
  .strip-track span{display:inline-flex;align-items:center;gap:3rem}
  .strip-track span::after{content:"✦";color:var(--maguro)}
  @keyframes marq{to{transform:translateX(-50%)}}
  @media(prefers-reduced-motion:reduce){.strip-track{animation:none}}

  /* =================== generic image slot / placeholder =================== */
  .img-slot{position:relative;background-size:cover;background-position:center;overflow:hidden}
  .img-slot.placeholder{
    background:
      radial-gradient(120% 120% at 20% 10%,rgba(200,146,61,.14),transparent 55%),
      linear-gradient(150deg,var(--indigo) 0%,var(--indigo-2) 100%);
  }
  .img-slot.placeholder.light{
    background:
      radial-gradient(120% 120% at 80% 0%,rgba(178,58,46,.10),transparent 55%),
      linear-gradient(150deg,var(--washi-2) 0%,#dccfb4 100%);
  }
  .img-slot.placeholder::before{
    content:attr(data-label);position:absolute;inset:0;display:grid;place-items:center;text-align:center;
    font-family:var(--display);font-size:1.05rem;letter-spacing:.18em;text-transform:uppercase;
    color:var(--kinari);opacity:.55;padding:1rem;
  }
  .img-slot.placeholder.light::before{color:#8c7f63}

  /* =================== STORY =================== */
  .story{background:var(--washi)}
  .story-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:center}
  .story-media{aspect-ratio:5/6;border-radius:var(--r)}
  .story-body p{color:#4a463c;font-size:1.06rem;margin-top:1.2rem;max-width:48ch}
  .story-body .btn{margin-top:1.8rem}
  @media(max-width:820px){.story-grid{grid-template-columns:1fr}.story-media{aspect-ratio:16/11;order:-1}}

  /* =================== FEATURED =================== */
  .featured{background:var(--indigo);color:var(--washi)}
  .sec-head{margin-bottom:clamp(2rem,4vw,3.2rem);max-width:640px}
  .sec-head .eyebrow{color:var(--kohaku)}
  .featured .sec-head h2,.menu .sec-head h2,.reviews .sec-head h2{margin-top:.2rem}
  .dish-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem}
  .dish{background:rgba(255,255,255,.04);border:1px solid var(--rule-dark);border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column;transition:transform .35s var(--ease),border-color .35s,background .35s}
  .dish:hover{transform:translateY(-6px);border-color:rgba(200,146,61,.5);background:rgba(255,255,255,.06)}
  .dish-img{aspect-ratio:4/3}
  .dish-body{padding:1.4rem 1.4rem 1.5rem;display:flex;flex-direction:column;flex:1}
  .dish-body h3{font-size:1.32rem;display:flex;justify-content:space-between;align-items:baseline;gap:.6rem}
  .dish-body h3 .price{font-size:1.1rem;color:var(--kohaku);flex:none}
  .dish-body p{font-size:.92rem;color:var(--kinari);margin:.6rem 0 1.2rem;flex:1}
  .dish-body .order{font-weight:700;font-size:.85rem;letter-spacing:.14em;text-transform:uppercase;color:var(--washi);display:inline-flex;align-items:center;gap:.5em;transition:gap .25s,color .25s}
  .dish-body .order:hover{gap:.85em;color:var(--kohaku)}
  @media(max-width:820px){.dish-grid{grid-template-columns:1fr;gap:1.2rem;max-width:440px;margin-inline:auto}}

  /* =================== MENU (tabbed) =================== */
  .menu{background:var(--washi)}
  .menu-top{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:1.5rem;margin-bottom:2.4rem}
  .tabs{display:inline-flex;gap:.4rem;background:var(--washi-2);padding:.4rem;border-radius:999px;flex-wrap:wrap}
  .tab{padding:.6em 1.25em;border-radius:999px;font-weight:700;font-size:.85rem;letter-spacing:.06em;color:#6f664f;transition:.25s}
  .tab[aria-selected="true"]{background:var(--indigo);color:var(--washi)}
  .menu-cols{display:grid;grid-template-columns:1fr 1fr;gap:1rem 3.5rem}
  .panel{display:none}
  .panel.active{display:grid;grid-template-columns:1fr 1fr;gap:1rem 3.5rem}
  .m-item{padding:1.05rem 0;border-bottom:1px solid var(--rule-light)}
  .m-row{display:flex;align-items:baseline;gap:.6rem}
  .m-row .nm{font-family:var(--display);font-size:1.18rem;font-weight:600}
  .m-row .dots{flex:1;border-bottom:1px dotted rgba(19,21,27,.35);transform:translateY(-.28em)}
  .m-row .pr{font-family:var(--display);font-size:1.12rem;color:var(--maguro);font-weight:600;flex:none}
  .m-item p{font-size:.9rem;color:#5d5747;margin-top:.35rem;max-width:42ch}
  .menu-foot{margin-top:2.6rem;text-align:center}
  @media(max-width:760px){.menu-cols,.panel.active{grid-template-columns:1fr}}

  /* =================== GALLERY =================== */
  .gallery{background:var(--indigo-2);padding-block:clamp(20px,4vw,28px)}
  .gal-track{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding-inline:var(--pad);scrollbar-width:none}
  .gal-track::-webkit-scrollbar{display:none}
  .gal-item{flex:0 0 clamp(220px,30vw,320px);aspect-ratio:4/5;border-radius:10px;scroll-snap-align:center;border:1px solid var(--rule-dark)}

  /* =================== RESERVATIONS band =================== */
  .reserve{position:relative;background:var(--indigo);color:var(--washi);text-align:center;overflow:hidden}
  .reserve-media{position:absolute;inset:0;z-index:0;opacity:.4}
  .reserve-media::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,var(--indigo),rgba(24,35,59,.7))}
  .reserve .wrap{position:relative;z-index:2}
  .reserve p{color:var(--kinari);max-width:44ch;margin:1.1rem auto 0;font-size:1.05rem}
  .reserve .btn{margin-top:2rem}

  /* =================== REVIEWS =================== */
  .reviews{background:var(--washi)}
  .rev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
  .rev{background:#fff;border:1px solid var(--rule-light);border-radius:var(--r);padding:1.8rem 1.6rem;display:flex;flex-direction:column}
  .stars{color:var(--kohaku);letter-spacing:.12em;font-size:.95rem;margin-bottom:1rem}
  .rev blockquote{font-family:var(--display);font-size:1.12rem;line-height:1.5;color:var(--sumi);flex:1}
  .rev .who{margin-top:1.3rem;font-size:.82rem;letter-spacing:.06em;color:#7a7259}
  .rev .who b{display:block;font-size:.95rem;letter-spacing:0;color:var(--sumi);font-weight:700;margin-bottom:.1rem;font-family:var(--body)}
  @media(max-width:880px){.rev-grid{grid-template-columns:1fr;max-width:520px;margin-inline:auto}}

  /* =================== FAQ =================== */
  .faq{background:var(--indigo);color:var(--washi)}
  .faq-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(2rem,5vw,4rem);align-items:start}
  .faq-list{border-top:1px solid var(--rule-dark)}
  .qa{border-bottom:1px solid var(--rule-dark)}
  .qa button{width:100%;text-align:left;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.3rem 0;color:var(--washi);font-family:var(--display);font-size:1.15rem;font-weight:500}
  .qa .ic{flex:none;width:24px;height:24px;border:1px solid var(--rule-dark);border-radius:50%;display:grid;place-items:center;transition:transform .3s,background .3s,color .3s;position:relative}
  .qa .ic::before,.qa .ic::after{content:"";position:absolute;background:currentColor;transition:.3s}
  .qa .ic::before{width:11px;height:1.5px}
  .qa .ic::after{width:1.5px;height:11px}
  .qa[aria-expanded="true"] .ic{background:var(--maguro);border-color:var(--maguro)}
  .qa[aria-expanded="true"] .ic::after{transform:scaleY(0)}
  .qa .ans{max-height:0;overflow:hidden;transition:max-height .35s var(--ease)}
  .qa .ans p{color:var(--kinari);padding-bottom:1.3rem;max-width:54ch;font-size:.98rem}
  @media(max-width:820px){.faq-grid{grid-template-columns:1fr}}

  /* =================== NEWSLETTER =================== */
  .news{background:var(--washi-2)}
  .news-card{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center;background:var(--indigo);color:var(--washi);border-radius:calc(var(--r) + 6px);padding:clamp(2rem,5vw,3.6rem)}
  .news-card h2{font-size:clamp(1.6rem,3vw,2.3rem)}
  .news-card p{color:var(--kinari);margin-top:.8rem;max-width:38ch}
  .news-form{display:flex;flex-direction:column;gap:.8rem}
  .news-form .row{display:flex;gap:.8rem}
  .field{width:100%}
  .field input{width:100%;padding:.95em 1.1em;border-radius:10px;border:1px solid var(--rule-dark);background:rgba(255,255,255,.06);color:var(--washi);font-family:inherit;font-size:.95rem}
  .field input::placeholder{color:var(--kinari)}
  .field input:focus{outline:none;border-color:var(--kohaku);background:rgba(255,255,255,.1)}
  .news-form .btn{margin-top:.3rem}
  .form-note{font-size:.84rem;color:var(--kohaku);min-height:1.2em}
  @media(max-width:760px){.news-card{grid-template-columns:1fr}.news-form .row{flex-direction:column}}

  /* =================== FOOTER =================== */
  footer{background:var(--indigo-2);color:var(--kinari);padding-top:clamp(48px,7vw,80px)}
  .foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:2.5rem}
  .foot-brand .brand{margin-bottom:1.1rem}
  .foot-brand p{font-size:.92rem;max-width:32ch;line-height:1.7}
  .socials{display:flex;gap:.7rem;margin-top:1.3rem}
  .socials a{width:38px;height:38px;border:1px solid var(--rule-dark);border-radius:50%;display:grid;place-items:center;color:var(--washi);transition:.25s}
  .socials a:hover{background:var(--maguro);border-color:var(--maguro)}
  .socials svg{width:17px;height:17px}
  .foot-col h4{font-family:var(--body);color:var(--washi);font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;margin-bottom:1.1rem}
  .foot-col ul{list-style:none;display:flex;flex-direction:column;gap:.65rem}
  .foot-col a,.foot-col li{font-size:.92rem;transition:color .2s}
  .foot-col a:hover{color:var(--kohaku)}
  .foot-bottom{border-top:1px solid var(--rule-dark);margin-top:clamp(40px,6vw,64px);padding-block:1.6rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:.6rem;font-size:.82rem}
  @media(max-width:880px){.foot-grid{grid-template-columns:1fr 1fr}}
  @media(max-width:520px){.foot-grid{grid-template-columns:1fr}}

  /* =================== COUPON MODAL =================== */
  .coupon{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:1.2rem;
    background:rgba(16,24,41,.62);opacity:0;visibility:hidden;transition:.35s}
  .coupon.show{opacity:1;visibility:visible}
  .coupon-card{position:relative;width:min(440px,100%);background:var(--washi);border-radius:18px;
    padding:clamp(2rem,5vw,2.8rem);text-align:center;transform:translateY(16px) scale(.98);
    transition:transform .4s var(--ease);box-shadow:0 30px 80px rgba(0,0,0,.4)}
  .coupon.show .coupon-card{transform:none}
  .coupon-card .eyebrow{justify-content:center}
  .coupon-card h3{font-size:clamp(1.5rem,4vw,2rem);color:var(--sumi)}
  .coupon-card .fine{font-size:.82rem;color:#6f664f;margin:.9rem auto 1.5rem;max-width:34ch;line-height:1.6}
  .coupon-card .field input{background:#fff;border:1px solid var(--rule-light);color:var(--sumi)}
  .coupon-card .field input::placeholder{color:#9a917a}
  .coupon-card .btn{width:100%;margin-top:.8rem}
  .coupon-close{position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:50%;
    display:grid;place-items:center;color:#6f664f;font-size:1.3rem;line-height:1;transition:.2s}
  .coupon-close:hover{background:var(--washi-2);color:var(--sumi)}

  /* reveal on scroll */
  [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
  [data-reveal].in-view{opacity:1;transform:none}
  @media(prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transform:none;transition:none}}

  noscript{display:block;padding:1rem var(--pad);background:var(--maguro);color:#fff;text-align:center;font-size:.9rem}

  /* =================== MULTI-PAGE ADDITIONS =================== */
  /* active nav item (aria-current="page" is set by js/main.js) */
  .nav-links a[aria-current="page"]{opacity:1}
  .nav-links a[aria-current="page"]::after{width:100%}
