:root{
  --md-ivory:#F8F4ED;
  --md-ivory-soft:#F2EDE2;
  --md-ivory-deep:#EAE3D2;
  --md-ink:#1B1816;
  --md-ink-soft:#3A3530;
  --md-sumi:#2A2925;
  --md-accent:#9C2B2B;
  --md-accent-soft:#B8423E;
  --md-rule:rgba(27,24,22,0.18);
  --md-rule-soft:rgba(27,24,22,0.08);
  --md-shadow:0 1px 2px rgba(27,24,22,0.04), 0 8px 18px rgba(27,24,22,0.06);
  --md-radius:2px;
  --md-radius-lg:4px;
  --md-font-display:"Zen Old Mincho", "Noto Serif JP", "Hiragino Mincho ProN", serif;
  --md-font-body:"IBM Plex Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
  --md-max:1180px;
  --md-gap:24px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:var(--md-font-body);
  color:var(--md-ink);
  background:var(--md-ivory);
  line-height:1.78;
  font-size:16px;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--md-accent);text-decoration:none;transition:color .2s ease}
a:hover{color:var(--md-accent-soft);text-decoration:underline}
h1,h2,h3,h4,h5{
  font-family:var(--md-font-display);
  color:var(--md-sumi);
  font-weight:600;
  letter-spacing:0.02em;
  line-height:1.4;
  margin:0 0 .6em;
}
h1{font-size:2.4rem}
h2{font-size:1.8rem}
h3{font-size:1.32rem}
p{margin:0 0 1em}
.container{max-width:var(--md-max);margin:0 auto;padding:0 28px}
.section{padding:84px 0;border-bottom:1px solid var(--md-rule-soft)}
.section:last-of-type{border-bottom:none}
.section-eyebrow{
  display:inline-block;
  font-family:var(--md-font-display);
  font-size:.84rem;
  letter-spacing:.32em;
  color:var(--md-accent);
  text-transform:uppercase;
  margin-bottom:14px;
  padding-bottom:6px;
  border-bottom:1px solid var(--md-accent);
}
.section-title{
  font-size:2rem;
  margin-bottom:.4em;
  position:relative;
}
.section-lead{
  font-size:1.04rem;
  color:var(--md-ink-soft);
  max-width:720px;
  margin-bottom:42px;
}
.thin-rule{
  display:block;
  width:48px;
  height:2px;
  background:var(--md-accent);
  margin:14px 0 22px;
}

.site-header{
  background:var(--md-ivory);
  border-bottom:1px solid var(--md-rule);
  position:sticky;
  top:0;
  z-index:200;
}
.site-header .container{
  display:flex;
  align-items:center;
  gap:32px;
  padding-top:18px;
  padding-bottom:18px;
}
.brand{
  display:flex;
  align-items:center;
  gap:10px;
  text-decoration:none;
  color:var(--md-sumi);
}
.brand-mark{
  width:38px;height:38px;
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--md-sumi);
  font-family:var(--md-font-display);
  font-weight:600;
  font-size:1.12rem;
  color:var(--md-sumi);
}
.brand-name{
  font-family:var(--md-font-display);
  font-size:1.18rem;
  font-weight:600;
  letter-spacing:.05em;
}
.brand-sub{
  display:block;
  font-family:var(--md-font-body);
  font-size:.7rem;
  color:var(--md-ink-soft);
  letter-spacing:.18em;
  text-transform:uppercase;
}
.nav{
  display:flex;
  align-items:center;
  gap:6px;
  margin-left:auto;
}
.nav > a, .nav-trigger{
  font-size:.94rem;
  color:var(--md-sumi);
  padding:9px 14px;
  border:1px solid transparent;
  background:none;
  font-family:var(--md-font-body);
  cursor:pointer;
  letter-spacing:.04em;
}
.nav > a:hover, .nav-trigger:hover{
  border-color:var(--md-rule);
  color:var(--md-accent);
  text-decoration:none;
}
.nav-dropdown{
  position:relative;
}
.nav-trigger .ph{font-size:.85rem;margin-left:4px;vertical-align:middle}
.nav-menu{
  display:none;
  position:absolute;
  top:calc(100% + 8px);
  right:0;
  background:var(--md-ivory);
  border:1px solid var(--md-rule);
  min-width:280px;
  padding:10px 0;
  box-shadow:var(--md-shadow);
  z-index:210;
}
.nav-menu.open{display:block}
.nav-menu a{
  display:block;
  padding:9px 18px;
  font-size:.92rem;
  color:var(--md-sumi);
  border-bottom:1px solid var(--md-rule-soft);
}
.nav-menu a:last-child{border-bottom:none}
.nav-menu a:hover{background:var(--md-ivory-soft);color:var(--md-accent);text-decoration:none}
.btn{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-family:var(--md-font-body);
  font-size:.94rem;
  padding:11px 22px;
  border:1px solid var(--md-sumi);
  background:var(--md-sumi);
  color:var(--md-ivory);
  letter-spacing:.04em;
  cursor:pointer;
  transition:all .2s ease;
  text-decoration:none;
}
.btn:hover{
  background:var(--md-accent);
  border-color:var(--md-accent);
  color:#fff;
  text-decoration:none;
}
.btn-outline{
  background:transparent;
  color:var(--md-sumi);
}
.btn-outline:hover{
  background:var(--md-sumi);
  color:var(--md-ivory);
}
.btn-accent{
  background:var(--md-accent);
  border-color:var(--md-accent);
  color:#fff;
}
.btn-accent:hover{
  background:var(--md-sumi);
  border-color:var(--md-sumi);
}

.hero{
  padding:84px 0 68px;
  background:var(--md-ivory);
  border-bottom:1px solid var(--md-rule);
}
.hero-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:56px;
  align-items:center;
}
.hero-eyebrow{
  font-family:var(--md-font-display);
  font-size:.86rem;
  letter-spacing:.34em;
  color:var(--md-accent);
  text-transform:uppercase;
}
.hero-title{
  font-size:3.1rem;
  line-height:1.28;
  margin:18px 0 8px;
  color:var(--md-sumi);
}
.hero-underline{
  width:96px;
  height:3px;
  background:var(--md-accent);
  margin:6px 0 28px;
}
.hero-lead{
  font-size:1.08rem;
  color:var(--md-ink-soft);
  margin-bottom:30px;
}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap}
.hero-image-wrap{
  position:relative;
  border:1px solid var(--md-rule);
  background:var(--md-ivory-soft);
  overflow:hidden;
  aspect-ratio: 4 / 5;
}
.hero-image-wrap img{
  width:100%;height:100%;object-fit:cover;
}
.hero-caption{
  position:absolute;
  bottom:0;left:0;right:0;
  background:rgba(27,24,22,0.62);
  color:var(--md-ivory);
  padding:14px 18px;
  font-size:.82rem;
  letter-spacing:.06em;
  border-top:2px solid var(--md-accent);
}

.advantages-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:22px;
}
.pillar-card{
  border:1px solid var(--md-rule);
  background:var(--md-ivory-soft);
  padding:30px 22px;
  position:relative;
}
.pillar-card::before{
  content:"";
  display:block;
  width:30px;
  height:2px;
  background:var(--md-accent);
  margin-bottom:14px;
}
.pillar-card .ph{
  font-size:1.7rem;
  color:var(--md-accent);
  margin-bottom:10px;
  display:block;
}
.pillar-card h3{
  font-size:1.12rem;
  margin-bottom:10px;
}
.pillar-card p{
  font-size:.94rem;
  color:var(--md-ink-soft);
  margin-bottom:0;
}

.about-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:48px;
  align-items:center;
}
.about-image{
  border:1px solid var(--md-rule);
  overflow:hidden;
  aspect-ratio: 5 / 4;
}
.about-image img{width:100%;height:100%;object-fit:cover}
.about-list{
  list-style:none;
  padding:0;
  margin:18px 0 0;
}
.about-list li{
  display:flex;
  gap:12px;
  margin-bottom:12px;
  font-size:.96rem;
}
.about-list li .ph{
  color:var(--md-accent);
  font-size:1.1rem;
  flex-shrink:0;
  margin-top:3px;
}

.article-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:28px;
}
.article-card{
  border:1px solid var(--md-rule);
  background:var(--md-ivory);
  display:flex;
  flex-direction:column;
  transition:background .25s ease, border-color .25s ease;
}
.article-card:hover{
  background:var(--md-ivory-soft);
  border-color:var(--md-accent);
}
.article-card-image{
  aspect-ratio: 16 / 10;
  overflow:hidden;
  border-bottom:1px solid var(--md-rule-soft);
}
.article-card-image img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.article-card:hover .article-card-image img{transform:scale(1.03)}
.article-card-body{padding:24px 22px 26px}
.article-card-meta{
  font-size:.78rem;
  color:var(--md-ink-soft);
  letter-spacing:.16em;
  text-transform:uppercase;
  margin-bottom:10px;
}
.article-card-title-rule{
  width:30px;
  height:2px;
  background:var(--md-accent);
  margin-bottom:12px;
}
.article-card h3{
  font-size:1.14rem;
  margin:0 0 10px;
  line-height:1.5;
}
.article-card h3 a{color:var(--md-sumi)}
.article-card h3 a:hover{color:var(--md-accent);text-decoration:none}
.article-card p{
  font-size:.92rem;
  color:var(--md-ink-soft);
  margin-bottom:14px;
}
.article-card-link{
  font-size:.86rem;
  letter-spacing:.06em;
  color:var(--md-accent);
  align-self:flex-start;
}
.article-card-link .ph{margin-left:4px;font-size:.95rem;vertical-align:middle}

.mission-block{
  background:var(--md-ivory-soft);
  border:1px solid var(--md-rule);
  padding:54px 56px;
  display:grid;
  grid-template-columns:1fr 1.5fr;
  gap:48px;
  align-items:center;
}
.mission-image{
  aspect-ratio: 4 / 5;
  overflow:hidden;
  border:1px solid var(--md-rule);
}
.mission-image img{width:100%;height:100%;object-fit:cover}
.mission-quote{
  font-family:var(--md-font-display);
  font-size:1.32rem;
  line-height:1.8;
  color:var(--md-sumi);
  border-left:3px solid var(--md-accent);
  padding-left:22px;
  margin:18px 0 22px;
}

.achievements{background:var(--md-ivory-deep);border-top:1px solid var(--md-rule)}
.achievements-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:22px;
  margin-top:14px;
}
.achievement-tile{
  border:1px solid var(--md-rule);
  background:var(--md-ivory);
  padding:30px 24px;
  text-align:left;
}
.achievement-tile-rule{
  width:24px;
  height:2px;
  background:var(--md-accent);
  margin-bottom:14px;
}
.achievement-num{
  font-family:var(--md-font-display);
  font-size:2.6rem;
  font-weight:600;
  color:var(--md-sumi);
  line-height:1.1;
  display:block;
  margin-bottom:6px;
}
.achievement-label{
  font-size:.92rem;
  color:var(--md-ink-soft);
  letter-spacing:.04em;
}
.achievements-disclaimer{
  margin-top:24px;
  font-size:.82rem;
  color:var(--md-ink-soft);
  border-top:1px dashed var(--md-rule);
  padding-top:14px;
}

.closing-cta{
  background:var(--md-sumi);
  color:var(--md-ivory);
  padding:80px 0;
  text-align:center;
}
.closing-cta h2{color:var(--md-ivory)}
.closing-cta .thin-rule{margin:14px auto 22px;background:var(--md-accent)}
.closing-cta p{color:rgba(248,244,237,.84);max-width:640px;margin:0 auto 28px}
.closing-cta .btn-outline{
  border-color:var(--md-ivory);
  color:var(--md-ivory);
  background:transparent;
}
.closing-cta .btn-outline:hover{
  background:var(--md-ivory);
  color:var(--md-sumi);
}

.site-footer{
  background:var(--md-ivory-deep);
  color:var(--md-ink);
  padding:60px 0 0;
  border-top:1px solid var(--md-rule);
}
.footer-grid{
  display:grid;
  grid-template-columns:1.4fr 1fr;
  gap:48px;
  padding-bottom:42px;
}
.footer-col h4{
  font-size:.88rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  margin-bottom:18px;
  color:var(--md-sumi);
  border-bottom:1px solid var(--md-accent);
  display:inline-block;
  padding-bottom:6px;
}
.footer-info p{font-size:.92rem;color:var(--md-ink-soft);margin-bottom:8px}
.footer-info p .ph{color:var(--md-accent);margin-right:8px;vertical-align:middle}
.footer-links{list-style:none;padding:0;margin:0}
.footer-links li{margin-bottom:8px;font-size:.92rem}
.footer-links a{color:var(--md-ink-soft)}
.footer-links a:hover{color:var(--md-accent)}
.footer-bottom{
  border-top:1px solid var(--md-rule);
  padding:18px 0;
  font-size:.82rem;
  color:var(--md-ink-soft);
  text-align:center;
  letter-spacing:.05em;
}

.cookie-banner{
  position:fixed;
  bottom:0;left:0;right:0;
  background:var(--md-sumi);
  color:var(--md-ivory);
  padding:18px 24px;
  display:none;
  z-index:500;
  border-top:2px solid var(--md-accent);
}
.cookie-banner.visible{display:block}
.cookie-inner{
  max-width:var(--md-max);
  margin:0 auto;
  display:flex;
  align-items:center;
  gap:24px;
  flex-wrap:wrap;
}
.cookie-text{
  flex:1;
  min-width:280px;
  font-size:.9rem;
  line-height:1.6;
}
.cookie-text a{color:var(--md-accent-soft)}
.cookie-actions{display:flex;gap:12px}
.cookie-actions .btn{
  border-color:var(--md-ivory);
  background:transparent;
  color:var(--md-ivory);
  padding:10px 22px;
}
.cookie-actions .btn:hover{
  background:var(--md-ivory);
  color:var(--md-sumi);
}

.modal-overlay{
  position:fixed;inset:0;
  background:rgba(27,24,22,.6);
  display:none;
  align-items:center;justify-content:center;
  z-index:800;
}
.modal-overlay.visible{display:flex}
.modal-card{
  background:var(--md-ivory);
  border:1px solid var(--md-rule);
  border-top:3px solid var(--md-accent);
  padding:36px 36px 32px;
  max-width:440px;
  margin:20px;
  text-align:center;
}
.modal-card .ph{font-size:2rem;color:var(--md-accent);margin-bottom:12px;display:block}
.modal-card h3{margin-bottom:10px}
.modal-card p{color:var(--md-ink-soft);font-size:.95rem}

.form{
  border:1px solid var(--md-rule);
  background:var(--md-ivory);
  padding:36px 32px;
}
.form-row{margin-bottom:18px}
.form label{
  display:block;
  font-size:.86rem;
  letter-spacing:.06em;
  color:var(--md-sumi);
  margin-bottom:6px;
  font-weight:500;
}
.form input, .form textarea{
  width:100%;
  padding:11px 14px;
  border:1px solid var(--md-rule);
  background:var(--md-ivory-soft);
  color:var(--md-ink);
  font-family:var(--md-font-body);
  font-size:.96rem;
  border-radius:0;
}
.form input:focus, .form textarea:focus{
  outline:none;
  border-color:var(--md-accent);
  background:#fff;
}
.form textarea{min-height:140px;resize:vertical}

.contact-grid{
  display:grid;
  grid-template-columns:1.05fr 1fr;
  gap:42px;
  align-items:start;
}
.contact-card{
  border:1px solid var(--md-rule);
  background:var(--md-ivory-soft);
  padding:32px 28px;
}
.contact-card h3{margin-bottom:14px}
.contact-card p{font-size:.96rem;margin-bottom:8px}
.contact-card .ph{color:var(--md-accent);margin-right:8px}
.map-frame{
  margin-top:28px;
  border:1px solid var(--md-rule);
  height:340px;
  width:100%;
  overflow:hidden;
}
.map-frame iframe{width:100%;height:100%;border:0}

.legal-page article{
  border:1px solid var(--md-rule);
  background:var(--md-ivory);
  padding:48px 52px;
}
.legal-page h1{font-size:2rem}
.legal-page h2{
  font-size:1.32rem;
  margin-top:36px;
  padding-top:24px;
  border-top:1px solid var(--md-rule-soft);
}
.legal-page h2:first-of-type{border-top:none;margin-top:0;padding-top:0}
.legal-page p{font-size:.96rem;color:var(--md-ink-soft)}
.legal-page ul{padding-left:22px}
.legal-page ul li{font-size:.94rem;color:var(--md-ink-soft);margin-bottom:6px}

.article-page{padding:60px 0}
.article-hero{
  margin-bottom:36px;
  padding-bottom:28px;
  border-bottom:1px solid var(--md-rule);
}
.article-meta-strip{
  font-size:.82rem;
  color:var(--md-ink-soft);
  letter-spacing:.18em;
  text-transform:uppercase;
  margin-bottom:14px;
}
.article-page h1{
  font-size:2.4rem;
  line-height:1.3;
  margin-bottom:14px;
}
.article-page .article-byline{
  font-size:.92rem;
  color:var(--md-ink-soft);
  margin-bottom:0;
}
.article-cover{
  margin:24px 0 36px;
  border:1px solid var(--md-rule);
  overflow:hidden;
  aspect-ratio: 16 / 9;
}
.article-cover img{width:100%;height:100%;object-fit:cover}
.article-body{
  max-width:820px;
  margin:0 auto;
  font-size:1.02rem;
  line-height:1.92;
  color:var(--md-ink);
}
.article-body p{margin-bottom:1.4em}
.article-body h2{
  font-size:1.48rem;
  margin-top:1.8em;
  padding-top:1em;
  border-top:1px solid var(--md-rule-soft);
}
.article-body h3{
  font-size:1.18rem;
  margin-top:1.4em;
  color:var(--md-accent);
}
.article-body ul, .article-body ol{padding-left:24px}
.article-body ul li, .article-body ol li{margin-bottom:.4em}
.article-source-list li{font-size:.94rem;color:var(--md-ink-soft)}
.article-nav{
  max-width:820px;
  margin:48px auto 0;
  padding-top:28px;
  border-top:1px solid var(--md-rule);
  display:flex;
  justify-content:space-between;
  gap:18px;
}
.article-nav a{
  font-size:.92rem;
  color:var(--md-sumi);
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.article-nav a:hover{color:var(--md-accent);text-decoration:none}
.article-nav .ph{color:var(--md-accent)}

.archive-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:28px;
}

.breadcrumb{
  font-size:.82rem;
  color:var(--md-ink-soft);
  margin-bottom:28px;
  letter-spacing:.06em;
}
.breadcrumb a{color:var(--md-ink-soft)}
.breadcrumb a:hover{color:var(--md-accent)}
.breadcrumb span{margin:0 8px;color:var(--md-rule)}

@media(max-width:960px){
  h1{font-size:1.9rem}
  .hero-title{font-size:2.2rem}
  .hero-grid, .about-grid, .contact-grid, .mission-block{grid-template-columns:1fr;gap:32px}
  .mission-block{padding:32px 26px}
  .advantages-grid{grid-template-columns:repeat(2,1fr)}
  .article-grid{grid-template-columns:1fr 1fr}
  .achievements-grid{grid-template-columns:repeat(2,1fr)}
  .footer-grid{grid-template-columns:1fr;gap:30px}
  .archive-grid{grid-template-columns:1fr}
  .nav{display:none}
  .hero{padding:48px 0 36px}
  .section{padding:54px 0}
  .legal-page article{padding:30px 22px}
  .article-page h1{font-size:1.8rem}
}
@media(max-width:560px){
  .advantages-grid, .article-grid, .achievements-grid{grid-template-columns:1fr}
  .container{padding:0 18px}
  .hero-actions{flex-direction:column;align-items:stretch}
  .hero-actions .btn{justify-content:center}
}
