/* ===== page.css ｜ トップページ個別スタイル =====
   ヒーロー・コンセプト・一覧（グループ＋カルーセル）・カード・記事詳細・下層ページ
   （デザイントークンは _variables.css。値の直書きは禁止／メディアは min-width＝モバイルファースト） */

/* --- スクロール表示アニメーション（reveal） --- */
.u-reveal{opacity:0;transform:translateY(1.5rem);transition:opacity .75s ease,transform .75s cubic-bezier(.22,.61,.36,1);}
.u-reveal.is-in{opacity:1;transform:none;}
.p-concept__lead.u-reveal{transition-delay:.08s;}
.p-concept__body.u-reveal{transition-delay:.16s;}
@media(prefers-reduced-motion:reduce){.u-reveal{opacity:1;transform:none;transition:none;}}

/* --- ヒーロー --- */
.p-hero{position:relative;min-height:min(82vh,40rem);overflow:hidden;background:var(--ink);display:flex;isolation:isolate;}
/* SP：ヒーロー背景を5列で敷き詰める。行高は列幅×通常比(101/140)で全行を等しく固定
   （aspect-ratio+自動行だとロゴ名テキストのタイルだけ背が伸びて行がズレるため vw で固定）。
   1列=約20vw → 行高=20vw×101/140≒14.4vw。641px以上は自動レイアウトに戻す。 */
.p-hero__wall{position:absolute;inset:-1px;display:grid;grid-template-columns:repeat(5,1fr);grid-auto-rows:14.4vw;align-content:start;opacity:.9;overflow:hidden;}
.p-hero__mark{position:relative;display:flex;align-items:center;justify-content:center;padding:0;overflow:hidden;transition:box-shadow .5s;}
.p-hero__mark img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) brightness(.32) contrast(1.05);transition:filter .5s ease;}
.p-hero__mark span{font-family:var(--serif);font-size:.6875rem;letter-spacing:.05em;color:rgba(206,187,142,.6);text-align:center;line-height:1.25;transition:color .5s;}
.p-hero__mark.is-lit{box-shadow:inset 0 0 1.375rem rgba(230,188,108,.28);z-index:2;}
.p-hero__mark.is-lit img{filter:grayscale(0) brightness(1) contrast(1);}
.p-hero__mark.is-lit span{color:var(--gold-lt);}
.p-hero__spot{position:absolute;left:50%;top:47%;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;mix-blend-mode:screen;will-change:left,top;background:radial-gradient(circle,rgba(255,246,220,.72) 0%,rgba(255,240,206,.4) 32%,rgba(255,238,200,.12) 56%,transparent 74%);}
.p-hero__vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(135% 125% at 50% 50%,transparent 52%,rgba(8,6,4,.6) 100%);}
.p-hero__content{position:relative;margin:auto;text-align:center;padding:4rem 1.375rem;z-index:1;}
.p-hero__content::before{content:"";position:absolute;inset:-10% -16%;z-index:-1;pointer-events:none;background:radial-gradient(62% 60% at 50% 46%,rgba(10,8,6,.82) 0%,rgba(10,8,6,.45) 46%,transparent 72%);}
.p-hero__logo{width:min(75rem,90vw);height:auto;margin:0 auto;opacity:0;animation:fu 1s .2s forwards;filter:drop-shadow(0 0 1.25rem rgba(247,246,242,.5)) drop-shadow(0 0 .375rem rgba(247,246,242,.55));}
.p-hero__prism{height:3px;width:8.25rem;margin:1.875rem auto 0;background:var(--prism);border-radius:3px;opacity:0;animation:fu .9s .46s forwards;}
.p-hero__scroll{position:absolute;bottom:1.25rem;left:50%;transform:translateX(-50%);font-size:.625rem;letter-spacing:.3em;color:var(--on-dark-muted);display:flex;flex-direction:column;align-items:center;gap:.375rem;z-index:2;opacity:0;animation:fu 1s .9s forwards;}
.p-hero__scroll::after{content:"";width:1px;height:1.5rem;background:var(--on-dark-muted);animation:sc 1.8s ease-in-out infinite;}

/* セクションアンカーが sticky ヘッダーに隠れないように */
#concept,#leaders{scroll-margin-top:5.125rem;}

/* --- 千葉県シルエットの背景（トップのみ・CONCEPT到達でスライドイン） --- */
#home{position:relative;}
/* 千葉県地図の背景。SPは小さめ・薄めで表示、641px以上で通常サイズ */
#home::before{content:"";display:block;position:fixed;z-index:-2;top:7rem;right:-2.5rem;width:min(58vw,20rem);height:70vh;background:url(../img/chiba.svg) center right/contain no-repeat;opacity:0;transform:translateX(4.375rem);transition:opacity .9s ease,transform 1.4s cubic-bezier(.16,1,.3,1);pointer-events:none;}
#home.is-map-on::before{opacity:.16;transform:translateX(0);}

/* --- コンセプト --- */
.p-concept{min-height:0;padding:4.5rem 0 2.5rem;display:flex;flex-direction:column;justify-content:center;}
.p-concept__kick{font-size:.6875rem;letter-spacing:.24em;color:var(--mag-ink);font-weight:700;margin-bottom:1.625rem;}
.p-concept__kick::after{content:"";display:block;width:2.125rem;height:1px;background:var(--mag-ink);margin-top:.875rem;opacity:.5;}
.p-concept__lead{font-weight:600;font-size:clamp(1.5625rem,3.2vw,2.3125rem);line-height:1.55;letter-spacing:.03em;color:var(--ink);margin-bottom:2.25rem;}
.p-concept__body{max-width:none;}
.p-concept__body p{font-family:var(--serif);font-size:.96875rem;line-height:2.35;color:var(--text);}
.p-concept__body p+p{margin-top:1.25rem;}

/* --- 一覧見出し（LEADERS） --- */
.p-leaders{padding:1.875rem 0 1.375rem;}
.p-leaders__bar{text-align:center;border-top:1px solid var(--line);padding-top:3rem;}
.p-leaders__kick{font-size:.71875rem;letter-spacing:.3em;color:var(--mag-ink);font-weight:700;margin-bottom:1rem;}
.p-leaders__bar h2{font-family:var(--serif);font-weight:700;font-size:clamp(1.75rem,3.8vw,2.75rem);letter-spacing:.05em;color:var(--ink);}
.p-leaders__num{color:var(--mag-ink);font-size:1.22em;margin:0 .04em;}
.p-leaders__line{width:4rem;height:3px;background:var(--prism);border-radius:3px;margin:1.375rem auto 0;}

/* --- グループ（縦積み）＋各グループ内は自動カルーセル --- */
#groups{padding-bottom:4.5rem;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);}
.p-group{margin-top:4.5rem;}
.p-group:first-child{margin-top:2.5rem;}
.p-group__head{display:flex;justify-content:center;align-items:center;gap:.875rem;margin-bottom:1.875rem;}
.p-group__head::before,.p-group__head::after{content:"";height:1px;background:var(--line);width:min(20vw,12.5rem);margin-inline:.5rem;flex:none;}
.p-group__label{font-size:.6875rem;letter-spacing:.26em;color:var(--gold-ink);font-weight:700;}
.p-group__num{font-size:clamp(1.875rem,3.4vw,2.75rem);font-weight:800;color:var(--ink);line-height:1;letter-spacing:.02em;}
.p-group__view{position:relative;overflow:hidden;padding:.75rem 1rem;}
.p-group__nav{display:flex;justify-content:center;align-items:center;gap:1.5rem;margin-top:2.125rem;}
.p-group__btn{position:relative;overflow:hidden;width:3rem;height:3rem;border:1px solid var(--line);background:var(--paper);border-radius:50%;cursor:pointer;font-size:1.3125rem;color:var(--ink);font-family:var(--sans);display:flex;align-items:center;justify-content:center;transition:border-color .2s ease,color .2s ease,box-shadow .2s ease;}
.p-group__btn::before{content:"";position:absolute;inset:0;z-index:0;background:var(--mag-ink);border-radius:50%;transform:scale(0);transition:transform .32s cubic-bezier(.34,1.4,.5,1);}
.p-group__btn span{position:relative;z-index:1;line-height:1;transition:transform .2s ease;}
.p-group__btn:hover{color:var(--paper);border-color:var(--mag-ink);box-shadow:0 .3125rem 1rem rgba(171,27,46,.26);}
.p-group__btn:hover::before{transform:scale(1);}
.p-group__prev:hover span{transform:translateX(-3px);}
.p-group__next:hover span{transform:translateX(3px);}
.p-group__count{font-family:var(--sans);font-size:.875rem;letter-spacing:.08em;color:var(--muted);min-width:3.375rem;text-align:center;}
.p-group__count b{color:var(--ink);font-weight:700;font-size:1.0625rem;}
.p-group__count i{font-style:normal;margin:0 .375rem;color:var(--line);}
.p-group__track{position:relative;display:flex;gap:.875rem;will-change:transform;align-items:center;}
.p-group__track .p-card{position:relative;flex:0 0 80%;}

/* --- 企業カード --- */
.p-card{cursor:pointer;color:inherit;}
.p-card__photo{position:relative;aspect-ratio:93.42 / 67.7;overflow:hidden;background:var(--paper);border:1px solid var(--line);}
.p-card__photo svg{width:100%;height:100%;transition:transform .5s ease;filter:grayscale(1) contrast(.97);}
.p-card__photo img{width:100%;height:100%;object-fit:contain;padding:1rem;transition:transform .5s ease;}
.p-card:hover .p-card__photo svg,.p-card:hover .p-card__photo img{transform:scale(1.04);}
.p-card__star{position:absolute;top:.5625rem;right:.6875rem;z-index:2;color:var(--gold-lt);font-size:1.0625rem;letter-spacing:2px;text-shadow:0 0 .375rem rgba(247,206,90,.95),0 0 .9375rem rgba(247,206,90,.6),0 1px 3px rgba(0,0,0,.55);}
.p-card__caption{position:absolute;left:0;right:0;bottom:0;padding:1.625rem .875rem .875rem;color:var(--paper);font-family:var(--serif);font-size:.90625rem;font-weight:700;line-height:1.55;letter-spacing:.01em;background:linear-gradient(transparent,rgba(14,2,5,.4) 30%,rgba(14,2,5,.92));text-shadow:0 1px 3px rgba(0,0,0,.4);transition:background .3s ease;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.p-card:hover .p-card__caption{background:linear-gradient(transparent,rgba(171,31,36,.5) 30%,rgba(90,8,14,.94));}
.p-card__name{font-family:var(--serif);font-weight:600;font-size:.96875rem;margin-top:.75rem;letter-spacing:.02em;line-height:1.5;min-height:3em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;transition:color .15s;}
.p-card:hover .p-card__name{color:var(--mag-ink);}
.p-card__company{font-size:.75rem;color:var(--text);margin-top:.3125rem;line-height:1.55;letter-spacing:.02em;}
.p-card:focus-visible{outline:2px solid var(--mag);outline-offset:.25rem;}

/* --- 下層ページ（お問い合わせ／プライバシーポリシー） --- */
.p-page__inner{max-width:45rem;margin:0 auto;padding:2.125rem 0 5.625rem;}
.p-page__inner>*{opacity:0;animation:fu .75s cubic-bezier(.22,.61,.36,1) forwards;}
.p-page__inner>*:nth-child(2){animation-delay:.07s;}
.p-page__inner>*:nth-child(3){animation-delay:.14s;}
.p-page__inner>*:nth-child(4){animation-delay:.21s;}
.p-page__inner>*:nth-child(5){animation-delay:.28s;}
.p-page__inner>*:nth-child(6){animation-delay:.35s;}
.p-page__inner>*:nth-child(n+7){animation-delay:.42s;}
@media(prefers-reduced-motion:reduce){.p-page__inner>*{opacity:1;animation:none;}}
.p-page__inner .p-article__back{margin-bottom:2rem;}
.p-page__kick{font-size:.6875rem;letter-spacing:.24em;color:var(--mag-ink);font-weight:700;margin-bottom:.875rem;}
.p-page__title{font-size:clamp(1.5rem,3vw,2.125rem);font-weight:700;letter-spacing:.03em;color:var(--ink);margin-bottom:1.625rem;padding-bottom:1.25rem;border-bottom:2px solid var(--ink);}
.p-page__lead{font-size:.96875rem;line-height:2.05;color:var(--text);margin-bottom:1.875rem;}
.p-page__info{display:grid;grid-template-columns:6rem 1fr;border-top:1px solid var(--line);margin-bottom:1.625rem;}
.p-page__info dt{font-size:.75rem;color:var(--muted);padding:.9375rem 2px;letter-spacing:.06em;border-bottom:1px solid var(--line);}
.p-page__info dd{font-size:.90625rem;padding:.9375rem 2px;border-bottom:1px solid var(--line);}
.p-page__note{font-size:.71875rem;line-height:1.9;color:var(--muted);letter-spacing:.02em;margin-top:2.25rem;}

/* お問い合わせフォーム */
.p-form{margin-top:2.5rem;padding-top:2.25rem;border-top:1px solid var(--line);}
.p-form__heading{font-size:.9375rem;font-weight:700;letter-spacing:.04em;color:var(--ink);margin-bottom:1.5rem;}
.p-form__row{margin-bottom:1.375rem;}
.p-form__row label{display:block;font-size:.78125rem;font-weight:700;letter-spacing:.04em;color:var(--ink);margin-bottom:.5625rem;}
.p-form__required{font-size:.625rem;color:var(--paper);background:var(--mag);padding:2px .4375rem;border-radius:var(--radius);margin-left:.375rem;font-weight:700;letter-spacing:.06em;}
.p-form__row input,.p-form__row textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius);padding:.75rem .875rem;font-family:var(--sans);font-size:1rem;color:var(--ink);background:var(--paper);transition:border-color .15s;}
.p-form__row input::placeholder{color:#B5B1A9;}
.p-form__row input:focus,.p-form__row textarea:focus{outline:none;border-color:var(--mag);}
.p-form__row textarea{resize:vertical;line-height:1.7;}
.p-form__submit{background:var(--mag-ink);color:var(--paper);border:none;padding:.875rem 2.75rem;border-radius:var(--radius);font-size:.875rem;font-family:var(--sans);letter-spacing:.1em;cursor:pointer;margin-top:.375rem;transition:background .15s;}
.p-form__submit:hover{background:var(--ink);}
.p-form__submit:disabled{opacity:.45;cursor:default;}
.p-form__done{margin-top:1.25rem;font-size:.84375rem;line-height:1.8;color:var(--gold-ink);font-weight:600;}
.p-form__done small{color:var(--muted);font-weight:400;font-size:.71875rem;}
.p-policy__section{margin-bottom:2.125rem;}
.p-policy__section h3{font-size:1rem;font-weight:700;margin-bottom:.75rem;color:var(--ink);letter-spacing:.02em;}
.p-policy__section p{font-size:.875rem;line-height:2.05;color:var(--text);}

/* --- 記事詳細 --- */
#detail{display:none;}
.p-article__back{font-size:.75rem;color:var(--muted);letter-spacing:.06em;display:inline-flex;align-items:center;gap:.4375rem;cursor:pointer;background:none;border:none;font-family:var(--sans);transition:color .15s;}
.p-article__back:hover{color:var(--ink);}
.p-article__back span{color:var(--mag-ink);font-size:.875rem;}
/* SP：画像に重ねず、テキストは画像の下に濃色で配置（641px以上は重ねる） */
.p-article__hero{max-width:56.25rem;margin:1.625rem auto 0;position:relative;}
.p-article__hero img,.p-article__hero svg{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;display:block;}
.p-article__hero svg{filter:grayscale(1) contrast(.96);}
.p-article__hero-caption{padding:1.25rem .125rem 0;color:var(--ink);}
.p-article__hero-caption .p-article__stars{color:var(--gold-lt);font-size:1.0625rem;letter-spacing:4px;margin-bottom:.5rem;text-shadow:0 0 .5rem rgba(247,206,90,.5);}
.p-article__hero-caption .p-article__corp{font-size:.6875rem;letter-spacing:.16em;color:var(--mag-ink);font-weight:700;margin-bottom:.625rem;}
.p-article__hero-caption .p-article__title{font-family:var(--serif);font-weight:700;font-size:clamp(1.375rem,5.6vw,1.75rem);line-height:1.5;letter-spacing:.04em;color:var(--ink);}
.p-article__hero-caption .p-article__person{font-size:.78125rem;letter-spacing:.06em;color:var(--muted);margin-top:.75rem;}
.p-article__body{max-width:45rem;margin:3.375rem auto 0;}
.p-article__body h3{font-family:var(--serif);font-weight:700;font-size:1.28125rem;letter-spacing:.03em;line-height:1.5;margin:3.25rem 0 1.125rem;padding-left:1rem;border-left:3px solid var(--mag);}
.p-article__body p{font-family:var(--serif);font-size:1.03125rem;line-height:2.25;color:var(--text);margin-bottom:1.375rem;}
.p-article__body>p:first-child{font-size:1.15625rem;line-height:2.15;color:var(--ink);margin-bottom:1.75rem;}
.p-article__figure{margin:1.875rem 0 2.125rem;}
.p-article__figure img{width:100%;height:auto;display:block;background:var(--tile);}
.p-article__info{max-width:45rem;margin:3.75rem auto 0;}
.p-article__info .p-article__data-head{font-size:.6875rem;letter-spacing:.22em;color:var(--gold-ink);font-weight:700;padding:0 0 1rem;border-bottom:1px solid var(--line);margin-bottom:1.75rem;}
.p-article__data-name{font-family:var(--serif);font-size:1.375rem;font-weight:700;letter-spacing:.02em;color:var(--ink);line-height:1.5;}
.p-article__data-rep{font-size:.84375rem;color:var(--muted);letter-spacing:.05em;margin-top:.5625rem;}
.p-article__data-prof{font-size:.875rem;line-height:2.1;color:var(--text);margin-top:1.625rem;}
.p-article__data-url{margin-top:1.625rem;font-size:.875rem;letter-spacing:.02em;}
.p-article__info .c-link{color:var(--mag-ink);font-weight:500;}
.p-article__nav{max-width:45rem;margin:3.125rem auto 4.5rem;display:flex;border-top:1px solid var(--line);}
.p-article__nav button{flex:1;min-width:0;background:none;border:none;cursor:pointer;font-family:var(--sans);padding:1.25rem .875rem;color:var(--ink);text-align:left;transition:background .15s;}
.p-article__nav button:hover{background:var(--card);}
.p-article__nav button.p-article__nav-next{text-align:right;border-left:1px solid var(--line);}
.p-article__nav .p-article__nav-dir{font-size:.65625rem;letter-spacing:.2em;color:var(--gold-ink);font-weight:700;}
.p-article__nav .p-article__nav-title{font-family:var(--serif);font-weight:500;font-size:.875rem;margin-top:.5rem;color:var(--ink);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* ===== レスポンシブ（モバイルファースト＝min-width） ===== */

/* tab: 641px〜（カルーセル3枚・PC寄りの余白へ） */
@media(min-width:641px){
  /* 641px以上：ヒーロー背景は自動レイアウトに戻す */
  .p-hero__wall{grid-template-columns:repeat(auto-fill,minmax(8.75rem,1fr));grid-auto-rows:6.3125rem;align-content:start;}
  /* 641px以上は地図を通常サイズ・濃さに */
  #home::before{top:8.125rem;right:-3.75rem;width:min(48vw,37.5rem);height:80vh;}
  #home.is-map-on::before{opacity:.34;}
  .p-group{margin-top:7rem;}                            /* グループ間隔をPC向けに広く戻す */
  .p-group:first-child{margin-top:4rem;}
  .p-concept{min-height:100vh;padding:7.5rem 0;}
  .p-concept__body{max-width:45rem;}
  .p-concept__body p,.p-article__body p{font-size:1.03125rem;}
  .p-group__view{padding:2.25rem 1.625rem;}
  .p-group__track{gap:1.625rem;}
  /* 中央を少し拡大＋両隣を縮小して相対的に約1.3倍に。transformのみでレイアウトは不変＝重なり・ズレなし */
  .p-group__track .p-card{flex:0 0 calc((100% - 3.25rem)/3);transform:scale(.86);transition:transform .5s cubic-bezier(.22,.61,.36,1);}
  .p-group__track .p-card.is-center{transform:scale(1.12);z-index:3;}
  .p-card__caption{opacity:0;transform:translateY(.375rem);transition:opacity .3s ease,transform .3s ease,background .3s ease;}
  .p-card:hover .p-card__caption{opacity:1;transform:none;}
  .p-group__track .p-card.is-center .p-card__caption{opacity:1;transform:none;} /* 中央は常にキャプション表示 */
  .p-page__info{grid-template-columns:7.5rem 1fr;}
  /* 641px以上：ヒーロー画像にテキストを重ねる */
  .p-article__hero{aspect-ratio:3/2;overflow:hidden;background:var(--tile);}
  .p-article__hero img,.p-article__hero svg{height:100%;aspect-ratio:auto;}
  .p-article__hero-caption{position:absolute;left:0;right:0;bottom:0;padding:6.25rem 3.25rem 2.625rem;background:linear-gradient(transparent 0%,rgba(6,2,3,.32) 42%,rgba(6,2,3,.86) 100%);color:var(--paper);}
  .p-article__hero-caption .p-article__stars{margin-bottom:.75rem;letter-spacing:5px;font-size:1.125rem;text-shadow:0 0 .5rem rgba(247,206,90,.95),0 0 1.125rem rgba(247,206,90,.6),0 1px .25rem rgba(0,0,0,.45);}
  .p-article__hero-caption .p-article__corp{color:rgba(255,255,255,.82);letter-spacing:.18em;margin-bottom:1rem;}
  .p-article__hero-caption .p-article__title{color:var(--paper);font-weight:600;font-size:clamp(1.3125rem,2.8vw,2.125rem);letter-spacing:.07em;text-shadow:0 1px 1.5rem rgba(0,0,0,.45);}
  .p-article__hero-caption .p-article__person{color:rgba(255,255,255,.72);margin-top:1rem;}
  .p-article__nav button{padding:1.5rem 1.25rem;}
  /* フォーム入力はSPでは16pxにして、iOSのフォーカス時ズームを防ぐ */
  .p-form__row input,.p-form__row textarea{font-size:.90625rem;}
}

/* tab広〜: 901px〜（カルーセル3枚・余白広め） */
@media(min-width:901px){
  .p-group__view{padding:2.25rem 2.5rem;}
  .p-group__track{gap:2.375rem;}
  .p-group__track .p-card{flex:0 0 calc((100% - 4.75rem)/3);}
}

/* pc: 1281px〜（カルーセル5枚） */
@media(min-width:1281px){
  .p-group__view{padding:2.25rem 2.5rem;}
  .p-group__track{gap:1.875rem;}
  .p-group__track .p-card{flex:0 0 calc((100% - 7.5rem)/5);}
}

/* モーション低減設定への配慮（アクセシビリティのため !important を許容） */
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important;}
  .p-hero__logo,.p-hero__prism,.p-hero__scroll{opacity:1!important;transform:none!important;}
}
