login, register, forgot-password, reset-password, confirm-email, users, and logs all commit to at least one full viewport tall via min-height:100dvh. Without compensation, the env banner's 28px pushes their content past body's fixed one-viewport box, creating a phantom scrollbar in the dev environment on exactly the routes where confusing dev with prod matters most. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
91 lines
1.3 KiB
SCSS
91 lines
1.3 KiB
SCSS
:host {
|
|
display: block;
|
|
min-height: calc(100dvh - var(--env-banner-height, 0px));
|
|
background: var(--mat-sys-surface);
|
|
}
|
|
|
|
.logs-page {
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
padding: 24px 28px 40px;
|
|
}
|
|
|
|
.back-link {
|
|
margin-left: -12px;
|
|
}
|
|
|
|
.page-header {
|
|
margin: 20px 0 26px;
|
|
}
|
|
|
|
h1,
|
|
p {
|
|
margin-top: 0;
|
|
}
|
|
|
|
h1 {
|
|
margin-bottom: 8px;
|
|
font-size: clamp(2rem, 4vw, 3rem);
|
|
}
|
|
|
|
.page-header > p:last-child {
|
|
color: var(--mat-sys-on-surface-variant);
|
|
}
|
|
|
|
.eyebrow {
|
|
margin-bottom: 6px;
|
|
color: var(--mat-sys-primary);
|
|
font-size: 0.75rem;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.page-state {
|
|
min-height: 240px;
|
|
display: grid;
|
|
place-content: center;
|
|
justify-items: center;
|
|
gap: 10px;
|
|
padding: 24px;
|
|
color: var(--mat-sys-on-surface-variant);
|
|
text-align: center;
|
|
}
|
|
|
|
.admin-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 10px;
|
|
margin-bottom: 18px;
|
|
}
|
|
|
|
.filters {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 10px;
|
|
margin-bottom: 18px;
|
|
}
|
|
|
|
.filters mat-form-field {
|
|
min-width: 160px;
|
|
}
|
|
|
|
.logs-grid {
|
|
height: 640px;
|
|
width: 100%;
|
|
}
|
|
|
|
@media (max-width: 700px) {
|
|
.logs-page {
|
|
padding: 20px 16px 32px;
|
|
}
|
|
|
|
.admin-actions {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.admin-actions button {
|
|
width: 100%;
|
|
}
|
|
}
|