/*
Theme Name: MUGEN
Theme URI: https://mugen.example/
Author: MUGEN Inc.
Description: MUGEN — 水耕栽培・種子アーカイブ研究開発ファームのコーポレートサイト。Editorial / Archival art direction. Claude Design のワイヤーフレームから起こしたクラシックPHPテーマ。
Version: 1.2.1
Requires at least: 6.2
Tested up to: 6.5
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: mugen
*/

/* =====================================================================
   DESIGN TOKENS
   ===================================================================== */
:root{
  --paper:#d9d5ca;
  --paper-2:#cdc8ba;
  --paper-3:#c2bdae;
  --page:#ffffff;
  --ink:#141414;
  --ink-pure:#000000;
  --muted:#645f54;
  --muted-2:#8a857a;
  --muted-3:#b5b0a4;
  --dark:#1a1a18;
  --footer-bg:#141414;
  --footer-word:#242320;
  --footer-heading:#5a574f;
  --footer-text:#a8a49b;
  --footer-link:#c4c0b7;
  --footer-muted:#8c8880;

  --line:rgba(0,0,0,0.14);
  --line-mid:rgba(0,0,0,0.20);
  --line-strong:rgba(0,0,0,0.35);

  --sans-en:'Space Grotesk','Zen Kaku Gothic New',sans-serif;
  --sans-jp:'Zen Kaku Gothic New','Space Grotesk',sans-serif;

  --wrap:1240px;
  --gutter:40px;
}

/* =====================================================================
   RESET / BASE
   ===================================================================== */
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--page);
  color:var(--ink);
  font-family:var(--sans-jp);
  font-size:16px;
  line-height:1.9;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{max-width:100%;height:auto;display:block;}
a{color:inherit;text-decoration:none;}
svg{display:block;}
button{font:inherit;color:inherit;cursor:pointer;}
ul,ol{margin:0;padding:0;list-style:none;}
figure{margin:0;}

/* 日本語の改行最適化: 文節優先（auto-phrase）＋禁則（strict）＋行バランス。
   auto-phrase 非対応ブラウザは従来の折り返しにフォールバック（無害）。 */
body{line-break:strict;word-break:auto-phrase;}
/* 数値＋単位など、途中で改行させたくない語句 */
.nb{white-space:nowrap;}
h1,h2,h3,.giant-title,.approach-head,.vision,.statement h2,.values-row .v-title,.sol-row .title,.job-row .j-title,.v-title{text-wrap:balance;}
p,.page-intro,.st-body,.mission-body,.approach-body,.m-text,.m-desc,.v-desc,.r-grid p,.news-item .ni-title{text-wrap:pretty;}

.mono,.en{font-family:var(--sans-en);}
.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0;}
.skip-link{position:absolute;left:-9999px;top:0;background:#fff;color:#000;padding:10px 16px;z-index:1000;}
.skip-link:focus{left:8px;top:8px;}

/* Layout helpers */
.wrap{max-width:var(--wrap);margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter);}
.wrap-flush{max-width:var(--wrap);margin:0 auto;}
.label{font-family:var(--sans-en);font-size:14px;letter-spacing:0.04em;color:var(--ink-pure);}
.label-sm{font-family:var(--sans-en);font-size:11px;letter-spacing:0.22em;text-transform:uppercase;color:var(--ink-pure);}
.eyebrow{font-family:var(--sans-en);font-size:11px;letter-spacing:0.22em;text-transform:uppercase;color:var(--ink-pure);}
.rule-top{border-top:1px solid var(--line-strong);}
.rule-hair{border-top:1px solid var(--line);}
.arrow-link{font-family:var(--sans-en);font-size:12px;letter-spacing:0.04em;color:var(--ink-pure);border-bottom:1px solid var(--ink);padding-bottom:4px;display:inline-block;transition:opacity .2s;}
.arrow-link:hover{opacity:.55;}

/* =====================================================================
   SITE HEADER
   ===================================================================== */
.site-header{
  position:sticky;top:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 40px;
  background:rgba(255,255,255,0.86);
  backdrop-filter:saturate(120%) blur(8px);
  font-family:var(--sans-en);
  transition:background .3s ease, border-color .3s ease, backdrop-filter .3s ease;
}
.site-header .brand{display:flex;align-items:center;gap:12px;transition:opacity .3s ease;}

/* TOP ファーストビュー: ロゴマークはスクロール後に出す（ワイヤーフレーム意図）。
   初期はヘッダー左に「(Est.) 」＋右にナビの1行、巨大ロゴタイプが主役。
   スクロールで (Est.) → ロゴマーク に切り替わり、固定ヘッダーが出現。 */
.header-left{display:flex;align-items:center;}
.est-inline{display:none;font-family:var(--sans-en);font-size:11px;letter-spacing:0.04em;color:var(--ink-pure);white-space:nowrap;}
.site-header.is-front:not(.is-scrolled){
  background:transparent;
  border-bottom-color:transparent;
  backdrop-filter:none;
}
.site-header.is-front:not(.is-scrolled) .brand{display:none;}
.site-header.is-front:not(.is-scrolled) .est-inline{display:block;}
.brand-mark,.brand-type{display:inline-flex;align-items:center;}
.brand-type{display:none;}
.site-header .brand-mark svg{width:44px;height:auto;}
.site-header .brand-type svg{width:auto;height:19px;}
.site-header .brand-type path{fill:var(--ink);}
/* サブページ: ロゴタイプ⇄ロゴマークをクロスフェード＋幅で滑らかに切替（初期＝ロゴタイプ、少し下げ） */
.site-header:not(.is-front) .brand{position:relative;width:108px;height:26px;gap:0;transition:width .5s cubic-bezier(.16,1,.3,1);}
.site-header:not(.is-front) .brand-mark,
.site-header:not(.is-front) .brand-type{display:inline-flex;position:absolute;left:0;top:50%;transition:opacity .45s ease,transform .5s cubic-bezier(.16,1,.3,1);}
.site-header:not(.is-front) .brand-type{opacity:1;transform:translateY(calc(-50% + 2px));}
.site-header:not(.is-front) .brand-mark{opacity:0;transform:translateY(calc(-50% + 6px));}
.site-header:not(.is-front).is-scrolled .brand{width:44px;}
.site-header:not(.is-front).is-scrolled .brand-type{opacity:0;transform:translateY(calc(-50% - 5px));}
.site-header:not(.is-front).is-scrolled .brand-mark{opacity:1;transform:translateY(-50%);}
.header-right{display:flex;align-items:center;gap:36px;}
.main-nav ul{display:flex;gap:26px;font-size:11px;letter-spacing:0.05em;}
.main-nav a{position:relative;padding-bottom:2px;transition:opacity .2s;}
.main-nav a:hover{opacity:.55;}
.main-nav .current-menu-item>a,.main-nav .current_page_item>a{border-bottom:1px solid var(--ink);}
.lang{display:flex;gap:5px;font-size:11px;}
.lang .is-active{font-weight:600;}
.lang a{opacity:.5;}
.lang a:hover{opacity:1;}

.nav-toggle{display:none;width:34px;height:34px;border:0;background:none;flex-direction:column;justify-content:center;align-items:flex-end;gap:6px;padding:0;}
.nav-toggle span{display:block;height:1px;width:24px;background:var(--ink);transition:transform .3s,opacity .3s;}
.nav-toggle span{transform-origin:center;}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0;}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

/* =====================================================================
   GENERIC SECTION SCAFFOLD
   ===================================================================== */
.section{padding:90px 0;}
.section-tight{padding:60px 0;}
.two-col{display:flex;gap:48px;}
.two-col .col-label{flex:none;width:180px;}
.two-col .col-body{flex:1;}

.giant-title{
  font-family:var(--sans-en);
  font-weight:600;letter-spacing:-0.03em;color:var(--ink);
  line-height:0.95;
  font-size:clamp(52px,11vw,110px);
}
.page-intro{font-size:14px;color:var(--ink);line-height:2.2;margin-top:36px;max-width:640px;}

/* Media placeholder frames (差し替え前提) ------------------------------- */
.frame{position:relative;background:var(--dark);overflow:hidden;background-size:cover;background-position:center;}
.frame.paper{background:var(--paper-2);}
.frame.paper-3{background:var(--paper-3);}
.frame.desat{filter:saturate(0.8);}
.frame .frame-tag{
  position:absolute;top:14px;left:14px;z-index:2;
  font-family:var(--sans-en);font-size:9px;letter-spacing:0.22em;text-transform:uppercase;
  color:rgba(255,255,255,0.5);
}
.frame.paper .frame-tag,.frame.paper-3 .frame-tag{color:rgba(0,0,0,0.4);}
.frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.frame video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.frame .play{
  position:absolute;inset:0;margin:auto;width:60px;height:60px;border:1px solid rgba(255,255,255,0.4);
  border-radius:50%;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,0.6);font-size:16px;
}

/* =====================================================================
   TOP / FRONT PAGE
   ===================================================================== */
.hero-top{padding:clamp(48px,9vw,110px) 40px 0;}
.hero-logotype{width:100%;height:auto;}
.hero-logotype path{fill:var(--ink);}

.hero-movie{
  height:clamp(320px,44vw,620px);
  margin:7px 0 0;
  filter:saturate(0.65);
}
.hero-meta{padding:14px 40px 0;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.hero-meta span{font-family:var(--sans-en);font-size:12px;letter-spacing:0.06em;color:var(--ink-pure);}
/* SP: 1行に収める＋サブタイトル(— Seed Archive)は省略 */
@media (max-width:640px){
  .hero-meta{flex-wrap:nowrap;gap:12px;}
  .hero-meta .hm-sub{display:none;}
}

/* Statement */
.statement{padding:clamp(64px,10vw,120px) 40px 100px;display:flex;gap:72px;align-items:flex-start;}
.statement .col-main{flex:1;}
.statement .st-eyebrow{font-family:var(--sans-en);font-size:14px;letter-spacing:0.04em;margin-bottom:28px;}
.statement h2{
  font-size:clamp(34px,6.4vw,64px);font-weight:700;color:var(--ink);letter-spacing:0.01em;line-height:1.25;margin:0;
}
.statement .st-body{font-size:14px;color:var(--ink);line-height:2.3;margin-top:36px;max-width:520px;}
.statement .st-cta{margin-top:36px;}
.statement .st-side{flex:none;width:380px;}
.statement .st-side .frame{height:500px;background:var(--page);}
.statement .st-side .frame.contain{background-size:contain;background-repeat:no-repeat;background-color:#fff;}

/* Solution rows */
.solution{padding:0 40px 40px;}
.solution .lede{display:flex;justify-content:space-between;align-items:flex-start;border-top:1px solid var(--line-strong);padding-top:18px;margin-bottom:64px;gap:32px;}
.solution .lede p{font-size:13px;color:var(--ink);line-height:2.1;max-width:460px;margin:0;}
.sol-row{display:flex;align-items:flex-start;gap:28px;border-top:1px solid var(--line-mid);padding:42px 0;}
.sol-row:last-child{border-bottom:1px solid var(--line-mid);}
.sol-row .num{font-family:var(--sans-en);font-size:12px;color:var(--ink-pure);flex:none;width:40px;}
.sol-row .title{font-size:clamp(24px,3.6vw,38px);font-weight:700;color:var(--ink);letter-spacing:0.02em;line-height:1.35;flex:1;position:relative;top:-0.17em;}
.sol-row .desc{font-size:12px;color:var(--ink);line-height:1.9;margin-left:auto;width:460px;max-width:460px;flex:none;}

/* Photo strip */
.photo-strip{padding:40px;display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:20px;}
.photo-strip .ps-item{margin:0;display:flex;flex-direction:column;}
.photo-strip .frame{height:340px;}
.photo-strip .cap{font-family:var(--sans-en);font-size:12px;letter-spacing:0.06em;color:var(--ink-pure);margin-top:12px;}

/* News block on front */
.news-block{padding:80px 40px 110px;}
.news-block .head{display:flex;justify-content:space-between;border-top:1px solid var(--line-strong);padding-top:18px;margin-bottom:40px;gap:24px;}
.news-row{display:flex;gap:36px;align-items:baseline;padding:20px 0;border-bottom:1px solid var(--line);}
.news-row:hover .n-title{opacity:.55;}
.news-row .n-date{font-family:var(--sans-en);font-size:11px;color:var(--ink-pure);width:100px;flex:none;}
.news-row .n-cat{font-family:var(--sans-en);font-size:10px;letter-spacing:0.08em;color:var(--ink-pure);width:60px;flex:none;text-transform:uppercase;}
.news-row .n-title{font-size:16px;color:var(--ink);transition:opacity .2s;}

/* Giant word CTA */
.word-cta{padding:0 40px 90px;}
.word-cta .head{border-top:1px solid var(--line-strong);padding-top:16px;display:flex;justify-content:space-between;gap:24px;margin-bottom:10px;flex-wrap:wrap;}
.word-cta .head .desc{font-size:12px;color:var(--ink);max-width:460px;line-height:1.9;}
.word-cta .big{display:flex;align-items:baseline;gap:32px;flex-wrap:wrap;}
.word-cta .big .word{font-family:var(--sans-en);font-weight:600;letter-spacing:-0.03em;color:var(--ink);line-height:1;font-size:clamp(64px,15vw,150px);transition:opacity .2s;}
.word-cta a:hover .word{opacity:.6;}
.word-cta .big .arrow{font-family:var(--sans-en);font-weight:400;color:var(--ink);font-size:clamp(40px,8vw,80px);}
.word-cta .big.mid .word{font-size:clamp(48px,12vw,120px);}
.word-cta .big.mid .arrow{font-size:clamp(36px,7vw,70px);}

/* =====================================================================
   MISSION
   ===================================================================== */
.mission-lede{padding:90px 40px 70px;}
.mission-lede .eyebrow{margin-bottom:40px;}
.mission-lede h1{font-size:clamp(32px,5.4vw,54px);font-weight:700;color:var(--ink);letter-spacing:0.01em;line-height:1.45;margin:0;}
.mission-kv{height:clamp(320px,44vw,620px);margin:0;}
.mission-sec{padding:100px 40px;border-top:1px solid var(--line);}
.mission-sec.first{padding-top:110px;padding-bottom:80px;border-top:0;}
.mission-sec .col-label .label{white-space:nowrap;}
.mission-lead-para{font-size:clamp(20px,2.6vw,26px);font-weight:400;color:var(--ink);line-height:2.1;letter-spacing:0.01em;}
.mission-lead-para .indent{display:inline-block;width:120px;}
.sup{font-size:12px;color:var(--ink);vertical-align:super;}
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin-top:70px;}
.stat-grid .stat{border-top:1px solid var(--line-mid);padding-top:18px;display:flex;align-items:center;gap:18px;}
.stat-chart{flex:none;}
.stat-body{flex:1;}
.stat-bars{display:block;width:56px;height:30px;}
.stat-bars rect{fill:var(--ink);}
.stat-head{font-size:13px;font-weight:600;letter-spacing:0.01em;color:var(--ink);line-height:1.5;margin-bottom:8px;}
.stat .num{font-family:var(--sans-en);font-size:clamp(32px,4vw,46px);font-weight:600;letter-spacing:-0.02em;color:var(--ink);line-height:1;}
.stat .num small{font-size:15px;font-weight:400;}
.stat .cap{font-size:11px;color:var(--muted);margin-top:10px;line-height:1.7;}
.mission-body{font-size:15px;color:var(--ink);line-height:2.4;max-width:760px;}
.footnotes{margin-top:44px;font-size:10px;color:var(--ink);line-height:2.1;max-width:760px;}
.approach-head{font-size:clamp(22px,3.4vw,32px);font-weight:700;color:var(--ink);line-height:1.9;letter-spacing:0.01em;max-width:800px;}
.approach-body{font-size:14px;color:var(--ink);line-height:2.3;max-width:640px;margin-top:40px;}

/* =====================================================================
   NEWS (archive + filters)
   ===================================================================== */
.news-hero{padding:90px 40px 0;}
.news-hero .eyebrow{margin-bottom:36px;}
.news-tabs{display:flex;gap:26px;margin-top:56px;border-bottom:1px solid var(--line-strong);padding-bottom:16px;flex-wrap:wrap;}
.news-tabs a{font-family:var(--sans-en);font-size:12px;color:var(--ink);padding-bottom:3px;}
.news-tabs a.is-active{border-bottom:1px solid var(--ink);}
.news-list{padding:10px 40px 80px;}
.news-item{display:flex;gap:36px;align-items:center;padding:28px 0;border-bottom:1px solid var(--line);}
.news-item:hover .ni-title{opacity:.55;}
.news-item .ni-thumb{width:150px;height:96px;flex:none;background:var(--paper-2);background-size:cover;background-position:center;}
.news-item .ni-thumb.dark{background:var(--dark);}
.news-item .ni-date{font-family:var(--sans-en);font-size:11px;color:var(--ink-pure);width:100px;flex:none;}
.news-item .ni-cat{font-family:var(--sans-en);font-size:10px;letter-spacing:0.08em;color:var(--ink-pure);width:60px;flex:none;text-transform:uppercase;}
.news-item .ni-title{font-size:17px;color:var(--ink);transition:opacity .2s;}
.load-more{margin-top:48px;}

/* Single article */
.article{padding-top:70px;padding-bottom:100px;}
.article .crumbs{font-family:var(--sans-en);font-size:12px;letter-spacing:0.05em;color:var(--muted-2);margin-bottom:30px;}
.article .crumbs a:hover{color:var(--ink);}
.article .meta{display:flex;gap:20px;align-items:center;font-family:var(--sans-en);font-size:11px;letter-spacing:0.06em;color:var(--ink-pure);margin-bottom:22px;}
.article h1{font-size:clamp(28px,4vw,42px);font-weight:700;line-height:1.5;letter-spacing:0.01em;margin:0 0 40px;}
.article .featured{margin:0 0 50px;height:clamp(240px,36vw,480px);}
.article-body{font-size:15px;line-height:2.2;color:var(--ink);max-width:760px;}
.article-body h2{font-size:26px;font-weight:700;margin:56px 0 20px;line-height:1.6;}
.article-body h3{font-size:20px;font-weight:700;margin:40px 0 16px;}
.article-body p{margin:0 0 24px;}
.article-body img{margin:32px 0;}
.article-body a{border-bottom:1px solid var(--line-strong);}
.article-body ul{list-style:disc;padding-left:1.4em;margin:0 0 24px;}
.article-body ol{list-style:decimal;padding-left:1.6em;margin:0 0 24px;}
.article-body blockquote{border-left:2px solid var(--ink);padding-left:24px;margin:32px 0;color:var(--muted);}
.post-nav{display:flex;justify-content:space-between;gap:20px;margin-top:70px;border-top:1px solid var(--line-strong);padding-top:24px;font-family:var(--sans-en);font-size:12px;letter-spacing:0.04em;}
.post-nav a:hover{opacity:.55;}

/* =====================================================================
   MUGEN FARM
   ===================================================================== */
.farm-lede{padding:90px 40px 70px;}
.farm-lede h1{font-size:clamp(30px,5vw,50px);font-weight:700;color:var(--ink);letter-spacing:0.01em;line-height:1.5;margin:0;}
.farm-movie{height:clamp(320px,44vw,620px);margin:0;display:flex;align-items:center;justify-content:center;}
.farm-cap{padding:14px 40px 0;}
.farm-cap span{font-family:var(--sans-en);font-size:12px;letter-spacing:0.06em;color:var(--ink-pure);}

/* PR film（コンテンツ幅内・中央寄せ／フルワイドにしない） */
.film-block{max-width:1000px;margin:0 auto;padding:clamp(40px,5vw,64px) 40px clamp(40px,5vw,64px);}
.film-movie{aspect-ratio:16/9;height:auto;margin:0;background:#0b0b0b;}
.film-video{background:#0b0b0b;}
.film-block .film-cap{padding:14px 0 0;}
.film-cap span{font-family:var(--sans-en);font-size:12px;letter-spacing:0.06em;color:var(--ink-pure);}

.gallery{padding:90px 40px 40px;}
.gallery .head{border-top:1px solid var(--line-strong);padding-top:18px;margin-bottom:44px;}
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:230px;gap:20px;}
.gallery-grid .frame{background-size:cover;background-position:center;}
.gallery-grid .frame:nth-child(1){grid-column:span 2;grid-row:span 2;}
.research{padding:100px 40px;border-top:1px solid var(--line);}
.research .r-head{display:flex;gap:48px;margin-bottom:70px;}
.research .r-head h2{font-size:clamp(26px,3.6vw,38px);font-weight:700;color:var(--ink);line-height:1.7;margin:0;}
.research .r-body{display:flex;gap:48px;}
.research .r-subject{flex:none;width:260px;}
.research .r-subject .frame{height:420px;width:100%;}
.research .r-subject .cap{font-family:var(--sans-en);font-size:12px;letter-spacing:0.06em;color:var(--ink-pure);margin-top:12px;}
.research .r-grid{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:56px 64px;}
.research .r-grid h3{font-family:var(--sans-en);font-size:14px;letter-spacing:0.04em;color:var(--ink-pure);margin:0 0 18px;font-weight:400;}
.research .r-grid p{font-size:13px;color:var(--ink);line-height:2.2;margin:0;}
.research .r-grid .r-notes{align-self:end;font-size:10px;color:var(--ink);line-height:2;}

/* =====================================================================
   ABOUT
   ===================================================================== */
.about-hero{padding:90px 40px 80px;}
.about-hero .giant-title{letter-spacing:0.02em;line-height:1.15;}
.about-hero .eyebrow{margin-bottom:40px;}
.mvv{padding:0 40px 90px;}
.mvv .mvv-row{display:flex;gap:48px;padding-top:18px;margin-bottom:64px;}
.mvv .mvv-row.first{border-top:1px solid var(--line-strong);}
.mvv .mvv-row.rest{border-top:1px solid var(--line);}
.mvv .mvv-row:last-child{margin-bottom:0;}
.mvv h2{font-size:clamp(20px,2.6vw,26px);font-weight:700;color:var(--ink);line-height:1.8;margin:0;}
.mvv .m-desc{font-size:13px;color:var(--ink);line-height:2.2;margin-top:22px;max-width:640px;}
.mvv .vision{font-family:var(--sans-jp);font-size:clamp(20px,2.6vw,26px);font-weight:700;color:var(--ink);line-height:1.8;max-width:720px;}
.values-row{display:flex;align-items:baseline;gap:24px;padding:20px 0;border-bottom:1px solid var(--line);}
.values-row .v-num{font-family:var(--sans-en);font-size:12px;color:var(--ink-pure);width:36px;flex:none;}
.values-row .v-title{font-size:20px;font-weight:700;color:var(--ink);flex:none;width:260px;}
.values-row .v-desc{font-size:12px;color:var(--ink);line-height:1.9;}
.message{padding:90px 40px;border-top:1px solid var(--line);display:flex;gap:64px;}
.message .m-portrait{flex:none;width:380px;}
.message .m-portrait .frame{height:480px;}
.message .m-portrait .cap{font-family:var(--sans-en);font-size:12px;letter-spacing:0.06em;color:var(--ink-pure);margin-top:12px;}
.message .m-body{flex:1;}
.message .m-body h2{font-size:clamp(24px,3vw,30px);font-weight:700;color:var(--ink);line-height:1.8;margin:0;}
.message .m-text{font-size:13px;color:var(--ink);line-height:2.3;margin-top:32px;}
.message .m-sign{font-size:13px;color:var(--ink);margin-top:30px;font-weight:700;}
.profile{padding:90px 40px 100px;border-top:1px solid var(--line);display:flex;gap:48px;}
.profile-table .p-row{display:flex;padding:18px 0;border-top:1px solid var(--line);}
.profile-table .p-row.first{border-top:1px solid var(--line-mid);}
.profile-table .p-key{width:190px;flex:none;font-family:var(--sans-en);font-size:11px;letter-spacing:0.06em;color:var(--ink-pure);}
.profile-table .p-val{font-size:14px;color:var(--ink);}

/* =====================================================================
   CONTACT
   ===================================================================== */
.contact-hero{padding:90px 40px 70px;}
.contact-hero .eyebrow{margin-bottom:40px;}
.contact-grid{padding:20px 40px 100px;display:flex;gap:80px;}
.contact-form-col{flex:1.5;}
.contact-side{flex:1;}
.form-fields{display:flex;flex-direction:column;gap:44px;}
.field label,.field .field-label{display:block;font-family:var(--sans-en);font-size:11px;letter-spacing:0.06em;color:var(--ink-pure);margin-bottom:14px;}
.field input[type=text],.field input[type=email]{
  width:100%;height:40px;border:0;border-bottom:1px solid var(--line-strong);
  background:transparent;font:inherit;color:var(--ink);padding:0 2px 6px;
}
.field textarea{
  width:100%;min-height:120px;border:0;border-bottom:1px solid var(--line-strong);
  background:transparent;font:inherit;color:var(--ink);padding:6px 2px;resize:vertical;
}
.field input:focus,.field textarea:focus{outline:none;border-bottom-color:var(--ink);}
.chips{display:flex;gap:12px;flex-wrap:wrap;}
.chip{position:relative;}
.chip input{position:absolute;opacity:0;inset:0;cursor:pointer;}
.chip span{display:inline-block;font-size:12px;color:var(--ink);border:1px solid var(--line-mid);border-radius:100px;padding:8px 20px;transition:border-color .2s,background .2s;}
.chip input:checked+span{border-color:var(--ink);background:var(--ink);color:#fff;}
.chip:first-child span{border-color:var(--ink);}
.form-submit{display:flex;align-items:baseline;gap:20px;margin-top:10px;border:0;background:none;padding:0;}
.form-submit .word{font-family:var(--sans-en);font-size:clamp(32px,5vw,44px);font-weight:600;letter-spacing:-0.02em;color:var(--ink);border-bottom:2px solid var(--ink);padding-bottom:6px;transition:opacity .2s;}
.form-submit:hover .word{opacity:.6;}
.form-submit .arrow{font-family:var(--sans-en);font-size:30px;color:var(--ink);}
.contact-side .box{border-top:1px solid var(--line-strong);padding-top:18px;}
.contact-side .box .eyebrow{margin-bottom:26px;}
.contact-side .k{font-family:var(--sans-en);font-size:11px;letter-spacing:0.06em;color:var(--ink-pure);margin-bottom:10px;}
.contact-side .v{font-family:var(--sans-en);font-size:17px;color:var(--ink);}
.contact-side .note{font-size:12px;color:var(--ink);line-height:2;margin-top:26px;}
.form-notice{padding:16px 20px;margin:0 40px 24px;border:1px solid var(--line-mid);font-size:13px;line-height:1.9;}
.form-notice.ok{border-color:var(--ink);}
.form-notice.err{border-color:#a33;color:#a33;}

/* =====================================================================
   RECRUIT
   ===================================================================== */
.recruit-lede{padding:90px 40px 60px;}
.recruit-lede h1{font-size:clamp(32px,5.2vw,52px);font-weight:700;color:var(--ink);letter-spacing:0.01em;line-height:1.5;margin:0;}
.recruit-hero-img{height:clamp(280px,32vw,440px);filter:saturate(0.6);}
.recruit-sec{padding:90px 40px;border-bottom:1px solid var(--line);}
.recruit-sec .r-head{display:flex;gap:48px;margin-bottom:52px;}
.recruit-sec .r-head .r-intro{flex:1;font-size:13px;color:var(--ink);line-height:2.1;}
.recruit-about-links{display:flex;gap:36px;margin-top:36px;flex-wrap:wrap;}
.note-box{margin-top:28px;border:1px dashed var(--muted-3);padding:14px 18px;font-size:11px;color:var(--muted-2);line-height:1.9;max-width:640px;}
.job-list{display:flex;flex-direction:column;}
.job-row{display:flex;align-items:center;gap:28px;border-top:1px solid var(--line-mid);padding:28px 0;transition:opacity .2s;}
.job-list .job-row:last-child{border-bottom:1px solid var(--line-mid);}
.job-row:hover{opacity:.6;}
.job-row .j-num{font-family:var(--sans-en);font-size:12px;color:var(--muted-2);flex:none;width:40px;}
.job-row .j-main{flex:1;}
.job-row .j-title{font-size:clamp(20px,2.6vw,26px);font-weight:700;color:var(--ink);}
.job-row .j-arrow{font-family:var(--sans-en);font-size:22px;color:var(--ink);flex:none;}
.tags{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap;}
.tag{font-size:11px;color:var(--ink);border:1px solid rgba(0,0,0,0.3);border-radius:100px;padding:5px 14px;}
.work-imgs{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:64px;}
.work-imgs .frame{height:260px;}
.day-flow{display:flex;gap:48px;margin-bottom:64px;}
.day-flow .df-label{flex:none;width:180px;font-family:var(--sans-en);font-size:11px;letter-spacing:0.06em;color:var(--muted-2);}
.day-flow .df-list{flex:1;max-width:720px;}
.df-row{display:flex;gap:24px;border-top:1px solid var(--line);padding:16px 0;}
.df-row:last-child{border-bottom:1px solid var(--line);}
.df-row .t{font-family:var(--sans-en);font-size:13px;color:var(--ink);width:70px;flex:none;}
.df-row .d{font-size:13px;color:var(--ink);}
.voices{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.voice{border:1px solid var(--line);padding:32px;}
.voice .v-head{display:flex;gap:20px;align-items:center;margin-bottom:22px;}
.voice .avatar{width:64px;height:64px;border-radius:50%;background:var(--paper-2);flex:none;background-size:cover;}
.voice .v-name{font-size:14px;font-weight:700;color:var(--ink);}
.voice .v-role{font-size:11px;color:var(--muted-2);margin-top:4px;}
.voice .v-text{font-size:13px;color:var(--ink);line-height:2.1;}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:56px;}
.step{border-top:1px solid var(--line-strong);padding-top:18px;}
.step .s-num{font-family:var(--sans-en);font-size:13px;color:var(--muted-2);}
.step .s-title{font-size:16px;font-weight:700;color:var(--ink);margin-top:10px;}
.step .s-desc{font-size:12px;color:var(--ink);line-height:1.9;margin-top:10px;}
.entry-cta{display:flex;align-items:center;gap:40px;flex-wrap:wrap;}
.entry-cta .big{display:flex;align-items:baseline;gap:24px;}
.entry-cta .word{font-family:var(--sans-en);font-size:clamp(48px,9vw,80px);font-weight:600;letter-spacing:-0.03em;color:var(--ink);line-height:1;}
.entry-cta .arrow{font-family:var(--sans-en);font-size:clamp(32px,6vw,48px);color:var(--ink);}
.entry-cta .e-note{font-size:12px;color:var(--ink);line-height:2;}
.faq{padding:90px 40px 100px;}
.faq .f-inner{display:flex;gap:48px;}
.faq .f-list{flex:1;max-width:760px;}
.faq-item{border-top:1px solid var(--line-mid);}
.faq-item:last-of-type{border-bottom:1px solid var(--line-mid);}
.faq-q{width:100%;text-align:left;border:0;background:none;padding:22px 0;display:flex;justify-content:space-between;gap:24px;align-items:center;}
.faq-q .q-text{font-size:14px;font-weight:500;color:var(--ink);}
.faq-q .q-icon{font-family:var(--sans-en);font-size:18px;color:var(--ink);flex:none;transition:transform .3s;}
.faq-q[aria-expanded="true"] .q-icon{transform:rotate(45deg);}
.faq-a{max-height:0;overflow:hidden;transition:max-height .35s ease;}
.faq-a .inner{padding:0 0 24px;font-size:13px;color:var(--ink);line-height:2.1;max-width:680px;}

/* Recruit job detail */
.job-detail-hero{padding:80px 40px 60px;}
.job-detail-hero .crumbs{font-family:var(--sans-en);font-size:12px;letter-spacing:0.05em;color:var(--muted-2);margin-bottom:30px;}
.job-detail-hero .crumbs .cur{color:var(--ink);}
.job-detail-hero h1{font-size:clamp(30px,4.4vw,46px);font-weight:700;color:var(--ink);line-height:1.4;margin:0;}
.job-detail-hero .tags{margin-top:20px;}
.job-spec{padding:0 40px 80px;display:flex;gap:48px;}
.spec-table{flex:1;}
.spec-row{display:flex;padding:20px 0;border-top:1px solid var(--line);}
.spec-row.first{border-top:1px solid var(--line-mid);}
.spec-row:last-child{border-bottom:1px solid var(--line-mid);}
.spec-row .s-key{width:190px;flex:none;font-size:12px;color:var(--muted-2);}
.spec-row .s-val{font-size:13px;color:var(--ink);line-height:2;}

/* =====================================================================
   FOOTER
   ===================================================================== */
.site-footer{background:var(--footer-bg);color:var(--footer-muted);font-family:var(--sans-en);overflow:hidden;}
.site-footer .f-top{display:flex;justify-content:space-between;gap:40px;padding:64px 40px 40px;flex-wrap:wrap;}
.site-footer .f-about{max-width:280px;display:flex;flex-direction:column;}
.site-footer .f-about .f-tag{font-size:10px;letter-spacing:0.24em;text-transform:uppercase;color:var(--footer-heading);margin-bottom:20px;}
.site-footer .f-about .f-desc{font-size:12px;color:var(--footer-text);line-height:2;}
.site-footer .f-cols{display:flex;gap:72px;flex-wrap:wrap;}
.site-footer .f-col h3{font-size:10px;letter-spacing:0.22em;text-transform:uppercase;color:var(--footer-heading);margin:0 0 18px;font-weight:400;}
.site-footer .f-col ul{display:flex;flex-direction:column;gap:11px;font-size:12px;letter-spacing:0.1em;color:var(--footer-link);text-transform:uppercase;}
.site-footer .f-col a:hover{color:#fff;}
.site-footer .f-col-address{flex:1;}
.site-footer .f-office{max-width:340px;font-size:12px;color:var(--footer-text);line-height:1.9;text-transform:none;letter-spacing:0;}
.site-footer .f-addr{display:block;margin-bottom:16px;color:var(--footer-text);transition:color .2s;}
.site-footer .f-addr:last-child{margin-bottom:0;}
.site-footer .f-addr:hover{color:#fff;}
.site-footer .f-addr-label{display:block;color:var(--footer-heading);font-size:10px;letter-spacing:0.16em;text-transform:uppercase;margin-bottom:3px;}
.site-footer .f-word{padding:0;margin:0 0 30px;}
.site-footer .f-word svg{width:clamp(150px,22vw,260px);height:auto;}
.site-footer .f-word path{fill:var(--footer-heading);}
.site-footer .f-bottom{display:flex;justify-content:space-between;align-items:center;padding:24px 40px 30px;font-size:10px;letter-spacing:0.14em;color:var(--footer-heading);text-transform:uppercase;gap:16px;flex-wrap:wrap;}
.site-footer .f-bottom-right{display:flex;align-items:center;gap:22px;}
.site-footer .f-ig{display:inline-flex;color:var(--footer-heading);transition:color .2s;}
.site-footer .f-ig:hover{color:#fff;}

/* =====================================================================
   404 / SEARCH / MISC
   ===================================================================== */
.simple-page{padding-top:120px;padding-bottom:120px;min-height:50vh;}
.simple-page h1{font-family:var(--sans-en);font-size:clamp(48px,10vw,110px);font-weight:600;letter-spacing:-0.03em;line-height:1;margin:0 0 24px;}
.simple-page p{font-size:14px;color:var(--ink);line-height:2.2;max-width:520px;}
.pagination{display:flex;gap:14px;margin-top:48px;font-family:var(--sans-en);font-size:13px;flex-wrap:wrap;}
.pagination .page-numbers{padding:6px 12px;border:1px solid var(--line-mid);}
.pagination .current{background:var(--ink);color:#fff;border-color:var(--ink);}

/* Generic page fallback (page.php) */
.page-generic{padding-top:70px;padding-bottom:100px;}
.page-generic h1{font-size:clamp(30px,5vw,54px);font-weight:700;line-height:1.4;margin:0 0 40px;}
.page-generic .entry{font-size:15px;line-height:2.2;max-width:760px;}
.page-generic .entry h2{font-size:26px;margin:48px 0 18px;}
.page-generic .entry p{margin:0 0 24px;}

/* =====================================================================
   RESPONSIVE
   ===================================================================== */
@media (max-width:900px){
  :root{--gutter:24px;}
  .site-header{padding:16px 24px;}
  .header-right{gap:16px;}
  .nav-toggle{display:flex;}
  .main-nav{
    position:fixed;inset:57px 0 auto 0;background:#fff;
    max-height:0;overflow:hidden;transition:max-height .35s ease;
  }
  .main-nav.open{max-height:70vh;border-bottom:1px solid var(--line);}
  .main-nav ul{flex-direction:column;gap:0;padding:8px 24px 20px;}
  .main-nav li{border-bottom:1px solid var(--line);}
  .main-nav a{display:block;padding:16px 0;font-size:14px;letter-spacing:0.1em;}

  .statement{flex-direction:column;gap:40px;padding:64px 24px 70px;}
  .statement .st-side{width:100%;}
  /* SP: 枠を図版の縦横比に合わせ、上下の余白を詰める */
  .statement .st-side .frame{height:auto;aspect-ratio:1145/1374;max-height:66vh;}
  .sol-row{flex-wrap:wrap;gap:12px 20px;}
  .sol-row .title{flex:1 1 100%;top:0;}
  .sol-row .desc{margin-left:0;width:auto;max-width:100%;min-width:0;flex:1 1 100%;}
  .photo-strip{grid-template-columns:1fr;padding-left:24px;padding-right:24px;}
  .photo-strip .frame{height:auto;aspect-ratio:3/2;}
  .two-col{flex-direction:column;gap:24px;}
  .two-col .col-label{width:auto;}
  .mission-sec,.research,.message,.profile,.recruit-sec,.faq .f-inner{}
  .mission-sec{padding:70px 24px;}
  .mission-lede{padding:60px 24px 50px;}
  .mission-lede h1{font-size:30px;}
  .mission-kv{margin:0;height:auto;aspect-ratio:3/2;}
  .farm-movie{margin:0;height:auto;aspect-ratio:3/2;}
  .film-block{padding-left:24px;padding-right:24px;padding-top:56px;}
  .farm-lede{padding:60px 24px 50px;}
  .about-hero{padding:52px 24px 28px;}
  .mvv{padding:0 24px 60px;}
  .stat-grid{grid-template-columns:1fr;gap:28px;}
  .mission-lead-para .indent{display:none;}
  .research .r-head,.research .r-body,.message,.profile,.day-flow,.faq .f-inner,.job-spec,.contact-grid{flex-direction:column;gap:32px;}
  .research .r-subject{width:100%;}
  .research .r-grid{grid-template-columns:1fr;gap:36px;}
  .research .r-subject .frame{height:300px;}
  .message .m-portrait,.statement .st-side,.spec-row .s-key,.profile-table .p-key{width:100%;}
  .gallery-grid{grid-template-columns:1fr 1fr;grid-auto-rows:180px;}
  .work-imgs{grid-template-columns:1fr 1fr;}
  .voices{grid-template-columns:1fr;}
  .steps{grid-template-columns:1fr 1fr;}
  .values-row{flex-wrap:wrap;gap:8px 16px;}
  .values-row .v-title{width:auto;flex:1 1 100%;}
  .spec-row,.profile-table .p-row{flex-direction:column;gap:6px;}
  .spec-row .s-key,.profile-table .p-key{margin-bottom:2px;}
  .mvv .mvv-row{flex-direction:column;gap:16px;}
  .news-item{flex-wrap:wrap;gap:8px 20px;}
  .news-item .ni-thumb{width:100%;height:180px;order:-1;}
  .news-row{flex-wrap:wrap;gap:4px 16px;}
  .news-row .n-date{width:auto;}
  .news-row .n-cat{width:auto;}
  .news-row .n-title{flex:1 1 100%;font-size:15px;line-height:1.7;}
  .hero-top{padding:clamp(40px,10vw,80px) 24px 0;}
  .hero-meta,.farm-cap,.news-block,.word-cta,.solution{padding-left:24px;padding-right:24px;}
  /* flex セクションヘッド内の長文が縮まず横はみ出しするのを防ぐ */
  .solution .lede,.word-cta .head,.news-block .head,.gallery .head{flex-wrap:wrap;}
  .solution .lede>*,.word-cta .head>*,.news-block .head>*{min-width:0;}
  .word-cta .head .desc,.solution .lede p,.word-cta .head .label{max-width:100%;}
  .site-footer .f-top{flex-direction:column;gap:40px;padding-left:24px;padding-right:24px;}
  .site-footer .f-cols{gap:20px;}
  .site-footer .f-office{font-size:11px;}
}
@media (max-width:560px){
  .photo-strip,.gallery-grid,.work-imgs,.steps{grid-template-columns:1fr;}
  .gallery-grid .frame:nth-child(1){grid-column:span 1;grid-row:span 1;}
  .contact-grid{padding:20px 24px 80px;}
  .chips{gap:8px;}
}

/* =====================================================================
   SCROLL REVEAL（表示領域でふわっと表示／仕切り線を描画）
   html.js が付いている時のみ隠す＝JS無効・reduced-motion では通常表示。
   ===================================================================== */
@media (prefers-reduced-motion: no-preference){
  html.js :is(
    #main h1,#main h2,#main h3,#main .giant-title,#main .hero-logotype,
    #main .frame,#main .page-intro,#main .st-body,
    #main .sol-row,#main .stat,#main .news-item,#main .news-row,
    #main .values-row,#main .voice,#main .step,#main .job-row,
    #main .df-row,#main .faq-item,#main .spec-row,#main .profile-table .p-row,
    #main .word-cta .big,.site-footer .f-top,.site-footer .f-word
  ){
    opacity:0;transform:translateY(18px);
    transition:opacity .7s cubic-bezier(.16,1,.3,1), transform .7s cubic-bezier(.16,1,.3,1);
  }
  html.js :is(
    #main h1,#main h2,#main h3,#main .giant-title,#main .hero-logotype,
    #main .frame,#main .page-intro,#main .st-body,
    #main .sol-row,#main .stat,#main .news-item,#main .news-row,
    #main .values-row,#main .voice,#main .step,#main .job-row,
    #main .df-row,#main .faq-item,#main .spec-row,#main .profile-table .p-row,
    #main .word-cta .big,.site-footer .f-top,.site-footer .f-word
  ).is-in{
    opacity:1;transform:none;
  }

  /* KV(Mission/Farm): 最初は真っ黒 → 表示領域で黒が引いて写真が浮かび上がる */
  html.js #main .mission-kv,
  html.js #main .farm-movie{opacity:1;transform:none;}
  html.js #main .mission-kv::before,
  html.js #main .farm-movie::before{
    content:"";position:absolute;inset:0;background:#000;z-index:2;
    pointer-events:none;opacity:1;transition:opacity 1.4s ease;
  }
  html.js #main .mission-kv.is-in::before,
  html.js #main .farm-movie.is-in::before{opacity:0;}

  /* 仕切り線: 元の罫線色・向きをJSが読み取り、左→右に描画 */
  .reveal-line{position:relative;}
  .reveal-line::after{
    content:"";position:absolute;left:0;right:0;height:1px;
    background:var(--rl-color,var(--line-strong));
    transform:scaleX(0);transform-origin:left;
    transition:transform .9s cubic-bezier(.16,1,.3,1);
    pointer-events:none;
  }
  .reveal-line.rl-top::after{top:-1px;}
  .reveal-line.rl-bottom::after{bottom:-1px;}
  .reveal-line.is-in::after{transform:scaleX(1);}

  /* Mission stats: ミニ棒グラフが表示領域で下から伸びる（左→右に時差） */
  html.js #main .stat-bars rect{
    transform:scaleY(0);transform-box:fill-box;transform-origin:bottom;
    transition:transform .7s cubic-bezier(.16,1,.3,1);
    transition-delay:calc(var(--bi,0) * .09s + .15s);
  }
  html.js #main .stat.is-in .stat-bars rect{transform:scaleY(1);}

}

/* =====================================================================
   SPLASH / PRELOADER（TOPのみ・小さな%＋左→右のプログレスバー）
   ===================================================================== */
html.splash-lock, body.splash-lock{ overflow:hidden; }
.splash{
  position:fixed; inset:0; z-index:9999;
  background:var(--page); color:var(--ink);
  font-family:var(--sans-en);
  display:flex; align-items:center; justify-content:center;
  transition:opacity .7s ease;
}
.splash.is-done{ opacity:0; pointer-events:none; }
.splash-inner{ width:min(360px,64vw); display:flex; flex-direction:column; align-items:stretch; gap:12px; }
.splash-head{ display:flex; justify-content:space-between; align-items:baseline; gap:16px; }
.splash-name{ font-family:var(--sans-en); font-size:12px; letter-spacing:0.14em; color:var(--ink-pure); white-space:nowrap; }
.splash-pct{
  font-family:var(--sans-en); font-size:12px; letter-spacing:0.08em; color:var(--ink-pure);
  font-variant-numeric:tabular-nums; font-feature-settings:"tnum" 1;
}
/* 四角セグメントのデジタル・プログレスバー（左から黒が灯る・余白狭め） */
.splash-bar{
  width:100%; height:6px; position:relative; overflow:hidden;
  background-image:repeating-linear-gradient(90deg, rgba(0,0,0,0.16) 0 3px, transparent 3px 5px);
}
.splash-bar span{
  display:block; height:100%; width:0;
  background-image:repeating-linear-gradient(90deg, var(--ink) 0 3px, transparent 3px 5px);
}

@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important;}
}
