:root{
 --ink:#313F42; --ink-2:#6C7B7E;
 --lime:#CCFF88; --lime-d:#7FBF3F;
 --pink:#FF99D0; --pink-d:#E0559F;
 --orange:#FFCB7F; --orange-d:#D18C24;
 --paper:#FFFEFB; --soft:#F5F8F0; --line:#E7EBE2;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--paper);color:var(--ink);
 font-family:"Hiragino Maru Gothic ProN","Hiragino Sans","Noto Sans JP","Yu Gothic",Meiryo,system-ui,sans-serif;
 line-height:1.7;-webkit-text-size-adjust:100%}
img{max-width:100%;display:block}
a{color:inherit}
.wrap{max-width:720px;margin:0 auto;padding:0 20px}
@media(min-width:900px){.wrap{max-width:1080px}}

/* ---------- header ---------- */
header.site{position:sticky;top:0;z-index:1000;background:var(--paper);
 border-bottom:1.5px solid var(--line)}
.headwrap{max-width:1080px;margin:0 auto;padding:12px 20px;display:flex;align-items:center;justify-content:space-between}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none;font-weight:800;font-size:16px;color:var(--ink)}
.brand svg{width:30px;height:auto}
.navcheck{display:none}
.navtoggle{cursor:pointer;padding:8px;border-radius:10px;line-height:0;display:flex;align-items:center}
.navtoggle:hover{background:var(--soft)}
.burger,.burger::before,.burger::after{display:block;width:22px;height:2.5px;border-radius:2px;background:var(--ink)}
.burger{position:relative}
.burger::before,.burger::after{content:"";position:absolute;left:0}
.burger::before{top:-7px}
.burger::after{top:7px}
nav.mainnav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--paper);
 border-bottom:1.5px solid var(--line);box-shadow:0 8px 20px rgba(49,63,66,.08)}
.navcheck:checked ~ nav.mainnav{display:block}
nav.mainnav ul{list-style:none;margin:0;padding:10px 20px 16px;display:flex;flex-direction:column;gap:2px}
nav.mainnav a{display:block;padding:11px 4px;font-weight:700;font-size:14.5px;text-decoration:none;
 border-bottom:1px solid var(--line)}
nav.mainnav li:last-child a{border-bottom:none}
@media(min-width:900px){
 .navtoggle{display:none}
 nav.mainnav{display:block;position:static;background:none;border:0;box-shadow:none}
 nav.mainnav ul{flex-direction:row;padding:0;gap:4px;align-items:center}
 nav.mainnav a{border-bottom:none;padding:8px 12px;border-radius:999px}
 nav.mainnav a:hover,nav.mainnav a:focus-visible{background:var(--soft)}
 nav.mainnav a.map{background:var(--lime);font-weight:800}
}
a:focus-visible,button:focus-visible,label:focus-visible{outline:3px solid var(--pink);outline-offset:2px}

/* ---------- photo（差し替え待ちはプレースホルダー、写真ありは.filled） ---------- */
.photo{background:repeating-linear-gradient(135deg,var(--soft),var(--soft) 10px,#fff 10px,#fff 20px);
 border:1.5px dashed var(--line);border-radius:20px;display:flex;align-items:center;justify-content:center;
 color:var(--ink-2);font-size:13px;font-weight:700;text-align:center;padding:16px;
 aspect-ratio:16/10;overflow:hidden;position:relative}
.photo span{background:rgba(255,255,255,.85);padding:6px 12px;border-radius:999px}
.photo.filled{border:none;background:var(--soft);padding:0}
.photo.filled img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* ---------- hero ---------- */
.hero{padding:28px 0 8px}
.hero .photo{margin-bottom:22px}
.voice{font-size:19px;font-weight:800;line-height:1.6;margin:0 0 14px;color:var(--ink)}
.voice + p{font-size:13.5px;color:var(--ink-2);margin:0 0 26px}
.introbox{background:var(--soft);border-radius:20px;padding:20px 22px;margin-bottom:24px}
.introbox .lead{font-weight:800;font-size:16px;margin:0 0 8px}
.introbox p{margin:0;font-size:14px}
.ctas{display:grid;gap:10px;margin-bottom:8px}
@media(min-width:620px){.ctas{grid-template-columns:repeat(3,1fr)}}
.ctabtn{display:block;text-align:center;background:#fff;border:1.5px solid var(--line);border-radius:16px;
 padding:14px 12px;font-weight:800;font-size:13.5px;text-decoration:none;color:var(--ink)}
.ctabtn:hover,.ctabtn:focus-visible{border-color:var(--pink-d)}
.ctabtn.student{background:var(--lime)}
.ctabtn.senior{background:var(--pink);color:#fff}
.ctabtn.org{background:var(--orange)}

/* ---------- section heading ---------- */
h2.area{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:800;margin:0 0 16px}
h2.area::after{content:"";flex:1;height:3px;border-radius:2px;background:var(--lime)}
section.block{padding:34px 0}
section.block + section.block{border-top:1.5px solid var(--line)}

/* ---------- stats ---------- */
.stats{display:grid;grid-template-columns:1fr;gap:12px}
@media(min-width:480px){.stats{grid-template-columns:repeat(3,1fr)}}
.stat{background:#fff;border:1.5px solid var(--line);border-radius:20px;padding:18px 14px;text-align:center}
.stat .num{font-size:24px;font-weight:800;color:var(--pink-d)}
.stat .lbl{font-size:12px;color:var(--ink-2);margin-top:4px;line-height:1.5}

/* ---------- doing cards ---------- */
.doing{display:grid;gap:18px}
@media(min-width:620px){.doing{grid-template-columns:1fr 1fr}}
@media(min-width:900px){.doing{grid-template-columns:1fr 1fr 1fr}}
.card{background:#fff;border:1.5px solid var(--line);border-radius:20px;padding:18px;overflow:hidden}
.card .photo{margin:0 0 14px}
.card h3{margin:0 0 8px;font-size:16.5px;font-weight:800}
.card p{margin:0;font-size:13.5px;color:var(--ink)}

/* ---------- map highlight ---------- */
.mapcard{background:var(--soft);border-radius:20px;padding:22px;display:grid;gap:16px}
@media(min-width:620px){.mapcard{grid-template-columns:1fr 1fr;align-items:center}}
.mapcard h3{margin:0 0 8px;font-size:17px;font-weight:800}
.mapcard p{margin:0 0 14px;font-size:13.5px}
.cta{display:inline-block;background:var(--pink);color:#fff;text-align:center;padding:13px 22px;border-radius:999px;
 font-size:14.5px;font-weight:800;text-decoration:none;box-shadow:0 3px 0 var(--pink-d)}
.cta:hover,.cta:focus-visible{filter:brightness(1.03)}

/* ---------- story ---------- */
.story{background:#fff;border:1.5px solid var(--line);border-radius:20px;padding:20px 22px}
.story blockquote{margin:0 0 10px;font-size:14.5px;line-height:1.8}
.story .src{font-size:12px;color:var(--ink-2);border-top:1px dashed var(--line);padding-top:10px;margin-top:12px}
.story .src a{color:var(--pink-d);font-weight:700;text-decoration:none;border-bottom:2px solid var(--pink)}

/* ---------- reading / press ---------- */
.notebox{background:#fff;border:1.5px solid var(--line);border-radius:20px;padding:18px 20px;display:flex;
 align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.notebox p{margin:0;font-size:13.5px;color:var(--ink-2)}
.lk{display:inline-block;background:var(--soft);border:1.5px solid var(--line);border-radius:999px;padding:9px 18px;
 font-size:13.5px;font-weight:800;color:var(--ink);text-decoration:none}
.lk:hover,.lk:focus-visible{border-color:var(--pink-d)}

.presslist{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:8px}
.presslist li{font-size:13.5px;padding:10px 14px;background:#fff;border:1.5px solid var(--line);border-radius:13px}
.presslist b{font-weight:800}

.partners{font-size:13.5px;color:var(--ink-2);line-height:2}

footer.site{margin-top:10px;border-top:1.5px solid var(--line);padding:26px 0 40px;background:var(--soft)}
footer.site .fwrap{display:grid;gap:16px}
@media(min-width:620px){footer.site .fwrap{grid-template-columns:1fr 1fr}}
footer.site h4{margin:0 0 8px;font-size:13px;color:var(--ink-2)}
footer.site p{margin:0 0 6px;font-size:13.5px}
footer.site .copy{margin-top:18px;font-size:11.5px;color:var(--ink-2)}

/* ================= 下層ページ共通 ================= */
[id]{scroll-margin-top:76px}
nav.mainnav a[aria-current=page]{font-weight:800;color:var(--pink-d)}
@media(min-width:900px){nav.mainnav a[aria-current=page]{background:var(--soft)}}

.pagehead{padding:34px 0 6px}
.pagehead h1{margin:0 0 8px;font-size:26px;font-weight:800;letter-spacing:.02em;line-height:1.4}
.pagehead .lede{margin:0;font-size:14px;color:var(--ink-2)}
@media(min-width:900px){.pagehead h1{font-size:30px}}

.prose p{margin:0 0 14px;font-size:14.5px}
.prose h3{margin:28px 0 10px;font-size:17px;font-weight:800;line-height:1.4}
.prose h3:first-child{margin-top:0}
.prose h4{margin:22px 0 8px;font-size:15px;font-weight:800}
.prose ul{margin:0 0 14px;padding-left:1.3em;font-size:14.5px}
.prose li{margin:0 0 4px}
.prose a{color:var(--pink-d);font-weight:700;text-decoration:none;border-bottom:2px solid var(--pink)}
.small{font-size:12.5px;color:var(--ink-2)}
.strong{font-weight:800}

.tbc{display:inline-block;background:var(--orange);color:#7A4E06;border-radius:999px;padding:1px 10px;
 font-size:12px;font-weight:800;line-height:1.7;vertical-align:baseline}

.photo.tall{aspect-ratio:3/4}
@media(min-width:760px){.split .photo.tall{aspect-ratio:4/5}}
@media(min-width:760px){.pagehead .photo.wide{aspect-ratio:21/9}}
.pagehead .photo.filled img{object-position:50% 25%}
.photo.wide{aspect-ratio:16/9}
.photo.sq{aspect-ratio:4/3}
.figure{margin:0 0 18px}
.figure .cap{margin:6px 4px 0;font-size:12px;color:var(--ink-2)}
.split{display:grid;gap:20px;align-items:start}
@media(min-width:760px){
 .split{grid-template-columns:1fr 1fr;gap:34px}
 .split.right-photo .figure{order:2}
 .split.narrow{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}
}
.photos2{display:grid;gap:14px;grid-template-columns:1fr 1fr;margin:0 0 18px}

.lead-box{background:var(--soft);border-radius:20px;padding:18px 20px;margin:0 0 18px}
.lead-box p{margin:0 0 8px;font-size:14.5px}
.lead-box p:last-child{margin:0}
.ibox{background:var(--lime);border-radius:20px;padding:18px 20px;color:#2E3F27;margin:0 0 18px}
.ibox p{margin:0 0 8px;font-size:14.5px}
.ibox p:last-child{margin:0}
.ibox h3{margin:0 0 8px;font-size:16px;font-weight:800;color:#33472B}
.sign{margin:0 0 16px;font-size:14px;font-weight:800;border-left:4px solid var(--pink);padding-left:12px;line-height:1.7}

.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;scrollbar-width:none;margin-top:18px}
.chips::-webkit-scrollbar{display:none}
.chipl{flex:none;border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:7px 15px;
 font-size:13px;font-weight:700;color:var(--ink);text-decoration:none}
.chipl:hover,.chipl:focus-visible{background:var(--lime);border-color:var(--lime-d)}

.tablewrap{overflow-x:auto;margin:0 0 16px;border:1.5px solid var(--line);border-radius:20px;background:#fff}
table.info{border-collapse:collapse;width:100%;font-size:14px}
table.info th,table.info td{padding:12px 16px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
table.info tr:last-child th,table.info tr:last-child td{border-bottom:none}
table.info th{background:var(--soft);font-weight:800;white-space:nowrap;width:8.5em;font-size:13px;color:var(--ink)}
table.info td b{font-weight:800}

.pins{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:10px}
.pins li{position:relative;padding-left:20px;font-size:14.5px}
.pins li::before{content:"";position:absolute;left:0;top:9px;width:9px;height:9px;border-radius:50% 50% 50% 0;
 transform:rotate(-45deg);background:var(--pink)}

.timeline{list-style:none;margin:0 0 18px;padding:0;border-left:3px solid var(--lime);margin-left:6px}
.timeline li{position:relative;padding:0 0 14px 20px;font-size:14px}
.timeline li::before{content:"";position:absolute;left:-9.5px;top:6px;width:12px;height:12px;border-radius:50%;
 background:#fff;border:3px solid var(--pink)}
.timeline b{display:block;font-size:12.5px;color:var(--pink-d);font-weight:800}

.monthlist{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:8px;grid-template-columns:1fr}
@media(min-width:620px){.monthlist{grid-template-columns:1fr 1fr}}
.monthlist li{display:flex;gap:12px;align-items:baseline;background:#fff;border:1.5px solid var(--line);
 border-radius:13px;padding:9px 14px;font-size:14px}
.monthlist b{flex:none;min-width:3.8em;color:var(--pink-d);font-size:13px;font-weight:800}

.rows{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:10px}
.rows li{background:#fff;border:1.5px solid var(--line);border-radius:16px;padding:12px 16px;font-size:14px}
.rows .d{display:block;font-size:12px;font-weight:800;color:var(--pink-d);margin-bottom:2px}
.rows .t{font-weight:800}
.rows .m{display:block;font-size:12.5px;color:var(--ink-2);margin-top:2px}

.voices{display:grid;gap:12px;margin:0 0 18px}
@media(min-width:760px){.voices{grid-template-columns:1fr 1fr}}
.voice-card{margin:0;background:#fff;border:1.5px solid var(--line);border-radius:20px;padding:16px 18px;font-size:14px}
.voice-card p{margin:0 0 8px}
.voice-card cite{display:block;font-style:normal;font-size:12px;color:var(--ink-2)}

.steps{list-style:none;counter-reset:s;margin:0 0 16px;padding:0;display:grid;gap:10px}
@media(min-width:760px){.steps{grid-template-columns:repeat(3,1fr)}}
.steps li{counter-increment:s;background:var(--soft);border-radius:16px;padding:14px 16px 14px 52px;position:relative;font-size:14px;font-weight:700;line-height:1.7}
table.info td a{color:var(--pink-d);font-weight:700;text-decoration:none;border-bottom:2px solid var(--pink)}
.steps li::before{content:counter(s);position:absolute;left:14px;top:12px;width:26px;height:26px;border-radius:50%;
 background:var(--pink);color:#fff;font-weight:800;text-align:center;line-height:26px;font-size:13px}

.callout{background:#fff;border:1.5px solid var(--orange);border-radius:20px;padding:16px 18px;margin:0 0 16px}
.callout p{margin:0 0 8px;font-size:14px}
.callout p:last-child{margin:0}
.callout h4{margin:0 0 6px;font-size:14.5px;font-weight:800}

.ctarow{display:flex;gap:12px;flex-wrap:wrap;margin:16px 0 0}
.cta.alt{background:#fff;color:var(--ink);box-shadow:0 3px 0 var(--line);border:1.5px solid var(--line)}

.contactcards{display:grid;gap:12px;margin:0 0 20px}
@media(min-width:620px){.contactcards{grid-template-columns:1fr 1fr}}
.ccard{display:block;background:#fff;border:1.5px solid var(--line);border-radius:20px;padding:16px 18px;
 text-decoration:none;color:var(--ink)}
a.ccard:hover,a.ccard:focus-visible{border-color:var(--pink-d)}
.ccard .k{display:block;font-size:12px;color:var(--ink-2);font-weight:700;margin-bottom:2px}
.ccard .v{display:block;font-size:16px;font-weight:800;word-break:break-all}
.ccard .n{display:block;font-size:12.5px;color:var(--ink-2);margin-top:4px}

.qagroup{margin:0 0 26px}
.qagroup > h3{margin:0 0 12px;font-size:16px;font-weight:800}
details.qa{background:#fff;border:1.5px solid var(--line);border-radius:16px;margin:0 0 10px}
details.qa summary{cursor:pointer;padding:13px 16px;font-size:14.5px;font-weight:800;list-style:none;line-height:1.55}
details.qa summary::-webkit-details-marker{display:none}
details.qa summary::before{content:"＋ ";color:var(--pink-d);font-weight:800}
details.qa[open] summary::before{content:"− "}
details.qa summary:focus-visible{outline:3px solid var(--pink);outline-offset:2px;border-radius:16px}
details.qa[open]{border-color:var(--lime-d)}
.qa .ans{padding:0 16px 14px;font-size:14px}
.qa .ans p{margin:0 0 8px}
.qa .ans p:last-child{margin:0}

/* ---------- 画像スライダー（ライブラリなし・自動再生なし） ---------- */
.slider{position:relative;margin:0 0 22px}
.slider:not(:has(.slide)){display:none}
.slides{display:flex;width:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;
 border-radius:20px;aspect-ratio:16/9;max-height:560px;background:var(--soft);cursor:grab;
 -webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.slides::-webkit-scrollbar{display:none}
.slides.dragging{cursor:grabbing;scroll-snap-type:none;scroll-behavior:auto;user-select:none}
.slides:focus-visible{outline:3px solid var(--pink);outline-offset:3px}
@media(prefers-reduced-motion:no-preference){.slides{scroll-behavior:smooth}}
.slide{flex:0 0 100%;scroll-snap-align:center;margin:0;height:100%}
.slide img{width:100%;height:100%;object-fit:cover;display:block;-webkit-user-drag:none;user-select:none}
.snav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:0;
 background:rgba(255,255,255,.92);color:var(--ink);font-size:26px;line-height:1;cursor:pointer;
 box-shadow:0 2px 8px rgba(49,63,66,.22);display:none}
.snav.prev{left:12px}.snav.next{right:12px}
.snav:focus-visible{outline:3px solid var(--pink);outline-offset:2px}
.snav[disabled]{opacity:.35;cursor:default}
@media(hover:hover) and (pointer:fine){.slider.multi .snav{display:block}}
.dots{display:flex;justify-content:center;gap:4px;margin-top:6px}
.dots button{width:28px;height:28px;border:0;background:none;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center}
.dots button::before{content:"";width:10px;height:10px;border-radius:50%;background:var(--line);transition:background .2s}
.dots button[aria-current=true]::before{background:var(--pink-d)}
.dots button:focus-visible{outline:3px solid var(--pink);outline-offset:0;border-radius:50%}
.slider:not(.multi) .dots{display:none}

/* ---------- いちばん目立たせたいブロック ---------- */
.keybox{background:var(--lime);border:3px solid var(--lime-d);border-radius:20px;padding:22px 22px 18px;margin:0 0 26px;color:#2E3F27}
.keybox h3{margin:0 0 10px;font-size:20px;font-weight:800;line-height:1.5;color:#2A3B22}
@media(min-width:760px){.keybox h3{font-size:22px}}
.keybox p{margin:0 0 10px;font-size:14.5px}
.keybox ul{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:8px}
.keybox li{position:relative;padding-left:20px;font-size:14.5px;font-weight:700}
.keybox li::before{content:"";position:absolute;left:0;top:8px;width:9px;height:9px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--pink-d)}
.keybox p:last-child{margin-bottom:0}

/* ---------- 総額の表（料金表の直後） ---------- */
.tablewrap + .subtable-label{margin-top:-4px}
.subtable-label{margin:0 0 8px;font-size:15px;font-weight:800}
.tablewrap.tight{margin-bottom:12px}
table.info td.num{font-weight:800;white-space:nowrap;text-align:right;color:var(--pink-d)}
table.info.totals th{width:auto;white-space:normal}

/* ---------- 団体リスト ---------- */
.orgs{display:grid;gap:10px;margin:0 0 14px}
.orgs div{background:#fff;border:1.5px solid var(--line);border-radius:16px;padding:12px 16px;font-size:14px}
.orgs b{display:block;font-size:14.5px;font-weight:800}

/* ---------- お問い合わせ：電話ブロック ---------- */
.phonebox{background:#fff;border:2px solid var(--pink);border-radius:20px;padding:18px 20px;margin:0 0 14px}
.phonebox .k{display:block;font-size:12px;color:var(--ink-2);font-weight:700;margin-bottom:2px}
.phonebox .v{display:block;font-size:22px;font-weight:800;color:var(--pink-d);text-decoration:none}
.phonebox p{margin:10px 0 0;font-size:16px;line-height:1.75}
.phonebox p b{font-weight:800}
.hurry{margin:0 0 18px;font-size:14.5px;font-weight:700}
@media(min-width:760px){.contactcards.three{grid-template-columns:repeat(3,1fr)}}
.qa .ans a{color:var(--pink-d);font-weight:700;text-decoration:none;border-bottom:2px solid var(--pink)}

/* 本文リンク用スタイル(.prose a)がボタン・カードに効かないようにする */
.prose a.cta{color:#fff;border-bottom:0;font-weight:800}
.prose a.cta.alt{color:var(--ink);border:1.5px solid var(--line)}
.prose a.lk{color:var(--ink);border-bottom:1.5px solid var(--line)}
.prose a.lk:hover,.prose a.lk:focus-visible{border-color:var(--pink-d)}
.prose a.ccard{border-bottom:1.5px solid var(--line);font-weight:inherit}
.prose a.ccard:hover,.prose a.ccard:focus-visible{border-color:var(--pink-d)}
.phonebox a.v{display:inline-block;border-bottom:0}

@media(prefers-reduced-motion:reduce){*{transition:none!important}}
