/* ============================================================
   WebDX static-pack 表情トークン + signature slots
   ------------------------------------------------------------
   data-expression: quiet / bold / light
   data-signature : conceptごとに1つだけ指定する。

   注意: signatureは「1施設1つだけ」。複数のdata-signatureを同時に
   持たせず、大胆な見せ場を1箇所へ集中させる。
   ============================================================ */

:root{
  --scale-ratio:1.25;
  --heading-weight:650;
  --heading-tracking:.02em;
  --radius-sm:3px;
  --radius-lg:12px;
  --section-gap:76px;
  --motion-intensity:1;
  --motion-distance:22px;
  --motion-duration:.82s;
  --type-hero:5.8rem;
  --type-display:3.6rem;
  --type-section:2.3rem;
  --type-card:1.15rem;
  --type-lead:1rem;
}

body[data-expression]{
  --rad:var(--radius-lg);
}

body[data-expression="quiet"]{
  --scale-ratio:1.18;
  --heading-weight:500;
  --heading-tracking:.06em;
  --radius-sm:2px;
  --radius-lg:10px;
  --section-gap:92px;
  --motion-intensity:.55;
  --motion-distance:14px;
  --motion-duration:1.05s;
  --type-hero:5.2rem;
  --type-display:3.4rem;
  --type-section:2.15rem;
  --type-card:1.05rem;
  --type-lead:1rem;
}

body[data-expression="bold"]{
  --scale-ratio:1.333;
  --heading-weight:850;
  --heading-tracking:0;
  --radius-sm:3px;
  --radius-lg:16px;
  --section-gap:68px;
  --motion-intensity:1.35;
  --motion-distance:34px;
  --motion-duration:.68s;
  --type-hero:6.8rem;
  --type-display:4rem;
  --type-section:2.6rem;
  --type-card:1.22rem;
  --type-lead:1.05rem;
}

body[data-expression="light"]{
  --scale-ratio:1.25;
  --heading-weight:650;
  --heading-tracking:.04em;
  --radius-sm:3px;
  --radius-lg:14px;
  --section-gap:78px;
  --motion-intensity:.9;
  --motion-distance:20px;
  --motion-duration:.78s;
  --type-hero:5.6rem;
  --type-display:3.5rem;
  --type-section:2.35rem;
  --type-card:1.12rem;
  --type-lead:1rem;
}

body[data-expression] h1,
body[data-expression] h2,
body[data-expression] h3{
  font-weight:var(--heading-weight);
  letter-spacing:var(--heading-tracking);
}

body[data-expression] .hero h1{
  font-size:var(--type-hero);
}

body[data-expression] .interlude h2,
body[data-expression] .fire__copy h2,
body[data-expression] .exps__head h2,
body[data-expression] .sites__head h2,
body[data-expression] .facilities__head h2,
body[data-expression] .finale h2,
body[data-expression] .s__head h2,
body[data-expression] .board-head h2,
body[data-expression] .reserve h2,
body[data-expression] .news h2,
body[data-expression] .finalboard h2{
  font-size:var(--type-section);
}

body[data-expression] .poem h3,
body[data-expression] .exp__body h3,
body[data-expression] .site__body h3,
body[data-expression] .fac__body h3,
body[data-expression] .assure__card h3,
body[data-expression] .sign h3,
body[data-expression] .flowstep h3,
body[data-expression] .access-cell h3{
  font-size:var(--type-card);
}

body[data-expression] .hero__lead,
body[data-expression] .hero-lead,
body[data-expression] .section-lead,
body[data-expression] .s__head .lede,
body[data-expression] .sites__head .lede,
body[data-expression] .facilities__head .lede{
  font-size:var(--type-lead);
}

body[data-expression] section.s,
body[data-expression] .section{
  padding-top:var(--section-gap);
  padding-bottom:var(--section-gap);
}

body[data-expression] .reveal{
  transition-duration:var(--motion-duration);
}

body[data-expression] .reveal:not(.from-left):not(.from-right):not(.is-clip){
  transform:translate3d(0,var(--motion-distance),0);
}

body[data-expression] .reveal.seen{
  transform:none;
}

@media (max-width:760px){
  body[data-expression]{
    --section-gap:56px;
    --type-hero:2.55rem;
    --type-display:2.35rem;
    --type-section:1.85rem;
    --type-card:1.05rem;
    --motion-distance:12px;
  }
  body[data-expression] .plate{
    display:none;
  }
}

/* ---- worldview signatures ---- */
body[data-signature="film"] .frame{
  border-width:14px;
}

body[data-signature="vertical-poem"] .filmstrip,
body[data-signature="big-kanji"] .filmstrip{
  display:none;
}

body[data-signature="vertical-poem"] .frame{
  border-width:8px;
}

body[data-signature="vertical-poem"] .hero__vert{
  display:block;
  top:12vh;
  right:6vw;
  padding-left:1.1em;
  border-left:1px solid rgba(var(--ink-rgb),.24);
  color:rgba(var(--ink-rgb),.9);
}

body[data-signature="big-kanji"] .frame{
  border-width:0;
}

body[data-signature="big-kanji"] .hero::after{
  content:"森";
  position:absolute;
  right:-.14em;
  top:4vh;
  z-index:1;
  font-family:var(--serif);
  font-size:13rem;
  line-height:1;
  color:rgba(var(--ink-rgb),.10);
  pointer-events:none;
}

body[data-signature="big-kanji"] .hero__inner,
body[data-signature="big-kanji"] .plate,
body[data-signature="big-kanji"] .hero__vert{
  z-index:2;
}

/* ---- guide signatures ---- */
body[data-signature="field-notes"] section.s{
  background-image:
    linear-gradient(rgba(var(--line-rgb),.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(var(--line-rgb),.045) 1px, transparent 1px);
  background-size:32px 32px;
}

body[data-signature="field-notes"] .assure__card{
  position:relative;
}

body[data-signature="field-notes"] .assure__card::after{
  content:"OK";
  position:absolute;
  right:18px;
  top:16px;
  font-family:var(--mono);
  font-size:12px;
  font-weight:800;
  letter-spacing:.08em;
  color:var(--accent-2,var(--accent));
  border:2px solid currentColor;
  padding:3px 7px;
  border-radius:var(--radius-sm);
  transform:rotate(-8deg) scale(1.16);
  opacity:0;
}

body[data-signature="field-notes"] .assure__card.seen::after{
  animation:assure-stamp .32s var(--ease-brand) both;
}

body[data-signature="field-notes"] .assure__card:nth-child(2).seen::after{
  animation-delay:.08s;
}

body[data-signature="field-notes"] .assure__card:nth-child(3).seen::after{
  animation-delay:.16s;
}

@keyframes assure-stamp{
  0%{ opacity:0;transform:rotate(-8deg) scale(1.16) }
  72%{ opacity:.88;transform:rotate(-8deg) scale(.96) }
  100%{ opacity:.72;transform:rotate(-8deg) scale(1) }
}

body[data-signature="index-tabs"] section.s{
  position:relative;
}

body[data-signature="index-tabs"] section.s::before{
  content:"";
  position:absolute;
  left:0;
  top:38px;
  width:9px;
  height:58px;
  background:var(--accent-2,var(--accent));
  border-radius:0 var(--radius-sm) var(--radius-sm) 0;
}

body[data-signature="index-tabs"] section.s:nth-of-type(even)::before{
  background:var(--accent);
}

body[data-signature="polaroid"] .fac__card,
body[data-signature="polaroid"] .site{
  position:relative;
  border:8px solid #fff;
  box-shadow:0 18px 44px rgba(var(--line-rgb),.14);
  transform:rotate(-.7deg);
}

body[data-signature="polaroid"] .fac__card:nth-child(even),
body[data-signature="polaroid"] .site:nth-child(even){
  transform:rotate(.6deg);
}

body[data-signature="polaroid"] .fac__card::before,
body[data-signature="polaroid"] .site::before{
  content:"";
  position:absolute;
  left:24px;
  top:-2px;
  width:74px;
  height:18px;
  background:rgba(var(--accent-rgb),.22);
  transform:rotate(-3deg);
  z-index:2;
}

/* ---- practical signatures ---- */
body[data-signature="departure"] .bigboard-cell::after{
  content:"";
  position:absolute;
  inset:auto 18px 14px auto;
  width:42px;
  height:8px;
  background:repeating-linear-gradient(90deg, rgba(var(--line-rgb),.22) 0 4px, transparent 4px 8px);
  opacity:.7;
}

body[data-signature="ticket-gate"] .bigboard-cell,
body[data-signature="ticket-gate"] .depboard-row{
  position:relative;
}

body[data-signature="ticket-gate"] .bigboard-cell::after,
body[data-signature="ticket-gate"] .depboard-row::after{
  content:"";
  position:absolute;
  top:12px;
  bottom:12px;
  right:18px;
  border-left:2px dashed rgba(var(--line-rgb),.20);
}

body[data-signature="ticket-gate"] .dep-no{
  border-radius:var(--radius-sm);
}

body[data-signature="map-board"] .signgrid,
body[data-signature="map-board"] .accessboard{
  padding:16px;
  border:1.5px solid rgba(var(--line-rgb),.14);
  border-radius:var(--radius-lg);
  background:
    linear-gradient(rgba(var(--line-rgb),.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(var(--line-rgb),.06) 1px, transparent 1px),
    var(--bg-3);
  background-size:28px 28px;
}

body[data-signature="map-board"] .sign,
body[data-signature="map-board"] .access-cell{
  box-shadow:none;
}

body[data-signature="map-board"] .access-pin{
  color:var(--accent-2,var(--accent));
}

@media (prefers-reduced-motion:reduce){
  body[data-expression] .reveal,
  body[data-signature] .fac__card,
  body[data-signature] .site{
    transform:none!important;
  }
  body[data-signature="field-notes"] .assure__card::after{
    opacity:.72!important;
    transform:rotate(-8deg)!important;
  }
}
