/* Shared content controls. Header, footer, homepage and PDF templates keep their own layout. */
#content {
    --control-height: 38px;
    --control-small-height: 30px;
    --control-font: .83rem;
    --control-small-font: .7885rem;
}

#content .button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    box-sizing: border-box;
    min-height: var(--control-height);
    height: auto;
    padding: 7px 12px;
    margin-block: 0;
    line-height: 1.25;
    font-family: inherit;
    font-size: var(--control-font) !important;
    text-align: center;
    vertical-align: middle;
}

/* Single-line fields use the same outer height as the primary action. */
#content :is(input, select):not([type=checkbox], [type=radio], [type=hidden], [type=file], [type=range], [type=color], [multiple]):not([size]) {
    box-sizing: border-box;
    height: var(--control-height);
    min-height: var(--control-height);
    padding-block: 6px;
    line-height: 1.25;
    font-family: inherit;
    font-size: var(--control-font) !important;
}

/* Small text actions, including table rows, task controls and editor toolbars. */
#content :is(td, .module-list-actions, .report-actions, .admin-catalogue-row-actions, .management-task-controls, .management-row-editor .management-actions, .description-rich-toolbar) .button,
#content .button:is(.button-small, .button-sm, .management-task-toggle, .management-icon-action) {
    min-height: var(--control-small-height);
    height: auto;
    padding: 4px 8px;
    font-size: var(--control-small-font) !important;
    line-height: 1.25;
}

/* Icon-only actions keep an equal width and height; tooltips are not button text. */
#content .button:has(> .icon-tooltip):not(:has(> span:not(.icon-tooltip, .portal-icon))),
#content .button:is(.admin-icon-button, .management-task-toggle, .management-icon-action) {
    min-width: var(--control-small-height);
    width: var(--control-small-height);
    min-height: var(--control-small-height);
    height: var(--control-small-height);
    padding: 4px;
    flex-shrink: 0;
}

#content :is(.management-task-controls, .management-task-fields) :is(input, select):not([multiple]) {
    min-height: var(--control-small-height);
    height: var(--control-small-height);
    padding-block: 4px;
    font-size: var(--control-small-font) !important;
}

#content :is(td, th) { vertical-align: middle; }
#content td .button { margin-block: 0; }
#content :is(.publication-filters, .study-filters, .management-task-filters, .management-personnel-filters, .management-content-search, .admin-catalogue-filters, .campus-filters, .kvl-filters) {
    align-items: end;
}
#content :is(.publication-filters, .study-filters, .management-task-filters, .management-personnel-filters, .management-content-search, .admin-catalogue-filters, .campus-filters, .kvl-filters) .button {
    min-height: var(--control-height);
    height: auto;
    align-self: end;
    margin-block: 0;
    padding: 7px 12px;
    font-size: var(--control-font) !important;
}

#content .form-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 18px;
}
#content form > :is(input:not([type=hidden]), textarea, select, .field, .form-grid, .description-number-grid) + .button {
    margin-top: 18px;
}

/* Status tags share the catalogue spacing without changing metric/status colours. */
#content :is(td, .publication-metrics, .project-state) .badge,
#content .admin-status-tag {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    padding: 2px 6px;
    margin-block: 0;
    border-radius: 4px;
    line-height: 1.35;
    font-size: .7rem !important;
    vertical-align: middle;
}
#content .publication-metrics { gap: 5px; }

/* Hidden upload forms and dialogs must stay hidden despite their control classes. */
#content .button[hidden], #content .form-actions[hidden] { display: none; }

/* Catalogue typography used to override the shared button font. */
#content.content-typography .admin-catalogue .admin-catalogue-row-actions .button {
    font-size: var(--control-small-font) !important;
}
#content.content-typography .admin-catalogue .admin-filter-actions .button {
    font-size: var(--control-font) !important;
}
#content :is(.description-rich-toolbar, .rich-editor-toolbar, .rich-editor-table-tools) :is(button, select) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: var(--control-small-height);
    min-height: var(--control-small-height);
    padding-block: 4px;
    line-height: 1.25;
    font-size: var(--control-small-font) !important;
}

/* Keep overflowing task actions and their tooltips inside the table scroller. */
#content .management-module .table-wrap {
    contain: layout paint;
}

/* Pavilion numbers retain their compact map navigation size. */
#content .campus-page .campus-building-buttons .button {
    min-width: 1.65rem;
    min-height: 1.8rem;
    height: 1.8rem;
    padding: .2rem .35rem;
    font-size: .8rem !important;
}
#content .campus-page .campus-building-buttons {
    gap: .2rem;
    flex-wrap: nowrap;
    max-width: 100%;
    overflow-x: auto;
    padding-block: 3px;
}
#content .campus-building-buttons > * { flex-shrink: 0; }
#content .portal-error { max-width: 760px; padding-block: 2rem; }
#content .portal-error-code { font-size: 6rem !important; font-weight: 600; letter-spacing: .12em; color: var(--cancel-hover); margin: 0 0 .6rem; }
#content .portal-error-code .fa-face-frown-open { font-size: inherit !important; color: inherit; letter-spacing: normal; }
#content .portal-error .form-actions { margin-top: 1.5rem; }

#content .campus-directory .study-filters { flex-wrap: wrap; }
#content .campus-directory-query { flex: 1 1 280px; min-width: 0; }
#content .campus-directory-profile { margin: 24px 0; }
#content .campus-directory .profile-facts th { text-transform: none; letter-spacing: normal; }
#content .campus-directory .table-wrap { max-width: 100%; overflow-x: auto; contain: layout paint; }
#content .campus-directory .table-wrap:not(.profile-overview) table { min-width: 680px; }

#content .campus-directory-query { position: relative; }
#content .directory-suggestions {
    position: absolute;
    top: 100%;
    inset-inline: 0;
    z-index: 40;
    max-height: 19rem;
    overflow-y: auto;
    margin: 4px 0 0;
    padding: 4px;
    list-style: none;
    border: 1px solid var(--line);
    border-radius: 5px;
    background: #fff;
    box-shadow: 0 5px 18px #173b5b22;
}
#content .directory-suggestions[hidden] { display: none; }
#content .directory-suggestion {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 8px;
    min-height: 38px;
    color: var(--navy);
    text-decoration: none;
    overflow-wrap: anywhere;
    border-radius: 3px;
}
#content .directory-suggestion:is(:hover, [aria-selected=true]) {
    background: var(--paper) url("card-geometry.svg?v=2") center/cover no-repeat;
    text-decoration: none;
}
#content.content-typography .directory-suggestion-meta { font-size: .75rem !important; color: var(--muted); }
#content .directory-suggestions-empty { padding: 8px; color: var(--muted); }

#content .campus-page .campus-building-buttons .button.tooltip-trigger {
    min-width: 1.65rem;
    width: auto;
    min-height: 1.8rem;
    height: 1.8rem;
    padding: .2rem .35rem;
}
#content .campus-page .campus-map-toolbar .button {
    min-height: 30px;
    height: 30px;
    padding: 4px 8px;
    line-height: 1.25;
}
