:root {
  --ink: #222522;
  --paper: #f5f2eb;
  --white: #fbfaf7;
  --forest: #173c32;
  --forest-2: #284f42;
  --sakura: #c8878d;
  --sakura-light: #ead0d2;
  --line: #c8c5bc;
  --muted: #777970;
  --dark: #0f1f1a;
  --serif: "Yu Mincho", "Hiragino Mincho ProN", "Hiragino Mincho Pro", "Noto Serif JP", serif;
  --sans: -apple-system, BlinkMacSystemFont, "Yu Gothic", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
  --max: 1180px;
  --header-height: 84px;
  --video-poster: url("../media/eca7b731b108.jpg");
  --photo-autumn: url("../media/4734e4da844e.jpg");
  --photo-dragon: url("../media/764393ca0773.jpg");
  --sakura-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120'%3E%3Cg fill='none' stroke='black' stroke-width='4'%3E%3Cpath d='M60 60 C49 52 42 43 45 33 C48 23 55 22 60 29 C65 22 72 23 75 33 C78 43 71 52 60 60 Z'/%3E%3Cpath d='M60 60 C49 52 42 43 45 33 C48 23 55 22 60 29 C65 22 72 23 75 33 C78 43 71 52 60 60 Z' transform='rotate(72 60 60)'/%3E%3Cpath d='M60 60 C49 52 42 43 45 33 C48 23 55 22 60 29 C65 22 72 23 75 33 C78 43 71 52 60 60 Z' transform='rotate(144 60 60)'/%3E%3Cpath d='M60 60 C49 52 42 43 45 33 C48 23 55 22 60 29 C65 22 72 23 75 33 C78 43 71 52 60 60 Z' transform='rotate(216 60 60)'/%3E%3Cpath d='M60 60 C49 52 42 43 45 33 C48 23 55 22 60 29 C65 22 72 23 75 33 C78 43 71 52 60 60 Z' transform='rotate(288 60 60)'/%3E%3C/g%3E%3C/svg%3E");
}

* { box-sizing: border-box; }
html {
  scroll-behavior: smooth;
  scroll-padding-top: var(--header-height);
  background: var(--paper);
  text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: var(--sans);
  font-feature-settings: "palt" 1;
  line-height: 1.9;
  letter-spacing: .025em;
  line-break: strict;
  word-break: normal;
  overflow-wrap: normal;
  overflow-x: clip;
}
a { color: inherit; }
img { display: block; max-width: 100%; }
button, summary { font: inherit; }
.brand:focus-visible, .company-brand:focus-visible, .footer-brand:focus-visible, .related-company-link:focus-visible,
.group-company-next:focus-visible, .footer-group-links a:focus-visible,
.inline-action:focus-visible, .page-top:focus-visible {
  outline: 2px solid var(--sakura);
  outline-offset: 5px;
}
.jp, p, dd, li, summary, .news-title { line-break: strict; word-break: auto-phrase; overflow-wrap: normal; text-wrap: pretty; }
.keep, .atom, .term { display: inline-block; white-space: nowrap; }
/* Body-copy line breaking.
   hne_lines_html() wraps each author-entered line in .keep. Headings keep the
   original no-wrap treatment, while paragraph lines may wrap inside their own
   line box. On desktop/tablet, balance short copy so a tiny orphan fragment is
   not left on the final line. Proper nouns in .term remain unbroken. */
p.jp > .keep {
  display: inline-block;
  max-width: 100%;
  white-space: normal;
  text-wrap: pretty;
  text-wrap: balance;
  vertical-align: top;
}
.only-pc { display: block; }
.only-sp { display: none; }

/* Header: the supplied transparent logo sits directly on a quiet white band. */
.header {
  position: fixed;
  inset: 0 0 auto;
  z-index: 40;
  height: var(--header-height);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  padding: 0 max(2.6vw, 28px);
  color: var(--forest);
  background: rgba(251, 250, 247, .97);
  border-bottom: 1px solid rgba(23, 60, 50, .13);
  box-shadow: 0 5px 24px rgba(15, 31, 26, .055);
}
.brand { display: flex; align-items: center; flex: 0 1 auto; min-width: 0; text-decoration: none; }
.header-logo-lockup { display: flex; align-items: center; gap: 14px; min-width: 0; }
.header-logo-lockup .logo-symbol { flex: 0 0 auto; width: 118px; height: auto; }
.header-logo-lockup .logo-wordmark { flex: 0 0 auto; width: 300px; height: auto; }
.nav { display: flex; align-items: center; gap: 19px; font-size: 12px; font-weight: 600; letter-spacing: .075em; white-space: nowrap; }
.nav a { position: relative; text-decoration: none; }
.nav a:not(:last-child)::after {
  content: "";
  position: absolute;
  right: 100%;
  bottom: -6px;
  left: 0;
  height: 1px;
  background: currentColor;
  transition: right .3s ease;
}
.nav a:not(:last-child):hover::after, .nav a:not(:last-child):focus-visible::after { right: 0; }
.nav a:last-child { padding: 10px 16px; color: #fff; background: var(--forest); border: 1px solid var(--forest); }
.nav a:last-child:hover, .nav a:last-child:focus-visible { color: var(--forest); background: transparent; }
.menu-btn {
  display: none;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  padding: 0;
  color: var(--forest);
  background: transparent;
  border: 0;
  cursor: pointer;
}
.menu-btn::before, .menu-btn::after {
  content: "";
  position: absolute;
  width: 26px;
  height: 1px;
  margin-left: -13px;
  background: currentColor;
  transition: transform .25s ease, top .25s ease;
}
.menu-btn::before { top: 16px; }
.menu-btn::after { top: 27px; }
.menu-btn[aria-expanded="true"]::before { top: 22px; transform: rotate(45deg); }
.menu-btn[aria-expanded="true"]::after { top: 22px; transform: rotate(-45deg); }

/* First view: a real local MP4. Poster remains as the no-playback fallback. */
.hero {
  position: relative;
  height: calc(100svh - var(--header-height));
  min-height: 620px;
  margin-top: var(--header-height);
  overflow: hidden;
  color: #fff;
  background: #152821;
}
.hero-media { position: absolute; inset: 0; overflow: hidden; background: #152821 var(--video-poster) center / cover no-repeat; }
.hero-video { width: 100%; height: 100%; object-fit: cover; object-position: center; background: transparent; }
.hero-media.video-unavailable .hero-video { visibility: hidden; }
.hero-shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(10, 30, 24, .46), rgba(10, 30, 24, .04) 65%), linear-gradient(0deg, rgba(8, 21, 17, .58), transparent 43%);
}
.hero-copy { position: absolute; z-index: 3; bottom: 10vh; left: max(5vw, 44px); max-width: 1120px; }
.hero-place { margin-bottom: 24px; font: 500 11px/1.4 Arial, sans-serif; letter-spacing: .27em; }
.hero h1 { margin: 0; font-family: var(--serif); font-size: clamp(46px, 5.7vw, 82px); font-weight: 500; line-height: 1.25; letter-spacing: .025em; text-shadow: 0 1px 18px rgba(0, 0, 0, .18); }
.hero h1 span { display: block; white-space: nowrap; }
.hero-lead { margin: 26px 0 0; font-size: clamp(13px, 1.05vw, 16px); line-height: 2; letter-spacing: .08em; }
.hero-scroll { position: absolute; right: 35px; bottom: 35px; z-index: 3; display: flex; align-items: center; gap: 12px; font: 500 9px/1 Arial, sans-serif; letter-spacing: .2em; writing-mode: vertical-rl; }
.hero-scroll::after { content: ""; width: 1px; height: 66px; background: rgba(255, 255, 255, .8); animation: scrollline 2s infinite ease-in-out; }
.hero-credit { position: absolute; top: 28px; left: max(5vw, 44px); z-index: 3; font-size: 9px; letter-spacing: .08em; opacity: .78; }
@keyframes scrollline { 0%, 100% { transform: scaleY(.35); transform-origin: top; } 50% { transform: scaleY(1); transform-origin: top; } }

/* Editorial introduction. */
.intro { position: relative; padding: 150px 24px 168px; background: var(--white); }
.intro-inner { max-width: 880px; margin: auto; text-align: center; }
.intro-symbol { width: 72px; height: 72px; margin: 0 auto 58px; color: var(--sakura); }
.intro h2 { margin: 0 0 54px; font-family: var(--serif); font-size: clamp(36px, 4.2vw, 60px); font-weight: 500; line-height: 1.5; letter-spacing: .035em; }
.intro p { max-width: 720px; margin: 0 auto; font-family: var(--serif); font-size: clamp(16px, 1.35vw, 20px); line-height: 2.3; }
.intro p + p { margin-top: 38px; }
.intro-side { position: absolute; top: 50%; left: 38px; color: #8b8b84; font: 500 9px/1 var(--sans); letter-spacing: .28em; writing-mode: vertical-rl; transform: translateY(-50%); }

/* Business profile block retained from the approved upper revision. */
.business-profile { padding: 145px 24px 155px; background: var(--white); border-top: 1px solid rgba(23, 60, 50, .10); border-bottom: 1px solid rgba(23, 60, 50, .12); }
.business-profile-inner { max-width: var(--max); margin: auto; }
.business-profile > .business-profile-inner > .label { margin-bottom: 42px; padding: 0; }
.business-profile-head { display: grid; grid-template-columns: minmax(0, 1.12fr) minmax(340px, .88fr); gap: 76px; align-items: end; margin-bottom: 72px; }
.business-profile h2 { margin: 0; font-family: var(--serif); font-size: clamp(36px, 4.2vw, 60px); font-weight: 500; line-height: 1.5; letter-spacing: .035em; }
.profile-lead { max-width: 650px; margin: 0; font-size: 15px; line-height: 2.15; }
.profile-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.profile-card { padding: 34px 34px 12px; background: #fff; border-top: 2px solid var(--forest); box-shadow: 0 12px 40px rgba(16, 39, 31, .035); }
.profile-card-plant { border-top-color: #b18a4a; }
.profile-card-title { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding-bottom: 22px; border-bottom: 1px solid #d8d5cd; }
.profile-card-title span { color: #74776f; font-size: 9px; letter-spacing: .2em; }
.profile-card-title strong { color: var(--forest); font-family: var(--serif); font-size: 24px; font-weight: 600; letter-spacing: .06em; }
.profile-table { margin: 0; }
.profile-table > div { display: grid; grid-template-columns: 118px 1fr; gap: 22px; align-items: start; padding: 18px 0; border-bottom: 1px solid #dedbd4; }
.profile-table > div:last-child { border-bottom: 0; }
.profile-table dt { color: var(--forest); font-size: 12px; font-weight: 700; letter-spacing: .07em; }
.profile-table dd { margin: 0; font-size: 14px; line-height: 1.8; }
.profile-power { font: 600 20px/1.2 var(--sans); letter-spacing: .01em; }
.related-company { display: grid; grid-template-columns: 170px 1fr; gap: 32px; align-items: center; margin-top: 18px; padding: 32px 34px; color: #fff; background: var(--forest); }
.related-company-link { text-decoration: none; transition: background .3s ease; }
.related-company-link:hover, .related-company-link:focus-visible { background: var(--forest-2); }
.related-company-kicker { color: #c8d4cf; font-size: 9px; letter-spacing: .18em; }
.related-company-kicker span { display: block; margin-top: 7px; color: #fff; font-size: 11px; letter-spacing: .1em; }
.related-company-main { display: grid; grid-template-columns: 1fr auto; gap: 36px; align-items: center; }
.related-company h3 { margin: 0 0 8px; font-family: var(--serif); font-size: 24px; font-weight: 600; line-height: 1.5; letter-spacing: .045em; }
.related-company p { margin: 0; color: #e5ebe8; font-size: 13px; line-height: 1.9; }
.chip-supply-copy { min-width: 230px; padding-left: 30px; border-left: 1px solid rgba(255, 255, 255, .28); }
.chip-supply-copy span { display: block; margin-bottom: 5px; color: #b9c9c2; font-size: 8px; letter-spacing: .18em; }
.chip-supply-copy strong { display: block; margin-bottom: 4px; font-size: 15px; letter-spacing: .05em; }
.chip-supply-copy small { display: block; color: #d7e0dc; font-size: 16px; transition: transform .3s ease; }
.related-company-link:hover .chip-supply-copy small,
.related-company-link:focus-visible .chip-supply-copy small { transform: translateY(5px); }

/* Full-width Hachimantai landscape. */
.land-photo { position: relative; height: 90svh; min-height: 620px; overflow: hidden; background: #d9d9d2; }
.land-photo::before { content: ""; position: absolute; inset: 0; background: var(--photo-autumn) center 52% / cover no-repeat; }
.land-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, .02), rgba(0, 0, 0, .34)); }
.land-photo-copy { position: absolute; bottom: 9vh; left: 50%; z-index: 2; width: min(92vw, 1080px); color: #fff; text-align: center; transform: translateX(-50%); }
.land-photo-copy small { display: block; margin-bottom: 18px; font: 500 10px/1 Arial, sans-serif; letter-spacing: .3em; }
.land-photo-copy h2 { margin: 0; font-family: var(--serif); font-size: clamp(39px, 5.2vw, 77px); font-weight: 500; line-height: 1.42; text-shadow: 0 1px 18px rgba(0, 0, 0, .22); }

/* Mission. */
.message { padding: 170px 24px 190px; background: var(--paper); }
.message-grid { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 70px; max-width: var(--max); margin: auto; }
.message-grid > *, .cycle-head > *, .plant-intro > *, .biomasstop > *, .faq > *, .company-inner > *, .news-inner > * { min-width: 0; }
.label { padding-top: 12px; color: #73766f; font: 500 10px/1.5 var(--sans); letter-spacing: .2em; text-transform: uppercase; }
.label .ja { display: block; margin-top: 10px; color: var(--ink); font-family: var(--sans); font-size: 11px; letter-spacing: .1em; }
.business-profile .label .ja { margin-top: 8px; color: var(--forest); font-size: 10px; letter-spacing: .16em; }
.message h2, .cycle h2, .plant h2, .local-copy h2, .biomass h2, .company h2, .news h2 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(36px, 4.2vw, 60px);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: .035em;
}
.message h2 { margin-bottom: 60px; }
.message-body { max-width: 760px; font-size: 15px; line-height: 2.35; }
.message-body p { margin: 0; }
.message-body p + p { margin-top: 34px; }

/* One shared five-petal sakura mark for sectional ornamentation. */
.blossom-rule { display: flex; align-items: center; justify-content: center; height: 126px; color: var(--sakura); background: var(--white); }
.blossom-rule svg { width: 42px; height: 42px; }
.blossom-rule::before, .blossom-rule::after { content: ""; width: min(22vw, 260px); height: 1px; margin: 0 30px; background: #ddd5d3; }

/* Forest-to-energy sequence. */
.cycle { position: relative; padding: 150px 24px 170px; overflow: hidden; color: #f5f4ef; background: var(--forest); }
.cycle-inner { max-width: var(--max); margin: auto; }
.cycle-head { display: grid; grid-template-columns: 230px 1fr; gap: 70px; margin-bottom: 104px; }
.cycle .label { color: #aebeb7; }
.cycle .label .ja { color: #fff; }
.cycle h2 { color: #fff; }
.cycle-lead { max-width: 620px; margin: 42px 0 0; color: #d9e1dc; font-size: 14px; line-height: 2.2; }
.flow { border-top: 1px solid rgba(255, 255, 255, .32); }
.flow-row { display: grid; grid-template-columns: 100px 1fr 1.2fr; gap: 24px; align-items: baseline; padding: 31px 0; border-bottom: 1px solid rgba(255, 255, 255, .22); transition: padding .35s ease, background .35s ease; }
.flow-row:hover { padding-left: 20px; background: rgba(255, 255, 255, .025); }
.flow-no { color: var(--sakura-light); font: 400 10px/1 Arial, sans-serif; letter-spacing: .14em; }
.flow-row h3 { margin: 0; font-family: var(--serif); font-size: clamp(25px, 2.4vw, 36px); font-weight: 500; }
.flow-row p { margin: 0; color: #d2ddd7; font-size: 13px; line-height: 2; }
.flow-end { margin: 78px 0 0; color: #e8ced1; font-family: var(--serif); font-size: clamp(26px, 3.5vw, 48px); text-align: right; }

/* Group company: an editorial bridge between forest resources and the plant. */
.group-company { padding: 165px 24px 175px; background: radial-gradient(circle at 88% 13%, rgba(200, 135, 141, .12), transparent 28%), linear-gradient(135deg, #e9e8df 0%, #edf0e8 100%); }
.group-company-inner { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 70px; max-width: var(--max); margin: auto; }
.group-company-content { min-width: 0; }
.group-company-eyebrow { margin: 0 0 28px; color: var(--sakura); font: 600 10px/1 Arial, sans-serif; letter-spacing: .22em; }
.group-company h2 { margin: 0; font-family: var(--serif); font-size: clamp(40px, 5vw, 70px); font-weight: 500; line-height: 1.42; letter-spacing: .035em; }
.group-company-identity { display: grid; grid-template-columns: 230px 1fr; gap: 36px; align-items: baseline; margin-top: 82px; padding: 28px 0; border-top: 1px solid #9fa39b; border-bottom: 1px solid #b8bab3; }
.group-company-identity > span { color: #6c716a; font: 500 9px/1.5 Arial, sans-serif; letter-spacing: .18em; }
.group-company-identity h3 { min-width: 0; margin: 0; color: var(--forest); font-family: var(--serif); font-size: clamp(26px, 2.6vw, 38px); font-weight: 600; line-height: 1.45; letter-spacing: .035em; }
.group-company-feature { display: grid; grid-template-columns: minmax(0, 1.18fr) minmax(280px, .82fr); gap: 0; margin-top: 42px; overflow: hidden; background: rgba(251, 250, 247, .72); border: 1px solid rgba(23, 60, 50, .24); box-shadow: 0 22px 55px rgba(15, 31, 26, .08); }
.chip-supply-visual { position: relative; min-height: 360px; margin: 0; overflow: hidden; background: #c9c8bd; }
.chip-supply-visual img { width: 100%; height: 100%; min-height: 360px; object-fit: cover; filter: saturate(.78) contrast(.98); }
.chip-supply-visual figcaption { position: absolute; right: 16px; bottom: 14px; padding: 6px 10px; color: #fff; background: rgba(15, 31, 26, .76); font-size: 9px; letter-spacing: .08em; }
.supply-relationship { display: flex; flex-direction: column; justify-content: center; gap: 22px; padding: 42px 36px; color: var(--forest); }
.supply-relationship span { font-family: var(--serif); font-size: clamp(18px, 1.8vw, 25px); font-weight: 600; line-height: 1.6; }
.supply-relationship b { position: relative; padding: 24px 0; color: #a65662; font-size: 12px; font-weight: 700; letter-spacing: .1em; border-top: 1px solid rgba(23, 60, 50, .22); border-bottom: 1px solid rgba(23, 60, 50, .22); }
.supply-relationship b::after { content: "↓"; position: absolute; right: 0; color: var(--sakura); font-size: 18px; }
.group-company-fact { display: grid; grid-template-columns: 230px 1fr; gap: 36px; align-items: center; padding: 62px 0 70px; }
.group-company-rate { display: grid; grid-template-columns: auto 1fr; align-items: end; margin: 0; color: var(--forest); }
.group-company-rate strong { font: 400 clamp(68px, 8vw, 108px)/.78 Arial, sans-serif; letter-spacing: -.065em; }
.group-company-rate > span { margin: 0 0 2px 8px; font: 400 28px/1 Arial, sans-serif; }
.group-company-rate small { grid-column: 1 / -1; margin-top: 19px; color: #666c65; font-size: 11px; letter-spacing: .12em; }
.group-company-statement { max-width: 680px; margin: 0; font-family: var(--serif); font-size: clamp(17px, 1.65vw, 22px); line-height: 2.25; }
.group-company-statement .keep { display: inline-block; }
.group-company-statement em { color: #a65662; font-size: 1.13em; font-style: normal; font-weight: 700; }
.group-company-next { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 27px 4px; text-decoration: none; border-top: 1px solid #9fa39b; border-bottom: 1px solid #9fa39b; transition: color .3s ease, padding .3s ease, background .3s ease; }
.group-company-next small { display: block; margin-bottom: 5px; color: #787d76; font: 500 8px/1 Arial, sans-serif; letter-spacing: .18em; }
.group-company-next > span:first-child { font-family: var(--serif); font-size: 18px; }
.group-company-next > span:last-child { color: var(--sakura); font-size: 18px; transition: transform .3s ease; }
.group-company-next:hover, .group-company-next:focus-visible { padding-right: 18px; padding-left: 18px; color: #fff; background: var(--forest); }
.group-company-next:hover small, .group-company-next:focus-visible small { color: #c3cec8; }
.group-company-next:hover > span:last-child, .group-company-next:focus-visible > span:last-child { transform: translateY(5px); }

/* Matsumori plant data. */
.plant { padding: 165px 24px; background: #f7f6f1; }
.plant-inner { max-width: var(--max); margin: auto; }
.plant-intro { display: grid; grid-template-columns: 230px 1fr; gap: 70px; margin-bottom: 105px; }
.plant h2 { margin-bottom: 45px; }
.plant-desc { max-width: 700px; font-size: 15px; line-height: 2.3; }
.timeline { display: grid; grid-template-columns: repeat(3, 1fr); margin: 70px 0 100px; border-top: 1px solid var(--line); }
.timeline div { padding: 30px 25px 32px; border-right: 1px solid var(--line); }
.timeline div:first-child { padding-left: 0; }
.timeline div:last-child { border-right: 0; }
.timeline strong { display: block; font: 400 clamp(28px, 3vw, 44px)/1 Arial, sans-serif; letter-spacing: .02em; }
.timeline span { display: block; margin-top: 12px; color: #666; font-size: 12px; }
.numbers { border-top: 1px solid #9c9d97; }
.num-row { display: grid; grid-template-columns: 1fr auto; align-items: end; padding: 32px 0 30px; border-bottom: 1px solid #c7c7c0; }
.num-row > span { font-size: 13px; letter-spacing: .08em; }
.num-row strong { font: 400 clamp(44px, 6vw, 82px)/.9 Arial, sans-serif; letter-spacing: -.04em; }
.num-row small { margin-left: 8px; font: 400 13px/1 var(--sans); letter-spacing: .04em; }
.note { margin-top: 18px; color: #777; font-size: 10px; }
.chip-supply-link { display: grid; grid-template-columns: 120px 1fr auto; gap: 18px; align-items: center; margin-top: 30px; padding: 20px 22px; text-decoration: none; border: 1px solid #bfc4bd; transition: color .25s ease, background .25s ease, border-color .25s ease; }
.chip-supply-link:hover, .chip-supply-link:focus-visible { color: #fff; background: var(--forest); border-color: var(--forest); }
.chip-supply-link > span { color: #767b74; font-size: 9px; letter-spacing: .14em; }
.chip-supply-link:hover > span, .chip-supply-link:focus-visible > span { color: #cbd6d1; }
.chip-supply-link strong { font-family: var(--serif); font-size: 18px; font-weight: 600; letter-spacing: .05em; }
.chip-supply-link small { font-size: 10px; letter-spacing: .04em; text-align: right; }

/* Regional story. */
.local { display: grid; grid-template-columns: 56% 44%; min-height: 820px; background: var(--white); }
.local-photo { position: relative; min-height: 760px; background: var(--photo-dragon) center 48% / cover no-repeat; }
.local-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(10, 30, 24, .25)); }
.local-copy { position: relative; display: flex; flex-direction: column; justify-content: center; padding: 105px max(5vw, 60px); }
.local-copy::before { content: ""; position: absolute; top: 54px; right: 5vw; width: 64px; height: 64px; opacity: .72; background: var(--sakura); -webkit-mask: var(--sakura-mask) center / contain no-repeat; mask: var(--sakura-mask) center / contain no-repeat; }
.local-copy .label { margin-bottom: 50px; padding: 0; }
.local-copy h2 { margin-bottom: 45px; font-size: clamp(30px, 3.1vw, 46px); }
.local-copy p { margin: 0; font-size: 14px; line-height: 2.35; }
.local-points { margin: 56px 0 0; padding: 0; list-style: none; border-top: 1px solid #d2d1ca; }
.local-points li { padding: 19px 0; font-size: 12px; letter-spacing: .04em; border-bottom: 1px solid #d2d1ca; }

/* Biomass explanation. */
.biomass { padding: 170px 24px; background: var(--paper); }
.biomass-inner { max-width: var(--max); margin: auto; }
.biomasstop { display: grid; grid-template-columns: 230px 1fr; gap: 70px; }
.biomass h2 { margin-bottom: 52px; }
.biomass-copy { max-width: 720px; font-size: 15px; line-height: 2.35; }
.process { display: grid; grid-template-columns: repeat(4, 1fr); margin: 100px 0 0; border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; }
.process > div { min-height: 210px; padding: 30px 24px; border-right: 1px solid #c3c1b9; }
.process > div:first-child { padding-left: 0; }
.process > div:last-child { border-right: 0; }
.process b { display: block; margin-bottom: 55px; color: var(--sakura); font: 400 11px/1 Arial, sans-serif; }
.process h3 { margin: 0 0 13px; font-family: var(--serif); font-size: 22px; font-weight: 500; }
.process p { margin: 0; color: #656761; font-size: 11px; line-height: 1.8; }
.faq { display: grid; grid-template-columns: 230px 1fr; gap: 70px; margin-top: 120px; }
.faq h3 { margin: 0; font-family: var(--serif); font-size: 28px; font-weight: 500; }
.qa { border-top: 1px solid #aeadab; }
.qa details { padding: 25px 0; border-bottom: 1px solid #c9c6bf; }
.qa summary { position: relative; padding-right: 40px; font-size: 14px; list-style: none; cursor: pointer; }
.qa summary::-webkit-details-marker { display: none; }
.qa summary::after { content: "＋"; position: absolute; top: -2px; right: 0; font-size: 19px; font-weight: 300; }
.qa details[open] summary::after { content: "−"; }
.qa p { margin: 18px 0 3px; color: #5d605a; font-size: 13px; line-height: 2.15; }

/* Company data. */
.company { padding: 160px 24px; background: #fff; }
.company-inner { display: grid; grid-template-columns: 230px 1fr; gap: 70px; max-width: var(--max); margin: auto; }
.company h2 { margin-bottom: 38px; }
.company-brand { display: inline-block; max-width: 100%; margin: 30px 0 38px; text-decoration: none; }
.company-logo-lockup { display: flex; align-items: center; gap: 18px; max-width: 100%; }
.company-logo-lockup .logo-symbol { flex: 0 1 180px; width: 180px; height: auto; }
.company-logo-lockup .logo-wordmark { flex: 0 1 400px; width: 400px; height: auto; }
.company-note { margin-bottom: 60px; color: #777; font-size: 12px; line-height: 2; }
dl { margin: 0; border-top: 1px solid #a8aaa4; }
dl > div { display: grid; grid-template-columns: 180px 1fr; gap: 30px; padding: 23px 0; border-bottom: 1px solid #d0d1cb; }
dt { color: #73756f; font-size: 11px; }
dd { margin: 0; font-size: 13px; }
.company-contact-row.mail dd { font-family: Arial, sans-serif; overflow-wrap: anywhere; }
.company-contact-row.mail a { text-underline-offset: 4px; }
.inline-action { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; border-bottom: 1px solid rgba(23, 60, 50, .3); }
.inline-action .action-arrow { color: var(--sakura); font-size: 14px; transition: transform .25s ease; }
.inline-action:hover .action-arrow, .inline-action:focus-visible .action-arrow { transform: translate(3px, -2px); }

/* News placeholders are non-links until WordPress articles exist. */
.news { padding: 145px 24px 155px; background: var(--paper); }
.news-inner { display: grid; grid-template-columns: 230px 1fr; gap: 70px; max-width: var(--max); margin: auto; }
.news h2 { margin-bottom: 48px; }
.news-list { border-top: 1px solid #a5a69f; }
.news-item { display: grid; grid-template-columns: 110px 1fr auto; gap: 25px; padding: 25px 0; border-bottom: 1px solid #c8c7c0; }
.news-date { color: #777; font: 400 11px/1.7 Arial, sans-serif; }
.news-title { font-size: 13px; }
.news-state { color: #8a8b85; font-size: 10px; }

/* Information security policy: restrained editorial treatment, aligned with the existing site rhythm. */
.security-policy { padding: 150px 24px 165px; background: #fff; }
.security-policy-inner { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 70px; max-width: var(--max); margin: auto; }
.security-policy-inner > * { min-width: 0; }
.security-policy h2 { margin: 0 0 38px; font-family: var(--serif); font-size: clamp(36px, 4.2vw, 60px); font-weight: 500; line-height: 1.5; letter-spacing: .035em; }
.security-policy-lead { max-width: 820px; margin: 0 0 58px; font-size: 14px; line-height: 2.2; }
.security-policy-list { margin: 0; padding: 0; list-style: none; border-top: 1px solid #a8aaa4; }
.security-policy-list li { display: grid; grid-template-columns: 78px minmax(0, 1fr); gap: 30px; padding: 26px 0 28px; border-bottom: 1px solid #d0d1cb; }
.security-policy-no { padding-top: 5px; color: var(--sakura); font: 500 10px/1 Arial, sans-serif; letter-spacing: .15em; }
.security-policy-list h3 { margin: 0 0 10px; color: var(--forest); font-family: var(--serif); font-size: 20px; font-weight: 500; letter-spacing: .045em; }
.security-policy-list p { margin: 0; color: #555852; font-size: 13px; line-height: 2; }
.security-policy-signature { margin-top: 36px; color: #73756f; font-size: 11px; line-height: 1.9; text-align: right; }

/* Contact; its large blossom/petals deliberately remain a separate-scale treatment. */
.contact { position: relative; min-height: 620px; padding: 130px 24px 70px; overflow: hidden; color: #fff; background: var(--forest); }
.contact::after { content: "✿"; position: absolute; right: -60px; bottom: -160px; color: rgba(229, 190, 194, .12); font-family: serif; font-size: 460px; line-height: 1; }
.contact-petal { position: absolute; display: block; width: 24px; height: 38px; background: rgba(234, 208, 210, .13); border-radius: 70% 10% 70% 20%; pointer-events: none; transform-origin: 50% 100%; }
.contact-petal.p1 { right: 27%; bottom: 112px; transform: rotate(25deg) scale(.8); }
.contact-petal.p2 { right: 15%; bottom: 250px; transform: rotate(-24deg) scale(.62); }
.contact-petal.p3 { right: 42%; bottom: 54px; transform: rotate(58deg) scale(.48); }
.contact-petal.p4 { right: 6%; bottom: 365px; transform: rotate(14deg) scale(.52); }
.contact-petal.p5 { right: 34%; bottom: 330px; transform: rotate(-48deg) scale(.42); }
.contact-inner { position: relative; z-index: 2; max-width: var(--max); margin: auto; }
.contact small { color: #c4d1cb; font: 500 10px/1 Arial, sans-serif; letter-spacing: .25em; }
.contact h2 { margin: 30px 0 70px; font-size: clamp(39px, 5.2vw, 76px); }
.contact-link { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 35px 0; font-family: Arial, sans-serif; font-size: clamp(22px, 3vw, 42px); letter-spacing: .01em; text-decoration: none; overflow-wrap: anywhere; border-top: 1px solid rgba(255, 255, 255, .45); border-bottom: 1px solid rgba(255, 255, 255, .45); }
.contact-link span:last-child { color: var(--sakura-light); font-size: 24px; }
.footer-groups { margin-top: 92px; border-top: 1px solid rgba(255, 255, 255, .38); }
.footer-groups-label { display: flex; align-items: baseline; gap: 18px; margin: 0; padding: 20px 0 17px; color: #aebfb7; font: 500 9px/1 Arial, sans-serif; letter-spacing: .2em; border-bottom: 1px solid rgba(255, 255, 255, .18); }
.footer-groups-label span { color: #fff; font-family: var(--sans); font-size: 11px; letter-spacing: .1em; }
.footer-group-links { display: grid; grid-template-columns: 1fr 1fr; }
.footer-group-links a { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 132px; padding: 28px 30px 28px 0; color: #fff; text-decoration: none; border-bottom: 1px solid rgba(255, 255, 255, .28); transition: padding .3s ease, background .3s ease; }
.footer-group-links a + a { padding-left: 30px; border-left: 1px solid rgba(255, 255, 255, .22); }
.footer-group-links a > span:first-child { font-family: var(--serif); font-size: clamp(19px, 2vw, 27px); line-height: 1.55; letter-spacing: .035em; }
.footer-group-links small { display: block; margin-bottom: 8px; color: #aebfb7; font: 500 8px/1 Arial, sans-serif; letter-spacing: .17em; }
.footer-group-links a > span:last-child { color: var(--sakura-light); font-size: 20px; transition: transform .3s ease; }
.footer-group-links a:hover, .footer-group-links a:focus-visible { padding-right: 18px; padding-left: 18px; background: rgba(255, 255, 255, .05); }
.footer-group-links a + a:hover, .footer-group-links a + a:focus-visible { padding-left: 48px; }
.footer-group-links a:hover > span:last-child, .footer-group-links a:focus-visible > span:last-child { transform: translate(3px, -3px); }
.footer-menu { display: flex; flex-wrap: wrap; gap: 10px 26px; margin-top: 46px; padding: 28px 0; border-top: 1px solid rgba(255, 255, 255, .24); border-bottom: 1px solid rgba(255, 255, 255, .24); }
.footer-menu a { color: #fff; font-size: 11px; font-weight: 600; letter-spacing: .075em; text-decoration: none; }
.footer-menu a:hover, .footer-menu a:focus-visible { color: var(--sakura-light); }
.footer-policy-status { margin: 14px 0 0; color: #aebfb7; font-size: 9px; letter-spacing: .04em; }
.footer { display: grid; grid-template-columns: 1fr auto auto; gap: 30px; align-items: end; margin-top: 62px; color: #bdc9c3; font-size: 10px; }
.footer-brand { display: block; width: 320px; max-width: 100%; margin-bottom: 34px; padding: 12px 16px; line-height: 0; background: var(--white); text-decoration: none; }
.footer .footer-brand { border-bottom: 0; }
.footer-logo-image { width: 100%; height: auto; }
.footer strong { display: block; margin-bottom: 10px; color: #fff; font-size: 13px; }
.footer p { margin: 0; }
.footer a { color: inherit; text-decoration: none; border-bottom: 1px solid rgba(255, 255, 255, .25); }
.page-top { align-self: end; color: #d7e0dc; font: 500 9px/1 Arial, sans-serif; letter-spacing: .14em; text-decoration: none; border-bottom: 1px solid rgba(255, 255, 255, .25); }
.footer-copyright { white-space: nowrap; }
.footer-contact-line { display: flex; flex-wrap: wrap; gap: 4px 18px; }
.media-credits { max-width: 900px; margin-top: 34px; padding-top: 20px; color: #93a79e; font-size: 9px; line-height: 1.8; border-top: 1px solid rgba(255, 255, 255, .14); }
.media-credits p { margin: 0 0 4px; }
.media-credits > p:first-child { margin-bottom: 10px; color: #b8c7c0; font: 500 8px/1 Arial, sans-serif; letter-spacing: .18em; }
.media-credits a { color: #aebfb7; text-underline-offset: 3px; }
.media-source-links { display: flex; flex-wrap: wrap; gap: 0 7px; }
.prototype { margin-top: 28px; color: #8ba198; font-size: 9px; }

/* Subtle opacity reveals avoid a repetitive card/fade-up pattern. */
.reveal { opacity: 0; transition: opacity .9s ease; }
.reveal.is-seen { opacity: 1; }

/* Lightweight petal field: varied depth, tumbling and crosswind create a natural flutter. */
.sakura-field { position: fixed; inset: 0; z-index: 30; overflow: hidden; pointer-events: none; perspective: 900px; contain: layout paint style; }
.sakura-petal { position: absolute; top: 0; left: 0; display: block; width: var(--petal-size, 12px); height: calc(var(--petal-size, 12px) * 1.18); color: var(--petal-color, rgba(236, 181, 192, .68)); opacity: var(--petal-opacity, .52); filter: blur(var(--petal-blur, 0)) drop-shadow(0 1px 2px rgba(88, 47, 54, .16)); pointer-events: none; transform-origin: 50% 48%; transform-style: preserve-3d; will-change: transform, opacity; backface-visibility: visible; }
.sakura-petal svg { display: block; width: 100%; height: 100%; overflow: visible; }

@media (max-width: 1024px) {
  .header { gap: 18px; padding: 0 22px; }
  .header-logo-lockup { gap: 10px; }
  .header-logo-lockup .logo-symbol { width: 104px; }
  .header-logo-lockup .logo-wordmark { width: 258px; }
  .nav { gap: 10px; font-size: 10.5px; letter-spacing: .055em; }
  .nav a:last-child { padding-right: 12px; padding-left: 12px; }
}

@media (max-width: 900px) {
  :root { --header-height: 70px; }
  .header { padding: 0 18px; }
  .header-logo-lockup { gap: 10px; }
  .header-logo-lockup .logo-symbol { width: 100px; }
  .header-logo-lockup .logo-wordmark { width: 250px; }
  .menu-btn { position: relative; display: block; }
  .nav {
    position: absolute;
    top: var(--header-height);
    right: 0;
    left: 0;
    display: none;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    width: 100%;
    max-height: calc(100dvh - var(--header-height));
    padding: 14px 18px 20px;
    overflow-y: auto;
    color: var(--forest);
    background: rgba(251, 250, 247, .99);
    border-bottom: 1px solid rgba(23, 60, 50, .16);
    box-shadow: 0 14px 28px rgba(15, 31, 26, .10);
  }
  .nav[data-open="true"] { display: flex; }
  .nav { font-size: 14px; font-weight: 600; letter-spacing: .055em; }
  .nav a { display: block; padding: 13px 8px; text-align: left; border-bottom: 1px solid rgba(23, 60, 50, .11); }
  .nav a:last-child { margin-top: 12px; text-align: center; border-bottom: 1px solid var(--forest); }
  .hero { min-height: 600px; }
  .hero-copy { right: 24px; bottom: 9vh; left: 24px; }
  .hero-credit { top: 22px; left: 24px; }
  .hero-scroll { right: 18px; bottom: 22px; }
  .hero h1 { font-size: clamp(34px, 9.3vw, 54px); }
  .intro { padding: 110px 24px 125px; }
  .intro-side { display: none; }
  .intro-symbol { margin-bottom: 40px; }
  .business-profile { padding: 105px 20px 115px; }
  .business-profile-head { grid-template-columns: 1fr; gap: 30px; margin-bottom: 52px; }
  .profile-grid { grid-template-columns: 1fr; }
  .related-company { grid-template-columns: 1fr; gap: 20px; }
  .related-company-main { grid-template-columns: 1fr; gap: 22px; }
  .chip-supply-copy { min-width: 0; padding: 20px 0 0; border-top: 1px solid rgba(255, 255, 255, .28); border-left: 0; }
  .land-photo { height: 76svh; min-height: 540px; }
  .land-photo-copy { bottom: 7vh; }
  .land-photo-copy h2 { font-size: clamp(35px, 9vw, 58px); }
  .message, .cycle, .group-company, .plant, .biomass, .company, .news, .security-policy { padding-top: 115px; padding-bottom: 125px; }
  .message-grid, .cycle-head, .group-company-inner, .plant-intro, .biomasstop, .faq, .company-inner, .news-inner, .security-policy-inner { grid-template-columns: minmax(0, 1fr); gap: 38px; }
  .label { padding-top: 0; }
  .cycle-head { margin-bottom: 70px; }
  .flow-row { grid-template-columns: 60px 1fr; }
  .flow-row p { grid-column: 2; }
  .flow-end { margin-top: 58px; text-align: left; }
  .group-company-identity, .group-company-fact { grid-template-columns: minmax(0, 1fr); gap: 22px; }
  .group-company-identity { margin-top: 62px; }
  .group-company-feature { grid-template-columns: minmax(0, 1fr); }
  .chip-supply-visual, .chip-supply-visual img { min-height: 330px; }
  .supply-relationship { padding: 34px 30px; }
  .group-company-fact { padding-top: 52px; }
  .timeline { margin-top: 55px; }
  .process { grid-template-columns: repeat(2, 1fr); }
  .process > div:nth-child(2) { border-right: 0; }
  .process > div:nth-child(-n + 2) { border-bottom: 1px solid #c3c1b9; }
  .process > div:nth-child(3) { padding-left: 0; }
  .local { grid-template-columns: 1fr; }
  .local-photo { min-height: 62svh; }
  .local-copy { padding: 90px 28px 105px; }
  dl > div { grid-template-columns: 140px 1fr; }
  .news-item { grid-template-columns: 90px 1fr; }
  .news-state { display: none; }
}

@media (max-width: 560px) {
  body { letter-spacing: .015em; }
  p.jp > .keep { text-wrap: pretty; }
  .only-pc { display: none; }
  .only-sp { display: block; }
  .header { padding: 0 14px; }
  .hero-copy { right: 20px; bottom: 8vh; left: 20px; }
  .hero-place { margin-bottom: 17px; font-size: 9px; letter-spacing: .18em; }
  .hero h1 { font-size: clamp(29px, 8.2vw, 36px); line-height: 1.36; }
  .hero h1 span { white-space: nowrap; }
  .hero-lead { max-width: 320px; font-size: 11.5px; line-height: 1.9; }
  .hero-credit, .hero-scroll { display: none; }
  .intro, .message, .cycle, .group-company, .plant, .biomass, .company, .news, .security-policy, .contact { padding-right: 20px; padding-left: 20px; }
  .intro h2, .message h2, .cycle h2, .group-company h2, .plant h2, .local-copy h2, .biomass h2, .company h2, .news h2, .security-policy h2, .business-profile h2 { font-size: 31px; line-height: 1.55; }
  .intro p { font-size: 15px; line-height: 2.15; }
  .message-body { font-size: 14px; line-height: 2.2; }
  .message-body .keep { white-space: normal; }
  .message h2 .keep { white-space: normal; }
  .business-profile { padding: 88px 20px 96px; }
  .business-profile > .business-profile-inner > .label { margin-bottom: 32px; }
  .profile-lead { font-size: 14px; line-height: 2.05; }
  .profile-lead .keep { white-space: normal; }
  .profile-card { padding: 26px 20px 8px; }
  .profile-card-title strong { font-size: 21px; }
  .profile-table > div { grid-template-columns: 92px 1fr; gap: 14px; padding: 15px 0; }
  .profile-table dt { font-size: 11px; }
  .profile-table dd { font-size: 13px; }
  .profile-power { font-size: 18px; }
  .related-company { padding: 26px 20px; }
  .related-company h3 { font-size: 21px; }
  .related-company p { font-size: 12px; }
  .related-company .keep { white-space: normal; }
  .land-photo-copy { width: calc(100% - 40px); }
  .land-photo-copy h2 { font-size: clamp(31px, 8.6vw, 48px); }
  .flow-row { grid-template-columns: 45px 1fr; gap: 14px; padding: 24px 0; }
  .flow-row:hover { padding-left: 0; background: none; }
  .flow-row h3 { font-size: 26px; }
  .flow-row p { font-size: 12px; }
  .group-company-eyebrow { margin-bottom: 20px; }
  .group-company-identity { gap: 12px; margin-top: 52px; padding: 23px 0; }
  .group-company-identity h3 { font-size: 21px; letter-spacing: .02em; }
  .group-company-feature { margin-top: 30px; }
  .chip-supply-visual, .chip-supply-visual img { min-height: 250px; }
  .supply-relationship { gap: 18px; padding: 28px 22px; }
  .supply-relationship span { font-size: 18px; }
  .supply-relationship b { padding: 19px 30px 19px 0; font-size: 10px; }
  .group-company-fact { gap: 28px; padding: 43px 0 52px; }
  .group-company-rate strong { font-size: 76px; }
  .group-company-statement { font-size: 16px; line-height: 2.2; }
  .group-company-next { padding: 23px 4px; }
  .group-company-next > span:first-child { font-size: 16px; }
  .timeline { grid-template-columns: 1fr; }
  .timeline div { padding: 24px 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .timeline div:last-child { border-bottom: 0; }
  .num-row { align-items: center; }
  .num-row > span { max-width: 100px; font-size: 11px; }
  .num-row strong { font-size: clamp(34px, 10vw, 52px); }
  .chip-supply-link { grid-template-columns: 1fr; gap: 7px; padding: 18px 16px; }
  .chip-supply-link small { text-align: left; }
  .local-photo { min-height: 52svh; }
  .local-copy { padding: 78px 24px 90px; }
  .process { grid-template-columns: 1fr; }
  .process > div { min-height: 0; padding: 26px 0; border-right: 0; border-bottom: 1px solid #c3c1b9; }
  .process > div:last-child { border-bottom: 0; }
  .process b { margin-bottom: 25px; }
  .faq { margin-top: 80px; }
  dl > div { grid-template-columns: 1fr; gap: 6px; }
  .news-item { grid-template-columns: 78px 1fr; gap: 15px; }
  .company-logo-lockup { gap: 8px; }
  .company-logo-lockup .logo-symbol { flex-basis: 84px; width: 84px; }
  .company-logo-lockup .logo-wordmark { flex-basis: 210px; width: 210px; }
  .security-policy-lead { margin-bottom: 42px; font-size: 13px; line-height: 2.1; }
  .security-policy-list li { grid-template-columns: 42px minmax(0, 1fr); gap: 16px; padding: 23px 0 25px; }
  .security-policy-list h3 { font-size: 18px; line-height: 1.65; }
  .security-policy-list p { font-size: 12px; line-height: 2; }
  .security-policy-signature { margin-top: 28px; text-align: left; }
  .contact { min-height: 580px; padding-top: 95px; }
  .contact h2 { font-size: clamp(28px, 8.1vw, 38px); line-height: 1.55; }
  .contact-link { gap: 12px; font-size: clamp(16px, 5.1vw, 22px); }
  .footer-groups { margin-top: 72px; }
  .footer-group-links { grid-template-columns: 1fr; }
  .footer-group-links a { min-height: 110px; padding: 24px 4px; }
  .footer-group-links a + a { padding-left: 4px; border-left: 0; }
  .footer-group-links a + a:hover, .footer-group-links a + a:focus-visible { padding-left: 16px; }
  .footer-group-links a > span:first-child { font-size: 18px; letter-spacing: .015em; }
  .footer-menu { display: grid; grid-template-columns: 1fr 1fr; gap: 0; padding: 18px 0; }
  .footer-menu a { padding: 11px 4px; font-size: 11px; }
  .footer { grid-template-columns: 1fr; gap: 18px; margin-top: 54px; }
  .page-top { justify-self: start; }
  .footer-contact-line { display: grid; gap: 1px; }
  .contact-petal.p4 { display: none; }
}

@media (max-width: 480px) {
  :root { --header-height: 88px; }
  .header { display: block; padding: 0 12px; }
  .brand { position: absolute; top: 12px; left: 12px; }
  .header-logo-lockup { gap: 7px; }
  .header-logo-lockup .logo-symbol { width: 70px; }
  .header-logo-lockup .logo-wordmark { width: 236px; }
  .menu-btn { position: absolute; right: 10px; bottom: 1px; }
  .nav { top: var(--header-height); }
  .footer-brand { width: 270px; margin-bottom: 28px; padding: 10px 12px; }
}

@media (max-width: 390px) {
  .header-logo-lockup .logo-symbol { width: 60px; }
  .header-logo-lockup .logo-wordmark { width: 205px; }
  .hero-copy { right: 18px; left: 18px; }
  .hero-lead { font-size: 11px; }
  .intro h2 { font-size: 30px; }
  .message h2 { font-size: 32px; }
  .contact-link { padding: 27px 0; }
  .profile-table > div { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .related-company h3 { font-size: 17px; letter-spacing: .02em; }
}

@media (max-width: 360px) {
  .hero h1 { font-size: 28px; }
  .hero-lead { font-size: 10.5px; }
  .intro h2 { font-size: 29px; }
  .message h2, .plant h2, .biomass h2, .company h2, .news h2, .security-policy h2 { font-size: 30px; }
  .local-copy h2 { font-size: 29px; }
  .contact h2 { font-size: 27px; }
}

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; animation: none !important; transition: none !important; }
  .reveal { opacity: 1; }
  .sakura-field { display: none !important; }
}


/* 2026-09-08: key-message motion + footer information architecture */
.motion-heading { position: relative; }
.motion-heading > .motion-line {
  display: inline-block;
  opacity: .01;
  transform: translate3d(0, .48em, 0);
  clip-path: inset(100% 0 0 0);
  will-change: transform, clip-path, opacity;
  transition:
    clip-path .82s cubic-bezier(.22, 1, .36, 1),
    transform .82s cubic-bezier(.22, 1, .36, 1),
    opacity .46s ease;
}
.motion-heading > .motion-line:nth-of-type(2) { transition-delay: 70ms; }
.motion-heading > .motion-line:nth-of-type(3) { transition-delay: 140ms; }
.motion-heading > .motion-line:nth-of-type(4) { transition-delay: 210ms; }
.motion-heading.is-seen > .motion-line {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  clip-path: inset(0 0 0 0);
}

/* CONTACT remains the message/CTA; corporate information is consolidated below in the footer. */
.contact { min-height: 560px; padding-bottom: 116px; }
.contact-inner { max-width: var(--max); }
.contact-link { margin-bottom: 0; }

.site-footer {
  position: relative;
  padding: 82px 24px 38px;
  color: #d7e0dc;
  background: var(--dark);
  border-top: 1px solid rgba(255,255,255,.09);
}
.site-footer-inner { max-width: var(--max); margin: 0 auto; }
.site-footer-grid {
  display: grid;
  grid-template-columns: minmax(280px, .95fr) minmax(310px, 1.12fr) minmax(220px, .72fr);
  gap: clamp(38px, 5vw, 78px);
  align-items: start;
}
.site-footer-kicker {
  margin: 0 0 22px;
  color: #fff;
  font: 600 10px/1.4 Arial, sans-serif;
  letter-spacing: .16em;
}
.site-footer-kicker span { display: block; margin-top: 6px; color: #aebbb5; font: 400 10px/1.5 var(--sans); letter-spacing: .06em; }
.site-footer-company .footer-brand { width: 300px; max-width: 100%; margin: 0 0 30px; padding: 11px 14px; }
.site-footer-company strong { display: block; margin-bottom: 15px; color: #fff; font: 600 18px/1.75 var(--sans); letter-spacing: .035em; }
.site-footer-company p { margin: 0; }
.site-footer-address { max-width: 25em; color: #d1d9d5; font-size: 13px; line-height: 1.9; }
.site-footer-contact { display: grid; gap: 5px; margin-top: 17px !important; color: #d1d9d5; font-size: 13px; line-height: 1.75; }
.site-footer-contact a, .site-footer-mail a { color: inherit; text-decoration: none; }
.site-footer-contact a:hover, .site-footer-mail a:hover { color: #fff; }
.site-footer-mail { margin-top: 15px !important; font: 500 13px/1.7 Arial, sans-serif; letter-spacing: .025em; }
.site-footer-mail a { padding-bottom: 3px; border-bottom: 1px solid rgba(234,208,210,.5); }
.site-footer-map-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: #152a23;
  border: 1px solid rgba(255,255,255,.14);
}
.site-footer-map-frame iframe { display: block; width: 100%; height: 100%; border: 0; filter: saturate(.72) contrast(.96); }
.site-footer-map-link { display: inline-block; margin-top: 12px; color: #c9d4cf; font-size: 10px; letter-spacing: .08em; text-decoration: none; border-bottom: 1px solid rgba(255,255,255,.24); }
.site-footer-menu { display: grid; border-top: 1px solid rgba(255,255,255,.16); }
.site-footer-menu a {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 42px;
  padding: 10px 22px 10px 0;
  color: #e4e9e6;
  font-size: 12px;
  line-height: 1.55;
  text-decoration: none;
  border-bottom: 1px solid rgba(255,255,255,.12);
}
.site-footer-menu a::after { content: "↗"; position: absolute; right: 0; color: var(--sakura-light); font: 400 10px/1 Arial, sans-serif; opacity: .72; }
.site-footer-menu a[href^="#"]::after { content: "↓"; }
.site-footer-menu a:hover { color: #fff; }
.site-footer-related { margin-top: 30px; }
.site-footer-related > p { margin: 0 0 9px; color: #95a69f; font: 600 9px/1.5 Arial, sans-serif; letter-spacing: .14em; }
.site-footer-related a { display: flex; justify-content: space-between; gap: 14px; padding: 10px 0; color: #c9d4cf; font-size: 10px; line-height: 1.55; text-decoration: none; border-bottom: 1px solid rgba(255,255,255,.1); }
.site-footer-bottom { display: flex; justify-content: space-between; gap: 24px; align-items: center; margin-top: 58px; padding-top: 22px; color: #91a29a; font: 500 9px/1.5 Arial, sans-serif; letter-spacing: .12em; border-top: 1px solid rgba(255,255,255,.14); }
.site-footer-bottom p { margin: 0; }
.site-footer-page-top { color: #cbd5d0; text-decoration: none; border-bottom: 1px solid rgba(255,255,255,.22); }
.site-footer .media-credits { margin-top: 28px; color: #82958c; }
.site-footer .prototype { color: #82958c; }

@media (max-width: 900px) {
  .site-footer { padding-top: 68px; }
  .site-footer-grid { grid-template-columns: 1fr 1fr; gap: 52px 42px; }
  .site-footer-navigation { grid-column: 1 / -1; }
  .site-footer-menu { grid-template-columns: 1fr 1fr; column-gap: 32px; }
}
@media (max-width: 640px) {
  .contact { min-height: 500px; padding-bottom: 92px; }
  .site-footer { padding: 62px 20px 32px; }
  .site-footer-grid { grid-template-columns: minmax(0, 1fr); gap: 46px; }
  .site-footer-navigation { grid-column: auto; }
  .site-footer-company .footer-brand { width: 275px; }
  .site-footer-company strong { font-size: 16px; }
  .site-footer-address, .site-footer-contact, .site-footer-mail { font-size: 12px; }
  .site-footer-map-frame { aspect-ratio: 4 / 3; }
  .site-footer-menu { grid-template-columns: 1fr 1fr; column-gap: 18px; }
  .site-footer-menu a { min-height: 45px; font-size: 11px; }
  .site-footer-bottom { align-items: flex-start; flex-direction: column; margin-top: 48px; }
}
@media (max-width: 390px) {
  .site-footer-menu { grid-template-columns: 1fr; }
  .site-footer-company .footer-brand { width: 250px; }
}
@media (prefers-reduced-motion: reduce) {
  .motion-heading > .motion-line { opacity: 1 !important; transform: none !important; clip-path: none !important; will-change: auto !important; }
}


/* 2026-09-08 re-review: motion timing, CONTACT cleanup, footer balance */
.motion-heading > .motion-line {
  opacity: .10;
  transform: translate3d(0, .34em, 0);
  clip-path: inset(0 100% 0 0);
  filter: blur(4px);
  transition:
    clip-path 1.28s cubic-bezier(.16, 1, .30, 1),
    transform 1.18s cubic-bezier(.16, 1, .30, 1),
    opacity .92s ease,
    filter 1.05s ease;
}
.motion-heading > .motion-line:nth-of-type(1) { transition-delay: 0ms; }
.motion-heading > .motion-line:nth-of-type(2) { transition-delay: 160ms; }
.motion-heading > .motion-line:nth-of-type(3) { transition-delay: 320ms; }
.motion-heading > .motion-line:nth-of-type(4) { transition-delay: 480ms; }
.motion-heading.is-seen > .motion-line {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  clip-path: inset(0 0 0 0);
  filter: blur(0);
}

/* CONTACT is now message-only; company contact details live in the footer. */
.contact {
  min-height: 0;
  padding: 112px 24px 104px;
}
.contact h2 { margin-bottom: 0; }

/* Footer: visually balance company / access / navigation without forcing equal heights. */
.site-footer { padding-top: 76px; }
.site-footer-grid {
  grid-template-columns: minmax(250px, .90fr) minmax(340px, 1.12fr) minmax(230px, .78fr);
  gap: clamp(42px, 4.4vw, 68px);
  align-items: start;
}
.site-footer-company .footer-brand {
  width: 252px;
  margin-bottom: 24px;
  padding: 9px 11px;
}
.site-footer-company strong {
  margin-bottom: 12px;
  font-size: 17px;
  line-height: 1.65;
}
.site-footer-address { line-height: 1.75; }
.site-footer-contact {
  gap: 3px;
  margin-top: 14px !important;
  line-height: 1.65;
}
.site-footer-mail { margin-top: 12px !important; }
.site-footer-kicker { margin-bottom: 18px; }
.site-footer-map-frame {
  height: clamp(292px, 22vw, 348px);
  aspect-ratio: auto;
}
.site-footer-map-link { margin-top: 10px; }
.site-footer-menu a { min-height: 40px; padding-top: 9px; padding-bottom: 9px; }
.site-footer-related { margin-top: 24px; }

@media (max-width: 900px) {
  .site-footer-grid { grid-template-columns: 1fr 1fr; gap: 48px 38px; }
  .site-footer-company .footer-brand { width: 238px; }
  .site-footer-map-frame { height: auto; aspect-ratio: 4 / 3; }
}
@media (max-width: 640px) {
  .contact { padding: 84px 20px 80px; }
  .site-footer { padding-top: 58px; }
  .site-footer-grid { grid-template-columns: minmax(0,1fr); gap: 42px; }
  .site-footer-company .footer-brand { width: 230px; }
  .site-footer-map-frame { height: auto; aspect-ratio: 4 / 3; }
}
@media (max-width: 390px) {
  .contact { padding-top: 78px; padding-bottom: 74px; }
  .site-footer-company .footer-brand { width: 218px; }
}
@media (prefers-reduced-motion: reduce) {
  .motion-heading > .motion-line {
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
    filter: none !important;
    transition: none !important;
  }
}


/* Single-file security policy view: same-document fragment route, no external policy HTML dependency. */
.single-policy-page {
  position: fixed;
  inset: var(--header-height) 0 0;
  z-index: 35;
  display: none;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  color: var(--ink);
  background: var(--paper);
}
.single-policy-page:target { display: block; }
.single-policy-hero {
  padding: 112px 24px 100px;
  background: var(--paper);
  border-bottom: 1px solid var(--line);
}
.single-policy-hero-inner {
  display: grid;
  grid-template-columns: 230px minmax(0, 1fr);
  gap: 70px;
  max-width: var(--max);
  margin: 0 auto;
}
.single-policy-label {
  padding-top: 12px;
  color: var(--forest);
  font: 600 10px/1.5 Arial, sans-serif;
  letter-spacing: .18em;
}
.single-policy-label span {
  display: block;
  margin-top: 8px;
  color: var(--muted);
  font: 400 10px/1.5 var(--sans);
  letter-spacing: .08em;
}
.single-policy-title {
  margin: 0;
  color: var(--forest);
  font: 500 clamp(42px, 5.2vw, 72px)/1.36 var(--serif);
  letter-spacing: .055em;
}
.single-policy-subtitle {
  margin: 30px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 2;
}
.single-policy-back {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-top: 34px;
  color: var(--forest);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  text-decoration: none;
  border-bottom: 1px solid rgba(23, 60, 50, .28);
}
.single-policy-back::before { content: "←"; color: var(--sakura); }
.single-policy-body {
  padding: 110px 24px 140px;
  background: #fff;
}
.single-policy-body-inner {
  max-width: 900px;
  margin: 0 auto;
}
.single-policy-intro {
  margin: 0 0 70px;
  font-size: 14px;
  line-height: 2.25;
}
.single-policy-list {
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid #d8d6cf;
}
.single-policy-list > li {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 30px;
  padding: 38px 0;
  border-bottom: 1px solid #d8d6cf;
}
.single-policy-list > li > div { min-width: 0; }
.single-policy-no {
  color: var(--sakura);
  font: 500 11px/1.6 Arial, sans-serif;
  letter-spacing: .12em;
}
.single-policy-list h3 {
  margin: 0 0 13px;
  color: var(--forest);
  font: 500 22px/1.7 var(--serif);
  letter-spacing: .035em;
}
.single-policy-list p,
.single-policy-list > li > div > ul {
  margin: 0;
  color: #4d514d;
  font-size: 13px;
  line-height: 2;
}
.single-policy-list > li > div > ul {
  display: block;
  margin-top: 12px;
  padding-left: 1.45em;
  list-style: disc;
}
.single-policy-list > li > div > ul > li {
  display: list-item;
  margin: .28em 0;
  padding: 0;
  border: 0;
  grid-template-columns: none;
  gap: 0;
  min-width: 0;
}
.single-policy-contact {
  margin-top: 20px;
  padding: 24px 28px;
  background: var(--paper);
  border-left: 2px solid var(--sakura-light);
}
.single-policy-contact strong {
  display: block;
  margin-bottom: 8px;
  color: var(--forest);
}
.single-policy-contact a {
  text-decoration: none;
  border-bottom: 1px solid #b9b5aa;
}
.single-policy-note {
  margin: 48px 0 0;
  padding-top: 20px;
  color: #8a8b85;
  font-size: 10px;
  line-height: 1.9;
  border-top: 1px solid #dedbd3;
}
.single-policy-bottom {
  padding: 34px 24px 38px;
  color: #cbd5d0;
  background: var(--dark);
}
.single-policy-bottom-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  max-width: var(--max);
  margin: 0 auto;
  font: 500 9px/1.6 Arial, sans-serif;
  letter-spacing: .11em;
}
.single-policy-bottom a {
  color: #fff;
  text-decoration: none;
  border-bottom: 1px solid rgba(255,255,255,.24);
}
@media (max-width: 900px) {
  .single-policy-hero-inner { grid-template-columns: 1fr; gap: 36px; }
}
@media (max-width: 560px) {
  .single-policy-hero { padding: 76px 20px 72px; }
  .single-policy-title {
    font-size: clamp(30px, 8vw, 36px);
    letter-spacing: .035em;
    white-space: nowrap;
  }
  .single-policy-body { padding: 76px 20px 100px; }
  .single-policy-intro { font-size: 13px; }
  .single-policy-list > li {
    grid-template-columns: 42px minmax(0, 1fr);
    gap: 16px;
    padding: 30px 0;
  }
  .single-policy-list h3 { font-size: 19px; }
  .single-policy-list p,
  .single-policy-list > li > div > ul { font-size: 12px; }
  .single-policy-bottom-inner {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* WordPress integration: preserve the static design while allowing NEWS posts. */
a.news-state { color: #8a8b85; text-decoration: none; }
a.news-state:hover { color: var(--forest); }
.admin-bar .header { top: 32px; }
@media (max-width: 782px) { .admin-bar .header { top: 46px; } }
.wp-article { min-height: 70vh; padding: 150px 24px 120px; background: var(--white); }
.wp-article-inner { max-width: 900px; margin: 0 auto; }
.wp-article-date { color: var(--muted); font: 400 11px/1.7 Arial, sans-serif; letter-spacing: .08em; }
.wp-article h1 { margin: 20px 0 45px; color: var(--forest); font: 500 clamp(34px, 5vw, 64px)/1.45 var(--serif); letter-spacing: .035em; }
.wp-article-content { color: var(--ink); font-size: 15px; line-height: 2.05; }
.wp-article-content > * { max-width: 100%; }
.wp-article-back { display: inline-block; margin-top: 55px; color: var(--forest); text-decoration: none; border-bottom: 1px solid rgba(23,60,50,.28); }

/* v1.2.3 — typography overflow / Japanese line-break hardening.
   Manual line breaks entered in HNE Site Edit remain authoritative because
   hne_lines_html() still emits <br>. Inside each authored line, ordinary body
   copy may wrap naturally; headings are balanced only when the available width
   requires it. Proper nouns prefer staying together but are allowed an emergency
   break rather than being clipped outside their container. */

/* Never let editable copy become an unbreakable inline box. */
p > .keep,
.hero-lead > .keep,
.profile-lead > .keep,
.related-company p > .keep,
.message-body p > .keep,
.cycle-lead > .keep,
.group-company-statement > .keep,
.plant-desc > .keep,
.local-copy p > .keep,
.biomasstop p > .keep,
.faq p > .keep,
.company-note > .keep {
  display: inline;
  max-width: 100%;
  white-space: normal;
}

/* Body prose: natural Japanese wrapping, with orphan reduction but no forced balancing. */
p,
.jp,
dd,
li,
summary,
.news-title {
  line-break: strict;
  word-break: auto-phrase;
  overflow-wrap: break-word;
  text-wrap: pretty;
}

/* Terms normally stay visually coherent, but must never cause clipping. */
.term {
  display: inline;
  max-width: 100%;
  white-space: normal;
  word-break: keep-all;
  overflow-wrap: anywhere;
}

/* Author-defined heading lines are preserved by <br>; each line can still wrap
   safely if an editor later enters a longer phrase. */
.hero h1 > .keep,
.motion-heading > .keep {
  display: inline-block;
  max-width: 100%;
  white-space: normal;
  text-wrap: balance;
  overflow-wrap: break-word;
}

/* The group-company relationship card contains the longest proper noun on the
   site. Give the text panel enough room on desktop and stack before it can become
   too narrow on smaller laptops. */
.group-company-feature {
  grid-template-columns: minmax(0, 1.05fr) minmax(360px, .95fr);
}
.supply-relationship {
  min-width: 0;
}
.supply-relationship > * {
  min-width: 0;
  max-width: 100%;
}
.supply-relationship span {
  font-size: clamp(17px, 1.45vw, 22px);
  line-height: 1.65;
  overflow-wrap: anywhere;
}
.supply-relationship .term {
  word-break: keep-all;
  overflow-wrap: anywhere;
}

/* Keep text blocks shrinkable inside grid/flex tracks. */
.business-profile-head > *,
.related-company-main > *,
.group-company-feature > *,
.supply-relationship > *,
.plant-intro > *,
.local > *,
.biomasstop > *,
.company-inner > *,
.site-footer-grid > * {
  min-width: 0;
}

@media (max-width: 1100px) and (min-width: 901px) {
  .group-company-feature {
    grid-template-columns: minmax(0, 1fr);
  }
  .chip-supply-visual,
  .chip-supply-visual img {
    min-height: 320px;
  }
  .supply-relationship {
    padding: 32px 30px;
  }
}

@media (max-width: 900px) {
  .group-company-feature {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 560px) {
  .hero h1 > .keep,
  .motion-heading > .keep {
    white-space: normal;
    text-wrap: balance;
  }
  .term {
    word-break: normal;
    overflow-wrap: anywhere;
  }
}


/* Compact link rows must also shrink safely around the 900px breakpoint. */
.inline-action {
  max-width: 100%;
  min-width: 0;
  flex-wrap: wrap;
}
.inline-action > span:first-child {
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
}
.inline-action .action-arrow {
  flex: 0 0 auto;
}
.chip-supply-link > * {
  min-width: 0;
}

/* Footer desktop/tablet crossover: switch before minimum grid tracks can overflow. */
@media (max-width: 980px) and (min-width: 641px) {
  .site-footer-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 48px 38px;
  }
  .site-footer-navigation {
    grid-column: 1 / -1;
  }
  .site-footer-map-frame {
    height: auto;
    aspect-ratio: 4 / 3;
  }
}

/* On wide desktop the mission lead is intentionally wide enough to avoid a
   one-phrase orphan such as "に取り組みます。" on a line by itself. */
@media (min-width: 1181px) {
  .message-body {
    max-width: 880px;
  }
}


/* v1.2.4 — editorial line breaks + refined type hierarchy.
   Research basis: use a controlled, role-based scale instead of independent
   one-off sizes. Body copy sits at ~16px; small headings ~20–22px; medium
   headings ~26–30px; main section headings ~44–50px. Hero/display copy remains
   intentionally larger, but the jumps between ordinary content levels are
   reduced. Manual line breaks from HNE Site Edit remain authoritative. */
:root {
  --type-body: 16px;
  --type-body-small: 14px;
  --type-small-heading: clamp(19px, 1.25vw, 22px);
  --type-medium-heading: clamp(24px, 1.9vw, 30px);
  --type-section-heading: clamp(38px, 3.25vw, 50px);
  --type-feature-heading: clamp(40px, 3.55vw, 54px);
  --type-display: clamp(46px, 4.7vw, 72px);
}

/* Main display copy: still clearly first in hierarchy, but less oversized. */
.hero h1 { font-size: var(--type-display); line-height: 1.28; }
.land-photo-copy h2 { font-size: clamp(40px, 4vw, 60px); line-height: 1.42; }
.contact h2 { font-size: clamp(40px, 4vw, 58px); line-height: 1.46; }

/* Main section headings share one coherent scale. */
.intro h2,
.business-profile h2,
.message h2,
.cycle h2,
.plant h2,
.biomass h2,
.company h2,
.news h2,
.security-policy h2 {
  font-size: var(--type-section-heading);
  line-height: 1.48;
}
.group-company h2 { font-size: var(--type-feature-heading); line-height: 1.46; }
.local-copy h2 { font-size: clamp(34px, 2.8vw, 44px); line-height: 1.5; }

/* Secondary and tertiary hierarchy: smaller, regular steps instead of jumps. */
.flow-row h3,
.group-company-identity h3 { font-size: var(--type-medium-heading); line-height: 1.5; }
.faq h3 { font-size: clamp(22px, 1.6vw, 26px); line-height: 1.55; }
.profile-card-title strong,
.related-company h3,
.process h3,
.security-policy-list h3 { font-size: var(--type-small-heading); line-height: 1.55; }
.flow-end { font-size: clamp(25px, 2.6vw, 38px); line-height: 1.55; }

/* Body sizes are brought slightly upward so the hierarchy feels connected. */
.intro p { font-size: clamp(16px, 1.12vw, 18px); line-height: 2.18; }
.profile-lead,
.message-body,
.plant-desc,
.biomass-copy { font-size: var(--type-body); line-height: 2.15; }
.local-copy p,
.cycle-lead { font-size: 15px; line-height: 2.15; }
.group-company-statement { font-size: clamp(17px, 1.35vw, 20px); line-height: 2.15; }
.flow-row p,
.qa p,
.security-policy-list p { font-size: var(--type-body-small); line-height: 2; }
.qa summary { font-size: 15px; line-height: 1.8; }
.profile-table dd,
dd,
.news-title { font-size: 14px; }
.timeline span,
.company-note { font-size: 13px; }

/* The local story needs a little more text width on desktop so the requested
   editorial line breaks remain visually stable without shrinking body type. */
@media (min-width: 901px) {
  .local { grid-template-columns: 48% 52%; }
  .local-copy { padding-right: clamp(34px, 3.6vw, 52px); padding-left: clamp(34px, 3.6vw, 52px); }
}

/* Manual line breaks: each editor-authored line is a real line box. It stays on
   one visual line when space permits; if the viewport is narrower, only that
   authored line may wrap internally rather than clip or force horizontal scroll. */
.message-body p > .keep,
.local-copy p > .keep,
.intro p > .keep,
.profile-lead > .keep,
.cycle-lead > .keep,
.group-company-statement > .keep,
.plant-desc > .keep,
.biomasstop p > .keep,
.related-company p > .keep {
  display: inline-block;
  max-width: 100%;
  white-space: normal;
  vertical-align: top;
  overflow-wrap: break-word;
  text-wrap: pretty;
}

/* Mobile: keep the scale compact and preserve the existing visual rhythm. */
@media (max-width: 900px) {
  :root {
    --type-body: 15px;
    --type-body-small: 13px;
    --type-small-heading: clamp(19px, 3.7vw, 21px);
    --type-medium-heading: clamp(22px, 4.6vw, 27px);
    --type-section-heading: clamp(30px, 6.1vw, 38px);
    --type-feature-heading: clamp(31px, 6.4vw, 40px);
  }
  .local { grid-template-columns: 1fr; }
  .local-copy { padding-right: 28px; padding-left: 28px; }
}

@media (max-width: 560px) {
  .hero h1 { font-size: clamp(29px, 8.2vw, 36px); }
  .intro h2,
  .business-profile h2,
  .message h2,
  .cycle h2,
  .group-company h2,
  .plant h2,
  .local-copy h2,
  .biomass h2,
  .company h2,
  .news h2,
  .security-policy h2 { font-size: clamp(29px, 7.5vw, 33px); line-height: 1.55; }
  .land-photo-copy h2 { font-size: clamp(31px, 8.6vw, 46px); }
  .contact h2 { font-size: clamp(28px, 8vw, 36px); }
  .profile-lead,
  .message-body,
  .plant-desc,
  .biomass-copy,
  .local-copy p { font-size: 14px; }
  .local-copy { padding-right: 24px; padding-left: 24px; }
}

/* v1.2.4 line-break stability for the two reviewed editorial passages. */
@media (min-width: 901px) {
  .message-grid {
    grid-template-columns: 200px minmax(0, 1fr);
    gap: 56px;
  }
  .message-body {
    max-width: 920px;
    letter-spacing: .018em;
  }
  .local {
    grid-template-columns: 47% 53%;
  }
  .local-copy {
    padding-right: clamp(32px, 3.2vw, 48px);
    padding-left: clamp(32px, 3.2vw, 48px);
  }
  .local-copy p {
    letter-spacing: .015em;
  }
}

/* On narrower laptops, preserving the image/text split would make the
   intentionally authored third local line too narrow. Stack the section before
   that happens instead of shrinking the type or breaking the editorial line. */
@media (max-width: 1200px) and (min-width: 901px) {
  .local { grid-template-columns: minmax(0, 1fr); }
  .local-photo { min-height: 620px; }
  .local-copy { padding: 88px max(36px, 5vw) 104px; }
}

/* Mission copy also stacks the side label a little earlier on laptop widths,
   ensuring the user-entered sentence break remains the dominant break point. */
@media (max-width: 1100px) and (min-width: 901px) {
  .message-grid { grid-template-columns: minmax(0, 1fr); gap: 38px; }
  .message .label { padding-top: 0; }
}


/* v1.3.0 — scoped hero-copy + OUR MISSION motion refinement.
   Primary visual reference: the supplied "9606" blur/fade demo. Its 20px blur,
   2.5s duration and 1s line delays were intentionally reduced for the live HNE
   hero so the copy becomes readable quickly and the video remains the visual
   anchor. Motion is limited to these two sections only. */

/* Hero: meaning-unit reveal rather than character splitting. The two author-
   controlled headline lines resolve in a short stagger, then the lead follows.
   This preserves Japanese line breaks and keeps the first view calm. */
.hne-hero-copy-motion .hne-hero-place,
.hne-hero-copy-motion .hne-hero-title > .keep,
.hne-hero-copy-motion .hne-hero-lead {
  transform-origin: 18% 60%;
  animation-fill-mode: both;
  animation-timing-function: cubic-bezier(.16, 1, .3, 1);
}
.hne-hero-copy-motion .hne-hero-place {
  animation-name: hne-hero-kicker-resolve;
  animation-duration: .70s;
  animation-delay: .02s;
}
.hne-hero-copy-motion .hne-hero-title > .keep {
  animation-name: hne-hero-title-line-resolve;
  animation-duration: .98s;
  animation-delay: .06s;
}
.hne-hero-copy-motion .hne-hero-title > .keep:nth-of-type(2) { animation-delay: .17s; }
.hne-hero-copy-motion .hne-hero-title > .keep:nth-of-type(3) { animation-delay: .28s; }
.hne-hero-copy-motion .hne-hero-title > .keep:nth-of-type(4) { animation-delay: .39s; }
.hne-hero-copy-motion .hne-hero-lead {
  animation-name: hne-hero-lead-resolve;
  animation-duration: .82s;
  animation-delay: .40s;
}

@keyframes hne-hero-kicker-resolve {
  0% { opacity: .10; transform: translate3d(0, 4px, 0); filter: blur(1.5px); }
  100% { opacity: 1; transform: translate3d(0, 0, 0); filter: blur(0); }
}
@keyframes hne-hero-title-line-resolve {
  0% { opacity: .16; transform: translate3d(0, 7px, 0) scale(.997); filter: blur(3px); }
  42% { opacity: .78; }
  100% { opacity: 1; transform: translate3d(0, 0, 0) scale(1); filter: blur(0); }
}
@keyframes hne-hero-lead-resolve {
  0% { opacity: .14; transform: translate3d(0, 6px, 0); filter: blur(1.5px); }
  100% { opacity: 1; transform: translate3d(0, 0, 0); filter: blur(0); }
}

/* Mission: reading-first reveal. JS only adds the armed/visible state; without
   JavaScript the content stays in its ordinary visible state. Heading lines use
   a small stagger, followed by the two body paragraphs. */
.hne-mission-enhanced.is-armed .hne-mission-label,
.hne-mission-enhanced.is-armed .hne-mission-heading > .motion-line,
.hne-mission-enhanced.is-armed .hne-mission-copy {
  opacity: 0;
}
.hne-mission-enhanced.is-armed .hne-mission-label {
  transform: translate3d(0, 5px, 0);
  transition: opacity .56s ease-out, transform .68s cubic-bezier(.16, 1, .3, 1);
}
.hne-mission-enhanced.is-armed .hne-mission-heading > .motion-line {
  transform: translate3d(0, 12px, 0) scale(.997);
  filter: blur(3px);
  transition: opacity .82s ease-out .04s,
              transform .88s cubic-bezier(.16, 1, .3, 1) .04s,
              filter .66s ease-out .04s;
}
.hne-mission-enhanced.is-armed .hne-mission-heading > .motion-line:nth-of-type(2) {
  transition-delay: .15s;
}
.hne-mission-enhanced.is-armed .hne-mission-heading > .motion-line:nth-of-type(3) {
  transition-delay: .26s;
}
.hne-mission-enhanced.is-armed .hne-mission-copy-1 {
  transform: translate3d(0, 9px, 0);
  filter: blur(1.5px);
  transition: opacity .66s ease-out .22s,
              transform .76s cubic-bezier(.16, 1, .3, 1) .22s,
              filter .56s ease-out .22s;
}
.hne-mission-enhanced.is-armed .hne-mission-copy-2 {
  transform: translate3d(0, 9px, 0);
  filter: blur(1.5px);
  transition: opacity .66s ease-out .34s,
              transform .76s cubic-bezier(.16, 1, .3, 1) .34s,
              filter .56s ease-out .34s;
}
.hne-mission-enhanced.is-armed.is-visible .hne-mission-label,
.hne-mission-enhanced.is-armed.is-visible .hne-mission-heading > .motion-line,
.hne-mission-enhanced.is-armed.is-visible .hne-mission-copy {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  filter: blur(0);
}

/* Do not reanimate on responsive changes and do not change any authored line
   break. Smaller screens keep the same timing with slightly less travel. */
@media (max-width: 560px) {
  .hne-hero-copy-motion .hne-hero-title > .keep { animation-duration: .88s; }
  .hne-hero-copy-motion .hne-hero-lead { animation-duration: .74s; animation-delay: .36s; }
  .hne-mission-enhanced.is-armed .hne-mission-heading > .motion-line { transform: translate3d(0, 9px, 0) scale(.998); }
  .hne-mission-enhanced.is-armed .hne-mission-copy-1,
  .hne-mission-enhanced.is-armed .hne-mission-copy-2 { transform: translate3d(0, 7px, 0); }
}

@media (prefers-reduced-motion: reduce) {
  .hne-hero-copy-motion .hne-hero-place,
  .hne-hero-copy-motion .hne-hero-title > .keep,
  .hne-hero-copy-motion .hne-hero-lead {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
  }
  .hne-mission-enhanced.is-armed .hne-mission-label,
  .hne-mission-enhanced.is-armed .hne-mission-heading > .motion-line,
  .hne-mission-enhanced.is-armed .hne-mission-copy {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}
