@charset "UTF-8";

/* --- CSS変数 --- */
:root {
  --base-color: #f8b62c;
  --bottom-color: #ffefcf;
  --back-color: #fffaf0;
  --text-color: #3e2e28;
  --link-color: #624722;
  --linkhover-color: #cbbdaf;
  --border-color: #b19e89;
  --emphasis: #ff7a25;
  --attention: #dc143c;
  --topia-green: #8ec31e;
  --group-color: #dc6a9a;
  --white-color: #fff;
  --tcal-gray: #e3e3e3;
  --tcal-pink: #f9dbd9;
  --tcal-yellow: #ffe6bc;
  --tcal-green: #e0f1b3;
  --tcal-blue: #deedf9;
}

/* --- body --- */
body {
  color: var(--text-color);
  font-size: 1rem;
  line-height: 1.6;
  background-color: var(--back-color);
  font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'メイリオ', Meiryo, 'ＭＳ Ｐゴシック', sans-serif;
  font-weight: 400;
  margin: 0;
  padding: 0;
}

/* --- 汎用ユーティリティ: テキストブロック関連 --- */
.text-115 {
  font-size: 1.15rem !important;
  font-weight: bold;
}
.text-085 {
  font-size: 0.85rem !important;
  line-height: 1.4 !important;
}
.text-070 {
  font-size: 0.7rem !important;
  line-height: 1.3 !important;
}
.text-att {
  color: var(--attention) !important;
}
.item-name {
  text-align: center;
  font-weight: bold;
}
.mt-200 {
  margin-top: 2rem;
}
.mt-050 {
  margin-top: 0.5rem;
}
.mb-020 {
  margin-bottom: 0.2rem;
}
.u-narrow-margin {
  margin-top: -1rem;
  margin-bottom: 1rem;
}
.v-align-mid {
  vertical-align: middle;
}
/* グループからのお知らせに繋がるリンク用 */
.group-info-link {
  color: var(--group-color);
  display: inline;
}

/* --- 画像 --- */
img {
  max-width: 100%;
  height: auto;
}
.img-r {
  border-radius: 0.6rem;
  margin-bottom: 1rem;
}
.img-r:last-of-type {
  margin-bottom: 0;
}

/* --- リンク --- */
a {
  display: block;
  color: var(--link-color);
  text-decoration-line: none;
  transition: color 0.3s ease;
}
a:hover {
  color: var(--linkhover-color);
}
a img {
  margin-bottom: 1rem;
  transition: opacity 0.3s ease;
}
a img:hover {
  opacity: 0.8;
}

/* --- 見出し: h1-h6 --- */
h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: 400;
  letter-spacing: normal;
  margin-top: 0;
  margin-bottom: 2rem;
}

/* サイズ設定 */
h1 {
  font-size: 2.25rem;
  line-height: 1.2;
}
h2 {
  font-size: 1.75rem;
  line-height: 1.3;
}
h3 {
  font-size: 1.4rem;
  line-height: 1.4;
}
h4 {
  font-size: 1.25rem;
  line-height: 1.4;
}
h5 {
  font-size: 1.15rem;
  line-height: 1.5;
}
h6 {
  font-size: 1.05rem;
  line-height: 1.5;
}

/* 画面幅550px以上の表示フォント */
@media (min-width: 550px) {
  h1 {
    font-size: 2.2rem;
  }
  h2 {
    font-size: 1.85rem;
  }
  h3 {
    font-size: 1.5rem;
  }
  h4 {
    font-size: 1.25rem;
  }
  h5 {
    font-size: 1.15rem;
  }
  h6 {
    font-size: 1.05rem;
  }
}

/* --- 段落: p --- */
p {
  margin-top: 0;
}

/* --- リスト: ul/ol/li --- */
ul {
  list-style: none;
}
ol {
  list-style: none;
  counter-reset: my-counter;
}
ol,
ul {
  padding-left: 0;
  margin-top: -0.75rem;
  font-size: 95%;
}
li {
  display: flex;
  gap: 0.3rem;
  margin-bottom: 0.5rem;
}

/* --- 順序付きリスト (ol) の設定 --- */
ol li {
  counter-increment: my-counter;
}
ol li::before {
  content: counter(my-counter) '.';
  color: var(--text-color);
  flex-shrink: 0;
  min-width: 1.25rem;
  text-align: right;
}

/* --- 順序なしリスト (ul) のマーカー設定 --- */
ul li::before {
  content: '・';
  color: var(--text-color);
  flex-shrink: 0;
}

/* --- 画像記号付きリスト (ul) の設定 --- */
ul.imglist li::before {
  content: '';
  background-size: contain;
  background-repeat: no-repeat;
  width: 1.2em;
  height: 1.2em;
  margin-top: 0.15em;
}
/* 黄色い星画像を適用 */
ul.imglist li.star-g::before {
  background-image: url('/hiroba-topia/tas/timg/star-g.gif');
}
/* 灰色の星画像を適用 */
ul.imglist li.star-s::before {
  background-image: url('/hiroba-topia/tas/timg/star-s.gif');
}
/* きらきら動く星画像を適用 */
ul.imglist li.kirakira::before {
  background-image: url('/hiroba-topia/tas/timg/kirakira.gif');
}

/* --- コード: code/pre --- */
code {
  padding: 0.2rem 0.5rem;
  margin: 0 0.2rem;
  white-space: nowrap;
  background: #f1f1f1;
}
pre > code {
  display: block;
  padding: 1rem 1.5rem;
  white-space: pre;
}

/* --- アンダーライン装飾 --- */
.underline {
  padding-bottom: 0.4rem;
  border-bottom: 3px solid var(--base-color);
}
.underdash {
  padding-bottom: 0.4rem;
  border-bottom: 2px dashed var(--base-color);
}
.understripe {
  position: relative;
  padding-bottom: 0.5rem;
  margin-bottom: 1rem;
}
.understripe:after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 0.375rem;
  background: repeating-linear-gradient(-45deg, var(--border-color), var(--border-color) 0.125rem, var(--back-color) 0.125rem, var(--back-color) 0.25rem);
}

/* --- ヘッダー: .head --- */
.head {
  display: flex;
  flex-direction: row;
  padding: 1rem 0 0 0;
  align-items: center;
}
.head h1 {
  padding: 0;
  margin: 0 0 0.5rem 0;
}
.head h1 .site-sub-title {
  font-size: small;
  vertical-align: text-top;
}
.head h1 img {
  vertical-align: bottom;
}

/* --- 電話番号: .telbox --- */
.telbox {
  margin-left: auto;
  padding: 0;
  font-size: 1.75rem;
  margin-bottom: 1rem;
}

/* --- ナビゲーション: nav --- */
nav {
  position: relative;
  z-index: 10;
}
nav ul {
  display: flex;
  flex-direction: row;
  justify-content: space-around;
  margin-bottom: calc(-1rem + 5px);
  list-style: none;
}
nav li {
  flex: 1 0 auto;
  background-color: var(--base-color);
  display: block;
  box-shadow: 0 4px 0 0 var(--bottom-color);
}
nav li a {
  text-decoration: none;
  text-align: center;
}
nav a {
  display: block;
  padding: 0.6rem 1rem;
}
nav a:hover {
  background-color: var(--back-color);
}
/* ナビゲーション内のリストからカスタム記号を非表示にする */
nav ul li::before,
nav ol li::before {
  content: none;
  display: none;
}

/* --- ボタン --- */
.button,
button,
input[type='submit'],
input[type='reset'],
input[type='button'] {
  display: inline-block;
  cursor: pointer;
  box-sizing: border-box;
  height: 2.5rem;
  padding: 0 1.5rem;
  margin-right: 0.3rem;
  white-space: nowrap;
  line-height: 2.5rem;
  font-size: 1rem;
  font-weight: 600;
  color: var(--text-color);
  text-align: center;
  letter-spacing: 0.1rem;
  text-transform: none;
  text-decoration: none;
  background-color: transparent;
  border: 1.5px solid var(--border-color);
  border-radius: 0.4rem;
}
.button:hover,
button:hover,
input[type='submit']:hover,
input[type='reset']:hover,
input[type='button']:hover,
.button:focus,
button:focus,
input[type='submit']:focus,
input[type='reset']:focus,
input[type='button']:focus {
  outline: 0;
  color: var(--white-color);
  background-color: var(--base-color);
  border-color: var(--base-color);
}

/* --- 無効なボタンのスタイル --- */
.button.disabled,
.button.disabled:hover {
  pointer-events: none;
  cursor: default;
  opacity: 0.5;
  border-color: #bbb;
  color: #555;
  background-color: transparent;
}

/* --- 強調ボタン --- */
.button-em {
  background-color: var(--base-color);
  color: var(--white-color);
  border-color: var(--base-color);
  font-weight: bold;
}
.button-em:hover {
  background-color: transparent;
  color: var(--link-color);
  border-color: var(--link-color);
}
/* 強調ボタンのレスポンシブ対応 */
.col a.button-em {
  display: inline-block;
  max-width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* --- 大型の強調ボタン (最新号などの表示に使用) --- */
.button-large-em {
  font-size: 1.2rem;
  height: 50px;
  line-height: 50px;
  margin: 0 0 3rem;
}

/* --- ボタン群のナビゲーション --- */
.buttons-nav {
  display: flex;
  justify-content: space-around;
  align-items: center;
  margin-bottom: 0.1rem;
  padding: 0 1rem;
}

/* --- フォーム: input/textarea/select --- */
input[type='email'],
input[type='number'],
input[type='search'],
input[type='text'],
input[type='tel'],
input[type='url'],
input[type='password'],
textarea,
select {
  box-sizing: border-box;
  height: 38px;
  padding: 6px 10px;
  background-color: #fff;
  border: 1px solid #d1d1d1;
  border-radius: 0;
  box-shadow: none;
  width: 100%;
}
input[type='email'],
input[type='number'],
input[type='search'],
input[type='text'],
input[type='tel'],
input[type='url'],
input[type='password'],
textarea {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}
textarea {
  min-height: 100px;
  padding-top: 6px;
  padding-bottom: 6px;
}
input[type='email']:focus,
input[type='number']:focus,
input[type='search']:focus,
input[type='text']:focus,
input[type='tel']:focus,
input[type='url']:focus,
input[type='password']:focus,
textarea:focus,
select:focus {
  outline: 0;
  border: 1px solid #666;
}

/* --- フォーム: label/legend --- */
label,
legend {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 600;
}

/* --- フォーム: fieldset --- */
fieldset {
  padding: 0;
  border-width: 0;
}

/* --- フォーム: checkbox/radio --- */
input[type='checkbox'],
input[type='radio'] {
  display: inline;
}

/* --- フォーム: .label-body --- */
label > .label-body {
  display: inline-block;
  margin-left: 0.5rem;
  font-weight: normal;
}

/* --- スペース (要素ごとのデフォルトマージン) --- */
button,
.button {
  margin-bottom: 1rem;
}
input,
textarea,
select,
fieldset {
  margin-bottom: 1rem;
}
pre,
blockquote,
dl,
figure,
table,
p,
ul,
ol,
form {
  margin-bottom: 2.5rem;
}

/* --- 罫線: hr --- */
hr {
  margin-top: 3rem;
  margin-bottom: 3.5rem;
  border-width: 0;
  border-top: 1px solid var(--border-color);
}

/* --- 囲み枠など追加部品 --- */
.box-kadomaru_y,
.box-kadomaru_g,
.box-kadomaru_p {
  margin-bottom: 1.5rem;
  padding: 1.5rem 1.5rem 1.2rem;
  border-radius: 1rem;
  box-shadow: 0rem 0rem 0rem 0.5rem var(--white-color);
  background-color: var(--white-color);
}
.box-kadomaru_y p:last-child,
.box-kadomaru_g p:last-child,
.box-kadomaru_p p:last-child {
  margin-bottom: 0;
}
.box-kadomaru_y .text-center,
.box-kadomaru_g .text-center,
.box-kadomaru_p .text-center {
  text-align: center;
  padding: 0.5rem 0.5rem;
}
.box-kadomaru_y {
  border: dashed 2px var(--base-color);
}
.box-kadomaru_g {
  border: dashed 2px var(--topia-green);
}
.box-kadomaru_p {
  border: dashed 2px var(--group-color);
}

/* --- タイトル付きボックス --- */
.box-yellow,
.box-green {
  position: relative;
  margin: 2rem;
  padding: 1rem 2rem 0.5rem;
  border-radius: 1rem;
}
.box-yellow {
  border: solid 3px var(--base-color);
}
.box-green {
  border: solid 3px var(--topia-green);
}
.box-yellow .box-title,
.box-green .box-title {
  position: absolute;
  display: inline-block;
  top: -0.5rem;
  left: 0.5rem;
  padding: 0 1rem;
  line-height: 1;
  font-size: 1.3rem;
  font-weight: bold;
  background: var(--back-color);
}
.box-yellow .box-title {
  color: var(--base-color);
}
.box-green .box-title {
  color: var(--topia-green);
}
.box-yellow p,
.box-green p {
  margin: 0;
  padding: 0;
}

/* --- テーブル: table/th/td (汎用) --- */
table {
  border-collapse: collapse;
}
th,
td {
  padding: 12px 15px;
  text-align: left;
  border-bottom: 1px solid var(--border-color);
  font-size: 1rem;
}
th:first-child,
td:first-child {
  padding-left: 0;
}
th:last-child,
td:last-child {
  padding-right: 0;
}
/* 最終行のセル下線削除 */
tr:last-child th,
tr:last-child td {
  border-bottom: none;
}
/* 折り返し禁止 */
.nowrap-cell {
  white-space: nowrap;
}
/* 特定のテーブルセル全体に適用したい場合 */
.no-wrap-td td {
  white-space: nowrap;
}

/* --- テーブル: .et-striped (ストライプテーブル) --- */
.et-striped {
  width: 100%;
  box-sizing: border-box;
  border-collapse: collapse;
}
.et-striped th,
.et-striped td {
  padding: 0.5rem 0.6rem;
  border: 2px solid var(--back-color);
  text-align: left;
  font-size: smaller;
}
.et-striped th {
  background-color: #d2e48f;
}
.et-striped th:first-child,
.et-striped td:first-child {
  padding-left: 1rem;
}
.et-striped tr:nth-child(even) {
  background-color: #f0f6da;
}
.et-striped tr:hover {
  background-color: rgb(248, 182, 44, 0.2);
}

/* --- メイン画像: .mainimg --- */
.mainimg img {
  display: block;
  margin: auto;
  width: 100vw;
}

/* --- メインコンテンツ: main --- */
main {
  margin: 3rem 0 2rem 0;
}

/* --- 新着情報: .news --- */
.news h2 {
  padding-bottom: 0.5rem;
  border-bottom: 3px solid var(--base-color);
}
.news li {
  padding: 0.5rem 0;
  list-style-type: none;
  border-bottom: 1px solid var(--border-color);
}

/* --- パンくずリスト: .breadcrumb --- */
.breadcrumb {
  margin: calc(-3rem + 0.1rem) 0 1rem 0;
  padding: 0;
}
.breadcrumb li {
  list-style-type: none;
  display: inline-block;
}
/* 区切り記号（例: >）を追加 */
.breadcrumb li:not(:last-child)::after {
  content: '>';
  padding: 0 0.5rem;
  color: var(--text-color);
}
.breadcrumb li a {
  display: inline-block;
  color: var(--link-color);
}
/* パンくずリスト内のリストからカスタム記号を非表示にする */
.breadcrumb li::before {
  content: none;
  display: none;
}

/* --- フッター: footer --- */
footer {
  padding: 2rem 0;
  background-color: var(--back-color);
}

/* --- コピーライト: .copyright --- */
.copyright {
  padding: 1rem 0;
  text-align: center;
  font-size: 0.8125rem;
  background-color: var(--bottom-color);
}
.copyright a {
  display: inline-block;
  color: var(--base-color);
  text-decoration: none;
}

/* --- address タグの斜体解除 --- */
address {
  font-style: normal;
}

/* --- ページトップへ戻るボタン: #pagetop --- */
#pagetop {
  position: fixed;
  right: 0.9375rem;
  bottom: 0.9375rem;
}
#pagetop a {
  display: block;
  width: 3.125rem;
  padding: 0.625rem 0.3125rem;
  text-align: center;
  color: var(--white-color);
  background-color: var(--base-color);
  border-radius: 0.3rem;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}
#pagetop a:hover {
  background-color: var(--link-color);
}

/* --- とぴあカレンダー各月テーマ色 --- */
.cbg01,
.cbg02,
.cbg03,
.cbg04,
.cbg05,
.cbg06,
.cbg07,
.cbg08,
.cbg09,
.cbg10,
.cbg11,
.cbg12 {
  font-weight: bold;
  text-align: center;
}
.cbg01 {
  background-color: #fca694;
}
.cbg02 {
  background-color: #febb89;
}
.cbg03 {
  background-color: #fce381;
}
.cbg04 {
  background-color: #fcc0d2;
}
.cbg05 {
  background-color: #a4d99d;
}
.cbg06 {
  background-color: #aee3ea;
}
.cbg07 {
  background-color: #cac0e9;
}
.cbg08 {
  background-color: #9ed1f8;
}
.cbg09 {
  background-color: #8ca4c8;
}
.cbg10 {
  background-color: #fcc872;
}
.cbg11 {
  background-color: #ced284;
}
.cbg12 {
  background-color: #93d0d1;
}

/* --- メディアクエリ: 769px以上 (PC表示) --- */
@media screen and (min-width: 769px) {
  /* 769px・PC時はMENUボタンを非表示 */
  #open,
  #close {
    display: none;
  }
  #navi {
    display: block;
  }
}

/* --- メディアクエリ: 768px以下 (タブレット/モバイル表示) --- */
@media screen and (max-width: 768px) {
  /* 768px */
  .head {
    flex-direction: column;
    margin-bottom: 1.25rem;
    text-align: left;
  }
  .telbox {
    margin-left: 0;
    text-align: center;
  }
  /* #open, #close, #navi の表示制御 */
  #open,
  #close {
    position: absolute;
    top: 1.25rem;
    right: 0.75rem;
    width: 3.125rem;
    height: 3.125rem;
    border: none;
    z-index: 999;
    text-indent: 100%;
    white-space: nowrap;
    overflow: hidden;
    cursor: pointer;
    background-color: transparent;
    padding: 0;
  }
  /* 初期状態 (メニューが閉じている時) */
  #open {
    display: block;
    background: url(/hiroba-topia/tas/timg/button.png);
    background-repeat: no-repeat;
    background-size: contain;
  }
  #close {
    display: none;
    background: url(/hiroba-topia/tas/timg/close.png);
    background-repeat: no-repeat;
    background-size: contain;
  }
  #navi {
    display: none;
  }
  /* 開閉状態 (headerに.is-openが付与された時) */
  header.is-open #open {
    display: none;
  }
  header.is-open #close {
    display: block;
  }
  header.is-open #navi {
    display: block;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    background-color: rgba(255, 250, 240, 0.75);
    z-index: 900;
    padding-top: 5rem;
    box-sizing: border-box;
  }
  /* ナビゲーションバーの表示調整用 */
  nav ul {
    flex-direction: column;
    background-color: var(--white-color);
    width: 80%;
    margin: 0 auto;
    padding: 1rem 0;
  }
  nav li {
    padding-top: 0;
    margin-bottom: 0;
    border-bottom: 1px solid var(--border-color);
  }
  nav li a {
    padding: 0.6rem 1rem;
    text-align: left;
  }
  /* 大型の強調ボタンの極狭画面対応 */
  @media (max-width: 480px) {
    .button-large-em {
      font-size: 1rem;
      height: 40px;
      line-height: 40px;
    }
  }
}
