/* 信用組 サイトデザイン（SWELL子テーマ） */

/* 企業サイトとして白ベースの単一テーマで固定（ロゴが白地前提のため） */
:root {
  --bg: #FFFFFF; --bg-sub: #F6F5F4; --fg: #1A1A1A; --fg-muted: #6E6A68;
  --border: #E6E2DF; --primary: #141414; --accent: #C8161D; --dark: #0B0B0B;
  --ff-en: 'Inter', 'Helvetica Neue', Arial, sans-serif;
  --ff-jp: 'Noto Sans JP', 'Hiragino Sans', sans-serif;      /* 見出しもゴシック */
  --ff-mincho: 'Noto Serif JP', 'Hiragino Mincho ProN', serif; /* キャッチコピー等の要所のみ */
  --deep: #4A4542; --deep-2: #3B3735; --foot: #2F2C2A;
  --grad-title: linear-gradient(115deg, #E5322B 0%, #C8161D 28%, #7A0F14 58%, #2A0C0D 80%, #0B0B0B 100%);
  --dot: #1b2530;
  --ff-body: 'Noto Sans JP', 'Hiragino Sans', sans-serif;
  --head-h: 72px;
  color-scheme: light;
}
body.sg *, body.sg *::before, body.sg *::after { box-sizing: border-box; }
body.sg :where(h1,h2,h3,h4,h5,p,ul,ol,li,figure,figcaption,table,blockquote) { margin: 0; padding: 0; }
body.sg :where(ul,ol) { list-style: none; }
body.sg { margin: 0; background: var(--bg); color: var(--fg); font-family: var(--ff-body); font-size: 15px; line-height: 1.9; padding-top: var(--head-h); }
body.sg img, body.sg video { max-width: 100%; display: block; }
body.sg .entry img, body.sg .wp-content img { height: auto; }
:where(body.sg) a { color: inherit; text-decoration: none; }
.inner { max-width: 1080px; margin: 0 auto; padding-left: max(24px, env(safe-area-inset-left, 0px)); padding-right: max(24px, env(safe-area-inset-right, 0px)); }
.inner--narrow { max-width: 948px; }

/* section titles */
.section { padding-block: 96px; }
.section--sub { background: var(--bg-sub); }
.section-head { margin-bottom: 48px; }
.section-sub { font-size: 11px; letter-spacing: .2em; color: var(--fg-muted); margin-bottom: 10px; font-weight: 500; }
.section-label, .p-hero-en { font-family: var(--ff-en); font-size: clamp(40px, 5.4vw, 68px); font-weight: 500; line-height: 1.1; letter-spacing: -.01em;
  background: var(--grad-title); -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; display: inline-block; padding-bottom: .08em; }
.section-label span, .p-hero-en span { display: none; }
.h3 { font-family: var(--ff-jp); font-size: clamp(20px, 2.6vw, 26px); font-weight: 700; line-height: 1.6; text-wrap: balance; margin-bottom: 20px; }

/* header */
.header { position: fixed; top: env(safe-area-inset-top, 0px); left: 0; right: 0; z-index: 100; background: rgba(255,255,255,.97); backdrop-filter: blur(8px); border-bottom: 1px solid var(--border); }
.header-inner { display: flex; align-items: center; justify-content: space-between; height: var(--head-h); max-width: 1080px; margin: 0 auto; padding-left: max(24px, env(safe-area-inset-left, 0px)); padding-right: max(24px, env(safe-area-inset-right, 0px)); }
body.sg .logo img { height: 44px; width: auto; }
nav { display: flex; align-items: center; }
nav a { font-size: 13px; font-weight: 500; padding: 0 13px; height: var(--head-h); display: flex; align-items: center; position: relative; white-space: nowrap; transition: color .2s; }
nav a::after { content: ''; position: absolute; bottom: 0; left: 13px; right: 13px; height: 2px; background: var(--accent); transform: scaleX(0); transition: transform .25s; }
nav a:hover, nav a.is-current { color: var(--accent); }
nav a:hover::after, nav a.is-current::after { transform: scaleX(1); }
nav a.nav-contact { margin-left: 12px; background: var(--primary); color: #fff; padding: 0 20px; border-radius: 3px; height: 38px; font-size: 12px; }
nav a.nav-contact::after { display: none; }
nav a.nav-contact:hover { background: var(--accent); color: #fff; }
.menu-btn { display: none; background: none; border: 0; width: 40px; height: 40px; cursor: pointer; flex-direction: column; justify-content: center; gap: 6px; align-items: center; }
.menu-btn i { display: block; width: 22px; height: 2px; background: var(--primary); }
@media (max-width: 900px) {
  .menu-btn { display: flex; }
  nav { position: fixed; top: calc(var(--head-h) + env(safe-area-inset-top, 0px)); left: 0; right: 0; background: #fff; flex-direction: column; align-items: stretch; border-bottom: 1px solid var(--border); padding: 8px max(24px, env(safe-area-inset-right, 0px)) 20px max(24px, env(safe-area-inset-left, 0px)); display: none; }
  nav.is-open { display: flex; }
  nav a { height: 48px; border-bottom: 1px solid var(--border); padding: 0; }
  nav a::after { display: none; }
  nav a.nav-contact { margin: 16px 0 0; justify-content: center; height: 46px; }
  body.sg .logo img { height: 36px; }
}

/* buttons */
.btn { display: inline-flex; align-items: center; gap: 8px; padding: 13px 28px; font-size: 13px; font-weight: 600; border-radius: 3px; transition: all .25s; cursor: pointer; border: 0; font-family: inherit; }
.btn-primary { background: var(--accent); color: #fff; }
.btn-primary:hover { background: #A31117; }
.btn-ghost { color: #fff; border: 1px solid rgba(255,255,255,.55); background: transparent; }
.btn-ghost:hover { background: rgba(255,255,255,.1); }
.link-more { display: inline-flex; gap: 8px; font-size: 13px; font-weight: 600; color: var(--primary); border-bottom: 1px solid var(--primary); padding-bottom: 2px; margin-top: 28px; }
.link-more:hover { color: var(--accent); border-color: var(--accent); }

/* placeholder image */
.ph { width: 100%; height: 100%; background: linear-gradient(135deg, #1c1c1c 0%, #3a3a3a 60%, #5a1a1c 100%); display: flex; align-items: center; justify-content: center; color: rgba(255,255,255,.4); font-size: 11px; letter-spacing: .12em; }
.ph--light { background: linear-gradient(135deg, #ece9e6, #d9d4d0); color: #8a837e; }

/* ── HOME hero (video) ── */
.hero { height: calc(100svh - var(--head-h)); min-height: 480px; max-height: 860px; position: relative; overflow: hidden; background: var(--primary); }
.hero video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero-overlay { position: absolute; inset: 0; background: linear-gradient(120deg, rgba(0,0,0,.62) 0%, rgba(0,0,0,.25) 60%, rgba(0,0,0,.05) 100%); }
.hero-content { position: absolute; bottom: 88px; left: 0; right: 0; color: #fff; }
.hero-content .inner { display: flex; flex-direction: column; gap: 20px; }
.hero-eyebrow { font-size: 11px; letter-spacing: .25em; color: rgba(255,255,255,.7); }
.hero-title { font-family: var(--ff-mincho); font-size: clamp(30px, 4.8vw, 56px); font-weight: 700; line-height: 1.5; text-shadow: 0 2px 20px rgba(0,0,0,.35); }
.hero-desc { font-size: clamp(13px, 1.5vw, 15px); color: rgba(255,255,255,.88); max-width: 480px; }
.hero-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.hero-scroll { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); color: rgba(255,255,255,.6); font-size: 10px; letter-spacing: .2em; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.hero-scroll i { width: 1px; height: 36px; background: rgba(255,255,255,.4); animation: pulse 2s infinite; }
@keyframes pulse { 50% { opacity: .2; } }

/* business cards */
.biz-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; }
.biz-card { position: relative; aspect-ratio: 3/4; overflow: hidden; display: block; }
.biz-card .ph, .biz-card .cover { transition: transform .6s; }
.biz-card:hover .ph, .biz-card:hover .cover { transform: scale(1.06); }
img.cover { width: 100%; height: 100%; max-width: 100%; object-fit: cover; display: block; }
.biz-card::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.85), rgba(0,0,0,.05) 60%); }
.biz-body { position: absolute; z-index: 1; bottom: 0; left: 0; right: 0; padding: 28px 24px; color: #fff; }
.biz-en { font-size: 10px; letter-spacing: .25em; color: rgba(255,255,255,.6); }
.biz-title { font-family: var(--ff-jp); font-size: 20px; font-weight: 700; }
.biz-desc { font-size: 12px; color: rgba(255,255,255,.75); max-height: 0; overflow: hidden; transition: max-height .4s; }
.biz-card:hover .biz-desc { max-height: 80px; }
@media (max-width: 640px) { .biz-grid { grid-template-columns: 1fr; } .biz-card { aspect-ratio: 16/9; } .biz-desc { max-height: none; } }

/* home projects */
.hp-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: start; }
.hp-feat { position: relative; border-radius: 6px; overflow: hidden; aspect-ratio: 4/3; display: block; }
.hp-feat-info { position: absolute; bottom: 0; left: 0; right: 0; padding: 32px 24px 24px; color: #fff; background: linear-gradient(to top, rgba(0,0,0,.9), transparent); }
.badge { display: inline-block; background: var(--accent); color: #fff; font-size: 10px; font-weight: 700; padding: 2px 10px; border-radius: 2px; letter-spacing: .05em; }
.hp-feat-title { font-family: var(--ff-jp); font-size: 18px; font-weight: 700; margin-top: 8px; }
.meta { font-size: 12px; color: var(--fg-muted); }
.hp-feat .meta { color: rgba(255,255,255,.7); }
.plist { display: flex; flex-direction: column; }
.pitem { display: flex; gap: 16px; align-items: center; padding: 18px 0; border-bottom: 1px solid var(--border); }
.pitem:first-child { border-top: 1px solid var(--border); }
.pthumb { width: 84px; height: 62px; border-radius: 4px; overflow: hidden; flex-shrink: 0; }
.pinfo { flex: 1; min-width: 0; }
.pbadge { font-size: 10px; font-weight: 700; color: var(--accent); }
.ptitle { font-family: var(--ff-jp); font-size: 14px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pitem:hover .ptitle { color: var(--accent); }
@media (max-width: 760px) { .hp-layout { grid-template-columns: 1fr; } }

/* home group strip */
@media (max-width: 640px) { .grp-strip { grid-template-columns: 1fr !important; } }
.grp-strip { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--border); border: 1px solid var(--border); }
.grp-strip div { background: #fff; padding: 22px 20px; }
.grp-strip b { display: block; font-family: var(--ff-jp); font-size: 14px; }
.grp-strip span { font-size: 12px; color: var(--fg-muted); }

/* news */
.news-grid > div:first-child { display: flex; flex-direction: column; align-items: flex-start; }
.news-grid { display: grid; grid-template-columns: 280px 1fr; gap: 64px; align-items: start; }
.news-item { display: grid; grid-template-columns: 110px auto 1fr; gap: 16px; align-items: baseline; padding: 20px 0; border-bottom: 1px solid var(--border); }
.news-item:first-child { border-top: 1px solid var(--border); }
.news-date { font-size: 13px; color: var(--fg-muted); font-variant-numeric: tabular-nums; }
.news-cat { font-size: 10px; font-weight: 700; background: var(--primary); color: #fff; padding: 2px 8px; border-radius: 2px; }
.news-title { font-size: 14px; color: var(--fg-muted); }
@media (max-width: 760px) { .news-grid { grid-template-columns: 1fr; gap: 28px; } .news-item { grid-template-columns: auto 1fr; } .news-title { grid-column: 1/-1; } }

/* CTA */
.cta { background: var(--deep); color: #fff; padding-block: 80px; }
.cta-inner { display: flex; justify-content: space-between; align-items: center; gap: 32px; flex-wrap: wrap; }
.cta-title { font-family: var(--ff-jp); font-size: clamp(20px, 3vw, 28px); font-weight: 700; }
.cta-desc { font-size: 14px; color: rgba(255,255,255,.75); }

/* ── Inner page hero (施工実績テンプレートの .p-hero と共通) ── */
.p-hero { position: relative; display: flex; align-items: center; background: var(--bg); overflow: hidden; }
.p-hero .ph { display: none; }
.p-hero-inner { position: relative; z-index: 1; width: 100%; text-align: center; padding: 72px 20px 48px; }
.p-hero-en { font-size: clamp(48px, 7vw, 88px); }
.p-hero-title { font-size: 14px; font-weight: 700; margin-top: 14px; letter-spacing: .2em; color: var(--fg); }
.p-hero--sm .p-hero-title-jp { font-size: clamp(22px, 3.4vw, 32px); font-weight: 700; color: var(--fg); line-height: 1.5; }
.crumb { font-size: 12px; color: var(--fg-muted); padding-block: 14px; border-bottom: 1px solid var(--border); }
.crumb a:hover { color: var(--accent); }

/* company */
.greet { display: grid; grid-template-columns: 300px 1fr; gap: 56px; align-items: start; }
.greet-photo { aspect-ratio: 3/4; border-radius: 4px; overflow: hidden; background: #ececec; }
.greet-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; }
.titles { list-style: none; margin-top: 20px; border-top: 1px solid var(--border); }
.titles li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 2px 16px; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 13px; font-weight: 700; }
.titles li span { font-weight: 400; color: var(--fg-muted); }
.greet p { margin-bottom: 1.2em; }
.greet .h3 { font-family: var(--ff-mincho); }
.greet .sign { margin-top: 28px; text-align: right; font-family: var(--ff-mincho); }
.greet .sign small { display: block; font-size: 12px; color: var(--fg-muted); }
.greet .sign b { font-size: 22px; letter-spacing: .15em; display: block; margin-top: 4px; }
.sign-titles { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border); display: inline-block; }
@media (max-width: 760px) { .greet { grid-template-columns: 1fr; gap: 32px; } .greet-photo { max-width: 280px; } }
.values { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.values div { background: #fff; padding: 36px 28px; border-top: 3px solid var(--accent); }
.values b { font-family: var(--ff-jp); font-size: 26px; display: block; }
.values em { font-style: normal; font-family: var(--ff-en); font-size: 13px; color: var(--accent); letter-spacing: .2em; }
@media (max-width: 640px) { .values { grid-template-columns: 1fr; } }
.tbl-wrap { overflow-x: auto; }
.tbl { width: 100%; border-collapse: collapse; font-size: 14px; }
.tbl th, .tbl td { text-align: left; padding: 18px 20px; border-bottom: 1px solid var(--border); vertical-align: top; }
.tbl th { width: 180px; font-weight: 700; color: var(--primary); background: var(--bg-sub); white-space: nowrap; }
.tbl tr:first-child th, .tbl tr:first-child td { border-top: 2px solid var(--primary); }
@media (max-width: 560px) { .tbl th, .tbl td { display: block; width: 100%; } .tbl th { padding-bottom: 8px; } .tbl tr:first-child td { border-top: 0; } }
.todo { color: #b0703a; font-size: 13px; }
.timeline { border-left: 2px solid var(--border); margin-left: 6px; }
.timeline div { position: relative; padding: 0 0 28px 28px; }
.timeline div::before { content: ''; position: absolute; left: -7px; top: 8px; width: 12px; height: 12px; border-radius: 50%; background: var(--accent); }
.timeline b { font-family: var(--ff-en); font-size: 22px; font-weight: 600; color: var(--primary); display: block; line-height: 1.3; }
.timeline small { font-size: 12px; color: var(--fg-muted); margin-left: 8px; font-weight: 400; }
.staff { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 2px 24px; }

/* business page */
.biz-row { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; padding-block: 64px; border-bottom: 1px solid var(--border); }
.biz-row:last-child { border-bottom: 0; }
.biz-row:nth-child(even) .biz-row-img { order: 2; }
.biz-row-img { aspect-ratio: 4/3; border-radius: 6px; overflow: hidden; }
.biz-num { font-family: var(--ff-en); font-size: 15px; color: var(--accent); letter-spacing: .2em; }
.tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 20px; }
.tags span { font-size: 12px; border: 1px solid var(--border); padding: 4px 12px; border-radius: 20px; color: var(--primary); }
@media (max-width: 760px) { .biz-row { grid-template-columns: 1fr; gap: 28px; } .biz-row:nth-child(even) .biz-row-img { order: 0; } }

/* projects archive (現行 archive-project.php のデザインを踏襲) */
.filter { display: flex; flex-wrap: wrap; border: 1px solid var(--border); border-radius: 4px; overflow: hidden; max-width: 900px; margin: 0 auto 40px; }
.filter a { flex: 1 1 auto; text-align: center; background: #fff; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: 12px 18px; font-size: 13px; color: var(--fg); }
.filter a:hover { color: var(--accent); }
.filter a:last-child { border-right: 0; }
.filter a.on, .filter a.on:hover { background: var(--primary); color: #fff; }
.filter a.child { font-size: 12px; color: var(--fg-muted); }
.pgrid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 32px; max-width: 900px; margin: 0 auto; }
.pcard { display: block; background: #fff; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 12px rgba(0,0,0,.06); transition: transform .3s, box-shadow .3s; }
.pcard:hover { transform: translateY(-4px); box-shadow: 0 10px 28px rgba(0,0,0,.12); }
.pcard-img { aspect-ratio: 16/10; overflow: hidden; }
.pcard-body { padding: 20px 22px 24px; }
.pcard-title { font-family: var(--ff-jp); font-size: 16px; font-weight: 700; line-height: 1.6; margin-top: 8px; }
.pager { display: flex; justify-content: center; gap: 6px; margin-top: 56px; }
.pager span { width: 40px; height: 40px; display: grid; place-items: center; border: 1px solid var(--border); border-radius: 3px; font-size: 13px; background: #fff; }
.pager span.on { background: var(--primary); color: #fff; border-color: var(--primary); }
@media (max-width: 640px) { .pgrid { grid-template-columns: 1fr; } }

/* project single */
.single-main { aspect-ratio: 16/9; border-radius: 6px; overflow: hidden; margin-bottom: 12px; }
.single-thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 56px; }
.single-thumbs div { aspect-ratio: 4/3; border-radius: 4px; overflow: hidden; }
.single-nav { display: flex; justify-content: space-between; gap: 16px; margin-top: 56px; padding-top: 28px; border-top: 1px solid var(--border); font-size: 13px; flex-wrap: wrap; }

/* group */
.gcards { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.gcard { background: #fff; border: 1px solid var(--border); border-radius: 6px; padding: 32px 28px; display: flex; flex-direction: column; gap: 8px; }
.gcard-field { font-size: 11px; font-weight: 700; color: var(--accent); letter-spacing: .1em; }
.gcard-name { font-family: var(--ff-jp); font-size: 19px; font-weight: 700; }
.gcard-desc { font-size: 13px; color: var(--fg-muted); }
.gblocks { display: flex; flex-direction: column; gap: 24px; margin-top: 24px; }
.gblock { background: #fff; border: 1px solid var(--border); border-radius: 6px; padding: 32px 28px; display: grid; grid-template-columns: 260px 1fr; gap: 32px; align-items: start; }
.gblock-head { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.gtiles { display: grid; gap: 12px; min-width: 0; }
.gtiles--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gtiles--1 .gtile img { aspect-ratio: 2/1; }
.gtile { margin: 0; }
.gtile img { width: 100%; max-width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 4px; display: block; }
.gtile figcaption { font-size: 13px; font-weight: 700; margin-top: 8px; }
@media (max-width: 760px) { .gblock { grid-template-columns: 1fr; gap: 20px; padding: 24px 20px; } }
.gcard--parent { grid-column: 1/-1; background: var(--deep); color: #fff; border: 0; }
.gcard--parent .gcard-field { color: #ff8f87; }
.gcard--parent .gcard-desc { color: rgba(255,255,255,.75); }
@media (max-width: 640px) { .gcards { grid-template-columns: 1fr; } }

/* recruit */
.rec-msg { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.rec-msg-img { aspect-ratio: 4/3; border-radius: 6px; overflow: hidden; }
.rec-msg p + p { margin-top: 1em; }
@media (max-width: 760px) { .rec-msg { grid-template-columns: 1fr; gap: 28px; } }
.jobs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.job { background: #fff; border-radius: 6px; padding: 28px 24px; border: 1px solid var(--border); }
.job b { font-family: var(--ff-jp); font-size: 17px; display: block; margin: 6px 0 8px; }
@media (max-width: 760px) { .jobs { grid-template-columns: 1fr; } }
.flow { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; counter-reset: f; }
.flow div { background: #fff; padding: 24px 16px; text-align: center; border-radius: 4px; font-size: 14px; font-weight: 700; position: relative; }
.flow div::before { counter-increment: f; content: 'STEP ' counter(f); display: block; font-family: var(--ff-en); color: var(--accent); font-size: 13px; letter-spacing: .15em; font-weight: 600; }
@media (max-width: 640px) { .flow { grid-template-columns: 1fr 1fr; } }

/* contact */
.offices { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-bottom: 64px; }
.office { border: 1px solid var(--border); border-radius: 6px; padding: 32px 28px; text-align: center; }
.office-name { font-family: var(--ff-jp); font-weight: 700; font-size: 16px; }
.office-tel { font-family: var(--ff-en); font-size: 34px; color: var(--primary); line-height: 1.3; margin-top: 8px; user-select: all; }
.office-fax { font-size: 13px; color: var(--fg-muted); }
@media (max-width: 640px) { .offices { grid-template-columns: 1fr; } }
.form { max-width: 760px; margin: 0 auto; }
.frow { display: grid; grid-template-columns: 200px 1fr; gap: 20px; padding: 20px 0; border-bottom: 1px solid var(--border); align-items: start; }
.frow label { font-weight: 700; font-size: 14px; padding-top: 10px; display: flex; gap: 8px; align-items: center; }
.req { background: #c0392b; color: #fff; font-size: 10px; padding: 1px 6px; border-radius: 2px; }
.opt { background: #9aa3b2; color: #fff; font-size: 10px; padding: 1px 6px; border-radius: 2px; }
.frow input, .frow select, .frow textarea { width: 100%; font: inherit; font-size: 15px; padding: 11px 14px; border: 1px solid var(--border); border-radius: 3px; background: #fafbfc; }
.frow textarea { min-height: 180px; }
.radio { display: flex; flex-wrap: wrap; gap: 8px 20px; padding-top: 10px; font-size: 14px; }
.radio label { font-weight: 400; padding: 0; }
.radio input { width: auto; }
.agree { text-align: center; margin: 32px 0 24px; font-size: 14px; }
.form-msg { text-align: center; color: var(--accent); font-weight: 700; margin-top: 16px; }
@media (max-width: 640px) { .frow { grid-template-columns: 1fr; gap: 6px; } .frow label { padding-top: 0; } }

/* footer */
.footer { background: var(--foot); color: rgba(255,255,255,.6); padding-block: 56px 28px; }
.footer-grid { display: grid; grid-template-columns: 1.8fr 1fr 1fr 1fr; gap: 40px; margin-bottom: 40px; }
.footer-logo { font-family: var(--ff-jp); color: #fff; font-weight: 700; font-size: 16px; }
.footer-logo small { display: block; font-family: var(--ff-body); font-size: 10px; color: rgba(255,255,255,.4); letter-spacing: .12em; font-weight: 400; }
.footer-addr { font-size: 12px; margin-top: 16px; line-height: 1.9; display: flex; flex-direction: column; gap: 14px; }
.footer-addr b { color: rgba(255,255,255,.85); font-weight: 700; }
.fcol-t { font-size: 11px; letter-spacing: .15em; color: rgba(255,255,255,.45); margin-bottom: 14px; font-weight: 600; }
.flinks { display: flex; flex-direction: column; gap: 8px; font-size: 13px; }
.flinks a:hover { color: #fff; }
.footer-bottom { border-top: 1px solid rgba(255,255,255,.08); padding-top: 22px; font-size: 11px; color: rgba(255,255,255,.35); }
@media (max-width: 760px) { .footer-grid { grid-template-columns: 1fr 1fr; } .footer-grid > div:first-child { grid-column: 1 / -1; } }

/* founder's story */
.story { background: var(--deep-2); color: #eee; }
.story .section-sub { color: rgba(255,255,255,.55); }
.story .section-label { background: linear-gradient(115deg, #ff5a4e 0%, #e3262a 35%, #ffffff 100%); -webkit-background-clip: text; background-clip: text; }
.st-intro { border-left: 3px solid var(--accent); padding-left: 24px; margin-bottom: 64px; }
.st-lead { font-size: 13px; letter-spacing: .2em; color: rgba(255,255,255,.6); }
.st-motto { font-family: var(--ff-mincho); font-size: clamp(24px, 3.6vw, 36px); font-weight: 700; color: #fff; margin: 6px 0 10px; }
.story .meta { color: rgba(255,255,255,.65); }
.st-list { display: flex; flex-direction: column; }
.st-ch { display: grid; grid-template-columns: 170px 1fr; gap: 32px; padding: 40px 0; border-top: 1px solid rgba(255,255,255,.12); }
.st-year { font-family: var(--ff-en); font-size: 30px; font-weight: 600; color: var(--accent); line-height: 1.2; }
.st-body { min-width: 0; }
.st-body h3 { font-size: 20px; font-weight: 700; color: #fff; margin-bottom: 10px; }
.st-body p { color: rgba(255,255,255,.78); }
.st-figs { display: grid; gap: 16px; margin-top: 20px; grid-template-columns: minmax(0, 420px); }
.st-figs--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.st-figs--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.st-figs figure { margin: 0; }
.st-figs img { width: 100%; height: auto; max-height: 360px; object-fit: contain; background: #1c1c1c; border-radius: 3px; }
.st-figs figcaption { font-size: 12px; color: rgba(255,255,255,.5); margin-top: 6px; }
@media (max-width: 640px) { .st-ch { grid-template-columns: 1fr; gap: 10px; } .st-figs--3 { grid-template-columns: 1fr 1fr; } }
.gtile--link { display: block; color: inherit; }
.gtile--link img { transition: opacity .25s, transform .4s; }
.gtile--link:hover img { opacity: .88; }
.gtile--link:hover figcaption { color: var(--accent); }
.gtile figcaption { display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.ext { font-size: 11px; font-weight: 600; color: var(--accent); white-space: nowrap; }
.gsite { align-self: flex-start; margin-top: 12px; font-size: 12px; font-weight: 700; color: #fff; background: var(--accent); padding: 8px 16px; border-radius: 3px; }
.gsite:hover { background: #A31117; }
.grp-strip a { background: #fff; padding: 22px 20px; display: block; }
.grp-strip a:hover b { color: var(--accent); }
.grp-strip a b { display: block; font-size: 14px; }
.grp-strip a span { font-size: 12px; color: var(--fg-muted); }

/* ── WordPress対応 ── */
body.sg.admin-bar .header { top: 32px; }
@media (max-width: 782px) { body.sg.admin-bar .header { top: 46px; } }
body.sg .img-cover { width: 100%; height: 100%; object-fit: cover; }
.pcard-img img, .pthumb img, .hp-feat img { width: 100%; height: 100%; object-fit: cover; }
.hp-feat > img { position: absolute; inset: 0; }
.wp-content { max-width: 900px; margin: 40px auto 0; }
.wp-content p { margin-bottom: 1.2em; }
.wp-content img { border-radius: 4px; margin: 16px 0; }
.pager { flex-wrap: wrap; }
.pager .page-numbers { min-width: 40px; height: 40px; padding: 0 10px; display: grid; place-items: center; border: 1px solid var(--border); border-radius: 3px; font-size: 13px; background: #fff; }
.pager .page-numbers.current { background: var(--primary); color: #fff; border-color: var(--primary); }
.news-title { color: var(--fg); }
.news-item a.news-title:hover { color: var(--accent); }
.news-empty { color: var(--fg-muted); font-size: 14px; padding: 20px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.post-body { max-width: 760px; margin: 0 auto; }
.post-body .post-meta { font-size: 13px; color: var(--fg-muted); margin-bottom: 8px; }
.post-body h1 { font-size: clamp(22px, 3vw, 30px); font-weight: 700; line-height: 1.5; margin-bottom: 32px; }
.post-body .entry p { margin-bottom: 1.4em; }
.post-body .entry h2 { font-size: 20px; margin: 2em 0 .8em; padding-left: 12px; border-left: 3px solid var(--accent); }
.post-body .entry img { border-radius: 4px; margin: 1em 0; }
.wpcf7 input[type=text], .wpcf7 input[type=email], .wpcf7 input[type=tel], .wpcf7 textarea, .wpcf7 select { width: 100%; font: inherit; padding: 11px 14px; border: 1px solid var(--border); border-radius: 3px; background: #fafbfc; }
.wpcf7 input[type=submit] { background: var(--accent); color: #fff; border: 0; padding: 16px 64px; font-weight: 700; border-radius: 3px; cursor: pointer; font-family: inherit; }
.wpcf7 p { margin-bottom: 18px; }

/* ── Contact Form 7 レイアウト補正 ── */
.wpcf7 .frow { display: block; padding: 0; }
.wpcf7 .frow > p { display: grid; grid-template-columns: 200px 1fr; gap: 20px; align-items: start; padding: 20px 0; margin: 0; }
.wpcf7 .frow br, .wpcf7 .agree br { display: none; }
.wpcf7 .frow .wpcf7-form-control-wrap { display: block; min-width: 0; }
.wpcf7 .frow input[type=radio], .wpcf7 .frow input[type=checkbox], .wpcf7 .agree input[type=checkbox] { width: auto; margin: 0; padding: 0; flex: none; }
.wpcf7 .wpcf7-radio { display: flex; flex-wrap: wrap; gap: 10px 28px; padding-top: 10px; }
.wpcf7 .wpcf7-list-item { margin: 0; }
.wpcf7 .wpcf7-list-item label { display: inline-flex; align-items: center; gap: 8px; padding: 0; font-weight: 400; font-size: 15px; white-space: nowrap; cursor: pointer; }
.wpcf7 .agree { text-align: center; margin: 32px 0 24px; }
.wpcf7 .agree .wpcf7-list-item label { font-size: 14px; }
.wpcf7 .wpcf7-not-valid-tip { font-size: 12px; margin-top: 6px; }
.wpcf7 .wpcf7-response-output { margin: 24px 0 0; padding: 12px 16px; font-size: 14px; border-radius: 3px; }
@media (max-width: 640px) { .wpcf7 .frow > p { grid-template-columns: 1fr; gap: 8px; } }

/* ── 背景写真・リンク色 ── */
.gsite, .gsite:hover { color: #fff; }
.btn-primary, .btn-primary:hover, .badge, .news-cat { color: #fff; }
.story .st-year { color: #ffb3ad; }
.story .st-intro { border-left-color: #ff8f87; }
.story .section-label { background: linear-gradient(115deg, #ffd0cc 0%, #ffffff 100%); -webkit-background-clip: text; background-clip: text; }
.gcard--parent .gcard-field { color: #ffc9c4; }
.values-bg { position: relative; background: url(../img/bg-values.jpg) center 35% / cover no-repeat; }
.values-bg::before { content: ''; position: absolute; inset: 0; background: linear-gradient(rgba(20,10,10,.55), rgba(20,10,10,.35)); }
.values-bg > .inner { position: relative; }
.values-bg .section-sub { color: rgba(255,255,255,.8); }
.values-bg .section-label { background: linear-gradient(115deg, #ffffff 0%, #ffd0cc 100%); -webkit-background-clip: text; background-clip: text; }
.values-bg .values div { background: rgba(255,255,255,.94); }
.group-bg { position: relative; background: url(../img/bg-group.jpg) center bottom / cover no-repeat; }
.group-bg::before { content: ''; position: absolute; inset: 0; background: linear-gradient(rgba(255,255,255,.55), rgba(255,255,255,.15)); }
.group-bg > .inner { position: relative; }
.group-bg .grp-strip { background: rgba(255,255,255,.6); border-color: rgba(255,255,255,.6); }
.group-bg .grp-strip > div, .group-bg .grp-strip > a { background: rgba(255,255,255,.9); }
.group-bg .link-more { background: rgba(255,255,255,.9); padding: 6px 12px 4px; }
.gtile .stores { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.gtile .stores a { font-size: 11px; font-weight: 600; color: var(--accent); white-space: nowrap; }
.gtile .stores a:hover { text-decoration: underline; }

/* ── 沿革・採用CTAの背景写真 ── */
.history-bg { position: relative; background: url(../img/bg-history.jpg) center 40% / cover no-repeat; }
.history-bg::before { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(255,255,255,.94) 0%, rgba(255,255,255,.86) 55%, rgba(255,255,255,.55) 100%); }
.history-bg > .inner { position: relative; }
.history-bg .timeline { border-left-color: rgba(0,0,0,.15); }
.cta { position: relative; background: var(--deep) url(../img/bg-cta.jpg) 20% center / cover no-repeat; padding-block: 120px; overflow: hidden; }
.cta::before { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(30,26,24,0) 25%, rgba(30,26,24,.55) 55%, rgba(30,26,24,.82) 100%); }
.cta > .inner { position: relative; }
.cta-inner { justify-content: flex-end; gap: 24px 40px; }
.cta-inner > div:first-child { max-width: 480px; text-shadow: 0 2px 12px rgba(0,0,0,.35); }
.cta .cta-desc { color: rgba(255,255,255,.9); }
.cta .btn-ghost { background: rgba(0,0,0,.2); border-color: rgba(255,255,255,.8); }
@media (max-width: 760px) {
  .cta { padding-block: 290px 48px; background-position: 18% top; background-size: auto 300px; background-color: #2F2C2A; }
  .cta::before { background: linear-gradient(rgba(47,44,42,0) 0, rgba(47,44,42,0) 210px, #2F2C2A 300px); }
  .cta-inner { justify-content: flex-start; }
}

/* ── ページ番号（SWELLの装飾を打ち消して数字を表示） ── */
body.sg .pager .page-numbers { position: relative; color: var(--fg) !important; font-size: 13px !important; line-height: 1 !important; text-indent: 0 !important; letter-spacing: 0; width: auto; opacity: 1; visibility: visible; box-shadow: none; }
body.sg .pager .page-numbers::before, body.sg .pager .page-numbers::after { content: none !important; display: none !important; }
body.sg .pager a.page-numbers:hover { border-color: var(--accent); color: var(--accent) !important; }
body.sg .pager .page-numbers.current { background: var(--primary); color: #fff !important; border-color: var(--primary); }
body.sg .pager .page-numbers.dots { border: 0; background: none; }

/* ── フッターのシーサー ── */
.footer { position: relative; overflow: hidden; }
.footer > .inner { position: relative; z-index: 1; }
.footer-shisa { position: absolute; right: -20px; bottom: -20px; width: 440px; height: auto; max-width: none; opacity: .09; pointer-events: none; user-select: none; z-index: 0; }
@media (max-width: 760px) { .footer-shisa { width: 340px; right: -70px; bottom: -40px; opacity: .07; } }

/* ── プライバシーポリシー ── */
.footer-bottom { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.footer-bottom a { color: rgba(255,255,255,.55); }
.footer-bottom a:hover { color: #fff; }
.text-link { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
.privacy p { margin-bottom: 1.2em; }
.privacy h2 { font-size: 18px; font-weight: 700; margin: 2.4em 0 .8em; padding-left: 12px; border-left: 3px solid var(--accent); line-height: 1.5; }
.privacy ul { margin: 0 0 1.4em; }
.privacy li { position: relative; padding-left: 1.2em; margin-bottom: .4em; }
.privacy li::before { content: ''; position: absolute; left: 2px; top: .8em; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
.privacy-contact { background: var(--bg-sub); border-radius: 4px; padding: 20px 24px; margin-bottom: 2em; }
.privacy-contact p { margin: 0 0 4px; }
.privacy-contact a { color: var(--accent); text-decoration: underline; }
.privacy-date { text-align: right; color: var(--fg-muted); font-size: 14px; margin-top: 3em; }

/* ── NO PHOTO ── */
body.sg img.no-photo { width: 100%; height: 100%; object-fit: cover; object-position: left center; }
.pthumb img.no-photo { object-position: center; }
.hp-feat img.no-photo + .hp-feat-info { background: linear-gradient(to top, rgba(0,0,0,.55), transparent); }

/* ── トップ Projects：スマホではみ出さないように ── */
.hp-layout > * { min-width: 0; }
.hp-feat { max-width: 100%; }
body.sg .hp-feat > img { width: 100% !important; height: 100% !important; max-width: 100% !important; object-fit: cover; }
.hp-feat-title, .ptitle, .pcard-title, .news-title, .gcard-name { overflow-wrap: anywhere; word-break: normal; }
.hp-feat-title { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.hp-feat .meta { overflow-wrap: anywhere; }
.sg-main { overflow-x: clip; }
@media (max-width: 760px) {
  .hp-feat { aspect-ratio: auto; display: block; background: #2F2C2A; }
  body.sg .hp-feat > img { position: static; aspect-ratio: 16 / 10; height: auto !important; }
  .hp-feat-info { position: static; background: none !important; padding: 18px 20px 22px; }
  .hp-feat-title { font-size: 16px; line-height: 1.6; -webkit-line-clamp: 4; }
}

/* ── お知らせ：サムネイル付き ── */
.news-item.news-item--thumb { display: grid; grid-template-columns: 120px 1fr; gap: 20px; align-items: center; padding: 18px 0; }
.news-thumb { display: block; width: 120px; aspect-ratio: 4 / 3; border-radius: 4px; overflow: hidden; background: #ECE8E4; }
body.sg .news-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.news-item--thumb:hover .news-thumb img { transform: scale(1.05); }
.news-body { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.news-meta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.news-item--thumb .news-title { font-size: 15px; line-height: 1.7; color: var(--fg); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.news-item--thumb:hover .news-title { color: var(--accent); }
@media (max-width: 760px) {
  .news-item.news-item--thumb { grid-template-columns: 88px 1fr; gap: 14px; }
  .news-thumb { width: 88px; }
  .news-item--thumb .news-title { font-size: 14px; grid-column: auto; }
}

/* ── おきなわSDGsパートナー ── */
.sdgs-band { padding-block: 0 72px; margin-top: -40px; background: var(--bg-sub); }
.sdgs-badge { display: inline-flex; align-items: center; gap: 16px; padding: 14px 22px 14px 16px; background: #fff; border: 1px solid var(--border); border-radius: 6px; max-width: 100%; transition: border-color .2s, box-shadow .2s; }
.sdgs-badge:hover { border-color: #cfc8c2; box-shadow: 0 6px 18px rgba(0,0,0,.06); }
body.sg .sdgs-badge img { height: 48px; width: auto; }
.sdgs-mark { width: 44px; height: 44px; flex: none; border-radius: 50%;
  background: conic-gradient(#E5243B 0 5.88%, #DDA63A 0 11.76%, #4C9F38 0 17.6%, #C5192D 0 23.5%, #FF3A21 0 29.4%, #26BDE2 0 35.3%, #FCC30B 0 41.2%, #A21942 0 47%, #FD6925 0 52.9%, #DD1367 0 58.8%, #FD9D24 0 64.7%, #BF8B2E 0 70.6%, #3F7E44 0 76.5%, #0A97D9 0 82.4%, #56C02B 0 88.2%, #00689D 0 94.1%, #19486A 0);
  -webkit-mask: radial-gradient(circle, transparent 11px, #000 12px); mask: radial-gradient(circle, transparent 11px, #000 12px); }
.sdgs-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sdgs-text b { font-size: 14px; font-weight: 700; color: var(--fg); }
.sdgs-text small { font-size: 12px; color: var(--fg-muted); line-height: 1.6; }
.sdgs-arrow { font-size: 13px; color: var(--accent); margin-left: 4px; }
@media (max-width: 640px) { .sdgs-badge { gap: 12px; padding: 12px 14px; } .sdgs-arrow { display: none; } }
