Newer
Older
newweb / jdmain.css
/*
 * jdmain.css — Junior-Doctor Chokai Academy 全ページ共通スタイル
 * ================================================================
 *
 * 【テーマカラーの変更方法】
 *   下の :root {} 内の変数を編集するだけでサイト全体に反映されます。
 *   個別の色指定はこのファイル内に一切ありません。
 *
 * 【このファイルの構成】
 *    1. CSS変数(テーマカラー・サイズ等)
 *    2. リセット・基本設定
 *    3. ヘッダー
 *    4. 共通レイアウト(wrapper / section-title 等)
 *    5. メインビジュアル
 *    6. ボタン類
 *    7. home-about
 *    8. home-notice(お知らせ)
 *    9. home-class_content(活動カード一覧)
 *   10. home-QA / FAQ アコーディオン
 *   11. home-info(アクセス・概要)
 *   12. about
 *   13. 活動掲載ページ(#active / main.activity / aside#sidebar)
 *   14. apply(注意ボックス)
 *   15. class-content(授業内容)
 *   16. テーブル共通
 *   17. Zoom向け表示
 *   18. main.disp
 *   19. フッター
 *   20. ハンバーガーメニュー(≤1024px)
 *   21. スマートフォン対応(≤746px)
 *   22. ユーティリティ
 * ================================================================
 */


/* ================================================================
   1. CSS変数
   ================================================================ */
:root {
  /* ─── テーマカラー(ここだけ変えれば全体に反映)─── */
  --color-school: #2e7d32;
  /* 学校カラー:深緑 */
  --color-school-light: #66bb6a;
  /* 学校カラー:明るい緑(ホバー等) */
  --color-school-pale: #e8f5e9;
  /* 学校カラー:淡い緑(背景・縞等) */

  --color-foundation: #1565c0;
  /* 財団カラー:深青 */
  --color-foundation-light: #42a5f5;
  /* 財団カラー:明るい青 */
  --color-foundation-pale: #e3f2fd;
  /* 財団カラー:淡い青(背景等) */

  --color-accent: #f57c00;
  /* アクセント(CTAボタン・注意ボックス) */
  --color-alert: #c62828;
  /* 警告・強調 */
  --color-new: #c62828;
  /* NEWバッジ */

  /* ─── テキスト ─── */
  --color-text: #1a1a2e;
  --color-text-light: #555;
  --color-text-white: #fff;
  --color-link: var(--color-foundation);

  /* ─── 背景 ─── */
  --color-bg: #f0f7f0;
  --color-bg-white: #fff;
  --color-bg-header: rgba(255, 255, 255, .92);

  /* ─── ボーダー・シャドウ ─── */
  --color-border: #b0bec5;
  --shadow-card: 0 2px 12px rgba(0, 0, 0, .09);
  --shadow-hover: 0 6px 24px rgba(0, 0, 0, .14);

  /* ─── レイアウト ─── */
  --max-width: 1150px;
  --header-height: 70px;

  /* ─── 角丸 ─── */
  --radius-sm: 6px;
  --radius-md: 12px;
  --radius-lg: 20px;
}


/* ================================================================
   2. リセット・基本設定
   ================================================================ */
html,
body,
div,
section,
article,
p,
a,
img,
figure,
h1,
h2,
h3,
h4,
dl,
dt,
dd {
  margin: 0;
  padding: 0;
}

html {
  font-size: 100%;
  scroll-behavior: smooth;
}

body {
  font-family: 'Noto Sans JP', sans-serif;
  color: var(--color-text);
  line-height: 1.7;
  background-color: var(--color-bg);
}

img {
  max-width: 100%;
}

dt {
  font-weight: bold;
}

dd {
  margin-left: 1.5em;
}

.erase-line {
  text-decoration: line-through;
}

div.scrollbox {
  height: 6em;
  overflow: auto;
  background: var(--color-school-pale);
}


/* ================================================================
   3. ヘッダー
   ================================================================ */
.header {
  width: 100vw;
  z-index: 99;
  position: fixed;
  top: 0;
  padding-top: 10px;
  padding-bottom: 10px;
  transition: background .4s, box-shadow .4s, padding .3s;
}

#hamburger-menu {
  opacity: 0;
  position: fixed;
}

.header-nav {
  max-width: 1400px;
  margin: 0 auto;
  padding: 0 5%;

  & .sp-logo {
    display: none;
  }

  & nav ul {
    display: flex;
    justify-content: space-around;
    align-items: center;
    font-size: 1rem;

    & li {
      list-style: none;
      border-left: var(--color-border) 2px dotted;
      border-right: var(--color-border) 2px dotted;

      &:last-child {
        margin-right: 50px;
      }

      &.bd-no {
        border: none;
      }

      & a {
        text-decoration: none;
        color: var(--color-text);
        transition: .3s;
        display: block;

        &:hover {
          border-bottom: var(--color-school) 3px dotted;
        }

        &.bd-none:hover {
          border-bottom: none;
        }
      }
    }
  }
}

.apply-menu {
  color: var(--color-accent);
}

.top-logo {
  width: 65px;
  height: 65px;
  object-fit: cover;
}

header.scroll-nav {
  background: var(--color-bg-header);
  box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .1);
  padding-top: 0;
  padding-bottom: 0;
}

label .buns .patty-name {
  display: none;
}


/* ================================================================
   4. 共通レイアウト
   ================================================================ */
.wrapper {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 30px 5% 80px;
}

/*
 * .section-title(h2)— 全ページ共通
 * 学校カラー(緑)で統一。グラデーション下線(緑→青)付き。
 * 画像ファイル(yellow-green.png 等)への依存を廃止。
 */
.section-title {
  font-size: 2.1rem;
  text-align: center;
  position: relative;
  width: 100%;
  margin-top: 30px;
  margin-bottom: 20px;
  color: var(--color-school);
  letter-spacing: .04em;

  &::before {
    content: none;
  }

  &::after {
    content: '';
    display: block;
    width: 80px;
    height: 4px;
    margin: 10px auto 0;
    border-radius: 2px;
    background: linear-gradient(to right, var(--color-school), var(--color-foundation));
  }
}

.section-text {
  text-align: center;
  font-size: 1.3rem;
  padding: 10px 0 30px;
  max-width: 800px;
  margin: 0 auto;
  line-height: 1.7;
  color: var(--color-text-light);
}


/* ================================================================
   5. メインビジュアル
   ================================================================ */
#mainvisual {
  height: 660px;
  position: relative;
  width: 100%;

  & .top-text {
    position: absolute;
    z-index: 10;
    top: 85px;
    left: 6%;
    overflow: hidden;

    & .text {
      font-size: 1.8rem;
      font-weight: bold;
      margin-bottom: 10px;
      color: var(--color-text-white);
      line-height: 4rem;
      -ms-writing-mode: tb-rl;
      writing-mode: vertical-rl;
      text-shadow: 0 4px 6px #000;
    }
  }

  & .top-title {
    position: absolute;
    z-index: 10;
    bottom: 30%;
    right: 30%;
    overflow: hidden;

    & .site-title {
      font-size: 3.1rem;
      font-weight: bold;
      color: var(--color-text-white);
      text-shadow: 0 4px 6px #000;
      text-align: center;

      & .small {
        font-size: 1.6rem;
        color: var(--color-school-light);
        text-shadow: 0 4px 6px #000;
        font-weight: bold;
        text-align: center;
      }
    }
  }

  & .fade li {
    max-width: 100%;
    position: absolute;
    top: 0;
    right: 0;
    opacity: 0;
    animation: fade 25s infinite;
    list-style: none;

    &:nth-child(1) {
      animation-delay: 0s;
    }

    &:nth-child(2) {
      animation-delay: 5s;
    }

    &:nth-child(3) {
      animation-delay: 10s;
    }

    &:nth-child(4) {
      animation-delay: 15s;
    }

    &:nth-child(5) {
      animation-delay: 20s;
    }

    & img {
      width: 1500px;
      height: 610px;
      object-fit: cover;
      border-radius: 1%;
    }

    &::after {
      content: "";
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      box-shadow: inset 0 0 10px 10px #fff;
    }
  }

  @media screen and (max-width: 746px) {
    & .top-text .text {
      font-size: 1.4rem;
      line-height: 2.5rem;
      text-shadow: 0 3px 5px #000;
    }
  }

  @media screen and (max-width: 499px) {
    height: 460px;

    & .fade li img {
      width: 100%;
      height: 450px;
    }
  }
}

.mainvisual-inner {
  margin-top: 110px;
  max-width: 100%;
}

.mainvisual-img {
  position: relative;
  max-width: 100%;

  & .top-title {
    position: absolute;
    top: 270px;
    right: 30%;
    z-index: 10;
    font-size: 2.8rem;
  }
}

@keyframes fade {
  0% {
    opacity: 0;
  }

  15% {
    opacity: 1;
  }

  25% {
    opacity: 1;
  }

  35% {
    opacity: 0;
  }

  100% {
    opacity: 0;
  }
}


/* ================================================================
   6. ボタン類
   ================================================================ */
.top-text-color {
  color: var(--color-school-light);
}

.top-text-call {
  color: var(--color-accent);
  letter-spacing: 7px;
}

.HomeToApply {
  position: relative;
  margin: 3% 28%;
  color: var(--color-text-white);
  border: 2px solid var(--color-accent);
  background-color: var(--color-accent);
  font-weight: bold;
  font-size: 20px;
  text-align: center;
  padding: 10px;

  &::before {
    position: absolute;
    top: -7px;
    left: -7px;
    width: 100%;
    height: 100%;
    border: 3px solid var(--color-text-white);
    content: '';
    pointer-events: none;
  }
}

.HomeToApplyColor {
  color: #ffe082;
}

.HomeToQA {
  position: relative;
  margin: 3% 28%;
  color: var(--color-text);
  border: 2px solid var(--color-foundation-light);
  background-color: var(--color-foundation-pale);
  font-weight: bold;
  font-size: 20px;
  text-align: center;
  padding: 10px;

  &::before {
    position: absolute;
    top: -7px;
    left: -7px;
    width: 100%;
    height: 100%;
    border: 3px solid var(--color-foundation);
    content: '';
    pointer-events: none;
  }
}

.HomeToQAColor {
  color: var(--color-foundation);
}


/* ================================================================
   7. home-about
   ================================================================ */
#home-about {
  & .scroll {
    opacity: 0;
  }

  & .show {
    opacity: 1;
    transition: 1s;
    transform: translateY(-50px);
  }

  & .home-items {
    & h3 {
      font-size: 1.4rem;
    }

    & p {
      font-size: 1.2rem;
      line-height: 2.0;
    }
  }

  @media screen and (max-width: 746px) {
    & h2 {
      font-size: 1.3rem;
    }

    & .home-items img {
      width: 200px;
      height: 150px;
    }

    & .home-items h3 {
      font-size: 1rem;
    }

    & .home-items p {
      font-size: .8rem;
      line-height: 1.85;
    }
  }
}

.home-items {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: space-evenly;
  align-items: center;
  margin-top: 30px;
  opacity: 0;

  &.show {
    opacity: 1;
    transition: 1s;
    transform: translateY(-50px);
  }

  & img {
    width: 300px;
    height: 216px;
  }

  & .what_study {
    @media screen and (max-width: 1024px) {
      order: 1;
    }
  }
}

.what_study {
  width: 730px;
  margin-bottom: 10px;

  & h3 {
    padding-bottom: 2px;
    font-size: 1.3rem;
    margin-bottom: 5px;
  }

  & p {
    font-size: 1.2rem;
    line-height: 2.0;
  }

  @media screen and (max-width: 746px) {
    margin-bottom: 0;
  }
}

.aiming_top {
  width: 730px;
  margin-top: 50px;

  & h3 {
    padding-bottom: 2px;
    font-size: 1.3rem;
    margin-bottom: 5px;
  }

  & p {
    font-size: 1.2rem;
    line-height: 2.0;
  }

  @media screen and (max-width: 746px) {
    max-width: 600px;
  }
}

em.see {
  font-style: normal;
  font-weight: bold;
  background: linear-gradient(to top, #ffe082, transparent);
}

.text-bg {
  background: linear-gradient(transparent 50%, var(--color-school-pale) 50%);
}

.home-about-title {
  @media screen and (max-width: 746px) {
    margin-top: 90px;
  }
}

.umi-img {
  @media screen and (max-width: 746px) {
    margin-top: 35px;
    margin-bottom: 35px;
  }
}


/* ================================================================
   8. home-notice(お知らせ)
   ================================================================ */
.notice {
  & li {
    border-bottom: 1px dotted var(--color-border);
    list-style: none;
    padding: 10px;
    width: 800px;
    margin: 0 auto;

    & a {
      color: var(--color-text);
      text-decoration: none;

      & .news-title {
        background-color: var(--color-foundation);
        border-radius: var(--radius-sm);
        color: var(--color-text-white);
        display: inline-block;
        margin-right: 20px;
        padding: 5px;
      }

      & time {
        display: inline-block;
        font-weight: bold;
        margin-right: 40px;
      }

      & p {
        color: var(--color-foundation);
        display: inline-block;
        text-decoration: underline;
      }

      & .erase-line {
        text-decoration: line-through;
      }

      & .erase-line-comment {
        margin-left: 10px;
      }
    }

    @media screen and (max-width: 746px) {
      padding: 5px;
      width: auto;

      & a span {
        margin-right: 20px;
        padding: 4px;
        font-size: .8rem;
      }

      & a time {
        display: block;
        font-size: .8rem;
      }

      & a p {
        display: block;
        font-size: .8rem;
      }
    }
  }
}

.new::after {
  content: "NEW";
  color: var(--color-new);
  font-size: 1.1rem;
  border: 1px solid var(--color-new);
  padding: 4px 8px;
  margin: 0 0 0 20px;
  display: inline-block;
  line-height: 1;

  @media screen and (max-width: 746px) {
    font-size: .8rem;
    padding: 3px 7px;
  }
}

.home-notice-title {
  margin-top: 0;
}


/* ================================================================
   9. home-class_content(活動カード一覧)
   ================================================================ */
#home-class_content {
  padding: 50px 16px;
  margin: -50px auto 10px;

  & .scroll {
    opacity: 0;
  }

  & .show,
  & .grid .show {
    opacity: 1;
    transition: 1s;
    transform: translateY(-50px);
  }

  & .grid {
    display: grid;
    gap: 26px;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));

    & .class_content-item {
      text-decoration: none;
      color: var(--color-text);
    }

    & .item {
      transition: all .3s ease;
      box-shadow: var(--shadow-card);
      border-radius: var(--radius-lg);
      background: var(--color-bg-white);
    }

    & img {
      vertical-align: top;
      height: 300px;
      width: 100%;
      object-fit: cover;
      border-radius: var(--radius-lg) var(--radius-lg) 0 0;
    }

    & .item-content {
      padding: 30px;
    }

    & .item-cat {
      font-size: 1.0rem;
      margin-bottom: 20px;
      color: var(--color-foundation);
    }

    & .item-text {
      font-weight: bold;
      margin-bottom: 20px;
      font-size: 1.1rem;
    }

    & .item-date {
      font-size: .85rem;
      text-align: right;
      color: var(--color-text-light);
    }
  }
}

.class_content-item>.item:hover {
  opacity: .7;
}

.home-class_content-btn {
  text-align: center;
  margin-top: 30px;

  & a {
    border-bottom: 5px solid var(--color-school);
    text-decoration: none;
    color: var(--color-text-white);
    border-radius: 100vh;
    background-color: var(--color-school);
    padding: 10px 30px;
    transition: .3s;
    font-size: 1.4rem;

    &:hover {
      margin-top: 3px;
      border-bottom: 2px solid var(--color-school);
      background-color: var(--color-school-light);
    }
  }
}

.fa-position-right {
  position: absolute;
  top: calc(50% - .5em);
  right: 1rem;
}


/* ================================================================
   10. home-QA / FAQ アコーディオン
   ================================================================ */
@keyframes slidein {
  0% {
    opacity: 0;
    transform: translateY(-5px);
  }

  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

#home-qa {
  margin: 0 auto;
  padding-bottom: 40px;

  & .scroll {
    opacity: 0;
  }

  & .show {
    opacity: 1;
    transition: 1s;
    transform: translateY(-50px);
  }
}

.qa_list {
  position: relative;
  margin: 20px 20px 30px;
  border: dashed var(--color-border);
  border-width: 0 0 2px 0;
  color: var(--color-text);

  &:hover {
    color: var(--color-school);
  }

  & .plus {
    position: relative;
    display: inline-flex;
    font-size: 25px;
    padding: 5px;
    transition: .3s;
  }

  & input[type="checkbox"]:checked~.plus {
    transform: rotate(45deg);
  }

  & label {
    position: absolute;
    top: 3px;
    left: 30px;
    padding: 5px;
    font-size: 23px;
    cursor: pointer;

    @media screen and (max-width: 746px) {
      font-size: 17.5px;
      z-index: 1;
    }
  }

  & .ans {
    position: relative;
    max-height: 0;
    overflow: hidden;
    color: var(--color-text);
    margin: 5px;
    transition: max-height .4s ease;

    & span {
      font-size: 25px;

      @media screen and (max-width: 746px) {
        font-size: 19px;
      }
    }

    @media screen and (max-width: 746px) {
      margin-top: 10px;
      font-size: 17.5px;
    }
  }

  & input[type="checkbox"]:checked~div.ans {
    max-height: 300px;
    animation: slidein .5s;
    transition: max-height .6s ease;
  }

  & input {
    display: none;
  }
}

h2.faq-section {
  text-align: center;
  margin: 3rem 0;
  width: 100%;
}

div.faq-list {
  width: 100%;

  & dl {
    position: relative;
    left: 50%;
    transform: translateX(-50%);
    width: 70%;
    padding: 15px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    background-color: var(--color-bg-white);
    margin-bottom: 2rem;
    border-radius: var(--radius-md);
    border-left: 4px solid var(--color-school);
    transition: box-shadow .2s;
    cursor: default;

    &:hover {
      box-shadow: var(--shadow-card);
      cursor: pointer;
    }

    &.act {
      background-color: var(--color-school-pale);
    }

    & dt {
      width: 100%;
      font-size: 1rem;
      padding: 15px;

      &::before {
        padding: 0 1rem 1rem;
        font-size: 1.5rem;
        color: var(--color-school);
        content: "Q";
      }

      &::after {
        font-size: 1.5rem;
        float: right;
        transition: .3s;
        content: "+";
      }

      &.question {
        color: var(--color-school);
        font-weight: bold;

        &::after {
          transform: rotate(-45deg);
        }
      }
    }

    & dd {
      width: 100%;
      max-height: 0px;
      overflow: hidden;
      transition: max-height .4s ease;

      &::before {
        padding: 0 1rem 1rem;
        font-size: 1.5rem;
        color: var(--color-foundation);
        content: "A";
      }

      &.faq-show {
        max-height: 300px;
        transition: max-height .8s ease;
      }
    }

    @media screen and (max-width: 1024px) {
      width: 85%;

      & dd,
      & dt {
        width: 100%;
        font-size: 1rem;
      }

      & dt::after,
      & dd::before,
      & dt::before {
        font-size: 1.2rem;
      }
    }
  }
}


/* ================================================================
   11. home-info(アクセス・概要)
   ================================================================ */
#home-info {
  background-color: var(--color-bg-white);
  padding: 60px;
  margin-bottom: 60px;
  margin-top: 60px;

  & .scroll {
    opacity: 0;
  }

  & .show {
    opacity: 1;
    transition: 1s;
    transform: translateY(-50px);
  }

  & img {
    object-fit: cover;
    width: 100%;
    height: 450px;
  }

  @media screen and (max-width: 746px) {
    padding: 0 20px 20px;

    & img {
      height: 200px;
    }
  }
}

figure {
  & .scroll {
    opacity: 0;
  }

  & .show {
    opacity: 1;
    transition: 1s;
    transform: translateY(-50px);
  }
}

.home-info-items {
  display: flex;
  justify-content: space-evenly;
  align-items: center;
}

.home-info-address_title {
  font-size: 1.8rem;
  color: var(--color-school);

  @media screen and (max-width: 746px) {
    font-size: 1em;
  }
}

.info-item {
  display: flex;
  justify-content: space-evenly;
  align-items: center;
  padding-top: 70px;

  @media screen and (max-width: 746px) {
    flex-direction: column;
    margin: 0 auto;
  }

  @media screen and (max-width: 1024px) {
    flex-direction: column;
    margin: 0 auto;
  }
}

.info-text .info-small {
  font-size: .9rem;
}

.info-address {
  font-size: 15px;
  text-align: justify;
  box-sizing: border-box;
  letter-spacing: .15em;
  white-space: nowrap;
  line-height: 1.9;
  display: inline-block;
  padding-bottom: 10px;
}

.line-dl {
  & div {
    display: flex;
    border-bottom: solid 1px var(--color-school-pale);
    padding: 11px 5px 14px;
    align-items: flex-start;

    &:nth-child(1) {
      border-top: solid 1px var(--color-school-pale);
    }

    & .font-mg {
      width: 110px;
      text-align: justify;
      box-sizing: border-box;
      letter-spacing: .15em;
      white-space: nowrap;
      color: var(--color-school);
      font-size: 15px;
      line-height: 1.9;
    }

    & dd {
      width: calc(100% - 110px);
      font-size: 14px;
      letter-spacing: .04em;
      color: var(--color-text);
      line-height: 1.9;
      display: inline-block;
      transform: translateY(3px);

      & a {
        width: calc(100% - 10px);
        font-size: 14px;
        letter-spacing: .04em;
        color: var(--color-link);
        line-height: 1.9;
        display: inline-block;
        transform: translateY(3px);

        &:hover {
          opacity: .6;
        }
      }

      & .info-small {
        font-size: 13px;
      }
    }
  }
}

iframe {
  width: 450px;
  height: 600px;

  @media screen and (max-width: 746px) {
    width: 100%;
    height: 300px;
  }
}

.iframe-wrap {
  @media screen and (max-width: 746px) {
    padding-top: 50px;
    width: 100%;
  }

  @media screen and (max-width: 1024px) {
    padding-top: 50px;
    width: 100%;
  }
}

.info-bottom-text {
  margin-top: 40px;
}


/* ================================================================
   12. about
   ================================================================ */
#about {
  margin-bottom: 60px;
  margin-top: 60px;
}

.about-text {
  font-size: 1.2rem;

  @media screen and (max-width: 746px) {
    font-size: .9rem;
  }
}


/* ================================================================
   13. 活動掲載ページ(#active / main.activity / aside#sidebar)
   ================================================================
   対象: 2025-activities/index.html など
   HTMLの構造:
     <section id="active">
       <h2 class="section-title">...</h2>
       <div class="box">...</div>
       <main class="activity">
         <article id="classXX">
           <h3>タイトル</h3>
           <h4>YYYY-MM-DD</h4>
           <p><img src="..." alt="..."> 説明文</p>
         </article>
       </main>
       <aside id="sidebar">...</aside>
     </section>
   ================================================================ */

/* ── ページ全体グリッド ── */
#active {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: 0 32px;
  max-width: 1200px;
  margin: 0 auto;
  padding: calc(var(--header-height) + 20px) 5% 60px;
  align-items: start;
}

/* タイトルと.boxは全幅 */
#active>h2.section-title,
#active>.box {
  grid-column: 1 / -1;
}

/* ── 各記事カード ── */
main.activity {
  grid-column: 1;
}

main.activity article {
  background: var(--color-bg-white);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
  margin-bottom: 36px;
  padding: 28px 32px;
  border-top: 3px solid var(--color-school);
  transition: box-shadow .2s;

  &:hover {
    box-shadow: var(--shadow-hover);
  }
}

/* h3:活動タイトル(左に学校カラーの縦線) */
main.activity article h3 {
  font-size: 1.25rem;
  font-weight: bold;
  color: var(--color-text);
  padding-left: 12px;
  border-left: 4px solid var(--color-school);
  margin-bottom: 4px;
  line-height: 1.4;
}

/* h4:日付(財団カラー) */
main.activity article h4 {
  font-size: .875rem;
  color: var(--color-foundation);
  font-weight: normal;
  padding-left: 12px;
  margin-bottom: 18px;
  letter-spacing: .04em;
}

/* p:写真+本文のブロック */
main.activity article p {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: flex-start;
  margin-bottom: 18px;
  font-size: .97rem;
  line-height: 1.85;
}

/* 写真(通常) */
main.activity article p img {
  width: 220px;
  height: 165px;
  object-fit: cover;
  border-radius: var(--radius-md);
  flex-shrink: 0;
  box-shadow: 0 2px 8px rgba(0, 0, 0, .10);
}

/* class="full" → 全幅写真 */
main.activity article p img.full {
  width: 100%;
  height: auto;
  max-height: 500px;
}

main.activity article a {
  color: var(--color-link);

  &:hover {
    color: var(--color-school);
  }
}

/* ── サイドバー ── */
aside#sidebar {
  grid-column: 2;
  position: sticky;
  top: calc(var(--header-height) + 16px);
  max-height: calc(100vh - var(--header-height) - 32px);
  overflow-y: auto;
}

aside#sidebar #act-list {
  margin-bottom: 20px;
}

aside#sidebar section.archive {
  background: var(--color-bg-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-card);
  padding: 18px;
}

aside#sidebar section.archive h3 {
  font-size: 1rem;
  font-weight: bold;
  color: var(--color-school);
  border-bottom: 2px solid var(--color-school-pale);
  padding-bottom: 8px;
  margin-bottom: 10px;
}

aside#sidebar section.archive ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

aside#sidebar section.archive li {
  font-size: .8rem;
  line-height: 1.5;
  padding: 5px 2px;
  border-bottom: 1px solid var(--color-school-pale);

  &:last-child {
    border-bottom: none;
  }

  & a {
    display: block;
    text-decoration: none;
    color: var(--color-link);
    transition: color .2s;

    &:hover {
      color: var(--color-school);
    }
  }
}

/* スマートフォン:1カラムに切り替え */
@media screen and (max-width: 768px) {
  #active {
    grid-template-columns: 1fr;
    padding-top: calc(var(--header-height) + 10px);
  }

  #active>h2.section-title,
  #active>.box,
  main.activity,
  aside#sidebar {
    grid-column: 1;
  }

  aside#sidebar {
    position: static;
    max-height: none;
    margin-top: 32px;
  }

  main.activity article {
    padding: 18px 14px;
  }

  main.activity article p {
    flex-direction: column;
  }

  main.activity article p img {
    width: 100%;
    height: auto;
    max-height: 260px;
  }
}


/* ================================================================
   14. apply(注意ボックス)
   ================================================================ */
.box {
  padding: 1em;
  margin: 2em 0;
  color: var(--color-text);
  background: #FFFF88;
  border-bottom: solid 6px var(--color-foundation-light);
  border-radius: var(--radius-sm);

  & p {
    text-align: center;
    font-size: 25px;
    margin: 0;
    padding: 0;
  }
}


/* ================================================================
   15. class-content(授業内容ページ)
   ================================================================ */
.class-content-items {
  background-color: var(--color-school-pale);
  box-shadow: var(--shadow-card);
  padding: 60px;
  margin-bottom: 60px;
  margin-top: 60px;
  font-size: 1.1rem;

  @media screen and (max-width: 746px) {
    font-size: 1rem;
  }
}

.class-content-items-text {
  text-align: left;

  @media screen and (max-width: 499px) {
    display: block;
    width: 100%;
    text-align: center;
    padding-bottom: 15px;
  }
}

#class-content {
  & .class-content-items {
    display: flex;
    align-items: center;
    justify-content: space-evenly;
    flex-direction: row;
    flex-wrap: wrap;

    @media screen and (max-width: 499px) {
      justify-content: start;
    }
  }
}

.class-content-text {
  padding-top: 30px;
}

.class-content-items-left {
  width: 60%;
  padding-right: 35px;
  border-right: solid 2px var(--color-school-light);
}

.class-content-dl-left {
  margin-right: 35px;
}

.class-content-dl {
  &>dt {
    background-color: var(--color-school);
    color: var(--color-text-white);
    padding: 3px 4px;
    display: inline-block;
    margin-bottom: 4px;
  }

  &>dd {
    margin-left: 60px;
    margin-bottom: 5px;

    @media screen and (max-width: 499px) {
      margin-left: 25px;
    }
  }

  & dt {
    margin: 0 1ex;
    padding: 0 1ex;
    width: 6em;
    border: var(--color-foundation-light) solid;
    border-width: 0 0 1px 1.2em;
  }
}

.bottom {
  margin-left: 25px;
}

.page-btn-ul {
  display: flex;
  justify-content: center;

  & li {
    list-style: none;
    margin-right: 30px;
    margin-left: 30px;
    font-size: 1.6rem;

    & a {
      color: var(--color-text);
      text-decoration: none;
    }

    &:hover {
      border-bottom: var(--color-text) double 7px;
    }
  }
}

@media screen and (min-width: 1100px) {
  .framebox {
    border: double 5px var(--color-school-light);
    display: block;
    position: absolute;
    left: 60%;
    bottom: 10px;
  }

  .clear {
    clear: both;
  }
}

@media screen and (max-width: 1099px) {
  .framebox {
    border: double 5px var(--color-school-light);
    display: block;
    margin-left: 40px;
  }
}


/* ================================================================
   16. テーブル共通
   ================================================================ */
table.LectureSchedule {
  text-align: center;
  border-collapse: collapse;
  border: 1px solid black;
  margin: 0 auto;

  & td.num {
    text-align: right;
    padding-right: 1em;

    @media screen and (max-width: 499px) {
      padding: 0;
    }
  }

  & td.time {
    text-align: left;
    padding-left: .7em;
  }

  & td.time_color {
    text-align: left;
    color: var(--color-alert);
    padding: 0 .5em;
    border: black;
  }

  & td.date {
    text-align: left;
    padding-left: .7em;
  }

  & td.room {
    text-align: left;
    padding: 0 .5em;
  }

  & td.lesson {
    text-align: left;
    padding: 0 .5em;
  }

  @media screen and (max-width: 499px) {
    font-size: 13px;
  }
}

.guide {
  & a {
    color: var(--color-foundation);
    display: block;
    border: var(--color-foundation) solid 2px;
    border-radius: var(--radius-sm);
    background-color: var(--color-bg-white);
    margin-left: 4px;
    margin-bottom: 4px;

    &:hover {
      color: var(--color-text-white);
      transition: .7s;
      background-color: var(--color-foundation);
    }
  }
}

ul.guide {
  display: flex;
  flex-wrap: wrap;
  margin-bottom: 1rem;

  & li {
    position: relative;
    list-style: none;

    & a {
      text-decoration: none;
      padding: 0 12px;

      @media screen and (max-width: 499px) {
        font-size: 17px;
      }
    }
  }
}

table.school {
  & tr {
    visibility: collapse;
  }

  & tr.match {
    visibility: visible;
  }
}

table.border {
  border-collapse: collapse;

  &,
  & td,
  & th {
    border: 1px solid #446;
    padding: .2ex .4ex;
  }

  & th {
    text-align: left;
    padding: .2ex .8ex;
  }
}

table.form {
  &>th:first-child {
    min-width: 10em;
  }

  & table tr:nth-child(even) {
    background: #fed;
  }
}


/* ================================================================
   17. Zoom向け表示
   ================================================================ */
.zoom-h1 {
  text-align: center;
  color: var(--color-foundation);
  border: solid 3px var(--color-foundation);
  padding: .5em;
  border-radius: .5em;
}

.zoom-p {
  font-size: 150%;
  text-indent: 1em;
}

.zoom-h3 {
  text-indent: 1em;
  counter-increment: section;

  &::before {
    text-indent: 1em;
    content: counter(number) "-" counter(section);
  }
}

.zoom-h2 {
  counter-increment: number;

  &::before {
    content: counter(number) ".";
  }
}

.zoom-title {
  margin-top: 100px;
}


/* ================================================================
   18. main.disp
   ================================================================ */
main.disp {
  margin: 1ex;

  & ul {
    margin-left: 1em;
  }
}


/* ================================================================
   19. フッター
   ================================================================ */
footer {
  border-top: 1px dashed var(--color-border);
  text-align: center;
  font-size: 70%;
}


/* ================================================================
   20. ハンバーガーメニュー(≤1024px)
   ================================================================ */
@media screen and (max-width: 1024px) {
  #hamburger-menu {
    opacity: 0;
    position: fixed;
  }

  label .buns {
    position: fixed;
    top: .8em;
    right: 1em;
    z-index: 3;
    height: 2em;
    width: 2em;

    &::before,
    &::after,
    & .patty {
      position: absolute;
      left: 0;
      width: 100%;
      height: 3.5px;
      border-radius: 5px;
      background: var(--color-school);
      content: "";
      transition: all .3s;
    }

    & .patty-name {
      display: block;
      position: absolute;
      left: 0;
      width: 100%;
      transition: all .3s;
      top: 115%;
      font-size: .7rem;
    }

    &::before {
      top: 0;
      transform-origin: top left;
    }

    & .patty {
      top: 45%;
    }

    &::after {
      bottom: 0;
      transform-origin: bottom left;
    }
  }

  .header-nav {
    line-height: 1.0;
    padding: 0 2%;

    & .sp-logo {
      display: block;
    }

    & nav ul {
      position: fixed;
      top: 0;
      left: 0;
      bottom: 0;
      z-index: 2;
      display: flex;
      flex-flow: column nowrap;
      justify-content: center;
      align-items: flex-start;
      transform: translateX(-120%);

      &::before {
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        z-index: -1;
        width: 25em;
        background: var(--color-school-pale);
        transform: skewX(-20deg) translateX(-200%);
        transform-origin: bottom left;
        transition: transform .3s;
        content: "";
      }

      & li {
        margin: 1em;
        padding: .2em 1em;
        transform: translateX(-120%);
        transition: all .3s, transform .5s;
        transition-timing-function: cubic-bezier(.19, 1, .22, 1);
      }
    }
  }

  .bd-no {
    display: none;
  }

  .section-title {
    font-size: 1.75rem;
  }

  header.scroll-nav {
    background: var(--color-bg-header);
    box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .1);
    align-items: center;
  }

  #mainvisual .top-title .site-title {
    display: none;
  }

  #hamburger-menu:checked {
    &+label .buns {

      &::before,
      &::after {
        width: 130%;
      }

      & .patty {
        transform: scale(0);
      }

      &::before {
        transform: rotate(45deg);
      }

      &::after {
        transform: rotate(-45deg);
      }
    }

    &~nav ul {
      transform: translateX(0%);

      &::before {
        transform: skewX(-20deg) translateX(-60%);
      }

      & li {
        transform: translateX(0);
      }
    }

    &~.light-dark {
      background: #000;
      opacity: .5;
      position: fixed;
      left: 0;
      top: 0;
      height: 100%;
      width: 100%;
    }
  }
}


/* ================================================================
   21. スマートフォン対応(≤746px)
   ================================================================ */
@media screen and (max-width: 746px) {
  #home {
    & h3 {
      font-size: 1.2rem;
    }

    & p {
      font-size: .8rem;
      line-height: 1.85;
    }
  }

  .section-title {
    font-size: 1.3rem;
    position: relative;
    display: inline-block;
    margin-bottom: 50px;
    margin-top: 50px;

    &::before {
      content: none;
    }

    &::after {
      width: 60px;
      height: 5px;
      margin: 8px auto 0;
    }
  }

  .section-text {
    font-size: .8rem;
  }

  header.scroll-nav {
    background: var(--color-bg-header);
    box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .1);
    align-items: center;
  }

  .header-nav .sp-logo {
    display: block;
  }

  .header-nav nav ul {
    display: none;
  }

  #mainvisual .top-title .site-title {
    display: none;
  }

  .class-content-items {
    padding: 10px;
  }

  .wrapper {
    padding-top: 0;
    padding-bottom: 30px;
  }
}


/* ================================================================
   22. ユーティリティ
   ================================================================ */
.vmenuspace {
  margin-top: 2em;
  border-top: 3px solid var(--color-school);
}

</style>