/* Shared control geometry, scoped to the administration portal. */
.admin-page {
    --admin-control-height: 2rem;
    --admin-control-padding: .35rem .5rem;
    --admin-control-font-size: .85rem;
    --admin-field-width: 12rem;
}

.admin-page .form-row {
    align-items: flex-end;
    gap: .5rem;
}

.admin-page .form-row > label {
    flex: 0 1 var(--admin-field-width);
    min-width: 0;
    max-width: 100%;
    gap: .25rem;
}

.admin-page :is(.form-row, .tree-command-form, .user-role-form) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="file"]), select),
.admin-page :is(.form-row, .tree-command-form, .user-role-form, .ban-dialog-actions) button {
    box-sizing: border-box;
    height: var(--admin-control-height);
    min-width: 0;
    max-width: 100%;
    padding: var(--admin-control-padding);
    font-size: var(--admin-control-font-size);
    line-height: 1.25;
}

.admin-page :is(.form-row, .tree-command-form, .user-role-form) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea) {
    width: 100%;
    box-sizing: border-box;
}

.admin-page :is(.form-row, .tree-command-form, .user-role-form, .ban-dialog-actions) button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--border);
    background: var(--surface-strong);
}

/* Destructive actions are buttons, never link-like text. */
.admin-page button.danger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 1.75rem;
    padding: .25rem .5rem;
    border: 1px solid var(--border);
    border-radius: 0;
    background: var(--surface-strong);
    color: var(--text);
    font-size: var(--admin-control-font-size);
    line-height: 1.25;
    text-decoration: none;
    vertical-align: middle;
    cursor: pointer;
}
.admin-page button.danger:disabled { cursor: not-allowed; }
.admin-page :is(td, .admin-post-identity-actions) button:is(.action-btn, .danger, .mod-btn) {
    appearance: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 1.75rem;
    padding: .25rem .5rem;
    border-radius: 0;
    font-size: var(--admin-control-font-size);
    line-height: 1.25;
    vertical-align: middle;
}
.admin-page .table-actions {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    vertical-align: middle;
}
.admin-page .table-actions > button {
    flex: 0 0 auto;
    height: 1.75rem;
    margin: 0;
    white-space: nowrap;
}

.admin-page .tag-title-editor {
    display: flex;
    align-items: center;
    gap: .5rem;
}
.admin-page .tag-title-editor > input {
    flex: 1 1 var(--admin-field-width);
    min-width: 0;
    width: var(--admin-field-width);
}
.admin-page .tag-title-editor > :is(input, button) {
    box-sizing: border-box;
    height: var(--admin-control-height);
    margin: 0;
    padding: var(--admin-control-padding);
    font-size: var(--admin-control-font-size);
    line-height: 1.25;
}
.admin-page .tag-title-editor > button {
    flex: 0 0 auto;
    white-space: nowrap;
}

.admin-page .form-row > button { flex: 0 0 auto; }
.admin-page .form-row textarea { padding: var(--admin-control-padding); }
.admin-page .form-row input[type="file"] { height: var(--admin-control-height); padding: .25rem 0; }

/* Helper messages must not shift a field's baseline away from its action buttons. */
.admin-page .form-row > label:has(> .ip-validation-message) { position: relative; }
.admin-page .form-row .ip-validation-message { position: absolute; top: calc(100% + .25rem); left: 0; right: 0; }
.admin-page .form-row:has(.ip-validation-message:not(:empty)) { padding-bottom: 2rem; }

/* Registration forms share a two-column field grid across every row. */
.admin-page :is(#agent-panel-manage details, #chatbot-form-details) > .form-row:has(> label) {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: end;
    gap: .75rem;
}
.admin-page :is(#agent-panel-manage details, #chatbot-form-details) > .form-row > label:only-of-type { grid-column: 1 / -1; }

.admin-page .tree-command-form label { min-width: 0; font-size: var(--admin-control-font-size); }
.admin-page .user-profile-actions .tree-command-form { display: block; }
.admin-page .tree-primary-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
.admin-page .tree-moderation-actions { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .5rem; margin-top: .75rem; }
.admin-page .tree-moderation-actions > label { flex: 1 1 8rem; }
.admin-page .tree-moderation-actions > button { flex: 0 0 auto; }
.admin-page .user-profile-invitations .tree-command-form > label { flex: 1 1 7rem; }

@media (max-width: 600px) {
    .admin-page .form-row > label { flex: 1 1 100%; }
    .admin-page :is(#agent-panel-manage details, #chatbot-form-details) > .form-row:has(> label) { grid-template-columns: minmax(0, 1fr); }
    .admin-page .form-row > button { flex: 1 1 auto; }
    .admin-page .tree-primary-fields { grid-template-columns: minmax(0, 1fr); }
    .admin-page .tree-moderation-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .admin-page .tree-moderation-actions > label { grid-column: 1 / -1; }
    .admin-page .tree-moderation-actions > button { height: auto; min-height: var(--admin-control-height); align-self: stretch; }
}
