@import url("../fonts/noto-sans-jp/index.css");
@import url("../fonts/oswald/index.css");

:root {
  --navy:#1d2088;
  --navy-deep:#14155c;
  --ink:#111827;
  --ink-soft:#364152;
  --muted:#5d6772;
  --line-section:#14155c;
  --line-row:#aeb7c3;
  --line-assist:#d8dde5;
  --line:var(--line-assist);
  --line-strong:var(--line-row);
  --surface:#f3f5f7;
  --surface-deep:#e9edf2;
  --white:#fff;
  --space-1:8px;
  --space-2:16px;
  --space-3:24px;
  --space-4:32px;
  --space-5:40px;
  --space-6:48px;
  --space-8:64px;
  --space-10:80px;
  --space-12:96px;
  --space-16:128px;
  --space-20:160px;
  --type-xs:.75rem;
  --type-sm:.875rem;
  --type-base:1rem;
  --type-md:1.125rem;
  --type-lg:1.266rem;
  --type-xl:1.602rem;
  --type-2xl:2.027rem;
  --type-3xl:2.566rem;
  --type-4xl:3.247rem;
  --type-5xl:4.11rem;
  --header-h:88px;
  --pad:clamp(24px,4.8vw,76px);
  --section-lg:clamp(var(--space-12),9vw,var(--space-20));
  --section-md:clamp(var(--space-10),7.5vw,var(--space-16));
  --max:1440px;
  --measure:42em;
  --font-jp:"Noto Sans JP","Yu Gothic",YuGothic,"Hiragino Kaku Gothic ProN",Meiryo,sans-serif;
  --font-num:"Oswald",sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
  --motion-fast:220ms;
  --focus-ring:#1d2088;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--white)}
body{
  margin:0;
  background:var(--white);
  color:var(--ink);
  font-family:var(--font-jp);
  font-size:16px;
  font-feature-settings:"palt" 1,"kern" 1;
  font-kerning:normal;
  line-break:strict;
  line-height:1.95;
  overflow-wrap:anywhere;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body.nav-open{overflow:hidden}
::selection{background:rgba(29,32,136,.16);color:var(--navy-deep)}
img,video{display:block;max-width:100%}
img{height:auto}
button,input,textarea,select{font:inherit}
a{color:inherit;text-decoration:none}
h1,h2,h3,p,figure,ul,ol,dl,dd{margin:0}
h1,h2,h3{font-feature-settings:"palt" 1,"kern" 1;line-break:strict}
ul,ol{padding:0}
button{border:0}
[hidden]{display:none!important}
:where(a[href],button){transition-timing-function:var(--ease);transition-duration:var(--motion-fast)}
:where(a[href],button):focus-visible{
  outline:2px solid var(--focus-ring);
  outline-offset:4px;
  box-shadow:0 0 0 3px var(--white);
}
.skip-link{
  position:fixed;
  z-index:1000;
  top:12px;
  left:12px;
  transform:translateY(-160%);
  padding:10px 16px;
  background:#fff;
  color:var(--navy-deep);
  font-weight:700;
  transition:transform .2s;
}
.skip-link:focus{transform:translateY(0)}
.sr-only{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}

/* Header */
.site-header{
  position:fixed;
  z-index:200;
  inset:0 0 auto;
  height:var(--header-h);
  background:rgba(255,255,255,.98);
  color:var(--ink);
  transition:box-shadow .35s var(--ease),background-color .35s var(--ease);
}
.site-header::after{
  content:"";
  position:absolute;
  right:var(--pad);
  bottom:0;
  left:var(--pad);
  height:1px;
  background:rgba(20,21,92,.13);
}
.site-header.is-scrolled,.site-header--solid{box-shadow:0 10px 34px rgba(20,21,92,.07)}
.site-header.is-scrolled::after,.site-header--solid::after{background:rgba(20,21,92,.18)}
.header-inner{
  display:flex;
  align-items:center;
  gap:clamp(24px,3vw,50px);
  height:100%;
  max-width:1600px;
  margin:0 auto;
  padding:0 var(--pad);
}
.site-brand{
  display:inline-flex;
  flex:0 0 auto;
  flex-direction:column;
  line-height:1.25;
  letter-spacing:.055em;
}
.site-brand strong{font-size:clamp(15px,1.3vw,19px);font-weight:650}
.site-brand small{
  margin-top:6px;
  color:var(--muted);
  font-size:9px;
  font-weight:550;
  letter-spacing:.18em;
}
.global-nav{
  display:flex;
  align-items:center;
  gap:clamp(20px,2.3vw,38px);
  margin-left:auto;
}
.global-nav a{
  position:relative;
  padding:13px 0 12px;
  color:var(--ink-soft);
  font-size:12px;
  font-weight:550;
  letter-spacing:.065em;
  white-space:nowrap;
  transition:color .25s var(--ease);
}
.global-nav a::after{
  content:"";
  position:absolute;
  right:0;
  bottom:7px;
  left:0;
  height:2px;
  background:var(--navy);
  transform:scaleX(0);
  transform-origin:right;
  transition:transform .3s var(--ease);
}
.global-nav a:hover,.global-nav a[aria-current="page"]{color:var(--navy-deep)}
.global-nav a:hover::after,.global-nav a[aria-current="page"]::after{
  transform:scaleX(1);
  transform-origin:left;
}
.header-kmg{
  display:flex;
  align-items:center;
  padding-left:clamp(20px,2vw,34px);
  border-left:1px solid var(--line);
}
.header-kmg img{width:128px;height:auto}
.menu-toggle{
  display:none;
  width:48px;
  height:48px;
  margin-left:auto;
  background:transparent;
  color:var(--navy-deep);
  cursor:pointer;
}
.menu-toggle span:not(.sr-only){
  display:block;
  width:26px;
  height:1px;
  margin:7px auto;
  background:currentColor;
  transition:transform .25s var(--ease),opacity .25s var(--ease);
}
.menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.menu-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}
.mobile-drawer{
  position:fixed;
  z-index:190;
  inset:0;
  display:none;
  padding:calc(var(--header-h) + 36px) var(--pad) 44px;
  overflow:auto;
  background:var(--navy-deep);
  color:#fff;
}
.mobile-drawer[aria-hidden="false"]{display:block}
.drawer-nav{display:grid;border-top:1px solid rgba(255,255,255,.34)}
.drawer-nav a{
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:66px;
  border-bottom:1px solid rgba(255,255,255,.2);
  font-size:16px;
  font-weight:550;
  letter-spacing:.04em;
}
.drawer-nav a::after{
  content:"";
  width:7px;
  height:7px;
  border-top:1px solid currentColor;
  border-right:1px solid currentColor;
  transform:rotate(45deg);
}
.drawer-nav a[aria-current="page"]{color:#bfc4ff}
.drawer-meta{
  display:grid;
  gap:6px;
  margin-top:32px;
  color:rgba(255,255,255,.76);
  font-size:12px;
  line-height:1.8;
}
.drawer-meta .drawer-tel{
  color:#fff;
  font-family:var(--font-num);
  font-size:28px;
  letter-spacing:.045em;
}
.drawer-kmg{display:inline-block;width:154px;margin-top:34px}
.drawer-kmg img{width:100%;height:auto}
.nojs-nav{display:none}

/* Film hero: HTML structure and controls remain unchanged */
.film-hero{
  position:relative;
  height:100svh;
  min-height:640px;
  overflow:hidden;
  background:#172131;
  color:#fff;
}
.film-media{position:absolute;inset:0;background:#172131 url("../media/plant-hero-v3-poster.webp") center/cover no-repeat}
.film-media video{width:100%;height:100%;object-fit:cover;object-position:center}
.film-shade{
  position:absolute;
  inset:0;
  background:
    linear-gradient(180deg,rgba(9,14,26,.34) 0%,rgba(9,14,26,.04) 26%,rgba(9,14,26,.04) 58%,rgba(9,14,26,.6) 100%),
    linear-gradient(90deg,rgba(9,14,26,.22),transparent 52%);
}
.film-copy{
  position:absolute;
  right:var(--pad);
  bottom:clamp(58px,8vh,104px);
  left:var(--pad);
  max-width:1040px;
}
.film-copy .location{
  margin-bottom:15px;
  color:rgba(255,255,255,.84);
  font-size:11px;
  font-weight:550;
  letter-spacing:.18em;
}
.film-copy h1{
  font-size:clamp(34px,4.6vw,70px);
  font-weight:600;
  line-height:1.25;
  letter-spacing:.07em;
  text-shadow:0 2px 24px rgba(0,0,0,.28);
}
.film-copy .business-lines{
  display:flex;
  flex-wrap:wrap;
  gap:7px 24px;
  margin-top:22px;
  color:rgba(255,255,255,.92);
  font-size:clamp(13px,1.1vw,16px);
  font-weight:450;
  letter-spacing:.035em;
}
.film-copy .business-lines span+span{position:relative;padding-left:24px}
.film-copy .business-lines span+span::before{
  content:"";
  position:absolute;
  top:.62em;
  left:0;
  width:1px;
  height:1em;
  background:rgba(255,255,255,.48);
}
.film-controls{
  position:absolute;
  right:var(--pad);
  bottom:30px;
  display:flex;
  align-items:center;
  gap:14px;
  color:rgba(255,255,255,.82);
}
.film-note{font-size:10px;letter-spacing:.1em}
.film-toggle{
  display:inline-flex;
  align-items:center;
  gap:10px;
  min-height:36px;
  padding:5px 0;
  background:transparent;
  color:#fff;
  font-size:11px;
  letter-spacing:.07em;
  cursor:pointer;
}
.film-toggle::before{
  content:"";
  width:9px;
  height:11px;
  border-right:3px solid currentColor;
  border-left:3px solid currentColor;
}
.film-toggle.is-paused::before{
  width:0;
  height:0;
  border-top:6px solid transparent;
  border-right:0;
  border-bottom:6px solid transparent;
  border-left:9px solid currentColor;
}
.save-data .film-media video{display:none}

/* Shared editorial layout */
.container{width:min(100%,var(--max));margin:0 auto;padding-right:var(--pad);padding-left:var(--pad)}
.section{padding-top:var(--section-lg);padding-bottom:var(--section-lg)}
.section-grid,.content-grid{
  display:grid;
  grid-template-columns:minmax(200px,.29fr) minmax(0,1fr);
  gap:clamp(54px,8vw,132px);
}
.section-title,.content-heading{align-self:start}
.section-title::before,.content-heading::before,.page-hero-content::before{
  display:block;
  color:var(--navy);
  font-family:var(--font-num);
  font-size:11px;
  font-weight:550;
  letter-spacing:.19em;
  line-height:1;
}
.section-title[data-label]::before,.page-hero-content[data-label]::before{content:attr(data-label)}
.section-title h2::before,.content-heading h2::before{
  content:"";
  display:block;
  width:44px;
  height:1px;
  margin:17px 0 24px;
  background:var(--navy);
}
.section-title h2{
  font-size:clamp(20px,1.75vw,27px);
  font-weight:650;
  line-height:1.55;
  letter-spacing:.035em;
}
.section-body,.content-body{min-width:0}
.intro-copy{
  max-width:36em;
  font-size:clamp(23px,2.05vw,33px);
  font-weight:520;
  line-height:1.82;
  letter-spacing:.02em;
}
.body-copy,.content-body>p{
  max-width:var(--measure);
  color:var(--ink-soft);
  font-size:16px;
  line-height:2.08;
  letter-spacing:.012em;
}
.body-copy+.body-copy,.content-body>p+p{margin-top:22px}
.intro-sub{margin-top:30px}
.source-note{
  color:var(--muted);
  font-size:11px;
  line-height:1.75;
  letter-spacing:.025em;
}
.text-link,.map-link{
  display:inline-flex;
  align-items:center;
  gap:14px;
  min-height:38px;
  padding:0 0 3px;
  border-bottom:1px solid currentColor;
  color:var(--navy-deep);
  font-size:13px;
  font-weight:650;
  letter-spacing:.045em;
  transition:gap .25s var(--ease),color .25s var(--ease);
}
.text-link{margin-top:28px}
.text-link::after,.map-link::after,.group-links a::after,.company-row a::after{
  content:"";
  width:7px;
  height:7px;
  border-top:1px solid currentColor;
  border-right:1px solid currentColor;
  transform:rotate(45deg);
}
.text-link:hover,.map-link:hover,.group-links a:hover,.company-row a:hover{
  gap:20px;
  color:var(--navy);
}
.content-body>p a,.doc p a{
  color:var(--navy-deep);
  text-decoration:underline;
  text-decoration-color:#9aa2cf;
  text-decoration-thickness:1px;
  text-underline-offset:4px;
  transition:color .2s,text-decoration-color .2s;
}
.content-body>p a:hover,.doc p a:hover{color:var(--navy);text-decoration-color:currentColor}

/* Home: business */
.business-story{background:var(--surface);color:var(--ink)}
.business-story .container{padding-top:var(--section-lg);padding-bottom:var(--section-lg)}
.business-story>.container>.section-grid{align-items:start}
.business-story .section-title{position:sticky;top:calc(var(--header-h) + 40px)}
.business-list{counter-reset:business;border-top:2px solid var(--navy-deep)}
.business-item{
  display:grid;
  grid-template-columns:minmax(0,1.08fr) minmax(310px,.92fr);
  gap:clamp(38px,5.5vw,82px);
  align-items:center;
  padding:clamp(68px,7vw,104px) 0;
  border-bottom:1px solid var(--line-strong);
  counter-increment:business;
}
.business-media{background:transparent}
.business-media img{
  width:100%;
  height:auto;
  border-radius:2px;
  background:var(--surface-deep);
}
.business-media figcaption,.wide-media figcaption{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  margin-top:10px;
  color:#58636f;
  font-size:10px;
  line-height:1.6;
  letter-spacing:.045em;
  text-align:right;
}
.business-media figcaption::before,.wide-media figcaption::before{
  content:"";
  width:24px;
  height:1px;
  background:var(--line-strong);
}
.business-text{max-width:540px}
.business-text::before{
  content:"0" counter(business);
  display:block;
  margin-bottom:18px;
  color:var(--navy);
  font-family:var(--font-num);
  font-size:13px;
  font-weight:550;
  letter-spacing:.16em;
}
.business-text h3{
  font-size:clamp(25px,2.45vw,38px);
  font-weight:620;
  line-height:1.55;
  letter-spacing:.02em;
}
.business-text p{
  max-width:38em;
  margin-top:20px;
  color:var(--ink-soft);
  font-size:15px;
  line-height:2.05;
  letter-spacing:.01em;
}

/* Home: history */
.history-band{background:var(--navy);color:#fff}
.history-band .section-title::before{color:#c8ccff}
.history-band .section-title h2::before{background:rgba(255,255,255,.7)}
.history-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid rgba(255,255,255,.42)}
.history-item{padding:44px 34px 48px 0;border-bottom:1px solid rgba(255,255,255,.28)}
.history-item+.history-item{padding-left:44px;border-left:1px solid rgba(255,255,255,.28)}
.history-year{
  color:#fff;
  font-family:var(--font-num);
  font-size:clamp(56px,6.8vw,94px);
  font-weight:450;
  line-height:1;
  letter-spacing:.025em;
}
.history-item p:not(.history-year){
  max-width:430px;
  margin-top:23px;
  color:rgba(255,255,255,.82);
  font-size:14px;
  line-height:1.95;
}
.history-source{margin-top:18px;color:rgba(255,255,255,.72)}
.history-band .text-link{color:#fff}

/* Group presentation */
.group-signature{
  display:grid;
  grid-template-columns:minmax(300px,.72fr) minmax(0,1fr);
  gap:clamp(56px,8vw,126px);
  align-items:center;
}
.group-logo-panel{
  display:flex;
  min-height:268px;
  align-items:center;
  justify-content:center;
  padding:54px;
  border:1px solid var(--line);
  background:var(--surface);
}
.group-logo-panel img{width:min(100%,310px);height:auto}
.group-copy::before{
  content:"KMG GROUP";
  display:block;
  margin-bottom:19px;
  color:var(--navy);
  font-family:var(--font-num);
  font-size:11px;
  font-weight:550;
  letter-spacing:.19em;
}
.group-copy h2{
  font-size:clamp(27px,2.8vw,43px);
  font-weight:620;
  line-height:1.55;
  letter-spacing:.025em;
}
.group-copy p{
  max-width:39em;
  margin-top:23px;
  color:var(--ink-soft);
  line-height:2.05;
}
.group-links{display:flex;flex-wrap:wrap;gap:16px 34px;margin-top:28px}
.group-links a,.company-row a{
  display:inline-flex;
  align-items:center;
  gap:12px;
  min-height:34px;
  padding-bottom:3px;
  border-bottom:1px solid currentColor;
  color:var(--navy-deep);
  font-size:12px;
  font-weight:650;
  letter-spacing:.04em;
  white-space:nowrap;
  transition:gap .25s var(--ease),color .25s var(--ease);
}

/* Contact bands */
.contact-panel{background:var(--surface)}
.contact-grid{
  display:grid;
  grid-template-columns:minmax(230px,.58fr) minmax(0,1fr);
  gap:clamp(52px,8vw,120px);
  align-items:start;
}
.contact-grid h2::before{
  content:"CONTACT";
  display:block;
  margin-bottom:18px;
  color:var(--navy);
  font-family:var(--font-num);
  font-size:11px;
  font-weight:550;
  letter-spacing:.19em;
  line-height:1;
}
.contact-grid h2{
  font-size:clamp(25px,2.8vw,42px);
  font-weight:620;
  line-height:1.55;
  letter-spacing:.025em;
}
.contact-details{display:grid;gap:0;border-top:2px solid var(--navy-deep)}
.contact-line{
  display:grid;
  grid-template-columns:96px minmax(0,1fr);
  gap:24px;
  align-items:center;
  min-height:76px;
  padding:18px 0;
  border-bottom:1px solid var(--line-strong);
}
.contact-line dt{
  color:var(--muted);
  font-size:11px;
  font-weight:650;
  letter-spacing:.13em;
}
.contact-line dd{overflow-wrap:anywhere;font-size:16px;font-weight:520;letter-spacing:.01em}
.contact-line a:not(.tel){
  text-decoration:underline;
  text-decoration-color:transparent;
  text-underline-offset:4px;
  transition:color .2s,text-decoration-color .2s;
}
.contact-line a:not(.tel):hover{color:var(--navy);text-decoration-color:currentColor}
.contact-line .tel{
  color:var(--navy-deep);
  font-family:var(--font-num);
  font-size:clamp(27px,2.8vw,38px);
  font-weight:520;
  letter-spacing:.055em;
  line-height:1.15;
}
.spaced-contact{margin-top:38px}

/* Footer */
.site-footer{background:var(--navy-deep);color:#fff}
.footer-main{
  display:grid;
  grid-template-columns:minmax(320px,.82fr) minmax(440px,1.18fr);
  gap:clamp(64px,9vw,138px);
  padding-top:84px;
  padding-bottom:74px;
}
.footer-company::before{
  content:"COMPANY";
  display:block;
  margin-bottom:16px;
  color:rgba(255,255,255,.72);
  font-family:var(--font-num);
  font-size:10px;
  letter-spacing:.2em;
}
.footer-company h2{font-size:20px;font-weight:620;letter-spacing:.055em}
.footer-company address{
  margin-top:22px;
  color:rgba(255,255,255,.76);
  font-style:normal;
  font-size:12px;
  line-height:2.05;
  letter-spacing:.02em;
}
.footer-company address a{
  text-decoration:underline;
  text-decoration-color:transparent;
  text-underline-offset:4px;
  transition:text-decoration-color .2s;
}
.footer-company address a:hover{text-decoration-color:currentColor}
.footer-group{
  display:flex;
  align-items:center;
  gap:24px;
  margin-top:34px;
  color:rgba(255,255,255,.72);
  font-size:10px;
  letter-spacing:.035em;
}
.footer-group img{width:136px;height:auto}
.footer-links{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  align-content:start;
  border-top:1px solid rgba(255,255,255,.4);
}
.footer-links a{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:58px;
  padding:14px 0;
  border-bottom:1px solid rgba(255,255,255,.22);
  color:rgba(255,255,255,.86);
  font-size:12px;
  font-weight:500;
  letter-spacing:.035em;
  transition:color .2s,padding .25s var(--ease);
}
.footer-links a::after{
  content:"";
  width:6px;
  height:6px;
  margin-right:4px;
  border-top:1px solid currentColor;
  border-right:1px solid currentColor;
  opacity:.58;
  transform:rotate(45deg);
}
.footer-links a:hover{padding-left:5px;color:#fff}
.footer-links a:nth-child(odd){padding-right:22px}
.footer-links a:nth-child(even){padding-left:22px;border-left:1px solid rgba(255,255,255,.22)}
.footer-links a:nth-child(even):hover{padding-left:27px}
.footer-bottom{
  display:flex;
  justify-content:space-between;
  gap:24px;
  padding-top:21px;
  padding-bottom:23px;
  border-top:1px solid rgba(255,255,255,.22);
  color:rgba(255,255,255,.72);
  font-size:10px;
  letter-spacing:.055em;
}

/* Subpage title */
.page-hero{
  position:relative;
  display:flex;
  min-height:clamp(330px,31vw,430px);
  align-items:flex-end;
  border-bottom:1px solid var(--line);
  background:#fff;
  color:var(--ink);
}
.page-hero-content{
  position:relative;
  z-index:1;
  width:100%;
  padding-top:calc(var(--header-h) + clamp(62px,7vw,96px));
  padding-bottom:clamp(48px,5.5vw,74px);
}
.page-hero-content::before{margin-bottom:20px}
.page-hero .location{
  margin-bottom:12px;
  color:var(--muted);
  font-size:10px;
  font-weight:520;
  letter-spacing:.14em;
}
.page-hero h1{
  max-width:16em;
  font-size:clamp(36px,4.4vw,60px);
  font-weight:620;
  line-height:1.35;
  letter-spacing:.045em;
}
.page-hero--plain{background:#fff}

/* Subpage editorial content */
.content-section{
  padding-top:var(--section-md);
  padding-bottom:var(--section-md);
  border-bottom:1px solid var(--line);
}
.content-section+.content-section{padding-top:clamp(82px,6.8vw,110px);padding-bottom:clamp(82px,6.8vw,110px)}
.content-section--surface{background:var(--surface)}
.content-section--dark{border-color:rgba(255,255,255,.2);background:var(--navy-deep);color:#fff}
.content-heading::before{min-height:11px}
.content-heading h2{
  font-size:clamp(23px,2.25vw,34px);
  font-weight:630;
  line-height:1.58;
  letter-spacing:.025em;
}
.content-section--dark .content-heading::before{color:#c8ccff}
.content-section--dark .content-heading h2::before{background:rgba(255,255,255,.7)}
.content-section--dark .content-body>p{color:rgba(255,255,255,.82)}

/* Media */
.wide-media{margin-top:50px;background:transparent}
.wide-media img{
  width:100%;
  height:auto;
  border-radius:2px;
  background:var(--surface-deep);
}

/* Tables and structured data */
.info-table{
  width:100%;
  border-spacing:0;
  border-collapse:separate;
  border-top:2px solid var(--navy-deep);
}
.info-table th,.info-table td{
  border-bottom:1px solid var(--line-strong);
  text-align:left;
  vertical-align:top;
  line-height:1.95;
}
.info-table th{
  width:224px;
  padding:21px 24px;
  background:rgba(20,21,92,.035);
  color:var(--navy-deep);
  font-size:11px;
  font-weight:650;
  letter-spacing:.09em;
}
.info-table td{
  padding:21px 28px;
  color:var(--ink-soft);
  font-size:15px;
  letter-spacing:.01em;
}
.info-table td a{
  color:var(--navy-deep);
  text-decoration:underline;
  text-decoration-color:transparent;
  text-underline-offset:4px;
  transition:text-decoration-color .2s;
}
.info-table td a:hover{text-decoration-color:currentColor}
.spaced-table{margin-top:40px}
.content-section--dark .info-table{border-color:rgba(255,255,255,.7)}
.content-section--dark .info-table th,.content-section--dark .info-table td{border-color:rgba(255,255,255,.28)}
.content-section--dark .info-table th{background:rgba(255,255,255,.05);color:rgba(255,255,255,.78)}

.detail-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  border-top:2px solid var(--navy-deep);
  counter-reset:detail;
}
.detail-list>div{
  position:relative;
  min-height:136px;
  padding:28px 30px 29px 0;
  border-bottom:1px solid var(--line-strong);
  counter-increment:detail;
}
.detail-list>div:nth-child(even){
  padding-right:0;
  padding-left:32px;
  border-left:1px solid var(--line-strong);
}
.detail-list>div::before{
  content:"0" counter(detail);
  display:block;
  margin-bottom:10px;
  color:var(--navy);
  font-family:var(--font-num);
  font-size:10px;
  font-weight:550;
  letter-spacing:.16em;
}
.detail-list dt{font-size:15px;font-weight:650;letter-spacing:.025em}
.detail-list dd{margin-top:8px;color:var(--muted);font-size:13px;line-height:1.8}
.permit-note{
  max-width:var(--measure);
  margin-top:22px;
  color:var(--muted);
  font-size:11px;
  line-height:1.9;
  letter-spacing:.02em;
}
.timeline{list-style:none;border-top:2px solid var(--navy-deep)}
.timeline li{
  position:relative;
  display:grid;
  grid-template-columns:150px minmax(0,1fr);
  gap:36px;
  align-items:start;
  padding:30px 0;
  border-bottom:1px solid var(--line-strong);
}
.timeline time{
  color:var(--navy-deep);
  font-family:var(--font-num);
  font-size:28px;
  font-weight:500;
  letter-spacing:.055em;
  line-height:1.4;
}
.timeline p{max-width:38em;color:var(--ink-soft);line-height:1.95}
.company-list{border-top:2px solid var(--navy-deep)}
.company-row{
  display:grid;
  grid-template-columns:minmax(210px,.8fr) minmax(0,1.45fr) auto;
  gap:38px;
  align-items:center;
  min-height:112px;
  padding:27px 0;
  border-bottom:1px solid var(--line-strong);
}
.company-row h3{font-size:18px;font-weight:650;line-height:1.65;letter-spacing:.02em}
.company-row p{max-width:38em;color:var(--muted);font-size:13px;line-height:1.85}
.map-link{margin-top:25px}
.inline-doc-link{text-decoration:underline;text-underline-offset:4px}

/* Privacy document */
.doc{
  max-width:1010px;
  margin:0 auto;
  padding-top:var(--section-md);
  padding-bottom:var(--section-lg);
}
.doc h2{
  position:relative;
  max-width:var(--measure);
  margin-top:58px;
  padding-top:24px;
  border-top:1px solid var(--line-strong);
  font-size:20px;
  font-weight:650;
  line-height:1.65;
  letter-spacing:.025em;
}
.doc h2:first-child{
  margin-top:0;
  border-top:2px solid var(--navy-deep);
}
.doc p{
  max-width:var(--measure);
  margin-top:17px;
  color:var(--ink-soft);
  line-height:2.08;
  letter-spacing:.01em;
}

/* 404 */
.not-found{
  position:relative;
  isolation:isolate;
  display:grid;
  min-height:calc(100svh - var(--header-h));
  place-items:center;
  overflow:hidden;
  padding:calc(var(--header-h) + 82px) var(--pad) 112px;
  background:var(--navy-deep);
  color:#fff;
  text-align:center;
}
.not-found::before{
  content:attr(data-label);
  position:absolute;
  z-index:-1;
  top:50%;
  left:50%;
  color:rgba(255,255,255,.055);
  font-family:var(--font-num);
  font-size:clamp(180px,30vw,420px);
  font-weight:500;
  line-height:1;
  letter-spacing:.02em;
  transform:translate(-50%,-54%);
}
.not-found>div{position:relative}
.not-found h1{
  font-size:clamp(31px,4.8vw,62px);
  font-weight:600;
  line-height:1.55;
  letter-spacing:.035em;
}
.not-found p{
  max-width:36em;
  margin:24px auto 0;
  color:rgba(255,255,255,.78);
  font-size:14px;
}
.not-found .text-link{margin-top:34px;color:#fff}

/* Group page photo */

@media (max-width:1100px){
  :root{--header-h:80px}
  .global-nav{gap:18px}
  .global-nav a{font-size:11px}
  .header-kmg{display:none}
  .business-item{grid-template-columns:1fr}
  .business-media,.business-text{max-width:820px}
  .footer-main{grid-template-columns:minmax(280px,.85fr) minmax(380px,1.15fr);gap:54px}
}

@media (max-width:820px){
  :root{
    --header-h:72px;
    --pad:clamp(20px,5.2vw,32px);
    --section-lg:clamp(80px,13vw,104px);
    --section-md:clamp(72px,11vw,90px);
  }
  .site-header::after{right:20px;left:20px}
  .header-inner{padding:0 20px}
  .site-brand strong{font-size:15px}
  .site-brand small{display:none}
  .global-nav{display:none}
  .menu-toggle{display:block}
  .nojs-nav{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    margin-top:var(--header-h);
    padding:18px 20px;
    border-top:1px solid rgba(255,255,255,.22);
    background:var(--navy-deep);
    color:#fff;
  }
  .nojs-nav a{padding:10px 0;border-bottom:1px solid rgba(255,255,255,.18);font-size:12px}
  .nojs-nav a:nth-child(even){padding-left:16px;border-left:1px solid rgba(255,255,255,.18)}
  .film-hero{min-height:600px}
  .film-media video{object-position:42% center}
  .film-copy{right:22px;bottom:82px;left:22px}
  .film-copy h1{font-size:clamp(28px,8vw,42px);letter-spacing:.05em}
  .film-copy .business-lines{display:grid;gap:3px;margin-top:17px;font-size:12px;line-height:1.75}
  .film-copy .business-lines span+span{padding-left:0}
  .film-copy .business-lines span+span::before{display:none}
  .film-controls{right:22px;bottom:23px}
  .film-note{display:none}
  .section-grid,.content-grid,.contact-grid{grid-template-columns:1fr;gap:34px}
  .section-title,.business-story .section-title{position:static}
  .section-title h2::before,.content-heading h2::before{margin:14px 0 20px}
  .section-title h2{font-size:24px}
  .intro-copy{max-width:34em;font-size:clamp(21px,5.7vw,29px);line-height:1.85}
  .business-item{gap:30px;padding:56px 0}
  .business-media,.business-text{max-width:none}
  .business-text::before{margin-bottom:13px}
  .business-text h3{font-size:clamp(24px,6.4vw,29px)}
  .business-text p{margin-top:17px}
  .history-list{grid-template-columns:1fr}
  .history-item{padding:34px 0 38px}
  .history-item+.history-item{padding-left:0;border-left:0}
  .history-year{font-size:64px}
  .group-signature{grid-template-columns:1fr;gap:42px}
  .group-logo-panel{min-height:220px;padding:44px}
  .contact-grid h2{font-size:30px}
  .footer-main{grid-template-columns:1fr;gap:58px;padding-top:66px;padding-bottom:58px}
  .footer-links{margin-top:0}
  .page-hero{min-height:310px}
  .page-hero-content{padding-top:calc(var(--header-h) + 58px);padding-bottom:46px}
  .page-hero-content::before{margin-bottom:17px}
  .page-hero h1{font-size:clamp(30px,8.4vw,42px)}
  .content-section+.content-section{padding-top:var(--section-md);padding-bottom:var(--section-md)}
  .content-heading h2{font-size:24px}
  .wide-media{margin-top:38px}
  .company-row{grid-template-columns:1fr;gap:10px;align-items:start;padding:26px 0}
  .company-row a{justify-self:start;margin-top:3px}
  .doc{padding-right:var(--pad);padding-left:var(--pad)}
}

@media (max-width:560px){
  body{font-size:15px}
  .drawer-nav a{min-height:62px;font-size:15px}
  .film-copy .location{font-size:10px}
  .film-copy h1{font-size:28px}
  .section-title::before,.content-heading::before,.page-hero-content::before{font-size:10px}
  .section-title h2,.content-heading h2{font-size:22px}
  .intro-copy{font-size:21px;line-height:1.85}
  .body-copy,.content-body>p{font-size:15px;line-height:2}
  .business-item{padding:50px 0}
  .business-media figcaption,.wide-media figcaption{font-size:9px}
  .business-text h3{font-size:24px}
  .history-year{font-size:58px}
  .group-logo-panel{min-height:194px;padding:38px}
  .group-copy h2{font-size:26px}
  .contact-grid h2{font-size:27px}
  .contact-line{grid-template-columns:1fr;gap:5px;min-height:0;padding:18px 0}
  .contact-line dd{font-size:14px}
  .contact-line .tel{font-size:29px}
  .footer-company h2{font-size:18px}
  .footer-group{align-items:flex-start;flex-direction:column;gap:18px}
  .footer-links a{min-height:52px;padding:12px 14px 12px 0;font-size:11px;line-height:1.55}
  .footer-links a:nth-child(odd){padding-right:14px}
  .footer-links a:nth-child(even){padding-right:0;padding-left:14px}
  .footer-links a:nth-child(even):hover{padding-left:18px}
  .footer-links a::after{flex:0 0 auto}
  .footer-bottom{display:grid;gap:7px}
  .page-hero{min-height:286px}
  .page-hero-content{padding-top:calc(var(--header-h) + 48px);padding-bottom:38px}
  .page-hero .location{font-size:9px}
  .page-hero h1{font-size:29px;line-height:1.5}
  .info-table,.info-table tbody,.info-table tr,.info-table th,.info-table td{
    display:block;
    width:100%;
  }
  .info-table tr{padding:20px 0;border-bottom:1px solid var(--line-strong)}
  .info-table th,.info-table td{padding:0;border:0;background:transparent}
  .info-table th{color:var(--navy);font-size:10px}
  .info-table td{margin-top:7px;font-size:14px;line-height:1.9}
  .detail-list{grid-template-columns:1fr}
  .detail-list>div{min-height:0;padding:23px 0 24px}
  .detail-list>div:nth-child(even){padding-right:0;padding-left:0;border-left:0}
  .timeline li{grid-template-columns:1fr;gap:8px;padding:24px 0}
  .timeline time{font-size:25px}
  .doc h2{margin-top:48px;padding-top:21px;font-size:18px}
  .doc p{font-size:14px;line-height:2.05}
  .not-found{padding-right:20px;padding-left:20px}
  .not-found h1{font-size:28px}
  .not-found p{font-size:13px}
}

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

/* Editorial system: breadcrumbs and page index */
.breadcrumb{
  border-bottom:1px solid var(--line-assist);
  background:var(--white);
}
.breadcrumb ol{
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-1);
  align-items:center;
  min-height:var(--space-6);
  list-style:none;
}
.breadcrumb li{
  display:flex;
  align-items:center;
  color:var(--muted);
  font-size:var(--type-xs);
  line-height:1.5;
}
.breadcrumb li+li::before{
  content:"/";
  margin-right:var(--space-1);
  color:var(--line-row);
  font-family:var(--font-num);
}
.breadcrumb a{
  color:var(--navy-deep);
  text-decoration:underline;
  text-decoration-color:transparent;
  text-underline-offset:4px;
}
.breadcrumb a:hover{text-decoration-color:currentColor}
.page-index{
  padding:var(--space-6) 0;
  border-bottom:1px solid var(--line-assist);
  background:var(--surface);
}
.page-index-inner{
  display:grid;
  grid-template-columns:minmax(180px,.29fr) minmax(0,1fr);
  gap:clamp(var(--space-6),8vw,var(--space-16));
  align-items:start;
}
.page-index h2{
  color:var(--navy-deep);
  font-size:var(--type-sm);
  font-weight:650;
  letter-spacing:.09em;
}
.page-index ol{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0 var(--space-4);
  list-style:none;
  border-top:2px solid var(--line-section);
}
.page-index li{border-bottom:1px solid var(--line-row)}
.page-index a{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:var(--space-2);
  align-items:center;
  min-height:var(--space-8);
  color:var(--ink-soft);
  font-size:var(--type-sm);
}
.page-index .index-num{
  color:var(--navy);
  font-family:var(--font-num);
  font-variant-numeric:tabular-nums;
  letter-spacing:.1em;
}
.page-index a::after{
  content:"";
  width:7px;
  height:7px;
  border-right:1px solid currentColor;
  border-bottom:1px solid currentColor;
  transform:rotate(45deg) translateY(-2px);
}

/* Four reusable section patterns
   01 split-led / 02 number-led / 03 table-led / 04 media-led */
.pattern-split{border-bottom:1px solid var(--line-assist)}
.pattern-split .content-grid{align-items:start}
.pattern-number{
  padding:var(--section-md) 0;
  border-bottom:2px solid var(--line-section);
  background:var(--navy-deep);
  color:var(--white);
}
.pattern-number .pattern-kicker,
.pattern-table .pattern-kicker,
.pattern-media .pattern-kicker{
  margin-bottom:var(--space-2);
  color:var(--navy);
  font-family:var(--font-num);
  font-size:var(--type-xs);
  font-weight:550;
  letter-spacing:.18em;
  line-height:1;
}
.pattern-number .pattern-kicker{color:#c8ccff}
.pattern-number h2,
.pattern-table h2,
.pattern-media h2{
  font-size:clamp(var(--type-xl),3vw,var(--type-3xl));
  font-weight:620;
  line-height:1.55;
  letter-spacing:.025em;
}
.pattern-number .section-lead{
  max-width:var(--measure);
  margin-top:var(--space-3);
  color:rgba(255,255,255,.78);
}
.pattern-number .timeline{border-color:rgba(255,255,255,.58)}
.pattern-number .timeline li{border-color:rgba(255,255,255,.32)}
.pattern-number .timeline time{color:var(--white)}
.pattern-number .timeline p{color:rgba(255,255,255,.84)}
.number-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  margin-top:var(--space-6);
  border-top:1px solid rgba(255,255,255,.5);
}
.number-grid--two{grid-template-columns:repeat(2,minmax(0,1fr))}
.number-grid--single{grid-template-columns:minmax(0,1fr)}
.number-card{
  min-width:0;
  padding:var(--space-4) var(--space-4) var(--space-5) 0;
  border-bottom:1px solid rgba(255,255,255,.32);
}
.number-card+.number-card{
  padding-left:var(--space-4);
  border-left:1px solid rgba(255,255,255,.32);
}
.number-value,
.num-display{
  font-family:var(--font-num);
  font-variant-numeric:tabular-nums;
}
.number-value{
  display:block;
  font-size:clamp(var(--type-3xl),6.3vw,var(--type-5xl));
  font-weight:450;
  line-height:1;
  letter-spacing:.035em;
}
.number-label{
  display:block;
  margin-top:var(--space-3);
  color:rgba(255,255,255,.82);
  font-size:var(--type-sm);
  line-height:1.9;
}
.pattern-table{
  padding:var(--section-md) 0;
  border-bottom:2px solid var(--line-section);
  background:var(--surface);
}
.pattern-table-head{
  display:grid;
  grid-template-columns:minmax(220px,.58fr) minmax(0,1fr);
  gap:clamp(var(--space-6),8vw,var(--space-16));
  align-items:end;
  margin-bottom:var(--space-6);
}
.pattern-table-head p{
  max-width:var(--measure);
  color:var(--ink-soft);
  line-height:2.08;
}
.pattern-table .info-table{background:var(--white)}
.pattern-media{
  padding:var(--section-md) 0;
  border-bottom:1px solid var(--line-assist);
  background:var(--white);
}
.media-layout{
  display:grid;
  grid-template-columns:minmax(0,1.28fr) minmax(300px,.72fr);
  gap:clamp(var(--space-5),7vw,var(--space-12));
  align-items:center;
}
.media-layout--reverse{grid-template-columns:minmax(300px,.72fr) minmax(0,1.28fr)}
.media-layout--reverse .media-feature{order:2}
.media-feature img{
  width:100%;
  background:var(--surface-deep);
}
.media-feature figcaption{
  display:flex;
  gap:var(--space-2);
  justify-content:flex-end;
  margin-top:var(--space-1);
  color:var(--muted);
  font-size:var(--type-xs);
  letter-spacing:.04em;
}
.media-feature figcaption::before{
  content:"";
  width:var(--space-3);
  height:1px;
  margin-top:.85em;
  background:var(--line-row);
}
.media-copy p{
  margin-top:var(--space-3);
  color:var(--ink-soft);
  line-height:2.08;
}

/* References, definitions and inquiry guides */
.reference-panel{
  margin-top:var(--space-5);
  padding:var(--space-4);
  border-top:2px solid var(--line-section);
  border-bottom:1px solid var(--line-row);
  background:var(--surface);
}
.reference-panel h3,
.inquiry-guide h3,
.definition-card h3{
  color:var(--navy-deep);
  font-size:var(--type-md);
  font-weight:650;
  line-height:1.7;
  letter-spacing:.025em;
}
.reference-panel p{
  margin-top:var(--space-2);
  color:var(--ink-soft);
  line-height:2;
}
.reference-panel .source-note{margin-top:var(--space-2)}
.source-note a{text-decoration:underline;text-underline-offset:3px}
.definition-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  margin-top:var(--space-5);
  border-top:2px solid var(--line-section);
}
.definition-card{
  padding:var(--space-4) var(--space-4) var(--space-5) 0;
  border-bottom:1px solid var(--line-row);
}
.definition-card:nth-child(even){
  padding-right:0;
  padding-left:var(--space-4);
  border-left:1px solid var(--line-row);
}
.definition-card .definition-label{
  display:block;
  margin-bottom:var(--space-2);
  color:var(--navy);
  font-family:var(--font-num);
  font-size:var(--type-xs);
  letter-spacing:.15em;
}
.definition-card p{
  margin-top:var(--space-2);
  color:var(--ink-soft);
  font-size:var(--type-sm);
  line-height:2;
}
.definition-card .examples{
  color:var(--muted);
  font-size:var(--type-xs);
}
.inquiry-guide{
  margin-top:var(--space-5);
  padding-top:var(--space-4);
  border-top:2px solid var(--line-section);
}
.inquiry-guide>p{
  margin-top:var(--space-1);
  color:var(--muted);
  font-size:var(--type-sm);
}
.inquiry-guide .detail-list{margin-top:var(--space-3)}
.permit-display{
  display:grid;
  grid-template-columns:minmax(180px,.38fr) minmax(0,1fr);
  gap:var(--space-4);
  align-items:end;
  margin-top:var(--space-5);
  padding:var(--space-5) 0;
  border-top:2px solid var(--line-section);
  border-bottom:1px solid var(--line-row);
}
.permit-display dt{
  color:var(--muted);
  font-size:var(--type-xs);
  font-weight:650;
  letter-spacing:.1em;
}
.permit-display dd{
  color:var(--navy-deep);
  font-family:var(--font-num);
  font-size:clamp(var(--type-xl),4vw,var(--type-4xl));
  font-variant-numeric:tabular-nums;
  line-height:1.1;
  letter-spacing:.04em;
}
.section-note{
  max-width:var(--measure);
  margin-top:var(--space-3);
  color:var(--muted);
  font-size:var(--type-sm);
  line-height:1.95;
}
.section-note strong{color:var(--ink);font-weight:650}
.guide-table td:first-child{font-weight:650}
.phone-stage{
  display:grid;
  grid-template-columns:minmax(180px,.38fr) minmax(0,1fr);
  gap:var(--space-4);
  align-items:center;
  padding:var(--space-5) 0;
  border-top:2px solid var(--line-section);
  border-bottom:1px solid var(--line-row);
}
.phone-stage dt{
  color:var(--muted);
  font-size:var(--type-sm);
  font-weight:650;
  letter-spacing:.1em;
}
.phone-stage dd{min-width:0}
.phone-stage a{
  color:var(--navy-deep);
  font-family:var(--font-num);
  font-size:clamp(var(--type-2xl),5vw,var(--type-5xl));
  font-variant-numeric:tabular-nums;
  letter-spacing:.045em;
  line-height:1.1;
}
.compact-list{
  display:grid;
  gap:0;
  margin-top:var(--space-4);
  list-style:none;
  border-top:2px solid var(--line-section);
}
.compact-list li{
  padding:var(--space-2) 0;
  border-bottom:1px solid var(--line-row);
  color:var(--ink-soft);
}

/* Related-page circulation */
.related-pages{
  padding:var(--space-10) 0 var(--space-12);
  border-top:2px solid var(--line-section);
  background:var(--white);
}
.related-pages-head{
  display:flex;
  justify-content:space-between;
  gap:var(--space-4);
  align-items:end;
  margin-bottom:var(--space-4);
}
.related-pages .pattern-kicker{
  margin-bottom:var(--space-1);
  color:var(--navy);
  font-family:var(--font-num);
  font-size:var(--type-xs);
  letter-spacing:.18em;
}
.related-pages h2{
  font-size:var(--type-xl);
  font-weight:650;
  letter-spacing:.025em;
}
.related-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  border-top:1px solid var(--line-row);
}
.related-card{
  position:relative;
  display:grid;
  gap:var(--space-2);
  min-height:192px;
  padding:var(--space-4) var(--space-8) var(--space-4) 0;
  border-bottom:1px solid var(--line-row);
}
.related-card+.related-card{
  padding-right:0;
  padding-left:var(--space-4);
  border-left:1px solid var(--line-row);
}
.related-card .related-label{
  color:var(--navy);
  font-family:var(--font-num);
  font-size:var(--type-xs);
  letter-spacing:.15em;
}
.related-card strong{
  align-self:end;
  font-size:var(--type-lg);
  font-weight:650;
}
.related-card p{
  max-width:34em;
  color:var(--muted);
  font-size:var(--type-sm);
  line-height:1.85;
}
.related-card::after{
  content:"";
  position:absolute;
  right:var(--space-3);
  bottom:var(--space-4);
  width:var(--space-2);
  height:var(--space-2);
  border-top:1px solid var(--navy-deep);
  border-right:1px solid var(--navy-deep);
  transform:rotate(45deg);
}
.related-card:hover{color:var(--navy)}
.related-card:hover::after{transform:translateX(var(--space-1)) rotate(45deg)}

/* 404 routing layout */
.not-found-main{padding-top:var(--header-h);background:var(--navy-deep)}
.not-found-main .breadcrumb{
  border-color:rgba(255,255,255,.2);
  background:var(--navy-deep);
}
.not-found-main .breadcrumb li{color:rgba(255,255,255,.66)}
.not-found-main .breadcrumb a{color:var(--white)}
.not-found-main .not-found{min-height:560px;padding:var(--space-12) var(--pad)}
.not-found-actions{
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-2) var(--space-4);
  justify-content:center;
  margin-top:var(--space-4);
}
.not-found-actions .text-link{color:var(--white)}
.not-found-main .related-pages{background:var(--white);color:var(--ink)}

@media (max-width:820px){
  .page-index-inner,
  .pattern-table-head{grid-template-columns:1fr;gap:var(--space-3)}
  .page-index ol{grid-template-columns:1fr}
  .media-layout,
  .media-layout--reverse{grid-template-columns:1fr}
  .media-layout--reverse .media-feature{order:0}
  .number-grid{grid-template-columns:1fr}
  .number-card{padding:var(--space-4) 0}
  .number-card+.number-card{padding-left:0;border-left:0}
  .definition-grid{grid-template-columns:1fr}
  .definition-card,
  .definition-card:nth-child(even){padding:var(--space-4) 0;border-left:0}
  .permit-display,
  .phone-stage{grid-template-columns:1fr;gap:var(--space-2)}
}

@media (max-width:560px){
  .page-index{padding:var(--space-4) 0}
  .pattern-number,
  .pattern-table,
  .pattern-media{padding:var(--space-10) 0}
  .number-value{font-size:var(--type-4xl)}
  .reference-panel{padding:var(--space-3)}
  .related-pages{padding:var(--space-8) 0}
  .related-grid{grid-template-columns:1fr}
  .related-card,
  .related-card+.related-card{
    min-height:168px;
    padding:var(--space-3) var(--space-6) var(--space-3) 0;
    border-left:0;
  }
  .related-card::after{right:var(--space-1);bottom:var(--space-3)}
}

@media print{
  @page{margin:16mm}
  :root{
    --pad:0;
    --section-lg:32px;
    --section-md:24px;
  }
  *{
    background:transparent!important;
    box-shadow:none!important;
    color:#000!important;
    text-shadow:none!important;
  }
  html{scroll-behavior:auto}
  body{font-size:10.5pt;line-height:1.65}
  .site-header,
  .mobile-drawer,
  .nojs-nav,
  .breadcrumb,
  .page-index,
  .film-media,
  .film-shade,
  .film-controls,
  .related-pages,
  .group-links,
  .map-link,
  .text-link,
  .header-kmg,
  .footer-links{display:none!important}
  .film-hero{
    height:auto;
    min-height:0;
    padding:24px 0;
    border-bottom:2px solid #000;
  }
  .film-copy{position:static;max-width:none}
  .film-copy .location,
  .film-copy .business-lines{color:#000!important}
  .page-hero{min-height:0;border-bottom:2px solid #000}
  .page-hero-content{padding:24px 0}
  .page-hero-content::before,
  .content-heading::before,
  .section-title::before,
  .not-found::before{display:none}
  .section,
  .content-section,
  .content-section+.content-section,
  .pattern-number,
  .pattern-table,
  .pattern-media{padding:24px 0}
  .section-grid,
  .content-grid,
  .media-layout,
  .media-layout--reverse,
  .pattern-table-head{display:block}
  .content-heading,
  .section-title{margin-bottom:16px}
  .number-grid{grid-template-columns:repeat(3,1fr);margin-top:20px}
  .number-value{font-size:28pt}
  .business-item,
  .company-row,
  .timeline li,
  .definition-card,
  .info-table tr,
  .reference-panel,
  figure{break-inside:avoid}
  .business-media,
  .media-feature,
  .wide-media,
  .facility-grid,
  .process-strip,
  .site-photo{display:none}
  .info-table{border-top:2px solid #000}
  .info-table th,.info-table td{border-color:#777}
  .site-footer{border-top:2px solid #000}
  .footer-main{display:block;padding:24px 0}
  .footer-company address{margin-top:12px}
  .footer-group{display:none}
  .footer-bottom{padding:12px 0;border-color:#777}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:8pt}
  a[href^="tel"]::after,
  a[href^="mailto"]::after{content:""}
}


/* ============================================================
   v6.1 — 日本語組版の精度／画像スロット／グリッド調整
   ============================================================ */

/* 見出しの改行制御: 文節単位で折り返し、孤立行と単語分断を防ぐ */
h1, h2, h3,
.intro-copy,
.section-title h2,
.content-heading h2,
.pattern-table-head h2,
.media-copy h2,
.group-copy h2,
.contact-grid h2,
.related-card h3,
.business-text h3,
.definition-card h3 {
  word-break: auto-phrase;      /* 文節改行（対応ブラウザ） */
  overflow-wrap: normal;         /* 単語途中での分断を禁止 */
  line-break: strict;            /* 禁則処理を厳格に */
  text-wrap: pretty;
}
/* auto-phrase 非対応ブラウザでも最低限の均衡を保つ */
@supports not (word-break: auto-phrase) {
  h1, h2, h3, .intro-copy { text-wrap: balance; }
}

/* 見出しが入る左カラムの最小幅を確保（2〜3文字での折り返しを防ぐ） */
.section-grid { grid-template-columns: minmax(232px, .33fr) minmax(0, 1fr); }
.content-grid { grid-template-columns: minmax(248px, .33fr) minmax(0, 1fr); }

/* 3項目グリッドの余白解消 */
.guide-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 1000px) { .guide-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 700px)  { .guide-grid { grid-template-columns: 1fr; } }

@media (max-width: 820px) {
  .section-grid, .content-grid { grid-template-columns: 1fr; }
}

/* 意図的改行: 大画面でのみ有効な改行（中黒・読点での不自然な分断を回避） */
.br-pc{display:none}
@media (min-width:1101px){ .br-pc{display:inline} }

/* ============================================================
   v6.2 — 下層ページのファーストビュー最適化
   タイトル部が画面を占有せず、本文へ速やかに到達させる
   ============================================================ */

/* タイトル部：余白を圧縮し、見出しは下層ページの役割に合ったサイズへ */
.page-hero--plain .page-hero-content{
  padding-top: calc(var(--header-h) + 26px);
  padding-bottom: 30px;
}
.page-hero h1{
  font-size: clamp(28px, 3.3vw, 44px);
  line-height: 1.35;
}
.page-hero-content::before{ margin-bottom: 10px; }   /* data-label の下余白 */

/* パンくず：タイトル部の中に置く（独立バーを廃止） */
.page-hero-content .breadcrumb{
  padding: 0;
  margin-bottom: 14px;
  background: none;
  border: 0;
}
.page-hero-content .breadcrumb ol{
  width: auto;
  padding: 0;
  margin: 0;
}

/* ページ内目次：1行に収め、高さを半分以下に */
.page-index{ padding-top: 20px; padding-bottom: 20px; }
.page-index-inner{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 30px;
}
.page-index-inner h2{
  flex: 0 0 auto;
  margin: 0;
  font-size: 12px;
  letter-spacing: .1em;
  color: var(--muted);
}
.page-index-inner ol{
  display: flex;
  flex-wrap: wrap;
  gap: 8px 26px;
  margin: 0;
  padding: 0;
  border: 0;
}
.page-index-inner ol li{ border: 0; padding: 0; }
.page-index-inner ol li a{
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  padding: 6px 0;
  border-bottom: 1px solid transparent;
  font-size: 13.5px;
  white-space: nowrap;
}
.page-index-inner ol li a:hover{ border-bottom-color: currentColor; }
.page-index-inner ol li a::after{ content: none; }

@media (max-width: 820px){
  .page-hero--plain .page-hero-content{
    padding-top: calc(var(--header-h) + 20px);
    padding-bottom: 24px;
  }
  .page-index{ padding-top: 16px; padding-bottom: 16px; }
  .page-index-inner{ gap: 8px 18px; }
  .page-index-inner ol{ gap: 4px 18px; }
  .page-index-inner ol li a{ font-size: 13px; }
}

/* 下層タイトル部：min-height の強制を解除し、内容に応じた高さにする */
.page-hero--plain{ min-height:0 }
.page-hero--plain .page-hero-content{
  padding-top: calc(var(--header-h) + 22px);
  padding-bottom: 26px;
}
@media (max-width:820px){
  .page-hero--plain{ min-height:0 }
  .page-hero--plain .page-hero-content{
    padding-top: calc(var(--header-h) + 18px);
    padding-bottom: 22px;
  }
}
@media (max-width:560px){
  .page-hero--plain{ min-height:0 }
  .page-hero--plain .page-hero-content{
    padding-top: calc(var(--header-h) + 16px);
    padding-bottom: 20px;
  }
}

/* タイトル部の要素順：パンくず → 英字ラベル → 見出し */
.page-hero--plain .page-hero-content{ display:flex; flex-direction:column; align-items:flex-start }
.page-hero--plain .page-hero-content::before{ order:2 }
.page-hero--plain .page-hero-content .breadcrumb{ order:1 }
.page-hero--plain .page-hero-content h1{ order:3 }
.page-hero--plain .page-hero-content .lead{ order:4 }


/* ============================================================
   v6.3 — 文字揃えの精度（ベースライン統一）
   同じ行に並ぶラベルと値は、文字の下端（ベースライン）で揃える。
   異なるフォント（Oswald / Noto Sans JP）や異なるサイズが
   並ぶ箇所ほど、中央揃えではズレて見えるため。
   ============================================================ */

.page-index-inner{ align-items: baseline }
.page-index-inner h2{ line-height: 1.6 }
.page-index-inner ol li a{ padding: 0; line-height: 1.6 }
.page-index-inner ol{ align-items: baseline }

.contact-line{ align-items: baseline }
.contact-line dt{ line-height: 1.7 }

.timeline li{ align-items: baseline }
.company-row{ align-items: baseline }
.detail-list > div{ align-items: baseline }
.number-card{ align-items: baseline }

/* 数字（Oswald）と日本語が並ぶ箇所の光学調整 */
.index-num,
.permit-display dt,
.contact-line .tel{ font-feature-settings: "tnum" 1 }

/* 画像スロットと本文の上端を揃える */
.media-layout{ align-items: start }
.media-layout .media-copy > *:first-child{ margin-top: 0 }


/* ============================================================
   v6.4 — 事業紹介の交互配置（同一構図の反復を避ける）
   ============================================================ */
.business-item:nth-child(even){
  grid-template-columns: minmax(300px,.88fr) minmax(0,1.12fr);
}
.business-item:nth-child(even) .business-media{ order:2 }
.business-item:nth-child(even) .business-text{ order:1 }

@media (max-width:1100px){
  .business-item:nth-child(even){ grid-template-columns:1fr }
  .business-item:nth-child(even) .business-media{ order:1 }
  .business-item:nth-child(even) .business-text{ order:2 }
}


/* ============================================================
   v6.5 — 密度の最適化とバグ修正
   ・情報量に対して過大だった余白を、内容量に応じた3段階へ
   ・アンカー移動時に見出しが固定ヘッダーへ潜る不具合を修正
   ・手順ではない項目に付いていた連番を除去
   ============================================================ */

/* 【バグ修正】アンカー移動時の見出し位置 */
html { scroll-padding-top: calc(var(--header-h) + 28px); }

/* 【密度】短い内容のセクションは余白を詰める */
.content-section, .section { padding-top: clamp(64px, 6.4vw, 96px); padding-bottom: clamp(64px, 6.4vw, 96px); }
.business-story .container { padding-top: clamp(72px, 7vw, 112px); padding-bottom: clamp(72px, 7vw, 112px); }

/* 問い合わせ帯：3行の連絡先に対して余白が過大だった */
.contact-panel.section { padding-top: clamp(56px, 5.4vw, 80px); padding-bottom: clamp(56px, 5.4vw, 80px); }

/* 関連ページ：ページ末尾の間延びを解消 */
.related-pages { padding-top: clamp(48px, 4.6vw, 68px); padding-bottom: clamp(48px, 4.6vw, 68px); }
.related-card { min-height: 0; padding-top: 24px; padding-bottom: 24px; }

/* KMGロゴ枠：ロゴ実寸に対する余白を適正化 */
.group-logo-panel { min-height: 186px; padding: 34px; }

/* 【連番】手順ではない項目の自動採番を解除 */
.detail-list > div::before { content: none !important; }
.detail-list > div { padding-left: 0 !important; min-height: 0; padding-top: 20px; padding-bottom: 21px; }
@media (min-width:561px){ .detail-list:not(:has(> div:nth-child(3):last-child)) > div:nth-child(even) { padding-left: 30px !important; } }

/* 【グリッド】項目数に応じた列組み（3項目のときの空セルを解消） */
.detail-list:has(> div:nth-child(3):last-child) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (min-width:821px){ .detail-list:has(> div:nth-child(3):last-child) > div + div { padding-left: 30px !important; border-left: 1px solid var(--line-strong); } }
@media (max-width:820px){ .detail-list:has(> div:nth-child(3):last-child) > div { border-left: 0; } }

@media (max-width: 820px) {
  .content-section, .section { padding-top: clamp(52px, 8vw, 68px); padding-bottom: clamp(52px, 8vw, 68px); }
  .contact-panel.section { padding-top: 52px; padding-bottom: 52px; }
  .related-pages { padding-top: 44px; padding-bottom: 44px; }
  .group-logo-panel { min-height: 150px; padding: 26px; }
  .detail-list:has(> div:nth-child(3):last-child) { grid-template-columns: 1fr; }
}


/* ============================================================
   v7 — KMGグループ（増渕組）のトーン継承
   実測した親会社サイトの設計ルールを反映：
   ・ナビは英字（主）＋日本語（従）の2段、縦罫線で区切る
   ・本文色 #333333／補助に青みグレー #34495e／淡青 #cad7e5
   ・セクション見出しは英字と日本語を併記
   ============================================================ */

:root{
  --kmg-navy:#1d2088;      /* 親会社サイトの主要面色（実測） */
  --kmg-ink:#333333;       /* 親会社サイトの本文色（実測） */
  --kmg-slate:#34495e;     /* 親会社サイトの補助色・青みグレー（実測） */
  --kmg-pale:#cad7e5;      /* 親会社サイトの淡い青（実測） */
}

/* 本文の色味を親会社に合わせる（黒すぎない、やや温かい墨） */
body{ color:var(--kmg-ink) }
.body-copy, .content-body > p, .section-lead, .chapter-desc, .info-table td{ color:#3f4650 }

/* グローバルナビ：英字＋日本語の2段、縦罫線区切り */
.global-nav{ align-items:stretch; gap:0 }
.global-nav a{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:4px;
  padding:8px clamp(14px,1.5vw,22px);
  border-left:1px solid var(--line);
}
.global-nav a:last-child{ border-right:1px solid var(--line) }
.global-nav a::after{ left:clamp(14px,1.5vw,22px); right:clamp(14px,1.5vw,22px) }
.nav-en{
  font-family:var(--font-num);
  font-size:12.5px;
  font-weight:600;
  letter-spacing:.09em;
  line-height:1.2;
  color:var(--kmg-navy);
}
.nav-ja{
  font-size:10.5px;
  font-weight:500;
  letter-spacing:.04em;
  line-height:1.2;
  color:var(--muted);
}
.global-nav a:hover .nav-en, .global-nav a[aria-current="page"] .nav-en{ color:var(--navy-deep) }
.global-nav a:hover .nav-ja, .global-nav a[aria-current="page"] .nav-ja{ color:var(--kmg-slate) }

/* モバイルドロワーも同じ作法で */
.drawer-nav a{ display:flex; align-items:baseline; gap:14px }
.drawer-nav .nav-en{ min-width:96px; color:rgba(255,255,255,.92); font-size:13px }
.drawer-nav .nav-ja{ color:rgba(255,255,255,.72); font-size:14px }
.drawer-nav a[aria-current="page"] .nav-en,
.drawer-nav a[aria-current="page"] .nav-ja{ color:#fff }

/* 英字ラベルの色を親会社の青みグレーに寄せる */
.section-title::before, .content-heading::before, .page-hero-content::before,
.pattern-kicker, .related-label, .definition-label{ color:var(--kmg-slate) }

/* 数字・年号の面は親会社の主要色で */
.history-band{ background:var(--kmg-navy) }
.pattern-number{ background:var(--kmg-navy) }

/* 淡い青を、事実表の見出しセルに（親会社の面色の系統を薄く使う） */
.info-table th{ background:rgba(202,215,229,.28) }
.spec-ledger th{ background:rgba(202,215,229,.22) }

@media (max-width:1100px){
  .global-nav a{ padding:6px 12px }
  .nav-en{ font-size:11.5px }
  .nav-ja{ font-size:9.5px }
}
@media (max-width:820px){
  .drawer-nav .nav-en{ min-width:84px }
}


/* ============================================================
   v8 — 実写素材（2026-10-07 構内撮影）の組み込み
   v8.2 — Opus 5.5 レビュー（検証通過56件）と codex（gpt-6-astra）レビューの反映
   ブレークポイントはサイト共通の 1100 / 820 / 560px に揃える
   ============================================================ */

/* ---- ヒーロー ---- */
.film-shade{
  background:
    linear-gradient(180deg,rgba(9,14,26,.30) 0%,rgba(9,14,26,.02) 24%,rgba(9,14,26,.04) 50%,rgba(9,14,26,.66) 100%),
    linear-gradient(90deg,rgba(9,14,26,.34) 0%,rgba(9,14,26,.18) 48%,transparent 72%);
}
.film-copy .location{ font-size:12px; color:rgba(255,255,255,.94); text-shadow:0 1px 8px rgba(0,0,0,.35) }
.film-copy .business-lines{ text-shadow:0 1px 10px rgba(0,0,0,.3) }
.film-note{ font-size:10.5px; letter-spacing:.08em }
html:not(.js) .film-toggle{ display:none }   /* JSが無いと停止できないため、ボタンを出さない（映像は静止画のまま） */
@media (max-width:820px){
  .film-shade{
    background:
      linear-gradient(180deg,rgba(9,14,26,.30) 0%,rgba(9,14,26,.02) 24%,rgba(9,14,26,.04) 45%,rgba(9,14,26,.72) 100%),
      linear-gradient(90deg,rgba(9,14,26,.26),transparent 60%);
  }
  .film-copy .business-lines{ color:#fff; text-shadow:0 1px 10px rgba(0,0,0,.45) }
  .film-toggle{ min-height:44px }
}

/* ---- トップ：事業紹介の写真 ---- */
.business-media img{ aspect-ratio:3/2; object-fit:cover }
.business-item:first-child .business-media img{ object-position:50% 36% }

/* ---- トップ：FACILITY（8/4 → 4/8 のエディトリアルグリッド） ---- */
.facility{ padding:var(--section-md) 0; border-top:1px solid var(--line-assist); border-bottom:1px solid var(--line-assist); background:var(--white) }
.facility-head{
  display:grid; grid-template-columns:minmax(232px,.33fr) minmax(0,1fr);   /* .section-grid と同じ基準線 */
  gap:clamp(54px,8vw,132px); align-items:end; margin-bottom:clamp(26px,3vw,42px)
}
.facility-head p{ max-width:var(--measure); margin:0; color:var(--ink-soft); line-height:1.9 }
.facility-grid{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:clamp(10px,1.2vw,16px) }
.facility-grid figure{ margin:0; min-width:0 }
.facility-grid img{ display:block; width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; background:var(--surface-deep) }
.facility-grid figure:nth-child(2) img{ object-position:74% 50% }   /* サイロの胴と社名を枠内に */
@media (min-width:821px){
  .facility-grid figure{ display:grid; grid-template-rows:1fr auto }
  .facility-grid figure:nth-child(1){ grid-column:1 / span 8 }
  .facility-grid figure:nth-child(2){ grid-column:9 / span 4 }
  .facility-grid figure:nth-child(3){ grid-column:1 / span 4 }
  .facility-grid figure:nth-child(4){ grid-column:5 / span 8 }
  /* 縦長の2枚は同じ行の横長写真の高さに合わせ、写真の下端とキャプションを一直線に揃える */
  .facility-grid figure:nth-child(2) img,
  .facility-grid figure:nth-child(3) img{ aspect-ratio:auto; height:100%; min-height:0 }
}
@media (max-width:820px){
  .facility-head{ grid-template-columns:1fr; gap:12px; align-items:start }
  .facility-grid{ row-gap:28px }
  .facility-grid figure{ grid-column:1 / -1 }
}

/* ---- 写真キャプション（新設分） ---- */
.facility-grid figcaption,.process-strip figcaption,.site-photo figcaption{
  display:flex; align-items:center; gap:10px; margin-top:9px;
  color:var(--muted); font-size:var(--type-xs); letter-spacing:.04em; line-height:1.6
}
.facility-grid figcaption::before,.site-photo figcaption::before{ content:""; flex:0 0 18px; height:1px; background:var(--line-row) }
/* 写真キャプションは全ページ「左寄せ・12px・先頭に18pxの線」に統一（2026-10-07 仁尾さん決定） */
.business-media figcaption,.wide-media figcaption,.media-feature figcaption{
  justify-content:flex-start; text-align:left; gap:10px; margin-top:9px;
  color:var(--muted); font-size:var(--type-xs); letter-spacing:.04em; line-height:1.6
}
.business-media figcaption::before,.wide-media figcaption::before,.media-feature figcaption::before{
  content:""; flex:0 0 18px; width:18px; height:1px; margin-top:0; background:var(--line-row)
}
.process-strip figcaption{ font-size:var(--type-xs) }

/* ---- 事業案内：01 アスファルト合材 ---- */
.media-feature img{ display:block; aspect-ratio:4/3; object-fit:cover }
@media (min-width:821px){
  #manufacturing .media-layout{ row-gap:clamp(36px,3.6vw,52px) }
  #manufacturing .inquiry-guide--wide{ grid-column:1 / -1; margin-top:0 }
}
.process-strip{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(10px,1.2vw,16px); margin-top:clamp(30px,3.2vw,44px) }
.process-strip figure{ margin:0; min-width:0 }
.process-strip img{ display:block; width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; background:var(--surface-deep) }
.process-strip .step{ font-family:var(--font-num); font-size:11.5px; font-weight:600; letter-spacing:.1em; color:var(--navy) }
@media (max-width:820px){ .process-strip{ grid-template-columns:1fr; row-gap:28px } }

/* 事業案内：グループの舗装写真が自社写真より大きくならないよう抑える */
#construction .wide-media{ max-width:860px }
#construction .wide-media img{ aspect-ratio:16/9; object-fit:cover; object-position:50% 60% }

/* 許可番号：「第」「号」は和文書体、数字だけ Oswald */
.permit-display dd{ font-family:var(--font-jp); font-weight:600 }
.permit-display dd .num-display{ font-family:var(--font-num); font-weight:500 }
.nb{ display:inline-block }

/* ---- 会社概要・グループ ---- */
.site-photo{ margin:var(--space-6,32px) 0 0 }
.site-photo img{ display:block; width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; background:var(--surface-deep) }
.page-group .media-layout{ align-items:center }
@media (min-width:821px){
  .company-row{ grid-template-columns:minmax(210px,.8fr) minmax(0,1.45fr) 7rem }   /* リンクの無い行も説明文の開始位置を揃える */
}
.pattern-number .group-links a{ color:#fff; border-bottom-color:rgba(255,255,255,.7) }
.pattern-number .group-links a:hover{ color:var(--kmg-pale) }

/* ---- お問い合わせ ---- */
@media (min-width:821px){
  .page-contact .phone-stage{ grid-template-columns:96px minmax(0,1fr); gap:24px; align-items:baseline }
}
.compact-list li{ padding:0 }
.compact-list a{ display:flex; align-items:center; min-height:56px; padding:16px 0 }

/* ---- 共通部品の整合 ---- */
.related-card,.related-card+.related-card{ min-height:0 }
.not-found::before{ white-space:nowrap; inline-size:max-content; overflow-wrap:normal }
.doc .info-table{ max-width:840px; width:100% }
.info-table+.source-note,.definition-grid+.source-note{ margin-top:12px }
@media (max-width:560px){
  .info-table th{ background:transparent; font-size:12px; letter-spacing:.04em }
  .info-table td{ margin-top:4px }
}
main p{ text-wrap:pretty }

/* ---- 会社概要の冒頭：年号と許可番号を小さくまとめ、会社情報の表を早く見せる（2026-10-07 仁尾さん決定） ---- */
.company-intro{ padding-top:clamp(40px,4vw,56px); padding-bottom:clamp(40px,4vw,56px) }
.company-intro .number-grid{ margin-top:24px }
.company-intro .number-card{ padding-top:20px; padding-bottom:22px }
.company-intro .number-value{ font-size:clamp(36px,3.4vw,48px) }
.company-intro .number-label{ margin-top:12px; font-size:13px; line-height:1.8 }
.company-intro .number-label br{ display:none }
@media (max-width:820px){
  .company-intro .number-card{ display:grid; grid-template-columns:96px minmax(0,1fr); gap:16px; align-items:baseline; padding:16px 0 }
  .company-intro .number-value{ font-size:30px }
  .company-intro .number-label{ margin-top:0 }
}
