/* Componentes compartidos por las páginas de lectores y del panel. */
:root {
    --ui-radius: 12px;
    --ui-space: 1rem;
    --ui-control-height: 44px;
    --ui-surface: #faf7ff;
    --ui-border: #e4dbee;
}
.page :is(.btn-primary, .btn-secondary, .btn-secondary-light, .btn-danger) {
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    min-height: var(--ui-control-height);
    padding: .7rem 1.1rem;
    border-radius: var(--ui-radius);
    font-family: inherit;
    font-size: .85rem;
    font-weight: 500;
    line-height: 1.4;
    text-align: center;
    text-decoration: none;
    white-space: normal;
}
.page :is(.btn-primary, .btn-secondary, .btn-secondary-light, .btn-danger).btn-sm {
    min-height: 38px;
    padding: .5rem .8rem;
    font-size: .78rem;
    border-radius: 9px;
}
.page :is(.btn-primary, .btn-secondary, .btn-secondary-light, .btn-danger):focus-visible {
    outline: 3px solid #a68ad4;
    outline-offset: 3px;
}
.page :is(.btn-primary, .btn-secondary, .btn-secondary-light, .btn-danger):disabled {
    opacity: .5;
    cursor: not-allowed;
    box-shadow: none;
    transform: none;
}
.page .page-header { gap: 1rem; flex-wrap: wrap; margin-bottom: 1.75rem; }
.page .page-header h1 { margin: 0; line-height: 1.2; }
.page .form-actions { gap: .75rem; flex-wrap: wrap; }
.page .form :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]), select, textarea) {
    box-sizing: border-box;
    border-radius: 10px;
    min-height: var(--ui-control-height);
    line-height: 1.5;
}
.page .alert { border-radius: var(--ui-radius); padding: .85rem 1rem; font-size: .85rem; line-height: 1.6; }
.page .ui-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .8rem;
    padding: clamp(1.5rem, 4vw, 2.5rem);
    margin: 1.25rem 0;
    border: 1px dashed #d9cbe9;
    border-radius: 16px;
    background: var(--ui-surface);
    text-align: center;
    box-shadow: none;
}
.page .ui-empty > :is(h2, h3) { max-width: 32ch; margin: 0; color: #553e68; font: 400 clamp(1.2rem, 2vw, 1.5rem)/1.35 Georgia, serif; letter-spacing: -.025em; }
.page .ui-empty > p { max-width: 55ch; margin: 0; color: #796b84; font-size: .85rem; line-height: 1.7; }
.page .ui-empty > .btn-primary, .page .ui-empty > .btn-secondary { margin-top: .25rem; }
.page .ui-empty .dashboard-hero-actions { margin: .25rem 0 0; }
@media (prefers-reduced-motion: no-preference) {
    .page :is(.btn-primary, .btn-secondary, .btn-secondary-light, .btn-danger) { transition: background-color .18s ease, border-color .18s ease, box-shadow .18s ease; }
}
@media (max-width: 640px) {
    .page :is(.btn-primary, .btn-secondary, .btn-secondary-light, .btn-danger).btn-sm { min-height: var(--ui-control-height); }
    .page .page-header { margin-bottom: 1.25rem; }
    .page .ui-empty { padding: 1.5rem 1rem; }
}
