@charset "UTF-8";
.mainVis {
}

.mainVis .slider {
  margin-top: -2.5rem;
}

.mainVis .slider p._kv-txt {
  width:100%;
  position: relative;
  padding: 0 1rem;
  margin-bottom: -1.5rem;
  z-index: 1000;
  text-align: center;
  left: 1rem;
}

.mainVis .slider p._kv-txt img {
  width: 80%;
}

@media screen and (min-width: 960px) {
  .mainVis {
    background-color: transparent;
    position: relative;
  }
  .mainVis .slider {
    margin-top: 0;
    position: static;
    /* 旧：20vw固定。サイドバー幅に連動させる */
    padding-left: var(--fu-sidebar-w);
  }
  .mainVis .slider p._kv-txt {
    left: var(--fu-sidebar-w);
    width: calc(100vw - var(--fu-sidebar-w));
    position: absolute;
    top: -0.1rem;
    text-align: right;
    padding-right: 5%;   /* ← 新規：中央からさらに右へ微調整（比率固定） */
  }
  .mainVis .slider p._kv-txt img {
    width: auto;
    height: 12rem;
  }
}

@media screen and (min-width: 1200px) {
  .mainVis .slider p._kv-txt {
    top: -0.1rem;
    /* left / padding の指定は削除。960px版の設定がそのまま滑らかに拡大される */
  }
  .mainVis .slider p._kv-txt img {
    height: 14rem;
  }
}

@media screen and (min-width: 1500px) {
  .mainVis .slider p._kv-txt {
    top: -0.5rem;
    /* left の指定は削除 */
  }
  .mainVis .slider p._kv-txt img {
    width: auto;
    height: 17em;
  }
}

.policy .box720 {
  padding: 1rem 0;
}

.policy .box720 .policy-text {
  text-align: center;
  background-color: #FFFCE4;
  padding: 2rem;
  /*border: 3px solid #5FB530;*/
  border: solid 7px #a2803e;
  position: relative;
}

.policy .box720 .policy-text:after {
  content: "";
  display: block;
  width: calc(100% - 1rem);
  height: auto;
  /*border: 1px solid #5FB530;*/
  border: 2px solid #214c3b;;
  position: absolute;
  top: .5rem;
  bottom: .5rem;
  left: 0;
  right: 0;
  margin: auto;
}
@media screen and (max-width: 768px){
.policy .box720 .policy-text {
border: solid 4px #a2803e;
}
}

.information {
  margin-top: 1rem;
  border-bottom: 1px dashed #b1b1b1;
}

.information p._tit-txt {
  text-align: center;
  border-bottom: 1px solid #333;
  padding-bottom: .5rem;
  font-size: 1.3em;
}

.information .infoList .post-elm {
  padding: 1rem .5rem;
}

.information .infoList .post-elm:not(:last-child) {
  border-bottom: 1px solid silver;
}

.information .infoList .post-elm .post-cat {
  display: inline-block;
  width: 8rem;
  text-align: center;
  margin-right: 1rem;
}

.information .infoList .post-elm .post-cat.news {
  background-color: #6288C5;
  color: #fff;
}

.information .infoList .post-elm .post-cat.blog {
  background-color: #52B88C;
  color: #fff;
}

.information .infoList .post-elm .post-cat.event {
  background-color: #F7B52C;
  color: #fff;
}

.information .infoList .post-elm .post-time {
  font-family: Times new roman, "游明朝", YuMincho, "ヒラギノ明朝 Pro W3", "HG明朝B", serif;
}

.information .infoList .post-elm .post-title {
  width: 100%;
  margin-top: .5rem;
  font-family: Times new roman, "游明朝", YuMincho, "ヒラギノ明朝 Pro W3", "HG明朝B", serif;
}

.information .btn {
  border: 1px solid #6288C5;
  color: #6288C5;
  display: block;
  width: 7rem;
  padding: .2rem;
  text-align: center;
  margin: 1rem 0 1rem auto;
  -webkit-box-shadow: 2px 2px 5px rgba(168, 168, 168, 0.8);
          box-shadow: 2px 2px 5px rgba(168, 168, 168, 0.8);
}

.information .btn:hover {
  background-color: #6288C5;
  color: #fff;
}

@media screen and (min-width: 960px) {
  .information .infoList {
    padding: 1rem 0 0;
  }
  .information .infoList .post-elm {
    padding: .5rem;
  }
  .information .infoList .post-elm:not(:last-child) {
    border-bottom: 0;
  }
  .information .infoList .post-elm .post-cat,
  .information .infoList .post-elm .post-time {
    vertical-align: top;
  }
  .information .infoList .post-elm .post-time {
    display: inline-block;
    width: 5em;
  }
  .information .infoList .post-elm .post-title {
    display: inline-block;
    width: 61%;
    margin-left: 1rem;
    margin-top: 0;
  }
}

.pickup {
  margin: 2rem 0;
}

.pickup h2 {
  color: #5FB530;
  border: 2px solid #5FB530;
  display: block;
  font-size: 1.2em;
  padding: .3rem 1rem;
  font-weight: bold;
  margin-bottom: 1rem;
}

.pickup .pickupList li {
  margin-bottom: 1rem;
}

.pickup .pickupList li a {
  display: block;
  border: 1px solid #5FB530;
  border-radius: 8px;
  text-align: center;
  padding: .2rem;
  -webkit-box-shadow: 2px 2px 5px rgba(168, 168, 168, 0.8);
          box-shadow: 2px 2px 5px rgba(168, 168, 168, 0.8);
}

.pickup .pickupList li a:hover {
  background-color: #5FB530;
  color: #fff;
}

.pickup .method {
  background-color: #FFFCE4;
  border: 1px solid #F2ABCA;
  border-radius: 8px;
  padding: 1rem;
}

.pickup .method .methodList li {
  margin-bottom: 1rem;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end;
}

.pickup .method .methodList li p {
  background-color: #EA6DA4;
  width: calc(100% - 4rem);
  color: #fff;
  padding: .17rem .5rem;
  margin-right: 1rem;
  position: relative;
}

.pickup .method .methodList li p:after {
  content: "";
  display: block;
  width: 1rem;
  height: 1rem;
  border-left: .8rem solid #EA6DA4;
  border-top: .9rem solid transparent;
  border-bottom: .9rem solid transparent;
  border-right: .8rem solid transparent;
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  right: -1.5rem;
}

.pickup .method .methodList li a {
  width: 2rem;
}

.pickup .method .girl {
  text-align: center;
}

@media screen and (min-width: 960px) {
  .pickup h2 {
    text-align: center;
  }
  .pickup .pickupList-wrapper {
    padding: 0 4rem 1rem;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    border-bottom: 1px solid #333;
  }
  .pickup .pickupList-wrapper .pickupList {
    width: 48%;
  }
  .pickup .method {
    width: 80%;
    margin: 1rem auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
  .pickup .method .methodList {
    width: calc(100% - 13rem);
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
    font-size: .7em;
  }
  .pickup .method .methodList li {
    text-align: right;
  }
  .pickup .method .methodList li p {
    padding: .3rem 1rem;
    width: 16rem;
  }
}

@media screen and (min-width: 1600px) {
  .pickup .method {
    width: 60%;
  }
}

.worries {
  margin-top: 1rem;
}

.worries .box720 {
  background-image: url(../img/index_worry-bg.png);
  background-size: contain;
  background-repeat: no-repeat;
  background-position: right bottom;
}

.worries .box720 .worryList {
  padding: 2rem 0 22rem;
}

.worries .box720 .worryList li {
  padding-left: 1.5rem;
  margin-bottom: 1rem;
  position: relative;
}

.worries .box720 .worryList li span {
  font-size: 1.2em;
  font-weight: bold;
}

.worries .box720 .worryList li:before {
  content: "";
  background-image: url(../img/check-icon.png);
  background-size: contain;
  background-repeat: no-repeat;
  display: block;
  width: 1.5rem;
  height: 1.5rem;
  position: absolute;
  top: .2rem;
  left: 0;
}

@media screen and (min-width: 960px) {
  .worries {
    background-position: right bottom;
  }
  .worries .box720 .worryList {
    padding: 2rem 0 6rem;
  }
  .worries .box720 .worryList li {
    margin-bottom: 2rem;
  }
}

@media screen and (min-width: 1500px) {
  .worries {
    background-position: 90% bottom;
  }
}

.solution {
  margin-top: -3.1em;
}

.solution .bg-green-line {
  background-color: rgba(56, 151, 4, 0.7);
  margin-bottom: 2rem;
}

.solution .solutionList li {
  margin-bottom: 1rem;
}

.solution .solutionList li .before {
  padding-left: 1.3rem;
}

.solution .solutionList li .before:before {
  content: "■";
  margin-left: -1.3rem;
  margin-right: .3rem;
}

.solution .solutionList li .before .red {
  color: #D82617;
}

.solution .solutionList li .after {
  border: 1px solid #333;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  padding-right: .5rem;
  color: #D82617;
  font-weight: bold;
  margin-top: .3rem;
}

.solution .solutionList li .after:before {
  content: "";
  background-color: #000;
  background-image: url(../img/index_solution-list-arrow.png);
  background-size: contain;
  background-repeat: no-repeat;
  display: block;
  width: 1.5rem;
  margin-right: .5rem;
}

.solution .solutionList li .person {
  text-align: right;
}

.solution h3 {
  background-color: #888888;
  border: 1px solid #333;
  text-align: center;
  color: #fff;
  padding: .3rem;
  margin-top: 8rem;
}

.solution h4 {
  border: 1px solid #333;
  padding: .2rem 1rem;
}

.solution table {
  margin: 1rem 0;
  font-size: 1.1em;
}

.solution table th, .solution table td {
  border: 1px solid #333;
  text-align: center;
}

.solution table thead th {
  background-color: #EEEEEF;
}

.solution table .green {
  background-color: #5FB530;
  color: #fff;
}

.solution .middle-table-wrapper {
  margin-bottom: 1rem;
}

.solution .middle-table-wrapper .arrow {
  -webkit-transform: translateX(150%) rotate(90deg);
          transform: translateX(150%) rotate(90deg);
  width: 5rem;
}

.solution .junior-table-wrapper .right {
  margin-bottom: 1rem;
}

.solution .junior-table-wrapper .right .afterTable {
  margin-bottom: 0;
}

.solution .junior-table-wrapper .right .afterTable + p {
  font-size: .5em;
  text-align: right;
}

.solution .junior-table-wrapper .left {
  margin-top: 1rem;
}

.solution .junior-table-wrapper .left p {
  margin-bottom: 1rem;
  text-align: center;
}

.solution .junior-table-wrapper .left p span {
  display: block;
  border: 1px solid #D82617;
  margin-bottom: .5rem;
  padding: .2rem;
  font-size: 3.5vw;
}

@media screen and (min-width: 768px) {
  .solution {
    margin-top: -2.8em;
  }
  .solution .middle-table-wrapper .arrow {
    -webkit-transform: translateX(350%) rotate(90deg);
            transform: translateX(350%) rotate(90deg);
  }
  .solution .junior-table-wrapper .left p span {
    font-weight: bold;
    font-size:18px;
  }
}

@media screen and (min-width: 960px) {
  .solution {
    margin-top: -3.4em;
  }
  .solution .solutionList li {
    font-size: 1.2em;
    margin-bottom: 2rem;
  }
  .solution .solutionList li .after {
    margin-left: 2rem;
  }
  .solution .solutionList li .after:before {
    background-position: center;
    width: 2.5rem;
  }
  .solution h3 {
    font-size: 1.5em;
  }
  .solution h4 {
    text-align: center;
    font-size: 1.2em;
  }
  .solution .middle-table-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    position: relative;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
  }
  .solution .middle-table-wrapper table {
    width: 45%;
  }
  .solution .middle-table-wrapper .arrow {
    width: auto;
    position: absolute;
    bottom: 0;
    left: 43%;
    -webkit-transform: none;
            transform: none;
  }
  .solution .junior-table-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
  }
  .solution .junior-table-wrapper .right {
    width: 45%;
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
  }
  .solution .junior-table-wrapper .left {
    margin-top: 2rem;
  }
}

@media screen and (min-width: 1200px) {
  .solution {
    margin-top: -3.9em;
  }
}

@media screen and (min-width: 1500px) {
  .solution {
    margin-top: -4.4em;
  }
  .solution .solutionList {
    font-size: 1.3em;
  }
  .solution .junior-table-wrapper .left {
    width: 50%;
  }
}

.message {
  margin-top: 4rem;
}

.message ._sub-tit {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  align-items:flex-start;
  font-size: 1.3em;
  margin-top:1rem;
  margin-bottom: 1rem;
  font-weight: bold;
  line-height:1.5;
  color: #D82617;
}

.message ._sub-tit img {
  width: 35%;
}

.message p img {
  padding: 1rem 0;
  width: 100%;
}

.message p span {
  font-weight: bold;
}

.message .magic {
  margin-top: 4rem;
}

.message .magic p.up {
  color: #5FB530;
  font-size: 6.5vw;
  text-align: center;
  font-weight: bold;
  display: block;
}

.message .magic p.bg-green-line {
  line-height: 1.3;
  text-align: left;
}

.message .magic p.bg-green-line + p {
  text-align: right;
  margin-bottom: 1rem;
}

.message .magic .box720 p {
  font-size: 1.3em;
}

.message .magic .box720 p .red {
  display: block;
  color: #D82617;
  font-size: 1.7em;
  font-weight: bold;
}

.message .magic a {
  display: block;
  width: 50%;
  margin: 4rem auto;
  text-align: center;
}

.message .magic a:hover {
  opacity: .7;
}

.message .magic .hat {
  display: none;
}

@media screen and (min-width: 768px) {
  .message ._sub-tit {
    font-size: 2em;
  }
  .message p {
    line-height: 1.8;
    font-size: 1.2em;
  }
}

@media screen and (min-width: 960px) {
  .message ._sub-tit {
    font-size: 2.3em;
	margin-bottom:4rem;
  }
  .message ._sub-tit img {
    width: auto;
    margin-left: 1rem;
  }
  .message p img {
    display: block;
    width: 100%;
  }
  .message .difference img {
    width: 100%;
  }
  .message .magic {
    position: relative;
  }
  .message .magic p.up {
    font-size: 5.5vw;
    text-align: left;
  }
  .message .magic p.bg-green-line {
    text-align: left;
    font-size: 2.8vw;
  }
  .message .magic .box720 p {
    font-size: 1.5em;
  }
  .message .magic .box720 p .red {
    line-height: 1.5;
    font-size: 2em;
  }
  .message .magic .box720 p .red:last-child {
    position: relative;
  }
  .message .magic .box720 p .red:last-child:after {
    content: url(../img/index_magic-hat.png);
    position: absolute;
    top: -3rem;
    left: 27rem;
  }
}

@media screen and (min-width: 1200px) {
  .message .magic p.up {
    font-size: 4.4vw;
  }
}

@media screen and (min-width: 1500px) {
  .message ._sub-tit {
    font-size: 3em;
  }
  .message .magic .box720 p {
    font-size: 1.6em;
  }
}

.movie .box720 {
  padding: 1rem 0;
}

.movie .box720 .youtube {
  width: 100%;
}

.movie .box720 .youtube-inner{
  position: relative;
  text-algin:center;
}

.movie .box720 .youtube-inner iframe{
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
  height: 100%;
}

@media screen and (min-width: 960px) {
  .movie {
    background-image: url(../img/index_movie-bg.png);
    background-size: 40% auto;
    background-repeat: no-repeat;
    background-position: bottom 0% left 10%;
    padding-bottom: 10rem;
  }
  .movie .box720 {
    padding-left: 15rem;
    padding-top:7rem;
    padding-bottom:1rem;
  }
}

@media screen and (min-width: 1200px) {
  .movie .box720 {
    padding-left: 27%;
    padding-bottom:2rem;
  }
}

.voice .bg-green-line {
  background-color: rgba(56, 151, 4, 0.7);
}

.voice .voiceList {
  margin-top: 2rem;
}

.voice .voiceList li {
  border: 1px solid #333;
  padding: .3rem 1rem;
  margin-bottom: 1rem;
  background-color: rgba(255, 255, 255, 0.8);
}

.voice .voiceList li .red {
  color: #D82617;
  font-weight: bold;
}

@media screen and (min-width: 960px) {
  .voice {
    margin-top: -5rem;
  }
  .voice .voiceList {
    margin: 2rem auto 4rem;
  }
  .voice .voiceList li {
    font-size: 1.4em;
  }
}

@media screen and (min-width: 1500px) {
  .voice {
    margin-top: -8rem;
  }
  .voice .voiceList {
    margin: 3rem auto 4rem;
  }
}
/*# sourceMappingURL=index.css.map */



@media screen and (max-width: 767px) {
  .mainVis .slider{
    margin-top:0;
  }
  .swiper-container{
    overflow:inherit!important;
  }
  .mainVis .slider p._kv-txt{
    position:absolute;
    top:-40px;
    left:0;
    text-align:right;
  }
}

/*2021.10.06追加*/
.graph-box {
    margin-bottom: 3em;
}
.graph-box .graph-img-pc{
    display:block;
    width: 100%;
}
.graph-box .graph-img-sp{
    display:none;
}

@media screen and (max-width: 767px){
    .graph-box .graph-img-pc{
        display:none;
    }
     .graph-box .graph-img-sp{
         display:block;
     }
}

._bgcolor-gray{background-color: #DBDCDC;}
._youtube-wrap ._bgcolor-gray {padding: 3rem 0 1rem;}
._youtube-wrap  ._bgcolor-gray p{text-align: right;display: block;  }
@media screen and (min-width: 768px) {
    ._youtube-wrap ._bgcolor-gray ._youtube {
    width: 30rem;
    margin: auto;
  }
  ._youtube-wrap ._bgcolor-gray p {
    position: relative;
    top: -1em;
    right: calc((100% - 37rem) /2);
    font-size: .7em;
  }
}
@media screen and (min-width: 960px) {
  ._youtube-wrap ._bgcolor-gray ._youtube {
    width: 100%;
  }
}
@media screen and (min-width: 1200px) {
  ._youtube-wrap  ._bgcolor-gray p {
    position: relative;
    top: -1.5em;
    right: -4em;
    font-size:  .7em;
  }
}

/* ==========================================================================
   2026.08.03 追加：偏差値ビフォーアフター グラフ（fu-chart）
   ※ 全クラスが .fu-chart- 始まり。上の既存ルールには影響しません
   ========================================================================== */
/* ==========================================================================
   fu-chart-2026.css
   偏差値ビフォーアフター グラフ
   ※ すべて .fu-chart- プレフィックス。既存CSSとは衝突しません。
   ========================================================================== */

.fu-chart-wrapper {
  position: relative;
  width: 100%;
  max-width: 800px;
  margin: 50px auto;
  background: #fff;
  padding: 40px 30px 40px 50px;
  box-shadow: 0 4px 15px rgba(0, 0, 0, .05);
  border-radius: 8px;
  box-sizing: border-box;
  font-family: 'Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', Meiryo, sans-serif;
  color: #333;
  line-height: 1.5;
}
.fu-chart-wrapper *,
.fu-chart-wrapper *::before,
.fu-chart-wrapper *::after { box-sizing: border-box; }

/* --- タイトル --- */
.fu-chart-header {
  display: flex;
  justify-content: center;
  align-items: center;
  margin-bottom: 20px;
  font-weight: bold;
  font-size: 1.2rem;
}
.fu-chart-title-before,
.fu-chart-title-after {
  padding: 8px 20px;
  border-radius: 10px;
  text-align: center;
}
.fu-chart-title-before { background-color: #e0d8d8; }
.fu-chart-title-after  { background-color: #c5e0b4; }

.fu-chart-title-arrow {
  margin: 0 20px;
  color: #65b036;
  font-size: 2rem;
}
.fu-chart-title-arrow,
.fu-chart-title-after {
  opacity: 0;
  transform: translateX(-20px);
  transition: opacity .8s ease, transform .8s ease;
}
.fu-chart-title-arrow.is-fu-animated,
.fu-chart-title-after.is-fu-animated {
  opacity: 1;
  transform: translateX(0);
}

/* --- 目盛りと棒グラフを重ねる箱 ---
   .fu-chart-yaxis の位置を .fu-chart-plot 基準にすることで、
   タイトルの行数やフォント環境が変わっても目盛り線が棒の足元からずれません。 */
.fu-chart-plot {
  position: relative;
  margin: 60px 0 50px;   /* 上余白＝数値ラベルの逃げ場 */
}

/* --- Y軸 --- */
.fu-chart-yaxis {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 100%;
  display: flex;
  flex-direction: column-reverse;
  justify-content: space-between;
  pointer-events: none;
}
.fu-chart-yline {
  width: 100%;
  border-bottom: 1px solid #eaeaea;
  position: relative;
}
.fu-chart-yline:first-child { border-bottom: 2px solid #333; }
.fu-chart-ylabel {
  position: absolute;
  left: -35px;
  bottom: -8px;
  font-size: 12px;
  color: #666;
}

/* --- グラフ本体 --- */
.fu-chart-container {
  position: relative;
  display: flex;
  justify-content: space-around;
  align-items: flex-end;
  height: 300px;
  z-index: 10;
  margin: 0;   /* 余白は .fu-chart-plot が持ちます */
}
.fu-chart-group {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  width: 12%;
  height: 100%;
  position: relative;
}
.fu-chart-bars {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 4px;
  width: 100%;
  height: 100%;
}
.fu-chart-bar {
  width: 45%;
  max-width: 40px;
  border-radius: 4px 4px 0 0;
  position: relative;
}
.fu-chart-bar-before {
  background-color: #999;
  transition: opacity 1s ease-in-out;
}
.fu-chart-bar-before.is-fu-animated { opacity: .4; }

.fu-chart-bar-after {
  background-color: #65b036;
  height: 0;
  transition: height 1.2s cubic-bezier(.2, .8, .2, 1);
}
/* 棒の真上に配置。bottom:100% 基準なので文字を大きくしても崩れません */
.fu-chart-bar-value {
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  margin-bottom: 4px;
  white-space: nowrap;
  font-size: 45px;            /* ← 数値の大きさはここ（PC） */
  line-height: 1;
  font-weight: bold;
  color: #333;
  opacity: 0;
  transition: opacity .5s ease;
}
/* 上位3階級（偏差値60以上）は前後とも赤字で強調 */
.fu-chart-group.is-fu-highlight .fu-chart-bar-value { color: #e60012; }
.fu-chart-bar-before .fu-chart-bar-value { opacity: 1; }
.fu-chart-bar-after.is-fu-animated .fu-chart-bar-value {
  opacity: 1;
  transition-delay: 1s;
}

/* --- X軸ラベル --- */
.fu-chart-xlabel {
  position: absolute;
  bottom: -45px;
  font-size: 13px;
  font-weight: bold;
  color: #333;
  transform: rotate(-35deg);
  transform-origin: top center;
  white-space: nowrap;
}

/* --- 矢印レイヤー --- */
.fu-chart-arrows {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 20;
  overflow: visible;
}
.fu-chart-arrow {
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.fu-chart-arrow-down { stroke: #999;    stroke-width: 4; }
.fu-chart-arrow-up   { stroke: #e60012; stroke-width: 4; }

/* --- 結果テキスト --- */
.fu-chart-result {
  margin-top: 30px;
  text-align: center;
  font-size: 1.2rem;
  font-weight: bold;
  line-height: 1.8;
}
.fu-chart-result-text {
  opacity: 0;
  transform: translateY(15px);
  transition: opacity .8s ease, transform .8s ease;
  margin: 5px 0;
}
.fu-chart-result-text.is-fu-animated {
  opacity: 1;
  transform: translateY(0);
}
.fu-chart-text-down { color: #666; }
.fu-chart-text-up   { color: #e60012; font-size: 1.3rem; }

/* --- スマホ --- */
@media screen and (max-width: 600px) {
  .fu-chart-wrapper { padding: 24px 12px 24px 34px; margin: 30px auto; }
  .fu-chart-header  { font-size: .95rem; }
  .fu-chart-title-before,
  .fu-chart-title-after { padding: 6px 10px; }
  .fu-chart-title-arrow { margin: 0 8px; font-size: 1.4rem; }
  .fu-chart-plot   { margin: 44px 0 46px; }
  .fu-chart-ylabel { left: -24px; font-size: 10px; }
  .fu-chart-container { height: 220px; }
  .fu-chart-bars   { gap: 2px; }
  .fu-chart-bar-value { font-size: 26px; }   /* ← 数値の大きさ（スマホ） */
  .fu-chart-xlabel { font-size: 10px; bottom: -40px; }
  .fu-chart-result { font-size: .95rem; }
  .fu-chart-text-up { font-size: 1.05rem; }
}

/* --- アニメーションを減らす設定のユーザー向け --- */
@media (prefers-reduced-motion: reduce) {
  .fu-chart-wrapper * { transition-duration: .01ms !important; }
}

/* ==========================================================================
   2026-08-28：ビフォー／アフター棒グラフ（fu-graph）
   --------------------------------------------------------------------------
   トップページの2つのグラフ（数学偏差値・内申）を、画像とJS生成から
   PHP出力＋CSSに置き換えたものです。

   ・画像を使いません（3d_top-graph01.jpg / -sp.jpg 約730KB が不要に）
   ・PC用とSP用の出し分けも不要（1つで両対応）
   ・数字の修正は front-page.php のデータ配列だけ

   【動き】
   ・「前」のグラフは最初から完成した状態。動きません
   ・「後」のグラフだけが、画面に入ると棒が伸び、数字が出て、気球が上がる
   ・動かす合図は fu-graph-2026.js（is-fu-shown を付けるだけ）

   【色の考え方】
   目標ライン（偏差値60以上／内申4・5）より下はグレー、上は緑。
   足元の札は下が赤、上が青。画像版の配色をそのまま引き継いでいます。
   ========================================================================== */

/* ---- 見出し（既存の .solution h3 / h4 と同じ見た目） ---- */
.fu-graph-title{
  background-color: #888888;
  border: 1px solid #333;
  text-align: center;
  color: #fff;
  padding: .3rem;
  margin: 15px 0 10px;
  font-size: 1.05em;
  font-weight: 700;
}
.fu-graph-subtitle{
  border: 1px solid #333;
  padding: .2rem 1rem;
  margin: 0 0 1rem;
  font-size: .95em;
  font-weight: 700;
}

/* ---- 表 ---- */
.fu-graph-tables{
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .2rem;
  margin-bottom: 1.6rem;
}
.fu-graph-table{
  border-collapse: collapse;
  width: 100%;
  max-width: 340px;
  margin: 0;
}
.fu-graph-table th,
.fu-graph-table td{
  border: 1px solid #333;
  text-align: center;
  padding: .15rem .4rem;
}
.fu-graph-table thead th{ background-color: #EEEEEF; font-weight: 700; }
.fu-graph-table th.green,
.fu-graph-table thead th.green{ background-color: #5FB530; color: #fff; }

/* 表のあいだの矢印（SPは下向き。PCで右向きに変わります） */
.fu-graph-tablearrow{
  width: 0; height: 0;
  border-left: 14px solid transparent;
  border-right: 14px solid transparent;
  border-top: 16px solid #1F3B99;
  margin: .3rem 0;
}

/* ---- グラフ全体 ---- */
.fu-graph-charts{
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .6rem;
}
/* 気球が上へ出るぶんの逃げ。気球を使う面だけ余白を取ります */
.fu-graph--balloon .fu-graph-charts{ padding-top: 48px; }

.fu-graph-arrow{
  width: 0; height: 0;
  border-left: 18px solid transparent;
  border-right: 18px solid transparent;
  border-top: 22px solid #1F3B99;
  margin: .2rem 0;
}

.fu-graph-chart{
  margin: 0;
  flex: 1 1 0;
  min-width: 0;
  width: 100%;
  position: relative;
  --fu-d: 5px;      /* 3Dの奥行き。PCでは8pxになります */
  --fu-barw: 60%;   /* 棒の太さ（1列に対する割合） */
}

.fu-graph-plot{
  display: flex;
  gap: 4px;
  height: 210px;
  position: relative;
  padding-top: 22px;
}
.fu-graph-unit{ position: absolute; top: 2px; left: 0; font-size: 11px; color: #666; }
.fu-graph-yaxis{
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-end;
  width: 20px;
  font-size: 10px;
  color: #666;
  line-height: 1;
  flex: 0 0 auto;
}
.fu-graph-area{
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  border-left: 1px solid #999;
  border-bottom: 1px solid #999;
}
.fu-graph-grid{
  position: absolute; inset: 0;
  display: flex; flex-direction: column; justify-content: space-between;
}
.fu-graph-grid i{ display: block; height: 1px; background: #EDEFEA; }
.fu-graph-cols{ position: absolute; inset: 0; display: flex; align-items: flex-end; }
.fu-graph-col{
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 100%;
  justify-content: flex-end;
}
.fu-graph-track{
  position: relative;
  width: 100%;
  flex: 1 1 auto;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

/* 棒の上に出る人数。棒の高さ＋3Dの奥行きぶん上に置きます */
.fu-graph-val{
  position: absolute;
  left: 0; right: 0;
  text-align: center;
  font-size: 10px;
  font-weight: 700;
  color: #333;
  white-space: nowrap;
  opacity: 0;
  transition: opacity .35s .9s;
  bottom: calc(var(--fu-h) + var(--fu-d) + 3px);
}
.fu-graph-val i{ font-style: normal; font-size: .85em; font-weight: 500; }

/* ---- 棒（3D風） ---- */
.fu-graph-bar{
  width: var(--fu-barw);
  height: 0;
  position: relative;
  transition: height 1.1s cubic-bezier(.22,.9,.3,1);
  background: linear-gradient(90deg,#8A9096,#A6ACB2 55%,#7C8288);
}
.fu-graph-col.is-fu-hi .fu-graph-bar{
  background: linear-gradient(90deg,#54A82B,#78C94F 55%,#4E9E27);
}
/* 上面と側面を skew で作ります。奥行きは --fu-d 1つで管理 */
.fu-graph-bar::before{
  content: "";
  position: absolute;
  left: 0;
  top: calc(var(--fu-d) * -1);
  width: 100%;
  height: var(--fu-d);
  background: #B9BFC5;
  transform: skewX(-45deg);
  transform-origin: bottom left;
}
.fu-graph-bar::after{
  content: "";
  position: absolute;
  right: calc(var(--fu-d) * -1);
  top: 0;
  width: var(--fu-d);
  height: 100%;
  background: #6E747A;
  transform: skewY(-45deg);
  transform-origin: top left;
}
.fu-graph-col.is-fu-hi .fu-graph-bar::before{ background: #8BD463; }
.fu-graph-col.is-fu-hi .fu-graph-bar::after{ background: #3F8420; }

/* ---- 動き ----
   「前」は最初から完成した状態。動くのは「後」だけです。
   比較の基準が先に立っていて、そこから伸びるほうが変化として読めます。 */
.fu-graph-chart--before .fu-graph-bar{ height: var(--fu-h); transition: none; }
.fu-graph-chart--before .fu-graph-val{ opacity: 1; transition: none; }
.fu-graph-chart--before .fu-graph-badge{ transform: none; opacity: 1; transition: none; }

.fu-graph-chart--after.is-fu-shown .fu-graph-bar{ height: var(--fu-h); }
.fu-graph-chart--after.is-fu-shown .fu-graph-val{ opacity: 1; }

/* ---- 階級の札 ---- */
.fu-graph-xlab{
  font-size: 10px;
  font-weight: 700;
  color: #fff;
  background: #D82617;
  border-radius: 3px;
  margin-top: 3px;
  line-height: 1.5;
  white-space: nowrap;
  text-align: center;
}
.fu-graph-col.is-fu-hi .fu-graph-xlab{ background: #1F3B99; }
/* 偏差値グラフ：階級名が長いので横いっぱいの札に */
.fu-graph--pill .fu-graph-xlab{ width: 100%; padding: 1px 0; }
/* 内申グラフ：1〜5の数字なので正方形の札に（画像版と同じ） */
.fu-graph--square .fu-graph-xlab{
  width: 22px; height: 22px; line-height: 22px;
  border-radius: 3px; font-size: 13px;
}

/* ---- 気球 ----
   下からふわりと上がってきて、4と5の棒の中間の上で止まります。
   止まったあとも静かに揺れ続けます（気球が固定されていると不自然なため）。
   横位置を % にしてあるので、画面幅が変わっても棒との位置関係を保ちます。 */
.fu-graph-badge{
  position: absolute;
  z-index: 3;
}
.fu-graph-badge--balloon{
  top: -46px;
  right: 7%;
  width: 86px;
  transform-origin: bottom center;
  transform: translateY(150px);
  opacity: 0;
  transition: transform 1.8s .5s cubic-bezier(.22,.72,.28,1), opacity .6s .5s;
}
.fu-graph-chart--after.is-fu-shown .fu-graph-badge--balloon{
  transform: translateY(0);
  opacity: 1;
  animation: fu-graph-float 4.5s ease-in-out 2.4s infinite;
}
@keyframes fu-graph-float{
  0%, 100% { transform: translateY(0)    rotate(0deg); }
  50%      { transform: translateY(-7px) rotate(-1.2deg); }
}
.fu-graph-balloon{
  display: block;
  width: 100%;
  height: auto;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,.18));
}

/* ============================================================
   丸バッジ
   ・偏差値グラフで使っています
   ・内申グラフを気球ではなく円にしたい場合は、front-page.php の
     'badge' => 'balloon' を 'circle' に変えるだけです。
     そのときは .fu-graph--balloon の padding-top（気球の逃げ）が
     効かなくなりますが、円は上にはみ出さないので問題ありません
   ============================================================ */
.fu-graph-badge--circle{
  top: -6px;
  right: 0;
  width: 88px;
  height: 88px;
  border-radius: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: #fff;
  line-height: 1.1;
  text-align: center;
  box-shadow: 0 2px 6px rgba(0,0,0,.18);
  transform: scale(.4);
  opacity: 0;
  transition: transform .55s 1.5s cubic-bezier(.2,1.4,.4,1), opacity .4s 1.5s;
}
.fu-graph-chart--after.is-fu-shown .fu-graph-badge--circle{ transform: scale(1); opacity: 1; }
.fu-graph-chart--before .fu-graph-badge--circle{
  background: #C08A2E;
  background-image: radial-gradient(circle at 34% 28%, rgba(255,255,255,.35), rgba(255,255,255,0) 60%);
}
.fu-graph-chart--after .fu-graph-badge--circle{
  background: #5FB530;
  background-image: radial-gradient(circle at 34% 28%, rgba(255,255,255,.35), rgba(255,255,255,0) 60%);
}
.fu-graph-badge--circle .fu-graph-badge-t{ font-size: 9.5px; font-weight: 700; }
.fu-graph-badge--circle strong{ font-size: 26px; font-weight: 900; letter-spacing: -.02em; }
.fu-graph-badge--circle strong i{ font-style: normal; font-size: 13px; font-weight: 700; margin-left: 1px; }
.fu-graph-badge--circle .fu-graph-badge-n{ font-size: 9.5px; font-weight: 500; opacity: .92; }

/* ---- キャプション ---- */
.fu-graph-chart figcaption{
  margin-top: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}
.fu-graph-captext{ text-align: center; }
.fu-graph-pill{
  display: inline-block;
  color: #fff;
  font-weight: 700;
  border-radius: 4px;
  padding: .15rem 1.4rem;
  font-size: .95em;
}
.fu-graph-chart--before .fu-graph-pill{ background: #C08A2E; }
.fu-graph-chart--after  .fu-graph-pill{ background: #5FB530; }
.fu-graph-cap{ display: block; font-weight: 700; margin-top: .25rem; font-size: .95em; }

/* ---- 吹き出し（入試で使用する） ---- */
.fu-graph-bubble{
  position: relative;
  flex: 0 0 auto;
  width: 62px;
  height: 62px;
  border-radius: 50%;
  background: #1F3B99;
  color: #fff;
  font-size: 10.5px;
  font-weight: 700;
  line-height: 1.25;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}
.fu-graph-bubble::after{
  content: "";
  position: absolute;
  right: -6px;
  top: 52%;
  width: 0; height: 0;
  border-top: 6px solid transparent;
  border-bottom: 6px solid transparent;
  border-left: 10px solid #1F3B99;
}

/* ---- 結果テキスト ----
   幅を固定していないので、文字がはみ出しません。
   （旧版は幅の指定があり、2文字はみ出していました） */
.fu-graph-result{
  margin-top: 1.4rem;
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.fu-graph-result p{
  margin: 0;
  border: 1px solid #333;
  border-radius: 4px;
  padding: .4rem .7rem;
  font-size: .95em;
  font-weight: 700;
  background: #fff;
}
.fu-graph-down{ color: #666; }
.fu-graph-up{ color: #D82617; }

/* ==========================================================================
   PC（768px〜）：表とグラフを左右に並べ、矢印を横向きに
   ========================================================================== */
@media screen and (min-width: 768px){
  .fu-graph-tables{ flex-direction: row; align-items: stretch; justify-content: center; gap: 1rem; }
  .fu-graph-table{ max-width: 300px; }
  .fu-graph-tablearrow{
    align-self: center;
    border: 0;
    width: 0; height: 0;
    border-top: 14px solid transparent;
    border-bottom: 14px solid transparent;
    border-left: 18px solid #1F3B99;
    margin: 0;
  }
  .fu-graph-charts{ flex-direction: row; align-items: center; gap: 1rem; }
  .fu-graph--balloon .fu-graph-charts{ padding-top: 62px; }
  .fu-graph-arrow{
    flex: 0 0 auto;
    border: 0;
    width: 0; height: 0;
    border-top: 18px solid transparent;
    border-bottom: 18px solid transparent;
    border-left: 24px solid #1F3B99;
    margin: 0 0 2rem;
  }
  .fu-graph-chart{ --fu-d: 8px; --fu-barw: 56%; }
  .fu-graph-plot{ height: 250px; }
  .fu-graph-yaxis{ width: 24px; font-size: 11px; }
  .fu-graph-val{ font-size: 11px; }
  .fu-graph-xlab{ font-size: 11px; }
  .fu-graph--square .fu-graph-xlab{ font-size: 13px; }
  .fu-graph-badge--circle{ width: 104px; height: 104px; top: -10px; }
  .fu-graph-badge--circle strong{ font-size: 31px; }
  .fu-graph-badge--balloon{ width: 104px; top: -60px; right: 7%; }
  .fu-graph-result{ flex-direction: row; }
  .fu-graph-result p{ flex: 1 1 0; }
}

/* 動きを減らす設定の端末では、揺れも浮上も止めて完成形を出します */
@media (prefers-reduced-motion: reduce){
  .fu-graph-bar,
  .fu-graph-val,
  .fu-graph-badge{ transition: none !important; }
  .fu-graph-badge--balloon{ transform: none; opacity: 1; }
  .fu-graph-chart--after.is-fu-shown .fu-graph-badge--balloon{ transform: none; animation: none; }
}

/* ==========================================================================
   2026-08-29：日本語の折り返し（見出しの「1文字だけ残る」対策）
   --------------------------------------------------------------------------
   【なぜ clamp では直らないか】
   clamp() が決めるのは文字の大きさだけです。どこで折り返すかは
   「文字数 × 文字サイズ ÷ 箱の幅」で決まるため、少し小さくしても
   幅が変われば別の場所でまた1文字余ります。
   下限に張り付いたあとは、そもそも縮みません。

   【この2行がやること】
   text-wrap: balance
     各行がだいたい同じ長さになるよう、折り返し位置を選び直します。
     行数は変わりませんが、最後に1文字だけ残るのがなくなります。
     Chrome 130+／Safari 17.5+／Firefox 121+

   word-break: auto-phrase
     日本語を単語ではなく文節で切ります。
     「小山台を目指す塾な／ら」ではなく「小山台を目指す／塾なら」。
     Chrome 119+／Edge 119+。SafariとFirefoxは未対応ですが、
     対応していないブラウザは無視するだけなので壊れません。

   【付ける範囲】
   見出し・帯・キャプションなど短い文だけ。本文の段落には付けません。
   長い文章に balance を使うと、かえって行がガタつきます。

   【うまくいかない1行が出たら】
   auto-phrase は機械学習で文節を判定するので、まれに意図しない位置で
   切れます。その1行だけ <wbr> で切ってよい位置を指定できます。
   ========================================================================== */

.fu-graph-title,
.fu-graph-subtitle,
.fu-graph-cap,
.fu-graph-pill,
.fu-graph-bubble,
.fu-graph-result p,
.fu-graph-table th,
.solution h3,
.solution h4,
.solution .bg-green-line,
.solution .solutionList li .after,
.solution .junior-table-wrapper .left p span {
  text-wrap: balance;
  word-break: auto-phrase;
}
