@charset "UTF-8";
/* ============================================================
   横浜春節祭ショート動画映画祭 2027
   Theme : 夜の中華街 / ink-black × 金 × 朱赤
   ============================================================ */

/* ---------- tokens ---------- */
:root{
  --ink:        #0b0908;
  --ink-2:      #110d0c;
  --ink-3:      #171110;
  --gold:       #c9a45c;
  --gold-lt:    #e3c68b;
  --gold-dim:   rgba(201,164,92,.36);
  --vermillion: #a8231f;
  --vermillion-lt:#c62f28;
  --paper:      #f3ede4;
  --text:       rgba(243,237,228,.84);
  --text-dim:   rgba(243,237,228,.52);
  --line:       rgba(201,164,92,.22);

  --font-jp:    "Shippori Mincho B1", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --font-en:    "Cormorant Garamond", "Shippori Mincho B1", serif;
  --num:        lining-nums proportional-nums;
  --font-ui:    "Zen Kaku Gothic New", "Hiragino Sans", "Yu Gothic", sans-serif;

  --header-h:   clamp(56px, 7.4vw, 74px);
  --gutter:     clamp(22px, 5vw, 72px);
  --wrap:       1180px;
  --ease:       cubic-bezier(.22,1,.36,1);
}

/* ---------- reset ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:var(--header-h); }
body{
  margin:0;
  background:var(--ink);
  color:var(--text);
  font-family:var(--font-jp);
  font-weight:400;
  line-height:1.9;
  letter-spacing:.04em;
  font-feature-settings:"palt" 1;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
ul,ol{ list-style:none; margin:0; padding:0; }
h1,h2,p{ margin:0; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
:focus-visible{ outline:1px solid var(--gold); outline-offset:4px; }
.u-sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.u-nb{ white-space:nowrap; }
.wrap{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:var(--gutter); }

/* ---------- film grain ---------- */
.grain{
  position:fixed; inset:-120px; z-index:900; pointer-events:none;
  opacity:.32; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='.42'/%3E%3C/svg%3E");
  animation:grainShift 620ms steps(2,end) infinite;
}
@keyframes grainShift{
  0%{ transform:translate(0,0) } 25%{ transform:translate(-6px,4px) }
  50%{ transform:translate(5px,-5px) } 75%{ transform:translate(-4px,-3px) }
  100%{ transform:translate(0,0) }
}

/* ============================================================
   HEADER
   ============================================================ */
.site-header{
  position:fixed; inset:0 0 auto; z-index:800;
  height:var(--header-h);
  display:flex; align-items:center; justify-content:space-between;
  padding-inline:var(--gutter);
  transition:background-color .5s var(--ease), backdrop-filter .5s var(--ease),
             box-shadow .5s var(--ease), transform .55s var(--ease), opacity .35s ease;
}
/* 下スクロールで隠れ、上スクロールで戻る */
.site-header.is-hidden{ transform:translateY(-104%); opacity:0; }
.site-header.is-hidden .nav-overlay{ opacity:1 }
.site-header::after{
  content:""; position:absolute; inset:auto 0 0; height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-dim) 18%,var(--gold-dim) 82%,transparent);
  opacity:0; transition:opacity .5s var(--ease);
}
.site-header.is-stuck{
  background:rgba(11,9,8,.86);
  backdrop-filter:blur(14px) saturate(1.1);
  box-shadow:0 18px 40px -28px #000;
}
.site-header.is-stuck::after{ opacity:1; }

.brand{ display:flex; align-items:center; gap:clamp(9px,1.4vw,14px); }
.brand__mark{ display:block; width:clamp(26px,3.4vw,36px); flex:none; }
.brand__mark img{ width:100%; height:auto; filter:drop-shadow(0 4px 14px rgba(168,35,31,.45)); }
.brand__text{ display:flex; flex-direction:column; gap:.28em; }
.brand__en{
  font-family:var(--font-ui); font-weight:500;
  font-size:clamp(10px,2.5vw,15px); letter-spacing:.1em;
  font-variant-numeric:var(--num);
  color:var(--paper); line-height:1.2; white-space:nowrap;
}
@media (min-width:760px){ .brand__en{ letter-spacing:.13em } }
.brand__ja{
  font-family:var(--font-ui); font-weight:500;
  font-size:clamp(9.5px,1.85vw,12px); letter-spacing:.13em;
  color:rgba(243,237,228,.72); line-height:1.1;
}

/* hamburger */
.menu-toggle{
  display:flex; align-items:center; gap:.7em;
  padding:10px 2px 10px 12px; flex:none;
}
.menu-toggle__bars{ display:block; position:relative; width:30px; height:16px; }
.menu-toggle__bars i{
  position:absolute; left:0; width:100%; height:1.5px; background:var(--paper);
  transition:transform .45s var(--ease), opacity .25s ease, background-color .45s ease;
}
.menu-toggle__bars i:nth-child(1){ top:0 } 
.menu-toggle__bars i:nth-child(2){ top:50%; margin-top:-.75px }
.menu-toggle__bars i:nth-child(3){ bottom:0 }
.menu-toggle__label{
  font-family:var(--font-en); font-size:11px; letter-spacing:.22em;
  color:var(--text-dim); display:none;
}
@media (min-width:900px){ .menu-toggle__label{ display:block } }
.menu-toggle:hover .menu-toggle__bars i{ background:var(--gold-lt) }
.menu-toggle[aria-expanded="true"] .menu-toggle__bars i:nth-child(1){ transform:translateY(7.25px) rotate(40deg) }
.menu-toggle[aria-expanded="true"] .menu-toggle__bars i:nth-child(2){ opacity:0 }
.menu-toggle[aria-expanded="true"] .menu-toggle__bars i:nth-child(3){ transform:translateY(-7.25px) rotate(-40deg) }

/* ============================================================
   NAV OVERLAY
   ============================================================ */
.nav-overlay{
  position:fixed; inset:0; z-index:790;
  background:linear-gradient(160deg,#0e0a09 0%,#160f0d 55%,#0b0908 100%);
  display:flex; flex-direction:column;
  overflow-y:auto; overscroll-behavior:contain;
  padding:calc(var(--header-h) + 3vh) var(--gutter) 5vh;
  opacity:0; visibility:hidden;
  clip-path:inset(0 0 100% 0);
  transition:clip-path .8s var(--ease), opacity .4s ease, visibility .8s;
}
.nav-overlay.is-open{ opacity:1; visibility:visible; clip-path:inset(0 0 0 0); }
.nav-overlay__glow{
  position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(48vw 48vw at 88% 12%, rgba(168,35,31,.30), transparent 62%),
    radial-gradient(38vw 38vw at 6% 92%, rgba(201,164,92,.16), transparent 66%);
}
.nav-list{ position:relative; max-width:var(--wrap); width:100%; margin:auto; }
.nav-list li{
  opacity:0; transform:translateY(22px);
  border-bottom:1px solid rgba(201,164,92,.14);
}
.nav-overlay.is-open .nav-list li{
  animation:navIn .7s var(--ease) forwards;
  animation-delay:calc(.18s + var(--i) * .05s);
}
@keyframes navIn{ to{ opacity:1; transform:none } }
.nav-list a{
  position:relative; display:flex; align-items:baseline; gap:clamp(12px,2.4vw,28px);
  padding:clamp(8px,1.25vh,16px) 4px;
  transition:padding-left .5s var(--ease), color .4s ease;
}
.nav-list a::before{
  content:""; position:absolute; left:0; bottom:-1px; width:0; height:1px;
  background:linear-gradient(90deg,var(--gold-lt),transparent);
  transition:width .6s var(--ease);
}
.nav-list a:hover{ padding-left:14px; }
.nav-list a:hover::before{ width:100%; }
.nav-list__num{
  font-family:var(--font-en); font-size:clamp(11px,1.3vw,13px);
  letter-spacing:.14em; color:var(--gold-dim); flex:none; width:2.4em;
  font-variant-numeric:var(--num);
}
.nav-list__en{
  font-family:var(--font-en); font-weight:400;
  font-size:clamp(22px,min(4.8vw,3.7vh),44px); letter-spacing:.09em;
  color:var(--paper); line-height:1;
  transition:color .4s ease;
}
@media (min-width:900px){ .nav-list__en{ min-width:330px } }
.nav-list a:hover .nav-list__en{ color:var(--gold-lt) }
.nav-list__ja{ font-size:clamp(11.5px,1.5vw,15px); letter-spacing:.14em; color:var(--text-dim) }
.nav-overlay__foot{
  position:relative; margin-top:clamp(24px,5vh,52px);
  font-family:var(--font-en); font-size:11px; letter-spacing:.32em;
  color:rgba(201,164,92,.4); text-align:center;
  opacity:0;
}
.nav-overlay.is-open .nav-overlay__foot{ animation:navIn .8s var(--ease) .6s forwards }

/* ============================================================
   HERO
   ============================================================ */
.hero{
  position:relative; isolation:isolate;
  min-height:100svh;
  display:flex; align-items:center;
  padding:calc(var(--header-h) + clamp(20px,4vh,40px)) var(--gutter) clamp(64px,10vh,100px);
  overflow:hidden;
}
.hero__media{ position:absolute; inset:0; z-index:-3; }
.hero__slide{
  position:absolute; inset:0;
  width:100%; height:100%; object-fit:cover; object-position:60% 50%;
  opacity:0; transform:scale(1.06);
  transition:opacity 1.4s var(--ease), transform 8.4s linear;
}
.hero__slide.is-active{ opacity:1; transform:scale(1) }
@media (prefers-reduced-motion:reduce){
  .hero__slide{ transform:none; transition:opacity .4s linear }
  .hero__slide.is-active{ transform:none }
}
@keyframes heroZoom{ from{ transform:scale(1.12) } to{ transform:scale(1) } }
.hero__scrim{
  position:absolute; inset:0; z-index:-2;
  background:
    linear-gradient(100deg, var(--ink) 0%, rgba(11,9,8,.96) 30%, rgba(11,9,8,.8) 46%, rgba(11,9,8,.34) 68%, rgba(11,9,8,.6) 100%),
    linear-gradient(to top, var(--ink) 0%, rgba(11,9,8,0) 34%);
}
.hero__lanterns{ position:absolute; inset:0; z-index:-1; pointer-events:none; }
.hero__lanterns i{
  position:absolute; border-radius:50%; filter:blur(46px); opacity:.5;
  animation:lantern 7s ease-in-out infinite;
}
.hero__lanterns i:nth-child(1){ width:30vmax; height:30vmax; top:-8%; right:-6%; background:rgba(168,35,31,.42) }
.hero__lanterns i:nth-child(2){ width:20vmax; height:20vmax; bottom:6%; right:28%; background:rgba(201,164,92,.22); animation-delay:-2.4s }
.hero__lanterns i:nth-child(3){ width:24vmax; height:24vmax; top:36%; left:-12%; background:rgba(168,35,31,.20); animation-delay:-4.6s }
@keyframes lantern{ 0%,100%{ transform:translateY(0) scale(1); opacity:.42 } 50%{ transform:translateY(-16px) scale(1.06); opacity:.62 } }

.hero__inner{
  position:relative; width:100%; max-width:var(--wrap); margin-inline:auto;
}
.hero__lead{
  font-size:clamp(20px,3.2vw,29px); letter-spacing:.1em;
  color:var(--paper); margin-bottom:.35em;
}
.hero__title{
  font-weight:500; line-height:1.32; letter-spacing:.02em;
  margin-bottom:clamp(20px,3vh,30px);
}
.hero__title-line{
  display:block;
  font-size:clamp(34px,7.2vw,72px);
  background:linear-gradient(96deg,#f0dcae 0%,#c9a45c 42%,#e9d3a0 72%,#b8904a 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
  text-shadow:0 12px 42px rgba(201,164,92,.14);
}
.hero__title-seg{ display:inline-block }
.hero__desc{
  font-size:clamp(14px,1.5vw,16.5px); line-height:1.95; letter-spacing:.055em;
  color:var(--text); max-width:38em;
  /* 上下に少しゆとりを持たせる。上マージンは .hero__title の下マージン（最大30px）と
     相殺されるため、必ずそれより大きい値にしておくこと */
  margin-top:clamp(32px,4.2vh,44px);
  margin-bottom:clamp(48px,6.4vh,72px);
}
/* PC のみ有効な改行。SP では非表示にして自然折り返しに任せる */
.br-pc{ display:none }
@media (min-width:760px){ .br-pc{ display:inline } }

/* 和文約物のツメ。Shippori Mincho B1 は palt を持たないため、
   全角ベタ組みで空いてしまう約物の余白を個別に相殺する。
   見出し級（24px〜）で使う想定。使い方は約物を <span class="kn kn--ten"> で包むだけ */
.kn{ display:inline-block }
.kn--open{  margin-left:-.42em }   /* 「 行頭にぶら下げて左端を揃える。右は詰めず開けたまま */
.kn--ten,
.kn--maru{  margin-right:-.44em }  /* 、。 右半分の空きを詰める */
/* 」 は左右とも詰めない（.kn--close にツメの指定なし）*/

/* 募集期間 */
.period{ margin-bottom:clamp(22px,3.2vh,34px); }
.period__label{
  display:inline-block; padding:.42em 1.05em;
  border:1px solid var(--line);
  font-family:var(--font-ui); font-weight:300;
  font-size:clamp(11px,1.15vw,13px); letter-spacing:.18em;
  color:var(--gold-lt); line-height:1;
  margin-bottom:.85em;
}
.period__date{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:.2em .4em;
  font-family:var(--font-en); color:var(--paper); line-height:1.1;
  font-variant-numeric:var(--num);
}
.period__ymd{ font-size:clamp(26px,4.4vw,44px); font-weight:400; letter-spacing:.015em; }
.period__dow{ font-size:clamp(13px,1.7vw,21px); letter-spacing:.1em; color:rgba(243,237,228,.9) }
.period__tilde{ font-size:clamp(20px,3vw,34px); color:var(--gold); padding-inline:.2em }
.period__time{ font-size:clamp(15px,2vw,24px); letter-spacing:.06em; color:var(--gold-lt) }

/* CTA */
.hero__actions{ display:flex; flex-direction:column; gap:clamp(12px,1.6vh,16px); margin-bottom:clamp(22px,3vh,34px); }
@media (min-width:760px){ .hero__actions{ flex-direction:row; flex-wrap:wrap; } }
.btn{
  position:relative; overflow:hidden;
  display:flex; align-items:center; justify-content:space-between; gap:2.4em;
  width:100%; max-width:400px; min-height:clamp(54px,6.6vh,64px);
  padding:0 clamp(20px,3vw,32px);
  background:var(--vermillion);
  color:var(--paper);
  font-size:clamp(15px,1.5vw,18px); letter-spacing:.16em;
  box-shadow:0 20px 40px -26px rgba(168,35,31,.95);
  transition:transform .45s var(--ease), box-shadow .45s var(--ease);
}
@media (min-width:760px){ .btn{ width:auto; min-width:300px; } }
.btn::before{
  content:""; position:absolute; inset:0; z-index:0;
  background:linear-gradient(100deg,var(--vermillion-lt),#8f1a17);
  opacity:0; transition:opacity .45s var(--ease);
}
.btn::after{
  content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(105deg,transparent 42%,rgba(243,237,228,.22) 50%,transparent 58%);
  transform:translateX(-120%); transition:transform .8s var(--ease);
}
.btn > *{ position:relative; z-index:2 }
.btn:hover{ transform:translateY(-3px); box-shadow:0 26px 46px -24px rgba(198,47,40,.95) }
.btn:hover::before{ opacity:1 }
.btn:hover::after{ transform:translateX(120%) }
.btn__arrow{ font-style:normal; font-size:1.15em; transition:transform .45s var(--ease) }
.btn:hover .btn__arrow{ transform:translateX(7px) }

.dl-link{
  display:inline-flex; align-items:center; gap:.7em;
  font-size:clamp(14px,1.4vw,17px); letter-spacing:.1em;
  color:var(--paper);
  padding-bottom:.28em;
  border-bottom:1px solid transparent;
  transition:color .4s ease, border-color .4s ease;
}
.dl-link__icon{ display:grid; place-items:center; color:var(--gold-lt); transition:transform .45s var(--ease) }
.dl-link:hover{ color:var(--gold-lt); border-bottom-color:var(--gold-dim) }
.dl-link:hover .dl-link__icon{ transform:translateY(3px) }

/* scroll cue */
.scroll-cue{
  position:absolute; right:calc(var(--gutter) * .55); bottom:clamp(20px,5vh,54px);
  display:none; flex-direction:column; align-items:center; gap:12px;
  font-family:var(--font-en); font-size:11px; letter-spacing:.3em;
  color:var(--text-dim);
  writing-mode:vertical-rl;
}
@media (min-width:1024px){ .scroll-cue{ display:flex } }
.scroll-cue i{ display:block; width:1px; height:74px; background:linear-gradient(var(--gold-dim),transparent); position:relative; overflow:hidden }
.scroll-cue i::after{
  content:""; position:absolute; inset:0 0 auto; height:26px; background:var(--gold-lt);
  animation:cue 2.2s var(--ease) infinite;
}
@keyframes cue{ 0%{ transform:translateY(-100%) } 60%,100%{ transform:translateY(300%) } }

/* ============================================================
   SECTIONS
   ============================================================ */
.section{ position:relative; padding-block:clamp(64px,11vh,124px); }
.section--news{
  background:
    radial-gradient(70vw 40vw at 82% -10%, rgba(168,35,31,.10), transparent 62%),
    linear-gradient(180deg,var(--ink) 0%,var(--ink-2) 100%);
}
.section-title{
  display:flex; align-items:baseline; gap:.55em; flex-wrap:wrap;
  font-weight:400; line-height:1.2;
  margin-bottom:clamp(24px,4vh,44px);
  color:var(--gold);
}
.section-title__en{ font-family:var(--font-en); font-size:clamp(26px,4.2vw,44px); letter-spacing:.12em }
.section-title__slash{ font-family:var(--font-en); font-size:clamp(20px,3vw,32px); color:var(--gold-dim) }
.section-title__ja{ font-size:clamp(16px,2.2vw,22px); letter-spacing:.14em; color:var(--gold-lt) }
.section-title--center{ justify-content:center; text-align:center }
.section-title__note{
  align-self:center; font-family:var(--font-ui); font-weight:300;
  font-size:clamp(11px,1.15vw,13px); letter-spacing:.1em; color:var(--text-dim);
}
/* 狭い画面では EN / JA を2段に */
@media (max-width:719px){
  .section-title{ flex-direction:column; align-items:flex-start; gap:.2em }
  .section-title--center{ align-items:center }
  .section-title__slash{ display:none }
}

/* NEWS list */
.news-list{ border-top:1px solid var(--line); }
.news-list__item{
  display:grid; gap:.15em .1em;
  grid-template-columns:1fr;
  padding:clamp(13px,2vh,20px) 4px;
  border-bottom:1px solid var(--line);
}
@media (min-width:720px){
  .news-list__item{ grid-template-columns:min(180px,20%) 1fr; align-items:baseline; gap:0 clamp(18px,3vw,44px); }
}
.news-list__date{
  position:relative; padding-left:1.35em;
  font-family:var(--font-en); font-size:clamp(15px,1.7vw,20px);
  letter-spacing:.06em; color:var(--gold-lt);
  font-variant-numeric:var(--num);
}
.news-list__date::before{
  content:""; position:absolute; left:0; top:.72em;
  width:.85em; height:1px; background:var(--gold);
}
.news-list__text{
  font-size:clamp(14px,1.45vw,16.5px); line-height:1.85; letter-spacing:.05em;
  color:var(--text);
}
.news-list__text .note{ color:var(--text-dim); font-size:.92em }

/* stub sections（Canva流し込み待ち） */
.section--stub{ border-top:1px solid rgba(201,164,92,.1); background:var(--ink-2); }
.stub-note{
  font-family:var(--font-ui); font-weight:300;
  font-size:13px; letter-spacing:.22em; color:var(--text-dim);
  padding:clamp(28px,6vh,60px) 0;
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  text-align:center;
}

/* ============================================================
   ABOUT
   ============================================================ */
.section--about{
  position:relative; isolation:isolate; overflow:hidden;
  padding-block:clamp(72px,13vh,150px);
  border-top:1px solid rgba(201,164,92,.12);
}
.about__media{ position:absolute; inset:0; z-index:-2 }
.about__media img{ width:100%; height:100%; object-fit:cover; object-position:22% 50% }
.about__scrim{
  position:absolute; inset:0; z-index:-1;
  background:
    linear-gradient(78deg, rgba(11,9,8,.5) 0%, rgba(11,9,8,.72) 34%, rgba(11,9,8,.92) 62%, rgba(11,9,8,.97) 100%),
    linear-gradient(180deg, var(--ink) 0%, rgba(11,9,8,0) 16%, rgba(11,9,8,0) 82%, var(--ink) 100%);
}
@media (min-width:900px){
  .about__scrim{
    background:
      linear-gradient(84deg, rgba(11,9,8,.14) 0%, rgba(11,9,8,.48) 30%, rgba(11,9,8,.86) 58%, rgba(11,9,8,.96) 100%),
      linear-gradient(180deg, var(--ink) 0%, rgba(11,9,8,0) 18%, rgba(11,9,8,0) 80%, var(--ink) 100%);
  }
}
.about__catch{
  font-size:clamp(21px,3.6vw,40px); font-weight:500; line-height:1.55; letter-spacing:.08em;
  color:var(--paper); margin-bottom:clamp(22px,3.4vh,38px);
  text-shadow:0 6px 30px rgba(0,0,0,.7);
}
.about__body{ max-width:44em; }
.about__body p{
  font-size:clamp(13.5px,1.4vw,16px); line-height:2.15; letter-spacing:.05em; color:var(--text);
  text-shadow:0 4px 24px rgba(0,0,0,.75);
}
.about__body p + p{ margin-top:clamp(18px,2.6vh,30px) }
.about__body em{
  font-style:normal; font-family:var(--font-en);
  font-size:1.12em; letter-spacing:.06em; color:var(--gold-lt);
}
@media (min-width:900px){
  .about__catch,.about__body{ text-align:right }
  .about__body{ margin-left:auto }
}

/* ============================================================
   CONCEPT
   ============================================================ */
.section--concept{
  background:
    radial-gradient(60vw 40vw at 12% 0%, rgba(201,164,92,.07), transparent 60%),
    linear-gradient(180deg,var(--ink) 0%,var(--ink-2) 100%);
}
.concept__catch{
  font-size:clamp(24px,4.2vw,44px); font-weight:500; letter-spacing:.12em;
  color:var(--paper); margin-bottom:clamp(34px,5.5vh,66px);
}
.concept__grid{
  display:grid; grid-template-columns:1fr; gap:clamp(38px,5vw,44px);
  text-align:center;
}
@media (min-width:720px){ .concept__grid{ grid-template-columns:repeat(3,1fr) } }
.concept__icon{
  display:grid; place-items:center;
  width:clamp(96px,11vw,124px); aspect-ratio:1;
  margin:0 auto clamp(16px,2.4vh,24px);
  color:var(--gold-lt);
  background:
    radial-gradient(circle at 50% 38%, rgba(201,164,92,.16), rgba(201,164,92,.02) 70%),
    var(--ink-3);
  border:1px solid var(--line);
  box-shadow:inset 0 0 46px -20px var(--gold);
  transition:transform .6s var(--ease), border-color .5s ease, box-shadow .6s var(--ease);
}
.concept__icon svg{ width:52%; height:auto; filter:drop-shadow(0 0 9px rgba(201,164,92,.5)) }
.concept__item:hover .concept__icon{
  transform:translateY(-5px); border-color:var(--gold);
  box-shadow:inset 0 0 46px -14px var(--gold), 0 22px 44px -30px rgba(201,164,92,.7);
}
.concept__name{
  font-size:clamp(20px,2.6vw,28px); font-weight:500; letter-spacing:.18em;
  color:var(--gold-lt); margin-bottom:.75em;
}
.concept__text{ font-size:clamp(13px,1.3vw,15px); line-height:2.05; letter-spacing:.04em; color:var(--text) }
/* SP：縦積みだと1枚が高くなりすぎるため、アイコンを左に置いた横並びにする。
   PC用に入れてある <br> も無効化して、幅いっぱいに自然折り返しさせる */
@media (max-width:719px){
  .concept__grid{ gap:26px; text-align:left }
  .concept__item{
    /* minmax(0,1fr) にしないと min-width:auto が効いてテキストがはみ出す */
    display:grid; grid-template-columns:auto minmax(0,1fr);
    column-gap:16px; align-items:start;
  }
  .concept__icon{
    /* 見出し＋本文の高さいっぱいに伸ばして、アイコン枠と文字ブロックの下端を揃える */
    width:74px; margin:0; grid-row:1 / span 2;
    aspect-ratio:auto; align-self:stretch; height:auto;
  }
  /* 行間を詰めて、見出しの1行目をアイコン枠の上端に揃える。
     リセットCSS（h1,h2,p）に h3 が含まれていないため、
     ブラウザ既定の margin-block-start:1em を明示的に打ち消す */
  .concept__name{ align-self:start; line-height:1; margin-top:0; margin-bottom:.5em }
  .concept__text{ line-height:1.85 }
  .concept__text br{ display:none }
}

/* ============================================================
   PROJECT FLOW
   ============================================================ */
.section--flow{ background:var(--ink-2); border-top:1px solid rgba(201,164,92,.1) }
.flow{ --marker:clamp(62px,8vw,82px); position:relative; display:grid; gap:clamp(22px,3.4vh,38px) }
.flow::before{
  content:""; position:absolute; z-index:0;
  left:0; top:14px; bottom:34px; width:var(--marker);
  background:repeating-linear-gradient(180deg,
    rgba(201,164,92,.5) 0 3px, transparent 3px 9px) center / 1px 100% no-repeat;
  opacity:.7;
}
.flow__item{
  position:relative; z-index:1;
  display:grid; grid-template-columns:var(--marker) 1fr;
  gap:clamp(16px,3vw,40px); align-items:start;
}
.flow__marker{ display:grid; justify-items:center; gap:9px }
.flow__icon{
  display:grid; place-items:center; width:100%; aspect-ratio:1;
  color:var(--gold-lt); background:var(--ink-3);
  border:1px solid var(--line);
  transition:border-color .5s ease, color .5s ease, transform .5s var(--ease);
}
.flow__icon svg{ width:48%; height:auto }
.flow__item:hover .flow__icon{ border-color:var(--gold); transform:translateY(-3px) }
.flow__label{
  font-family:var(--font-ui); font-weight:400;
  font-size:clamp(10.5px,1.05vw,12px); letter-spacing:.1em;
  color:var(--gold-lt); text-align:center; line-height:1.3;
}
.flow__text{
  padding-top:.35em;
  font-size:clamp(13.5px,1.35vw,15.5px); line-height:2.05; letter-spacing:.045em; color:var(--text);
}

/* ============================================================
   CATEGORY
   ============================================================ */
.section--category{
  background:
    radial-gradient(60vw 40vw at 88% 4%, rgba(168,35,31,.12), transparent 62%),
    var(--ink);
  border-top:1px solid rgba(201,164,92,.1);
}
.cat-grid{ display:grid; grid-template-columns:1fr; gap:clamp(18px,2.6vw,30px) }
@media (min-width:860px){ .cat-grid{ grid-template-columns:repeat(2,1fr) } }
.cat-card{
  position:relative; isolation:isolate; overflow:hidden;
  display:flex; min-height:clamp(400px,50vh,540px);
  border:1px solid var(--line);
  transition:border-color .5s ease, transform .6s var(--ease);
}
.cat-card:hover{ border-color:var(--gold-dim); transform:translateY(-4px) }
.cat-card__media{ position:absolute; inset:0; z-index:-2 }
.cat-card__media img{ width:100%; height:100%; object-fit:cover; transition:transform 1.4s var(--ease) }
.cat-card:hover .cat-card__media img{ transform:scale(1.06) }
.cat-card::after{ content:""; position:absolute; inset:0; z-index:-1 }
.cat-card--short::after{ background:linear-gradient(178deg, rgba(120,22,17,.42) 0%, rgba(14,8,7,.82) 46%, rgba(11,9,8,.95) 100%) }
.cat-card--stream::after{ background:linear-gradient(178deg, rgba(96,76,32,.36) 0%, rgba(14,11,7,.82) 46%, rgba(11,9,8,.95) 100%) }
.cat-card__body{ padding:clamp(24px,3.2vw,44px); width:100% }
.cat-card__no{
  font-family:var(--font-en); font-variant-numeric:var(--num);
  font-size:13px; letter-spacing:.28em; color:var(--gold); margin-bottom:1.1em;
}
.cat-card__title{
  font-size:clamp(24px,3vw,34px); font-weight:500; line-height:1.45; letter-spacing:.04em;
  color:var(--paper); margin-bottom:clamp(18px,2.6vh,30px);
  text-shadow:0 6px 26px rgba(0,0,0,.6);
}
/* 2カラム時は部門名の行数が違ってもリストの開始位置を揃える（2行分を確保） */
@media (min-width:860px){ .cat-card__title{ min-height:2.9em } }
.cat-card__list li{
  display:flex; flex-wrap:wrap; gap:0 .5em;
  padding:.62em 0; border-bottom:1px solid rgba(201,164,92,.14);
  font-size:clamp(13px,1.3vw,15px); line-height:1.8; letter-spacing:.04em;
}
.cat-card__list li::before{
  content:""; flex:none; width:5px; height:5px; margin-top:.82em; margin-right:.2em;
  background:var(--gold); transform:rotate(45deg);
}
.cat-card__key{ flex:none; color:var(--gold-lt) }
@media (min-width:520px){ .cat-card__key{ min-width:6em } }
.cat-card__key::after{ content:"："; opacity:.5 }
.cat-card__val{ flex:1 1 12em; color:var(--text) }

/* 注記の ※ 参照マーク */
.note-ref{ color:var(--gold); font-size:.85em; vertical-align:.12em; margin:0 .12em }
.notes{ display:grid; gap:.45em; margin-top:clamp(20px,3vh,34px) }
.notes li{
  position:relative; padding-left:1.4em;
  font-size:clamp(12.5px,1.2vw,14px); line-height:1.9; letter-spacing:.04em; color:var(--text-dim);
}
.notes li::before{ content:""; position:absolute; left:0; top:.95em; width:.85em; height:1px; background:var(--gold-dim) }

/* ============================================================
   AREA
   ============================================================ */
.section--area{ background:var(--ink-2); border-top:1px solid rgba(201,164,92,.1) }
.area-grid{ display:grid; gap:clamp(9px,1.1vw,14px); grid-template-columns:repeat(2,1fr) }
@media (min-width:560px){ .area-grid{ grid-template-columns:repeat(3,1fr) } }
@media (min-width:880px){ .area-grid{ grid-template-columns:repeat(4,1fr) } }
@media (min-width:1180px){ .area-grid{ grid-template-columns:repeat(7,1fr) } }
.area-card{
  position:relative; overflow:hidden; aspect-ratio:3/4.1;
  border:1px solid rgba(201,164,92,.16);
  transition:border-color .5s ease, transform .6s var(--ease);
}
.area-card:hover{ border-color:var(--gold); transform:translateY(-4px) }
.area-card__media{ position:absolute; inset:0 }
.area-card__media img{ width:100%; height:100%; object-fit:cover; transition:transform 1.2s var(--ease) }
.area-card:hover .area-card__media img{ transform:scale(1.09) }
.area-card::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(11,9,8,.18) 0%, rgba(11,9,8,.12) 40%, rgba(11,9,8,.92) 100%);
}
.area-card__badge{
  position:absolute; z-index:2; top:0; left:0;
  display:grid; place-items:center;
  width:clamp(24px,2.8vw,32px); aspect-ratio:1;
  background:var(--vermillion); color:var(--paper);
  font-family:var(--font-en); font-size:clamp(13px,1.5vw,17px); letter-spacing:.02em; line-height:1;
}
.area-card__name{
  position:absolute; z-index:2; inset:auto 0 0;
  padding:clamp(9px,1.1vw,14px);
  font-size:clamp(12.5px,1.35vw,15px); font-weight:500; line-height:1.45; letter-spacing:.04em;
  color:var(--paper);
}
.area-card__name span{
  display:block; font-size:.8em; letter-spacing:.16em; color:var(--gold-lt); margin-top:.2em;
}
.area-notes{ display:grid; gap:clamp(24px,3.4vh,36px); margin-top:clamp(34px,5.5vh,62px) }
@media (min-width:900px){
  .area-notes{ grid-template-columns:repeat(2,1fr); gap:clamp(26px,3vw,48px) }
  .area-note--wide{ grid-column:1 / -1 }
}
.area-note__title{
  font-size:clamp(16.5px,1.9vw,21px); font-weight:500; letter-spacing:.1em; color:var(--gold-lt);
  padding-bottom:.55em; margin-bottom:.8em; border-bottom:1px solid var(--line);
}
.area-note p{ font-size:clamp(13.5px,1.35vw,15.5px); line-height:2.05; letter-spacing:.045em; color:var(--text) }
.area-note p + p{ margin-top:.9em }

/* ============================================================
   SUPPORT
   ============================================================ */
.section--support{ background:var(--ink); border-top:1px solid rgba(201,164,92,.1) }
.perks{ display:grid; gap:clamp(16px,2.4vh,26px) }
.perk{
  position:relative;
  padding:clamp(22px,3vw,44px);
  color:var(--paper);
  background:linear-gradient(150deg,#b02a24 0%,#9a211c 52%,#7f1a17 100%);
  border:1px solid rgba(240,220,174,.2);
  box-shadow:0 28px 54px -38px #000;
}
.perk__title{
  font-size:clamp(21px,2.9vw,34px); font-weight:500; letter-spacing:.05em; line-height:1.45;
  padding-bottom:.4em; margin-bottom:clamp(16px,2.4vh,26px);
  border-bottom:1.5px solid rgba(243,237,228,.55);
}
.perk__no{ font-family:var(--font-jp) }
.perk__no::after{ content:"："; opacity:.7 }
.perk__lead{ font-size:clamp(12.5px,1.35vw,15px); letter-spacing:.06em; color:rgba(243,237,228,.88); margin-bottom:.7em }
.perk__tail{ font-size:clamp(13px,1.45vw,16px); letter-spacing:.05em; color:var(--paper) }
.perk__body{ font-size:clamp(13.5px,1.5vw,17px); line-height:2.05; letter-spacing:.05em }
.perk__note{
  margin-top:clamp(12px,1.8vh,18px);
  font-size:clamp(11px,1.1vw,13px); line-height:1.85; letter-spacing:.03em;
  color:rgba(243,237,228,.72);
}

/* 特典1：制作協力金 */
.perk__grants{ display:grid; grid-template-columns:1fr; gap:clamp(20px,2.6vw,30px) }
@media (min-width:640px){
  .perk__grants{ grid-template-columns:1fr 1fr }
  .grant + .grant{ padding-left:clamp(20px,3vw,36px); border-left:1px solid rgba(243,237,228,.3) }
}
.grant__dept{
  display:inline-block; padding:.45em 1.1em; margin-bottom:.9em;
  border:1px solid rgba(243,237,228,.5);
  font-family:var(--font-ui); font-weight:300;
  font-size:clamp(10.5px,1.1vw,12.5px); letter-spacing:.1em; line-height:1.2;
}
.grant__unit{ font-size:clamp(11.5px,1.2vw,13.5px); letter-spacing:.08em; color:rgba(243,237,228,.85) }
.grant__amount{ line-height:1.05; font-size:clamp(18px,2.2vw,26px); letter-spacing:.04em }
.grant__amount em{
  font-family:var(--font-en); font-style:normal; font-variant-numeric:var(--num);
  font-size:clamp(44px,6.2vw,72px); letter-spacing:.01em; color:#f7e3b6;
  margin-right:.06em; text-shadow:0 8px 26px rgba(0,0,0,.45);
}
.grant__tax{ margin-top:.2em; font-size:clamp(11px,1.1vw,12.5px); color:rgba(243,237,228,.75) }

/* 特典2：チェックリスト */
.perk__checks{ display:grid; gap:.4em; margin-bottom:.9em }
.perk__checks li{
  position:relative; padding-left:1.9em;
  font-size:clamp(14.5px,1.8vw,21px); letter-spacing:.05em; line-height:1.6;
}
.perk__checks li::before{
  content:""; position:absolute; left:0; top:.46em;
  width:.78em; height:.78em; border:1.4px solid rgba(243,237,228,.85);
}

/* 特典3・4：アイコン列 */
.perk__icons{
  display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(18px,2.4vw,30px);
  margin:clamp(16px,2.4vh,24px) 0 clamp(14px,2vh,20px);
}
@media (min-width:560px){ .perk__icons{ grid-template-columns:repeat(4,1fr) } }
.perk__icons li{ display:grid; justify-items:center; gap:.65em; text-align:center }
.perk__ico{ display:grid; place-items:center; width:clamp(46px,5.6vw,62px); aspect-ratio:1; color:var(--paper) }
.perk__ico svg{ width:100%; height:auto }
.perk__ico-label{ font-size:clamp(11.5px,1.25vw,14.5px); letter-spacing:.05em; line-height:1.45 }

/* ============================================================
   SCHEDULE
   ============================================================ */
.section--schedule{
  position:relative; isolation:isolate; overflow:hidden;
  padding-block:clamp(72px,12vh,140px);
}
.sched__media{ position:absolute; inset:0; z-index:-2 }
.sched__media img{ width:100%; height:100%; object-fit:cover; object-position:50% 46% }
.sched__scrim{
  position:absolute; inset:0; z-index:-1;
  background:
    radial-gradient(70% 60% at 50% 46%, rgba(11,9,8,.68) 0%, rgba(11,9,8,.88) 76%),
    linear-gradient(180deg, var(--ink) 0%, rgba(11,9,8,.1) 14%, rgba(11,9,8,.1) 86%, var(--ink) 100%);
}
.sched{ max-width:740px; margin-inline:auto; text-align:center }
.sched__item + .sched__item{ margin-top:clamp(16px,2.4vh,26px) }
.sched__item + .sched__item::before{
  content:""; display:block; width:0; height:0;
  margin:0 auto clamp(13px,1.8vh,19px);
  border-left:11px solid transparent; border-right:11px solid transparent;
  border-top:13px solid var(--vermillion);
}
.sched__label{
  display:inline-block; min-width:min(100%,320px);
  padding:.6em 1.7em; margin-bottom:.6em;
  background:var(--vermillion); color:var(--paper);
  font-size:clamp(13.5px,1.5vw,17px); letter-spacing:.1em; line-height:1.5;
  box-shadow:0 16px 34px -26px #000;
}
.sched__date{
  font-family:var(--font-en), var(--font-jp); font-variant-numeric:var(--num);
  font-size:clamp(20px,3.1vw,33px); letter-spacing:.03em; line-height:1.4; color:var(--paper);
}
.sched__note{
  margin-top:.5em; font-size:clamp(11px,1.15vw,13.5px); line-height:1.85;
  letter-spacing:.03em; color:var(--text-dim);
}

/* ============================================================
   ENTRY FLOW
   ============================================================ */
.section--entry{ background:var(--ink); border-top:1px solid rgba(201,164,92,.1) }
.eflow{ max-width:920px; margin-inline:auto; display:grid; gap:clamp(12px,1.8vh,18px) }
.eflow__item{
  display:grid; grid-template-columns:clamp(54px,7.4vw,80px) 1fr;
  border:1.5px solid #c2453b;
  transition:transform .5s var(--ease), box-shadow .5s var(--ease);
}
.eflow__item:hover{ transform:translateY(-3px); box-shadow:0 24px 44px -32px rgba(198,47,40,.9) }
.eflow__no{
  display:grid; place-items:center;
  background:var(--paper); color:#9c1f1a;
  font-family:var(--font-en); font-variant-numeric:var(--num);
  font-size:clamp(21px,2.8vw,30px); letter-spacing:.02em;
}
.eflow__body{
  padding:clamp(14px,1.9vw,22px) clamp(16px,2.4vw,28px);
  background:linear-gradient(120deg,#a8231f 0%,#8d1a17 100%);
}
.eflow__title{
  font-size:clamp(15.5px,1.9vw,21px); font-weight:500; letter-spacing:.06em;
  color:var(--paper); margin-bottom:.5em;
}
.eflow__text{
  font-size:clamp(12px,1.25vw,14.5px); line-height:1.9; letter-spacing:.03em;
  color:rgba(243,237,228,.9);
}
.entry-cta{
  display:flex; flex-direction:column; align-items:center; gap:clamp(12px,1.6vh,16px);
  margin-top:clamp(34px,5vh,58px);
}
@media (min-width:760px){ .entry-cta{ flex-direction:row; justify-content:center } }
.section--entry .dl-link{ display:flex; width:fit-content; margin:clamp(16px,2.4vh,24px) auto 0 }

/* ============================================================
   MESSAGE
   ============================================================ */
.section--message{
  position:relative; isolation:isolate; overflow:hidden;
  padding-block:clamp(72px,12vh,140px);
}
.message__media{ position:absolute; inset:0; z-index:-2 }
.message__media img{ width:100%; height:100%; object-fit:cover; object-position:50% 42% }
.message__scrim{
  position:absolute; inset:0; z-index:-1;
  background:
    radial-gradient(74% 64% at 50% 46%, rgba(11,9,8,.62) 0%, rgba(11,9,8,.86) 76%),
    linear-gradient(180deg, var(--ink) 0%, rgba(11,9,8,.08) 14%, rgba(11,9,8,.08) 86%, var(--ink) 100%);
}
/* 他セクションと同じく左揃え。本文と署名は行長を 38em に制限して左端で揃える */
.message__inner{ text-align:left }
.message__catch{
  font-size:clamp(19px,3.1vw,36px); font-weight:500; letter-spacing:.08em; line-height:1.6;
  color:var(--paper); margin-bottom:clamp(26px,4vh,46px);
  text-shadow:0 8px 32px rgba(0,0,0,.7);
}
/* 署名入りの挨拶文。中央揃えのままだと長い段落で行末が揃わず孤立行が出るため、
   本文と署名は行長を制限した同じ幅のブロックに収め、本文のみ左揃えにする */
.message__body{ max-width:46em; text-align:left }
/* 行末に1〜2文字だけ残る「泣き別れ」を避ける（対応ブラウザのみ／非対応でも無害） */
.message__body p{ text-wrap:pretty }
.message__body p{
  font-size:clamp(13px,1.45vw,16.5px); line-height:2.15; letter-spacing:.05em; color:var(--text);
  text-shadow:0 4px 22px rgba(0,0,0,.8);
}
.message__body p + p{ margin-top:clamp(20px,3vh,34px) }
.message__sign{
  display:grid; gap:.4em;
  margin:clamp(34px,5.5vh,60px) 0 0; text-align:right;
}
.message__date{
  font-family:var(--font-en), var(--font-jp); font-variant-numeric:var(--num);
  font-size:clamp(12.5px,1.25vw,14.5px); letter-spacing:.06em; color:var(--text-dim);
}
.message__role{ font-size:clamp(13px,1.35vw,15.5px); letter-spacing:.08em; color:var(--text) }
.message__name{ font-size:clamp(17px,2vw,23px); letter-spacing:.16em; color:var(--gold-lt) }

/* ============================================================
   WORKS
   ============================================================ */
.section--works{ background:var(--ink-2); border-top:1px solid rgba(201,164,92,.1) }
.works__text{ font-size:clamp(13.5px,1.5vw,17px); line-height:2.05; letter-spacing:.05em; color:var(--text) }
.works__note{ margin-top:.9em; font-size:clamp(12px,1.2vw,14px); line-height:1.9; color:var(--text-dim) }

/* ============================================================
   CONTACT
   ============================================================ */
.section--contact{ background:var(--ink); border-top:1px solid rgba(201,164,92,.1) }
.contact-card{
  max-width:780px; margin-inline:auto; text-align:center;
  padding:clamp(24px,3.4vw,46px);
  border:1px solid var(--line);
  background:linear-gradient(158deg, rgba(201,164,92,.06) 0%, rgba(201,164,92,0) 62%), var(--ink-2);
}
.contact__org{
  font-size:clamp(14.5px,1.65vw,19px); line-height:1.7; letter-spacing:.05em; color:var(--paper);
  margin-bottom:clamp(18px,2.8vh,28px);
}
.contact__org span{ display:block; margin-top:.25em; font-size:.82em; color:var(--text-dim) }
.contact__row{
  display:flex; flex-wrap:wrap; align-items:baseline; justify-content:center;
  gap:.2em clamp(12px,2vw,28px);
  padding-bottom:.65em; margin-bottom:.65em;
  border-bottom:1px solid rgba(201,164,92,.14);
}
.contact__row dt{
  flex:none;
  font-size:clamp(12px,1.2vw,14px); letter-spacing:.14em; color:var(--gold-lt);
}
.contact__row dd{ margin:0; font-size:clamp(13px,1.4vw,16px); letter-spacing:.05em; color:var(--text) }
.contact__note{
  margin-top:clamp(16px,2.6vh,26px);
  font-size:clamp(11.5px,1.2vw,13.5px); line-height:1.9; color:var(--text-dim);
}

/* ============================================================
   GUIDELINES PAGE — 下層ページ共通ヒーロー
   ============================================================ */
.page-hero{
  position:relative; isolation:isolate; overflow:hidden;
  display:flex; align-items:flex-end;
  min-height:min(84svh,760px);
  padding:calc(var(--header-h) + clamp(30px,6vh,64px)) var(--gutter) clamp(44px,7vh,78px);
}
.page-hero__media{ position:absolute; inset:0; z-index:-2 }
.page-hero__media img{
  width:100%; height:100%; object-fit:cover; object-position:50% 42%;
  animation:heroZoom 20s var(--ease) both;
}
.page-hero__scrim{
  position:absolute; inset:0; z-index:-1;
  background:
    linear-gradient(96deg, rgba(11,9,8,.92) 0%, rgba(11,9,8,.8) 34%, rgba(11,9,8,.5) 62%, rgba(11,9,8,.7) 100%),
    linear-gradient(180deg, rgba(11,9,8,.7) 0%, rgba(11,9,8,.1) 26%, rgba(11,9,8,.86) 78%, var(--ink) 100%);
}
.page-hero__inner{ position:relative; width:100%; max-width:var(--wrap); margin-inline:auto }

.crumbs{
  display:flex; align-items:center; gap:.8em; margin-bottom:clamp(14px,2.4vh,24px);
  font-family:var(--font-en); font-size:clamp(10.5px,1.1vw,12.5px); letter-spacing:.2em;
  color:var(--text-dim);
}
.crumbs a{ color:var(--gold-lt); transition:opacity .4s ease }
.crumbs a:hover{ opacity:.7 }
.crumbs span[aria-hidden]{ color:var(--gold-dim) }

.page-hero__title{
  font-size:clamp(38px,8vw,92px); font-weight:500; letter-spacing:.09em; line-height:1.12;
  color:var(--paper); text-shadow:0 14px 46px rgba(0,0,0,.75);
}
.page-hero__en{
  margin-top:.5em; margin-bottom:clamp(24px,4vh,44px);
  font-family:var(--font-en); font-size:clamp(11px,1.2vw,14px); letter-spacing:.34em;
  color:var(--gold);
}

/* 募集テーマ */
.theme{
  max-width:44em; padding-left:clamp(14px,2vw,26px);
  border-left:1px solid var(--gold-dim);
}
.theme__label{
  font-family:var(--font-ui); font-weight:300;
  font-size:clamp(11px,1.15vw,13px); letter-spacing:.18em; color:var(--gold-lt);
  margin-bottom:.5em;
}
.theme__catch{
  font-size:clamp(19px,3vw,32px); font-weight:500; letter-spacing:.08em; color:var(--paper);
  margin-bottom:.8em; text-shadow:0 8px 30px rgba(0,0,0,.7);
}
.theme__lines{
  font-size:clamp(13px,1.4vw,16px); line-height:2.05; letter-spacing:.05em; color:var(--text);
  margin-bottom:1.1em; text-shadow:0 4px 22px rgba(0,0,0,.8);
}
.theme__body{
  font-size:clamp(13px,1.4vw,16px); line-height:2.05; letter-spacing:.05em; color:var(--text);
  margin-bottom:1.1em; text-shadow:0 4px 22px rgba(0,0,0,.8);
}
.theme__note{
  font-size:clamp(10.5px,1.05vw,12.5px); line-height:1.85; color:var(--text-dim);
  text-shadow:0 4px 18px rgba(0,0,0,.8);
}

/* 募集目的 */
.section--purpose{ background:var(--ink-2); border-top:1px solid rgba(201,164,92,.1) }
.purpose{ max-width:56em }
.purpose p{ font-size:clamp(13.5px,1.5vw,17px); line-height:2.1; letter-spacing:.05em; color:var(--text) }
.purpose p + p{ margin-top:1.2em }

/* ============================================================
   GUIDELINES 本文
   ============================================================ */
.section--guide{
  background:
    radial-gradient(60vw 40vw at 96% 2%, rgba(168,35,31,.08), transparent 60%),
    var(--ink);
  border-top:1px solid rgba(201,164,92,.1);
  padding-block:clamp(50px,8vh,96px);
}
.g-layout{ display:grid; gap:clamp(28px,4vh,44px) }
@media (min-width:1024px){
  .g-layout{ grid-template-columns:216px minmax(0,1fr); gap:clamp(38px,5vw,76px); align-items:start }
}

/* 目次 */
.g-toc{
  padding:clamp(16px,2vw,22px);
  border:1px solid var(--line); background:var(--ink-2);
}
@media (min-width:1024px){
  .g-toc{
    position:sticky; top:calc(var(--header-h) + 20px);
    max-height:calc(100svh - var(--header-h) - 40px); overflow-y:auto;
    background:none; border:0; border-left:1px solid var(--line);
    padding:0 0 0 clamp(14px,1.6vw,20px);
  }
}
.g-toc__head{
  font-family:var(--font-en); font-size:11px; letter-spacing:.32em; color:var(--gold);
  padding-bottom:.8em; margin-bottom:.6em; border-bottom:1px solid var(--line);
}
.g-toc__list{ columns:2; column-gap:20px }
@media (min-width:1024px){ .g-toc__list{ columns:1 } }
.g-toc__list li{ break-inside:avoid }
.g-toc__list a{
  display:flex; gap:.7em; align-items:baseline;
  padding:.4em .2em .4em .5em; border-left:1px solid transparent;
  font-size:clamp(11.5px,1.15vw,12.5px); line-height:1.5; color:var(--text-dim);
  transition:color .35s ease, border-color .35s ease, padding-left .35s var(--ease);
}
.g-toc__list a:hover{ color:var(--gold-lt); padding-left:.8em }
.g-toc__list a.is-active{ color:var(--gold-lt); border-left-color:var(--gold) }
.g-toc__no{ font-family:var(--font-en); font-variant-numeric:var(--num); color:var(--gold-dim); flex:none }
.g-toc__list a.is-active .g-toc__no{ color:var(--gold) }

/* 節 */
.g-body{ min-width:0 }
.g-sec{ padding-block:clamp(26px,4vh,44px); border-top:1px solid rgba(201,164,92,.14) }
.g-sec:first-child{ border-top:0; padding-top:0 }
.g-sec__head{
  display:flex; align-items:baseline; gap:.75em; flex-wrap:wrap;
  margin-bottom:clamp(14px,2.2vh,24px);
}
.g-sec__no{
  font-family:var(--font-en); font-variant-numeric:var(--num);
  font-size:clamp(13px,1.4vw,16px); letter-spacing:.16em; color:var(--gold-dim);
}
.g-sec__title{
  font-size:clamp(18px,2.2vw,26px); font-weight:500; letter-spacing:.1em; color:var(--gold-lt);
}

.g-p{ font-size:clamp(13px,1.35vw,15.5px); line-height:2.05; letter-spacing:.05em; color:var(--text) }
.g-p + .g-p{ margin-top:.9em }
.g-note{
  margin-top:1em; padding-left:1em; border-left:1px solid var(--gold-dim);
  font-size:clamp(11.5px,1.15vw,13px); line-height:1.9; color:var(--text-dim);
}

.g-list li{
  position:relative; padding-left:1.35em;
  font-size:clamp(12.5px,1.3vw,14.5px); line-height:1.95; letter-spacing:.04em; color:var(--text);
}
.g-list li + li{ margin-top:.5em }
.g-list li::before{
  content:""; position:absolute; left:.16em; top:.8em;
  width:5px; height:5px; background:var(--gold); transform:rotate(45deg);
}
@media (min-width:760px){
  .g-list--cols{ columns:2; column-gap:clamp(26px,4vw,54px) }
  .g-list--cols li{ break-inside:avoid }
  .g-list--cols li + li{ margin-top:0 }
  .g-list--cols li{ margin-bottom:.5em }
}
.g-list--tight li + li{ margin-top:.32em }

.g-num{ display:grid; gap:.5em }
.g-num li{
  display:flex; gap:.9em; align-items:baseline;
  font-size:clamp(12.5px,1.3vw,14.5px); line-height:1.9; color:var(--text);
}
.g-num__no{
  flex:none; font-family:var(--font-en); font-variant-numeric:var(--num);
  font-size:.95em; letter-spacing:.1em; color:var(--gold);
}

/* 対象エリア */
.g-areas{ display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,196px),1fr)); gap:8px; margin-bottom:clamp(16px,2.4vh,24px) }
.g-areas li{
  display:flex; align-items:center; gap:.7em;
  padding:.65em .9em; border:1px solid var(--line); background:var(--ink-3);
  font-size:clamp(12.5px,1.3vw,14.5px); letter-spacing:.04em; line-height:1.5; color:var(--text);
  transition:border-color .4s ease, background-color .4s ease;
}
.g-areas li:hover{ border-color:var(--gold-dim); background:rgba(201,164,92,.05) }
.g-areas__no{ flex:none; font-family:var(--font-en); font-variant-numeric:var(--num); font-size:.9em; letter-spacing:.08em; color:var(--gold) }

/* 募集部門カード */
.depts{ display:grid; gap:clamp(14px,2vw,20px) }
@media (min-width:900px){ .depts{ grid-template-columns:1fr 1fr } }
.dept{
  padding:clamp(20px,2.6vw,34px); color:var(--paper);
  border:1px solid rgba(240,220,174,.2);
  box-shadow:0 24px 46px -34px #000;
}
.dept--short{ background:linear-gradient(150deg,#ab2620 0%,#8b1a17 100%) }
.dept--stream{ background:linear-gradient(150deg,#8c231e 0%,#611512 100%) }
.dept__no{ font-size:clamp(17px,2vw,22px); line-height:1; color:#f7e3b6; margin-bottom:.4em }
.dept__name{
  font-size:clamp(16.5px,1.85vw,21px); font-weight:500; letter-spacing:.05em; line-height:1.5;
  padding-bottom:.45em; margin-bottom:.85em; border-bottom:1.2px solid rgba(243,237,228,.45);
}
.dept__lead{
  font-size:clamp(12.5px,1.3vw,14.5px); line-height:1.95; letter-spacing:.04em;
  color:rgba(243,237,228,.92); margin-bottom:1.1em;
}
.dept__spec > div{
  display:flex; flex-wrap:wrap; gap:.15em .9em;
  padding:.6em 0; border-bottom:1px solid rgba(243,237,228,.2);
  font-size:clamp(12px,1.25vw,14px); line-height:1.8;
}
.dept__spec dt{ flex:none; min-width:7.2em; color:#f0dcae; letter-spacing:.06em }
.dept__spec dt::after{ content:"："; opacity:.5 }
.dept__spec dd{ margin:0; flex:1 1 12em }

/* グループ */
.g-groups{ display:grid; gap:clamp(20px,2.6vw,30px) }
@media (min-width:900px){
  .g-groups{ grid-template-columns:1fr 1fr }
  .g-group--wide{ grid-column:1 / -1 }
}
.g-group__title{
  display:flex; align-items:baseline; gap:.5em;
  font-size:clamp(14.5px,1.6vw,17.5px); font-weight:500; letter-spacing:.08em; color:var(--paper);
  padding-bottom:.55em; margin-bottom:.85em; border-bottom:1px solid var(--line);
}
.g-group__title span{ color:var(--gold) }


/* ページ下部CTA */
.g-cta{
  margin-top:clamp(40px,6vh,74px); padding-top:clamp(30px,4.4vh,50px);
  border-top:1px solid var(--line);
}
.g-cta .entry-cta{ margin-top:0 }
.g-cta .dl-link{ display:flex; width:fit-content; margin:clamp(16px,2.4vh,24px) auto 0 }

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer{
  position:relative; padding-block:clamp(40px,7vh,72px);
  background:linear-gradient(180deg,var(--ink-2),#080605);
  border-top:1px solid var(--line);
}
.site-footer__inner{ display:flex; flex-wrap:wrap; gap:18px 40px; align-items:flex-end; justify-content:space-between }
.site-footer__brand{ display:flex; flex-direction:column; gap:.4em }
.site-footer__en{ font-family:var(--font-en); font-size:clamp(15px,2vw,21px); letter-spacing:.15em; color:var(--gold-lt) }
.site-footer__ja{ font-size:clamp(12px,1.5vw,14px); letter-spacing:.16em; color:var(--text-dim) }
.site-footer__copy{ font-family:var(--font-en); font-size:12px; letter-spacing:.14em; color:rgba(243,237,228,.34) }
.site-footer__note{
  margin-top:clamp(22px,3vh,32px); padding-top:clamp(16px,2.4vh,24px);
  border-top:1px solid rgba(201,164,92,.12);
}
.site-footer__note p{
  text-wrap:balance;
  font-size:clamp(11.5px,1.15vw,13px); line-height:1.95; letter-spacing:.04em;
  color:var(--text-dim);
}

/* ============================================================
   MOTION
   ============================================================ */
.ani{ opacity:0; transform:translateY(26px); animation:rise 1.05s var(--ease) forwards; animation-delay:var(--d,0s) }
@keyframes rise{ to{ opacity:1; transform:none } }

.reveal{ opacity:0; transform:translateY(24px); transition:opacity .95s var(--ease), transform .95s var(--ease); transition-delay:calc(var(--i,0) * .07s) }
.reveal.is-in{ opacity:1; transform:none }

body.is-locked{ overflow:hidden }

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  html{ scroll-behavior:auto }
  .ani,.reveal{ opacity:1; transform:none }
  .grain{ animation:none }
}
