:root{
  --green:#3ba38c;
  --green-d:#2f8775;
  --yellow:#ffd24c;
  --yellow-d:#f5b800;
  --coral:#f4684f;
  --coral-d:#e2543c;
  --cream:#fff7ec;
  --pink:#fde7e3;
  --ink:#3a3a3a;
  --ink-soft:#6b6b6b;
  --line-green:#06c755;
  --card1:#efe6ff; --card2:#dff6ee; --card3:#ffe9ef; --card4:#e6f0ff;
  --card5:#fff3d6; --card6:#e8f7f1; --card7:#fbe7ff;
  --radius:22px;
  --shadow:0 10px 30px rgba(58,58,58,.08);
  --maxw:1080px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:"M PLUS Rounded 1c",system-ui,-apple-system,"Hiragino Kaku Gothic ProN",sans-serif;
  color:var(--ink);
  background:var(--cream);
  line-height:1.85;
  -webkit-font-smoothing:antialiased;
}
.container{max-width:var(--maxw);margin:0 auto;padding:0 24px;}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}

/* ===== Buttons ===== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.4em;
  padding:14px 28px;border-radius:999px;font-weight:700;font-size:15px;
  transition:transform .15s ease,box-shadow .15s ease,background .15s;
  cursor:pointer;border:none;white-space:nowrap;
}
.btn:hover{transform:translateY(-2px);}
.btn-primary{background:var(--coral);color:#fff;box-shadow:0 8px 18px rgba(244,104,79,.35);}
.btn-primary:hover{background:var(--coral-d);}
.btn-ghost{background:#fff;color:var(--green);border:2px solid var(--green);}
.btn-line{background:var(--line-green);color:#fff;}
.btn-line:hover{filter:brightness(.95);}
.btn-lg{padding:18px 42px;font-size:17px;}

/* ===== Header ===== */
.site-header{
  position:sticky;top:0;z-index:50;background:rgba(255,247,236,.92);
  backdrop-filter:blur(8px);border-bottom:1px solid rgba(0,0,0,.05);
}
.header-inner{display:flex;align-items:center;gap:24px;height:72px;}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;}
.logo-char{width:40px;height:40px;object-fit:contain;}
.logo-text{font-size:13px;line-height:1.2;}
.logo-text b{color:var(--green);font-size:16px;}
.gnav{display:flex;gap:22px;margin-left:auto;font-weight:500;font-size:15px;}
.gnav a{padding:6px 2px;border-bottom:2px solid transparent;transition:.15s;}
.gnav a:hover{color:var(--green);border-color:var(--yellow);}
.header-cta{padding:10px 18px;font-size:13px;}

/* ===== Hero ===== */
.hero{position:relative;background:linear-gradient(180deg,var(--pink) 0%,#fdf1ea 100%);padding:60px 0 96px;overflow:hidden;}
.hero-inner{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;max-width:1100px;margin:0 auto;}
.hero-copy{padding-left:100px;}
.hero-logo{margin:0 0 26px;display:flex;flex-direction:column;gap:12px;align-items:flex-start;}
.logo-img{height:auto;filter:drop-shadow(0 8px 14px rgba(0,0,0,.08));}
.logo-img-1{width:min(500px,96%);}
.logo-img-2{width:min(360px,70%);margin-left:8%;}
.hero-lead{font-size:18px;font-weight:500;margin:0 0 28px;}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;align-items:center;}
.hero-points{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
.hero-points li{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:13.5px;color:var(--ink);white-space:nowrap;}
.hp-check{width:18px;height:18px;color:var(--green);flex:0 0 auto;}
.hero-art{display:flex;justify-content:center;transform:translateX(-60px);}
.hero-char{width:min(440px,100%);height:auto;animation:bob 3s ease-in-out infinite;}
@keyframes bob{0%,100%{transform:translateY(0);}50%{transform:translateY(-12px);}}
.hero-wave{position:absolute;left:0;right:0;bottom:-1px;height:48px;
  background:var(--cream);clip-path:ellipse(75% 100% at 50% 100%);}

/* ===== Quick Nav Cards ===== */
.quicknav{margin-top:-34px;position:relative;z-index:5;padding-bottom:30px;}
.cards-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:12px;}
.qcard{
  background:#fff;border-radius:16px;padding:16px 6px;text-align:center;
  font-size:12px;font-weight:700;box-shadow:var(--shadow);line-height:1.4;
  display:flex;flex-direction:column;align-items:center;gap:8px;
  transition:transform .15s,box-shadow .15s;
}
.qcard:hover{transform:translateY(-4px);box-shadow:0 14px 28px rgba(58,58,58,.14);}
.qicon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:#2a7d68;}
.qicon svg{width:23px;height:23px;}
.c1 .qicon{background:var(--card1);} .c2 .qicon{background:var(--card2);}
.c3 .qicon{background:var(--card3);} .c4 .qicon{background:var(--card4);}
.c5 .qicon{background:var(--card5);} .c6 .qicon{background:var(--card6);}
.c7 .qicon{background:var(--card7);}

/* ===== Sections ===== */
.section{padding:72px 0;}
.section-alt{background:var(--pink);}
.sec-title{
  text-align:center;font-size:clamp(20px,3.4vw,28px);font-weight:800;margin:0 auto 44px;
  display:inline-flex;align-items:center;gap:12px;background:#fff;
  padding:12px 30px;border-radius:999px;box-shadow:var(--shadow);
  position:relative;left:50%;transform:translateX(-50%);
  border:3px solid var(--yellow);max-width:90%;
}
.sec-emoji{display:inline-flex;color:var(--green);}
.sec-emoji svg{width:1.25em;height:1.25em;}

/* concept */
.concept-box{max-width:760px;margin:0 auto;text-align:center;background:#fff;
  border-radius:var(--radius);padding:46px 34px;box-shadow:var(--shadow);}
.concept-catch{font-size:clamp(22px,4vw,30px);font-weight:800;color:var(--coral);margin:0 0 18px;}
.concept-text{font-size:17px;margin:0;}
.concept-text b{color:var(--green);}

/* feature */
.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.feature-card{background:#fff;border-radius:var(--radius);padding:32px 26px;box-shadow:var(--shadow);
  border-top:6px solid var(--yellow);}
.feature-card h3{margin:0 0 14px;font-size:19px;color:var(--coral);line-height:1.4;}
.feature-card p{margin:0;color:var(--ink-soft);font-size:15px;}

/* benefits */
.benefit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.benefit{background:#fff;border-radius:var(--radius);padding:28px 22px;text-align:center;box-shadow:var(--shadow);}
.b-ico{display:inline-flex;margin-bottom:10px;width:54px;height:54px;border-radius:16px;background:var(--cream);color:var(--green);align-items:center;justify-content:center;}
.b-ico svg{width:28px;height:28px;}
.benefit h3{margin:0 0 8px;font-size:18px;color:var(--green);}
.benefit p{margin:0;font-size:14px;color:var(--ink-soft);}

/* target */
.target-list{max-width:640px;margin:0 auto;list-style:none;padding:0;display:grid;gap:14px;}
.target-list li{background:#fff;border-radius:16px;padding:18px 24px 18px 58px;position:relative;
  box-shadow:var(--shadow);font-weight:500;}
.target-list li::before{content:"✓";position:absolute;left:22px;top:50%;transform:translateY(-50%);
  width:24px;height:24px;background:var(--green);color:#fff;border-radius:50%;display:grid;place-items:center;font-size:14px;font-weight:800;}

/* greeting + teacher */
.greeting-wrap{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:stretch;max-width:880px;margin:0 auto;}
.greeting-box{background:#fff;border-radius:var(--radius);padding:36px;box-shadow:var(--shadow);}
.greeting-box p{margin:0 0 16px;font-size:15.5px;line-break:strict;word-break:auto-phrase;text-wrap:pretty;}
.greeting-box p:last-child{margin-bottom:0;}
.greeting-box b{color:var(--coral);}
.teacher-card{background:#fff;border-radius:var(--radius);padding:28px;box-shadow:var(--shadow);text-align:center;}
.teacher-photo{width:100%;aspect-ratio:4/3;border-radius:16px;object-fit:cover;object-position:82% 80%;margin:0 0 16px;box-shadow:var(--shadow);}
.teacher-name{margin:0 0 12px;font-size:20px;}
.teacher-name span{font-size:14px;color:var(--ink-soft);}
.teacher-text{margin:0;font-size:13.5px;color:var(--ink-soft);line-height:2;line-break:strict;word-break:auto-phrase;text-wrap:pretty;}

/* plan */
.plan-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;max-width:840px;margin:0 auto;}
.plan-card{background:#fff;border-radius:var(--radius);padding:30px 26px;box-shadow:var(--shadow);}
.plan-name{text-align:center;font-size:20px;margin:0 0 20px;color:var(--ink);}
.plan-min{display:inline-block;background:var(--green);color:#fff;font-size:13px;padding:3px 12px;border-radius:999px;margin-left:6px;vertical-align:middle;}
.price-table{width:100%;border-collapse:collapse;}
.price-table tr{border-bottom:1px dashed #e8ddd2;}
.price-table tr:last-child{border-bottom:none;}
.price-table th{text-align:left;font-weight:700;padding:14px 6px;font-size:15px;white-space:nowrap;}
.price-table .price{font-family:"Baloo 2";font-weight:800;color:var(--coral);font-size:22px;text-align:right;padding:14px 6px;white-space:nowrap;}
.price-table .term{text-align:right;font-size:12px;color:var(--ink-soft);padding:14px 0 14px 8px;white-space:nowrap;}
.plan-note{text-align:center;color:var(--ink-soft);font-size:13px;margin:22px 0 0;}
.plan-cta{text-align:center;margin-top:24px;}

/* bonus */
.bonus-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;max-width:880px;margin:0 auto;}
.bonus-card{background:#fff;border-radius:var(--radius);padding:32px 28px;box-shadow:var(--shadow);}
.bonus-card h3{margin:0 0 18px;font-size:19px;color:var(--green);text-align:center;}
.bonus-card ul{list-style:none;padding:0;margin:0;display:grid;gap:14px;}
.bonus-card li{display:flex;align-items:center;gap:12px;font-weight:500;background:var(--cream);padding:14px 18px;border-radius:14px;}
.bonus-card li .bonus-link{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;width:100%;}
.bonus-card li .bonus-link:hover{color:var(--coral);}
.bonus-card li .li-ico{display:inline-flex;width:36px;height:36px;border-radius:10px;background:#fff;color:var(--green);align-items:center;justify-content:center;flex:0 0 auto;}
.bonus-card li .li-ico svg{width:20px;height:20px;}
.bonus-card p{margin:0 0 14px;font-size:15px;color:var(--ink-soft);}
.bonus-card p:last-child{margin-bottom:0;}
.bonus-card b{color:var(--coral);}
.bonus-card.has-illust{position:relative;padding-bottom:128px;}
.cheers-illust{position:absolute;right:16px;bottom:16px;width:126px;height:auto;transform:rotate(-7deg);}

/* reserve */
.reserve{background:linear-gradient(180deg,var(--cream),var(--pink));}
.reserve-lead{text-align:center;margin:0 0 30px;color:var(--ink-soft);}
.reserve-cta{max-width:560px;margin:0 auto;background:#fff;border-radius:var(--radius);padding:40px 36px;box-shadow:var(--shadow);text-align:center;}
.reserve-cta .btn-line{box-shadow:0 8px 18px rgba(6,199,85,.3);}
.reserve-steps{list-style:none;counter-reset:step;display:flex;justify-content:center;flex-wrap:wrap;gap:10px 18px;margin:26px 0 0;padding:0;}
.reserve-steps li{counter-increment:step;font-size:13.5px;font-weight:700;color:var(--ink);display:inline-flex;align-items:center;gap:7px;}
.reserve-steps li::before{content:counter(step);display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--green);color:#fff;font-size:12px;flex:0 0 auto;}
.reserve-form{max-width:560px;margin:0 auto;background:#fff;border-radius:var(--radius);
  padding:36px;box-shadow:var(--shadow);}
.field{margin-bottom:20px;}
.field label{display:block;font-weight:700;margin-bottom:8px;font-size:14px;}
.req{background:var(--coral);color:#fff;font-size:11px;padding:2px 8px;border-radius:6px;margin-left:6px;}
.field input,.field select,.field textarea{
  width:100%;padding:13px 14px;border:2px solid #ecdfd3;border-radius:12px;
  font-family:inherit;font-size:15px;background:#fffdfb;transition:border .15s;
}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--green);}
.lesson-note{margin:8px 0 0;font-size:13px;color:var(--ink-soft);}
.form-submit{width:100%;margin-top:6px;}
.form-msg{text-align:center;margin:14px 0 0;font-weight:700;min-height:1.4em;}
.form-msg.ok{color:var(--green);}
.form-msg.err{color:var(--coral-d);}

/* qa */
.qa-list{max-width:720px;margin:0 auto;display:grid;gap:14px;}
.qa-item{background:#fff;border-radius:16px;box-shadow:var(--shadow);overflow:hidden;}
.qa-item summary{list-style:none;cursor:pointer;padding:20px 54px 20px 56px;font-weight:700;position:relative;}
.qa-item summary::-webkit-details-marker{display:none;}
.qa-item summary::before{content:"Q";position:absolute;left:22px;top:50%;transform:translateY(-50%);
  width:26px;height:26px;background:var(--green);color:#fff;border-radius:50%;display:grid;place-items:center;font-family:"Baloo 2";font-size:15px;}
.qa-item summary::after{content:"+";position:absolute;right:24px;top:50%;transform:translateY(-50%);
  font-size:22px;color:var(--green);transition:transform .2s;}
.qa-item[open] summary::after{transform:translateY(-50%) rotate(45deg);}
.qa-item p{margin:0;padding:0 24px 22px 56px;color:var(--ink-soft);}

/* contact */
.contact{background:var(--green);color:#fff;padding:72px 0;text-align:center;}
.contact-title{font-size:clamp(22px,4vw,32px);margin:0 0 14px;}
.contact-text{margin:0 0 28px;opacity:.95;}
.contact-sub{margin:16px 0 0;font-size:12px;opacity:.8;}

/* footer */
.site-footer{background:#2c2c2c;color:#ddd;padding:52px 0 28px;}
.footer-top{display:grid;grid-template-columns:1.2fr 2fr;gap:40px;align-items:start;}
.footer-brand{display:flex;align-items:center;gap:10px;font-weight:800;color:#fff;font-size:17px;}
.footer-brand .logo-char{width:38px;height:38px;}
.footer-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;}
.footer-col h4{margin:0 0 14px;font-size:13px;font-weight:700;color:var(--yellow);letter-spacing:.04em;}
.footer-nav{display:flex;flex-direction:column;gap:11px;font-size:14px;}
.footer-nav a{display:inline-flex;align-items:center;gap:8px;color:#ddd;}
.footer-nav a:hover{color:var(--yellow);}
.sns-ico{width:17px;height:17px;}
.footer-bottom{margin-top:36px;padding-top:24px;border-top:1px solid rgba(255,255,255,.12);display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center;}
.back-to-top{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border-radius:999px;border:1px solid rgba(255,255,255,.25);color:#fff;font-size:13.5px;font-weight:700;transition:background .15s,border-color .15s;}
.back-to-top:hover{background:rgba(255,255,255,.1);border-color:var(--yellow);color:var(--yellow);}
.back-to-top svg{width:16px;height:16px;}
.copyright{font-size:12px;color:#999;margin:0;}

/* ===== Responsive ===== */
@media(max-width:860px){
  .hero-inner{grid-template-columns:1fr;text-align:center;}
  .hero-copy{padding-left:0;}
  .hero-art{transform:none;}
  .hero-logo{align-items:center;}
  .logo-img-2{margin-left:0;}
  .hero-actions{justify-content:center;}
  .hero-art{order:-1;}
  .cards-grid{grid-template-columns:repeat(4,1fr);}
  .feature-grid,.benefit-grid{grid-template-columns:1fr 1fr;}
  .plan-grid,.bonus-grid{grid-template-columns:1fr;}
  .greeting-wrap{grid-template-columns:1fr;}
  .footer-top{grid-template-columns:1fr;gap:28px;}
  .gnav{display:none;}
}
@media(max-width:480px){
  .cards-grid{grid-template-columns:repeat(2,1fr);}
  .feature-grid,.benefit-grid{grid-template-columns:1fr;}
  .footer-cols{grid-template-columns:1fr;gap:24px;}
  .header-cta{display:none;}
  .price-table th,.price-table .price,.price-table .term{font-size:13px;}
}

/* ===== Legal pages ===== */
.legal-hero{background:var(--cream);padding:54px 0 36px;text-align:center;}
.legal-hero h1{margin:0 0 8px;font-size:28px;color:var(--ink);}
.legal-hero p{margin:0;color:#7a756e;font-size:14px;}
.legal-body{max-width:820px;margin:0 auto;padding:48px 0 72px;}
.legal-body section{margin-bottom:34px;}
.legal-body h2{font-size:18px;color:var(--green);margin:0 0 12px;padding-bottom:8px;border-bottom:2px solid var(--cream);}
.legal-body h3{font-size:15px;color:var(--ink);margin:20px 0 8px;}
.legal-body p,.legal-body li{font-size:14.5px;line-height:1.9;color:#3a3636;}
.legal-body ul,.legal-body ol{margin:8px 0 8px 1.3em;padding:0;}
.legal-body li{margin-bottom:6px;}
.legal-date{margin-top:40px;font-size:13px;color:#9a948c;text-align:right;}
.legal-table{width:100%;border-collapse:collapse;font-size:14px;}
.legal-table th,.legal-table td{border:1px solid #ece5da;padding:13px 16px;text-align:left;vertical-align:top;line-height:1.8;}
.legal-table th{width:34%;background:var(--cream);color:var(--ink);font-weight:700;white-space:nowrap;}
.legal-table td{color:#3a3636;}
.legal-back{display:inline-flex;align-items:center;gap:7px;margin-top:8px;color:var(--green);font-weight:700;font-size:14px;}
.legal-back svg{width:16px;height:16px;}
@media(max-width:560px){
  .legal-table th{width:auto;display:block;border-bottom:none;}
  .legal-table td{display:block;}
}
