@layer layout {
  .rx-split {
    display: grid;
    gap: var(--rx-space-6);
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
    min-inline-size: 0;
  }

  .rx-workspace {
    display: grid;
    align-items: start;
    gap: var(--rx-space-8);
    min-inline-size: 0;
    @container rx-surface (inline-size >= 52rem) {
      & {
        grid-template-columns: minmax(0, 1fr) minmax(16rem, 0.48fr);
      }
    }
  }

  .rx-container {
    inline-size: min(100% - var(--rx-space-8), var(--rx-page));
    justify-self: center;
    min-inline-size: 0;
  }

  .rx-stack {
    display: grid;
    align-content: start;
    gap: var(--rx-space-6);
    min-inline-size: 0;
    & > * {
      min-inline-size: 0;
    }

    &[data-space="large"] {
      gap: var(--rx-space-12);
    }

    &[data-space="small"] {
      gap: var(--rx-space-3);
    }
  }

  /* 内容幅で操作を折り返すため、ここはGridではなくFlexを使う。 */
  .rx-cluster {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--rx-space-2);
  }

  .rx-measure {
    inline-size: min(100%, var(--rx-measure));
    justify-self: center;
    min-inline-size: 0;
  }
}

@layer layout {
  .rx-form {
    display: grid;
    gap: var(--rx-space-8);
    inline-size: 100%;
    min-inline-size: 0;
    justify-self: center;
  }
}

@layer layout {
  .rx-workbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--rx-space-3);
    padding-block: 0;
    box-shadow: inset 0 -0.0625rem var(--rx-border);
    @container rx-surface (inline-size < 38rem) {
      & > .rx-save-status {
        order: -1;
        flex-basis: 100%;
      }
    }
  }
  .rx-mode-switch {
    min-inline-size: 0;
  }
}

@layer layout {
  .rx-fields-inline {
    display: grid;
    gap: var(--rx-space-4);
    @container rx-surface (inline-size >= 38rem) {
      & {
        grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 0.65fr);
      }
    }
  }
  .rx-form-actions {
    display: grid;
    gap: var(--rx-space-4);
    padding-block-start: var(--rx-space-4);
    border-block-start: 0.0625rem solid var(--rx-border);
  }
}

@layer layout {
  .rx-reading-pane {
    display: grid;
    gap: var(--rx-space-6);
    inline-size: min(100%, 44rem);
    min-inline-size: 0;
    justify-self: center;
  }
}

@layer utilities {
  .rx-visually-hidden {
    position: absolute;
    inline-size: 0.0625rem;
    block-size: 0.0625rem;
    padding: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
  }
}

@layer layout {
  /*
    作業面（シート）の見た目。SurfaceとAppShellの作業面は同じ一枚の白い紙で、ここだけで定義する。
    机のクリーム色の地の上に置き、1pxの輪郭と浅い影で浮かせる。詳細度を持たせず、各コンポーネントの指定を妨げない。
    どのコンポーネントのCSSでも読み込むlayout.cssに置き、AppShellだけを使う画面でも欠けないようにする。
  */
  :where(
    .rx-surface,
    .rx-app-shell > .body > .main > .workspace,
    .rx-app-shell > .body > .main > .rx-wing > .layout > .main > .workspace
  ) {
    border-radius: var(--rx-radius-sheet);
    background: var(--rx-surface);
    box-shadow: var(--rx-shadow-sheet);
  }
}
