  :root{
    --brand:#1f7a6b; --brand-dark:#145a4e; --brand-soft:#e7f4f1; --brand-mint:#4aab9a;
    --accent:#f26b3c; --accent-dark:#d9542b; --accent-soft:#fff0e9;
    --warm-soft:#fbe6d8; --warm-tint:#fdf2e9;
    --ink:#3a3532; --ink-soft:#6a625c; --muted:#9a8f86;
    --bg:#fffdfb; --bg-soft:#f8f1e8; --bg-cream:#fcf5ea;
    --line:#ece2d6;
    --radius:16px; --shadow:0 8px 30px rgba(191,120,70,.10); --shadow-hover:0 14px 40px rgba(191,120,70,.18);
    --maxw:1120px;
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    font-family:"Noto Sans JP","Hiragino Kaku Gothic ProN","Meiryo",sans-serif;
    color:var(--ink); background:var(--bg); line-height:1.9; font-size:16px;
    -webkit-font-smoothing:antialiased;
  }
  :focus-visible{outline:3px solid #f7a27f; outline-offset:3px; border-radius:6px;}
  /* 折り返し：日本語は文節のきりのいい所で折る（対応ブラウザのみ・非対応は従来どおり）。
     長い英数字やURLは枠からはみ出さず途中で折る保険つき */
  body{overflow-wrap:break-word;}
  h1,h2,h3,h4,.note-box,.callout .info-note,.hero-copy .lead,.section-head p,.card p{word-break:auto-phrase;}
  h1,h2,h3{font-family:"Zen Maru Gothic","Noto Sans JP",sans-serif; line-height:1.5;}
  a{color:inherit; text-decoration:none;}
  img{max-width:100%; display:block;}
  .container{max-width:var(--maxw); margin:0 auto; padding:0 24px;}
  .section{padding:76px 0;}
  .section.soft{background:var(--bg-soft);}
  .section.cream{background:var(--bg-cream);}
  .eyebrow{
    display:inline-block; font-size:.8rem; font-weight:700; letter-spacing:.12em;
    color:var(--brand); background:var(--brand-soft); padding:6px 16px; border-radius:999px; margin-bottom:16px;
  }
  .section-head{text-align:center; margin-bottom:48px;}
  .section-head h2{font-size:1.9rem; color:var(--ink); letter-spacing:.01em;}
  .section-head p{color:var(--ink-soft); margin-top:12px; font-size:1rem;}

  /* ===== Header / Nav ===== */
  .site-header{position:sticky; top:0; z-index:100; background:rgba(255,255,255,.96); backdrop-filter:blur(12px); border-bottom:1px solid var(--line); box-shadow:0 3px 16px rgba(31,70,62,.05);}
  .nav-inner{max-width:var(--maxw); margin:0 auto; padding:12px 24px; display:flex; align-items:center; gap:18px;}
  .brand{display:flex; align-items:center; gap:12px; flex-shrink:0;}
  .brand img{height:46px; width:auto; border-radius:8px;}
  .brand .name{font-family:"Zen Maru Gothic",sans-serif; font-weight:700; font-size:1.15rem; color:var(--brand-dark); line-height:1.2;}
  .brand .name small{display:block; font-size:.68rem; color:var(--muted); font-weight:500; font-family:"Noto Sans JP",sans-serif;}
  .nav-links{display:flex; align-items:center; gap:4px; margin-left:auto; flex-wrap:wrap; justify-content:flex-end;}
  .nav-links a{font-size:.9rem; color:var(--ink-soft); padding:8px 11px; border-radius:8px; transition:.2s; white-space:nowrap;}
  .nav-links a:hover{color:var(--brand-dark); background:var(--brand-soft);}
  .nav-links a.current{color:var(--brand-dark); font-weight:700;}
  .nav-cta{background:var(--accent); color:#fff !important; font-weight:700; padding:9px 18px !important; border-radius:999px !important; box-shadow:0 4px 14px rgba(242,107,60,.3);}
  .nav-cta:hover{background:var(--accent-dark) !important;}
  .nav-toggle{display:none; margin-left:auto; background:none; border:1px solid var(--line); border-radius:10px; width:44px; height:44px; font-size:1.4rem; color:var(--brand-dark); cursor:pointer;}

  /* ===== Hero ===== */
  .hero{background:linear-gradient(145deg,#fff6ef 0%,#f9eee4 48%,#eaf5f1 100%); padding:68px 0 76px; overflow:hidden; position:relative;}
  .hero::before{content:""; position:absolute; width:320px; height:320px; border-radius:50%; background:rgba(74,171,154,.08); right:-100px; top:-140px;}
  .hero-grid{display:grid; grid-template-columns:1.05fr .95fr; gap:52px; align-items:center;}
  .hero-copy .tagline{display:inline-block; font-weight:700; color:var(--brand); background:#fff; border:1px solid var(--brand-soft); padding:6px 16px; border-radius:999px; font-size:.85rem; margin-bottom:22px; box-shadow:var(--shadow);}
  .hero-copy h1{font-size:2.7rem; line-height:1.45; color:var(--ink); letter-spacing:.01em;}
  .hero-copy h1 .hl{color:var(--brand); position:relative;}
  .hero-copy .lead{font-size:1.1rem; color:var(--ink-soft); margin:22px 0 26px; max-width:36em;}
  .hero-badges{display:flex; flex-wrap:wrap; gap:10px; margin-bottom:30px;}
  .hero-badges span{display:inline-flex; align-items:center; gap:7px; background:#fff; border:1px solid var(--line); border-radius:12px; padding:10px 16px; font-size:.92rem; font-weight:500; box-shadow:0 3px 10px rgba(0,0,0,.04);}
  .hero-badges span strong{color:var(--accent-dark);}
  .hero-cta{display:flex; flex-wrap:wrap; gap:14px; align-items:center;}
  .btn-primary{display:inline-flex; align-items:center; justify-content:center; gap:9px; background:var(--accent); color:#fff; font-weight:700; font-size:1.05rem; padding:16px 34px; border-radius:999px; box-shadow:0 8px 24px rgba(242,107,60,.32); transition:.2s; min-height:56px;}
  .btn-primary:hover{background:var(--accent-dark); transform:translateY(-2px); box-shadow:0 12px 30px rgba(242,107,60,.4);}
  .btn-ghost{display:inline-flex; align-items:center; gap:8px; color:var(--brand-dark); font-weight:700; padding:14px 22px; border-radius:999px; border:1.5px solid var(--brand); transition:.2s;}
  .btn-ghost:hover{background:var(--brand-soft);}
  .hero-photo{position:relative;}
  .hero-photo img{width:100%; border-radius:24px; box-shadow:0 20px 50px rgba(31,122,107,.22); object-fit:cover; aspect-ratio:4/3;}
  .hero-photo .float-card{position:absolute; left:-18px; bottom:-18px; background:#fff; border-radius:16px; padding:14px 20px; box-shadow:var(--shadow); display:flex; align-items:center; gap:12px;}
  .hero-photo .float-card .num{font-family:"Zen Maru Gothic",sans-serif; font-size:1.7rem; font-weight:700; color:var(--brand);}
  .hero-photo .float-card .lbl{font-size:.82rem; color:var(--ink-soft); line-height:1.4;}

  /* ===== Trust bar ===== */
  .trust{background:var(--brand-dark); color:#fff;}
  .trust .container{display:grid; grid-template-columns:repeat(4,1fr); gap:20px; padding-top:34px; padding-bottom:34px;}
  .trust-item{text-align:center;}
  .trust-item .t-num{font-family:"Zen Maru Gothic",sans-serif; font-size:1.7rem; font-weight:700; color:#ffd8a8;}
  .trust-item .t-lbl{font-size:.9rem; opacity:.92; margin-top:2px;}

  /* ===== Cards grid ===== */
  .grid{display:grid; gap:22px;}
  .g4{grid-template-columns:repeat(4,1fr);}
  .g3{grid-template-columns:repeat(3,1fr);}
  .g2{grid-template-columns:repeat(2,1fr);}
  .card{background:#fff; border:1px solid var(--line); border-radius:20px; padding:30px 24px; text-align:center; transition:.25s; box-shadow:0 6px 22px rgba(75,49,31,.05);}
  .card:hover{transform:translateY(-4px); box-shadow:var(--shadow-hover); border-color:var(--brand-soft);}
  .card .emoji{font-size:2.4rem; line-height:1; margin-bottom:14px;}
  .card h3{font-size:1.15rem; color:var(--brand-dark); margin-bottom:10px;}
  .card p{font-size:.95rem; color:var(--ink-soft);}
  .icon-circle{width:66px; height:66px; margin:0 auto 16px; border-radius:50%; background:var(--warm-soft); display:flex; align-items:center; justify-content:center; color:var(--brand);}
  .icon-circle svg{width:32px; height:32px;}
  .a-card .icon-circle{width:58px; height:58px; margin-bottom:12px;} .a-card .icon-circle svg{width:28px; height:28px;}
  .step .icon-circle{width:60px; height:60px; margin:6px auto 12px;} .step .icon-circle svg{width:28px; height:28px;}
  .course-item .icon-circle{width:56px; height:56px; margin:0 auto 10px;} .course-item .icon-circle svg{width:26px; height:26px;}

  /* audience simple cards */
  .a-card{background:#fff; border-radius:var(--radius); padding:26px 20px; text-align:center; border:1px solid var(--line); font-weight:500;}
  .a-card .emoji{font-size:2.2rem; margin-bottom:10px;}
  .a-card h3{font-size:1.05rem; color:var(--ink);}
  .instructor-note{margin-top:30px; text-align:center; background:var(--brand-soft); border-radius:var(--radius); padding:22px; color:var(--brand-dark); font-size:.98rem;}
  .instructor-note strong{color:var(--brand-dark);}

  /* steps */
  .step{position:relative; background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:34px 24px 26px; text-align:center;}
  .step .step-no{position:absolute; top:-16px; left:50%; transform:translateX(-50%); width:38px; height:38px; background:var(--brand); color:#fff; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:700; font-family:"Zen Maru Gothic",sans-serif; box-shadow:0 4px 12px rgba(31,122,107,.3);}
  .step .emoji{font-size:2rem; margin:6px 0 10px;}
  .step h3{font-size:1.1rem; color:var(--brand-dark); margin-bottom:8px;}
  .step p{font-size:.92rem; color:var(--ink-soft);}

  /* worries */
  .worry{background:#fff; border:1px solid var(--line); border-left:4px solid var(--brand-mint); border-radius:12px; padding:20px 24px;}
  .worry .q{font-weight:700; color:var(--ink); margin-bottom:6px;}
  .worry .a{color:var(--ink-soft); font-size:.96rem;}

  /* pricing */
  .price-card{background:#fff; border:1px solid var(--line); border-radius:20px; padding:34px 26px; text-align:center; position:relative; transition:.25s;}
  .price-card:hover{transform:translateY(-4px); box-shadow:var(--shadow-hover);}
  .price-card.popular{border:2px solid var(--accent); box-shadow:0 14px 40px rgba(242,107,60,.16);}
  .price-card .tag{position:absolute; top:-14px; left:50%; transform:translateX(-50%); background:var(--accent); color:#fff; font-size:.8rem; font-weight:700; padding:6px 18px; border-radius:999px; white-space:nowrap; box-shadow:0 4px 12px rgba(242,107,60,.3);}
  .price-card h3{font-size:1.2rem; color:var(--brand-dark); margin-bottom:14px;}
  .price-main{font-family:"Zen Maru Gothic",sans-serif; font-size:2.4rem; font-weight:700; color:var(--ink); line-height:1;}
  .price-unit{font-size:.85rem; color:var(--muted); margin-top:4px;}
  .price-campaign{display:inline-block; margin:14px 0; color:var(--accent-dark); font-weight:700; background:var(--accent-soft); padding:5px 14px; border-radius:999px; font-size:.9rem;}
  .price-card p{font-size:.92rem; color:var(--ink-soft);}
  .price-note{margin-top:30px; background:#fff; border:1px dashed var(--line); border-radius:12px; padding:20px 24px; font-size:.86rem; color:var(--ink-soft); line-height:1.9;}
  .price-note a{color:var(--brand); font-weight:700;}

  /* comparison table */
  .table-wrap{overflow-x:auto;}
  .compare-table{width:100%; border-collapse:separate; border-spacing:0; min-width:520px; background:#fff; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow);}
  .compare-table th,.compare-table td{padding:16px 18px; text-align:center; border-bottom:1px solid var(--line); font-size:.95rem;}
  .compare-table thead th{background:var(--brand-dark); color:#fff; font-size:.95rem;}
  .compare-table thead th:last-child{background:var(--brand);}
  .compare-table td:first-child{font-weight:700; background:var(--bg-soft); color:var(--ink);}
  .compare-table td.ours{background:var(--brand-soft); font-weight:500; color:var(--brand-dark);}
  .compare-table td.ours .big{font-family:"Zen Maru Gothic",sans-serif; font-size:1.5rem; font-weight:700; color:var(--accent-dark);}
  .compare-table small{color:var(--muted); font-size:.8rem;}
  .compare-table td.ours small{color:var(--brand);}
  .compare-note{text-align:center; margin-top:18px; color:var(--ink-soft); font-size:.92rem;}

  /* reasons */
  .reason-list{list-style:none; max-width:760px; margin:0 auto; display:grid; gap:14px;}
  .reason-list li{background:#fff; border:1px solid var(--line); border-radius:12px; padding:16px 20px; font-size:1rem; display:flex; gap:12px; align-items:flex-start;}
  .reason-list li::before{content:"✓"; flex-shrink:0; width:26px; height:26px; background:var(--brand); color:#fff; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.9rem;}
  .reason-list li strong{color:var(--brand-dark);}

  /* highlight boxes */
  .hl-box{max-width:820px; margin:0 auto; background:#fff; border:1px solid var(--line); border-radius:20px; padding:38px; text-align:center; box-shadow:var(--shadow);}
  .hl-box .point{display:inline-block; font-family:"Zen Maru Gothic",sans-serif; font-size:1.3rem; font-weight:700; color:var(--brand-dark); background:var(--brand-soft); padding:10px 24px; border-radius:12px;}
  .hl-box p{margin-top:16px; color:var(--ink-soft);}
  .btn-group{display:flex; flex-wrap:wrap; gap:14px; justify-content:center; margin-top:24px;}
  .pill-btn{display:inline-flex; align-items:center; gap:8px; padding:13px 26px; border-radius:999px; font-weight:700; font-size:.98rem; transition:.2s;}
  .pill-btn.blue{background:#2f6fb0; color:#fff;} .pill-btn.blue:hover{background:#255a90;}
  .pill-btn.green{background:var(--brand); color:#fff;} .pill-btn.green:hover{background:var(--brand-dark);}

  /* testimonials */
  .t-card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:28px 24px; box-shadow:0 4px 16px rgba(0,0,0,.03);}
  .t-card .quote{font-size:1rem; color:var(--ink); line-height:1.85;}
  .t-card .quote::before{content:"“"; font-family:"Zen Maru Gothic",serif; font-size:2.4rem; color:var(--brand-mint); line-height:0; vertical-align:-.4em; margin-right:4px;}
  .t-card .author{margin-top:16px; font-size:.88rem; color:var(--muted); text-align:right;}

  /* gallery */
  .gallery-grid{display:grid; grid-template-columns:1fr 1fr; gap:22px;}
  .gallery-grid img{width:100%; border-radius:var(--radius); box-shadow:var(--shadow); aspect-ratio:4/3; object-fit:cover;}

  /* new textbook topics */
  .textbook-topics{background:linear-gradient(180deg,#fffdfb 0%,#f5f9f7 100%);}
  .rolling-textbooks-visual{max-width:960px; margin:0 auto 34px; overflow:hidden; border:1px solid var(--line); border-radius:22px; background:#fffaf1; box-shadow:var(--shadow);}
  .rolling-textbooks-visual img{width:100%; aspect-ratio:2/1; object-fit:cover;}
  .rolling-textbooks-visual figcaption{padding:15px 20px 17px; text-align:center; font-family:"Zen Maru Gothic",sans-serif; font-size:1.04rem; font-weight:700; color:var(--brand-dark); background:#fff; letter-spacing:.01em;}
  .textbook-progress{max-width:880px; margin:0 auto 34px; display:flex; align-items:center; gap:24px; background:#fff; border:1px solid var(--line); border-radius:20px; padding:24px 30px; box-shadow:var(--shadow);}
  .textbook-progress-num{flex-shrink:0; font-family:"Zen Maru Gothic",sans-serif; font-size:2.4rem; line-height:1; font-weight:700; color:var(--accent-dark);}
  .textbook-progress-num span{display:block; margin-top:7px; font-family:"Noto Sans JP",sans-serif; font-size:.78rem; text-align:center; color:var(--ink-soft);}
  .textbook-progress strong{display:block; font-size:1.08rem; color:var(--brand-dark); margin-bottom:4px;}
  .textbook-progress p{font-size:.92rem; color:var(--ink-soft); line-height:1.75;}
  .textbook-topic-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
  .textbook-topic-card{overflow:hidden; background:#fff; border:1px solid var(--line); border-radius:20px; box-shadow:0 6px 22px rgba(75,49,31,.06); transition:.25s;}
  .textbook-topic-card:hover{transform:translateY(-4px); box-shadow:var(--shadow-hover);}
  .textbook-cover{position:relative; height:240px; padding:22px; background:linear-gradient(145deg,var(--brand-soft),#fff4ec); display:flex; align-items:flex-start; justify-content:center; overflow:hidden;}
  .textbook-cover img{height:100%; width:auto; border-radius:4px; box-shadow:0 10px 24px rgba(31,70,62,.18);}
  .textbook-new{position:absolute; top:16px; right:16px; min-width:52px; padding:6px 10px; border-radius:999px; background:var(--accent); color:#fff; text-align:center; font-size:.72rem; font-weight:700; letter-spacing:.06em; box-shadow:0 4px 12px rgba(242,107,60,.28);}
  .textbook-new.renew{background:var(--brand); box-shadow:0 4px 12px rgba(31,122,107,.25);}
  .textbook-topic-body{padding:24px;}
  .textbook-topic-body time{display:block; font-size:.78rem; font-weight:700; color:var(--brand); letter-spacing:.08em; margin-bottom:7px;}
  .textbook-topic-body h3{font-size:1.15rem; color:var(--brand-dark); margin-bottom:9px;}
  .textbook-topic-body p{font-size:.92rem; color:var(--ink-soft); line-height:1.75;}
  .textbook-renewal-note{margin-top:28px; padding:20px 24px; background:#fff; border:1px dashed var(--brand-mint); border-radius:14px; text-align:center;}
  .textbook-renewal-label{display:inline-block; margin-bottom:6px; color:var(--brand-dark); font-weight:700;}
  .textbook-renewal-note p{font-size:.9rem; color:var(--ink-soft);}

  /* courses */
  .course-item{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:26px 14px; text-align:center; transition:.2s;}
  .course-item:hover{transform:translateY(-4px); box-shadow:var(--shadow-hover);}
  .course-item .emoji{font-size:2rem; margin-bottom:10px;}
  .course-item h3{font-size:1rem; color:var(--brand-dark);}
  .course-grid{grid-template-columns:repeat(5,1fr);}

  /* age banner */
  .age-banner{max-width:760px; margin:0 auto; background:linear-gradient(135deg,var(--brand) 0%,var(--brand-mint) 100%); color:#fff; border-radius:24px; padding:44px 30px; text-align:center; box-shadow:var(--shadow);}
  .age-banner .age-range{font-family:"Zen Maru Gothic",sans-serif; font-size:2.2rem; font-weight:700; margin-bottom:12px;}
  .age-banner p{opacity:.96;}

  /* info table */
  .info-table{width:100%; max-width:760px; margin:0 auto; border-collapse:separate; border-spacing:0; background:#fff; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow);}
  .info-table th,.info-table td{padding:16px 20px; text-align:left; border-bottom:1px solid var(--line); font-size:.96rem; vertical-align:top;}
  .info-table th{background:var(--bg-soft); color:var(--brand-dark); width:130px; font-weight:700; white-space:nowrap;}
  .info-table .school-link{color:var(--brand-dark); font-weight:600; text-decoration:underline; text-decoration-color:var(--brand-mint); text-decoration-thickness:2px; text-underline-offset:3px;}
  .info-table .school-link:hover{color:var(--accent-dark); text-decoration-color:var(--accent);}
  .school-link-note{max-width:760px; margin:12px auto 0; color:var(--muted); font-size:.84rem;}
  .access-photo{margin-top:30px; text-align:center;}
  .access-photo img{max-width:560px; width:100%; margin:0 auto; border-radius:var(--radius); box-shadow:var(--shadow);}
  .access-photo p{margin-top:10px; font-size:.9rem; color:var(--muted);}

  /* timetable */
  .tt-table{width:100%; max-width:760px; margin:0 auto; border-collapse:separate; border-spacing:0; background:#fff; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); min-width:480px;}
  .tt-table th,.tt-table td{padding:15px 18px; border-bottom:1px solid var(--line); text-align:center; font-size:.95rem;}
  .tt-table thead th{background:var(--brand-dark); color:#fff;}
  .tt-table .day{font-weight:700; color:var(--brand-dark); background:var(--bg-soft);}
  .tt-table .note-cell{font-size:.85rem; color:var(--ink-soft);}
  .tt-table .closed-row td{color:var(--muted);}
  .tt-notes{display:flex; flex-wrap:wrap; gap:14px; justify-content:center; margin-top:20px;}
  .tt-note{background:#fff; border:1px solid var(--line); border-radius:999px; padding:10px 20px; font-size:.9rem;}
  .tt-note .tt-label{font-weight:700; color:var(--brand); margin-right:8px;}

  /* news */
  .news-box{max-width:820px; margin:0 auto; display:grid; gap:16px;}
  .news-item{background:#fff; border:1px solid var(--line); border-radius:12px; padding:20px 24px; font-size:.96rem; color:var(--ink-soft);}
  .news-item strong{color:var(--ink);}
  .news-tag{display:inline-block; font-size:.76rem; font-weight:700; padding:4px 12px; border-radius:999px; margin-right:10px; vertical-align:1px;}
  .news-tag.important{background:var(--accent-soft); color:var(--accent-dark);}
  .news-tag.info{background:var(--brand-soft); color:var(--brand-dark);}

  /* final CTA */
  .final-cta{background:linear-gradient(160deg,#1f7a6b 0%,#145a4e 100%); color:#fff; text-align:center;}
  .final-cta h2{color:#fff; font-size:1.9rem; margin-bottom:20px;}
  .final-cta .reason-list li{background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.15); color:#fff; text-align:left;}
  .final-cta .reason-list li strong{color:#ffd8a8;}
  .final-cta .reason-list li::before{background:#ffd8a8; color:var(--brand-dark);}
  .final-cta .lead{margin:30px 0 18px; font-size:1.1rem;}
  .final-cta .btn-primary{background:#fff; color:var(--accent-dark); box-shadow:0 10px 30px rgba(0,0,0,.2);}
  .final-cta .btn-primary:hover{background:#fff0e9;}

  /* footer */
  footer{background:#12332d; color:#cfe3de; text-align:center; padding:48px 24px;}
  footer strong{color:#fff; font-size:1.15rem; font-family:"Zen Maru Gothic",sans-serif;}
  footer p{margin:6px 0; font-size:.92rem;}
  footer a{color:#ffd8a8;}
  footer .foot-links{margin-top:18px; line-height:2.4; font-size:.85rem;}
  footer .foot-links a{color:#cfe3de; margin:0 2px;}
  footer .foot-links a:hover{color:#fff;}
  footer .copy{margin-top:16px; font-size:.78rem; opacity:.7;}

  /* sticky mobile CTA */
  .mobile-cta{display:none;}

  /* ===== Responsive ===== */
  @media(max-width:900px){
    .nav-links{display:none; position:absolute; top:100%; left:0; right:0; background:#fff; flex-direction:column; align-items:stretch; padding:12px; gap:2px; border-bottom:1px solid var(--line); box-shadow:0 10px 30px rgba(0,0,0,.08); max-height:calc(100vh - 80px); max-height:calc(100dvh - 80px); overflow-y:auto; -webkit-overflow-scrolling:touch; overscroll-behavior:contain;}
    .nav-links.open{display:flex;}
    .nav-links a{padding:13px 16px; font-size:1rem;}
    .nav-cta{text-align:center; margin-top:6px;}
    .nav-toggle{display:block;}
    .hero-grid{grid-template-columns:1fr; gap:36px;}
    .hero-photo{order:-1;}
    .hero-copy h1{font-size:2.1rem;}
    .g4{grid-template-columns:repeat(2,1fr);}
    .course-grid{grid-template-columns:repeat(2,1fr);}
    .g3{grid-template-columns:1fr;}
    .textbook-topic-grid{grid-template-columns:1fr; max-width:560px; margin:0 auto;}
    .textbook-cover{height:280px;}
    .trust .container{grid-template-columns:repeat(2,1fr); gap:24px;}
  }
  @media(max-width:560px){
    .container{padding-left:18px; padding-right:18px;}
    .section{padding:52px 0;}
    .section-head h2{font-size:1.55rem;}
    .hero{padding:28px 0 58px;}
    .hero-copy h1{font-size:1.85rem; line-height:1.42;}
    .hero-copy .lead{font-size:1rem; line-height:1.8;}
    .hero-photo img{border-radius:18px; aspect-ratio:16/11;}
    .hero-badges{gap:8px;}
    .hero-badges span{font-size:.84rem; padding:8px 11px;}
    .hero-cta{align-items:stretch;}
    .hero-cta .btn-primary,.hero-cta .btn-ghost{width:100%; justify-content:center;}
    .g4{grid-template-columns:1fr;}
    .course-grid{grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px;}
    .g2,.gallery-grid{grid-template-columns:1fr;}
    .textbook-progress{align-items:flex-start; gap:16px; padding:20px;}
    .textbook-progress-num{font-size:2rem;}
    .rolling-textbooks-visual{margin-bottom:26px; border-radius:16px;}
    .rolling-textbooks-visual figcaption{padding:13px 16px 15px; font-size:.94rem; line-height:1.65;}
    .textbook-cover{height:230px;}
    .textbook-topic-body{padding:20px;}
    .price-main{font-size:2.1rem;}
    .hero-photo .float-card{left:8px; bottom:-14px;}
    .mobile-cta{display:flex; position:fixed; bottom:0; left:0; right:0; z-index:90; background:rgba(255,255,255,.96); backdrop-filter:blur(8px); border-top:1px solid var(--line); padding:10px 14px; box-shadow:0 -4px 20px rgba(0,0,0,.08);}
    .mobile-cta a{flex:1; text-align:center; background:var(--accent); color:#fff; font-weight:700; padding:14px; border-radius:999px; box-shadow:0 4px 14px rgba(242,107,60,.3);}
    body{padding-bottom:72px;}
  }

/* ============ 下層ページ共通パーツ ============ */
.page-hero{background:linear-gradient(160deg,#fbe7da 0%,#fcf3ea 60%,#f4f6ef 100%); padding:52px 0 56px; text-align:center;}
.page-hero .eyebrow{margin-bottom:14px;}
.page-hero h1{font-family:"Zen Maru Gothic",sans-serif; font-size:2.1rem; color:var(--ink); line-height:1.4;}
.page-hero p{max-width:40em; margin:16px auto 0; color:var(--ink-soft);}
.page-hero .btn-primary{margin-top:26px;}
.lead-center{text-align:center; max-width:44em; margin:0 auto 32px; color:var(--ink-soft);}

.data-table{width:100%; border-collapse:separate; border-spacing:0; background:#fff; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); min-width:520px;}
.data-table th,.data-table td{padding:14px 16px; border-bottom:1px solid var(--line); text-align:center; font-size:.95rem;}
.data-table thead th{background:var(--brand-dark); color:#fff; font-weight:500;}
.data-table tbody tr:last-child td{border-bottom:none;}
.data-table .row-name{font-weight:700; color:var(--brand-dark); background:var(--bg-soft); text-align:left; white-space:nowrap;}
.data-table tr.pick td{background:var(--brand-soft);}
.data-table .big{font-family:"Zen Maru Gothic",sans-serif; font-size:1.15rem; font-weight:700; color:var(--accent-dark);}
.badge-mini{display:inline-block; background:var(--accent); color:#fff; font-size:.68rem; font-weight:700; padding:2px 8px; border-radius:999px; margin-left:6px; vertical-align:1px;}

.detail-card{background:#fff; border:1px solid var(--line); border-radius:16px; padding:28px; margin-bottom:20px; box-shadow:0 4px 16px rgba(0,0,0,.03);}
.detail-card .dc-head{display:flex; align-items:center; gap:16px; margin-bottom:8px; padding-bottom:16px; border-bottom:1px solid var(--line);}
.detail-card .dc-icon{width:56px; height:56px; flex-shrink:0; border-radius:14px; background:var(--warm-soft); color:var(--brand); display:flex; align-items:center; justify-content:center;}
.detail-card .dc-icon svg{width:28px; height:28px;}
.detail-card h3{font-size:1.25rem; color:var(--brand-dark);}
.detail-card .dc-price{font-size:.92rem; color:var(--accent-dark); font-weight:700; margin-top:3px;}
.detail-card h4{font-size:1rem; color:var(--ink); margin:18px 0 10px; padding-left:12px; border-left:3px solid var(--brand-mint); border-radius:0;}
.detail-card ul{list-style:none; display:grid; gap:9px;}
.detail-card ul li{padding-left:26px; position:relative; color:var(--ink-soft); font-size:.95rem; line-height:1.7;}
.detail-card ul li::before{content:"✓"; position:absolute; left:0; top:0; color:var(--brand); font-weight:700;}

.note-box{max-width:820px; margin:24px auto 0; background:#fff; border:1px dashed var(--line); border-radius:12px; padding:20px 24px; font-size:.98rem; color:var(--ink); line-height:2;}
.note-box strong{color:var(--ink);}
.callout{max-width:760px; margin:0 auto; background:#fff; border:1px solid var(--line); border-radius:16px; padding:30px; box-shadow:var(--shadow);}
.callout h3{color:var(--brand-dark); margin-bottom:14px; font-size:1.15rem;}
.callout ul{list-style:none; display:grid; gap:10px; margin-bottom:8px;}
.callout ul li{padding-left:26px; position:relative; color:var(--ink-soft);}
.callout ul li::before{content:"✓"; position:absolute; left:0; color:var(--brand); font-weight:700;}
.callout .info-note{font-size:.98rem; color:var(--ink); margin-top:14px; padding-top:14px; border-top:1px solid var(--line);}
.caution{color:var(--accent-dark); font-size:.9rem; margin-top:14px;}

.duo-grid{display:grid; grid-template-columns:1fr 1fr; gap:20px; max-width:720px; margin:24px auto 0;}
.duo-card{background:#fff; border:1px solid var(--line); border-radius:16px; padding:26px; text-align:center; box-shadow:0 4px 16px rgba(0,0,0,.03);}
.duo-card h4{font-size:1.1rem; color:var(--brand-dark); margin-bottom:10px;}
.duo-card .big-price{font-family:"Zen Maru Gothic",sans-serif; font-size:1.8rem; font-weight:700; color:var(--accent-dark); margin:6px 0;}
.duo-card .sub{font-size:.85rem; color:var(--muted);}
@media(max-width:560px){ .duo-grid{grid-template-columns:1fr;} }
