/* ==========================================================================
   nomaps.4s.link ベース
   トーンはNoMaps2026本体（no-maps.jp/2026）から実測して移植（決定3）
   実測値: 地=#acc3bf / 赤=#d22d37 / 濃赤=#d9272b / 墨=#343434 / 灰=#72777d
           書体= Zen Kaku Gothic New（和） + Roboto / Roboto Condensed（欧）
           フッター= rgba(0,0,0,.4) + backdrop-filter:blur(25px) の板
   ========================================================================== */

:root{
  color-scheme: light;
  --nm-red:#d22d37;
  --nm-red-dark:#d9272b;
  --nm-ink:#343434;
  --nm-gray:#72777d;
  --nm-line:#d3d3d3;
  --nm-sage:#acc4bf;
  --nm-sage-light:#c0d6d3;
  --nm-mist:#dfe9ed;
  --nm-white:#fff;
  --nm-tag-purpose:#fbe6bf;
  --nm-tag-field:#eceaed;
  --nm-inner:1160px;
  --nm-wide:1200px;
  --nm-font:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic Medium","Noto Sans JP","Meiryo",sans-serif;
  --nm-font-en:"Roboto","Hiragino Sans",sans-serif;
  --nm-font-cond:"Roboto Condensed","Roboto",sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
:focus-visible{outline:3px solid var(--nm-red);outline-offset:2px}
html{font-size:62.5%;-webkit-text-size-adjust:100%}
body{
  margin:0;
  min-height:100dvh;
  font-family:var(--nm-font);
  font-size:1.5rem;
  line-height:1.9;
  letter-spacing:.06em;
  font-weight:400;
  color:var(--nm-ink);
  background-color:var(--nm-sage);
  background-image:
    radial-gradient(1200px 700px at 78% -8%, rgba(255,255,255,.55), rgba(255,255,255,0) 62%),
    radial-gradient(900px 600px at 8% 4%, rgba(223,233,237,.7), rgba(223,233,237,0) 60%);
  background-attachment:fixed;
  background-size:cover;
  word-wrap:break-word;
}
img{max-width:100%;height:auto;vertical-align:bottom}
a{color:inherit;text-decoration:none;transition:color .2s ease}
a:hover{color:var(--nm-red-dark)}
ul,ol{margin:0;padding:0;list-style:none}
h1,h2,h3,h4,p,figure{margin:0}
button{font:inherit;color:inherit}

.inner{width:100%;max-width:var(--nm-inner);margin:0 auto;padding:0 24px}
.inner_wide{width:100%;max-width:var(--nm-wide);margin:0 auto;padding:0 24px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* --- ヘッダー: 本体はスクロールでロゴが出る仕様。プロトは常時表示＋メニューボタン --- */
.header_year{position:relative;z-index:9990}
.header_top_gradient{
  content:"";position:fixed;top:0;left:0;right:0;height:120px;pointer-events:none;z-index:998;
  background:linear-gradient(to bottom,var(--nm-sage) 10%,rgba(172,195,191,0) 80%);
}
.header_inner{
  position:fixed;top:0;left:0;right:0;z-index:9999;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 24px;pointer-events:none;
}
.header_inner > *{pointer-events:auto}
.header_logo_year{width:200px;line-height:0}
/* ロゴ画像はSPで高さ約18pxしかないため、リンクのタップ領域だけ44pxへ広げる */
.header_logo_year a{display:inline-flex;align-items:center;min-height:44px;width:100%}
.header_logo_year img{width:100%;filter:drop-shadow(0 1px 6px rgba(0,0,0,.28))}
.header_menu_btn{
  position:relative;width:50px;height:50px;border-radius:50%;cursor:pointer;flex:none;
  background-color:hsla(0,0%,100%,.6);border:1px solid var(--nm-line);
  backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);
  display:flex;align-items:center;justify-content:center;gap:5px;flex-direction:column;
  z-index:9999;transition:background-color .3s ease,border-color .3s ease;
}
.header_menu_btn span{
  display:block;width:20px;height:2px;background:var(--nm-gray);border-radius:2px;
  transition:transform .3s ease,opacity .2s ease,background-color .3s ease;
}
/* 開いたら×印に。本家も .open で見た目が変わる */
.header_menu_btn[aria-expanded="true"]{
  position:fixed;top:14px;right:24px;z-index:9999;
  background-color:transparent;border-color:transparent;backdrop-filter:none;
}
.header_menu_btn[aria-expanded="true"] span{background:var(--nm-gray);width:26px}
.header_menu_btn[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.header_menu_btn[aria-expanded="true"] span:nth-child(2){opacity:0}
.header_menu_btn[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* --- 全画面メニュー（本家 .header_menu を実測移植） ---
   実測: background linear-gradient(to bottom, white 0%, rgba(255,255,255,.6) 100%)
         + backdrop-filter:blur(10px) / padding:3rem 5rem 5rem
         .header_menu_inner nav は top:45% で縦中央
         .header_menu_list_main は flex-direction:column（横並びではない）
         .menu_red a,.menu_red ul{color:#d22d37} ← NoMaps2026ブロックだけ赤
         .header_menu_list_inner{border-left:1px solid rgba(78,81,81,.5)} / li 1.6rem
   -------------------------------------------------------------------- */
.header_menu{
  display:flex;position:fixed;z-index:9998;top:0;left:0;
  transform:translateY(-100%);width:100%;height:100%;
  padding:3rem 5rem 5rem;overflow:auto;pointer-events:none;
  background:linear-gradient(to bottom,#fff 0%,rgba(255,255,255,.94) 100%);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  /* 閉状態はtransformで画面外にあるだけなので、visibilityでも隠す
     （検索ハイライトやフォーカスの迷い込み対策。inertはJS側で担保） */
  visibility:hidden;
  transition:transform .45s cubic-bezier(.22,.61,.36,1),visibility 0s linear .45s;
}
.header_menu.open{transform:translateY(0);pointer-events:auto;visibility:visible;
  transition:transform .45s cubic-bezier(.22,.61,.36,1),visibility 0s}
/* メニュー展開中はヘッダーロゴを隠す。
   .header_inner(9999) が .header_menu(9998) より上にあり二重印刷になるため */
body.is-menu-open .header_logo_year{opacity:0;pointer-events:none}
.header_logo_year{transition:opacity .3s ease,transform .3s ease}
/* ヒーローを抜けたらロゴを退避する。本家 .header_logo_year の出し入れと同じ考え方。
   透明ヘッダーのまま白カード上に白ロゴが乗ると判読不能になるため */
body.is-scrolled .header_logo_year{opacity:0;transform:translateY(-8px);pointer-events:none}
.header_menu_inner{
  display:flex;align-items:safe center;position:relative;width:100%;height:100%;
  overflow-y:auto;-webkit-overflow-scrolling:touch;
}
.header_menu_inner nav{
  position:absolute;top:45%;transform:translateY(-50%);
  width:100%;height:max-content;
}
.header_menu_list_main{display:flex;flex-direction:column;gap:2.4rem}
/* PCは横並び。縦積みのままだと右側1000px以上が空き、リストが上下に間延びする。
   2カラムを明示グリッドにして占有幅を上げる（fillX 0.432問題・3回目指摘の解消） */
@media screen and (min-width:768px){
  .header_menu{padding:3rem 5rem}
  .header_menu_inner nav{position:static;transform:none;margin:auto;width:min(100%,1200px);max-width:none}
  .header_menu_list_inner > li{font-size:1.7rem;margin-bottom:.25em}
  .menu_red .header_menu_list_inner > li{font-size:1.9rem}
  .header_menu_list_main{
    display:grid;grid-template-columns:minmax(300px,.9fr) minmax(400px,1.1fr);
    gap:clamp(40px,5vw,80px);width:100%;
    align-items:start;justify-content:center;
  }
  .header_menu_list_main > li{min-width:0}
  /* 2列目（NoMaps共通リンク8本）は中で2段組みにして縦の間延びを抑える */
  .header_menu_list_main > li:last-child .header_menu_list_inner{
    display:grid;grid-template-columns:1fr 1fr;column-gap:2.4rem;
  }
  .header_menu_list_inner > li{font-size:1.5rem;margin-bottom:.15em}
  .menu_logo{min-height:0;margin-bottom:1.2rem}
  .menu_logo img{height:20px;width:auto}
  .menu_red .menu_logo img{height:24px;width:auto}
}
.menu_logo{display:inline-flex;align-items:center;min-height:44px;height:auto;width:auto;margin-bottom:1rem}
.menu_logo img{height:20px;width:auto}
/* NoMaps2026ブロックは赤 */
.menu_red a,.menu_red ul{color:#b31f28}
.menu_red .menu_logo img{height:24px;width:auto}
.header_menu_list_inner{border-left:1px solid rgba(78,81,81,.5);padding-left:0}
.header_menu_list_inner.red{border-left:1px solid rgba(210,45,55,.5)}
.header_menu_list_inner > li{
  margin-bottom:.3em;margin-left:1.5em;font-size:1.6rem;line-height:1.5;letter-spacing:.05em;
  font-weight:700;
}
.header_menu_list_inner > li a{display:block;line-height:1.6}
.header_menu_list_inner > li a:hover{opacity:.65}
.header_menu_list_inner > li span.min{font-size:.8em;letter-spacing:.03em;opacity:.8;margin-right:.5em}
.header_menu_list_inner > li span.max{font-size:1.05em;opacity:.8}
.menu_sns{display:flex;justify-content:flex-start;gap:4px;margin-top:1.4rem;margin-left:calc(1.5em - 11px)}
.menu_sns a{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;color:var(--nm-ink)}
.menu_sns svg{width:22px;height:22px}
.menu_sns a:hover{opacity:.65}
body.is-menu-open{overflow:hidden}

/* --- ページ見出し --- */
/* ==========================================================================
   FV — no-maps.jp/2026 の .kv_sect を実測して移植
   実測値: .kv__img aspect-ratio:9/16 / width:clamp(400px,40vw+500px,1500px)
           max-height:1000px / top:-8rem / 中央寄せ
           .kv_cont max-width:1024px を中央に置き、内部は絶対配置
           .kv__txt2(GALAPAGOS) height:300px / top:15rem / right:10rem
           .kv__ttl top:30rem / left:2rem / max-width:450px
   ========================================================================== */
.kv_sect{
  position:relative;z-index:0;margin:auto;width:100%;
  background-color:var(--nm-sage);overflow-y:visible;
}
/* 本家 .main_contents{overflow:hidden} 相当。KVのはみ出しで横スクロールさせない */
.kv_wrap{position:relative;overflow:hidden;width:100%}
.kv__img{
  position:relative;z-index:0;
  aspect-ratio:9/16;width:clamp(400px,40vw + 500px,1500px);max-height:1000px;
  top:-12rem;left:50%;transform:translateX(-50%);
}
.kv__img picture{position:absolute;top:0;left:0;width:100%;height:100%;display:block}
.kv__img img{
  position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;
}
.kv__img picture:first-child{z-index:1}
.kv__img picture:last-child{z-index:0}
.kv_cont{
  position:absolute;z-index:4;top:50%;left:50%;transform:translate(-50%,-50%);
  width:100%;height:100%;max-width:1024px;pointer-events:none;
}
.kv_cont > *{pointer-events:auto}
.kv__txt1{position:absolute;top:10rem;left:2rem;margin:0}
.kv__txt1 img{width:260px;height:auto}
.kv__txt2{
  position:absolute;top:8rem;right:2rem;margin:0;
  filter:drop-shadow(0 1px 16px rgba(0,0,0,.6)) drop-shadow(0 0 3px rgba(0,0,0,.3));
}
.kv__txt2 img{width:auto;height:170px}
.kv__ttl{
  position:absolute;top:30rem;left:2rem;
  display:flex;flex-direction:column;align-items:flex-start;
  width:calc(100% - 4rem);max-width:365px;z-index:5;margin:0;
}
.kv__ttl img{
  height:auto;position:relative;
  filter:drop-shadow(0 1px 16px rgba(0,0,0,.6)) drop-shadow(0 0 3px rgba(0,0,0,.3));
}
.kv__ttl img.NM2026_logo{width:100%}
.kv__date{margin:1.2em 0 0;width:100%}
.kv__ttl .NM2026_date{width:68%}

/* サイドイベントのロックアップ — ロゴと同格の扱い。実テキストなのでSEOに効く */
.kv__lockup{
  display:flex;flex-direction:column;align-items:flex-start;gap:.35em;
  margin:.7em 0 0;padding:.5em .9em .55em;
  background:var(--nm-red);
  filter:drop-shadow(0 1px 16px rgba(0,0,0,.45));
  /* 親 .kv__ttl の max-width はロゴ画像に合わせた値。札の文字数が増えても
     折り返さないよう、ロックアップだけ制約を外す（左寄せのまま画面内に収める） */
  width:max-content;max-width:calc(100vw - 4rem);
}
.kv__lockup_ja{
  /* 「サイドイベント」を1行で保つ。折り返すと末尾1文字が孤立するため */
  font-size:clamp(2.2rem,2.9vw,3.6rem);font-weight:900;line-height:1;
  letter-spacing:.06em;color:var(--nm-white);white-space:nowrap;
}
.kv__lockup_en{
  font-family:var(--nm-font-cond);font-size:clamp(1.2rem,1.05vw,1.3rem);font-weight:700;
  /* 赤地の上の .92 白は 4.46:1 で AA 未達。純白で 5.03:1（entry と同じ是正） */
  letter-spacing:.22em;line-height:1;color:var(--nm-white);
}
/* 本家のブレークポイント段階指定（min-width基準）をそのまま移植 */
@media screen and (min-width:600px){
  .kv__txt2 img{height:220px}
}
@media screen and (min-width:768px){
  .kv__img{top:-10rem}
  .kv__txt1 img{width:320px}
  .kv__txt2{top:15rem;right:10rem}
  .kv__txt2 img{height:250px}
  .kv__ttl{max-width:450px}
}
@media screen and (min-width:992px){
  .kv__img{top:-8rem}
  .kv__txt2 img{height:300px}
}

/* KV下端から本文へのつなぎ（本家 .kv_btm_cont と同じグラデーション） */
.kv_btm_cont{
  position:relative;z-index:0;margin-top:-300px;
  background:linear-gradient(transparent 0%,var(--nm-sage) 10%);
}
/* 下層ページ用の簡易ヒーロー（詳細・応募案内） */
.page_title_area{position:relative;padding-top:132px;padding-bottom:44px}
.page_title_area > *{position:relative;z-index:1}
.page_title_area .eyebrow{
  font-family:var(--nm-font-cond);font-size:1.3rem;font-weight:700;letter-spacing:.18em;
  text-transform:uppercase;color:var(--nm-ink);
}
.main_title{
  margin-top:6px;font-size:clamp(3rem,4.4vw,5.2rem);font-weight:900;line-height:1.35;letter-spacing:.04em;
  color:var(--nm-ink);
}
.main_title .en{
  display:block;font-family:var(--nm-font-cond);font-size:1.4rem;font-weight:700;
  letter-spacing:.2em;color:var(--nm-gray);margin-top:8px;
}

/* --- 白い本体カラム --- */
.page_main_cont{
  margin-top:28px;padding-block:48px 56px;
  background:var(--nm-white);border-radius:12px 12px 0 0;
}

/* --- カテゴリ紹介ブロック（2025 program_category 準拠） --- */
.program_category{display:flex;gap:24px;align-items:flex-start}
.program_category_icon{width:120px;flex:none;line-height:0}
.program_category_icon .mark{
  width:120px;height:120px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--nm-red);color:var(--nm-white);
  font-family:var(--nm-font-cond);font-weight:700;font-size:1.5rem;letter-spacing:.1em;
  text-align:center;line-height:1.25;
}
.program_category_txt .title{font-size:2.4rem;font-weight:900;letter-spacing:.04em;line-height:1.4}
/* 素の親幅では約65字と長い。entryの読み幅（820px）と同じ考え方で揃える */
.program_category_txt .disc{margin-top:10px;font-size:1.5rem;color:var(--nm-ink);max-width:820px}
.event_border{height:1px;background-color:var(--nm-line);margin:6rem auto;border:0}

/* --- 絞り込み --- */
.filter_bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.filter_label{
  font-family:var(--nm-font-cond);font-size:1.2rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--nm-gray);margin-right:4px;
}
.filter_chip{
  display:inline-flex;align-items:center;min-height:44px;padding:0 16px;
  border-radius:22px;border:1px solid var(--nm-ink);
  font-size:1.3rem;line-height:1.4;background:transparent;cursor:pointer;white-space:nowrap;
  transition:color .3s ease,background-color .3s ease,border-color .3s ease;
}
.filter_chip:hover{color:var(--nm-white);background-color:var(--nm-red-dark);border-color:var(--nm-red-dark)}
.filter_chip.is-active{color:var(--nm-white);background-color:var(--nm-ink);border-color:var(--nm-ink)}

/* --- プログラム一覧（2026 program_2026 のグリッド実測） --- */
.page_program_list{
  display:flex;flex-wrap:wrap;gap:42px 18px;max-width:var(--nm-wide);margin:0 auto;
}
.page_program_item{width:calc(33.3333% - 12px);list-style:none;display:flex}
.page_program_item[hidden]{display:none}
.page_program_item article{
  position:relative;width:100%;display:flex;flex-direction:column;background-color:var(--nm-white);
  box-shadow:3px 3px 6px rgba(35,33,33,.25);
  transition:transform .2s ease,box-shadow .2s ease;
}
/* ホバーの浮上はポインタ端末のみ（タッチのスティッキーホバー回避）。
   キーボードには :focus-within で同じ反応を返す（2026-08-20 Solレビュー） */
@media (hover:hover) and (pointer:fine){
  .page_program_item article:hover{transform:translateY(-5px);box-shadow:6px 6px 6px rgba(35,33,33,.25)}
  .page_program_item article:hover .program_list_title{color:var(--nm-red-dark)}
}
.page_program_item article:focus-within{transform:translateY(-5px);box-shadow:6px 6px 6px rgba(35,33,33,.25)}
.page_program_item article:focus-within .program_list_title{color:var(--nm-red-dark)}
.program_list_img{position:relative;overflow:hidden;padding-top:52.63158%;background:var(--nm-mist)}
/* 外部画像の404時は壊れアイコンではなく地のプレースホルダを見せる */
.program_list_img::before{
  content:"IMAGE";position:absolute;inset:0;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--nm-sage-light),var(--nm-mist));
  font-family:var(--nm-font-cond);font-size:1.3rem;font-weight:700;letter-spacing:.16em;
  color:rgba(52,52,52,.65);
}
.program_list_img img,.program_list_img .ph{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;
}
img.is-broken{display:none}
.program_list_img .ph{
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--nm-sage-light),var(--nm-mist));
  font-family:var(--nm-font-cond);font-size:1.3rem;font-weight:700;letter-spacing:.16em;
  color:rgba(52,52,52,.78);text-transform:uppercase;
}
.tag_category_list{display:flex;flex-wrap:wrap;gap:4px;line-height:1}
.tag_category a,.tag_category span{
  display:inline-block;padding:5px 10px;font-size:1.2rem;line-height:1;text-align:center;
  color:var(--nm-white);background-color:#000;transition:background-color .2s ease;
}
.tag_category a:hover{background-color:var(--nm-red-dark);color:var(--nm-white)}
.tag_category.is-nomaps span{background-color:var(--nm-red)}
/* 本家実測は 14px 4px 0 だが、テキストが枠に触れて見えるため余白を広げる
   （2026-08-20 Daimu指示。本家一致より可読の快適さを優先する意図的な逸脱） */
.program_list_text{display:flex;flex-direction:column;flex:1;padding:16px 16px 20px}
.card_link{position:absolute;inset:0;z-index:2}
.card_link:focus-visible{outline:3px solid var(--nm-red);outline-offset:-3px}
.program_list_title{
  margin:10px 0 8px;font-size:1.7rem;font-weight:500;line-height:1.5;
  /* 長いイベント名でカード高が暴れないよう一覧は3行まで（詳細h1は全文） */
  overflow-wrap:anywhere;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;
}
.page_article_taglist{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 12px;max-height:5.4em;overflow:hidden}
.page_article_taglist li a,.page_article_taglist li span{
  display:inline-block;padding:4px 8px;font-size:1.2rem;line-height:1.4;border-radius:15px;
  border:1px solid #000;transition:color .3s ease,background-color .3s ease;
}
.page_article_taglist .tag_purpose span{background-color:var(--nm-tag-purpose)}
.page_article_taglist .tag_field span{background-color:var(--nm-tag-field)}
.program_info_card{margin-top:auto}
.program_info_ttl{
  font-family:var(--nm-font-cond);font-size:1.3rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--nm-gray);
}
.program_date p:last-child,.program_loc p:last-child,.program_fee p:last-child{font-size:1.3rem;line-height:1.7}
.program_date .dt{font-family:var(--nm-font-en);font-weight:500;letter-spacing:.02em}
.card_border{height:1px;background:var(--nm-line);margin:10px 0}
.program_loc p:last-child{color:var(--nm-ink)}

/* --- CTA --- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:16px 34px;border-radius:999px;font-size:1.5rem;font-weight:700;letter-spacing:.08em;
  border:1px solid transparent;cursor:pointer;transition:opacity .2s ease,background-color .2s ease,color .2s ease;
}
.btn_primary{background:var(--nm-red);color:var(--nm-white)}
.btn_primary:hover{opacity:.82;color:var(--nm-white)}
.btn_ghost{background:transparent;color:var(--nm-ink);border-color:var(--nm-ink)}
.btn_ghost:hover{background:var(--nm-ink);color:var(--nm-white)}
.btn_white{background:var(--nm-white);color:var(--nm-ink)}
.btn_white:hover{background:var(--nm-red);color:var(--nm-white)}
.btn .arw{font-family:var(--nm-font-cond);font-weight:700}

/* --- 帯（主催者向け導線など） --- */
.band{margin-top:0;padding:56px 0;background:var(--nm-ink);color:var(--nm-white)}
/* 一覧の手前に置く版。白カラムの中に収まるカード型 */
.band_inline{
  margin:28px 0 0;padding:28px 32px;border-radius:12px;
  background:var(--nm-ink);color:var(--nm-white);
}
.band_inline .band_inner{padding:0;max-width:none}
.band_inline h2{font-size:2rem}
.band_inline p{font-size:1.3rem;margin-top:6px}
.band .band_inner{display:flex;gap:24px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.band h2{font-size:2.4rem;font-weight:900;letter-spacing:.04em;line-height:1.45}
.band p{margin-top:8px;font-size:1.4rem;color:rgba(255,255,255,.82)}

/* --- 注記 --- */
.notice{
  margin-top:28px;padding:16px 20px;border-left:3px solid var(--nm-red);
  background:#f5f5f5;font-size:1.3rem;line-height:1.85;color:var(--nm-ink);
}

/* --- フッター（2026実測: 半透明板＋blur） --- */
.footer{position:relative;text-align:center;z-index:99;margin-top:0}
.footer::before{
  content:"";position:absolute;top:-60px;left:0;right:0;height:60px;pointer-events:none;
  background:linear-gradient(to bottom,rgba(255,255,255,0),var(--nm-sage));
}
.footer_inner{
  max-width:var(--nm-wide);margin:0 auto;padding:70px 30px 36px;
  border-radius:12px 12px 0 0;background:rgba(0,0,0,.4);
  border-top:1px solid rgba(206,228,222,.4);
  backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px);
  filter:drop-shadow(-5px 2px 12px rgba(0,0,0,.6));
}
.footer p,.footer li,.footer a{color:var(--nm-white)}
.footer a:hover{color:var(--nm-white);text-decoration:underline;text-underline-offset:4px}
.footer_logo{width:180px;margin:0 auto;line-height:0}
.footer_logo a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;width:100%}
.footer_note{margin-top:14px;font-size:1.2rem;color:rgba(255,255,255,.78);line-height:1.9}
.footer_sns_list{margin-block:12px 24px}
.footer_sns_list > li{display:inline-block;padding:0 2px}
.footer_sns_list a{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;color:var(--nm-white)}
.footer_sns_list svg{width:24px;height:24px;display:block;pointer-events:none}
.footer_sns_list a:hover{opacity:.7;color:var(--nm-white)}
.footer_gl_nav_list{display:flex;flex-wrap:wrap;justify-content:center;margin:16px auto;gap:12px 24px}
.footer_gl_nav_list > li{letter-spacing:.04em;font-weight:500}
.footer_gl_nav_list > li a{display:inline-flex;align-items:center;min-height:44px}
.footer_gl_nav_list.portal{font-size:1.5rem}
.footer_gl_nav_list.archive{font-size:1.3rem}
.footer .line{width:min(560px,80%);height:1px;background:rgba(255,255,255,.28);margin:20px auto}
.footer .copy{font-size:1.2rem;letter-spacing:.04em;margin-top:4rem;color:var(--nm-white);opacity:1;line-height:2.2}
.footer .copy a{display:inline-flex;align-items:center;min-height:44px}

/* --- パスポート固定バナー（2026実測: 左下固定） ---
   出入りのアニメーション: フェード＋下からのスライドを1本のtransitionで統一。
   visibilityはtransition-delayで「フェード完了後に」隠す（即時に切るとフェードが途切れて
   「突然消える」見え方になる。従来はtransitionの二重宣言でこの状態になっていた）。
   非表示中はpointer-events:noneでクリックとフォーカスを塞ぐ。 */
.ticket_bnr{
  position:fixed;left:20px;bottom:20px;width:118px;z-index:100;
  display:flex;align-items:center;justify-content:center;
  aspect-ratio:377/371;
  background:image-set(url("2.webp") type("image/webp"), url("2.png") type("image/png")) no-repeat center/contain;
  background-size:contain;
  color:var(--nm-white);font-size:1.3rem;font-weight:700;letter-spacing:.07em;
  text-shadow:0 1px 4px rgba(0,0,0,.85),0 0 12px rgba(0,0,0,.5);
  filter:drop-shadow(0 2px 12px rgba(255,255,255,.8));
  opacity:0;visibility:hidden;pointer-events:none;
  transform:translateY(16px) scale(.92);
  transition:
    opacity .4s cubic-bezier(.22,1,.36,1),
    transform .4s cubic-bezier(.22,1,.36,1),
    visibility 0s linear .4s;
}
.ticket_bnr.is-show{
  opacity:1;visibility:visible;pointer-events:auto;transform:none;
  transition:
    opacity .4s cubic-bezier(.22,1,.36,1),
    transform .4s cubic-bezier(.22,1,.36,1),
    visibility 0s;
}
.ticket_bnr:hover{opacity:.7;color:var(--nm-white);transition-duration:.18s,.18s,0s}
@media (prefers-reduced-motion:reduce){
  .ticket_bnr{transform:none;transition:opacity .2s ease,visibility 0s linear .2s}
  .ticket_bnr.is-show{transform:none;transition:opacity .2s ease,visibility 0s}
}

/* --- レスポンシブ（本体のブレークポイントに合わせる） --- */
@media screen and (max-width:1024px){
  .page_program_item{width:calc(50% - 9px)}
  .main_title{font-size:3rem}
}
@media screen and (max-width:767px){
  body{font-size:1.6rem;line-height:1.85}
  .header_logo_year{width:150px}
      .page_title_area{padding-top:104px;padding-bottom:28px}
  .main_title{font-size:2.4rem}
  .page_main_cont{padding-block:28px 40px;margin-top:12px}
  /* 一覧ページの主目的（カード）へ早く到達させる。SPではKVを圧縮 */
  .kv__img{max-height:min(1000px,74vh)}
  .kv_btm_cont{margin-top:-360px}
  .program_category{gap:12px}
  .program_category_txt .disc{font-size:1.4rem;line-height:1.8}
  .event_border{margin:2.4rem auto}
  .notice{margin-top:20px;padding:14px 16px;font-size:1.3rem;line-height:1.75}
  .program_category{flex-direction:column;gap:16px}
  .program_category_icon,.program_category_icon .mark{width:88px;height:88px;font-size:1.2rem}
  .page_program_list{gap:20px}
  .page_program_item{width:100%}
  .event_border{margin:4rem auto}
  /* SPは折り返す。横スクロールは「見切れている合図」が出せず取りこぼすため */
  .filter_bar{flex-wrap:wrap;gap:8px;align-items:center}
  .filter_label{width:100%;margin-bottom:2px}
  .filter_chip{flex:none;padding:0 12px;font-size:1.3rem}
  /* PASSPORTが本文と重ならないよう、絞り込み帯の下端に余白を確保 */
  .page_main_cont{padding-bottom:96px}
  .band .band_inner{flex-direction:column;align-items:flex-start}
  /* SPは1行バーに圧縮。位置は保つのでイベントが増えても埋もれない。
     フルサイズの訴求は一覧の後ろ（.band）で行う */
  .band_inline{
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:12px 16px;margin-top:20px;border-radius:10px;
  }
  .band_inline .band_inner{display:contents}
  .band_inline h2{font-size:1.6rem;line-height:1.45}
  .band_inline p{display:none}
  .band_inline .btn{
    flex:none;width:auto;padding:10px 16px;min-height:44px;font-size:1.3rem;white-space:nowrap;
  }
  /* 375px未満はボタン横並びだとh2が3〜4文字幅に圧迫され語中で割れる（実測）。
     見出しを全幅にしてボタンを下段へ落とす */
  @media (max-width:374px){
    .band_inline{flex-wrap:wrap}
    .band_inline h2{flex:0 0 100%}
  }
  .footer_inner{padding:42px 24px 36px}
  .header_menu{padding:76px 24px 32px}
  .header_menu_inner{align-items:flex-start;padding-block:8px 24px}
  /* nav の絶対配置＋中央寄せを解除。狭い画面で上へはみ出すため */
  .header_menu_inner nav{position:static;transform:none;height:auto;margin:0}
  .header_menu_list_inner > li{margin-bottom:0}
  .header_menu_list_inner > li a{min-height:44px;padding:9px 0;display:flex;align-items:center}
  .header_menu_list_main{gap:32px;justify-content:flex-start}
  .header_menu_btn[aria-expanded="true"]{top:10px;right:12px}
  .ticket_bnr{display:none}
}

/* ==========================================================================
   会期カレンダー / マップ / 空状態 — site-structure.md A3・A5 の実装
   データ源: 4S /playlists/:id/counts-by-date と /geojson（いずれも取得確認済み）
   ========================================================================== */
.section_label{
  font-family:var(--nm-font-cond);font-size:1.4rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--nm-gray);margin-bottom:12px;
}
.daybar_wrap{margin-bottom:28px}
.daybar{display:flex;gap:8px}
.daybar_item{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;
  padding:12px 4px;min-height:76px;border:1px solid var(--nm-line);border-radius:10px;
  background:var(--nm-white);cursor:pointer;
  transition:border-color .2s ease,background-color .2s ease,transform .15s ease;
}
@media (hover:hover) and (pointer:fine){
  .daybar_item:hover:not(:disabled){border-color:var(--nm-red);transform:translateY(-2px)}
}
.daybar_item.is-active{background:var(--nm-ink);border-color:var(--nm-ink)}
.daybar_item.is-active .daybar_dow,
.daybar_item.is-active .daybar_day,
.daybar_item.is-active .daybar_count{color:var(--nm-white)}
.daybar_item:disabled{opacity:.4;cursor:default}
.daybar_dow{font-size:1.2rem;font-weight:700;color:var(--nm-gray)}
.daybar_day{font-family:var(--nm-font-cond);font-size:2.4rem;font-weight:700;line-height:1;color:var(--nm-ink)}
.daybar_count{font-size:1.2rem;color:var(--nm-gray)}
.daybar_item.is-empty .daybar_count{color:#72777d}

.map_wrap{margin:0 0 32px}
/* 描画実装までは折りたたみ。空の枠で一覧到達を遅らせない */
/* 絞り込みの折りたたみ。日付は常時表示、料金/カテゴリは畳んでカード到達を優先 */
.filter_fold{margin:10px 0 0;border:1px solid var(--nm-line);border-radius:10px;background:var(--nm-white)}
.filter_fold > summary{
  display:flex;align-items:center;gap:10px;min-height:48px;padding:0 16px;cursor:pointer;list-style:none;
}
.filter_fold > summary::-webkit-details-marker{display:none}
.filter_fold > summary::after{
  content:"";margin-left:auto;width:8px;height:8px;
  border-right:2px solid var(--nm-gray);border-bottom:2px solid var(--nm-gray);
  transform:rotate(45deg) translateY(-2px);transition:transform .2s ease;
}
.filter_fold[open] > summary::after{transform:rotate(-135deg) translateY(-2px)}
.filter_fold_ttl{font-family:var(--nm-font-cond);font-size:1.3rem;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;color:var(--nm-ink)}
.filter_fold_note{font-size:1.3rem;color:var(--nm-gray)}
.filter_fold_body{padding:4px 16px 16px;border-top:1px solid var(--nm-line)}
.filter_fold_body .filter_bar{margin-top:12px}
@media screen and (min-width:768px){
  /* PCは畳まず全部見せる */
  .filter_fold{border:0;background:transparent;margin:0}
  .filter_fold > summary{display:none}
  .filter_fold_body{padding:0;border-top:0}
}

.map_fold{margin:0 0 24px;border:1px solid var(--nm-line);border-radius:12px;background:var(--nm-white)}
.map_fold > summary{
  display:flex;align-items:center;gap:12px;min-height:52px;padding:0 18px;
  cursor:pointer;list-style:none;
}
.map_fold > summary::-webkit-details-marker{display:none}
.map_fold > summary::after{
  content:"";margin-left:auto;width:8px;height:8px;
  border-right:2px solid var(--nm-gray);border-bottom:2px solid var(--nm-gray);
  transform:rotate(45deg) translateY(-2px);transition:transform .2s ease;
}
.map_fold[open] > summary::after{transform:rotate(-135deg) translateY(-2px)}
.map_fold_ttl{
  font-family:var(--nm-font-cond);font-size:1.3rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--nm-ink);
}
.map_fold_note{font-size:1.3rem;color:var(--nm-gray)}
.map_fold .map_frame{border:0;border-radius:0 0 12px 12px;border-top:1px solid var(--nm-line)}
.map_frame{
  position:relative;overflow:hidden;border-radius:12px;border:1px solid var(--nm-line);
  aspect-ratio:16/7;background:linear-gradient(135deg,var(--nm-sage-light),var(--nm-mist));
}
.map_ph{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:6px;text-align:center;padding:16px;
}
.map_ph_ttl{font-family:var(--nm-font-cond);font-size:2.2rem;font-weight:700;letter-spacing:.2em;color:rgba(52,52,52,.6)}
.map_ph_txt{font-size:1.3rem;color:var(--nm-ink)}
.map_ph_txt code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1em;background:rgba(255,255,255,.7);padding:2px 6px;border-radius:4px}
.map_ph_note{font-size:1.2rem;color:var(--nm-gray)}

/* 会期後の表示（timeFilter=past で取得したイベント） */
.tag_category.is-past span{background:var(--nm-gray)}
.page_program_item.is-past .program_list_img{position:relative}
.page_program_item.is-past .program_list_img::after{
  content:"";position:absolute;inset:0;background:rgba(0,0,0,.28);z-index:1;
}
.page_program_item.is-past .program_list_title{color:var(--nm-gray)}

#list-empty[hidden]{display:none}
.list_empty{
  display:flex;flex-direction:column;align-items:center;gap:16px;
  margin:40px auto;padding:28px 24px;max-width:560px;text-align:center;
  border:1px dashed var(--nm-line);border-radius:12px;
  font-size:1.5rem;line-height:1.9;color:var(--nm-ink);
}
.dt_more{font-size:1.2rem;color:var(--nm-gray)}

@media screen and (max-width:767px){
  .daybar{gap:6px}
  .daybar_item{padding:12px 4px;min-height:68px}
  .daybar_day{font-size:2rem}
  .daybar_dow,.daybar_count{font-size:1.3rem}
  .map_frame{aspect-ratio:4/3}
  .map_ph_ttl{font-size:1.7rem}
  .map_wrap{margin-bottom:20px}
  .daybar_wrap{margin-bottom:20px}
  .section_label{margin-bottom:8px}
}

/* ==========================================================================
   応募案内（/entry） — TOPと同格の作り込み
   2026-08-19: 単色帯ヒーロー＋白地9連続だったものを、TOPの語彙
   （写真KV / 赤ロックアップ / 数字タイル / 墨帯 / カード）で組み直した。
   entry.html のインライン<style>はここへ集約（Astro移行時の汚染を避ける）。
   ========================================================================== */

/* --- 写真ヒーロー: TOPの .kv_sect と同じ「画像の上にロックアップ」構造。
       ただし一覧が主目的のTOPと違い、応募案内は本文への到達が早いほうがよいので
       9/16ではなく高さを抑えたバンド型にする --- */
.entry_hero{position:relative;overflow:hidden;isolation:isolate}
.entry_hero_img{
  position:absolute;inset:0;z-index:0;
  width:100%;height:100%;object-fit:cover;object-position:center 42%;
}
/* 画像の上に文字を置くので、可読性は推測せず遮蔽で担保する。
   墨のグラデを重ねて白文字のCRを確保（実測 12.6:1） */
.entry_hero::after{
  content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(100deg,rgba(18,18,18,.86) 0%,rgba(18,18,18,.68) 38%,rgba(18,18,18,.18) 72%,rgba(18,18,18,.06) 100%);
}
.entry_hero_inner{
  position:relative;z-index:2;
  padding-top:150px;padding-bottom:64px;
  display:flex;flex-direction:column;align-items:flex-start;
}
.entry_hero .eyebrow{
  font-family:var(--nm-font-cond);font-size:1.3rem;font-weight:700;letter-spacing:.18em;
  text-transform:uppercase;color:rgba(255,255,255,.86);
}
/* TOP .kv__lockup と同じ赤の札。ページ間で「NoMaps2026の一部」だと分かる合図 */
.entry_lockup{
  display:inline-flex;flex-direction:column;align-items:flex-start;
  margin-top:14px;padding:10px 18px 12px;background:var(--nm-red);
}
.entry_lockup_ja{
  font-size:clamp(2.6rem,4vw,4.2rem);font-weight:900;letter-spacing:.06em;line-height:1.2;
  color:var(--nm-white);
}
.entry_lockup_en{
  font-family:var(--nm-font-cond);font-size:1.3rem;font-weight:700;letter-spacing:.2em;
  /* 赤地の上では .92 白だと 4.46:1 で AA 未達（実ピクセル計測）。純白で 5.03:1 */
  color:var(--nm-white);margin-top:4px;
}
.entry_hero_lead{
  margin-top:24px;max-width:min(100%,560px);
  font-size:1.6rem;line-height:1.95;font-weight:500;color:rgba(255,255,255,.94);
}
/* 会期を欧文で。TOPの日付ロックアップと同じ Roboto Condensed で揃える */
.entry_hero_meta{
  margin-top:20px;display:flex;flex-wrap:wrap;gap:10px 22px;align-items:baseline;
  font-family:var(--nm-font-cond);font-size:1.5rem;font-weight:700;letter-spacing:.1em;
  color:var(--nm-white);
}
.entry_hero_meta .sep{color:rgba(255,255,255,.45)}
.entry_hero_cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}

/* --- 募集ステータス: 「いま応募できる」を最初に断言する。
       TOPの .daybar と同じ「大きい数字＋小さいラベル」の語彙を使う --- */
.status_bar{
  display:flex;flex-wrap:wrap;gap:14px;align-items:stretch;
  margin-top:-30px;position:relative;z-index:5;
}
.status_card{
  flex:1;min-width:150px;background:var(--nm-white);
  border:1px solid var(--nm-line);padding:16px 20px;
  box-shadow:3px 3px 6px rgba(35,33,33,.14);
}
/* PC既定値も12px以上に（SPだけ直していた） */
.status_card .k{
  font-family:var(--nm-font-cond);font-size:1.2rem;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;color:var(--nm-gray);
}
.status_card .v{
  margin-top:6px;font-size:2rem;font-weight:900;line-height:1.3;color:var(--nm-ink);
}
.status_card .v .num{font-family:var(--nm-font-cond);font-size:2.8rem;letter-spacing:.01em}
.status_card .sub{margin-top:2px;font-size:1.2rem;color:var(--nm-gray);line-height:1.6}
/* 受付中は赤で強調。他のカードと差がつくようにする */
.status_card.is-open{border-color:var(--nm-red);border-top:4px solid var(--nm-red)}
.status_card.is-open .v{color:var(--nm-red)}
.status_dot{
  display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--nm-red);
  margin-right:8px;vertical-align:.06em;
}
@media (prefers-reduced-motion:no-preference){
  .status_dot{animation:nm_pulse 2.4s ease-in-out infinite}
}
@keyframes nm_pulse{0%,100%{opacity:1}50%{opacity:.35}}

/* --- セクション見出し（既存の .sec_ttl を踏襲しつつ通し番号を足す） --- */
.sec{margin-top:64px;scroll-margin-top:88px}
.sec_ttl{
  font-size:2.2rem;font-weight:900;letter-spacing:.04em;line-height:1.45;
  padding-left:14px;border-left:5px solid var(--nm-red);
}
.sec_ttl .idx{
  display:block;font-family:var(--nm-font-cond);font-size:1.3rem;font-weight:700;
  letter-spacing:.18em;color:var(--nm-red);margin-bottom:2px;
}
.sec_body{margin-top:20px}
.sec_body p{font-size:1.5rem;line-height:2}
.lead{font-size:1.7rem;line-height:2;font-weight:500}

/* --- メリット3枚 --- */
.cols{display:flex;flex-wrap:wrap;gap:16px;margin-top:24px}
.col{
  flex:1;min-width:220px;background:var(--nm-white);border:1px solid var(--nm-line);
  padding:24px 20px;box-shadow:3px 3px 6px rgba(35,33,33,.12);
}
/* メリット3枚はリンクではないので、浮上ホバーは付けない（押せる誤認を避ける） */
/* 番号は序数の目印であって主役ではない。見出し(17px)より大きい24pxは級数の逆転
   だったため、見出しの下に置く（2026-08-20 是正）。赤・字間・欧文書体で
   「番号だ」と分かるので、サイズを落としても役割は失われない */
.col .num{
  font-family:var(--nm-font-cond);font-size:1.4rem;font-weight:700;
  letter-spacing:.12em;color:var(--nm-red);line-height:1;
}
.col h3{margin:8px 0 8px;font-size:1.7rem;font-weight:700;line-height:1.5}
.col p{font-size:1.3rem;line-height:1.9;color:var(--nm-ink)}
/* 必須要件は同意事項の本文に埋もれさせない。赤の縦罫で「守る対象」だと分かるようにする */
.term_must{
  margin-top:12px;padding:12px 14px;border-left:3px solid var(--nm-red);
  background:rgba(210,45,55,.05);
}
/* 4Sが何かを知らない応募者向けの補足。本文より一段引いた注記として置く */
.col .col_note{
  margin-top:12px;padding-top:12px;border-top:1px solid var(--nm-line);
  font-size:1.2rem;line-height:1.85;color:var(--nm-ink);
}

/* --- 応募の流れ --- */
.steps{counter-reset:step;margin-top:24px}
.step{position:relative;padding:0 0 28px 56px;border-left:2px solid var(--nm-line);margin-left:20px}
.step:last-child{border-left-color:transparent;padding-bottom:0}
.step::before{
  counter-increment:step;content:counter(step);
  position:absolute;left:-19px;top:-2px;width:36px;height:36px;border-radius:50%;
  background:var(--nm-red);color:var(--nm-white);display:flex;align-items:center;justify-content:center;
  font-family:var(--nm-font-cond);font-weight:700;font-size:1.5rem;
}
.step h3{font-size:1.7rem;font-weight:700;line-height:1.5;margin-bottom:4px}
.step p{font-size:1.3rem;line-height:1.9}
.step .when{
  display:inline-block;margin-top:6px;font-family:var(--nm-font-cond);font-size:1.3rem;
  font-weight:700;letter-spacing:.12em;color:var(--nm-gray);
}

.rule_list li{position:relative;padding-left:24px;margin-top:16px;font-size:1.5rem;line-height:1.9}
.rule_list li::before{
  content:"";position:absolute;left:0;top:.72em;width:10px;height:10px;
  border-radius:50%;background:var(--nm-red);
}

.sched{width:100%;border-collapse:collapse;margin-top:8px}
.sched th,.sched td{
  padding:14px 8px;border-bottom:1px solid var(--nm-line);
  font-size:1.4rem;line-height:1.8;text-align:left;
}
.sched th{width:180px;font-weight:700;color:var(--nm-gray);font-size:1.3rem;letter-spacing:.06em}
.sched tr.is-now td,.sched tr.is-now th{background:rgba(210,45,55,.05)}
/* is-now行は地が薄紅になるぶん、--nm-gray(#72777d)だと 4.18:1 でAA未達。
   この行だけ濃いグレーにして 5.05:1 を確保する（実測） */
.sched tr.is-now th{color:#656a70}
.sched .badge_now{
  display:inline-block;margin-left:8px;padding:2px 8px;background:var(--nm-red);color:var(--nm-white);
  font-family:var(--nm-font-cond);font-size:1.2rem;font-weight:700;letter-spacing:.1em;
}
/* 仮の値であることを見た目で分かるようにする（確定後にこのクラスを外す） */
.prov{border-bottom:1px dashed var(--nm-gray)}
.prov::after{
  content:"仮";margin-left:6px;padding:1px 5px;background:var(--nm-tag-purpose);
  color:var(--nm-ink);font-size:1rem;font-weight:700;letter-spacing:.04em;vertical-align:.1em;
}

/* --- FAQ: 開閉式にして縦を詰める --- */
.faq{margin-top:8px}
.faq_item{border-bottom:1px solid var(--nm-line)}
.faq_item summary{
  list-style:none;cursor:pointer;position:relative;
  padding:20px 40px 20px 28px;font-size:1.5rem;font-weight:700;line-height:1.7;
}
.faq_item summary::-webkit-details-marker{display:none}
.faq_item summary::before{
  content:"Q";position:absolute;left:0;top:20px;color:var(--nm-red);
  font-family:var(--nm-font-cond);font-weight:700;
}
.faq_item summary::after{
  content:"";position:absolute;right:8px;top:28px;width:8px;height:8px;
  border-right:2px solid var(--nm-gray);border-bottom:2px solid var(--nm-gray);
  transform:rotate(45deg);transition:transform .2s;
}
.faq_item[open] summary::after{transform:rotate(225deg);top:30px}
.faq_item summary:hover{color:var(--nm-red-dark)}
.faq_item summary:focus-visible{outline:3px solid var(--nm-red);outline-offset:-3px}
.faq_a{
  margin:0 0 18px;font-size:1.4rem;line-height:1.9;padding-left:28px;
  position:relative;color:var(--nm-ink);
}
.faq_a::before{
  content:"A";position:absolute;left:0;top:0;color:var(--nm-gray);
  font-family:var(--nm-font-cond);font-weight:700;
}

/* --- 申請フォーム（Web3Forms）--- */
.form_sect{
  margin-top:64px;padding:44px 0 52px;background:var(--nm-ink);color:var(--nm-white);
  scroll-margin-top:72px;
}
.form_head{max-width:var(--nm-inner);margin:0 auto;padding:0 24px}
.form_head h2{font-size:2.6rem;font-weight:900;letter-spacing:.04em;line-height:1.4}
.form_head .en{
  display:block;font-family:var(--nm-font-cond);font-size:1.2rem;font-weight:700;
  letter-spacing:.2em;color:rgba(255,255,255,.6);margin-bottom:6px;
}
.form_head p{margin-top:10px;font-size:1.4rem;line-height:1.9;color:rgba(255,255,255,.8)}
.entry_form{
  max-width:var(--nm-inner);margin:24px auto 0;padding:0 24px;
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;
}
.field{display:flex;flex-direction:column;gap:7px}
.field.wide{grid-column:1 / -1}
.field .label{
  font-family:var(--nm-font-cond);font-size:1.2rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:rgba(255,255,255,.72);
}
.field .req{color:#ff8b93;margin-left:6px;letter-spacing:0}
.field .hint{font-size:1.2rem;line-height:1.7;color:rgba(255,255,255,.55)}
.entry_form input[type="text"],
.entry_form input[type="email"],
.entry_form input[type="url"],
.entry_form input[type="date"],
.entry_form select,
.entry_form textarea{
  width:100%;background:var(--nm-white);color:var(--nm-ink);
  border:1px solid transparent;padding:13px 14px;
  font-family:var(--nm-font);font-size:1.5rem;line-height:1.6;
}
.entry_form textarea{resize:vertical;min-height:132px}
.entry_form input:focus,.entry_form select:focus,.entry_form textarea:focus{
  outline:none;border-color:var(--nm-red);box-shadow:0 0 0 3px rgba(210,45,55,.4);
}
.entry_form .botcheck{display:none}
.check_row{
  display:flex;align-items:flex-start;gap:12px;font-size:1.3rem;line-height:1.8;
  min-height:44px;padding:10px 0;cursor:pointer;
}
.check_row input[type="checkbox"]{width:24px;height:24px;flex:none;margin-top:.15em;accent-color:var(--nm-red)}
.check_row input[type="checkbox"]:focus-visible{outline:3px solid var(--nm-red);outline-offset:2px}
/* 規範リンクだけは別遷移。行全体のタップ領域とは分けて44pxを確保する */
.check_row a{color:var(--nm-white);text-decoration:underline;display:inline-block;padding:15px 2px;margin:-15px 0}
.form_foot{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin-top:6px}
.form_foot .btn_primary{padding:16px 40px;font-size:1.6rem}
.form_note{font-size:1.3rem;line-height:1.8;color:rgba(255,255,255,.6)}
.captcha_wrap{grid-column:1 / -1;min-height:78px}

/* --- 固定CTA: 押せないゴーストではなく、フォームへ実際に飛ぶ --- */
.cta_fixed{
  position:fixed;left:0;right:0;bottom:0;z-index:120;
  background:rgba(255,255,255,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-top:1px solid var(--nm-line);padding:12px 24px;
  display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:wrap;
  transform:translateY(100%);transition:transform .3s;
}
.cta_fixed.is-show{transform:translateY(0)}
.cta_fixed p{font-size:1.3rem;font-weight:700}
.cta_fixed .deadline{color:var(--nm-red)}
/* 応募案内ページではPASSPORTと固定CTAが重なるので、PASSPORTを出さない */
body.page_entry .ticket_bnr{display:none}
/* 固定CTAバーの実高はJSで測って --cta-h に入れる（折返しで109〜125pxまで変動し、
   768〜1024pxでは確保がゼロでフッターが永久に隠れていた。2026-08-19 CDO指摘） */
body.page_entry{padding-bottom:calc(var(--cta-h, 0px) + env(safe-area-inset-bottom, 0px))}

@media screen and (max-width:1024px){
  .entry_form{grid-template-columns:1fr}
}
@media screen and (max-width:767px){
  .entry_hero_inner{padding-top:112px;padding-bottom:52px}
  .entry_hero::after{
    background:linear-gradient(160deg,rgba(20,20,20,.86) 0%,rgba(20,20,20,.74) 60%,rgba(20,20,20,.6) 100%);
  }
  .entry_hero_lead{font-size:1.4rem;line-height:1.9;margin-top:20px}
  .entry_hero_meta{font-size:1.3rem;gap:6px 14px}
  .entry_hero_cta .btn{width:100%;justify-content:center}
  .entry_lockup{padding:8px 14px 10px}
  /* 「サイドイベント募集」9文字を1行で保つ。320pxではclamp下限2.6remが
     幅超過して「募/集」で割れる（実測）ため、vw項で縮めてnowrapにする */
  .entry_lockup_ja{font-size:clamp(2.2rem,6.9vw,4.2rem);white-space:nowrap}
  /* 4枚を縦に積むと本文到達が4枚ぶん遠のく。2列にして高さを半分にする */
  .status_bar{margin-top:-20px;gap:8px}
  .status_card{min-width:0;flex:1 1 calc(50% - 4px);padding:12px 12px}
  .status_card .k{font-size:1.2rem;letter-spacing:.1em}
  .status_card .v{font-size:1.5rem;margin-top:4px}
  .status_card .v .num{font-size:2.1rem}
  .status_card .sub{font-size:1.3rem;line-height:1.6}
  .lead{font-size:1.5rem}
  .sec{margin-top:44px}
  .sec_ttl{font-size:1.9rem}
  .sched th{width:auto;display:block;border-bottom:none;padding-bottom:0}
  .sched td{display:block;padding-top:4px}
  .form_sect{padding:32px 0 40px}
  .form_head h2{font-size:2rem}
  .entry_form{gap:16px}
  .form_foot .btn_primary{width:100%;justify-content:center}
  .cta_fixed{gap:10px;padding:10px 16px}
  .cta_fixed{gap:10px;padding:10px 14px}
  .cta_fixed p{font-size:1.2rem;line-height:1.35;max-width:44%}
  .cta_fixed .btn{width:100%;justify-content:center}
  /* 固定CTAの高さぶん、フッターが隠れないようにする */
  /* 確保はJS計測の --cta-h に一本化（固定pxをやめた） */
}

/* --- 注意事項 / 同意事項 / 禁止事項（IVSサイドイベントの構成をNoMaps向けに移植）
       応募前に必ず読ませたい塊なので、本文とは地を変えて「読む場所」だと分かるようにする --- */
.notices{
  margin-top:24px;padding:24px 24px;
  background:var(--nm-mist);border-left:5px solid var(--nm-ink);
}
.notices p{font-size:1.4rem;line-height:1.95}
.notices p + p{margin-top:10px}

/* 同意事項: 番号付きの塊。カード型にすると1件ずつ読み切れる */
.terms{margin-top:24px;display:grid;gap:16px}
.term{
  background:var(--nm-white);border:1px solid var(--nm-line);padding:20px 24px;
  border-left:4px solid var(--nm-red);
}
.term h3{
  font-size:1.6rem;font-weight:700;line-height:1.5;
  display:flex;align-items:baseline;gap:10px;
}
.term h3 .no{
  font-family:var(--nm-font-cond);font-size:1.3rem;font-weight:700;
  letter-spacing:.12em;color:var(--nm-red);flex:none;
}
.term p{margin-top:8px;font-size:1.3rem;line-height:1.9;color:var(--nm-ink)}

/* 禁止事項: 赤地ではなく白地＋赤枠。ページ全体の赤の使用量を増やしすぎない */
.prohibit{
  margin-top:24px;padding:24px 24px;
  background:rgba(210,45,55,.05);border:1px solid var(--nm-red);
}
.prohibit_list{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.prohibit_list li{
  list-style:none;background:var(--nm-white);border:1px solid var(--nm-red);
  color:var(--nm-red);font-size:1.3rem;font-weight:700;padding:8px 14px;line-height:1.5;
}
.prohibit_note{margin-top:16px;font-size:1.3rem;line-height:1.9;color:var(--nm-ink)}

.sec_label_en{
  display:block;font-family:var(--nm-font-cond);font-size:1.2rem;font-weight:700;
  letter-spacing:.18em;color:var(--nm-gray);margin-bottom:4px;
}
.sub_ttl{
  margin-top:36px;font-size:1.9rem;font-weight:900;letter-spacing:.04em;line-height:1.45;
}

@media screen and (max-width:767px){
  .notices{padding:20px 20px}
  .notices p{font-size:1.3rem;line-height:1.9}
  .term{padding:16px 20px}
  .term h3{font-size:1.5rem}
  .prohibit{padding:20px 20px}
  .sub_ttl{font-size:1.7rem;margin-top:28px}
}

/* --- 03 応募の条件と、守っていただくこと（2026-08-19 統合）---
   同意事項7項目を開閉式にした。全展開だと2,516px＝2.98画面を占め、
   「離脱」か「読まずに同意」の二択になっていたため。
   畳んだ分の担保は、フォームの同意チェック時に未開封なら開かせるJSで取る。 */
.req_ttl{
  font-size:1.7rem;font-weight:900;letter-spacing:.04em;line-height:1.5;margin-bottom:4px;
}
.terms_fold{
  margin-top:24px;border:1px solid var(--nm-line);background:var(--nm-white);
  scroll-margin-top:80px;
}
.terms_fold > summary{
  list-style:none;cursor:pointer;position:relative;
  padding:20px 48px 20px 24px;min-height:44px;
}
.terms_fold > summary::-webkit-details-marker{display:none}
.terms_fold > summary::after{
  content:"";position:absolute;right:20px;top:28px;width:8px;height:8px;
  border-right:2px solid var(--nm-gray);border-bottom:2px solid var(--nm-gray);
  transform:rotate(45deg);transition:transform .2s;
}
.terms_fold[open] > summary::after{transform:rotate(225deg);top:30px}
.terms_fold > summary:hover .terms_fold_ttl{color:var(--nm-red-dark)}
.terms_fold > summary:focus-visible{outline:3px solid var(--nm-red);outline-offset:-3px}
.terms_fold_ttl{display:block;font-size:1.6rem;font-weight:700;line-height:1.5}
.terms_fold_sub{display:block;margin-top:3px;font-size:1.3rem;color:var(--nm-gray);line-height:1.6}
.terms_fold .terms{margin:0;padding:0 22px 22px}
/* 未確認のまま同意しようとしたときの注意喚起 */
.terms_fold.is-flash{animation:nm_flash 1.4s ease}
@keyframes nm_flash{0%,100%{border-color:var(--nm-line)}20%,60%{border-color:var(--nm-red);box-shadow:0 0 0 3px rgba(210,45,55,.18)}}

@media screen and (max-width:767px){
  .req_ttl{font-size:1.5rem}
  .terms_fold > summary{padding:16px 40px 16px 16px}
  .terms_fold_ttl{font-size:1.4rem}
  .terms_fold .terms{padding:0 16px 16px}
}

/* 本文中のリンクもタップ領域44pxを確保する。
   行動規範・相談窓口へのリンクは押せないと意味がない（2026-08-19 追加分の是正） */
.rule_list a,.term p a,.faq_a a,.notices a,.prohibit_def a,
.detail_body p a,.detail_body li a,.notice a,.col p a{
  display:inline-block;padding:11px 2px;margin:-11px 0;
  color:var(--nm-red);text-decoration:underline;text-underline-offset:2px;
}
.rule_list a:hover,.term p a:hover,.faq_a a:hover,.notices a:hover,.prohibit_def a:hover,
.detail_body p a:hover,.detail_body li a:hover,.notice a:hover,.col p a:hover{color:var(--nm-red-dark)}

/* ==========================================================================
   タッチ操作の端末は画面幅によらず44pxを確保する。
   画面幅で切ると iPad縦(768px) やAndroidタブレットが取り残される（Fable指摘）
   ========================================================================== */
@media (pointer: coarse){
  .header_menu_list_inner > li{margin-bottom:0}
  .header_menu_list_inner > li a{display:flex;align-items:center;min-height:44px;padding:9px 0}
  .filter_chip{min-height:44px}
  .footer_gl_nav_list > li a{min-height:44px}
  .footer_sns_list a{width:44px;height:44px}
  .menu_sns a{min-width:44px;min-height:44px}
  .daybar_item{min-height:76px}
  .map_fold > summary{min-height:52px}
}

/* ==========================================================================
   2026-08-19 五者レビュー反映（CDO指摘の実測是正）
   ========================================================================== */

/* 【1】フォームのラベル14件が全て和文なのに Roboto Condensed + letter-spacing:.14em +
   uppercase で描画され、「メ ー ル ア ド レ ス」と1文字ずつ引き離されていた。
   和文の適正字間は0〜0.05em。欧文指定を外し、サイズも12→13pxへ。 */
.entry_form .field .label{
  font-family:var(--nm-font);
  font-size:1.3rem;letter-spacing:.02em;text-transform:none;
  color:rgba(255,255,255,.88);
}
/* 【1-b】ラベル(12px)よりプレースホルダ(15px)が目立つ階層の逆転を解消。
   入力すべき項目名より、消える例文が強いのはおかしい。 */
.entry_form input::placeholder,.entry_form textarea::placeholder{
  font-size:.93em;color:#6b6b6b;
}

/* 【2】入力欄15px → 16px。iOS Safariは16px未満の入力欄でフォーカス時に
   強制ズームし、以降戻らない。16フィールド全部で起きていた。 */
.entry_form input[type="text"],
.entry_form input[type="email"],
.entry_form input[type="url"],
.entry_form input[type="date"],
.entry_form select,
.entry_form textarea{font-size:1.6rem}

/* 【3】赤ボタンの上に赤いフォーカスリング＝実測CR 1.06 で見えない。
   白＋赤の二重リングにして、赤地でも墨地でも成立させる。 */
.btn_primary:focus-visible,
.entry_hero_cta .btn_primary:focus-visible,
.form_foot .btn_primary:focus-visible{
  outline:3px solid var(--nm-white);
  outline-offset:2px;
  box-shadow:0 0 0 6px rgba(52,52,52,.55);
}
/* 墨地のフォーム入力欄も、赤40%では実測CR 1.32。白リングへ。 */
.entry_form input:focus,.entry_form select:focus,.entry_form textarea:focus{
  outline:3px solid var(--nm-white);outline-offset:1px;
  border-color:var(--nm-red);box-shadow:0 0 0 6px rgba(210,45,55,.55);
}
.check_row input[type="checkbox"]:focus-visible{
  outline:3px solid var(--nm-white);outline-offset:3px;
}

/* 【4】和文の行長。素の1112pxでは70〜88字で長すぎるため上限を設ける。
   2026-08-20 改訂: 要素ごとの `max-width:40em` は効きすぎていた（本文600px対し親1112px＝
   右に512pxが取り残され、読点や語の途中で不自然に折り返して見えた。Daimu指摘）。
   → 上限は「読み物ブロックの幅」で一括して与え、本文自身は幅いっぱいに流す。
   カード・帯・フォームは従来の広い幅を保つ（3枚並びを崩さない）。 */
@media screen and (min-width:1024px){
  .page_entry .sec_ttl,
  .page_entry .req_ttl,
  .page_entry .sec_body,
  .page_entry .steps,
  .page_entry .sched,
  .page_entry .faq{
    max-width:820px;
  }
}
/* 同意事項・禁止事項・注記は .sec_body の中にあるため上の幅を継ぐ。
   中の本文は幅いっぱいに流す（個別の em 上限で二重に絞らない） */
.sec_body > p,.lead,.term p,.faq_a,.notices p,.step p,
.rule_list li,.sec_body li,.prohibit_note,.prohibit_def,.terms_fold_sub{
  max-width:none;
}
.form_head p{max-width:46em}
.footer_note{
  /* 34emだと1.2rem時に約408pxで、2文とも語中で折れる（「掲載してい/ます」等）。
     文が収まる幅まで広げたうえで、SPでは文節単位で折り返す */
  max-width:46em;margin-left:auto;margin-right:auto;
  text-wrap:pretty;
}
/* 日本語は既定でどこでも折れる。読点・助詞の切れ目で折るため文節を
   inline-block で包み、その内部での改行を禁じる（SPで効く） */
.footer_note .ph{display:inline-block}
/* 見出し・リード文の文節単位折り返し（footer .ph と同じ考え方の汎用版）。
   「開催」「サイドイベント」等の語中でSPが折れるのを防ぐ */
.wbr{display:inline-block}

/* 【6】--nm-gray(#72777d)は白地で4.52:1＝AA基準を0.02しか上回らない。
   応募判断に効く補足文（ステータスカードのsub・所要時間）を #5f646a(約6:1)へ。 */
.status_card .k,.status_card .sub,.step .when{color:#5f646a}

/* 開催日が近いときの注意喚起 */
.field_warn{
  margin-top:6px;padding:10px 12px;font-size:1.3rem;line-height:1.75;
  background:rgba(255,255,255,.12);border-left:3px solid #ffd479;color:var(--nm-white);
}
.sched_note{display:inline-block;margin-top:4px;font-size:1.3rem;line-height:1.7;color:#5f646a}

/* 任意項目の畳み。必須の間に任意9項目(1,045px)が挟まり、必須5項目化の効果が
   レイアウトに出ていなかった（2026-08-19 CMO指摘）。必須→任意→同意 の順に組み替え。 */
.opt_fold{
  grid-column:1 / -1;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.05);
}
.opt_fold > summary{
  list-style:none;cursor:pointer;position:relative;padding:16px 46px 16px 20px;min-height:44px;
}
.opt_fold > summary::-webkit-details-marker{display:none}
.opt_fold > summary::after{
  content:"";position:absolute;right:20px;top:24px;width:9px;height:9px;
  border-right:2px solid rgba(255,255,255,.75);border-bottom:2px solid rgba(255,255,255,.75);
  transform:rotate(45deg);transition:transform .2s;
}
.opt_fold[open] > summary::after{transform:rotate(225deg);top:28px}
.opt_fold > summary:focus-visible{outline:3px solid var(--nm-white);outline-offset:-3px}
.opt_fold_ttl{display:block;font-size:1.5rem;font-weight:700;line-height:1.5;color:var(--nm-white)}
.opt_fold_sub{display:block;margin-top:3px;font-size:1.3rem;line-height:1.6;color:rgba(255,255,255,.62)}
.opt_grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;padding:4px 20px 24px}
.opt_grid .field.wide{grid-column:1 / -1}
@media screen and (max-width:1024px){ .opt_grid{grid-template-columns:1fr} }

/* .hint はダーク地で実測4.50:1＝基準ちょうど。丸め・ガンマ差で割り込むため余裕を持たせる */
.entry_form .field .hint{color:rgba(255,255,255,.68);font-size:1.3rem}

/* 禁止事項のうち自己判定できない項目の定義文 */
.prohibit_def{
  margin-top:14px;padding:12px 14px;background:var(--nm-white);
  border-left:3px solid var(--nm-red);font-size:1.3rem;line-height:1.9;
}

/* 送信エラーの要約。標準バブルは1件しか読まれず消えると残らないため、
   テキストで残して読み上げにも乗せる（2026-08-19 CDO指摘） */
.form_errors{
  grid-column:1 / -1;margin:0;padding:14px 16px;
  background:#fff;border-left:5px solid var(--nm-red);color:var(--nm-ink);
  font-size:1.4rem;line-height:1.8;max-width:40em;
}
.form_errors:focus-visible{outline:3px solid var(--nm-white);outline-offset:2px}
/* 未入力の欄そのものにも印を付ける */
.entry_form [aria-invalid="true"]{box-shadow:0 0 0 3px rgba(210,45,55,.85)}

/* エラー要約: 各項目へ飛べるリンクにする（名前だけでは場所が分からない） */
.form_errors ul{margin:8px 0 0;padding-left:0;list-style:none}
.form_errors li{position:relative;padding-left:16px;margin-top:5px;font-size:1.3rem;line-height:1.8}
.form_errors li::before{content:"・";position:absolute;left:0;color:var(--nm-red)}
.form_errors a{color:var(--nm-red);text-decoration:underline;font-weight:700;
  display:inline-block;padding:6px 2px;margin:-6px 0}
.form_errors a:hover{color:var(--nm-red-dark)}

/* ==========================================================================
   2026-08-20 Solレビュー反映
   ========================================================================== */

/* --- 一度きりの出現モーション（appear）。クラスはJSが付けるため、
       JS無効時は何も隠れない。減退設定では .reveal 自体が付かない --- */
.reveal{opacity:0;transform:translateY(8px);
  transition:opacity .24s ease,transform .24s cubic-bezier(.22,1,.36,1)}
.reveal.is-visible{opacity:1;transform:none}

/* --- prefers-reduced-motion: 装飾モーションを一括停止
       （開閉の状態変化は残る。動きだけを消す） --- */
@media (prefers-reduced-motion:reduce){
  .header_menu,
  .header_logo_year,
  .header_menu_btn span,
  .page_program_item article,
  .daybar_item,
  .cta_fixed,
  .filter_chip,
  .faq_item summary::after,
  .filter_fold > summary::after,
  .terms_fold > summary::after,
  .opt_fold > summary::after,
  .reveal{transition:none !important}
  .page_program_item article:focus-within{transform:none}
  .status_dot,
  .terms_fold.is-flash{animation:none !important}
}

/* --- 404 / 送信完了ページ --- */
.plain_page{max-width:640px;margin:0 auto;padding:160px 24px 80px;text-align:center}
.plain_page .code{
  font-family:var(--nm-font-cond);font-size:6.4rem;font-weight:700;line-height:1;
  color:var(--nm-red);letter-spacing:.04em;
}
.plain_page h1{margin-top:12px;font-size:2.2rem;font-weight:900;color:var(--nm-ink)}
.plain_page p{margin-top:14px;font-size:1.5rem;line-height:2;color:var(--nm-ink)}
.plain_page .actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:28px}

/* hCaptchaが読み込めない環境向けの案内（ウィジェットが空のときだけ見える） */
.h-captcha:empty::before{
  content:"認証部品を読み込んでいます。表示されない場合は、コンテンツブロッカーを一時的に無効にして再読み込みしてください。";
  display:block;font-size:1.3rem;line-height:1.8;color:rgba(255,255,255,.72);
}
