:root {
    color-scheme: light;
    --ink: #142e34;
    --muted: #53666c;
    --line: #dce7e6;
    --paper: #f6faf9;
    --accent: #09685f;
    font-family: "Yu Gothic", "Meiryo", system-ui, sans-serif;
    line-height: 1.7;
    color: var(--ink);
    background: var(--paper);
}
* { box-sizing: border-box; }
body { margin: 0; }
a { color: var(--accent); text-underline-offset: .2em; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
    outline: 3px solid #a14d08;
    outline-offset: 3px;
}
img { max-width: 100%; display: block; }
.wrap { width: min(1120px, calc(100% - 40px)); margin: auto; }
.site-header { background: white; border-bottom: 1px solid var(--line); }
.bar { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; padding-block: 15px; }
.brand { font-weight: 850; font-size: 22px; text-decoration: none; color: var(--ink); }
.mark { color: var(--accent); }
nav { display: flex; gap: 16px; flex-wrap: wrap; align-items: center; }
.site-header nav a { font-size: 14px; font-weight: 650; }
.skip { position: absolute; left: 16px; top: -100px; background: white; padding: 10px; }
.skip:focus { top: 8px; }
main { min-height: 60vh; padding-block: 32px 64px; }
h1,h2,h3 { line-height: 1.35; overflow-wrap: anywhere; }
h1 { font-size: clamp(28px, 5vw, 46px); margin: 18px 0; }
h2 { font-size: 22px; }
h3 { font-size: 16px; }
p { overflow-wrap: anywhere; }
section { margin-block: 26px; }
.hero {
    color: white; padding: clamp(24px, 6vw, 70px); border-radius: 26px; margin-top: 0;
    background: radial-gradient(ellipse at 85% 15%, #1d877d, transparent 55%), #123e42;
}
.hero h1 { font-size: clamp(35px, 6.2vw, 72px); letter-spacing: -.06em; }
.hero p { max-width: 38em; color: #e1f3ee; }
.eyebrow { letter-spacing: .16em; font-size: 12px; font-weight: 750; }
.search,.card,.review,.detail-head,.info,.ad {
    padding: 20px; border: 1px solid var(--line); background: white; border-radius: 15px;
}
.search { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,150px),1fr)); gap: 12px; align-items: end; }
.search label { margin: 0; }
.grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,260px),1fr)); gap: 16px; }
.card { padding: 0; overflow: hidden; }
.card-body { padding: 18px; }
.card h2 { font-size: 19px; margin: 8px 0; }
.card p { margin: 8px 0; }
.cover { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.school-hero {
    display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 24px;
    padding: clamp(18px, 4vw, 36px); align-items: center;
    background: linear-gradient(145deg, #fff 35%, #e5f2ee);
}
.school-hero h1 { margin: 10px 0; }
.school-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.school-cover { margin: 0; }
.school-cover img,.school-gallery img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 10px; }
.school-cover figcaption,.school-gallery figcaption { font-size: 13px; margin-top: 6px; }
.school-photo-status {
    display: grid; place-content: center; gap: 4px; min-height: 130px; text-align: center;
    border: 1px dashed #a7c8c0; border-radius: 10px; background: #edf6f3; color: #315a56;
}
.school-photo-status span { color: var(--accent); font-size: 23px; }
.school-sections {
    position: sticky; top: 0; z-index: 2; display: flex; flex-wrap: nowrap; gap: 6px;
    overflow-x: auto; padding: 8px; border: 1px solid var(--line); border-radius: 10px; background: #fff;
}
.school-sections a { flex: none; padding: 7px 9px; font-size: 14px; font-weight: 650; white-space: nowrap; text-decoration: none; }
.school-sections a:hover,.school-sections a:focus-visible { background: #e5f2ee; }
.school-detail-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 285px); gap: 22px; align-items: start; }
.school-detail-content > section[id] { scroll-margin-top: 74px; }
.school-detail-content > section h2 { margin-top: 0; }
.school-detail-content > section p:last-child { margin-bottom: 0; }
.school-facts { margin-top: 26px; }
.school-facts h2 { margin-top: 0; }
.school-facts dl > div { padding: 9px 0; border-bottom: 1px solid var(--line); }
.school-facts dt { font-size: 13px; color: var(--muted); }
.school-facts dd { margin: 0; overflow-wrap: anywhere; }
.school-facts > a { display: inline-block; margin: 3px 12px 3px 0; }
.school-gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px),1fr)); gap: 12px; }
.school-gallery figure { margin: 0; }
@media (max-width: 720px) {
    .school-hero,.school-detail-layout { grid-template-columns: minmax(0, 1fr); }
    .school-facts { display: none; }
    .school-photo-status { min-height: 76px; }
}
.school-map { display: block; width: 100%; height: clamp(280px, 50vw, 420px); border: 0; border-radius: 8px; background: #e8f2ef; }
.fee-table { width: 100%; border-collapse: collapse; }
.fee-table caption { text-align: left; font-weight: 650; margin-bottom: 8px; }
.fee-table th,.fee-table td { padding: 10px 8px; text-align: left; border-bottom: 1px solid var(--line); }
.fee-table thead { background: #e5f2ee; }
.fee-table .table-number { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.student-mix-table { max-width: 34rem; margin-block: 16px; }
.student-mix-table tbody th,.school-cost-table tbody th { font-weight: 500; }
.school-cost-table { margin-block: 16px; }
.school-cost-mobile-conditions { display: none; }
@media (max-width: 520px) {
  .school-cost-table { table-layout: fixed; overflow-wrap: anywhere; }
  .school-cost-table th,.school-cost-table td { padding-inline: 4px; font-size: .82rem; }
  .school-cost-table thead .table-number { white-space: normal; }
  .school-cost-table tr > :nth-child(n+3) { display: none; }
  .school-cost-mobile-conditions { display: block; color: var(--muted); margin-top: 4px; }
}
.comparison-list { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,230px),1fr)); gap: 12px; margin: 14px 0; }
.comparison-item { min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: #f5faf8; }
.comparison-item h3 { margin: 8px 0; }
.comparison-facts { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,150px),1fr)); gap: 8px; margin: 10px 0; }
.comparison-facts > div { padding: 6px 8px; border-bottom: 1px solid var(--line); }
.comparison-facts dt { font-size: 12px; color: var(--muted); }
.comparison-facts dd { margin: 0; overflow-wrap: anywhere; font-weight: 600; }
.source-note { font-size: 12px; white-space: nowrap; }
.source-note[data-editorial-source] { white-space: normal; }
.comparison-amount { margin: 5px 0; font-size: 20px; font-weight: 750; }
figure { margin: 18px 0; }
figcaption,.muted,small { color: var(--muted); }
.placeholder,.notice,.error { padding: 16px; background: #e5f2ee; border-radius: 10px; }
.error { background: #fceae6; color: #861f12; }
.prose { white-space: pre-wrap; }
.review { margin: 14px 0; }
.count { display: block; font-size: 32px; }
.crumb,.pagination,.admin-nav { margin-block: 16px; }
.chips { display: flex; flex-wrap: wrap; gap: 10px; }
.chip { display: inline-block; padding: 5px 12px; border: 1px solid var(--line); border-radius: 30px; background: white; }
[aria-current="page"] { font-weight: 800; border-color: var(--accent); }
form { max-width: 760px; }
form.search { max-width: none; }
label { display: block; font-weight: 650; margin-block: 12px; }
input:not([type=checkbox]), select, textarea {
    display: block; width: 100%; min-height: 44px; padding: 8px 10px; margin-top: 4px;
    border: 1px solid #82999b; border-radius: 7px; color: var(--ink); background: white; font: inherit;
}
textarea { min-height: 112px; resize: vertical; }
fieldset { border: 1px solid var(--line); margin: 12px 0; }
.check { font-weight: 450; }
.star-field { min-inline-size: 0; padding: 4px 10px 10px; }
.star-field legend { font-weight: 650; }
.star-options { display: flex; align-items: center; flex-wrap: wrap; }
.star-option { position: relative; margin: 0; cursor: pointer; }
.star-option .star-input, .star-clear input {
    position: absolute; width: 1px; height: 1px; min-height: 0; margin: 0;
    padding: 0; clip-path: inset(50%); overflow: hidden;
}
.star-option span {
    display: grid; place-items: center; width: 44px; height: 44px;
    border-radius: 6px; color: #687c80; font-size: 28px;
}
.star-option span::before { content: "☆"; }
.star-option:has(input:checked) span::before,
.star-option:has(~ .star-option input:checked) span::before { content: "★"; color: #9b5207; }
.star-option:has(input:focus-visible) span,
.star-clear:has(input:focus-visible) { outline: 3px solid #a14d08; outline-offset: 2px; }
.star-clear { cursor: pointer; margin: 4px; padding: 4px 8px; border-radius: 6px; font-size: 14px; }
.star-clear:has(input:checked) { background: #e5f2ee; }
button,.button {
    display: inline-block; border: 0; border-radius: 8px; padding: 11px 16px; background: var(--accent);
    color: white; font: inherit; font-weight: 700; text-decoration: none; cursor: pointer;
}
button:hover,.button:hover { background: #084b46; }
.ad img { width: auto; max-height: 180px; margin: auto; }
.site-footer { padding-block: 30px; background: #e8f2ef; border-top: 1px solid var(--line); }
.site-footer nav { font-size: 13px; }
@media (max-width: 520px) {
    .wrap { width: calc(100% - 28px); }
    main { padding-block: 18px 38px; }
    .hero { border-radius: 16px; }
    .search { grid-template-columns: minmax(0,1fr); }
}

.english-table-scroll { width: 100%; min-width: 0; max-width: 100%; overflow-x: auto; }
.english-table-scroll .fee-table { min-width: 26rem; }
.english-table-scroll:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.directory-filter-toggle { display: none; }
.directory-result-count { font-weight: 650; }
@media (max-width: 720px) {
    .directory-filter-toggle:not([hidden]) { display: inline-block; }
    .directory-filter-toggle[aria-expanded="false"]:not([hidden]) + .search { display: none; }
    .directory-filter-toggle + .search { margin-top: 12px; }
}

.school-reading {
    --ink: #203b32; --line: #aeb6a6; --accent: #245447;
    background: #f5f2e8; color: var(--ink); padding: clamp(14px, 3vw, 36px);
}
.school-reading .school-hero { background: none; border: 0; border-bottom: 1px solid var(--ink); border-radius: 0; padding-inline: 0; }
.school-reading .school-hero:not(:has(.school-cover,.reading-fee-card)) { grid-template-columns: minmax(0, 1fr); }
.school-reading h1,.school-reading h2,.school-reading h3 { font-family: Georgia,"Yu Mincho","Hiragino Mincho ProN",serif; }
.school-reading .school-detail-content > .info { padding: 20px 0; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: none; }
.school-reading .school-detail-content .prose { max-inline-size: 63ch; }
html[lang="ja"] .school-reading .school-detail-content .prose { max-inline-size: 38ic; }
.school-reading .school-sections { top: 0; border-radius: 0; border-inline: 0; background: #f5f2e8; }
.school-reading .school-sections span { color: #983e28; font: 11px monospace; }
.school-reading .school-facts { position: sticky; top: 62px; max-height: calc(100vh - 76px); overflow-y: auto; background: #faf8f0; border-radius: 0; }
.reading-sources li { border-bottom: 1px solid var(--line); padding-block: 5px; overflow-wrap: anywhere; }
.reading-sources small { display: block; }
.school-reading .reading-fee-note,.school-reading .reading-fee-card { border: 1px solid var(--line); background: #e8ecde; padding: 12px 16px; }
.school-reading .reading-fee-note { border-inline-start: 4px solid #983e28; background: #eee6d8; }
.school-reading .reading-fee-card strong { display: block; font: 650 clamp(30px,4vw,48px)/1.2 Georgia,serif; }

.atlas-public { --ink:#203b32; --line:#aeb6a6; --paper:#f5f2e8; --accent:#245447; background:var(--paper); color:var(--ink); }
.atlas-public .site-header { background:var(--paper); border:0; }
.atlas-public .bar { border-bottom:1px solid var(--ink); min-height:72px; }
.atlas-public .brand { font:700 clamp(25px,3vw,32px) Georgia,serif; letter-spacing:-.045em; }
.atlas-public .mark { color:#983e28; }
.atlas-landing .site-header .chip { background:none; border:0; padding:3px 5px; }
.atlas-landing .site-header .chip[aria-current] { display:none; }
.atlas-public .site-footer { background:#203b32; color:#f5f2e8; }
.atlas-public .site-footer a { color:inherit; }
.atlas-landing main { padding-block:24px 30px; }
.atlas-home h1,.atlas-home h2 { font-family:Georgia,"Yu Mincho","Hiragino Mincho ProN",serif; font-weight:650; letter-spacing:-.04em; }
.atlas-home h1 { margin:0; font-size:clamp(35px,5.5vw,68px); line-height:1.16; }
.atlas-home h2 { font-size:clamp(25px,3.3vw,40px); line-height:1.2; margin:0 0 13px; }
.atlas-label { font:650 11px/1.5 ui-monospace,monospace; letter-spacing:.13em; color:#526651; }
.atlas-hero { display:grid; grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr); align-items:center; gap:clamp(20px,4vw,50px); margin:0; padding:16px 0 24px; border-bottom:1px solid var(--ink); }
.atlas-lead { max-width:37em; }
.atlas-search { display:grid; grid-template-columns:1fr 1fr auto; align-items:stretch; gap:0; max-width:none; border-block:1px solid var(--line); }
.atlas-search label { min-width:0; margin:0; padding:8px; font-size:13px; }
.atlas-search label+label { border-left:1px solid var(--line); }
.atlas-search select { display:block; width:100%; min-width:0; margin:0; padding:3px 0; border:0; background:transparent; }
.atlas-home .button,.atlas-home button { border-radius:0; }
.atlas-plate { position:relative; margin:0; border:1px solid var(--line); background:#e8ecde; }
.atlas-globe { display:block; width:100%; height:auto; }
.atlas-plate figcaption { display:flex; justify-content:space-between; gap:8px; padding:8px 12px; border-top:1px solid var(--line); font:11px/1.5 monospace; }
.atlas-map-note { position:absolute; right:12px; bottom:39px; display:grid; max-width:calc(100% - 24px); padding:8px 12px; border:1px solid var(--line); background:var(--paper); text-decoration:none; font-size:13px; }
.atlas-map-note small,.atlas-index i { color:#983e28; }
.atlas-stats { margin:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-bottom:1px solid var(--line); }
.atlas-stats div { display:flex; flex-direction:row-reverse; justify-content:flex-end; align-items:baseline; gap:10px; padding:10px 12px; }
.atlas-stats div+div { border-left:1px solid var(--line); }
.atlas-stats dt { font-size:12px; }
.atlas-stats dd { margin:0; font:28px Georgia,serif; }
.atlas-section { margin:24px 0; padding-top:18px; border-top:1px solid var(--line); }
.atlas-index,.atlas-cards { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }
.atlas-index { border-top:1px solid var(--line); }
.atlas-index a { display:flex; align-items:baseline; gap:8px; padding:9px 11px; border-bottom:1px solid var(--line); text-decoration:none; font-weight:650; }
.atlas-index a:hover,.atlas-cards a:hover { background:#e8ecde; }
.atlas-index a span { margin-left:auto; }
.atlas-cities { margin-top:10px; }
.atlas-cards { gap:12px; }
.atlas-cards a { display:flex; flex-direction:column; gap:6px; padding:13px; border:1px solid var(--line); text-decoration:none; }
.atlas-cards strong { font:650 21px/1.25 Georgia,"Yu Mincho",serif; overflow-wrap:anywhere; }
.atlas-cards small,.atlas-card-date { font-size:12px; }
.atlas-card-date { margin-top:auto; padding-top:6px; border-top:1px solid var(--line); }
.atlas-split { display:grid; grid-template-columns:1fr 1.05fr; align-items:center; gap:18px; }
.atlas-cost { background:#e8ecde; padding:9px 14px; }
.atlas-cost dl div { display:flex; justify-content:space-between; gap:8px; padding:6px 0; border-top:1px solid var(--line); }
.atlas-cost dd { margin:0; white-space:nowrap; font-weight:750; }
.atlas-review { display:flex; justify-content:space-between; align-items:center; gap:15px; }
@media (max-width:720px) {
    .atlas-public .wrap { width:calc(100% - 32px); }
    .atlas-landing .site-header nav[aria-label="Main"],.atlas-landing .site-header nav[aria-label="メイン"] { display:none; }
    .atlas-public .bar { min-height:60px; }
    .atlas-landing main { padding-top:10px; }
    .atlas-hero,.atlas-split { grid-template-columns:minmax(0,1fr); }
    .atlas-search { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .atlas-search button { grid-column:1/-1; }
    .atlas-stats div { display:flex; flex-direction:column-reverse; gap:2px; align-items:flex-start; }
    .atlas-index,.atlas-cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .atlas-review { flex-direction:column; align-items:flex-start; }
}
@media (max-width:420px) { .atlas-cards { grid-template-columns:1fr; } }

.atlas-inner { --muted:#465b4f; }
.atlas-inner main { padding-block:clamp(20px,4vw,42px) 48px; }
.atlas-inner h1,.atlas-inner h2,.atlas-inner h3 {
    font-family:Georgia,"Yu Mincho","Hiragino Mincho ProN",serif;
    letter-spacing:-.025em;
}
.atlas-inner main > h1 {
    margin:0 0 18px;
    padding-bottom:12px;
    border-bottom:1px solid var(--ink);
}
.atlas-inner main > .crumb + h1 { margin-top:12px; }
.atlas-inner .search,.atlas-inner .card,.atlas-inner .review,.atlas-inner .info,.atlas-inner .comparison-item {
    border-radius:0;
    background:#faf8f0;
}
.atlas-inner .search,.atlas-inner .comparison-item { border-top-color:var(--ink); }
.atlas-inner .card { border-top:2px solid var(--accent); }
.atlas-inner .card .card-body > small { color:#73402d; }
.atlas-inner .comparison-amount { font-family:Georgia,serif; }
.atlas-inner .fee-table thead { background:#e8ecde; }
.atlas-inner .button,.atlas-inner button[type="submit"],.atlas-inner form button:not([type]),.atlas-inner .directory-filter-toggle { border-radius:0; }
.atlas-inner .school-reading { padding-inline:0; background:transparent; }
.atlas-inner .school-reading .school-detail-content > .info { background:transparent; }
.atlas-inner .school-reading .school-sections { background:var(--paper); }
.atlas-inner .pagination { border-top:1px solid var(--line); padding-top:12px; }
@media (max-width:720px) {
    .atlas-inner .bar { min-height:60px; }
    .atlas-inner .site-header nav { gap:8px 13px; }
    .atlas-inner .site-header nav a { font-size:13px; }
    .atlas-inner .site-header nav[aria-label="Main"],.atlas-inner .site-header nav[aria-label="メイン"] { order:3; width:100%; }
}

.atlas-promises { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:15px; }
.atlas-promises div { border-left:1px solid var(--line); padding-left:12px; }
.atlas-promises h2 { font-size:clamp(20px,2.5vw,27px); }
.atlas-promises p { margin:0; }
@media (max-width:720px) { .atlas-promises { grid-template-columns:1fr; } }
