/*
Theme Name: Futaba
Description: 子ども向け学習支援・発達サポート教室「ふたば」のためのWordPressテーマ。
Version: 0.2.1
Author: CIT
Text Domain: futaba
*/

/* ---- design tokens ------------------------------------------------- */
:root{
  --ink:        #4B3B32;   /* warm umber text */
  --ink-soft:   #8A7A6C;   /* secondary text */
  --cream:      #FFFBF2;   /* page ground */
  --paper:      #FFFFFF;   /* card surface */
  --clover:     #4F8A6B;   /* brand green */
  --clover-deep:#2F6350;
  --coral:      #EA8468;   /* cta accent */
  --coral-deep: #D96B4E;
  --butter:     #FBE7A1;   /* blob hue */
  --sky:        #A8D6DC;   /* blob hue */
  --sky-deep:   #3E7F88;
  --blossom:    #F3C2D3;   /* blob hue */
  --blossom-deep:#C97A98;
  --line:       rgba(75,59,50,.14);
}

/* この教室ブランドは「やわらかいパステル」一本で成立させる方針のため
   ダークモード分岐は意図的に組まず、背景色はトークンから明示的に敷く */

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:'Zen Maru Gothic', 'Hiragino Maru Gothic ProN', sans-serif;
  font-weight:400;
  line-height:1.85;
  letter-spacing:.02em;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;}
[hidden]{display:none!important;}
a{color:inherit;}
h1,h2,h3{text-wrap:balance; margin:0;}
.font-display{font-family:'Yomogi','Zen Maru Gothic',sans-serif; font-weight:400;}

.wrap{
  max-width:920px;
  margin-inline:auto;
  padding-inline:20px;
}
section{position:relative; z-index:1;}

/* ---- header ---------------------------------------------------------- */
.site-header{
  position:sticky;
  top:0;
  z-index:40;
  background:rgba(255,251,242,.86);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.site-header .wrap{
  position:relative;
  max-width:1040px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding-block:12px;
}
.brand{
  display:flex;
  align-items:center;
  gap:8px;
  font-family:'Yomogi',sans-serif;
  font-size:1.3rem;
  color:var(--clover-deep);
  text-decoration:none;
}
.brand img{ height:32px; width:auto; }
.icon-sprout{width:26px; height:26px; color:var(--clover);}
nav.site-nav{
  display:flex;
  flex-wrap:wrap;
  gap:4px 18px;
  font-size:.86rem;
}
nav.site-nav ul{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:4px 18px; }
nav.site-nav a{
  text-decoration:none;
  color:var(--ink-soft);
  padding:4px 2px;
  border-bottom:2px solid transparent;
  transition:color .2s, border-color .2s;
}
nav.site-nav a:hover,
nav.site-nav a:focus-visible{
  color:var(--clover-deep);
  border-color:var(--coral);
  outline:none;
}

.menu-toggle{
  display:none;
  flex-direction:column;
  justify-content:center;
  align-items:stretch;
  gap:5px;
  width:34px; height:34px;
  padding:0;
  border:none;
  background:none;
  cursor:pointer;
  flex:0 0 auto;
}
.menu-toggle span{
  display:block;
  height:2px;
  background:var(--ink);
  border-radius:2px;
  transition:transform .25s ease, opacity .2s ease;
}
.menu-toggle:focus-visible{ outline:2px solid var(--coral); outline-offset:3px; }
.menu-toggle.is-active span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.menu-toggle.is-active span:nth-child(2){ opacity:0; }
.menu-toggle.is-active span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

/* ---- hero -------------------------------------------------------------- */
.hero{
  overflow:hidden;
  padding-block:clamp(64px,14vw,120px) clamp(72px,16vw,128px);
}
.blob{
  position:absolute;
  filter:blur(38px);
  opacity:.6;
  z-index:0;
  animation:drift 22s ease-in-out infinite alternate;
}
@media (prefers-reduced-motion:reduce){ .blob{animation:none;} }
@keyframes drift{
  from{border-radius:42% 58% 65% 35% / 45% 40% 60% 55%; transform:scale(1) rotate(0deg);}
  to  {border-radius:58% 42% 38% 62% / 52% 60% 40% 48%; transform:scale(1.06) rotate(4deg);}
}
.blob--1{width:320px;height:320px;background:var(--butter); top:-90px; left:-70px;}
.blob--2{width:280px;height:280px;background:var(--sky);    top:20px;  right:-90px;}
.blob--3{width:260px;height:260px;background:var(--blossom);bottom:-100px; left:18%;}

.hero .wrap{
  position:relative;
  z-index:1;
  text-align:center;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:18px;
}
.eyebrow{
  font-size:.82rem;
  letter-spacing:.15em;
  color:var(--clover-deep);
  background:var(--paper);
  border:1px solid var(--line);
  padding:7px 16px;
  border-radius:999px;
}
.hero h1{
  font-size:clamp(3.4rem,15vw,6.4rem);
  color:var(--ink);
  line-height:1;
}
.hero .sub{
  font-size:clamp(1rem,3vw,1.2rem);
  color:var(--ink-soft);
  font-weight:500;
}

/* ---- news (お知らせ) ---------------------------------------------------- */
.news{
  padding-block:clamp(26px,4vw,36px);
  background:rgba(243,194,211,.3); /* blossom の薄い帯 */
  text-align:center;
}
.news-head{
  font-size:1.05rem;
  color:var(--ink);
  margin-bottom:12px;
}
.news-list{
  list-style:none; margin:0 auto 14px; padding:0;
  max-width:640px; text-align:left;
  display:flex; flex-direction:column;
}
.news-list li{
  display:flex; align-items:baseline; gap:12px;
  padding-block:10px;
  border-bottom:1px solid rgba(75,59,50,.12);
  font-size:.88rem;
}
.news-list li:last-child{ border-bottom:none; }
.news-date{ color:var(--ink-soft); font-variant-numeric:tabular-nums; font-size:.78rem; flex:0 0 auto; }
.news-tag{ font-size:.76rem; font-weight:700; flex:0 0 auto; }
.news-tag--taiken{ color:var(--coral-deep); }
.news-tag--kyuko{ color:var(--sky-deep); }
.news-tag--kousin{ color:var(--clover-deep); }
.news-title{
  color:var(--ink);
  text-decoration:underline;
  text-decoration-color:var(--line);
  text-underline-offset:3px;
  transition:color .2s, text-decoration-color .2s;
}
.news-title:hover,
.news-title:focus-visible{
  color:var(--clover-deep);
  text-decoration-color:var(--clover-deep);
}
.news-empty{ color:var(--ink-soft); font-size:.88rem; margin:0 0 14px; }

/* ---- section heading shared ------------------------------------------- */
.section-head{
  text-align:center;
  max-width:34em;
  margin-inline:auto;
  margin-bottom:clamp(32px,6vw,52px);
}
.section-head h2{
  font-family:'Yomogi',sans-serif;
  font-size:clamp(1.7rem,5vw,2.3rem);
  color:var(--ink);
  margin-bottom:10px;
}
.section-head p{ color:var(--ink-soft); margin:0; font-size:.95rem;}

/* ---- empathy ------------------------------------------------------------ */
.empathy{ padding-block:clamp(48px,8vw,76px); }
.empathy .lede{
  max-width:30em;
  margin:0 auto clamp(28px,5vw,40px);
  text-align:center;
  font-size:1.02rem;
}
.tagrow{
  display:flex;
  flex-wrap:wrap;
  gap:10px 12px;
  justify-content:center;
}
.tag{
  background:var(--paper);
  border:1px solid var(--line);
  color:var(--ink-soft);
  font-size:.86rem;
  padding:8px 16px;
  border-radius:999px;
  white-space:nowrap;
}
.reassure{
  text-align:center;
  margin:clamp(28px,5vw,40px) 0 0;
  font-size:clamp(1.15rem,3.6vw,1.45rem);
  color:var(--clover-deep);
  line-height:1.7;
}

/* ---- concept quote -------------------------------------------------------- */
.concept{
  padding-block:clamp(56px,9vw,92px);
  background:
    radial-gradient(ellipse 60% 70% at 85% 20%, rgba(168,214,220,.35), transparent 70%),
    radial-gradient(ellipse 55% 60% at 10% 85%, rgba(251,231,161,.4), transparent 70%);
}
.concept .wrap{max-width:680px; text-align:center;}
.concept .quote{
  font-family:'Yomogi',sans-serif;
  font-size:clamp(1.8rem,5.6vw,2.7rem);
  color:var(--clover-deep);
  margin-bottom:8px;
}
.concept .squiggle{ display:block; width:min(260px,70%); height:18px; margin:14px auto 22px; }
.concept .sub{
  font-size:1.05rem;
  font-weight:700;
  color:var(--ink);
  margin-bottom:18px;
}
.concept .body{
  max-width:30em;
  margin-inline:auto;
  color:var(--ink-soft);
  font-size:.97rem;
}

/* ---- four leaves ------------------------------------------------------------ */
.leaves{
  padding-block:clamp(48px,8vw,80px);
  background:rgba(79,138,107,.07); /* clover の薄い帯 */
}
.leaf-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:26px 22px;
  max-width:720px;
  margin-inline:auto;
}
.leaf{
  background:var(--paper);
  border:1px solid var(--line);
  padding:26px 24px;
  box-shadow:0 10px 26px -18px rgba(75,59,50,.35);
  transition:transform .25s ease;
}
.leaf:nth-child(1){ border-radius:14px 54px 14px 54px; transform:rotate(-1.6deg); border-top:4px solid var(--clover); }
.leaf:nth-child(2){ border-radius:54px 14px 54px 14px; transform:rotate(1.4deg);  border-top:4px solid var(--coral-deep); }
.leaf:nth-child(3){ border-radius:14px 54px 14px 54px; transform:rotate(1.2deg);  border-top:4px solid var(--sky-deep); }
.leaf:nth-child(4){ border-radius:54px 14px 54px 14px; transform:rotate(-1.4deg); border-top:4px solid var(--blossom-deep); }
.leaf:hover{ transform:rotate(0deg) translateY(-3px); }
.leaf .eyebrow2{
  font-family:'Yomogi',sans-serif;
  font-size:.95rem;
  color:var(--ink-soft);
  display:block;
  margin-bottom:4px;
}
.leaf h3{ font-size:1.12rem; margin-bottom:8px; }
.leaf p{ margin:0; font-size:.88rem; color:var(--ink-soft); }

/* ---- preview: format + teacher ------------------------------------------------ */
.preview{
  padding-block:clamp(48px,8vw,80px);
  background:rgba(168,214,220,.22); /* sky の薄い帯 */
}
.preview .grid{
  display:grid;
  grid-template-columns:1.1fr .9fr;
  gap:28px;
  align-items:stretch;
}
.panel{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:22px;
  padding:28px 26px;
}
.panel h3{ font-size:1.1rem; margin-bottom:14px; }
.meta-list{ list-style:none; margin:0 0 16px; padding:0; display:flex; flex-direction:column; gap:10px; }
.meta-list li{ display:flex; gap:10px; font-size:.9rem; }
.meta-list b{ flex:0 0 5.2em; color:var(--clover-deep); font-weight:700; }
.meta-list span{ color:var(--ink-soft); }
.panel p.note{ font-size:.88rem; color:var(--ink-soft); margin:0 0 14px; }
.link-more{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:.86rem;
  font-weight:700;
  color:var(--clover-deep);
  text-decoration:none;
  border-bottom:1px solid var(--clover-deep);
  padding-bottom:1px;
}

.teacher-card{ display:flex; flex-direction:column; gap:14px; }
.avatar{
  width:72px; height:72px;
  border-radius:46% 54% 58% 42% / 50% 46% 54% 50%;
  background:linear-gradient(135deg,var(--blossom),var(--sky));
  display:flex; align-items:center; justify-content:center;
  color:var(--paper);
}
.avatar img{ width:100%; height:100%; object-fit:cover; border-radius:inherit; }
.avatar svg{ width:30px; height:30px; }
.teacher-card .cap{ font-size:.76rem; color:var(--ink-soft); }

/* ---- contact ---------------------------------------------------------------- */
.contact{
  padding-block:clamp(64px,11vw,108px);
  background:var(--clover);
  color:var(--cream);
}
.contact .wrap{ max-width:620px; text-align:center; }
.contact h2{
  font-family:'Yomogi',sans-serif;
  font-size:clamp(1.7rem,5vw,2.3rem);
  margin-bottom:10px;
}
.contact p{ color:rgba(255,251,242,.86); max-width:28em; margin:0 auto 28px; font-size:.95rem; }
.contact-box{
  display:flex;
  flex-wrap:wrap;
  gap:20px;
  justify-content:center;
  align-items:center;
}
.ig-btn{
  display:inline-flex;
  flex-direction:column;
  align-items:flex-start;
  gap:2px;
  background:var(--coral-deep);
  color:var(--cream);
  text-decoration:none;
  padding:14px 22px;
  border-radius:16px;
  font-weight:700;
  box-shadow:0 10px 22px -10px rgba(0,0,0,.4);
}
.ig-btn small{ font-weight:400; opacity:.85; font-size:.72rem; }
.qr-sticker{
  background:var(--paper);
  border-radius:18px;
  padding:12px;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  transform:rotate(-2deg);
  box-shadow:0 10px 22px -10px rgba(0,0,0,.35);
}
.qr-sticker img{ width:84px; height:84px; border-radius:6px; }
.qr-grid{
  width:84px; height:84px;
  display:grid;
  grid-template-columns:repeat(6,1fr);
  grid-template-rows:repeat(6,1fr);
  gap:2px;
  background:var(--ink);
  padding:6px;
  border-radius:6px;
}
.qr-grid span{ background:var(--paper); border-radius:1px; }
.qr-grid span.on{ background:var(--ink); }
.qr-sticker .cap{ font-size:.7rem; color:var(--ink-soft); text-align:center; line-height:1.4; }

/* ---- footer -------------------------------------------------------------------- */
.site-footer{ padding-block:40px; border-top:1px solid var(--line); }
.site-footer .wrap{
  display:flex;
  flex-wrap:wrap;
  gap:16px;
  align-items:center;
  justify-content:space-between;
}
.footer-brand{ display:flex; align-items:center; gap:8px; }
.footer-brand .name{ font-family:'Yomogi',sans-serif; color:var(--clover-deep); font-size:1.1rem; }
.footer-brand .tagline{ font-size:.76rem; color:var(--ink-soft); }
.site-footer nav ul{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:4px 16px; font-size:.8rem; }
.site-footer nav a{ text-decoration:none; color:var(--ink-soft); }
.site-footer nav a:hover{ color:var(--clover-deep); }

/* ---- generic page (page.php) ---------------------------------------------------- */
.page-content{ padding-block:clamp(56px,9vw,96px); }
.page-content .wrap{ max-width:720px; }
.page-content h1{
  font-family:'Yomogi',sans-serif;
  font-size:clamp(1.9rem,6vw,2.6rem);
  margin-bottom:24px;
}
.page-content .entry{ font-size:.98rem; }
.page-content .entry h2{ font-size:1.25rem; margin:1.6em 0 .6em; color:var(--clover-deep); }
.page-content .entry p{ margin:0 0 1.2em; }

/* ---- responsive ------------------------------------------------------------------ */
@media (max-width:720px){
  .preview .grid{ grid-template-columns:1fr; }
}
@media (max-width:560px){
  .leaf-grid{ grid-template-columns:1fr; }
  .leaf{ transform:none !important; }
  .leaf:hover{ transform:translateY(-2px) !important; }

  .menu-toggle{ display:flex; }
  nav.site-nav{
    display:block;
    position:absolute;
    top:100%; left:0; right:0;
    background:var(--paper);
    border-bottom:1px solid var(--line);
    box-shadow:0 12px 24px -16px rgba(75,59,50,.35);
    max-height:0;
    overflow:hidden;
    opacity:0;
    transition:max-height .3s ease, opacity .25s ease;
  }
  nav.site-nav.is-open{
    max-height:420px;
    opacity:1;
  }
  nav.site-nav ul{
    flex-direction:column;
    gap:0;
    padding:8px 0 12px;
  }
  nav.site-nav a{
    display:block;
    padding:12px 20px;
    border-bottom:1px solid var(--line);
  }
}
