/* =========================
   TYPOGRAPHY SYSTEM
========================= */

:root {
  --font-body: 1.2rem;
  --font-body-lg: 1.3rem;

  --font-h1: 2.0rem;
  --font-h2: 1.8rem;
  --font-h3: 1.6rem;
  --font-h4: 1.5rem;

  --line-body: 1.6;
  --line-heading: 1.5;

  --space-xs: 12px;
  --space-sm: 18px;
  --space-md: 24px;
  --space-lg: 34px;
  --space-xl: 48px;
  --space-2xl: 72px;
  --color-bg:#ffffff;
  --color-text:#6e6a67;
  --color-heading:#5f5a57;
  --color-line:#9f9f9f;
  --color-accent:#bfd3e8;
  --color-accent-2:#d7e5f2;
  --color-deep:#6e95bc;
  --color-dark:#57524f;
  --color-white:#fff;
  --container:1120px;
  --container-narrow:960px;
  --radius:24px;
  --shadow:0 14px 40px rgba(0,0,0,.05);
}

/* 本文 */
body {
  font-size: var(--font-body);
  line-height: var(--line-body);
}

/* セクション */
.page-section {
  padding: var(--space-2xl) 0;
}

/* 見出し（共通） */
.section-heading {
  margin-bottom: var(--space-lg);
}

.section-heading__title {
  font-size: var(--font-h1);
  line-height: 1.16;
  color:var(--color-heading);
  letter-spacing:.03em;
  font-weight:500;
  border-bottom: 1px solid #8f8f8f;
  padding-bottom: 5px;
}
/* .section-heading__line {
  width: min(100%, 420px);
  height:1px;
  background: var(--color-line);
} */

/* h2 */
.page-shell h2,
.service-block-heading h2,
.about-profile-body__title {
  font-size: var(--font-h2);
  line-height: var(--line-heading);
  margin-bottom: var(--space-md);
}

/* h3 */
.page-shell h3 {
  font-size: var(--font-h3);
  line-height: 1.65;
  margin-bottom: var(--space-xs);
}

/* h4 */
.page-shell h4 {
  font-size: var(--font-h4);
  margin-bottom: 10px;
}

/* 本文 */
.page-shell p,
.page-shell li,
.page-shell dt,
.page-shell dd {
  font-size: var(--font-body);
  line-height: var(--line-body);
}

/* 段落 */
.page-shell p + p {
  margin-top: 1.2em;
}

/* リスト */
.page-shell ul,
.page-shell ol {
  padding-left: 1.3em;
}

.page-shell li + li {
  margin-top: 0.35em;
}

/* 強調リード */
.section-lead,
.about-copy p,
.service-intro__lead p,
.service-training__lead,
.philosophy-intro__copy p {
  font-size: var(--font-body-lg);
  line-height: 2;
}

/* テーブル */
.company-table__row dt,
.company-table__row dd,
.service-price-table th,
.service-price-table td,
.service-training-price th,
.service-training-price td {
  font-size: var(--font-body);
  line-height: 1.8;
}

/* SP */
@media (max-width: 899px) {
  :root {
    --font-body: 1.48rem;
    --font-body-lg: 1.6rem;
    --font-h2: 2.2rem;
    --font-h3: 1.7rem;
    --space-2xl: 44px;
  }
}

/* PC・SP出し分け */
.display-pc-only {
  display: block;
}

.display-sp-only {
  display: none;
}
@media (max-width: 899px) {
  .display-pc-only {
    display: none;
  }
  .display-sp-only {
    display: block;
  }
}
/* =========================
   FINAL POLISH
========================= */

:root {
  --content-max: 980px;
  --reading-max: 920px;

  --section-gap-lg: 72px;
  --section-gap-md: 56px;
  --section-gap-sm: 40px;

  --heading-gap: 24px;
  --text-gap: 18px;
}

/* セクション間のばらつきを抑える */
.page-section {
  padding-top: var(--section-gap-lg);
  padding-bottom: var(--section-gap-lg);
}

/* 見出し直後の本文距離を統一 */
.page-shell h2 {
  margin: 0 0 var(--heading-gap);
}

.page-shell h3 {
  margin: 0 0 10px;
}

/* 本文の読み幅を揃える */
.about-copy,
.about-profile-body__content,
.service-intro__lead,
.service-culture__main,
.service-speech__lead,
.service-lecture__content,
.philosophy-intro__copy,
.philosophy-values__inner {
  max-width: var(--reading-max);
}

/* 段落の間隔を安定化 */
.page-shell p {
  margin-top: 0;
  margin-bottom: 0;
}

.page-shell p + p {
  margin-top: 1.15em;
}

/* リストの間隔 */
.page-shell ul,
.page-shell ol {
  margin-top: 0;
  margin-bottom: 0;
}

.page-shell li + li {
  margin-top: 0.28em;
}

/* テーブルの縦密度を統一 */
.company-table__row,
.service-price-table th,
.service-price-table td,
.service-training-price th,
.service-training-price td {
  vertical-align: top;
}

/* カード系の見出しと本文距離 */
.about-service-card__title,
.service-training-card h3 {
  margin-bottom: 12px;
}

/* BLOG, VOICE も少し詰める */
.post-card__meta {
  margin-bottom: 6px;
}

.post-card__title,
.voice-card__title {
  line-height: 1.7;
}

/* セクション直下でいきなり広くなりすぎるのを防ぐ */
.page-shell > section:first-child {
  padding-top: 56px;
}

/* 最終行の余白を整理 */
.page-shell .section-heading:last-child,
.page-shell p:last-child,
.page-shell ul:last-child,
.page-shell ol:last-child {
  margin-bottom: 0;
}

@media (max-width: 1024px) {
  :root {
    --section-gap-lg: 60px;
    --section-gap-md: 46px;
    --section-gap-sm: 34px;
  }
}

@media (max-width: 899px) {
  :root {
    --content-max: 100%;
    --reading-max: 100%;
    --section-gap-lg: 44px;
    --section-gap-md: 34px;
    --section-gap-sm: 24px;
    --heading-gap: 18px;
    --text-gap: 14px;
  }

  .page-shell > section:first-child {
    padding-top: 40px;
  }

  .page-shell h2 {
    margin-bottom: 18px;
  }

  .page-shell h3 {
    margin-bottom: 8px;
  }

  .post-card__title,
  .voice-card__title {
    line-height: 1.65;
  }
}

.blog-archive,
.voice-archive {
  padding-top: 56px;
  padding-bottom: 64px;
}

.archive-grid {
  gap: 30px 24px;
}

.voice-list {
  gap: 20px;
}

.voice-card {
  padding-bottom: 18px;
}

.single-article {
  padding-top: 56px;
  padding-bottom: 64px;
}

.single-article__header {
  margin-bottom: 26px;
  padding-bottom: 16px;
}

@media (max-width: 899px) {
  .blog-archive,
  .voice-archive,
  .single-article {
    padding-top: 40px;
    padding-bottom: 44px;
  }

  .archive-grid {
    gap: 24px;
  }
}

html{
  scroll-behavior:smooth;
}
*,:before,:after{box-sizing:border-box}
body{
  margin:0;
  background:var(--color-bg);
  color:var(--color-text);
  font-family: "kozuka-mincho-pro", serif;
  font-weight: 400;
  margin: 0 auto;
  -webkit-text-size-adjust:100%;
}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none;transition:opacity .25s,color .25s,transform .25s}
a:hover{opacity:.86}
ul,ol{margin:0;padding:0}
main{display:block}
.screen-reader-text{
  position:absolute!important;
  width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}

.site-header{
  position:sticky;top:0;z-index:100;
  background:rgba(247,247,245,.92);
  backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(159,159,159,.18);
}
.site-header__inner,
.site-footer__inner{
  width:min(100% - 48px,var(--container));
  margin:0 auto;
}
.site-header__inner{
  max-width: 1040px;
  margin: 0 auto;
  min-height:84px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}
.site-header__logo img{
  width:auto;
  height:47px;
}
.site-header__toggle{
  display:none;
  width:48px;
  height:48px;
  border:0;
  background:transparent;
  padding:0;
  cursor:pointer;
}
.site-header__toggle span{
  display:block;width:24px;height:2px;background:#666;margin:5px auto;
  transition:transform .25s,opacity .25s;
}
.global-nav__list,
.footer-nav__list{
  list-style:none;
  display:flex;
  gap:18px;
  align-items:center;
  margin:0;
  padding:0;
}
.global-nav__list a,
.footer-nav__list a{
  font-family: "DIN Alternate";
  font-size: 14px;
  font-weight: 700;
  line-height: 14px;
  letter-spacing: normal;
  color: #acacac;
  text-wrap: nowrap;
  transition: 0.2s ease-in-out;
}
.global-nav__list .current-menu-item > a{color:#7ea3c9}

.site-main{overflow:clip}
.page-shell{position:relative}
.page-shell:after{
  content:"";
  position:absolute;
  top:0;right:0;bottom:0;
  width:min(18vw,180px);
  background:linear-gradient(90deg,rgba(191,211,232,0) 0%,rgba(191,211,232,.18) 36%,rgba(191,211,232,.44) 100%);
  pointer-events:none;
  z-index:0;
}
.page-shell > *{position:relative;z-index:1}

.page-section{
  width:min(100% - 48px,var(--container));
  margin:0 auto;
  padding:72px 0;
}
.page-section--narrow{width:min(100% - 48px,var(--container-narrow))}
.site-footer{
  margin-top:48px;
  padding:28px 0 34px;
  border-top:1px solid rgba(160,160,160,.5);
}
.site-footer__inner{
  max-width: 1040px;
  margin: 0 auto;
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:32px;
}
.site-footer__logo img{
  width:auto;
  height:47px;
  margin-bottom:12px;
}
.site-footer__office-label{
  margin:0 0 6px;
  font-size:1.04rem;
  letter-spacing:.12em;
}
.site-footer__office{
  margin:0;
  font-size:1.04rem;
  line-height:1.9;
  color:#77726f;
}
.site-footer__copy{
  margin-top:16px;
  font-size:0.9rem;
  color:#9c9895;
}

.archive-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:34px 26px;
}
.post-card__link{display:block}
.post-card__thumb{
  margin-bottom:14px;
  overflow:hidden;
  border-radius:18px;
  background:#eceae8;
  aspect-ratio:4/3;
}
.post-card__thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.post-card__meta{margin:0 0 8px;font-size:1.25rem;color:#9b9896;letter-spacing:.04em}
.post-card__title{margin:0;font-size:1.65rem;line-height:1.75;color:#68635f}
.pagination{margin-top:40px}
.pagination .nav-links{display:flex;gap:10px;flex-wrap:wrap}
.pagination .page-numbers{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:42px;height:42px;padding:0 12px;
  border:1px solid rgba(159,159,159,.4);border-radius:999px;
  font-family:Arial,sans-serif;font-size:1.3rem;
}
.pagination .current{background:var(--color-accent);border-color:var(--color-accent);color:#fff}
.single-article__inner{width:min(100% - 48px,820px);margin:0 auto}
.single-article__header{
  margin-bottom:30px;padding-bottom:18px;border-bottom:1px solid rgba(150,150,150,.35)
}
.single-article__date{margin:0 0 10px;font-size:1.3rem;color:#9b9896}
.single-article__title{
  margin:0;font-size:clamp(2.6rem,3vw,4.2rem);line-height:1.55;color:#615c59
}
.single-article__content{font-size:1.65rem;line-height:2.05;color:#6a6663}
.single-article__content p{margin:0 0 1.4em}
.single-article__content h2,
.single-article__content h3{
  margin:1.8em 0 .6em;color:#615c59;line-height:1.6
}
.single-article__content img{margin:1.6em 0;border-radius:18px}

.voice-list{display:grid;gap:22px;max-width:920px}
.voice-card{
  padding:0 0 20px;
  border-bottom:1px solid rgba(150,150,150,.36);
}
.voice-card__title{margin:0 0 10px;font-size:1.8rem;color:#67635f}
.voice-card__excerpt{font-size:1.55rem;line-height:1.9;color:#6d6966}

.contact-panel{
  background:#fff;
  border-radius:28px;
  padding:36px;
  box-shadow:var(--shadow);
}
.contact-panel__note{
  margin:0 0 20px;
  font-size:1.45rem;
  color:#8b8682;
}
.contact-fallback{
  display:grid;
  gap:18px;
}
.contact-fallback__grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:18px;
}
.contact-fallback label{display:block;font-size:1.4rem;color:#6c6764}
.contact-fallback input,
.contact-fallback textarea{
  width:100%;
  margin-top:8px;
  padding:14px 16px;
  border:1px solid #d8d4cf;
  border-radius:14px;
  background:#fff;
  font:inherit;
  color:#444;
}
.contact-fallback textarea{min-height:180px;resize:vertical}
.contact-fallback button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:180px;
  height:52px;
  border:0;border-radius:999px;
  background:var(--color-accent);
  color:#fff;
  font:700 1.4rem/1 Arial,sans-serif;
  letter-spacing:.08em;
  cursor:pointer;
}
.copyright-placeholder{
  display:flex;align-items:center;justify-content:center;
  background:#e9eef4;color:#6e95bc;border-radius:18px;
  font-family:Arial,sans-serif;font-weight:700;text-transform:uppercase;
}
.ph-img{
  width:100%;height:auto;border-radius:18px;overflow:hidden;
}
.ph-img svg{width:100%;height:auto;display:block}

@media (max-width:1024px){
  .archive-grid{grid-template-columns:repeat(2,1fr)}
  .page-section{padding:60px 0}
  .page-shell:after{width:min(16vw,140px)}
}
@media (max-width:899px){
  .site-header__inner,
  .site-footer__inner,
  .page-section,
  .single-article__inner{width:min(100% - 32px,var(--container))}
  .site-header__inner{min-height:72px}
  .site-header__logo img,.site-footer__logo img{height:30px}
  .site-header__toggle{display:block}
  .global-nav{
    position:absolute;left:0;right:0;top:100%;
    background:rgba(247,247,245,.98);
    border-bottom:1px solid rgba(159,159,159,.18);
    padding:0 16px;
    display:none;
  }
  .global-nav.is-open{display:block}
  .global-nav__list{flex-direction:column;align-items:flex-start;padding:16px 0}
  .footer-nav__list{flex-wrap:wrap;gap:10px 14px}
  .page-section{padding:44px 0}
  .section-heading{margin-bottom:24px}
  .section-heading__title{
    max-width: 340px;
    padding-bottom: 20px;
    border-bottom: 1.5px solid #4b4b4b;
    font-family: "STIX Two Text", serif;
    font-size: calc(28 / 16 * 1rem);
    font-weight: 400;
    line-height: 1;
    letter-spacing: 0;
    margin-bottom: 30px;
  }
  .section-heading__line{width:min(100%,220px)}
  .page-shell:after{width:20vw;opacity:.55}
  .site-footer__inner{flex-direction:column}
  .archive-grid{grid-template-columns:1fr;gap:28px}
  .post-card__title,.voice-card__title{font-size:1.6rem}
  .voice-card__excerpt,.single-article__content{font-size:1.48rem}
  .contact-panel{padding:24px}
  .contact-fallback__grid{grid-template-columns:1fr}
}
@media screen and (min-width: 900px) {
    header {
        width: 100%;
        border-bottom: none;
        padding: 0 50px 0 0;
    }
}
.page-top {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 120;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 72px;
  height: 72px;
  border: 1px solid rgba(159, 159, 159, 0.35);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.92);
  color: #6e95bc;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.08);
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(16px);
  transition:
    opacity 0.35s ease,
    visibility 0.35s ease,
    transform 0.35s ease,
    background 0.25s ease,
    color 0.25s ease,
    border-color 0.25s ease,
    box-shadow 0.25s ease,
    bottom 0.25s ease;
}

.page-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.page-top:hover {
  background: #bfd3e8;
  color: #ffffff;
  border-color: #bfd3e8;
  box-shadow: 0 16px 28px rgba(0, 0, 0, 0.12);
  transform: translateY(-4px);
  opacity: 1;
}

.page-top::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 12px;
  height: 12px;
  border-top: 2px solid currentColor;
  border-left: 2px solid currentColor;
  transform: translate(-50%, -30%) rotate(45deg);
}

.page-top.is-footer-near {
  bottom: 112px;
}

@media (max-width: 899px) {
  .page-top {
    right: 16px;
    bottom: 16px;
    width: 60px;
    height: 60px;
  }

  .page-top::before {
    width: 10px;
    height: 10px;
  }

  .page-top.is-footer-near {
    bottom: 88px;
  }
}
:root {
  --header-offset: 96px;
}

html {
  scroll-padding-top: var(--header-offset);
}

[id] {
  scroll-margin-top: var(--header-offset);
}

@media (max-width: 899px) {
  :root {
    --header-offset: 80px;
  }
}
/* ======================================
   FOUNDATION (壊れない設計の核)
====================================== */

/* タイポはここだけ */
.typography {
  max-width: 920px;
}

.typography p,
.typography li,
.typography dt,
.typography dd {
  font-size: var(--font-body);
  line-height: var(--line-body);
  color: #6a6663;
}

.typography p + p {
  margin-top: 1.2em;
}

.typography ul,
.typography ol {
  padding-left: 1.3em;
}

.typography li + li {
  margin-top: 0.35em;
}

/* 見出し */
.typography h2 {
  font-size: var(--font-h2);
  margin-bottom: var(--space-md);
}

.typography h3 {
  font-size: var(--font-h3);
  margin-bottom: 8px;
}

/* =========================
   レイアウト基礎
========================= */

.container {
  width: min(100% - 48px, 1120px);
  margin: 0 auto;
}

.section {
  padding: var(--space-2xl) 0;
}