/* ═══════════════════════════════════════════════════════════
   ORIHIME INOUE — BLEACH 千年血戦篇 Character Tribute
   Design language: 久保帯人風 — 詩的編集志 (poetic editorial)
   ═══════════════════════════════════════════════════════════ */

:root{
  --ink:        #0b0a09;
  --ink-2:      #14110e;
  --ink-3:      #1d1813;
  --paper:      #f2ead9;
  --paper-dim:  #d9cfba;
  --orange:     #e8622c;
  --ember:      #b8451f;
  --gold:       #d8a94e;
  --ao:         #8fd8e8;
  --smoke:      #8a8378;
  --smoke-ink:  #6b6458;
  --hairline:   rgba(242,234,217,.14);
  --hairline-2: rgba(11,10,9,.16);
  --font-jp-disp: "Shippori Mincho B1","Zen Old Mincho",serif;
  --font-jp-body: "Zen Old Mincho","Shippori Mincho B1",serif;
  --font-en-disp: "Cinzel",serif;
  --font-ui:      "Zen Kaku Gothic New",-apple-system,sans-serif;
  --ease-out: cubic-bezier(.16,1,.3,1);
  --gutter: clamp(20px, 5vw, 88px);
}

*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0 }
html{ scroll-behavior:auto }
html.lenis, html.lenis body{ height:auto }
.lenis.lenis-smooth{ scroll-behavior:auto !important }
body{
  background:var(--ink);
  color:var(--paper);
  font-family:var(--font-jp-body);
  font-size:16px;
  line-height:1.9;
  letter-spacing:.04em;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
img{ display:block; max-width:100%; height:auto }
section[id]{ scroll-margin-top:72px }
a{ color:inherit; text-decoration:none }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer }
::selection{ background:var(--orange); color:var(--ink) }
:focus-visible{ outline:2px solid var(--orange); outline-offset:3px }
em{ font-style:normal; color:var(--orange) }

/* ─────────────────────────── 加载幕布 */
#loader{
  position:fixed; inset:0; z-index:200;
  display:grid; place-items:center;
  pointer-events:none;
}
.loader__curtain{
  position:absolute; top:0; bottom:0; width:50.5%;
  background:var(--ink);
}
.loader__curtain--l{ left:0; border-right:1px solid var(--hairline) }
.loader__curtain--r{ right:0 }
.loader__inner{
  position:relative; z-index:2; text-align:center;
  transition:opacity .5s ease;
}
.loader__kanji{
  font-family:var(--font-jp-disp); font-weight:800;
  font-size:clamp(96px, 18vw, 220px); line-height:1;
  color:var(--paper);
  animation:loaderGlow 2.4s ease-in-out infinite;
}
@keyframes loaderGlow{
  0%,100%{ text-shadow:0 0 24px rgba(232,98,44,.0) }
  50%    { text-shadow:0 0 42px rgba(232,98,44,.55) }
}
.loader__line{
  width:min(280px, 56vw); height:1px; margin:28px auto 14px;
  background:var(--hairline); overflow:hidden;
}
.loader__line span{
  display:block; height:100%; width:100%;
  background:linear-gradient(90deg, var(--ember), var(--orange), var(--gold));
  transform:scaleX(0); transform-origin:left;
}
.loader__meta{
  display:flex; justify-content:space-between; width:min(280px,56vw);
  margin:0 auto; font-family:var(--font-ui); font-size:10px;
  letter-spacing:.3em; color:var(--smoke); text-transform:uppercase;
}
.loader__count{ color:var(--orange); font-variant-numeric:tabular-nums }
#loader.is-done .loader__inner{ opacity:0 }

/* ─────────────────────────── 画布 / 颗粒 */
#petals{ position:fixed; inset:0; z-index:3; pointer-events:none }
.grain{
  position:fixed; inset:0; z-index:4; pointer-events:none;
  opacity:.07; mix-blend-mode:overlay;
  background-repeat:repeat; background-size:180px 180px;
}

/* ─────────────────────────── 光标 */
.cursor{ position:fixed; inset:0; z-index:150; pointer-events:none; display:none }
@media (pointer:fine){
  html.has-cursor, html.has-cursor a, html.has-cursor button{ cursor:none }
  .cursor{ display:block }
  .cursor__dot{
    position:absolute; width:6px; height:6px; margin:-3px;
    border-radius:50%; background:var(--orange);
  }
  .cursor__ring{
    position:absolute; width:38px; height:38px; margin:-19px;
    border-radius:50%; border:1px solid rgba(242,234,217,.5);
    transition:border-color .35s, background-color .35s;
  }
  .cursor.is-hover .cursor__ring{
    border-color:var(--orange);
    background:rgba(232,98,44,.08);
  }
}

/* ─────────────────────────── 进度 / 顶栏 / 圆点 */
.progress{
  position:fixed; top:0; left:0; right:0; height:2px; z-index:120;
  background:transparent;
}
.progress span{
  display:block; height:100%; width:100%;
  background:linear-gradient(90deg,var(--ember),var(--orange),var(--gold));
  transform:scaleX(0); transform-origin:left;
}
.topbar{
  position:fixed; top:0; left:0; right:0; z-index:110;
  display:flex; justify-content:space-between; align-items:center;
  padding:18px var(--gutter);
  mix-blend-mode:difference;
}
.topbar__brand{
  font-family:var(--font-jp-disp); font-weight:700; font-size:18px;
  letter-spacing:.2em; display:flex; align-items:baseline; gap:12px;
}
.topbar__brand span{
  font-family:var(--font-en-disp); font-size:9px; letter-spacing:.5em; opacity:.7;
}
.topbar__nav{ display:flex; gap:clamp(14px,2.6vw,34px) }
.topbar__nav a{
  font-family:var(--font-ui); font-size:12px; letter-spacing:.4em;
  padding:4px 2px; position:relative;
}
.topbar__nav a::after{
  content:""; position:absolute; left:0; bottom:-2px; width:100%; height:1px;
  background:var(--orange); transform:scaleX(0); transform-origin:right;
  transition:transform .5s var(--ease-out);
}
.topbar__nav a:hover::after{ transform:scaleX(1); transform-origin:left }
.dots{
  position:fixed; right:22px; top:50%; transform:translateY(-50%);
  z-index:110; display:flex; flex-direction:column; gap:16px;
}
.dots a{
  width:7px; height:7px; border-radius:50%;
  border:1px solid var(--smoke); transition:.4s;
}
.dots a.is-active{ background:var(--orange); border-color:var(--orange); transform:scale(1.5) }

/* ─────────────────────────── HERO */
.hero{
  position:relative; min-height:100svh; overflow:hidden;
  display:flex; align-items:center;
}
.hero__bg{ position:absolute; inset:-4% 0; z-index:0 }
.hero__bg img{
  width:100%; height:100%; object-fit:cover; object-position:68% 22%;
  will-change:transform;
}
.hero__shade{
  position:absolute; inset:0; z-index:1;
  background:
    linear-gradient(90deg, rgba(11,10,9,.92) 0%, rgba(11,10,9,.55) 34%, rgba(11,10,9,.05) 62%),
    linear-gradient(0deg, var(--ink) 0%, rgba(11,10,9,0) 30%),
    linear-gradient(180deg, rgba(11,10,9,.5) 0%, rgba(11,10,9,0) 22%);
}
.hero__content{
  position:relative; z-index:2;
  padding:0 var(--gutter);
  display:flex; align-items:center; gap:clamp(20px,4vw,56px);
  min-height:100svh;
}
.hero__kicker{
  font-family:var(--font-ui); font-size:11px; letter-spacing:.5em;
  color:var(--paper-dim); text-transform:uppercase; margin-bottom:2.2em;
  text-shadow:0 1px 14px rgba(11,10,9,.9), 0 0 4px rgba(11,10,9,.7);
}
.hero__title{ display:flex; align-items:flex-start }
.hero__kanji{
  writing-mode:vertical-rl;
  font-family:var(--font-jp-disp); font-weight:800;
  font-size:clamp(76px, 13.5vw, 175px);
  line-height:1.04; letter-spacing:.06em;
  color:var(--paper);
  text-shadow:0 0 60px rgba(232,98,44,.35);
}
.hero__sub{ padding-bottom:2.4em }
.hero__en{
  font-family:var(--font-en-disp); font-weight:600;
  font-size:clamp(15px, 2vw, 24px); letter-spacing:.62em;
  color:var(--gold); margin-bottom:1.6em;
}
.hero__tag{
  font-family:var(--font-jp-body); font-size:clamp(14px, 1.6vw, 19px);
  line-height:2.4; letter-spacing:.14em; color:var(--paper-dim);
  border-left:1px solid var(--orange); padding-left:1.4em;
}
.hero__tag em{ font-family:var(--font-jp-disp); font-weight:700; font-size:1.15em }
.hero__foot{
  position:absolute; z-index:2; left:var(--gutter); right:var(--gutter);
  bottom:calc(24px + 2vh);
  display:flex; justify-content:space-between; align-items:flex-end;
  font-family:var(--font-ui); font-size:10px; letter-spacing:.4em;
  color:var(--smoke); text-transform:uppercase;
}
.hero__scroll{ display:flex; align-items:center; gap:14px }
.hero__scroll-line{
  width:64px; height:1px; background:var(--smoke); display:inline-block;
  transform-origin:left; animation:scrollPulse 2.2s var(--ease-out) infinite;
}
@keyframes scrollPulse{
  0%{ transform:scaleX(0); transform-origin:left }
  45%{ transform:scaleX(1); transform-origin:left }
  55%{ transform:scaleX(1); transform-origin:right }
  100%{ transform:scaleX(0); transform-origin:right }
}

/* ─────────────────────────── MARQUEE */
.marquee{
  background:var(--orange); color:var(--ink);
  overflow:hidden; white-space:nowrap; padding:14px 0;
  border-top:1px solid var(--ink); border-bottom:1px solid var(--ink);
  position:relative; z-index:2;
}
.marquee__track{ display:inline-flex; animation:marquee 26s linear infinite }
.marquee__track span{
  font-family:var(--font-jp-disp); font-weight:700;
  font-size:clamp(14px, 1.8vw, 20px); letter-spacing:.22em;
}
@keyframes marquee{ to{ transform:translateX(-50%) } }

/* ─────────────────────────── 通用 SECTION */
.section{ position:relative; padding:clamp(90px,14vh,160px) var(--gutter) }
.section__head{ position:relative; margin-bottom:clamp(48px,8vh,96px) }
.section__no{
  position:absolute; top:-.55em; left:-.06em;
  font-family:var(--font-en-disp); font-weight:700;
  font-size:clamp(90px,14vw,190px); line-height:1;
  color:transparent; -webkit-text-stroke:1px var(--hairline);
  z-index:0; user-select:none;
}
.section__title{
  position:relative; z-index:1;
  font-family:var(--font-jp-disp); font-weight:800;
  font-size:clamp(30px, 5.4vw, 68px); line-height:1.3; letter-spacing:.08em;
}
.section__en{
  display:block; margin-top:14px;
  font-family:var(--font-en-disp); font-weight:500;
  font-size:11px; letter-spacing:.6em; color:var(--orange);
  text-transform:uppercase;
}

/* ─────────────────────────── 01 人物（和纸） */
.profile{ background:var(--paper); color:var(--ink) }
.profile .section__no{ -webkit-text-stroke:1px var(--hairline-2) }
.profile .section__en{ color:var(--ember) }
.profile__grid{
  display:grid; grid-template-columns:minmax(260px,420px) 1fr;
  gap:clamp(40px,6vw,110px); align-items:start;
}
.profile__portrait{
  position:relative; transform:rotate(-2deg);
  background:#fff; padding:14px 14px 52px;
  box-shadow:0 30px 60px rgba(11,10,9,.18);
}
.profile__portrait::before{
  content:""; position:absolute; inset:0;
  border:1px solid var(--orange); transform:translate(14px,14px);
  z-index:-1; transition:transform .8s var(--ease-out);
}
.profile__portrait:hover::before{ transform:translate(6px,6px) }
.profile__portrait img{ width:100%; filter:contrast(1.02) }
.profile__portrait figcaption{
  position:absolute; bottom:16px; left:0; right:0; text-align:center;
  font-family:var(--font-ui); font-size:10px; letter-spacing:.4em; color:var(--smoke-ink);
}
.profile__lead{
  font-family:var(--font-jp-disp); font-weight:700;
  font-size:clamp(22px,3vw,34px); line-height:2; letter-spacing:.06em;
  margin-bottom:.8em;
}
.profile__text{ max-width:62ch; color:#3d382f; margin-bottom:1.2em; font-size:15.5px }
.profile__stats{
  margin-top:clamp(30px,5vh,54px);
  display:grid; grid-template-columns:repeat(3,1fr);
  border-top:1px solid var(--hairline-2); border-left:1px solid var(--hairline-2);
}
.profile__stats > div{
  border-right:1px solid var(--hairline-2); border-bottom:1px solid var(--hairline-2);
  padding:20px 22px 16px;
}
.profile__stats dt{
  font-family:var(--font-ui); font-size:10px; letter-spacing:.42em;
  color:var(--ember); text-transform:uppercase; margin-bottom:8px;
}
.profile__stats dd{
  font-family:var(--font-jp-disp); font-weight:700;
  font-size:clamp(24px,2.6vw,36px); line-height:1.2;
}
.profile__stats dd small{ font-size:.42em; margin-left:4px; color:var(--smoke-ink) }
.profile__lead em{ color:var(--ember) }
.profile__stats .profile__cv{ font-size:clamp(17px,1.8vw,24px); letter-spacing:.1em }

/* ─────────────────────────── 02 盾舜六花 */
.rikka{ background:var(--ink) }
.rikka__banner{
  position:relative; overflow:hidden;
  border:1px solid var(--hairline);
}
.rikka__banner img{
  width:100%; max-height:56vh; object-fit:cover; object-position:center 30%;
  filter:brightness(.92) saturate(1.05);
}
.rikka__banner figcaption{
  position:absolute; left:0; bottom:0; padding:10px 18px;
  font-family:var(--font-ui); font-size:10px; letter-spacing:.4em;
  color:var(--paper-dim); background:linear-gradient(0deg, rgba(11,10,9,.8), transparent);
  width:100%;
}
.rikka__intro{
  margin:clamp(36px,6vh,64px) 0;
  font-family:var(--font-jp-disp); font-weight:600;
  font-size:clamp(17px,2.2vw,24px); line-height:2.4; letter-spacing:.1em;
  color:var(--paper-dim);
}
.rikka__cards{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:clamp(18px,2.4vw,30px);
}
.spirit{
  position:relative;
  background:var(--ink-2); border:1px solid var(--hairline);
  padding:0 0 26px; overflow:hidden;
  transform-style:preserve-3d; will-change:transform;
}
.spirit::before{
  content:""; position:absolute; inset:0; z-index:0; opacity:0;
  background:radial-gradient(320px circle at var(--mx,50%) var(--my,50%), rgba(232,98,44,.16), transparent 65%);
  transition:opacity .5s;
}
.spirit:hover::before{ opacity:1 }
.spirit:hover{ border-color:rgba(232,98,44,.55) }
.spirit figure{ aspect-ratio:4/3; overflow:hidden }
.spirit img{
  width:100%; height:100%; object-fit:cover;
  filter:grayscale(.35) brightness(.94);
  transition:filter .8s var(--ease-out), transform 1.2s var(--ease-out);
}
.spirit:hover img{ filter:grayscale(0) brightness(1.02); transform:scale(1.06) }
.spirit h3{
  position:relative; z-index:1;
  font-family:var(--font-jp-disp); font-weight:800;
  font-size:clamp(24px,2.6vw,34px); letter-spacing:.14em;
  padding:18px 22px 0; line-height:1;
}
.spirit h3 small{
  display:block; margin-top:8px;
  font-family:var(--font-ui); font-weight:400; font-size:10px;
  letter-spacing:.5em; color:var(--smoke);
}
.spirit__role{
  position:relative; z-index:1;
  margin:14px 22px 0; display:inline-block;
  font-family:var(--font-ui); font-size:10px; letter-spacing:.3em;
  color:var(--ao); border:1px solid rgba(143,216,232,.35); padding:4px 10px;
}
.spirit__desc{
  position:relative; z-index:1;
  margin:14px 22px 0; font-size:13.5px; line-height:2;
  color:var(--paper-dim);
}

/* ─────────────────────────── 結盾術 アコーディオン */
.tech{ margin-top:clamp(70px,12vh,130px) }
.tech__head h3{
  font-family:var(--font-jp-disp); font-weight:800;
  font-size:clamp(24px,3.4vw,40px); letter-spacing:.12em;
}
.tech__head p{ margin-top:10px; color:var(--smoke); font-size:14px; letter-spacing:.12em }
.tech__item{ border-top:1px solid var(--hairline) }
.tech__item:last-child{ border-bottom:1px solid var(--hairline) }
.tech__row{
  width:100%; display:grid;
  grid-template-columns:auto 1fr auto auto;
  align-items:center; gap:clamp(16px,3vw,44px);
  padding:clamp(22px,3.4vh,34px) 4px; text-align:left;
  transition:padding-left .5s var(--ease-out);
}
.tech__row:hover{ padding-left:18px }
.tech__row:hover .tech__name{ color:var(--orange) }
.tech__no{
  font-family:var(--font-jp-disp); font-weight:700;
  font-size:clamp(18px,2vw,26px); color:var(--ember);
  writing-mode:vertical-rl; letter-spacing:.2em;
}
.tech__name{
  font-family:var(--font-jp-disp); font-weight:800;
  font-size:clamp(26px,4.6vw,58px); letter-spacing:.1em; line-height:1.1;
  transition:color .4s;
}
.tech__name small{
  display:block; margin-top:6px;
  font-family:var(--font-ui); font-weight:400; font-size:10px;
  letter-spacing:.5em; color:var(--smoke);
}
.tech__verb{
  font-family:var(--font-jp-disp); font-weight:700;
  writing-mode:vertical-rl; font-size:clamp(13px,1.4vw,17px);
  letter-spacing:.4em; color:var(--gold);
  border:1px solid var(--hairline); padding:10px 6px;
}
.tech__plus{ position:relative; width:18px; height:18px }
.tech__plus::before,.tech__plus::after{
  content:""; position:absolute; background:var(--paper);
  transition:transform .5s var(--ease-out), background .4s;
}
.tech__plus::before{ left:0; top:8px; width:18px; height:1px }
.tech__plus::after{ left:8px; top:0; width:1px; height:18px }
.tech__item.is-open .tech__plus::after{ transform:scaleY(0) }
.tech__item.is-open .tech__plus::before{ background:var(--orange) }
.tech__body{ height:0; overflow:hidden }
.tech__inner{
  display:grid; grid-template-columns:1.2fr .8fr;
  gap:clamp(24px,4vw,60px); padding:6px 4px clamp(30px,5vh,50px);
}
.tech__chant{
  font-family:var(--font-jp-disp); font-weight:700;
  font-size:clamp(17px,2vw,24px); line-height:2.2; letter-spacing:.08em;
  color:var(--paper);
}
.tech__zh{ margin-top:14px; color:var(--gold); font-size:14px; letter-spacing:.1em }
.tech__desc{ margin-top:16px; color:var(--paper-dim); font-size:14.5px; max-width:56ch }
.tech__spirits{ margin-top:18px; display:flex; flex-wrap:wrap; gap:8px }
.tech__spirits span{
  font-family:var(--font-ui); font-size:11px; letter-spacing:.24em;
  border:1px solid rgba(232,98,44,.5); color:var(--orange); padding:4px 12px;
}
.tech__fig{ overflow:hidden; border:1px solid var(--hairline); align-self:start }
.tech__fig img{ width:100%; height:100%; max-height:320px; object-fit:cover }

/* ─────────────────────────── 03 千年血戦 */
.war{ background:linear-gradient(180deg, var(--ink) 0%, #0e0c0a 100%) }
.war__tl{ position:relative; max-width:1060px; margin:0 auto }
.war__line{
  position:absolute; left:50%; top:0; bottom:0; width:1px;
  background:var(--hairline);
}
.war__part{ padding:clamp(40px,7vh,80px) 0; position:relative }
.war__banner{
  overflow:hidden; border:1px solid var(--hairline); margin-bottom:clamp(36px,6vh,64px);
  position:relative;
}
.war__banner img{
  width:100%; height:clamp(180px,30vh,320px); object-fit:cover;
  filter:saturate(1.05); will-change:transform; transform:scale(1.15);
}
.war__part-head{ text-align:center; margin-bottom:clamp(40px,7vh,70px) }
.war__part-no{
  display:inline-block; font-family:var(--font-ui); font-size:10px;
  letter-spacing:.6em; color:var(--orange); border:1px solid rgba(232,98,44,.4);
  padding:6px 16px 6px 22px; margin-bottom:18px;
}
.war__part-head h3{
  font-family:var(--font-en-disp); font-weight:600;
  font-size:clamp(28px,4.4vw,54px); letter-spacing:.18em;
}
.war__part-head small{
  display:block; margin-top:10px;
  font-family:var(--font-jp-disp); font-weight:600; font-size:14px;
  letter-spacing:.4em; color:var(--smoke);
}
.war__list{ list-style:none }
.war__list li{
  position:relative; width:calc(50% - 44px);
  margin-bottom:clamp(36px,6vh,60px);
}
.war__list li:nth-child(odd){ margin-left:auto; text-align:left }
.war__list li:nth-child(even){ text-align:left }
.war__dot{
  position:absolute; top:8px; width:9px; height:9px; border-radius:50%;
  background:var(--ink); border:2px solid var(--orange);
}
.war__list li:nth-child(odd) .war__dot{ left:-49px }
.war__list li:nth-child(even) .war__dot{ right:-49px }
.war__list h4{
  font-family:var(--font-jp-disp); font-weight:800;
  font-size:clamp(19px,2.2vw,26px); letter-spacing:.14em; margin-bottom:10px;
}
.war__list p{ color:var(--paper-dim); font-size:14.5px }
.war__list figure{
  overflow:hidden; border:1px solid var(--hairline); margin-bottom:16px;
}
.war__list figure img{ width:100%; max-height:280px; object-fit:cover; will-change:transform; transform:scale(1.12) }

/* ─────────────────────────── 04 場面集 */
.gallery{
  background:var(--ink); position:relative;
  padding:clamp(90px,14vh,160px) 0 0;
}
.gallery__head{ padding:0 var(--gutter) }
.gallery__viewport{ overflow:hidden; margin-top:clamp(30px,6vh,70px) }
.gallery__track{
  display:flex; gap:clamp(20px,3vw,44px);
  padding:0 var(--gutter); width:max-content; will-change:transform;
}
.panel{ width:min(72vw, 860px); flex:none }
.panel figure{ overflow:hidden; border:1px solid var(--hairline) }
.panel img{
  width:100%; height:min(62vh,560px); object-fit:cover;
  transition:transform 1.4s var(--ease-out), filter 1.4s;
  filter:brightness(.9);
}
.panel:hover img{ transform:scale(1.045); filter:brightness(1) }
.panel__no{
  margin-top:22px; font-family:var(--font-jp-disp); font-weight:700;
  font-size:15px; letter-spacing:.5em; color:var(--orange);
}
.panel h3{
  font-family:var(--font-jp-disp); font-weight:800;
  font-size:clamp(26px,3vw,40px); letter-spacing:.2em; margin-top:4px;
}
.panel__cap{ margin-top:10px; color:var(--paper-dim); font-size:14px; letter-spacing:.08em }
.gallery__meta{
  text-align:right; padding:26px var(--gutter) 40px;
  font-family:var(--font-en-disp); letter-spacing:.4em; font-size:12px; color:var(--smoke);
}
.gallery__meta #galleryIndex{ color:var(--orange); font-variant-numeric:tabular-nums }

/* ─────────────────────────── 05 詩 */
.verse{ background:var(--ink); padding-bottom:0 }
.verse__stack{ position:relative; padding-bottom:26vh }
.verse__panel{
  position:sticky; top:0; min-height:100svh;
  display:grid; place-items:center; padding:0 var(--gutter);
}
.verse__card{
  position:relative; width:min(880px, 100%);
  min-height:min(72svh, 640px);
  display:flex; flex-direction:column; justify-content:center;
  padding:clamp(36px,6vw,90px);
  border:1px solid var(--hairline);
  overflow:hidden;
}
.verse__card--ink{ background:var(--ink-2) }
.verse__card--ember{
  background:linear-gradient(135deg, #1c0f08 0%, #2a130a 55%, #3a1a0d 100%);
  border-color:rgba(232,98,44,.4);
}
.verse__card--img img{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; filter:brightness(.42) saturate(1.05);
}
.verse__overlay{ position:relative; z-index:1 }
.verse__label{
  font-family:var(--font-ui); font-size:10px; letter-spacing:.5em;
  color:var(--orange); text-transform:uppercase; margin-bottom:clamp(20px,4vh,36px);
}
.verse__poem{
  font-family:var(--font-jp-disp); font-weight:700;
  font-size:clamp(20px,3.2vw,38px); line-height:2.3; letter-spacing:.12em;
}
.verse__trans{
  margin-top:clamp(18px,3.4vh,30px);
  color:var(--paper-dim); font-size:clamp(12.5px,1.4vw,15px);
  line-height:2.2; letter-spacing:.1em;
}
.verse__card--ember .verse__poem{ text-shadow:0 0 40px rgba(232,98,44,.4) }

/* ─────────────────────────── FOOTER */
.footer{
  position:relative; z-index:2;
  background:var(--ink); text-align:center;
  padding:clamp(80px,12vh,140px) var(--gutter) 46px;
  border-top:1px solid var(--hairline);
}
.footer__kanji{
  font-family:var(--font-jp-disp); font-weight:800;
  font-size:clamp(110px,22vw,300px); line-height:1; letter-spacing:.08em;
  color:transparent; -webkit-text-stroke:1px rgba(242,234,217,.4);
  transition:color .8s var(--ease-out), -webkit-text-stroke-color .8s;
  user-select:none;
}
.footer__kanji:hover{ color:var(--orange); -webkit-text-stroke-color:var(--orange) }
.footer__line{
  margin-top:clamp(20px,4vh,36px);
  font-family:var(--font-jp-body); font-size:15px; letter-spacing:.3em; color:var(--paper-dim);
}
.footer__meta{
  margin-top:clamp(40px,7vh,70px);
  display:grid; gap:18px; max-width:760px; margin-inline:auto;
  font-family:var(--font-ui); font-size:11.5px; line-height:2.1;
  letter-spacing:.08em; color:var(--smoke);
}
.footer__src{ opacity:.8 }
.footer__credit{ color:var(--paper-dim) }
.footer__top{
  display:inline-block; margin-top:clamp(36px,6vh,60px);
  font-family:var(--font-ui); font-size:11px; letter-spacing:.5em;
  color:var(--orange); border-bottom:1px solid rgba(232,98,44,.4); padding-bottom:6px;
}

/* ─────────────────────────── Reveal / Split（JS あり時のみ） */
html.js [data-reveal]{
  opacity:0; transform:translateY(30px);
  transition:opacity 1.1s var(--ease-out), transform 1.1s var(--ease-out);
  transition-delay:var(--d, 0s);
}
html.js [data-reveal].is-in{ opacity:1; transform:none }
html.js [data-split]{ overflow:hidden }
html.js [data-split] .char{
  display:inline-block; transform:translateY(115%) rotate(4deg);
  transition:transform 1s var(--ease-out);
  transition-delay:calc(var(--i) * 26ms);
}
html.js [data-split].is-in .char{ transform:none }

/* ─────────────────────────── Responsive */
@media (max-width:1024px){
  .profile__grid{ grid-template-columns:1fr; }
  .profile__portrait{ max-width:420px }
  .rikka__cards{ grid-template-columns:repeat(2,1fr) }
  .tech__inner{ grid-template-columns:1fr }
  .tech__fig{ max-width:560px }
}
@media (max-width:768px){
  .topbar{ padding:14px 20px }
  .topbar__nav{ display:none }
  .dots{ display:none }
  .hero__content{ align-items:center }
  .hero__bg img{ object-position:70% 18% }
  .hero__shade{
    background:
      linear-gradient(90deg, rgba(11,10,9,.88) 0%, rgba(11,10,9,.62) 46%, rgba(11,10,9,.18) 78%),
      linear-gradient(0deg, var(--ink) 0%, rgba(11,10,9,0) 26%),
      linear-gradient(180deg, rgba(11,10,9,.55) 0%, rgba(11,10,9,0) 20%);
  }
  .hero__kanji{ font-size:clamp(64px,19vw,110px) }
  .hero__sub{ padding-bottom:0 }
  .hero__tag{ font-size:13px }
  .hero__credit{ display:none }
  .profile__stats{ grid-template-columns:repeat(2,1fr) }
  .rikka__cards{ grid-template-columns:1fr }
  .war__line{ left:5px }
  .war__list li,
  .war__list li:nth-child(odd){
    width:calc(100% - 34px); margin-left:34px;
  }
  .war__list li:nth-child(odd) .war__dot,
  .war__list li:nth-child(even) .war__dot{ left:-34px; right:auto }
  .gallery__viewport{ overflow-x:auto; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch }
  .panel{ scroll-snap-align:center; width:82vw }
  .panel img{ height:52vh }
  .verse__panel{ position:relative; min-height:auto; padding:10px 0 }
  .verse__card{ min-height:auto }
  .verse__stack{ padding-bottom:0 }
  .tech__row{ grid-template-columns:auto 1fr auto; }
  .tech__verb{ display:none }
}
@media (max-width:520px){
  .profile__stats{ grid-template-columns:1fr 1fr }
  .panel{ width:88vw }
}

/* ─────────────────────────── Reduced motion */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{ animation-duration:.001s !important; transition-duration:.001s !important }
  html.js [data-reveal]{ opacity:1; transform:none }
  html.js [data-split] .char{ transform:none }
  .marquee__track{ animation:none }
  #petals,.grain,.cursor{ display:none }
  .gallery__viewport{ overflow-x:auto }
}
