/* ===== 下層ページ共通 ===== */
.sec--navy{background:var(--navy);color:#fff}
.sec--navy .sec-ttl{color:#fff}.sec--navy .sec-en{color:#FFB766}.sec--navy .sec-lead{color:#C9D2E6}
.sec-sub{display:block;font-family:var(--ff-body);font-weight:700;font-size:14px;color:var(--or);margin-top:8px;letter-spacing:0}
.check-list{display:flex;flex-direction:column;gap:10px;margin:24px 0}
.check-list li{position:relative;padding-left:30px;font-size:15px;line-height:1.7;color:var(--ink-2)}
.check-list li::before{content:"";position:absolute;left:0;top:3px;width:20px;height:20px;border-radius:50%;background:var(--or)}
.check-list li::after{content:"";position:absolute;left:7px;top:7px;width:5px;height:9px;border-right:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(45deg)}
.price__note{font-size:13px;color:var(--mute);line-height:1.8;margin-top:16px}
.price__note.is-center{text-align:center}
.sec-head .sec-ttl{line-height:1.45}

/* 個別授業とは：比較 */
.compare__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;align-items:stretch}
.compare__col{position:relative;background:#fff;border:1px solid var(--line);border-radius:24px;padding:36px 32px}
.compare__col.is-hot{border:2px solid var(--or);background:var(--or-soft);box-shadow:0 16px 40px rgba(235,122,0,.15);transform:translateY(-12px)}
.compare__ribbon{position:absolute;left:50%;top:-16px;transform:translateX(-50%);background:var(--or);color:#fff;font-weight:700;font-size:13px;padding:6px 20px;border-radius:999px}
.compare__lbl{font-size:13px;font-weight:700;color:var(--mute)}
.compare__col h3{font-family:var(--ff-head);font-weight:700;font-size:22px;color:var(--navy);margin:8px 0 20px}
.compare__col li{position:relative;padding-left:28px;font-size:14px;line-height:1.7;margin-bottom:10px;color:var(--ink-2)}
.compare__col li::before{position:absolute;left:0;top:0;font-weight:800;font-family:var(--ff-num)}
.compare__col li.is-ok::before{content:"○";color:var(--or)}
.compare__col li.is-ng::before{content:"×";color:#9AA3B5}

/* 80分の流れ */
.lesson__row{display:flex;gap:64px;align-items:flex-start}
.lesson__txt{flex:1}
.lesson__visual{width:440px;flex:none;position:relative;padding-bottom:120px}
.lesson__img{border-radius:24px;overflow:hidden;box-shadow:var(--shadow);aspect-ratio:4/3}
.lesson__img img{width:100%;height:100%;object-fit:cover}
.lesson__img.is-sub{position:absolute;right:-24px;bottom:0;width:60%;aspect-ratio:1;border:6px solid #fff}
.timeline{position:relative;padding-left:110px;display:flex;flex-direction:column;gap:28px}
.timeline::before{content:"";position:absolute;left:84px;top:8px;bottom:8px;width:2px;background:var(--line)}
.timeline li{position:relative}
.timeline li::before{content:"";position:absolute;left:-32px;top:6px;width:14px;height:14px;border-radius:50%;background:var(--or);border:3px solid #fff;box-shadow:0 0 0 2px var(--or)}
.timeline__t{position:absolute;left:-110px;top:0;width:64px;font-family:var(--ff-num);font-weight:800;font-size:16px;color:var(--navy)}
.timeline h3{font-family:var(--ff-head);font-weight:700;font-size:19px;color:var(--navy);margin-bottom:6px}
.timeline p{font-size:14px;color:var(--ink-2);line-height:1.85}

/* 計画書 */
.plan__row{display:flex;gap:64px;align-items:center}
.plan__img{width:520px;flex:none;border-radius:28px;overflow:hidden;box-shadow:var(--shadow);aspect-ratio:4/5}
.plan__img img{width:100%;height:100%;object-fit:cover}
.plan__txt{flex:1}
.plan__list{display:grid;grid-template-columns:1fr 1fr;gap:14px;counter-reset:p}
.plan__list li{counter-increment:p;background:var(--sky);border-radius:14px;padding:16px 18px 16px 52px;position:relative;display:flex;flex-direction:column;gap:4px}
.plan__list li::before{content:counter(p,decimal-leading-zero);position:absolute;left:16px;top:16px;font-family:var(--ff-num);font-weight:800;font-size:18px;color:var(--or)}
.plan__list strong{font-size:15px;color:var(--navy)}
.plan__list span{font-size:12px;color:var(--mute);line-height:1.6}

/* 発問 */
.method__list{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.method__list li{background:var(--navy-2);border-radius:20px;padding:32px 24px}
.method__n{font-family:var(--ff-num);font-weight:800;font-size:28px;color:#FFB766}
.method__list h3{font-family:var(--ff-head);font-weight:700;font-size:19px;margin:10px 0 12px;color:#fff}
.method__list p{font-size:14px;color:#C9D2E6;line-height:1.85}

/* 自習室 */
.study__row{display:flex;gap:64px;align-items:center}
.study__txt{flex:1}
.study__img{width:520px;flex:none;border-radius:28px;overflow:hidden;aspect-ratio:4/3}
.study__img img{width:100%;height:100%;object-fit:cover}

/* コース：タブナビ */
.course-nav{padding:0;transform:translateY(-40px);margin-bottom:-40px;position:relative;z-index:2}
.tabnav{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.tabnav a{display:flex;flex-direction:column;align-items:center;gap:4px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 12px;font-size:12px;color:var(--mute);box-shadow:var(--shadow);transition:.2s}
.tabnav a span{font-family:var(--ff-head);font-weight:700;font-size:17px;color:var(--navy)}
.tabnav a:hover{border-color:var(--or);transform:translateY(-2px)}

/* コース：学年 */
.grade__head{display:flex;gap:56px;align-items:center;margin-bottom:56px}
.grade__head.is-rev{flex-direction:row-reverse}
.grade__img{width:480px;flex:none;border-radius:28px;overflow:hidden;aspect-ratio:4/3}
.grade__img img{width:100%;height:100%;object-fit:cover}
.grade__txt{flex:1}
.grade__txt .sec-head{margin-bottom:0}
.price{background:#fff;border-radius:24px;padding:36px 40px;box-shadow:var(--shadow)}
.sec--white .price{background:var(--sky);box-shadow:none}
.price__ttl{font-family:var(--ff-head);font-weight:700;font-size:20px;color:var(--navy);margin-bottom:20px;padding-left:14px;border-left:4px solid var(--or)}
.price__scroll{overflow-x:auto}
.price__table{width:100%;border-collapse:separate;border-spacing:0;min-width:520px}
.price__table th,.price__table td{padding:16px 18px;text-align:center;border-bottom:1px solid var(--line);font-size:15px}
.price__table thead th{background:var(--navy);color:#fff;font-weight:700;font-size:14px}
.price__table thead th:first-child{border-radius:12px 0 0 0}.price__table thead th:last-child{border-radius:0 12px 0 0}
.price__table tbody th{text-align:left;font-weight:700;color:var(--navy);background:#fff}
.price__table tbody th .chip{margin-left:8px}
.price__table td strong{font-family:var(--ff-num);font-weight:800;font-size:22px;color:var(--navy)}
.price__extra{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:24px}
.price__box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px 24px}
.sec--white .price__box{background:#fff}
.price__box-h{font-weight:700;color:var(--or);font-size:14px}
.price__box-n{font-weight:700;color:var(--navy);font-size:18px;margin:6px 0 8px}
.price__box-n strong{font-family:var(--ff-num);font-weight:800;font-size:28px}
.price__box p:last-child{font-size:13px;color:var(--ink-2);line-height:1.8}

/* 季節講習・諸費用 */
.season-sec__row{display:flex;gap:64px;align-items:center}
.season-sec__txt{flex:1}.season-sec__txt .sec-head{margin-bottom:0}
.season-sec__img{width:480px;flex:none;border-radius:28px;overflow:hidden;aspect-ratio:1}
.season-sec__img img{width:100%;height:100%;object-fit:cover}
.fees__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.fees__card{background:#fff;border-radius:20px;padding:28px 26px;box-shadow:var(--shadow)}
.fees__h{font-weight:700;color:var(--or);font-size:14px}
.fees__n{font-weight:700;color:var(--navy);font-size:18px;margin:8px 0 10px}
.fees__n strong{font-family:var(--ff-num);font-weight:800;font-size:32px}
.fees__d{font-size:13px;color:var(--ink-2);line-height:1.8}
.fees__camp{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line);font-size:13px;color:var(--navy);display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.fees__camp strong{font-family:var(--ff-num);font-size:18px;color:var(--or)}

/* 合格実績 */
.results-page .results__card .chip{margin-top:6px}
.results__past-list{margin-top:48px;background:#fff;border:1px solid var(--line);border-radius:24px;padding:32px 36px}
.results__past-list h3{font-family:var(--ff-head);font-weight:700;font-size:20px;color:var(--navy);margin-bottom:18px}
.results__past-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.results__past-h{font-weight:700;color:var(--or);font-size:14px;margin-bottom:6px}
.results__past-grid p:last-child{font-size:14px;line-height:1.9;color:var(--ink-2)}
.voices__list{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.voice{background:#fff;border-radius:24px;padding:32px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:18px}
.voice__head{display:flex;gap:18px;align-items:center}
.voice__img{width:72px;height:72px;border-radius:50%;overflow:hidden;flex:none}
.voice__img img{width:100%;height:100%;object-fit:cover}
.voice__who{font-family:var(--ff-head);font-weight:700;font-size:18px;color:var(--navy)}
.voice__school{font-weight:700;color:var(--or);font-size:14px}
.voice__tag{font-size:12px;color:var(--mute)}
.voice__body{font-size:14px;line-height:1.95;color:var(--ink-2)}
.voice__teacher{background:var(--or-soft);border-radius:14px;padding:16px 18px;display:flex;gap:12px;align-items:flex-start}
.voice__teacher .chip{flex:none;margin-top:2px}
.voice__teacher p{font-size:13px;line-height:1.8;color:var(--ink-2)}

/* 講師紹介 */
.principal__row{display:flex;gap:64px;align-items:center}
.principal__img{width:480px;flex:none;position:relative;border-radius:28px;overflow:hidden;aspect-ratio:4/5}
.principal__img img{width:100%;height:100%;object-fit:cover}
.principal__name{position:absolute;left:24px;bottom:24px;background:#fff;border-radius:14px;padding:12px 20px;display:flex;flex-direction:column}
.principal__name span{font-size:12px;color:var(--mute)}.principal__name strong{font-family:var(--ff-head);font-size:20px;color:var(--navy)}
.principal__txt{flex:1}
.principal__txt .sec-head{margin-bottom:16px}
.principal__sign{display:flex;align-items:baseline;gap:12px;margin-bottom:24px!important}
.principal__sign span{font-size:13px;color:var(--mute)}.principal__sign strong{font-family:var(--ff-head);font-size:22px;color:var(--navy)}
.grade__img img,.season-sec__img img,.rec-intro__img img{transform:scale(1.08);object-position:center 40%}
.principal__txt p{font-size:15px;line-height:2;color:var(--ink-2);margin-bottom:18px}
.teach-std{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:40px}
.teach-std li{background:#fff;border-radius:20px;padding:28px 28px 28px 92px;position:relative;box-shadow:var(--shadow)}
.teach-std__n{position:absolute;left:28px;top:26px;font-family:var(--ff-num);font-weight:800;font-size:32px;color:var(--or)}
.teach-std h3{font-family:var(--ff-head);font-weight:700;font-size:19px;color:var(--navy);margin-bottom:8px}
.teach-std p{font-size:14px;color:var(--ink-2);line-height:1.85}
.teachers-sec__gallery{display:grid;grid-template-columns:2fr 1fr 1fr;gap:16px}
.teachers-sec__gallery div{border-radius:20px;overflow:hidden;aspect-ratio:3/2}
.teachers-sec__gallery img{width:100%;height:100%;object-fit:cover}
.t-voice{background:var(--sky);border-radius:20px;padding:32px 36px;margin-bottom:20px}
.t-voice__q{font-family:var(--ff-head);font-weight:700;font-size:20px;color:var(--navy);margin-bottom:12px}
.t-voice p{font-size:14px;line-height:1.95;color:var(--ink-2)}
.t-voice__who{margin-top:12px;font-size:12px;color:var(--mute);text-align:right}
.t-voices__cta{text-align:center;margin-top:40px}
.t-voices__cta p{font-weight:700;color:var(--navy);margin-bottom:16px}

/* 通塾の流れ */
.flow-steps{display:flex;flex-direction:column;gap:0;max-width:960px;margin-inline:auto}
.flow-step{display:flex;gap:40px;padding:40px 0;border-bottom:1px solid var(--line);position:relative}
.flow-step:last-child{border-bottom:0}
.flow-step__n{width:96px;flex:none;font-family:var(--ff-num);font-weight:700;font-size:12px;letter-spacing:.12em;color:var(--or);display:flex;flex-direction:column}
.flow-step__n strong{font-size:40px;letter-spacing:0;color:var(--navy);line-height:1}
.flow-step__body{flex:1}
.flow-step h3{font-family:var(--ff-head);font-weight:700;font-size:24px;color:var(--navy);margin-bottom:12px}
.flow-step p{font-size:15px;line-height:1.95;color:var(--ink-2)}
.flow-step__btns{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}
.flow-step__box{margin-top:18px;background:var(--sky);border-radius:16px;padding:20px 24px}
.flow-step__box .check-list{margin:10px 0 0}
.flow-step__box-h{font-weight:700;color:var(--navy);font-size:14px}
.faq__group{font-family:var(--ff-head);font-weight:700;font-size:20px;color:var(--navy);margin:40px 0 16px;padding-left:14px;border-left:4px solid var(--or)}
.faq__group:first-of-type{margin-top:0}

/* 教室 */
.feat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px}
.feat-grid li{background:#fff;border:1px solid var(--line);border-radius:24px;overflow:hidden}
.feat-grid__img{aspect-ratio:16/9}
.feat-grid__img img{width:100%;height:100%;object-fit:cover}
.feat-grid h3{font-family:var(--ff-head);font-weight:700;font-size:20px;color:var(--navy);margin:22px 26px 8px}
.feat-grid p{font-size:14px;line-height:1.85;color:var(--ink-2);margin:0 26px 26px}
.hours__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.hours__card{background:var(--sky);border-radius:20px;padding:28px 24px;text-align:center}
.hours__d{font-weight:700;color:var(--or);font-size:14px}
.hours__t{font-family:var(--ff-num);font-weight:800;font-size:30px;color:var(--navy);margin:8px 0}
.hours__t span{font-size:18px;margin:0 4px}
.hours__n{font-size:12px;color:var(--mute);line-height:1.6}
.route{margin-top:48px;background:#fff;border-radius:24px;padding:32px 36px}
.route__ttl{font-family:var(--ff-head);font-weight:700;font-size:20px;color:var(--navy);margin-bottom:18px}
.route__list{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.route__list li{display:flex;gap:12px;align-items:flex-start;font-size:14px;line-height:1.7;color:var(--ink-2)}
.route__list strong{flex:none;width:28px;height:28px;border-radius:50%;background:var(--or);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--ff-num);font-size:14px}

/* 講師募集 */
.rec-intro__row{display:flex;gap:64px;align-items:center}
.rec-intro__txt{flex:1}.rec-intro__txt .sec-head{margin-bottom:0}
.rec-intro__img{width:480px;flex:none;border-radius:28px;overflow:hidden;aspect-ratio:4/3}
.rec-intro__img img{width:100%;height:100%;object-fit:cover}
.req-table{width:100%;border-collapse:collapse;background:#fff;border-radius:20px;overflow:hidden;box-shadow:var(--shadow)}
.req-table th,.req-table td{padding:20px 24px;border-bottom:1px solid var(--line);font-size:14px;line-height:1.85;text-align:left;vertical-align:top}
.req-table th{width:160px;background:var(--sky);color:var(--navy);font-weight:700}
.req-table tr:last-child th,.req-table tr:last-child td{border-bottom:0}
.req-table td p{margin-bottom:6px}

/* フォーム */
.form{background:#fff;border-radius:24px;padding:40px;box-shadow:var(--shadow)}
.sec--white .form{box-shadow:none;border:1px solid var(--line)}
.form__row{margin-bottom:22px}
.form__row label,.form__row legend{display:block;font-weight:700;font-size:14px;color:var(--navy);margin-bottom:8px}
.form__row input[type=text],.form__row input[type=email],.form__row input[type=tel],.form__row textarea{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:14px 16px;font:inherit;font-size:15px;background:#FAFBFD;transition:.2s}
.form__row input:focus,.form__row textarea:focus{outline:none;border-color:var(--or);background:#fff;box-shadow:0 0 0 3px rgba(235,122,0,.15)}
.form__row--radio{border:0;padding:0}
.form__row--radio label{display:flex;align-items:center;gap:8px;font-weight:500;margin-bottom:8px;cursor:pointer}
.form__row--radio input{accent-color:var(--or);width:18px;height:18px}
.req{display:inline-block;background:var(--or);color:#fff;font-size:11px;padding:2px 8px;border-radius:4px;margin-left:6px;vertical-align:middle}
.form__hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}
.form__agree{text-align:center;margin:8px 0 20px;font-size:14px}
.form__agree a{color:var(--or);text-decoration:underline}
.form__agree input{accent-color:var(--or);margin-right:4px}
.form__notice{border-radius:14px;padding:18px 22px;margin-bottom:24px;font-size:14px;line-height:1.8}
.form__notice.is-ok{background:#EAF7EE;color:#1E6B3A;border:1px solid #BFE6CB}
.form__notice.is-ng{background:#FDEEEE;color:#9A2B2B;border:1px solid #F3C4C4}
.form__notice strong{display:block;font-size:16px;margin-bottom:4px}

/* お問い合わせ */
.contact__row{display:flex;gap:48px;align-items:flex-start}
.contact__side{width:360px;flex:none;display:flex;flex-direction:column;gap:20px;position:sticky;top:110px}
.contact__main{flex:1}
.contact__h{font-family:var(--ff-head);font-weight:700;font-size:24px;color:var(--navy);margin-bottom:20px}
.contact__tel{background:var(--navy);color:#fff;border-radius:24px;padding:28px}
.contact__tel-h{font-weight:700;font-size:14px;color:#FFB766}
.contact__tel-n{display:block;font-family:var(--ff-num);font-weight:800;font-size:34px;color:#fff;margin:6px 0}
.contact__tel-t{font-size:13px;color:#C9D2E6}
.contact__tel .price__note{color:#9FB0D1;margin-top:12px}
.contact__steps{background:var(--sky);border-radius:24px;padding:28px}
.contact__steps-h{font-weight:700;color:var(--navy);margin-bottom:14px}
.contact__steps ol{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}
.contact__steps li{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.7;color:var(--ink-2)}
.contact__steps li strong{flex:none;width:24px;height:24px;border-radius:50%;background:var(--or);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--ff-num);font-size:12px}
.contact__steps>a{font-weight:700;font-size:14px;color:var(--or)}

/* ===== responsive ===== */
@media (max-width:1100px){
  .lesson__visual,.plan__img,.study__img,.grade__img,.season-sec__img,.principal__img,.rec-intro__img{width:42%}
  .lesson__visual{padding-bottom:80px}
}
@media (max-width:900px){
  .compare__grid{grid-template-columns:1fr}
  .compare__col.is-hot{transform:none;margin-top:12px}
  .lesson__row,.plan__row,.study__row,.grade__head,.grade__head.is-rev,.season-sec__row,.principal__row,.rec-intro__row,.contact__row{flex-direction:column;gap:32px}
  .lesson__visual,.plan__img,.study__img,.grade__img,.season-sec__img,.principal__img,.rec-intro__img{width:100%;aspect-ratio:16/10}
  .lesson__visual{padding-bottom:0;aspect-ratio:auto}
  .lesson__img.is-sub{display:none}
  .timeline{padding-left:72px}.timeline::before{left:52px}.timeline__t{left:-72px;width:44px;font-size:14px}
  .plan__list{grid-template-columns:1fr}
  .method__list{grid-template-columns:1fr 1fr}
  .course-nav{transform:none;margin-bottom:0;padding:24px 0 0}
  .tabnav{grid-template-columns:repeat(3,1fr);gap:8px}
  .tabnav a{padding:12px 8px;font-size:11px}.tabnav a span{font-size:15px}
  .price{padding:24px 20px}
  .price__table th,.price__table td{padding:12px 10px;font-size:13px}
  .price__table td strong{font-size:18px}
  .price__extra,.fees__grid,.results__past-grid,.voices__list,.teach-std,.feat-grid,.hours__grid{grid-template-columns:1fr}
  .teachers-sec__gallery{grid-template-columns:1fr 1fr}
  .teachers-sec__gallery div:first-child{grid-column:1/-1}
  .flow-step{flex-direction:column;gap:12px;padding:32px 0}
  .flow-step__n{flex-direction:row;align-items:baseline;gap:8px}.flow-step__n strong{font-size:32px}
  .flow-step h3{font-size:20px}
  .route__list{grid-template-columns:1fr}
  .req-table th,.req-table td{display:block;width:100%;padding:14px 18px}
  .req-table th{border-bottom:0;padding-bottom:6px}
  .form{padding:24px 20px}
  .contact__side{width:100%;position:static}
}
@media (max-width:520px){
  .method__list{grid-template-columns:1fr}
  .tabnav{grid-template-columns:repeat(2,1fr)}
  .voice{padding:24px 20px}
  .price__table{min-width:460px}
}

section[id],div[id]{scroll-margin-top:96px}
html{scroll-behavior:smooth}
