@layer pages {
  .msk-page,
  .msk-main {
    padding-block: 126px 104px;
  }

  .msk-breadcrumb {
    margin-bottom: 54px;
    color: var(--fg-muted);
    font-size: .78rem;
  }

  .msk-breadcrumb__list {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 10px;
    list-style: none;
  }

  .msk-breadcrumb__item {
    display: inline-flex;
    align-items: center;
    gap: 10px;
  }

  .msk-breadcrumb__item:not(:last-child)::after {
    content: "/";
    color: var(--line-strong);
    font-family: var(--msk-font-mono);
  }

  .msk-breadcrumb a {
    text-decoration-line: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: .22em;
  }

  .msk-page-header {
    max-width: min(72ch, 100%);
    padding-bottom: 34px;
    margin-bottom: 56px;
    border-bottom: 1px solid var(--rule);
  }

  .msk-page-header__title,
  .msk-entry__title,
  .msk-term-header__title {
    overflow-wrap: anywhere;
  }

  .msk-eyebrow {
    margin-bottom: 10px;
    color: var(--fg-muted);
    font-family: var(--msk-font-mono);
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
  }

  .msk-page-header__lead,
  .msk-term-header__lead {
    max-width: 62ch;
    margin-top: 20px;
    color: var(--fg-muted);
    font-size: 1.05rem;
    line-height: 1.9;
  }

  .msk-page-header__lead > * + *,
  .msk-term-header__lead > * + * {
    margin-top: 1em;
  }

  .msk-entry {
    max-width: min(72ch, 100%);
    margin-inline: auto;
  }

  .msk-entry--intro {
    margin-bottom: 48px;
  }

  .msk-entry--single,
  .msk-entry--event {
    max-width: min(920px, 100%);
  }

  .msk-entry__header {
    max-width: min(72ch, 100%);
    margin-bottom: 42px;
  }

  .msk-entry__content {
    max-width: min(72ch, 100%);
    margin-inline: auto;
    font-size: 1rem;
    line-height: 1.95;
  }

  .msk-entry__content > * + * {
    margin-top: 1.45em;
  }

  .msk-entry__content :where(h2, h3, h4) {
    scroll-margin-top: 96px;
    overflow-wrap: anywhere;
  }

  .msk-entry__content h2 {
    padding-bottom: .45em;
    margin-top: 2.8em;
    border-bottom: 1px solid var(--line-strong);
  }

  .msk-entry__content h3 {
    margin-top: 2.2em;
    font-size: 1.25rem;
    line-height: 1.55;
  }

  .msk-entry__content h4 {
    margin-top: 1.8em;
    font-size: 1.06rem;
  }

  .msk-entry__content :where(ul, ol) {
    padding-inline-start: 1.4em;
  }

  .msk-entry__content li + li {
    margin-top: .45em;
  }

  .msk-entry__content blockquote {
    padding: 20px 24px;
    color: var(--fg-muted);
    background: var(--bg-raised);
    border-inline-start: 4px solid var(--line-strong);
  }

  .msk-entry__content blockquote > * + * {
    margin-top: 1em;
  }

  .msk-entry__content :where(table) {
    display: block;
    width: 100%;
    overflow-x: auto;
    border-collapse: collapse;
    border-spacing: 0;
  }

  .msk-entry__content :where(th, td) {
    min-width: 10em;
    padding: 12px 14px;
    text-align: start;
    vertical-align: top;
    border: 1px solid var(--line);
  }

  .msk-entry__content th {
    background: var(--bg-raised);
    font-weight: 900;
  }

  .msk-entry__content :where(img, video, iframe) {
    max-width: 100%;
  }

  .msk-entry__content figcaption {
    margin-top: 8px;
    color: var(--fg-muted);
    font-size: .8rem;
    line-height: 1.7;
  }

  .msk-toc {
    max-width: min(72ch, 100%);
    padding: 24px 28px;
    margin: 0 auto 56px;
    background: var(--bg-raised);
    border: 1px solid var(--line);
  }

  .msk-toc__title {
    margin-bottom: 14px;
    font-size: 1.08rem;
  }

  .msk-toc__list {
    padding-inline-start: 1.4em;
  }

  .msk-toc__item + .msk-toc__item {
    margin-top: 6px;
  }

  .msk-toc a {
    text-decoration-line: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: .22em;
  }

  .msk-filter {
    margin-bottom: 36px;
    overflow-x: auto;
  }

  .msk-filter__list {
    display: flex;
    gap: 8px;
    min-width: max-content;
    list-style: none;
  }

  .msk-filter__link {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 9px 16px;
    color: var(--fg-muted);
    background: var(--bg-raised);
    border: 1px solid var(--line);
    font-size: .84rem;
    font-weight: 900;
    text-decoration: none;
  }

  .msk-filter__link:hover,
  .msk-filter__link.is-current {
    color: var(--fg);
    border-color: var(--line-strong);
    box-shadow: inset 0 -3px 0 var(--rule);
  }

  .msk-archive-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 26px;
  }

  .navigation.pagination {
    margin-top: 54px;
  }

  .pagination .nav-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
  }

  .pagination .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: 8px 12px;
    color: var(--fg);
    background: var(--bg-raised);
    border: 1px solid var(--line);
    font-family: var(--msk-font-mono);
    font-size: .8rem;
    text-decoration: none;
  }

  .pagination .page-numbers.current {
    color: var(--bg);
    background: var(--fg);
    border-color: var(--fg);
  }

  .pagination a.page-numbers:hover {
    border-color: var(--line-strong);
    box-shadow: inset 0 -3px 0 var(--rule);
  }

  .msk-entry__dates {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 22px;
    margin-top: 22px;
    color: var(--fg-muted);
    font-family: var(--msk-font-mono);
    font-size: .72rem;
  }

  .msk-entry__dates p {
    display: flex;
    gap: .7em;
  }

  .msk-entry__dates span {
    color: var(--fg);
    font-weight: 700;
  }

  .msk-entry__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 22px;
    list-style: none;
  }

  .msk-entry__image {
    margin-bottom: 46px;
  }

  .msk-entry__image img {
    display: block;
    width: 100%;
    height: auto;
  }

  .msk-post-nav {
    max-width: min(920px, 100%);
    padding-top: 34px;
    margin: 64px auto 0;
    border-top: 1px solid var(--line);
  }

  .msk-post-nav .nav-links {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
  }

  .msk-post-nav .nav-next {
    text-align: end;
  }

  .msk-post-nav a {
    display: block;
    min-height: 44px;
    padding: 14px 16px;
    background: var(--bg-raised);
    border: 1px solid var(--line);
  }

  .msk-post-nav span {
    display: block;
    margin-bottom: 4px;
    color: var(--fg-muted);
    font-size: .72rem;
  }

  .msk-post-nav strong {
    display: block;
    overflow-wrap: anywhere;
  }

  .msk-related {
    max-width: min(920px, 100%);
    padding: 0;
    margin: 76px auto 0;
  }

  .msk-related__title,
  .msk-past-events__title,
  .msk-term-group__title {
    padding-bottom: 14px;
    margin-bottom: 30px;
    border-bottom: 1px solid var(--rule);
  }

  .msk-join-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 22px;
  }

  .msk-join-card {
    display: flex;
    flex-direction: column;
    min-height: 100%;
    padding: 30px 28px;
    background: var(--bg-raised);
    border: 1px solid var(--line);
  }

  .msk-join-card__label {
    margin-bottom: 34px;
    color: var(--fg-muted);
    font-family: var(--msk-font-mono);
    font-size: .76rem;
    font-weight: 700;
  }

  .msk-join-card__title {
    margin-bottom: 16px;
    font-size: 1.35rem;
  }

  .msk-join-card__text {
    margin-bottom: 28px;
    color: var(--fg-muted);
    line-height: 1.85;
  }

  .msk-join-card__link {
    align-self: flex-start;
    margin-top: auto;
  }

  .msk-form-page {
    max-width: min(72ch, 100%);
    margin-inline: auto;
  }

  .msk-form-page__guidance,
  .msk-form-page__alternative,
  .msk-donation {
    padding: 24px 28px;
    background: var(--bg-raised);
    border: 1px solid var(--line);
  }

  .msk-form-page__guidance {
    margin-bottom: 38px;
  }

  .msk-form-page__guidance > * + *,
  .msk-form-page__alternative > * + *,
  .msk-donation > * + * {
    margin-top: 12px;
  }

  .msk-form-page__type {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 16px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--line);
  }

  .msk-form-page__type span {
    color: var(--fg-muted);
    font-size: .82rem;
  }

  .msk-form-page__notice {
    padding-inline-start: 14px;
    border-inline-start: 4px solid var(--line-strong);
    font-weight: 900;
  }

  .msk-form-page__form {
    margin-top: 38px;
  }

  .msk-form-page__alternative {
    margin-top: 38px;
  }

  .msk-form-page__alternative h2,
  .msk-donation__title {
    font-size: 1.25rem;
  }

  .msk-form-page__alternative ul {
    padding-inline-start: 1.25em;
  }

  .msk-donation {
    margin-bottom: 38px;
  }

  .msk-donation__account {
    padding: 14px 16px;
    background: var(--bg);
    border: 1px solid var(--line-strong);
    font-family: var(--msk-font-mono);
  }

  .msk-event-alert {
    max-width: min(920px, 100%);
    padding: 20px 24px;
    margin: 0 auto 34px;
    background: var(--bg-raised);
    border: 2px solid var(--rule);
  }

  .msk-event-alert strong {
    display: block;
    margin-bottom: 6px;
    font-size: 1.15rem;
  }

  .msk-event-date {
    margin-top: 18px;
    color: var(--fg);
    font-family: var(--msk-font-mono);
    font-weight: 700;
  }

  /*
   * 予定の「開催情報」と場所ページの「拠点のこと」は、どちらも
   * ラベルと値の定義リスト。見た目を分けると片方だけ古くなるので共有する。
   */
  .msk-event-details,
  .msk-place-spec {
    max-width: min(72ch, 100%);
    padding: 0;
    margin: 0 auto 56px;
  }

  .msk-event-details__title,
  .msk-place-spec__title {
    padding-bottom: 12px;
    margin-bottom: 0;
    border-bottom: 1px solid var(--rule);
  }

  .msk-event-details__row,
  .msk-place-spec__row {
    display: grid;
    grid-template-columns: minmax(8em, .35fr) 1fr;
    border-bottom: 1px solid var(--line);
  }

  .msk-event-details__row :where(dt, dd),
  .msk-place-spec__row :where(dt, dd) {
    padding: 14px 16px;
  }

  .msk-event-details__row dt,
  .msk-place-spec__row dt {
    background: var(--bg-raised);
    font-weight: 900;
  }

  .msk-event-details__row a {
    text-decoration-line: underline;
    text-underline-offset: .2em;
  }

  /* 地図ブロックの見た目は components.css が持つ。ここは前後の余白だけ。 */
  .msk-page .msk-map,
  .msk-entry--event .msk-map {
    max-width: min(72ch, 100%);
    margin: 0 auto 56px;
  }

  .msk-event-apply {
    max-width: min(72ch, 100%);
    padding-top: 38px;
    margin: 54px auto 0;
    border-top: 1px solid var(--line);
  }

  .msk-past-events {
    padding: 0;
    margin-top: 84px;
  }

  .msk-term-header {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(120px, 240px);
    align-items: center;
    gap: 36px;
    padding-bottom: 40px;
    margin-bottom: 72px;
    border-bottom: 1px solid var(--rule);
  }

  .msk-term-header__shape {
    display: block;
    width: min(220px, 100%);
    aspect-ratio: 1;
    justify-self: end;
    background: var(--msk-term-accent, var(--line-strong));
  }

  .msk-term-header__shape--circle {
    clip-path: circle(50%);
  }

  .msk-term-header__shape--triangle {
    clip-path: polygon(50% 0, 100% 100%, 0 100%);
  }

  .msk-term-header__shape--semicircle {
    clip-path: inset(0 0 50% 0);
  }

  .msk-term-group {
    padding: 0;
  }

  .msk-term-group + .msk-term-group {
    margin-top: 76px;
  }

  .msk-term-group__empty {
    padding: 22px 24px;
    color: var(--fg-muted);
    background: var(--bg-raised);
    border: 1px solid var(--line);
  }

  .msk-empty {
    max-width: min(72ch, 100%);
    padding: 36px;
    margin-inline: auto;
    text-align: center;
    background: var(--bg-raised);
    border: 1px solid var(--line);
  }

  .msk-empty__code {
    margin-bottom: 8px;
    color: var(--fg-muted);
    font-family: var(--msk-font-mono);
    font-size: clamp(3rem, 12vw, 7rem);
    font-weight: 700;
    line-height: 1;
  }

  .msk-empty__title {
    font-size: 1.35rem;
  }

  .msk-empty__text {
    margin: 14px 0 24px;
    color: var(--fg-muted);
  }

  .msk-search-results {
    display: grid;
    gap: 18px;
    max-width: min(72ch, 100%);
    margin-inline: auto;
  }

  .msk-search-result {
    padding: 24px 26px;
    background: var(--bg-raised);
    border: 1px solid var(--line);
  }

  .msk-search-result__title {
    margin-bottom: 10px;
    font-size: 1.2rem;
  }

  .msk-search-result__title a {
    text-decoration-line: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: .2em;
  }

  .msk-search-result__summary {
    color: var(--fg-muted);
  }

  .msk-search-form {
    max-width: min(36rem, 100%);
    margin: 24px auto 0;
    text-align: start;
  }

  .msk-search-form__label {
    display: block;
    margin-bottom: 8px;
    font-weight: 900;
  }

  .msk-search-form__controls {
    display: flex;
  }

  .msk-search-form__input {
    min-width: 0;
    min-height: 48px;
    flex: 1;
    padding: 10px 12px;
    color: var(--fg);
    background: var(--bg);
    border: 1px solid var(--line-strong);
    font: inherit;
  }

  .msk-search-form__submit {
    min-height: 48px;
    padding: 10px 20px;
    color: var(--bg);
    background: var(--fg);
    border: 1px solid var(--fg);
    font: inherit;
    font-weight: 900;
    cursor: pointer;
  }

  @media (max-width: 900px) {
    .msk-page,
    .msk-main {
      padding-block: 112px 80px;
    }

    .msk-breadcrumb {
      margin-bottom: 40px;
    }

    .msk-page-header {
      margin-bottom: 44px;
    }

    .msk-archive-grid,
    .msk-join-grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .msk-term-header {
      grid-template-columns: minmax(0, 1fr) minmax(100px, 170px);
    }
  }

  @media (max-width: 560px) {
    .msk-page,
    .msk-main {
      padding-block: 102px 64px;
    }

    .msk-breadcrumb {
      margin-bottom: 32px;
    }

    .msk-page-header {
      padding-bottom: 26px;
      margin-bottom: 36px;
    }

    .msk-page-header__lead {
      font-size: 1rem;
    }

    .msk-toc,
    .msk-form-page__guidance,
    .msk-form-page__alternative,
    .msk-donation,
    .msk-empty {
      padding: 20px;
    }

    .msk-archive-grid,
    .msk-join-grid,
    .msk-post-nav .nav-links {
      grid-template-columns: 1fr;
    }

    .msk-post-nav .nav-next {
      text-align: start;
    }

    .msk-join-card {
      padding: 24px 22px;
    }

    .msk-term-header {
      grid-template-columns: 1fr;
      gap: 24px;
      margin-bottom: 54px;
    }

    .msk-term-header__shape {
      width: 110px;
      justify-self: start;
    }

    .msk-event-details__row,
    .msk-place-spec__row {
      grid-template-columns: 1fr;
    }

    .msk-event-details__row dd,
    .msk-place-spec__row dd {
      padding-top: 0;
    }

    .msk-search-form__controls {
      display: grid;
      gap: 8px;
    }
  }
}
