:root { --ink:#2b241c; --muted:#5d5246; --line:#e2d7c6; --cream:#fbf8f3; --gold:#a9803f; }
html { scroll-behavior:smooth; scroll-padding-top:90px; }
body { margin:0; width:100%; color:var(--ink); font-family:"Noto Sans JP",sans-serif; line-height:1.9; }
h1,h2,h3,.serif { font-family:"Noto Serif JP",serif; }
section[id] { scroll-margin-top:90px; }
a,button { -webkit-tap-highlight-color:transparent; }
a:focus-visible,button:focus-visible { outline:3px solid var(--gold); outline-offset:4px; }
.site-nav a { white-space:nowrap; transition:color .2s; }
.site-nav a:hover,.text-link:hover { color:var(--gold); }
.section-kicker { color:var(--gold); font-size:.72rem; font-weight:700; letter-spacing:.25em; text-transform:uppercase; }
.section-title { font-size:clamp(1.7rem,3vw,2.65rem); line-height:1.5; letter-spacing:.08em; }
.rule { width:36px; height:1px; background:var(--gold); }
.image-slot { display:flex; flex-direction:column; justify-content:center; align-items:center; gap:.65rem; aspect-ratio:4/3; border:1px solid var(--line); background:#f4f1ea; color:#9a9387; border-radius:2px; }
.image-slot svg { width:24px; height:24px; stroke-width:1.2; }
.image-slot span { font-size:.76rem; letter-spacing:.1em; }
.service-card { border:1px solid var(--line); background:white; transition:transform .25s,border-color .25s,box-shadow .25s; }
.service-card:hover { transform:translateY(-4px); border-color:var(--gold); box-shadow:0 12px 30px #2828220d; }
.school-card { display:flex; flex-direction:column; height:100%; }
.school-card .image-slot { flex:none; }
@media(max-width:767px) { .school-card { width:min(100%, 360px); margin-inline:auto; } }
.cta-dark { background:var(--ink); color:white; transition:background .2s; }
.cta-dark:hover { background:#66583d; }
.cta-outline { border:1px solid var(--ink); color:var(--ink); transition:background .2s,color .2s; }
.cta-outline:hover { background:var(--ink); color:white; }
.timeline-item { position:relative; padding-left:2rem; border-left:1px solid var(--line); padding-bottom:1.65rem; }
.timeline-item:last-child { padding-bottom:0; }
.timeline-item::before { content:""; position:absolute; top:.4rem; left:-5px; width:9px; height:9px; background:var(--gold); border-radius:50%; }
.hero-image { width:100%; height:100%; object-fit:cover; object-position:center; }
.mobile-menu[hidden] { display:none; }
@media(max-width:767px) { .hero-image { min-height:223px; } }
@media(min-width:1280px) { .mobile-menu { display:none!important; } }
.is-disabled { cursor:default; }
/* 日本語を文節の途中で改行しない（<wbr> の位置でのみ改行） */
.nowrap { white-space:nowrap; }
.bx { word-break:normal; overflow-wrap:anywhere; }
.intro-text { font-size:16px; letter-spacing:.06em; }
.media-item { font-size:16px; }
@media(min-width:768px) { .intro-text { font-size:19px; letter-spacing:.138rem; } .media-item { font-size:19px; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition-duration:.01ms!important; animation-duration:.01ms!important; } }

/* ---- 日本語の改行：見やすさ優先で通常の改行（単語の途中でも改行可、禁則処理は有効） ---- */
body { word-break:normal; overflow-wrap:anywhere; line-break:strict; }

/* ---- 定義文（ファーストビュー直下の要約：AI検索・検索エンジン向け） ---- */
.definition { max-width:46rem; margin:0 auto; background:#fff; border:1px solid var(--line); border-left:4px solid var(--gold); padding:1.25rem 1.25rem 1.3rem; }
.definition-title { font-size:19px; letter-spacing:.08em; line-height:1.5; margin-bottom:.6rem; }
.definition p { font-size:15px; line-height:1.95; }
.definition p + p { margin-top:.35rem; }
.definition dfn { font-style:normal; font-weight:700; }
@media(min-width:768px) { .definition { padding:1.75rem 2rem; } .definition-title { font-size:22px; } .definition p { font-size:16px; } }

/* ---- 図・写真の要約文 ---- */
.fig-cap { margin-top:.75rem; font-size:13px; line-height:1.8; color:var(--muted); }

/* ---- よくある質問 ---- */
.faq-list { border-top:1px solid var(--line); }
.faq-item { border-bottom:1px solid var(--line); }
.faq-item summary { list-style:none; cursor:pointer; display:flex; gap:.75rem; align-items:flex-start; padding:1.1rem 0; }
.faq-item summary::-webkit-details-marker { display:none; }
.faq-item summary::before { content:"Q"; flex:none; font-family:"Noto Serif JP",serif; color:var(--gold); font-size:18px; line-height:1.6; }
.faq-item summary::after { content:"+"; flex:none; margin-left:auto; color:var(--gold); font-size:20px; line-height:1.4; }
.faq-item[open] summary::after { content:"−"; }
.faq-q { font-size:16px; font-weight:500; line-height:1.7; }
.faq-a { position:relative; padding:0 0 1.25rem 1.85rem; font-size:15px; line-height:1.95; color:#3d3b34; }
.faq-a::before { content:"A"; position:absolute; left:0; top:0; font-family:"Noto Serif JP",serif; color:var(--muted); font-size:18px; line-height:1.6; }
.text-link { color:var(--gold); text-decoration:underline; text-underline-offset:3px; }
@media(min-width:768px) { .faq-q { font-size:18px; } .faq-a { font-size:16px; } }
