:root{
  --bg:#f7f4ee; --bg-alt:#f0ebe2; --ink:#2a2622; --sub:#7a7066; --line:#d9d1c4; --accent:#8a5a2b;
}
@media (prefers-color-scheme: dark){
  :root{ --bg:#1c1a17; --bg-alt:#221f1b; --ink:#ece6dc; --sub:#a59a8c; --line:#3a352f; --accent:#c9945e; }
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--bg); color:var(--ink);
  font-family:"Noto Serif TC","Shippori Mincho",serif;
  line-height:1.9; -webkit-font-smoothing:antialiased;
}
html[lang="ja"] body{font-family:"Shippori Mincho","Noto Serif TC",serif}
html[lang="en"] body{font-family:"Cormorant Garamond","Noto Serif TC",serif; font-variant-numeric:lining-nums}
a{color:inherit}
.label .idx, .value .num{font-variant-numeric:lining-nums}

/* ---------- header ---------- */
.site-header{
  position:sticky; top:0; z-index:50;
  background:var(--bg); border-bottom:1px solid transparent;
  transition:background-color .4s ease, border-color .4s ease, box-shadow .4s ease;
}
.site-header::before{
  content:""; display:block; height:2px;
  background:linear-gradient(90deg, transparent, var(--accent) 20%, var(--accent) 80%, transparent);
  opacity:.85;
}
.site-header.scrolled{
  background:color-mix(in srgb, var(--bg) 86%, transparent);
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  border-bottom-color:var(--line);
  box-shadow:0 6px 24px -18px rgba(42,38,34,.45);
}
.header-inner{
  max-width:1200px; margin:0 auto; padding:14px 24px;
  display:flex; align-items:center; gap:28px;
}
.brand-sm{display:flex; align-items:center; gap:18px; text-decoration:none; color:var(--ink); margin-right:auto}
.brand-sm .mark{width:50px; height:50px; border-radius:11px; display:block; flex:none}
.brand-text{
  font-size:18px; font-weight:600; letter-spacing:.14em; line-height:1.45;
  padding-left:18px; border-left:1px solid var(--line);
}
.brand-text span{display:block; margin-top:2px; font-family:"Cormorant Garamond",serif; font-size:12px; font-weight:400; letter-spacing:.3em; color:var(--sub); white-space:nowrap}
.gnav{display:flex; gap:26px}
.gnav a{
  position:relative; padding:4px 0; text-decoration:none; color:var(--sub);
  font-family:"Cormorant Garamond",serif; font-size:13px; font-weight:600; letter-spacing:.22em; text-transform:uppercase;
}
.gnav a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--accent);
  transform:scaleX(0); transform-origin:left; transition:transform .4s ease;
}
.gnav a:hover{color:var(--ink)}
.gnav a:hover::after{transform:scaleX(1)}
.lang{font-size:13px; letter-spacing:.05em; white-space:nowrap; padding-left:24px; border-left:1px solid var(--line)}
.lang a{color:var(--sub); text-decoration:none; margin-left:14px}
.lang a:first-child{margin-left:0}
.lang a:hover{color:var(--ink)}
.lang a[aria-current]{color:var(--ink); border-bottom:1px solid var(--accent)}
.gnav a[aria-current]{color:var(--ink)}
html:not([lang="en"]) .gnav a{font-family:inherit; font-weight:500; letter-spacing:.12em}
.gnav a[aria-current]::after{transform:scaleX(1)}
html{scroll-behavior:smooth}
main section[id]{scroll-margin-top:84px}
@media (max-width:1200px){ main section[id]{scroll-margin-top:124px} }

/* ---------- shared ---------- */
.eyebrow{
  font-family:"Cormorant Garamond",serif; font-size:13px; font-weight:600;
  letter-spacing:.34em; text-transform:uppercase; color:var(--accent);
}
.rule{width:48px; height:1px; background:var(--accent); margin:36px auto}
.block{padding:clamp(88px,12vw,144px) 24px; border-top:1px solid var(--line)}
.block.alt{background:var(--bg-alt)}
.inner{max-width:1000px; margin:0 auto}

/* ---------- hero (corporate message) ---------- */
.hero{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; padding:clamp(40px,4.5vw,64px) 24px clamp(56px,6vw,88px);
}
.hero h1{
  margin-top:28px; font-size:clamp(27px,5.2vw,50px); font-weight:600;
  letter-spacing:.14em; line-height:1.65;
}
html[lang="en"] .hero h1{letter-spacing:.03em; line-height:1.25; font-size:clamp(34px,6vw,62px); text-wrap:balance}
.hero .sub{
  font-family:"Cormorant Garamond",serif; font-style:italic;
  font-size:clamp(17px,2.4vw,22px); letter-spacing:.06em; color:var(--sub); margin-top:18px; text-wrap:balance;
}
html[lang="en"] .hero .sub{font-family:"Shippori Mincho",serif; font-style:normal; font-size:clamp(14px,2vw,17px); letter-spacing:.16em}

/* ---------- main visual ---------- */
.mv{margin:0; width:100%}
.mv img{display:block; width:100%; height:auto}
.mv-tag{
  padding:clamp(28px,4vw,44px) 24px clamp(64px,8vw,96px); text-align:center;
  font-family:"Cormorant Garamond",serif; font-size:clamp(11px,1.2vw,13px); font-weight:600;
  letter-spacing:.42em; color:var(--accent); font-variant-numeric:lining-nums;
}

/* ---------- about / origin ---------- */
.about .head{text-align:center}
.about h2{margin-top:22px; font-size:clamp(24px,4vw,38px); font-weight:600; letter-spacing:.14em; line-height:1.6}
html[lang="en"] .about h2{letter-spacing:.02em; line-height:1.3; text-wrap:balance}
.about .head p{margin-top:14px; font-size:14px; letter-spacing:.2em; color:var(--sub)}
.about-intro{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(32px,5vw,72px); align-items:center}
.about-intro .head{text-align:left}
.about-intro .head h2{font-size:clamp(22px,2.9vw,36px)}
html[lang="en"] .about-intro .head h2{font-size:clamp(26px,3.2vw,40px)}

/* About 見出し下：事業内容へのバナー */
.svc-banner{
  display:inline-flex; align-items:center; gap:28px; margin-top:44px; padding:20px 26px 20px 30px;
  box-sizing:border-box; min-width:min(340px,100%); max-width:100%; justify-content:space-between;
  border:1px solid color-mix(in srgb, var(--accent) 60%, transparent); border-left:3px solid var(--accent);
  background:linear-gradient(100deg, color-mix(in srgb, var(--accent) 14%, transparent), transparent 85%);
  color:var(--ink); text-decoration:none; transition:background-color .3s ease, border-color .3s ease;
}
.svc-banner-txt{display:flex; flex-direction:column; gap:6px; text-align:left}
.svc-banner small{font-family:"Cormorant Garamond",serif; font-size:12px; font-weight:600; letter-spacing:.32em; text-transform:uppercase; color:var(--accent)}
.svc-banner b{font-size:17px; font-weight:600; letter-spacing:.18em}
.svc-banner-arrow{display:grid; place-items:center; width:40px; height:40px; border:1px solid var(--accent); border-radius:50%; color:var(--accent); transition:transform .3s ease, background-color .3s ease, color .3s ease}
.svc-banner:hover{background-color:color-mix(in srgb, var(--accent) 12%, transparent); border-color:var(--accent)}
.svc-banner:hover .svc-banner-arrow{background:var(--accent); color:var(--core-ink, var(--bg)); transform:translateX(4px)}

/* About：深いチャコールに反転したクールなセクション */
.block.about{
  --core-ink:#15181c;
  --ink:#ebe6dc; --sub:#9b968d; --line:rgba(235,230,220,.16); --accent:#c9945e;
  color:var(--ink); border-top:0;
  background-color:#15181c;
  background-image:
    linear-gradient(rgba(235,230,220,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(235,230,220,.035) 1px, transparent 1px);
  background-size:72px 72px; background-position:center top;
}
.asia-map{position:relative; margin:0}
.asia-map img{
  display:block; width:100%; height:auto;
  filter:invert(1) hue-rotate(180deg); mix-blend-mode:lighten;
  -webkit-mask-image:radial-gradient(ellipse 50% 50% at 50% 50%, #000 66%, transparent 100%);
  mask-image:radial-gradient(ellipse 50% 50% at 50% 50%, #000 66%, transparent 100%);
}
.hub-pin{position:absolute; left:58.8%; top:36.3%; width:0; height:0}
.hub-pin i{position:absolute; left:-14px; top:-14px; width:28px; height:28px; border-radius:50%; border:1px solid var(--accent); opacity:0; animation:hub 2.8s ease-out infinite}
.hub-pin b{
  position:absolute; left:34px; top:-9px; white-space:nowrap; line-height:1;
  font-family:"Cormorant Garamond",serif; font-size:11px; font-weight:600; letter-spacing:.32em; color:var(--accent);
  padding-left:10px; border-left:1px solid var(--accent);
}
.hub-pin b::before{content:""; position:absolute; right:100%; top:50%; width:24px; height:1px; background:var(--accent); opacity:.7}
@keyframes hub{0%{transform:scale(.4); opacity:.9} 100%{transform:scale(2.2); opacity:0}}
.origin{max-width:960px; margin:88px auto 0; text-align:center}
.origin-cap{
  margin-bottom:32px; font-family:"Cormorant Garamond",serif; font-size:13px; font-weight:600;
  letter-spacing:.34em; text-transform:uppercase; color:var(--accent);
}
.fields{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; position:relative}
.field{
  position:relative; padding:24px 12px 22px; margin-bottom:32px;
  border:1px solid var(--line); background:color-mix(in srgb, var(--ink) 4%, transparent);
  transition:border-color .4s ease;
}
.field::before{content:""; position:absolute; top:-1px; left:50%; width:28px; height:2px; margin-left:-14px; background:var(--accent)}
.field::after{
  content:""; position:absolute; left:50%; bottom:-33px; width:1px; height:32px; background:var(--accent); opacity:.75;
  transform-origin:top; transition:transform .6s ease .2s;
}
.field .no{display:block; font-family:"Cormorant Garamond",serif; font-size:14px; letter-spacing:.2em; color:var(--accent); font-variant-numeric:lining-nums}
.field b{word-break:keep-all; overflow-wrap:anywhere; display:block; margin-top:8px; font-size:15px; font-weight:600; letter-spacing:.08em; line-height:1.6}
html[lang="en"] .field b{font-size:17px; letter-spacing:.02em; line-height:1.3}
.field small{display:block; margin-top:8px; font-family:"Cormorant Garamond",serif; font-size:11px; letter-spacing:.2em; color:var(--sub); text-transform:uppercase; line-height:1.4}
.join{position:relative; height:48px}
.join::before{
  content:""; position:absolute; top:0; left:calc((100% - 36px) / 8); right:calc((100% - 36px) / 8); height:1px;
  background:var(--accent); opacity:.75; transition:transform .9s ease .7s;
}
.join::after{
  content:""; position:absolute; top:0; left:50%; width:1px; height:100%; background:var(--accent);
  transform-origin:top; transition:transform .6s ease 1.5s;
}
.core{
  position:relative; display:inline-block; padding:24px 56px 22px;
  background:var(--accent); color:var(--core-ink, var(--bg));
  box-shadow:0 0 0 7px color-mix(in srgb, var(--accent) 16%, transparent), 0 24px 48px -24px color-mix(in srgb, var(--accent) 70%, transparent);
}
.core::before{content:""; position:absolute; left:50%; top:-6px; width:11px; height:11px; margin-left:-5.5px; background:var(--accent); transform:rotate(45deg)}
.core b{display:block; font-size:clamp(20px,2.4vw,26px); font-weight:600; letter-spacing:.2em; line-height:1.5}
html[lang="en"] .core b{letter-spacing:.06em}
.core small{display:block; margin-top:4px; font-family:"Cormorant Garamond",serif; font-size:12px; font-weight:600; letter-spacing:.34em; color:inherit; opacity:.75; text-transform:uppercase}
.js .origin .field::after{transform:scaleY(0)}
.js .origin .join::before{transform:scaleX(0)}
.js .origin .join::after{transform:scaleY(0)}
.js .origin.in .field::after, .js .origin.in .join::after{transform:scaleY(1)}
.js .origin.in .join::before{transform:scaleX(1)}
.prose{max-width:640px; margin:72px auto 0; font-size:15.5px; line-height:2.2}
.prose p + p{margin-top:1.6em}
.prose .em{font-size:clamp(17px,2.2vw,19px); font-weight:600; letter-spacing:.08em}
html[lang="en"] .prose{font-size:18px; line-height:1.85}
html[lang="en"] .prose .em{font-size:21px; letter-spacing:.01em}

/* ---------- mission / vision / values ---------- */
.mvv{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.7fr); gap:64px; align-items:start}
.label .idx{font-family:"Cormorant Garamond",serif; font-size:13px; letter-spacing:.3em; color:var(--accent)}
.label .en{display:block; margin-top:10px; font-family:"Cormorant Garamond",serif; font-weight:400; font-size:clamp(42px,6vw,66px); letter-spacing:.08em; line-height:1}
.label .ja{display:block; margin-top:16px; font-size:14px; letter-spacing:.2em; color:var(--sub)}
.statement{font-size:clamp(21px,2.8vw,29px); font-weight:600; letter-spacing:.08em; line-height:1.75}
.statement::before{content:""; display:block; width:32px; height:1px; background:var(--accent); margin-bottom:28px}
html[lang="en"] .statement{font-size:clamp(25px,3.2vw,34px); letter-spacing:0; line-height:1.3; text-wrap:balance}
.body{margin-top:28px; font-size:15.5px; line-height:2.15; max-width:36em}
html[lang="en"] .body{font-size:18px; line-height:1.8}
.route{list-style:none; position:relative; display:flex; justify-content:space-between; max-width:440px; margin-top:52px}
.route::before{content:""; position:absolute; top:4px; left:4px; right:4px; height:1px; background:var(--accent); transform-origin:left; transition:transform 1.6s ease .3s}
.route li{list-style:none; position:relative; padding-top:22px; font-size:13px; letter-spacing:.12em; text-align:center; min-width:64px}
.route li:first-child{text-align:left} .route li:last-child{text-align:right}
.route li::before{content:""; position:absolute; top:0; width:9px; height:9px; border-radius:50%; background:var(--bg-alt); border:1px solid var(--accent)}
.route li:first-child::before{left:0} .route li:nth-child(2)::before{left:calc(50% - 4.5px)} .route li:last-child::before{right:0}
.route li.hub::before{background:var(--accent); width:11px; height:11px; top:-1px}
.route li.hub:nth-child(2)::before{left:calc(50% - 5.5px)}
.route li.hub{font-weight:600}
.route b{display:block; font-family:"Cormorant Garamond",serif; font-weight:600; font-size:12px; letter-spacing:.3em; color:var(--accent)}

/* MVV エンブレム（アイコン＋二重リング） */
.emblem{position:relative; display:block; width:104px; height:104px; margin-bottom:28px; border-radius:50%; border:1px solid color-mix(in srgb, var(--accent) 55%, transparent)}
.emblem::before{content:""; position:absolute; inset:7px; border-radius:50%; border:1px dashed color-mix(in srgb, var(--accent) 45%, transparent); transition:transform 6s linear}
.emblem::after{content:""; position:absolute; top:-3px; left:calc(50% - 3px); width:6px; height:6px; border-radius:50%; background:var(--accent)}
.emblem i{
  position:absolute; inset:24%;
  background:linear-gradient(140deg, var(--accent) 0%, color-mix(in srgb, var(--accent) 55%, #f3d9b0) 55%, var(--accent) 100%);
  -webkit-mask:var(--icon) center / contain no-repeat; mask:var(--icon) center / contain no-repeat;
}
.emblem.mission{--icon:url(/images/mvv-mission.png)}
.emblem.vision{--icon:url(/images/mvv-vision.png)}
.emblem.values{--icon:url(/images/mvv-values.png)}
.mvv:hover .emblem::before, .values-head:hover .emblem::before{transform:rotate(180deg)}
.js [data-reveal] .emblem, .js .values-head .emblem{opacity:0; transform:scale(.7) rotate(-20deg); transition:opacity .9s ease .15s, transform 1.1s cubic-bezier(.2,.8,.2,1) .15s}
.js .in .emblem, .js .values-head.in .emblem{opacity:1; transform:none}
.values-head{display:grid; grid-template-columns:auto 1fr; column-gap:32px; align-items:center}
.values-head .emblem{grid-row:1 / span 3; margin-bottom:0}

.values-head{margin-bottom:56px}
.values{list-style:none; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border-top:1px solid var(--line)}
.value{padding:36px 28px 0}
.value:first-child{padding-left:0}
.value + .value{border-left:1px solid var(--line)}
.value .num{font-family:"Cormorant Garamond",serif; font-size:14px; letter-spacing:.2em; color:var(--accent)}
.value h3{margin-top:18px; font-size:22px; font-weight:600; letter-spacing:.2em; line-height:1.5}
html[lang="en"] .value h3{font-size:24px; letter-spacing:.02em; line-height:1.2}
.value .term{font-family:"Cormorant Garamond",serif; font-style:italic; font-size:15px; letter-spacing:.06em; color:var(--sub)}
html[lang="en"] .value .term{font-family:"Shippori Mincho",serif; font-style:normal; font-size:13px; letter-spacing:.2em; margin-top:6px}
.value p{margin-top:20px; font-size:14.5px; line-height:2}
html[lang="en"] .value p{font-size:17px; line-height:1.7}

/* ---------- company ---------- */
.company{text-align:center}
.company .inner{max-width:560px}
.brand{margin-top:28px; font-size:clamp(26px,6vw,34px); font-weight:600; letter-spacing:.12em}
.brand-en{font-size:12px; letter-spacing:.3em; color:var(--sub); margin-top:4px}
.tag{margin-top:28px; font-size:14px; color:var(--sub)}
.contact{
  margin-top:40px; padding-top:28px; border-top:1px solid var(--line);
  font-size:14px; text-align:left; display:grid; grid-template-columns:auto 1fr; gap:6px 18px;
}
.contact dt{color:var(--sub); white-space:nowrap}
.contact a{color:var(--ink); text-decoration:none; border-bottom:1px solid var(--line)}
.contact a:hover{border-color:var(--accent)}
footer{margin-top:40px; font-size:14px; color:var(--sub); letter-spacing:.05em}
html[lang="en"] .tag, html[lang="en"] .contact{font-size:16px}

/* ---------- link button ---------- */
.more{margin-top:36px}
.btn-line{
  display:inline-flex; align-items:center; gap:12px; padding:12px 26px;
  border:1px solid var(--accent); color:var(--ink); text-decoration:none;
  font-size:14px; letter-spacing:.12em; transition:background-color .3s ease, color .3s ease;
}
.btn-line span{color:var(--accent); transition:transform .3s ease, color .3s ease}
.btn-line:hover{background:var(--accent); color:var(--bg)}
.btn-line:hover span{color:var(--bg); transform:translateX(3px)}
html[lang="en"] .btn-line{font-size:16px; letter-spacing:.04em}

/* ---------- company profile page ---------- */
.page-hero{padding:clamp(80px,11vw,136px) 24px clamp(64px,9vw,104px); text-align:center}
.page-hero h1{margin-top:22px; font-size:clamp(28px,4.4vw,42px); font-weight:600; letter-spacing:.2em; line-height:1.5}
html[lang="en"] .page-hero h1{letter-spacing:.04em}
.page-hero .lead{max-width:680px; margin:32px auto 0; font-size:15.5px; line-height:2.2}
html[lang="en"] .page-hero .lead{font-size:18px; line-height:1.8}
.page-hero .lead .lead-em{font-weight:600; font-size:1.12em; color:var(--ink); padding:0 .1em; background:linear-gradient(transparent 62%, rgba(201,148,94,.3) 62%)}
.inner.narrow{max-width:860px}
.sec-title{display:flex; align-items:baseline; gap:20px; margin-bottom:40px; padding-bottom:18px; border-bottom:1px solid var(--line)}
.sec-title .eyebrow{white-space:nowrap}
.sec-title h2{font-size:clamp(20px,2.6vw,26px); font-weight:600; letter-spacing:.14em}
html[lang="en"] .sec-title h2{letter-spacing:.02em; font-size:clamp(24px,3vw,30px)}
.spec .row{display:grid; grid-template-columns:180px minmax(0,1fr); gap:24px; padding:20px 4px; border-bottom:1px solid var(--line)}
.spec dt{font-size:14px; letter-spacing:.12em; color:var(--sub)}
.spec dd{font-size:15.5px; line-height:1.9}
html[lang="en"] .spec dt{font-size:15px; letter-spacing:.04em}
html[lang="en"] .spec dd{font-size:17px}
/* 会社概要：董事写真の下〜事業内容の間の余白を詰める */
#taiwan.block{padding-bottom:clamp(56px,6vw,80px)}
#services.block{padding-top:clamp(64px,7vw,100px)}
/* 実績紹介：事例と事例の間の余白を詰める */
.block:has(> .inner > .work):has(+ .block > .inner > .work){padding-bottom:clamp(56px,7vw,96px)}
.block:has(> .inner > .work) + .block:has(> .inner > .work){padding-top:clamp(56px,7vw,96px)}

/* 董事の顔写真 */
.board{margin-top:64px}
.board-cap{display:flex; align-items:baseline; gap:16px; margin-bottom:28px}
.board-ja{font-size:14px; letter-spacing:.16em; color:var(--sub)}
.board-grid{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:20px}
.member{margin:0}
.member-photo{position:relative; aspect-ratio:1 / 1; overflow:hidden; background:var(--line)}
.member-photo::after{content:""; position:absolute; inset:0; box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 8%, transparent)}
.member-photo img{display:block; width:100%; height:100%; object-fit:cover; object-position:50% 20%; filter:grayscale(.15); transition:transform .6s ease, filter .6s ease}
.member:hover .member-photo img{transform:scale(1.04); filter:none}
.member figcaption{position:relative; padding-top:16px; margin-top:14px; border-top:1px solid var(--line)}
.member figcaption::before{content:""; position:absolute; top:-1px; left:0; width:24px; height:1px; background:var(--accent)}
.member .role{display:block; font-size:12px; letter-spacing:.2em; color:var(--accent)}
.member .name{display:block; margin-top:6px; font-size:17px; font-weight:600; letter-spacing:.12em}
.member .roman{display:block; margin-top:2px; font-family:"Cormorant Garamond",serif; font-size:12px; letter-spacing:.28em; color:var(--sub)}

.groups{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px}
.gcard{position:relative; background:var(--bg); border:1px solid var(--line); padding:40px 36px 24px}
.gcard::before{content:""; position:absolute; top:-1px; left:36px; width:40px; height:2px; background:var(--accent); z-index:1}
.gcard-img{margin:-40px -36px 30px; aspect-ratio:3 / 2; overflow:hidden; background:var(--line)}
.gcard-img img{display:block; width:100%; height:100%; object-fit:cover}
.gcard .num{font-family:"Cormorant Garamond",serif; font-size:14px; letter-spacing:.2em; color:var(--accent); font-variant-numeric:lining-nums}
.gcard h3{margin-top:12px; font-size:clamp(18px,2vw,21px); font-weight:600; letter-spacing:.1em; line-height:1.6}
html[lang="en"] .gcard h3{font-size:clamp(21px,2.2vw,24px); letter-spacing:.01em; line-height:1.3}
.gcard .alt-name{margin-top:4px; font-family:"Cormorant Garamond",serif; font-size:13px; letter-spacing:.16em; color:var(--sub)}
html[lang="en"] .gcard .alt-name{font-family:"Shippori Mincho",serif; font-size:12px; letter-spacing:.1em}
.gcard dl{margin-top:24px}
.gcard .row{display:grid; grid-template-columns:76px minmax(0,1fr); gap:16px; padding:14px 0; border-top:1px solid var(--line); font-size:14px; line-height:1.85}
html[lang="en"] .gcard .row{grid-template-columns:112px minmax(0,1fr); font-size:16px; line-height:1.6}
.gcard dt{color:var(--sub); letter-spacing:.08em}
.gcard dd em{font-style:normal; color:var(--sub)}
.gcard dd a, .spec dd a{color:var(--ink); text-decoration:none; border-bottom:1px solid var(--line); overflow-wrap:anywhere}
.gcard dd a:hover{border-color:var(--accent)}
.gcard dd a span{color:var(--accent)}
.page-foot{text-align:center}

/* ---------- business & services (company profile) ---------- */
.svc-head{max-width:760px; margin:0 auto clamp(48px,6vw,72px); text-align:center}
.svc-head h2{margin-top:18px; font-size:clamp(24px,3.2vw,34px); font-weight:600; letter-spacing:.2em; line-height:1.5}
html[lang="en"] .svc-head h2{letter-spacing:.03em; font-size:clamp(28px,3.6vw,40px)}
.svc-head .lead{margin-top:28px; font-size:15.5px; line-height:2.2; text-wrap:pretty}
html[lang="en"] .svc-head .lead{font-size:18px; line-height:1.8}
.svc-list{list-style:none; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:clamp(40px,6vw,88px)}
.svc{display:grid; grid-template-columns:60px minmax(0,1fr); align-content:start; padding:36px 0 40px; border-top:1px solid var(--line)}
.svc .num{grid-row:span 2; font-family:"Cormorant Garamond",serif; font-size:30px; line-height:1.1; color:var(--accent); font-variant-numeric:lining-nums}
.svc h3{font-size:18.5px; font-weight:600; letter-spacing:.08em; line-height:1.6}
html[lang="en"] .svc h3{font-size:21px; letter-spacing:.01em; line-height:1.3}
.svc p{grid-column:2; margin-top:12px; font-size:14.5px; line-height:2.05}
html[lang="en"] .svc p{font-size:17px; line-height:1.7}
.svc .prep{
  display:inline-block; margin-left:10px; padding:2px 10px; vertical-align:3px;
  font-style:normal; font-size:11px; font-weight:400; letter-spacing:.1em; line-height:1.6;
  color:var(--sub); border:1px solid var(--line);
}

/* ---------- reveal (only when JS is on) ---------- */
.js [data-reveal]{opacity:0; transform:translateY(18px); transition:opacity 1s ease, transform 1s ease}
.js [data-reveal].in{opacity:1; transform:none}
.js .route::before{transform:scaleX(0)}
.js .in .route::before, .js .route.in::before{transform:scaleX(1)}

/* ---------- works page ---------- */
.work-desc{margin-bottom:36px; font-size:15.5px; line-height:2.1}
html[lang="en"] .work-desc{font-size:18px; line-height:1.75}
.work-spec{margin-bottom:48px}
.work-gallery{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px}
.work-photo{margin:0; aspect-ratio:4 / 3; overflow:hidden; background:var(--line)}
.work-photo.tall{aspect-ratio:3 / 4}
.work-photo a{display:block; height:100%}
.work-photo img{display:block; width:100%; height:100%; object-fit:cover; transition:transform .6s ease}
.work-photo a:hover img{transform:scale(1.04)}

.work-photo a{cursor:zoom-in}
.lightbox{
  max-width:none; max-height:none; width:100%; height:100%; margin:0; padding:24px; border:0;
  background:transparent; display:none; place-items:center; cursor:zoom-out;
}
.lightbox[open]{display:grid; animation:lb-fade .25s ease}
.lightbox::backdrop{background:rgba(12,12,14,.86)}
.lightbox img{max-width:min(100%,1200px); max-height:calc(100vh - 48px); max-height:calc(100dvh - 48px); object-fit:contain; box-shadow:0 24px 64px rgba(0,0,0,.5)}
.lightbox-close{
  position:fixed; top:16px; right:20px; width:44px; height:44px; border:0; background:none;
  color:#ebe6dc; font-size:32px; line-height:1; cursor:pointer;
}
@keyframes lb-fade{from{opacity:0}to{opacity:1}}

/* ---------- careers page ---------- */
.job-co{margin-bottom:72px}
.job-co small{display:block; margin-top:4px; font-size:13px; color:var(--sub)}
.job-co dd{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:20px 32px}
/* 募集企業の公式サイトへのバナー */
.spec dd a.co-banner{
  display:flex; align-items:stretch; flex:0 1 420px;
  border:1px solid var(--line); background:var(--bg-alt); color:var(--ink); text-decoration:none;
  transition:background .3s ease, border-color .3s ease, color .3s ease;
}
/* ロゴはグレーの地色・縦横比ともに元画像のまま表示する */
.co-banner-logo{display:block; flex:0 0 auto; line-height:0}
.co-banner-logo img{display:block; width:auto; height:56px; aspect-ratio:976/286}
.co-banner-txt{display:flex; flex-direction:column; justify-content:center; flex:1; min-width:0; padding:0 0 0 22px; line-height:1.6}
.co-banner-label{font-size:11px; letter-spacing:.2em; white-space:nowrap; color:var(--accent); transition:color .3s ease}
.co-banner-url{font-size:13px; white-space:nowrap; color:var(--sub); transition:color .3s ease}
.co-banner-arrow{align-self:center; padding:0 20px; font-size:20px; color:var(--accent); transition:transform .3s ease, color .3s ease}
.spec dd a.co-banner:hover{background:var(--accent); border-color:var(--accent); color:var(--bg)}
.co-banner:hover .co-banner-label, .co-banner:hover .co-banner-url, .co-banner:hover .co-banner-arrow{color:var(--bg)}
.co-banner:hover .co-banner-arrow{transform:translate(2px,-2px)}
@media (max-width:700px){
  .spec dd a.co-banner{flex-basis:100%}
  .co-banner-logo img{height:44px}
  .co-banner-txt{padding-left:14px}
  .co-banner-arrow{padding:0 14px}
}
.jobs{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px}
.job{position:relative; display:flex; flex-direction:column; padding:40px 32px 32px; background:var(--bg); border:1px solid var(--line)}
.job::before{content:""; position:absolute; top:-1px; left:32px; width:40px; height:2px; background:var(--accent)}
.job-img{margin:-40px -32px 28px; aspect-ratio:4 / 3; overflow:hidden; background:var(--line)}
.job-img img{display:block; width:100%; height:100%; object-fit:cover; transition:transform .6s ease}
.job:hover .job-img img{transform:scale(1.04)}
.job.has-img::before{z-index:1}
.job-badge{align-self:flex-start; padding:3px 12px; border:1px solid var(--accent); color:var(--accent); font-size:11px; letter-spacing:.2em}
.job h3{margin-top:20px; font-size:clamp(19px,2vw,22px); font-weight:600; letter-spacing:.1em; line-height:1.5}
html[lang="en"] .job h3{letter-spacing:.01em; line-height:1.25}
.job-role{margin-top:10px; font-size:14px; font-weight:600; letter-spacing:.08em; color:var(--accent)}
html[lang="en"] .job-role{font-size:16px; letter-spacing:.02em}
.job ul{list-style:none; margin:24px 0 32px; padding:0; flex:1}
.job li{position:relative; padding:10px 0 10px 18px; border-top:1px solid var(--line); font-size:14.5px; line-height:1.8}
html[lang="en"] .job li{font-size:16px; line-height:1.55}
.job li::before{content:""; position:absolute; left:2px; top:1.35em; width:6px; height:6px; background:var(--accent); transform:rotate(45deg)}
.job-btn{display:block; padding:12px 16px; border:1px dashed var(--line); color:var(--sub); text-align:center; font-size:13px; letter-spacing:.12em}

.job-btn.is-link{border:1px solid var(--accent); background:var(--accent); color:var(--bg); text-decoration:none; transition:opacity .3s ease}
.job-btn.is-link span{margin-left:10px}
.job-btn.is-link:hover{opacity:.85}

.gallery-sec{background:var(--bg-alt)}
.gallery-head{text-align:center; margin-bottom:44px}
.gallery-head h2{margin-top:18px; font-size:clamp(22px,3vw,30px); font-weight:600; letter-spacing:.14em; line-height:1.6}
.gallery-head h2 span{display:inline-block}
.careers-gallery{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px}
.careers-gallery figure{margin:0; aspect-ratio:220 / 162; overflow:hidden; background:var(--line)}
.careers-gallery img{display:block; width:100%; height:100%; object-fit:cover; filter:sepia(.12) saturate(.92); transition:transform .6s ease, filter .6s ease}
.careers-gallery figure:hover img{transform:scale(1.04); filter:none}

/* ---------- job detail page ---------- */
.job-intro p{font-size:15.5px; line-height:2.1}
.job-intro p + p{margin-top:16px}
.appeal{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px}
.appeal li{display:flex; align-items:baseline; gap:16px; padding:22px 24px; border:1px solid var(--line); background:var(--bg); font-size:15.5px; font-weight:600; letter-spacing:.06em; line-height:1.7}
.appeal .no{font-family:"Cormorant Garamond",serif; font-size:20px; color:var(--accent); font-variant-numeric:lining-nums}
.interviews{display:grid; gap:14px}
.interview{display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:4px 20px; padding:22px 26px; border:1px solid var(--line); border-left:3px solid var(--accent); color:var(--ink); text-decoration:none; transition:background-color .3s ease}
.interview small{grid-column:1; font-size:12px; letter-spacing:.12em; color:var(--sub)}
.interview b{grid-column:1; font-size:16px; font-weight:600; letter-spacing:.06em; line-height:1.7}
.interview span{grid-column:2; grid-row:1 / span 2; color:var(--accent); font-size:18px}
.interview:hover{background:color-mix(in srgb, var(--accent) 8%, transparent)}
.dash{list-style:none; margin:0; padding:0}
.dash li{position:relative; padding-left:1.1em}
.dash li::before{content:"・"; position:absolute; left:-.15em}
.spec-sub{margin-top:14px; font-size:14px; color:var(--sub)}
.sub-spec{display:grid; grid-template-columns:auto minmax(0,1fr); gap:6px 16px}
.sub-spec dt{color:var(--sub); font-size:14px}
.apply{text-align:center; background:var(--bg-alt)}
.apply-lead{margin-top:24px; font-size:17px; line-height:2.1; letter-spacing:.06em}
.apply-note{margin-top:14px; font-size:13.5px; color:var(--sub)}
.apply .back{margin-top:28px; font-size:13.5px}
.apply .back a{color:var(--sub); text-decoration:none; border-bottom:1px solid var(--line)}

/* ---------- apply page ---------- */
.page-hero .apply-h1{font-size:clamp(22px,3.4vw,34px); letter-spacing:.12em}
.sec-title .tag{display:inline-block; white-space:nowrap; margin-left:14px; padding:2px 10px; border:1px solid var(--accent); color:var(--accent); font-size:11px; letter-spacing:.14em; vertical-align:middle}
.line-box{display:grid; grid-template-columns:minmax(0,1fr) auto; gap:40px; align-items:center}
.line-text p{font-size:15.5px; line-height:2}
.line-text .note{margin-top:8px; font-size:13.5px; color:var(--sub)}
.line-text .more{margin-top:24px}
.line-btn{border-color:#06c755}
.line-btn span{color:#06c755}
.line-btn:hover{background:#06c755; color:#fff}
.line-qr{margin:0; padding:14px; background:#fff; border:1px solid var(--line)}
.line-qr img{display:block; width:160px; height:auto; image-rendering:pixelated}
.form-lead{margin-bottom:36px; font-size:15.5px; line-height:2}
.mail-form{display:grid; gap:22px}
.field-row{display:grid; gap:8px}
.field-row label{font-size:14px; letter-spacing:.08em}
.field-row label span{margin-left:10px; padding:1px 8px; font-size:11px; letter-spacing:.1em}
.field-row .req{background:var(--accent); color:var(--bg)}
.field-row .opt{border:1px solid var(--line); color:var(--sub)}
.mail-form input, .mail-form select, .mail-form textarea{
  width:100%; box-sizing:border-box; padding:12px 14px; border:1px solid var(--line); border-radius:0;
  background:var(--bg); color:var(--ink); font:inherit; font-size:16px;
}
.mail-form input:focus, .mail-form select:focus, .mail-form textarea:focus{outline:none; border-color:var(--accent)}
.mail-form button.btn-line{background:none; font:inherit; cursor:pointer}
.form-hint, .form-direct{font-size:13px; line-height:1.9; color:var(--sub)}
.form-direct a{color:var(--ink)}
.back-link{margin-top:48px; font-size:13.5px}
.back-link a{color:var(--sub); text-decoration:none; border-bottom:1px solid var(--line)}

/* ---------- responsive ---------- */
@media (max-width:1200px){
  .header-inner{flex-wrap:wrap; row-gap:0}
  .gnav{
    order:3; width:100%; margin-top:12px; padding:10px 0 2px; gap:24px;
    border-top:1px solid var(--line); overflow-x:auto; scrollbar-width:none;
  }
  .gnav::-webkit-scrollbar{display:none}
  .gnav a{white-space:nowrap; font-size:12px}
  .gnav a.pg{order:-1}
}
@media (max-width:960px){
  .fields{grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px}
  .field{margin-bottom:0}
  .field::after, .join::before{display:none}
  .join{height:44px}
  .groups{grid-template-columns:1fr}
  .svc-list{grid-template-columns:1fr}
  .jobs{grid-template-columns:1fr; gap:20px}
  .appeal{grid-template-columns:1fr}
  .board-grid{grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px 14px}
  .careers-gallery{grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px}
  .line-box{grid-template-columns:1fr; gap:24px}
  .line-qr{justify-self:center}
  .work-gallery{grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px}
  .work-photo, .work-photo.tall{aspect-ratio:1 / 1}
  .values{grid-template-columns:repeat(2,minmax(0,1fr))}
  .value, .value:first-child{padding:32px 24px 36px 0}
  .value + .value{border-left:0}
  .value:nth-child(even){padding:32px 0 36px 24px; border-left:1px solid var(--line)}
  .value:nth-child(n+3){border-top:1px solid var(--line)}
}
@media (max-width:760px){
  .mvv{grid-template-columns:1fr; gap:36px}
  .about-intro{grid-template-columns:1fr; gap:8px}
  .about-intro .head{text-align:center}
  .svc-banner{margin-top:32px}
  .asia-map{max-width:440px; margin:0 auto}
  .origin{margin-top:32px}
  .block.about{background-size:48px 48px}
  .fields{grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px}
  .field{margin-bottom:0; padding:20px 8px 18px}
  .field::after, .join::before{display:none}
  .join{height:44px; margin-top:0}
  .core{padding:20px 32px 18px}
}
@media (max-width:600px){
  .gnav{gap:20px; margin-top:10px; -webkit-mask-image:linear-gradient(90deg,#000 85%,transparent); mask-image:linear-gradient(90deg,#000 85%,transparent); padding-right:24px}
  .header-inner{gap:10px}
  .lang{font-size:12px}
  .lang a{margin-left:8px}
  .spec .row{grid-template-columns:1fr; gap:2px; padding:16px 0}
  .gcard{padding:34px 22px 18px}
  .gcard::before{left:22px}
  .gcard-img{margin:-34px -22px 24px}
  .gcard .row, html[lang="en"] .gcard .row{grid-template-columns:1fr; gap:0; padding:12px 0}
  .sec-title{gap:14px; margin-bottom:28px}
  .svc{grid-template-columns:44px minmax(0,1fr); padding:28px 0 32px}
  .svc .num{font-size:24px}
  .svc-head .lead{text-align:left}
  .header-inner{padding:12px 16px}
  .brand-sm{gap:10px}
  .brand-sm .mark{width:38px; height:38px; border-radius:9px}
  .brand-text{font-size:15px; padding-left:10px; letter-spacing:.1em}
  .brand-text span{font-size:9px; letter-spacing:.12em}
  .lang{padding-left:0; border-left:0}
  .block{padding:80px 20px}
  .values{grid-template-columns:1fr}
  .value, .value:first-child, .value:nth-child(even){padding:28px 0 32px; border-left:0}
  .value + .value{border-top:1px solid var(--line)}
  .prose{margin-top:56px}
  .hero h1 br.pc{display:none}
  .mv-tag{font-size:10.5px; letter-spacing:.26em; white-space:nowrap; padding-left:0; padding-right:0}
}
@media (max-width:380px){
  .brand-sm .mark{width:32px; height:32px; border-radius:8px}
  .brand-text{font-size:13.5px; letter-spacing:.06em}
  .brand-text span{font-size:8px; letter-spacing:.08em}
  .lang a{margin-left:6px}
}
@media (prefers-reduced-motion:reduce){
  .js [data-reveal] .emblem, .js .values-head .emblem{opacity:1; transform:none; transition:none}
  .emblem::before{transition:none}
  html{scroll-behavior:auto}
  .site-header, .gnav a::after{transition:none}
  .js [data-reveal]{opacity:1; transform:none; transition:none}
  .js .route::before{transform:none; transition:none}
  .hub-pin i{animation:none; opacity:.8; transform:scale(1)}
  .js .origin .field::after, .js .origin .join::before, .js .origin .join::after{transform:none; transition:none}
}

/* 実績紹介・会社概要・求人ヒーロー：背景写真を暗めに落とし、白文字で重ねる */
.page-hero.works-hero,
.page-hero.company-hero,
.page-hero.careers-hero{
  position:relative; isolation:isolate;
  background-color:#2a2622;
  background-size:cover; background-position:center;
  margin-top:clamp(24px,4vw,48px);
}
.page-hero.works-hero{
  background-image:url("images/works-hero.jpg");
  background-image:image-set(url("images/works-hero.webp") type("image/webp"), url("images/works-hero.jpg") type("image/jpeg"));
}
.page-hero.company-hero{
  background-image:url("images/company-hero.jpg");
  background-image:image-set(url("images/company-hero.webp") type("image/webp"), url("images/company-hero.jpg") type("image/jpeg"));
}
.page-hero.careers-hero{
  background-image:url("images/careers-hero.jpg");
  background-image:image-set(url("images/careers-hero.webp") type("image/webp"), url("images/careers-hero.jpg") type("image/jpeg"));
}
.page-hero.works-hero::before,
.page-hero.company-hero::before,
.page-hero.careers-hero::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:rgba(20,18,16,.55);
}
.page-hero.works-hero h1, .page-hero.works-hero .lead,
.page-hero.company-hero h1, .page-hero.company-hero .lead,
.page-hero.careers-hero h1, .page-hero.careers-hero .lead{color:#fff}
.page-hero.works-hero .eyebrow,
.page-hero.company-hero .eyebrow,
.page-hero.careers-hero .eyebrow{color:#e2bd8f}
.page-hero.works-hero .eyebrow, .page-hero.works-hero h1, .page-hero.works-hero .lead,
.page-hero.company-hero .eyebrow, .page-hero.company-hero h1, .page-hero.company-hero .lead,
.page-hero.careers-hero .eyebrow, .page-hero.careers-hero h1, .page-hero.careers-hero .lead{text-shadow:0 2px 14px rgba(0,0,0,.45)}
.page-hero.careers-hero .lead .lead-em{color:#fff; background:linear-gradient(transparent 62%, rgba(226,189,143,.45) 62%)}
