@charset "utf-8";

/*Font Awesomeの読み込み
---------------------------------------------------------------------------*/
@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css");

/*Google Fontsの読み込み
---------------------------------------------------------------------------*/
@import url('https://fonts.googleapis.com/css2?family=LINE+Seed+JP:wght@400;700&display=swap');

/*cssファイルの読み込み
---------------------------------------------------------------------------*/
@import url("slide.css");
@import url("inview.css");

/*CSSカスタムプロパティ（サイト全体を一括管理する為の設定）
---------------------------------------------------------------------------*/
:root {
    --bg-color: #fff;
    /*主にテンプレートの背景色*/
    --bg-inverse-color: #333;
    /*上のbg-colorの対として使う色*/

    --primary-color: #0063af;
    /*テーマカラー*/
    --primary-inverse-color: #fff;
    /*上のprimary-colorの対として使う色*/

    --content-space: 5vw;
    /*色々な余白管理用。画面幅100% = 100vwです。*/
}

/*animation1のキーフレーム設定（汎用的）
---------------------------------------------------------------------------*/
@keyframes animation1 {
    0% {
        left: -200px;
    }

    100% {
        left: 0px;
    }
}

/*opa1のキーフレーム設定（汎用的）
---------------------------------------------------------------------------*/
@keyframes opa1 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

/*全体の設定
---------------------------------------------------------------------------*/
body * {
    box-sizing: border-box;
}

html,
body {
    font-size: 15px;
    /*基準となるフォントサイズ。*/
}

/*画面幅900px以上の追加指定*/
@media screen and (min-width: 900px) {
    html,
    body {
        font-size: 16px;
        /*基準となるフォントサイズ。*/
    }
}

body {
    margin: 0;
    padding: 0;
    font-family: "LINE Seed JP", "ヒラギノ角ゴ Pro W3", Meiryo, "メイリオ", "Osaka", "MS PGothic", "ＭＳ Ｐゴシック", sans-serif;
    font-weight: 400;
    -webkit-text-size-adjust: none;
    background-image: url('../images/back.jpg');
    background-attachment: fixed;
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center bottom;
    line-height: 1.8;
    overflow-x: hidden;
}

/*リセット*/
figure {
    margin: 0;
}

dd {
    margin: 0;
}

nav,
ul,
li,
ol {
    margin: 0;
    padding: 0;
}

nav ul {
    list-style: none;
}

/*table全般の設定*/
table {
    border-collapse: collapse;
}

/*画像全般の設定*/
img {
    border: none;
    max-width: 100%;
    height: auto;
    vertical-align: middle;
}

/*videoタグ*/
video {
    max-width: 100%;
}

/*iframeタグ*/
iframe {
    width: 100%;
}

/*他*/
input {
    font-size: 1rem;
}

section > ol,
section > ul {
    margin-left: 2rem;
}

/*sectionの設定
---------------------------------------------------------------------------*/
section {
    margin: var(--content-space) 0;
}

h2 {
    letter-spacing: 0.1em;
}

/*リンクテキスト全般の設定
---------------------------------------------------------------------------*/
a {
    color: inherit;
    text-decoration: none;
    transition: 0.3s;
}

/*マウスオン時*/
a:hover {
    color: #0063af;
    opacity: 0.85;
}

/*container（サイト全体を囲むブロック）
---------------------------------------------------------------------------*/
#container {
    max-width: 1200px;
    width: 100%;
    margin-right: auto;
    margin-left: auto;
    box-sizing: border-box;
    animation: opa1 0.2s 0.4s both;
    display: grid;
    grid-template-rows: auto auto 1fr;
    min-height: 100vh;
    min-height: 100dvh;
    padding: var(--content-space) var(--content-space) 0;
}

body:not(.home) #container {
    grid-template-rows: auto 1fr;
}

/*header（ロゴが入ったブロック）
---------------------------------------------------------------------------*/
header {
    display: flex;
    flex-direction: column;
    align-items: center;
}

/*ロゴ画像*/
#logo {
    margin: 0;
}

header #logo img {
    width: 100%;
    max-width: 700px;
    height: auto;
}

/*ヘッダー内メニュー（大きな端末で見える横並びメニュー設定）
---------------------------------------------------------------------------*/
.large-screen #menubar ul {
    display: flex;
    gap: 1.5rem;
    margin: 30px 0;
    font-size: 1.1em;
    align-items: center; /* ★横並び要素の縦中央を揃える */
}

.large-screen #menubar ul a {
    display: block;
    text-decoration: none;
}


/*ドロップダウンメニュー
---------------------------------------------------------------------------*/
.large-screen #menubar nav > ul > li {
    position: relative; /* サブメニューの配置基準 */
}

/* 2階層目（サブメニュー）の設定 */
.large-screen #menubar ul ul {
    position: absolute;
    top: 100%;           /* 親要素の真下に配置 */
    left: 0;
    display: none;       /* ホバー前は非表示 */
    list-style: none;
    min-width: 220px;

    /* ★重要：メニューとの隙間で消えないよう、上部に透明な判定用余白を作る */
    padding-top: 10px;
    margin-top: -1px;     /* 上に少し食い込ませて隙間を完全に埋める */
}

/* 親要素にホバーした時にサブメニューを表示 */
.large-screen #menubar nav ul li:hover > ul {
    display: block;
    z-index: 50;
}

/* サブメニュー内のリストの背景 */
.large-screen #menubar ul ul li a {
    display: block;
    text-decoration: none;
    background: var(--primary-color) !important;
    color: var(--primary-inverse-color) !important;
    border-radius: 5px;
    padding: 0.6rem 2rem;
    font-size: 0.9rem;
    letter-spacing: 0.05em;
}

.large-screen #menubar ul ul li a:hover {
    opacity: 1;
    background: #003e70 !important;
    color: #fff;
}


/*開閉メニュー（小さな端末用のメニュー設定）
---------------------------------------------------------------------------*/
.small-screen #menubar {
    animation: animation1 0.2s both;
    position: fixed;
    overflow-y: auto;
    z-index: 100;
    right: 0;
    top: 0;
    width: 100%;
    height: 100%;
    padding: 90px var(--content-space) 50px;
    background: var(--bg-color);
    color: var(--bg-inverse-color);
    display: none;
}

.small-screen #menubar a {
    display: block;
    text-decoration: none;
    color: inherit;
    border: 1px solid #c7cbf9;
    border-radius: 5px;
    margin-bottom: 0.8rem;
    padding: 0.8rem 1.5rem;
}

/*３本バー（ハンバーガー）アイコン設定
---------------------------------------------------------------------------*/
#menubar_hdr {
    display: none;
    animation: opa1 0s 0.2s both;
    position: fixed;
    z-index: 101;
    cursor: pointer;
    right: 10px;
    top: 10px;
    width: 60px;
    height: 60px;
    background: rgba(0, 0, 0, 0.6);
    border-radius: 50%;
}

#menubar_hdr span {
    display: block;
    position: absolute;
    left: 15px;
    width: 30px;
    height: 2px;
    background: #fff;
    transition: 0.3s;
}

#menubar_hdr span:nth-of-type(1) {
    top: 20px;
}

#menubar_hdr span:nth-of-type(2) {
    top: 29px;
}

#menubar_hdr span:nth-of-type(3) {
    top: 38px;
}

/* ハンバーガーメニュー展開時 */
#menubar_hdr.ham span:nth-of-type(1) {
    transform: translateY(9px) rotate(-45deg);
}

#menubar_hdr.ham span:nth-of-type(2) {
    opacity: 0;
}

#menubar_hdr.ham span:nth-of-type(3) {
    transform: translateY(-9px) rotate(45deg);
}

/*小さな画面での設定*/
.small-screen #menubar_hdr {
    display: flex;
}

.small-screen #menubar ul ul {
    display: block;
    position: static;
    margin: 0 0 0.5rem 0;
    padding-left: 10px;
    box-shadow: none;
    background-color: transparent;
}

.small-screen #menubar ul ul li {
    display: block;
    width: 100%;
}

.small-screen #menubar ul ul li a {
    font-size: 0.85rem;
    padding: 8px 12px;
    background-color: #f4f4f4;
    border: 1px solid #ddd;
}

/*list-grid（リストブロック）
---------------------------------------------------------------------------*/
.list-grid {
    display: grid;
    grid-template-columns: 1fr; /* スマホでは1列 */
    gap: 2rem;
    text-align: center;
    font-size: 1rem;
}

@media screen and (min-width: 768px) {
    .list-grid {
        grid-template-columns: repeat(3, 1fr); /* PC・タブレットで3列 */
        gap: 2.5vw;
    }
}

.list-grid .list {
    background: rgba(13, 0, 155, 0.15);
    border-radius: 8px;
    transition: transform 0.3s, box-shadow 0.3s;
}

.list-grid .list:hover {
    transform: translateY(-5px);
    box-shadow: 0 8px 20px rgba(0,0,0,0.15);
}

.list-grid .list a {
    display: flex;
    flex-direction: column;
    height: 100%;
    color: inherit;
    text-decoration: none;
    padding: 1.2rem;
}

.list-grid h4 {
    color: #ffffff;
    font-size: 1.25rem;
    margin: 0.5rem 0;
    text-shadow: 1px 1px 3px rgba(0,0,0,0.3);
}

.list-grid .list figure {
    margin-bottom: 0.8rem;
    border-radius: 6px;
    overflow: hidden;
}

.list-grid .list figure img {
    width: 100%;
    height: auto;
    object-fit: cover;
}

.list-grid p {
    font-weight: normal;
    text-align: left;
    font-size: 0.95rem;
    margin: 0;
    color: #f0f4f8;
}

/*2カラムブロック（スタッフ紹介等で使用）
---------------------------------------------------------------------------*/
.list-half .list {
    display: flex;
    flex-direction: column;
    margin-bottom: 2rem;
}

.list-half .list h4 {
    font-size: 1.4rem;
}

.list-half .image-l img,
.list-half .image-r img {
    border-radius: 50px;
    box-shadow: 10px 10px rgba(0, 0, 0, 0.1);
}

@media screen and (min-width: 900px) {
    .list-half .list {
        gap: 2rem;
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
    }

    .list-half .image-l,
    .list-half .image-r {
        width: 50%;
    }

    .list-half .image-l {
        order: -1;
    }

    .list-half .text {
        flex: 1;
    }
}

/*btn（ボタン）
---------------------------------------------------------------------------*/
.btn a {
    display: block;
    text-decoration: none;
    background: var(--primary-color) !important;
    color: var(--primary-inverse-color) !important;
    border-radius: 5px;
    padding: 0.6rem 2rem;
    font-size: 1.1rem;
    letter-spacing: 0.05em;
}

.btn a:hover {
    opacity: 1;
    background: #003e70 !important;
    color: #fff;
}

.large-screen #menubar .btn a {
    margin-top: 0;
    font-size: 1rem;
    letter-spacing: normal;
}

.small-screen #menubar .btn a {
    margin-top: 0;
    width: auto;
    border: none;
}

/*btn2（ボタン）
---------------------------------------------------------------------------*/
.btn2 a {
    display: block;
    text-decoration: none;
    background-color: #fff;
    border: #297bbe solid 1px;
    border-radius: 5px;
    width: fit-content;
    padding: 0.6rem 2rem;
    letter-spacing: 0.05em;
    box-shadow: 0 2px 4px rgba(135, 135, 138, 0.623); /* 影が広がる */
}

.btn2 a:hover {
    opacity: 1;
    background: #3182ce; 
    color: #fff;
}

/*テーブル（ta1）
---------------------------------------------------------------------------*/
.ta1 caption {
    font-weight: bold;
    padding: 0.2rem 1rem;
    background: rgba(0, 0, 0, 0.1);
    color: #333;
    margin-bottom: 1rem;
    border-radius: 5px;
}

.ta1 {
    table-layout: fixed;
    border-top: 1px solid rgba(0, 0, 0, 0.3);
    width: 100%;
    margin-bottom: 2rem;
}

.ta1 tr {
    border-bottom: 1px solid rgba(0, 0, 0, 0.3);
}

.ta1 th,
.ta1 td {
    padding: 1rem;
    word-break: break-all;
}

.ta1 th {
    width: 30%;
    text-align: left;
}

@media screen and (min-width: 900px) {
    .ta1 th {
        width: 20%;
    }
}

/*フッター
---------------------------------------------------------------------------*/
footer * {
    margin: 0;
    padding: 0;
}

footer {
    margin-left: calc(-1 * var(--content-space));
    margin-right: calc(-1 * var(--content-space));
    padding: 2rem 0;
    background: rgba(0, 0, 0, 0.2);
    color: #fff;
    text-align: center;
}

footer small {
    display: block;
}

/*Google Map用
---------------------------------------------------------------------------*/
.iframe-box1 {
    width: 100%;
    aspect-ratio: 16 / 9;
    position: relative;
    overflow: hidden;
}

.iframe-box1 iframe {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}

/*著作部分
---------------------------------------------------------------------------*/
.pr {
    margin-left: calc(-1 * var(--content-space));
    margin-right: calc(-1 * var(--content-space));
}

.pr a {
    text-decoration: none;
    display: block;
    text-align: right;
    padding: 0.5rem 1rem;
    font-size: 0.8rem;
    background: #555;
    color: #ccc;
}

.pr a::before {
    font-family: "Font Awesome 6 Free";
    content: "\e2ca";
    font-weight: bold;
    margin-right: 0.5em;
}

/*お知らせブロック
---------------------------------------------------------------------------*/
@media screen and (min-width: 700px) {
    .new {
        display: grid;
        grid-template-columns: auto 1fr;
    }

    .new dt {
        margin-right: 2rem;
    }
}

/*bg1背景
---------------------------------------------------------------------------*/
.bg1 {
    background: #3650b1;
    color: #fff;
    margin-left: calc(-1 * var(--content-space));
    margin-right: calc(-1 * var(--content-space));
}

.bg1 section {
    margin-left: var(--content-space);
    margin-right: var(--content-space);
    padding-top: var(--content-space);
    padding-bottom: var(--content-space);
}

.bg1 section h2:first-child {
    margin-top: 0;
}

/*bg2背景
---------------------------------------------------------------------------*/
.bg2 {
    background: #b6dff6;
    color: #ffffff;
    margin-left: calc(-1 * var(--content-space));
    margin-right: calc(-1 * var(--content-space));
}

.bg2 section {
    margin-left: var(--content-space);
    margin-right: var(--content-space);
    padding-top: var(--content-space);
    padding-bottom: var(--content-space);
}

.bg2 section h2:first-child {
    margin-top: 0;
}

/*PAGE TOP（↑）設定
---------------------------------------------------------------------------*/
.pagetop-show {
    display: block;
}

.pagetop a {
    display: block;
    text-decoration: none;
    text-align: center;
    z-index: 99;
    animation: opa1 1s 0.4s both;
    position: fixed;
    right: 20px;
    bottom: 20px;
    color: #fff;
    font-size: 1.5rem;
    background: rgba(0, 0, 0, 0.4);
    width: 50px;
    height: 50px;
    line-height: 50px;
    border-radius: 50%;
    transition: background 0.3s;
}

.pagetop a:hover {
    background: rgba(0, 0, 0, 0.8);
}

/*アクセス用テーブル（week2）
---------------------------------------------------------------------------*/
.week2 {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    overflow: hidden;
    border-radius: 8px;
    border: 1px solid #ccc;
    background: #fff;
    color: #333;
    font-size: 1rem;
    margin-bottom: 2rem;
}

.week2 th,
.week2 td {
    padding: 1rem;
    border-bottom: 1px solid #eee;
}

.week2 th {
    background: #f4f7fa;
    width: 30%;
    text-align: center;
    font-weight: bold;
    border-right: 1px solid #eee;
}

.week2 td {
    text-align: left;
}

.week2 tr:last-child th,
.week2 tr:last-child td {
    border-bottom: none;
}

.week2 thead tr th.line{border-bottom: 1px solid #eee;}

/*ユーティリティクラス
---------------------------------------------------------------------------*/
.clearfix::after {
    content: "";
    display: block;
    clear: both;
}

.color-check,
.color-check a {
    color: #c02340 !important;
}

.l {
    text-align: left !important;
}

.c {
    text-align: center !important;
}

.r {
    text-align: right !important;
}

.ws {
    width: 95%;
    display: block;
}

.wl {
    width: 95%;
    display: block;
}

.padding0 {
    padding: 0 !important;
}

.mb0 {
    margin-bottom: 0px !important;
}

.mb3rem {
    margin-bottom: 3rem !important;
}

.mb30 {
    margin-bottom: 30px !important;
}

.look {
    display: inline-block;
    padding: 0px 10px;
    background: rgba(0, 0, 0, 0.7);
    color: #fff;
    border-radius: 3px;
    margin: 5px 0;
    word-break: break-all;
}

.look .color-check {
    color: yellow !important;
}

.small {
    font-size: 0.75em;
}

.large {
    font-size: 2em;
    letter-spacing: 0.1em;
}

.block {
    display: block !important;
}

.icon {
    width: 1.5rem;
    height: auto;
    vertical-align: middle;
    margin-left: 0.3em;
}

/* 検索フォーム用スタイル（調整版） */
.kensaku {
    width: 100%;
    max-width: 300px;
    margin: 0 auto;
}

/* ==========================================
   note記事リスト (スマホでの横スクロール完全防止版)
   ========================================== */

/* 親コンテナの横スクロール防止 */
#note-news-container {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  overflow: hidden; /* コンテナ外へのはみ出しをシャットアウト */
}

/* 記事リスト全体 */
#note-article-list {
  list-style: none;
  padding: 0;
  max-width: 900px;
  width: 100%;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 10px;
  box-sizing: border-box;
}

/* 各記事項目（カード全体） */
#note-article-list li.note-article-item {
  background-color: #ffffff;
  border: 1px solid #e2e8f0;
  border-left: 4px solid #3182ce;
  border-radius: 8px;
  padding: 12px 16px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02);
  transition: all 0.25s ease;
  
  /* 横並びFlex配置の設定 */
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box; /* パディングを含めた幅計算に固定 */
}

#note-article-list li.note-article-item:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(49, 130, 206, 0.12);
  border-left-color: #2b6cb0;
  background-color: #f7fafc;
}

/* 日付 (time.article-date) */
#note-article-list time.article-date {
  font-size: 0.85rem;
  color: #2b6cb0;
  background-color: #ebf8ff;
  padding: 3px 10px;
  border-radius: 4px;
  font-weight: 600;
  flex-shrink: 0; /* 日付の幅がつぶれるのを防止 */
}

/* 記事タイトル (a.article-title) */
#note-article-list a.article-title {
  color: #2d3748;
  text-decoration: none;
  font-weight: 500;
  font-size: 0.95rem;
  
  /* Flex内での領域制限（最重要） */
  flex: 1 1 0%;
  min-width: 0; /* フレックスアイテムの最小幅制約を解除 */
  width: 0;     /* 一部のモバイルブラウザでの計算崩れを補正 */
  
  /* 1行固定 ＋ 省略記号（...） */
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all; /* 英数字や記号のはみ出しを強制阻止 */
}

#note-article-list a.article-title:hover {
  color: #2b6cb0;
}

/* 右端の矢印アイコン */
#note-article-list li.note-article-item::after {
  content: "→";
  color: #3182ce;
  font-weight: bold;
  font-size: 1rem;
  flex-shrink: 0; /* 矢印がつぶれるのを防止 */
  transition: transform 0.2s ease;
}

#note-article-list li.note-article-item:hover::after {
  transform: translateX(4px);
}

/* 右寄せボタンエリア (ニュースをもっと見る) */
#note-news-container p.r {
  text-align: right;
  margin-top: 20px;
}

#note-news-container p.r a {
  display: inline-block;
  padding: 8px 18px;
  background-color: #ebf8ff;
  color: #2b6cb0;
  font-size: 0.9rem;
  font-weight: 600;
  text-decoration: none;
  border-radius: 20px;
  border: 1px solid #bee3f8;
  transition: all 0.2s ease;
}

#note-news-container p.r a:hover {
  background-color: #3182ce;
  color: #ffffff;
  border-color: #3182ce;
  box-shadow: 0 4px 10px rgba(49, 130, 206, 0.2);
}

/* スマホ表示（画面幅600px以下）の微調整 */
@media (max-width: 600px) {
  #note-article-list li.note-article-item {
    gap: 8px;
    padding: 10px 10px;
  }

  #note-article-list time.article-date {
    font-size: 0.75rem;
    padding: 2px 6px;
  }

  #note-article-list a.article-title {
    font-size: 0.85rem;
  }
}

/* 月別予定表テーブル（ ta2.c ）の全体設定 */
table.ta2.c,
table.ta3.c {
  width: 100%;
  max-width: 700px;
  margin: 20px auto;
  border-collapse: separate;
  border-spacing: 10px; /* セル同士の余白を開けてボタン風に */
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

/* セル自体の設定 */
table.ta2.c td {
  padding: 0; /* aタグ側で余白を取るため0に */
  background-color: #f0f7ff; /* 淡いブルー */
  border: 1px solid #bee3f8; /* 薄い青のボーダー */
  border-radius: 8px; /* 角丸 */
  text-align: center;
  transition: all 0.25s ease;
}
/* セル自体の設定 */
table.ta3.c td {
  padding: 0; /* aタグ側で余白を取るため0に */
  background-color: #faffe4; /* 淡いイエロー */
  border: 1px solid #cbf23d; /* 薄い青のボーダー */
  border-radius: 8px; /* 角丸 */
  text-align: center;
  transition: all 0.25s ease;
}

/* セル内のリンク（カード全体をクリック可能に） */
table.ta2.c td a,
table.ta3.c td a {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px; /* 文字とPDFアイコンの間隔 */
  padding: 14px 10px;
  color: #2b6cb0; /* 落ち着いた青色の文字 */
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  border-radius: 8px;
}

/* PDFアイコン画像の設定 */
table.ta2.c td a img.icon {
  width: 18px;
  height: auto;
  vertical-align: middle;
}

/* ホバー時の挙動（青く浮き上がる動き） */
table.ta2.c td:hover {
  background-color: #3182ce; /* メインブルー */
  border-color: #3182ce;
  transform: translateY(-2px); /* ほんのり上に浮く */
  box-shadow: 0 4px 12px rgba(49, 130, 206, 0.25); /* 青い影 */
}

/* ホバー時の文字色変更 */
table.ta2.c td:hover a {
  color: #ffffff;
}

/* スマホ表示（画面幅480px以下）の調整：2列表示にして押しやすくする */
@media (max-width: 480px) {
  table.ta2.c,
  table.ta3.c {
    border-spacing: 8px;
  }
  
  table.ta2.c tr,
  table.ta3.c tr {
    display: flex;
    flex-wrap: wrap;
  }
  
  table.ta2.c td,
  table.ta3.c td {
    width: calc(50% - 8px); /* 半分（2列）で配置 */
    margin-bottom: 4px;
  }
}
