:root {
    --app-page-max-width: 70rem;
    --app-page-wide-max-width: 90rem;
    --app-page-narrow-max-width: 42rem;
    --app-page-gutter: 1rem;
    --app-page-top-space: 6rem;
    --app-layout-gap: 1rem;
    --app-card-radius: 0.625rem;
}

.app-page {
    width: min(var(--app-page-max-width), calc(100% - (var(--app-page-gutter) * 2)));
    max-width: 100%;
    margin: var(--app-page-top-space) auto 3rem;
    box-sizing: border-box;
}

html.menu body #page.app-page {
    margin-left: auto;
    margin-right: auto;
}

.app-page--wide {
    --app-page-max-width: var(--app-page-wide-max-width);
}

.app-page--narrow {
    --app-page-max-width: var(--app-page-narrow-max-width);
}

.app-page-header,
.app-page-actions,
.app-form-actions,
.app-responsive-stack {
    display: flex;
    gap: var(--app-layout-gap);
}

.app-page-header {
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--app-layout-gap);
}

.app-page-header > :first-child,
.app-page-header h1,
.app-page-header h2 {
    min-width: 0;
}

.app-page-actions,
.app-form-actions {
    align-items: center;
    flex-wrap: wrap;
}

.app-page-actions > *,
.app-form-actions > * {
    max-width: 100%;
    box-sizing: border-box;
}

.app-form-actions {
    justify-content: flex-end;
}

.app-card {
    max-width: 100%;
    padding: 1.25rem;
    box-sizing: border-box;
    border-radius: var(--app-card-radius);
}

.app-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--app-layout-gap);
}

.app-form-grid > *,
.app-responsive-stack > * {
    min-width: 0;
}

.app-table-scroll {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    box-sizing: border-box;
    -webkit-overflow-scrolling: touch;
}

.app-table-scroll > table {
    margin-left: 0;
    margin-right: 0;
}

/* Override legacy containerBlock fixed widths inside standardized pages. */
.app-page .table-container,
.app-page.table-container {
    width: 100%;
    min-width: 0 !important;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
    box-sizing: border-box;
}

.app-fluid-media,
.app-fluid-media img,
.app-fluid-media canvas,
img.app-fluid-media,
canvas.app-fluid-media {
    max-width: 100%;
    height: auto;
    box-sizing: border-box;
}

.app-page input,
.app-page select,
.app-page textarea,
.app-page button {
    max-width: 100%;
    box-sizing: border-box;
}

html.app-touch-narrow .app-responsive-stack {
    flex-direction: column;
}

html.app-touch-narrow .app-responsive-stack > * {
    width: 100% !important;
    max-width: 100%;
    float: none !important;
}

html.app-touch-compact {
    --app-page-gutter: 0.5rem;
    --app-page-top-space: 5rem;
    --app-layout-gap: 0.75rem;
}

html.app-touch-compact .app-page-header {
    align-items: stretch;
    flex-direction: column;
}

html.app-touch-compact .app-form-grid {
    grid-template-columns: minmax(0, 1fr);
}

html.app-touch-compact .app-page .app-card {
    padding: 1rem;
}

html.app-touch-compact .app-page-actions > *,
html.app-touch-compact .app-form-actions > * {
    flex: 1 1 10rem;
}

html.app-touch-small .app-page-actions,
html.app-touch-small .app-form-actions {
    align-items: stretch;
    flex-direction: column;
}

html.app-touch-small .app-page-actions > *,
html.app-touch-small .app-form-actions > * {
    flex: 0 0 auto;
    width: 100%;
}

@media print {
    .app-page {
        width: 100%;
        max-width: none;
        margin: 0;
    }

    .app-page-actions,
    .app-form-actions,
    .app-print-hidden {
        display: none !important;
    }

    .app-table-scroll {
        overflow: visible;
    }
}
