/* ==========================================================================
   OISHI SUSHI · « Sumi & Dusk — The Midnight Counter »
   Système de design + composants
   ========================================================================== */

/* ---------------------------------------------------------------- TOKENS -- */
:root {
  /* Palette */
  --sumi:#0D0B0A; --sumi-raise:#16120F; --sumi-raise-2:#1F1A15; --charcoal-line:#2A241F;
  --washi:#EDE6D8; --washi-dim:#B9B0A2; --stone:#9B948A;
  --shu:#E0322B; --shu-soft:#F4794E; --shu-ink:#4A160B;
  --kin:#C9A65C; --kin-bright:#E9C77C; --amber-dusk:#E89A2C; --ember:#F08A3C;

  /* L'âme des sushis — couleurs ingrédients vibrantes */
  --maguro:#E0322B;   /* thon rouge */
  --salmon:#F4794E;   /* saumon */
  --salmon-2:#FF9166; /* saumon clair */
  --tobiko:#F59331;   /* œufs orange */
  --tamago:#F2B53D;   /* omelette / uni */
  --matcha:#7FA34A;   /* thé vert / wasabi */
  --avo:#8FB45A;      /* avocat */
  --ginger:#F0B7B0;   /* gingembre */
  --ai:#2C4C73;       /* indigo / ai */
  --ai-2:#3E6CA0;
  --nori:#1E2A20;

  /* Base claire (sections « washi » chaleureuses) */
  --cream:#F7EDDD; --cream-2:#FFFFFF; --cream-3:#FBF4E9; --cream-line:#E5D8C3;
  --ink:#241914; --ink-soft:#6A574A; --ink-faint:#917D6C;

  /* Dégradés */
  --grad-dusk-glow:radial-gradient(120% 90% at 50% 0%, rgba(232,154,44,.20) 0%, rgba(216,68,42,.10) 38%, rgba(13,11,10,0) 72%);
  --grad-ember-pool:radial-gradient(60% 60% at 50% 45%, rgba(216,68,42,.16) 0%, rgba(194,65,12,.05) 55%, rgba(194,65,12,0) 100%);
  --grad-ink-vignette:radial-gradient(140% 120% at 50% 35%, rgba(13,11,10,0) 40%, rgba(13,11,10,.55) 78%, rgba(8,7,6,.9) 100%);
  --grad-gold-sheen:linear-gradient(115deg, #7A5A24 0%, #E9C77C 42%, #C9A65C 58%, #6E521F 100%);
  --grad-shu-fade:linear-gradient(135deg, #D8442A 0%, #E97A52 100%);
  --grad-shu-btn:linear-gradient(135deg, #A6321B 0%, #BA3820 100%); /* assez sombre pour AA avec --washi */
  --grad-film-top:linear-gradient(180deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,0) 100%);
  --grad-sushi:linear-gradient(120deg, var(--maguro) 0%, var(--salmon) 40%, var(--tobiko) 72%, var(--tamago) 100%);

  /* Typographie */
  --font-display:'Fraunces', Georgia, 'Times New Roman', serif;
  --font-sans:'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-jp:'Zen Kaku Gothic New', 'Hiragino Sans', 'Yu Gothic', sans-serif;
  --font-mono:'Space Mono', ui-monospace, 'SFMono-Regular', monospace;

  --fs-display:clamp(3.5rem, 1.8rem + 7.2vw, 8rem);
  --fs-h1:clamp(2.5rem, 1.6rem + 3.6vw, 4.25rem);
  --fs-h2:clamp(1.75rem, 1.3rem + 1.8vw, 2.5rem);
  --fs-h3:clamp(1.25rem, 1.05rem + 0.8vw, 1.5rem);
  --fs-lead:clamp(1.125rem, 1rem + 0.5vw, 1.375rem);
  --fs-body:clamp(1rem, 0.96rem + 0.2vw, 1.0625rem);
  --fs-ui:clamp(0.9375rem, 0.9rem + 0.15vw, 1rem);
  --fs-caption:clamp(0.75rem, 0.72rem + 0.12vw, 0.8125rem);

  /* Espacements */
  --space-2xs:.25rem; --space-xs:.5rem; --space-sm:.75rem; --space-md:1rem;
  --space-lg:1.5rem; --space-xl:2.5rem; --space-2xl:4rem; --space-3xl:6.5rem; --space-4xl:10rem;
  --space-section:clamp(5rem, 3rem + 9vw, 11rem);
  --container:1240px; --container-wide:1440px;

  /* Rayons */
  --radius-xs:4px; --radius-sm:8px; --radius-md:12px; --radius-lg:18px;
  --radius-xl:28px; --radius-pill:999px; --radius-card:16px;

  /* Ombres */
  --shadow-card:0 1px 0 rgba(237,230,216,.03) inset, 0 18px 40px -24px rgba(0,0,0,.8);
  --shadow-raise:0 24px 60px -28px rgba(0,0,0,.85), 0 2px 8px -4px rgba(0,0,0,.6);
  --shadow-drawer:-32px 0 80px -40px rgba(0,0,0,.9);
  --shadow-ember:0 0 0 1px rgba(201,166,92,.18), 0 22px 46px -26px rgba(0,0,0,.62);
  --shadow-focus-gold:0 0 0 2px var(--sumi), 0 0 0 4px rgba(201,166,92,.7);

  /* Mouvement */
  --ease-sumi:cubic-bezier(0.16,1,0.3,1);
  --ease-standard:cubic-bezier(0.4,0,0.2,1);
  --ease-enter:cubic-bezier(0,0,0.2,1);
  --ease-exit:cubic-bezier(0.4,0,1,1);
  --ease-brush:cubic-bezier(0.65,0,0.35,1);
  --dur-fast:180ms; --dur-base:320ms; --dur-slow:560ms;
  --dur-cinematic:900ms; --dur-brush:1200ms; --dur-curtain:1400ms;

  --nav-h:80px;
}

/* ------------------------------------------------------------------ RESET -- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto !important}
.lenis.lenis-stopped{overflow:hidden}
body{
  font-family:var(--font-sans);font-size:var(--fs-body);line-height:1.7;
  color:var(--washi);
  background:radial-gradient(125% 90% at 50% -8%, #1d130d 0%, #0c0a08 54%), #0b0908;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:hidden;min-height:100vh;
}
/* Canvas 3D fixe, derrière le contenu */
#sushi3d{position:fixed;inset:0;width:100vw;height:100vh;z-index:0;pointer-events:none;opacity:.85;transition:opacity var(--dur-slow) var(--ease-sumi)}
main{position:relative;z-index:1}
/* Les sections sombres sont opaques (elles couvrent le canvas) ; le 3D se révèle
   dans le héro et dans la bande .section--3d laissées transparentes */
/* Sections sombres légèrement translucides : les sushis 3D dérivent derrière
   (ambiance « bouge avec la page »), texte lisible grâce au voile + vignette */
.stats,.section:not(.section--light):not(.section--3d),.footer{background:rgba(13,11,10,.84)}
img,svg{display:block;max-width:100%}
button,input,textarea,select{font:inherit;color:inherit}
button{background:none;border:none;cursor:pointer}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
::selection{background:var(--shu);color:var(--washi)}
:focus-visible{outline:none;box-shadow:var(--shadow-focus-gold);border-radius:var(--radius-xs)}
.skip-link{position:fixed;top:.75rem;left:.75rem;z-index:9999;background:var(--sumi-raise);color:var(--washi);border:1px solid var(--kin);border-radius:var(--radius-pill);padding:.6rem 1.1rem;font-size:var(--fs-ui);font-weight:500;transform:translateY(-180%);transition:transform var(--dur-base) var(--ease-sumi)}
.skip-link:focus{transform:none}

/* ------------------------------------------------------------ TYPOGRAPHIE -- */
h1,h2,h3,h4{font-family:var(--font-display);font-weight:400;line-height:1.05;letter-spacing:-.01em;color:var(--washi)}
.u-jp{font-family:var(--font-jp);font-weight:500}
.u-mono{font-family:var(--font-mono);font-feature-settings:"tnum" 1}
.eyebrow{
  display:inline-flex;align-items:center;gap:.6em;
  font-size:var(--fs-caption);font-weight:500;letter-spacing:.18em;text-transform:uppercase;
  color:var(--kin);
}
.eyebrow::before{content:"";width:26px;height:1px;background:linear-gradient(90deg,transparent,var(--kin))}
.eyebrow.is-centered::after{content:"";width:26px;height:1px;background:linear-gradient(270deg,transparent,var(--kin))}
.lead{font-size:var(--fs-lead);line-height:1.6;color:var(--washi-dim)}
.dim{color:var(--washi-dim)}
.section-title{font-size:var(--fs-h1);max-width:18ch}
.pull-quote{
  font-family:var(--font-display);font-style:italic;font-weight:400;
  font-size:var(--fs-lead);color:var(--washi);line-height:1.5;
}

/* --------------------------------------------------------------- LAYOUT ---- */
.container{width:min(100% - 2.5rem, var(--container));margin-inline:auto}
.container-wide{width:min(100% - 2.5rem, var(--container-wide));margin-inline:auto}
.section{padding-block:var(--space-section);position:relative}
.section--tight{padding-block:var(--space-3xl)}
.grid{display:grid;gap:var(--space-xl)}
.center{text-align:center}
.section-head{max-width:62ch;margin-bottom:var(--space-2xl)}
.section-head.is-centered{margin-inline:auto;text-align:center}
.section-head.is-centered .section-title{max-width:24ch;margin-inline:auto}

/* --------------------------------------------------------------- MOTIFS ---- */
/* Grain + vignette cinématographiques (au-dessus de la page, sous l'UI) */
.fx-overlay{position:fixed;inset:0;pointer-events:none;z-index:60}
.fx-grain{
  position:absolute;inset:-50%;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.fx-vignette{position:absolute;inset:0;background:var(--grad-ink-vignette)}

/* Seigaiha (青海波) en fond de section */
.seigaiha{
  position:absolute;inset:0;pointer-events:none;opacity:.14;z-index:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='44' viewBox='0 0 88 44'%3E%3Cg fill='none' stroke='%23C9A65C' stroke-width='1'%3E%3Cpath d='M0 44 A22 22 0 0 1 44 44 A22 22 0 0 1 88 44'/%3E%3Cpath d='M0 44 A15 15 0 0 1 44 44 A15 15 0 0 1 88 44' opacity='.7'/%3E%3Cpath d='M0 44 A8 8 0 0 1 44 44 A8 8 0 0 1 88 44' opacity='.5'/%3E%3Cpath d='M-44 44 A22 22 0 0 1 0 44 M44 44 A22 22 0 0 1 88 44' /%3E%3C/g%3E%3C/svg%3E");
  background-size:88px 44px;
}
.seigaiha--faint{opacity:.07}

/* Filet d'or */
.hairline{height:1px;border:none;background:linear-gradient(90deg,transparent,var(--kin),transparent);opacity:.4;margin-block:var(--space-2xl)}

/* Trait de pinceau (séparateur SVG) */
.brush-divider{display:block;width:min(100%,420px);height:30px;margin-inline:auto}
.brush-divider path{stroke:var(--shu);stroke-width:4;fill:none;stroke-linecap:round}

/* Ghost glyph (ma 間 / négatif) */
.ghost-glyph{
  position:absolute;font-family:var(--font-jp);font-weight:700;color:var(--washi);
  opacity:.035;line-height:1;pointer-events:none;user-select:none;z-index:0;
  font-size:clamp(9rem,32vw,26rem);
}

/* ------------------------------------------------------------- BOUTONS ----- */
.btn{
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.55em;
  font-family:var(--font-sans);font-size:var(--fs-ui);font-weight:500;letter-spacing:.01em;
  padding:.85rem 1.75rem;border-radius:var(--radius-pill);
  transition:transform var(--dur-base) var(--ease-standard), box-shadow var(--dur-base) var(--ease-standard), letter-spacing var(--dur-base) var(--ease-standard), background var(--dur-base) var(--ease-standard), color var(--dur-base) var(--ease-standard);
  white-space:nowrap;will-change:transform;
}
.btn:active{transform:scale(.97)}
.btn--primary{background:var(--grad-shu-btn);color:var(--washi);box-shadow:var(--shadow-ember)}
.btn--primary:hover{letter-spacing:.03em;box-shadow:0 0 0 1px rgba(201,166,92,.3), 0 18px 38px -24px rgba(0,0,0,.6)}
.btn--ghost{border:1px solid rgba(201,166,92,.45);color:var(--washi)}
.btn--ghost:hover{background:rgba(201,166,92,.08);border-color:var(--kin)}
.btn--block{width:100%}
.btn--lg{padding:1.05rem 2.25rem;font-size:1.05rem}
.btn--sm{padding:.55rem 1.1rem;font-size:var(--fs-caption)}
.btn__label{position:relative;display:inline-block;will-change:transform}

/* ------------------------------------------------------------ NAVIGATION --- */
.nav{
  position:fixed;inset-block-start:0;inset-inline:0;z-index:50;height:var(--nav-h);
  display:flex;align-items:center;
  transition:background var(--dur-base) var(--ease-sumi), backdrop-filter var(--dur-base) var(--ease-sumi), transform var(--dur-base) var(--ease-sumi), box-shadow var(--dur-base) var(--ease-sumi), border-color var(--dur-base) var(--ease-sumi);
  border-bottom:1px solid transparent;
}
.nav__inner{width:min(100% - 2.5rem,var(--container-wide));margin-inline:auto;display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg)}
.nav.is-scrolled{background:rgba(22,18,15,.82);backdrop-filter:blur(16px) saturate(120%);-webkit-backdrop-filter:blur(16px) saturate(120%);border-bottom-color:var(--charcoal-line);box-shadow:0 12px 40px -28px rgba(0,0,0,.9)}
/* Compaction visuelle via transform (sans animer la hauteur) */
.nav.is-scrolled .brand{transform:scale(.92);transform-origin:left center}
.brand{transition:transform var(--dur-base) var(--ease-sumi)}
.nav.is-hidden{transform:translateY(-110%)}
.nav.is-hidden:focus-within{transform:none}
.brand{display:inline-flex;align-items:baseline;gap:.5rem;font-family:var(--font-display);font-style:italic;font-weight:500;font-size:1.45rem;letter-spacing:-.01em;color:var(--washi)}
.brand .u-jp{font-style:normal;font-size:.95rem;color:var(--kin)}
.nav__links{display:flex;align-items:center;gap:var(--space-lg)}
.nav__link{position:relative;font-size:var(--fs-ui);font-weight:500;color:var(--washi-dim);padding:.35rem .1rem;transition:color var(--dur-base) var(--ease-sumi)}
.nav__link::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--shu);border-radius:2px;transform:scaleX(0);transform-origin:left;transition:transform var(--dur-base) var(--ease-brush)}
.nav__link:hover,.nav__link.is-active{color:var(--washi)}
.nav__link:hover::after,.nav__link.is-active::after{transform:scaleX(1)}
.nav__actions{display:flex;align-items:center;gap:var(--space-sm)}
.icon-btn{position:relative;width:42px;height:42px;border-radius:var(--radius-pill);display:inline-flex;align-items:center;justify-content:center;color:var(--washi-dim);border:1px solid transparent;transition:color var(--dur-base) var(--ease-sumi),background var(--dur-base) var(--ease-sumi),border-color var(--dur-base) var(--ease-sumi);will-change:transform}
.icon-btn:hover{color:var(--washi);background:rgba(201,166,92,.08);border-color:rgba(201,166,92,.25)}
.icon-btn svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.6}
.cart-badge{position:absolute;top:1px;right:1px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--shu);color:var(--washi);font-family:var(--font-mono);font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;transform:scale(0);transition:transform var(--dur-base) var(--ease-sumi)}
.cart-badge.is-visible{transform:scale(1)}
.nav__cta{margin-left:.25rem}
.account-name{display:none;font-size:var(--fs-caption);color:var(--kin);font-weight:500;max-width:9ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-toggle{display:none}

/* ---------------------------------------------------------------- HERO ----- */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;overflow:hidden;isolation:isolate}
/* Héro transparent à droite pour révéler le 3D ; voilé à gauche pour le texte */
.hero__bg{position:absolute;inset:0;z-index:-3;background:linear-gradient(90deg, rgba(11,9,8,.82) 0%, rgba(11,9,8,.5) 40%, rgba(11,9,8,.08) 68%, rgba(11,9,8,0) 100%)}
.hero__ember{position:absolute;inset:0;z-index:-2;background:var(--grad-ember-pool);opacity:.3;transform-origin:center;will-change:transform,opacity}
.hero__dusk{position:absolute;inset:0;z-index:-2;background:var(--grad-dusk-glow)}
.hero__seigaiha{position:absolute;left:0;right:0;bottom:0;height:46%;z-index:-2;opacity:.10;background-image:inherit}
.hero__canvas{position:absolute;inset:0;z-index:-1;pointer-events:none}
.hero__inner{width:min(100% - 2.5rem,var(--container));margin-inline:auto;padding-top:var(--nav-h);position:relative;z-index:1}
.hero__eyebrow{margin-bottom:var(--space-lg)}
.hero__title{font-size:var(--fs-display);font-weight:300;line-height:.94;letter-spacing:-.02em;color:var(--washi)}
.hero__title .line{display:block;overflow:hidden}
.hero__title .line > span{display:block;will-change:transform}
.hero__title em{font-style:italic;color:var(--shu-soft);font-weight:400}
.hero__rule{width:0;height:2px;background:linear-gradient(90deg,var(--kin),transparent);margin:var(--space-lg) 0;transform-origin:left}
.hero__sub{max-width:46ch;font-size:var(--fs-lead);color:var(--washi-dim);margin-bottom:var(--space-xl)}
.hero__cta{display:flex;flex-wrap:wrap;gap:var(--space-md)}
.hero__ghost{right:-2vw;top:50%;transform:translateY(-50%)}
.scroll-hint{position:absolute;right:2.5rem;bottom:1.75rem;display:flex;flex-direction:column;align-items:center;gap:.6rem;color:var(--stone);font-size:var(--fs-caption);letter-spacing:.14em;text-transform:uppercase;z-index:1}
.scroll-hint__line{width:1px;height:46px;background:linear-gradient(180deg,var(--kin),transparent);position:relative;overflow:hidden}
.scroll-hint__line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--kin);animation:scrollPulse 2.4s var(--ease-sumi) infinite}

/* Bandeau de statistiques */
.stats{position:relative;z-index:1;border-block:1px solid var(--charcoal-line);background:rgba(22,18,15,.5)}
.stats__grid{display:grid;grid-template-columns:repeat(3,1fr)}
.stat{padding:var(--space-xl) var(--space-lg);text-align:center;border-left:1px solid var(--charcoal-line)}
.stat:first-child{border-left:none}
.stat__value{font-family:var(--font-display);font-size:clamp(2rem,1.4rem+1.6vw,2.9rem);font-weight:400;color:var(--washi);line-height:1;letter-spacing:-.02em}
.stat__value .suffix{font-size:.5em;color:var(--kin);margin-left:.15em;font-family:var(--font-mono)}
.stat__label{margin-top:.5rem;font-size:var(--fs-caption);letter-spacing:.08em;text-transform:uppercase;color:var(--stone)}

/* ----------------------------------------------------------- ÉDITORIAL ---- */
.editorial{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3xl);align-items:center}
.editorial--reverse .editorial__media{order:-1}
.editorial__body p{margin-top:var(--space-md);color:var(--washi-dim)}
.editorial__body .section-title{margin-top:var(--space-md)}
.editorial__quote{position:relative;margin-top:var(--space-xl);padding-left:var(--space-lg)}
.editorial__quote::before{content:"";position:absolute;left:0;top:.15em;bottom:.15em;width:2px;border-radius:2px;background:linear-gradient(180deg,var(--kin),var(--shu),transparent)}
.editorial__spine{position:absolute;left:-1.5rem;top:0;bottom:0;width:1px;background:linear-gradient(180deg,transparent,var(--kin),transparent);transform:scaleY(0);transform-origin:top}
.media-frame{position:relative;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--charcoal-line);box-shadow:var(--shadow-raise);aspect-ratio:4/5;background:var(--sumi-raise)}
.media-frame__art{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--grad-ember-pool),radial-gradient(120% 80% at 50% 10%,rgba(201,166,92,.12),transparent 60%)}
.media-frame__art svg{width:64%;height:64%;filter:drop-shadow(0 24px 40px rgba(0,0,0,.5))}
.media-frame__cap{position:absolute;left:1rem;bottom:1rem;font-size:var(--fs-caption);letter-spacing:.12em;text-transform:uppercase;color:var(--washi-dim);background:rgba(13,11,10,.55);backdrop-filter:blur(6px);padding:.4rem .7rem;border-radius:var(--radius-pill)}
.media-frame .u-jp{position:absolute;right:1.1rem;top:1rem;font-size:2.4rem;color:var(--kin);opacity:.5}

/* Savoir-faire — trois étapes */
.craft{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-xl);margin-top:var(--space-2xl)}
.craft__step{position:relative;padding:var(--space-xl);border:1px solid var(--charcoal-line);border-radius:var(--radius-card);background:var(--sumi-raise);box-shadow:var(--shadow-card);overflow:hidden}
.craft__num{font-family:var(--font-jp);font-size:2.6rem;color:var(--shu);opacity:.85;line-height:1}
.craft__title{font-family:var(--font-display);font-style:italic;font-size:var(--fs-h3);margin:var(--space-sm) 0 var(--space-xs)}
.craft__text{color:var(--washi-dim);font-size:var(--fs-body)}
.craft__step::after{content:"";position:absolute;inset:0;background:var(--grad-ember-pool);opacity:0;transition:opacity var(--dur-slow) var(--ease-sumi);pointer-events:none}
.craft__step:hover::after{opacity:.22}

/* ---------------------------------------------------------------- MENU ----- */
.menu{position:relative;overflow:hidden}
.menu__cats{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:var(--space-xl)}
.menu-cat{font-size:var(--fs-ui);font-weight:500;color:var(--washi-dim);padding:.5rem 1.05rem;border-radius:var(--radius-pill);border:1px solid var(--charcoal-line);background:var(--sumi-raise);transition:all var(--dur-base) var(--ease-sumi);white-space:nowrap}
.menu-cat:hover{color:var(--washi);border-color:rgba(201,166,92,.4)}
.menu-cat.is-active{color:var(--washi);background:var(--grad-shu-btn);border-color:transparent;font-weight:600}
.menu-cat .u-jp{font-size:.85em;opacity:.7;margin-left:.4em}

/* Galerie horizontale (moment signature) */
.gallery{position:relative}
.gallery__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-sm) var(--space-lg);margin-bottom:var(--space-lg)}
@media (hover:none){.gallery__head [aria-hidden="true"].gallery__drag-cue{display:none}}
.gallery__viewport:focus-visible{outline:none;box-shadow:0 0 0 2px var(--kin);border-radius:var(--radius-sm)}
.gallery__drag-cue{font-size:var(--fs-caption);letter-spacing:.14em;text-transform:uppercase;color:var(--stone);display:inline-flex;align-items:center;gap:.5rem}
.gallery__viewport{overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;cursor:grab;touch-action:pan-y}
.gallery__viewport:active{cursor:grabbing}
.gallery__viewport::-webkit-scrollbar{display:none}
.gallery__track{display:flex;gap:var(--space-lg);padding-bottom:var(--space-md);width:max-content}
.gallery__rail{display:none}
.gallery__rail-fill{height:100%;width:0;background:linear-gradient(90deg,var(--kin),var(--shu));border-radius:2px}

/* Carte plat */
.dish{
  position:relative;flex:0 0 min(320px,82vw);display:flex;flex-direction:column;scroll-snap-align:start;
  background:var(--sumi-raise);border:1px solid var(--charcoal-line);border-radius:var(--radius-card);
  box-shadow:var(--shadow-card);overflow:hidden;transition:border-color var(--dur-base) var(--ease-sumi),transform var(--dur-base) var(--ease-sumi);
}
.dish:hover{border-color:rgba(201,166,92,.5)}
.dish__art{position:relative;aspect-ratio:16/11;display:flex;align-items:center;justify-content:center;background:radial-gradient(80% 80% at 50% 35%,rgba(201,166,92,.10),transparent 65%),var(--sumi-raise-2);overflow:hidden}
.dish__art::after{content:"";position:absolute;inset:0;background:var(--grad-ember-pool);opacity:0;transition:opacity var(--dur-slow) var(--ease-sumi)}
.dish:hover .dish__art::after{opacity:.2}
.dish__art svg{width:62%;height:62%;position:relative;z-index:1;filter:drop-shadow(0 18px 26px rgba(0,0,0,.5));transition:transform var(--dur-slow) var(--ease-sumi)}
.dish:hover .dish__art svg{transform:translateY(-4px) scale(1.04)}
.dish__tags{position:absolute;top:.7rem;left:.7rem;display:flex;flex-wrap:wrap;gap:.35rem;z-index:2;max-width:80%}
.dish__body{padding:1.1rem 1.25rem 1.25rem;display:flex;flex-direction:column;flex:1}
.dish__name{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:var(--fs-h3);line-height:1.15;color:var(--washi)}
.dish__jp{font-family:var(--font-jp);font-size:.8rem;color:var(--stone);margin-top:.1rem}
.dish__desc{margin-top:.5rem;font-size:.92rem;color:var(--washi-dim);line-height:1.55;flex:1}
.dish__meta{margin-top:.6rem;font-size:var(--fs-caption);color:var(--stone)}
.dish__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);margin-top:.9rem;padding-top:.9rem;border-top:1px solid var(--charcoal-line)}
.dish__price{font-family:var(--font-mono);font-size:1.1rem;color:var(--kin);font-weight:700}
.dish__add{width:42px;height:42px;border-radius:var(--radius-pill);background:var(--sumi-raise-2);border:1px solid rgba(201,166,92,.35);color:var(--kin);display:inline-flex;align-items:center;justify-content:center;transition:all var(--dur-base) var(--ease-sumi);will-change:transform}
.dish__add svg{width:20px;height:20px;stroke:currentColor;stroke-width:2;fill:none}
.dish__add:hover{background:var(--grad-shu-fade);color:var(--washi);border-color:transparent}
.dish__add.is-added{background:var(--kin);color:var(--sumi);border-color:transparent}

/* Étiquettes */
.tag{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:.22rem .5rem;border-radius:var(--radius-pill);backdrop-filter:blur(4px)}
.tag--gold{background:rgba(201,166,92,.18);color:var(--kin-bright);border:1px solid rgba(201,166,92,.4)}
.tag--ember{background:rgba(216,68,42,.2);color:var(--shu-soft);border:1px solid rgba(216,68,42,.45)}
.tag--stone{background:rgba(155,148,138,.16);color:var(--washi);border:1px solid rgba(155,148,138,.34)}
.tag--leaf{background:rgba(142,155,92,.18);color:#CBD49B;border:1px solid rgba(142,155,92,.45)}

/* Formules */
.formules{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-lg);margin-top:var(--space-3xl)}
.formule{position:relative;padding:var(--space-xl);border:1px solid var(--charcoal-line);border-radius:var(--radius-card);background:var(--sumi-raise);box-shadow:var(--shadow-card);display:flex;flex-direction:column;overflow:hidden;transition:border-color var(--dur-base) var(--ease-sumi),transform var(--dur-base) var(--ease-sumi)}
.formule:hover{border-color:rgba(201,166,92,.5);transform:translateY(-4px)}
.formule__badge{position:absolute;top:var(--space-md);right:var(--space-md);font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.3rem .7rem;border-radius:var(--radius-pill);background:var(--grad-gold-sheen);color:var(--sumi)}
.formule__name{font-family:var(--font-display);font-size:var(--fs-h3);color:var(--washi);max-width:calc(100% - 5.5rem)}
.formule__desc{color:var(--washi-dim);margin-top:.5rem;font-size:.95rem}
.formule__list{margin-top:var(--space-md);display:flex;flex-direction:column;gap:.4rem;flex:1}
.formule__list li{position:relative;padding-left:1.3rem;font-size:.92rem;color:var(--washi-dim)}
.formule__list li::before{content:"";position:absolute;left:0;top:.55em;width:7px;height:7px;border-radius:50%;border:1px solid var(--kin)}
.formule__foot{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--charcoal-line)}
.formule__price{font-family:var(--font-mono);font-size:1.4rem;color:var(--kin);font-weight:700}

/* ------------------------------------------------------------ SIGNATURE ---- */
.signature{position:relative;text-align:center;overflow:hidden}
.signature__plate{position:relative;width:min(90vw,460px);margin:var(--space-2xl) auto 0;aspect-ratio:1;display:flex;align-items:center;justify-content:center}
.signature__bloom{position:absolute;inset:0;background:radial-gradient(58% 58% at 50% 50%, rgba(216,68,42,.1), transparent 70%);z-index:0}
.signature__art{position:relative;z-index:1;width:72%;height:72%;filter:drop-shadow(0 40px 60px rgba(0,0,0,.6))}
.signature__art svg{width:100%;height:100%}
.signature__ring{position:absolute;inset:6%;z-index:1}
.signature__leaders{margin-top:var(--space-xl);display:flex;justify-content:center;flex-wrap:wrap;gap:var(--space-lg)}
.leader{font-size:var(--fs-caption);color:var(--washi-dim);display:inline-flex;align-items:center;gap:.5rem}
.leader::before{content:"";width:24px;height:1px;background:var(--kin)}

/* -------------------------------------------------------------- AVIS ------- */
.reviews{position:relative}
.rating-hero{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-xl);margin-bottom:var(--space-2xl)}
.rating-hero__score{font-family:var(--font-display);font-size:clamp(3.5rem,2.5rem+3vw,5.5rem);line-height:1;color:var(--washi);letter-spacing:-.02em}
.rating-hero__col{display:flex;flex-direction:column;gap:.4rem}
.stars{display:inline-flex;gap:.25rem}
.star{position:relative;width:28px;height:28px}
.star svg{width:100%;height:100%}
.star__bg{stroke:var(--kin);stroke-width:1.4;fill:none;opacity:.4}
.star__fill{fill:var(--kin)}
.star__clip{transition:none}
.rating-hero__count{font-family:var(--font-mono);color:var(--kin);font-size:1.1rem}
.rating-hero__src{font-size:var(--fs-caption);letter-spacing:.1em;text-transform:uppercase;color:var(--stone)}
.reviews__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:var(--space-lg)}
.review{position:relative;padding:var(--space-xl);border:1px solid var(--charcoal-line);border-radius:var(--radius-card);background:var(--sumi-raise-2);overflow:hidden;transition:transform var(--dur-base) var(--ease-sumi),border-color var(--dur-base) var(--ease-sumi)}
.review:hover{transform:translateY(-6px);border-color:rgba(201,166,92,.45)}
.review.is-highlight{border-color:rgba(201,166,92,.3)}
.review::before{content:"\201D";position:absolute;top:.4rem;right:.9rem;font-family:var(--font-display);font-size:5.5rem;color:var(--shu-ink);opacity:.5;line-height:1;pointer-events:none;z-index:0}
.review__top{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);margin-bottom:var(--space-md)}
.review__stars{display:inline-flex;gap:.1rem;color:var(--kin)}
.review__stars svg{width:16px;height:16px;fill:var(--kin)}
.review__date{font-size:var(--fs-caption);color:var(--stone)}
.review__text{position:relative;font-family:var(--font-display);font-style:italic;font-size:var(--fs-lead);line-height:1.5;color:var(--washi);z-index:1}
.review__visit{display:block;margin-top:.6rem;font-style:normal;font-family:var(--font-sans);font-size:var(--fs-caption);color:var(--stone)}
.review__foot{display:flex;align-items:center;gap:.75rem;margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--charcoal-line)}
.review__avatar{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--sumi-raise);border:1px solid var(--kin);color:var(--kin);font-family:var(--font-display);font-style:italic;font-size:1rem}
.review__who{display:flex;flex-direction:column}
.review__name{font-weight:500;font-size:.95rem;color:var(--washi)}
.review__meta{font-size:var(--fs-caption);color:var(--stone)}

/* Marquee */
.marquee{margin-top:var(--space-2xl);border-block:1px solid var(--charcoal-line);overflow:hidden;padding-block:var(--space-md);position:relative;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee__track{display:flex;gap:var(--space-2xl);width:max-content;animation:marquee 32s linear infinite}
.marquee:hover .marquee__track{animation-play-state:paused}
.marquee__item{font-family:var(--font-display);font-style:italic;font-size:1.4rem;color:var(--washi-dim);display:inline-flex;align-items:center;gap:var(--space-2xl);white-space:nowrap}
.marquee__item::after{content:"✦";color:var(--kin);font-style:normal;font-size:.9rem}

/* ------------------------------------------------------------ LOCATION ----- */
.location{display:grid;grid-template-columns:1.05fr .95fr;gap:var(--space-3xl);align-items:center}
.location__map{position:relative;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--charcoal-line);box-shadow:var(--shadow-raise);aspect-ratio:5/4;background:var(--sumi-raise)}
.map-canvas{position:absolute;inset:0;width:100%;height:100%}
.map-pin{position:absolute;left:50%;top:48%;transform:translate(-50%,-100%);z-index:2;color:var(--shu);filter:drop-shadow(0 8px 14px rgba(0,0,0,.5))}
.map-pin svg{width:40px;height:40px}
.map-pin__pulse{position:absolute;left:50%;top:48%;width:18px;height:18px;border-radius:50%;background:rgba(216,68,42,.5);transform:translate(-50%,-50%);animation:pinPulse 2.6s var(--ease-sumi) infinite;z-index:1}
.location__info dl{display:grid;gap:var(--space-md)}
.info-row{display:flex;gap:var(--space-md);align-items:flex-start;padding-bottom:var(--space-md);border-bottom:1px solid var(--charcoal-line)}
.info-row__icon{flex:0 0 auto;color:var(--kin);margin-top:.15rem}
.info-row__icon svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.6}
.info-row dt{font-size:var(--fs-caption);letter-spacing:.1em;text-transform:uppercase;color:var(--stone)}
.info-row dd{color:var(--washi);margin-top:.15rem}
.hours{margin-top:var(--space-lg);border:1px solid var(--charcoal-line);border-radius:var(--radius-card);overflow:hidden}
.hours__row{display:flex;justify-content:space-between;gap:var(--space-md);padding:.7rem 1.1rem;font-size:.95rem;border-top:1px solid var(--charcoal-line)}
.hours__row:first-child{border-top:none}
.hours__row.is-today{background:rgba(216,68,42,.1)}
.hours__row.is-today .hours__day{color:var(--shu-soft)}
.hours__day{color:var(--washi-dim)}
.hours__time{color:var(--washi);font-family:var(--font-mono);font-size:.85rem}
.hours__time.is-closed{color:var(--stone)}
.location__actions{display:flex;flex-wrap:wrap;gap:var(--space-md);margin-top:var(--space-lg)}
.open-status{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--fs-caption);color:var(--washi-dim);margin-bottom:var(--space-md)}
.open-dot{width:9px;height:9px;border-radius:50%;background:var(--kin);box-shadow:0 0 0 3px rgba(201,166,92,.2)}
.open-dot.is-open{background:#7FB06A;box-shadow:0 0 0 3px rgba(127,176,106,.2)}
.open-dot.is-closed{background:var(--shu)}

/* ------------------------------------------------------------- COMMANDER --- */
.ordering{position:relative}
.order-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-lg);margin-top:var(--space-2xl)}
.order-step{padding:var(--space-xl);border:1px solid var(--charcoal-line);border-radius:var(--radius-card);background:var(--sumi-raise);position:relative;overflow:hidden}
.order-step__n{font-family:var(--font-jp);font-weight:700;font-size:2.2rem;line-height:1;color:var(--shu);opacity:.9}
.order-step__t{font-family:var(--font-display);font-style:italic;font-size:var(--fs-h3);margin:.4rem 0}
.order-step__d{color:var(--washi-dim);font-size:.95rem}
.order-cta{display:flex;flex-wrap:wrap;gap:var(--space-md);justify-content:center;margin-top:var(--space-2xl)}

/* ---------------------------------------------------------------- FOOTER --- */
.footer{position:relative;background:var(--sumi);border-top:1px solid transparent;overflow:hidden}
.footer::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--kin),transparent);opacity:.5}
.footer__grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--space-2xl);position:relative;z-index:1}
.footer__brand .brand{font-size:2rem;margin-bottom:var(--space-md)}
.footer__blurb{color:var(--washi-dim);max-width:34ch;font-size:.95rem}
.footer__col h4{font-family:var(--font-sans);font-size:var(--fs-caption);letter-spacing:.12em;text-transform:uppercase;color:var(--kin);margin-bottom:var(--space-md);font-weight:600}
.footer__col li{margin-bottom:.6rem}
.footer__col a,.footer__col span{color:var(--washi-dim);font-size:.95rem;transition:color var(--dur-base) var(--ease-sumi)}
.footer__col a:hover{color:var(--washi)}
.footer__badge{display:inline-flex;align-items:center;gap:.5rem;margin-top:var(--space-md);padding:.5rem .9rem;border:1px solid rgba(201,166,92,.3);border-radius:var(--radius-pill);color:var(--kin);font-size:var(--fs-caption);font-family:var(--font-mono)}
.footer__bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-md);margin-top:var(--space-3xl);padding-top:var(--space-lg);border-top:1px solid var(--charcoal-line);position:relative;z-index:1}
.footer__legal{font-family:var(--font-mono);font-size:var(--fs-caption);color:var(--stone);max-width:60ch;line-height:1.6}
.footer__socials{display:flex;gap:var(--space-sm)}
.footer__watermark{position:absolute;right:-4%;bottom:-18%;font-family:var(--font-jp);font-weight:700;font-size:clamp(12rem,30vw,30rem);color:var(--washi);opacity:.025;line-height:1;pointer-events:none;z-index:0}
.back-to-top{position:fixed;right:1.5rem;bottom:1.5rem;z-index:65;width:46px;height:46px;border-radius:50%;background:var(--sumi-raise);border:1px solid rgba(201,166,92,.3);color:var(--kin);display:grid;place-items:center;opacity:0;transform:translateY(20px);transition:opacity var(--dur-base) var(--ease-sumi),transform var(--dur-base) var(--ease-sumi),background var(--dur-base) var(--ease-sumi);pointer-events:none}
.back-to-top.is-visible{pointer-events:auto}
.back-to-top.is-visible{opacity:1;transform:translateY(0)}
.back-to-top:hover{background:var(--grad-shu-fade);color:var(--washi);border-color:transparent}
.back-to-top svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8}

/* ---------------------------------------------------- CURSEUR PERSONNALISÉ - */
.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;pointer-events:none;z-index:9400;mix-blend-mode:exclusion;will-change:transform}
.cursor-dot{width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:var(--ember)}
.cursor-ring{width:34px;height:34px;margin:-17px 0 0 -17px;display:grid;place-items:center}
/* La taille « grandit » via transform:scale sur un pseudo (pas de layout) ; la position est gérée par JS sur l'élément */
.cursor-ring::before{content:"";position:absolute;inset:0;border:1px solid var(--kin);border-radius:50%;transform:scale(1);transition:transform var(--dur-base) var(--ease-sumi),background var(--dur-base) var(--ease-sumi),border-color var(--dur-base) var(--ease-sumi)}
.cursor-ring.is-active::before{transform:scale(1.7);background:rgba(232,132,58,.07)}
.cursor-ring__label{position:relative;font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--washi);opacity:0;transition:opacity var(--dur-fast)}
.cursor-ring.is-active .cursor-ring__label{opacity:.9}
body.has-custom-cursor{cursor:none}
body.has-custom-cursor a,body.has-custom-cursor button{cursor:none}
/* Au clavier : on rend le curseur système et on masque le curseur sumi */
body.using-keyboard.has-custom-cursor,body.using-keyboard.has-custom-cursor a,body.using-keyboard.has-custom-cursor button{cursor:auto}
body.using-keyboard .cursor-dot,body.using-keyboard .cursor-ring{opacity:0}

/* ----------------------------------------------------------- RESPONSIVE ---- */
@media (max-width:1024px){
  .footer__grid{grid-template-columns:1fr 1fr}
  .footer__brand{grid-column:1/-1}
  .craft{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:880px){
  .nav__links{display:none}
  .nav__cta{display:none}
  .nav-toggle{display:inline-flex}
  .editorial,.location{grid-template-columns:1fr;gap:var(--space-2xl)}
  .editorial--reverse .editorial__media{order:0}
}
@media (max-width:680px){
  .craft,.order-steps{grid-template-columns:1fr}
}
@media (max-width:560px){
  :root{--nav-h:68px}
  .reviews__grid{grid-template-columns:1fr}
  .hero__cta{flex-direction:column;align-items:stretch}
  .hero__cta .btn{width:100%}
  .gallery__head{flex-direction:column;align-items:flex-start;gap:.4rem}
  .account-name{display:none !important}
}
@media (max-height:680px) and (min-width:561px){
  .scroll-hint{display:none}
}

/* Accessibilité : cible tactile */
@media (hover:none){
  .dish__add{opacity:1}
  body.has-custom-cursor{cursor:auto}
}

/* Utilitaire visuellement masqué */
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.no-scroll{overflow:hidden}

/* Très grands écrans : on resserre un peu la mesure et on fait respirer la trame */
@media (min-width:1700px){
  :root{--container:1360px}
  .section{padding-block:min(var(--space-section),9.5rem)}
}
.hero__seigaiha,.menu .seigaiha{-webkit-mask-image:radial-gradient(130% 100% at 50% 50%,#000 50%,transparent 86%);mask-image:radial-gradient(130% 100% at 50% 50%,#000 50%,transparent 86%)}

/* ====================================================================
   V2 · COULEUR · PHOTOS RÉELLES · GALERIE · UBER EATS · CARTE · 3D
   ==================================================================== */

/* --- Sections claires « washi » : remappage des tokens --- */
.section--light{
  background:var(--cream);color:var(--ink);
  --washi:var(--ink); --washi-dim:var(--ink-soft); --stone:var(--ink-faint);
  --charcoal-line:var(--cream-line); --sumi-raise:var(--cream-2); --sumi-raise-2:var(--cream-3);
  --shadow-card:0 1px 0 rgba(255,255,255,.6) inset, 0 18px 40px -28px rgba(90,60,40,.38);
  --shadow-raise:0 24px 60px -30px rgba(90,60,40,.42);
  --shadow-ember:0 0 0 1px rgba(201,166,92,.3), 0 18px 40px -24px rgba(0,0,0,.6);
}
.section--light .eyebrow{color:#B0431F}
.section--light .eyebrow::before{background:linear-gradient(90deg,transparent,#B0431F)}
.section--light .eyebrow.is-centered::after{background:linear-gradient(270deg,transparent,#B0431F)}
.section--light .dish__price,.section--light .formule__price{color:#A8431C}
.section--light .tag--salmon{color:#C2491F}
.section--light .tag--ai{color:#2C4C73}
.section--light .tag--tobiko{color:#B5610F}
.section--light .tag--gold{color:#8A6A1E}
.section--light .tag--leaf{color:#5C6E2C}
.section--light .tag--stone{color:#5A4A3F;background:rgba(90,74,63,.1);border-color:rgba(90,74,63,.25)}
.section--light .tag--ember{color:#C2371F}
.section--light .open-dot.is-open{background:#5E9E4F}
.section--light .info-row__icon{color:#A8431C}

/* --- Étiquettes ingrédients (sombre) --- */
.tag--salmon{background:rgba(244,121,78,.18);color:#FF9166;border:1px solid rgba(244,121,78,.45)}
.tag--ai{background:rgba(62,108,160,.22);color:#86AEDC;border:1px solid rgba(62,108,160,.5)}
.tag--tobiko{background:rgba(245,147,49,.2);color:#F6AE63;border:1px solid rgba(245,147,49,.45)}

/* --- Photo réelle encadrée (récit / signature) --- */
.photo-real{position:relative;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--charcoal-line);box-shadow:var(--shadow-raise)}
.photo-real::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px rgba(201,166,92,.25);border-radius:inherit;pointer-events:none}
.photo-real img{display:block;width:100%;height:100%;object-fit:cover}
.photo-real--portrait{aspect-ratio:4/5}
.photo-real--wide{aspect-ratio:16/11}
.photo-real .photo-real__cap{position:absolute;left:1rem;bottom:1rem;font-size:var(--fs-caption);letter-spacing:.1em;text-transform:uppercase;color:#fff;background:rgba(12,9,8,.55);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);padding:.4rem .7rem;border-radius:var(--radius-pill)}
.media-frame__photo{position:absolute;inset:0}
.media-frame__photo img{width:100%;height:100%;object-fit:cover}

/* --- Galerie de vraies photos (bande horizontale) --- */
.gallery-band{position:relative}
.gallery-band__viewport{overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;cursor:grab;touch-action:pan-y}
.gallery-band__viewport:active{cursor:grabbing}
.gallery-band__viewport::-webkit-scrollbar{display:none}
.gallery-band__track{display:flex;gap:var(--space-md);width:max-content;padding-bottom:var(--space-sm)}
.photo-tile{position:relative;flex:0 0 clamp(220px,30vw,340px);aspect-ratio:4/5;border-radius:var(--radius-card);overflow:hidden;scroll-snap-align:start;border:1px solid var(--charcoal-line);box-shadow:var(--shadow-card);background:var(--sumi-raise-2)}
.photo-tile img{width:100%;height:100%;object-fit:cover;object-position:center;transition:transform var(--dur-slow) var(--ease-sumi)}
.photo-tile.crop-left img{object-position:8% center}
.photo-tile.crop-right img{object-position:92% center}
.photo-tile.crop-center img{object-position:center}
.photo-tile:hover img{transform:scale(1.06)}
.photo-tile__cap{position:absolute;left:0;right:0;bottom:0;padding:1.1rem .9rem .7rem;font-family:var(--font-display);font-style:italic;font-size:1rem;color:#fff;background:linear-gradient(180deg,transparent,rgba(8,7,6,.82));z-index:1}
.gallery-band__viewport:focus-visible{outline:none;box-shadow:0 0 0 2px var(--kin);border-radius:var(--radius-sm)}

/* --- Bouton Uber Eats --- */
.btn--uber{background:#06C167;color:#0A1E12;font-weight:600}
.btn--uber:hover{background:#05a558;box-shadow:0 14px 30px -22px rgba(0,0,0,.55)}
.btn--uber svg{width:18px;height:18px}
.uber-note{font-size:var(--fs-caption);color:var(--stone);margin-top:.6rem}

/* --- Carte interactive (Leaflet) --- */
.oishi-map-wrap{position:relative;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--charcoal-line);box-shadow:var(--shadow-raise);aspect-ratio:5/4;background:var(--sumi-raise)}
#oishiMap{position:absolute;inset:0;width:100%;height:100%;min-height:320px}
.oishi-map-wrap .location__map{position:absolute;inset:0;border:none;border-radius:0;box-shadow:none;aspect-ratio:auto}
.leaflet-popup-content-wrapper{background:var(--sumi-raise);color:var(--washi);border-radius:var(--radius-md);border:1px solid var(--charcoal-line)}
.leaflet-popup-tip{background:var(--sumi-raise)}
.leaflet-popup-content{font-family:var(--font-sans);font-size:.9rem;line-height:1.5}
.leaflet-popup-content b{font-family:var(--font-display);font-size:1.05rem;color:var(--washi)}
.leaflet-popup-content a{color:var(--kin);font-weight:600}
.oishi-pin{filter:drop-shadow(0 6px 10px rgba(0,0,0,.5))}

/* --- Bande 3D (transparente : révèle le canvas Three.js) --- */
.section--3d{position:relative;text-align:center;padding-block:var(--space-3xl);overflow:visible}
.section--3d .container{position:relative;z-index:1}
.section--3d__hint{display:inline-flex;align-items:center;gap:.6rem;margin-top:var(--space-md);font-size:var(--fs-caption);letter-spacing:.14em;text-transform:uppercase;color:var(--kin)}

/* --- Touches colorées --- */
.accent-rule{display:block;height:4px;width:56px;border-radius:4px;background:var(--grad-sushi)}
.accent-rule.is-centered{margin-inline:auto}
.craft__step .accent-rule{margin-bottom:1rem}
.btn--primary{background:var(--grad-shu-btn)}
.btn--primary::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,180,120,.28),transparent 45%);opacity:0;transition:opacity var(--dur-base) var(--ease-sumi);pointer-events:none}
.btn--primary{position:relative;overflow:hidden}
.btn--primary:hover::after{opacity:1}
.section--3d .ghost-glyph{opacity:.05}

/* Devanture / facade dans le récit */
.facade-strip{display:grid;grid-template-columns:1fr;gap:var(--space-md)}

@media (max-width:560px){
  .photo-tile{flex-basis:74vw}
}

/* Photo réelle ronde de la signature (poulet à l'orange) */
.signature__art--photo{border-radius:50%;overflow:hidden;border:3px solid rgba(201,166,92,.55);box-shadow:var(--shadow-ember)}
.signature__art--photo img{width:100%;height:100%;object-fit:cover}
/* Voile doux derrière le texte de la bande 3D pour la lisibilité */
.section--3d::before{content:"";position:absolute;inset:0;background:radial-gradient(58% 78% at 50% 50%, rgba(11,9,8,.6), transparent 76%);pointer-events:none;z-index:0}

/* Pièce du jour : nom + accroche (pilotés par le panneau admin) */
.sig-name{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:clamp(1.5rem,1.1rem+1.4vw,2.3rem);color:var(--kin-bright);margin-top:.5rem;line-height:1.1}
.sig-badge{display:inline-block;margin-top:.7rem;font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--sumi);background:var(--grad-gold-sheen);padding:.32rem .85rem;border-radius:var(--radius-pill)}
.sig-quote-by{display:block;font-style:normal;font-family:var(--font-sans);font-size:.66em;color:var(--ink-soft);margin-top:.45rem;letter-spacing:.02em}
.footer__admin{color:var(--stone);text-decoration:underline;text-underline-offset:3px;margin-left:.3rem}
.footer__admin:hover{color:var(--kin)}

/* Cartes de plat avec VRAIE photo — rendu cinématique 4K, étalonnage unifié
   pour que les photos (Uber Eats, resto, banque libre) forment un set cohérent */
.dish__art--photo{
  background-repeat:no-repeat;
  background-color:var(--sumi-raise-2);
  filter:saturate(1.08) contrast(1.05) brightness(1.02);
  transform:scale(1.001);
  transition:transform 1.1s var(--ease-sumi), filter var(--dur-slow) var(--ease-sumi);
  will-change:transform;
}
/* voile cinématique : pointe de lumière chaude en haut, ancrage + lisibilité
   en bas, fin liseré et vignette douce pour le côté « cadre premium » */
.dish__art--photo::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(120% 78% at 50% 16%, rgba(255,236,210,.07), transparent 56%),
    linear-gradient(180deg, rgba(8,6,5,.40) 0%, rgba(8,6,5,0) 26%, rgba(8,6,5,0) 54%, rgba(8,6,5,.48) 100%);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.05), inset 0 -46px 64px -34px rgba(8,6,5,.62);
}
.dish:hover .dish__art--photo{transform:scale(1.06);filter:saturate(1.13) contrast(1.06) brightness(1.06)}

/* Flèches de navigation dans les plats */
.gallery__nav{display:flex;gap:.55rem;align-items:center}
.gallery__arrow{
  width:44px;height:44px;border-radius:999px;display:grid;place-items:center;flex:0 0 auto;
  background:rgba(255,255,255,.04);border:1px solid rgba(201,166,92,.34);color:var(--kin,#c9a65c);cursor:pointer;
  transition:background .26s var(--ease-sumi,ease),border-color .26s var(--ease-sumi,ease),transform .26s var(--ease-sumi,ease),opacity .26s var(--ease-sumi,ease);
}
.gallery__arrow svg{width:20px;height:20px}
.gallery__arrow:hover{background:var(--grad-shu-btn,#b83820);border-color:transparent;color:#fff;transform:translateY(-1px)}
.gallery__arrow:active{transform:translateY(0) scale(.96)}
.gallery__arrow:disabled{opacity:.3;cursor:default}
.gallery__arrow:disabled:hover{background:rgba(255,255,255,.04);border-color:rgba(201,166,92,.34);color:var(--kin,#c9a65c);transform:none}

/* « Voir plus » et panneau de détails sur les cartes de plat */
.dish__more{
  align-self:flex-start;margin:.15rem 0 .1rem;padding:0;background:none;border:0;font:inherit;
  font-size:.82rem;letter-spacing:.02em;line-height:1.4;color:var(--kin,#c9a65c);cursor:pointer;
  border-bottom:1px solid rgba(201,166,92,.42);transition:color .22s var(--ease-sumi,ease),border-color .22s var(--ease-sumi,ease);
}
.dish__more:hover{color:var(--shu,#d8442a);border-color:var(--shu,#d8442a)}
.dish__notes{list-style:none;margin:.4rem 0 .25rem;padding:0;display:flex;flex-direction:column;gap:.3rem}
.dish__notes li{position:relative;padding-left:1rem;font-size:.8rem;line-height:1.45;color:var(--ink-soft,#b6a48d)}
.dish__notes li::before{content:"";position:absolute;left:0;top:.52em;width:5px;height:5px;border-radius:999px;background:var(--kin,#c9a65c);opacity:.75}

/* Photo des plateaux à partager — même étalonnage cinématique que les plats */
.formule__art{
  aspect-ratio:16/9;background-size:cover;background-position:center;background-repeat:no-repeat;
  background-color:var(--sumi-raise-2,#1b1410);border-radius:14px;margin:0 0 1.1rem;overflow:hidden;
  filter:saturate(1.08) contrast(1.04) brightness(1.02);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.05), inset 0 -40px 56px -34px rgba(8,6,5,.6);
}
.formule__art--svg{
  display:grid;place-items:center;filter:none;
  background:radial-gradient(80% 80% at 50% 36%,rgba(201,166,92,.12),transparent 64%),var(--sumi-raise-2,#1b1410);
}
.formule__art--svg svg{width:56%;height:92%;filter:drop-shadow(0 14px 22px rgba(0,0,0,.5))}

/* Conteneur d'illustration unique par plat (angle/teinte/échelle dérivés de l'id) */
.dish__art-svg{width:100%;height:100%;display:grid;place-items:center;will-change:transform}

/* Avis : 6 affichés, le reste révélé par « Voir plus d'avis » */
.review--more{display:none}
.review.is-revealed{animation:reviewIn .55s var(--ease-sumi,cubic-bezier(.16,1,.3,1)) both}
@keyframes reviewIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.reviews__more{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;margin-top:2.4rem}
