| // Copyright (C) 2026 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| .pf-memscope-page { |
| --pf-border-width: 0.5px; |
| // Light-mode page chrome: a slightly cool-grey page so the white panels |
| // read as raised cards. Dark mode keeps the theme defaults (left unset). |
| --pf-col-base: #f6f6f6; |
| --pf-col-surface: #ffffff; |
| --pf-col-inset: #f1f1f1; |
| --pf-col-border: #e0e0e0; |
| |
| .pf-theme-provider--dark & { |
| --pf-col-base: lch(4.52 0.3 272); |
| --pf-col-surface: lch(7.67 0.75 272); |
| --pf-col-inset: #242424; |
| --pf-col-border: #242424; |
| } |
| |
| background: var(--pf-col-base); |
| height: 100%; |
| overflow-y: auto; |
| |
| .pf-memscope-page__content { |
| max-width: 1400px; |
| margin-inline: auto; // Center the div |
| padding: 16px; |
| display: flex; |
| flex-direction: column; |
| gap: 12px; |
| } |
| |
| .pf-memscope-page__title { |
| margin: 0; |
| font-size: 22px; |
| font-weight: 700; |
| text-transform: uppercase; |
| color: var(--pf-color-text-muted); |
| } |
| |
| // Override some compoents from the base class |
| .pf-grid__header { |
| background: var(--pf-col-inset); |
| color: var(--pf-color-text-muted); |
| user-select: none; |
| text-transform: uppercase; |
| } |
| |
| // Drop the panel body padding when it wraps a grid — the grid's own |
| // header/cell padding is enough. |
| .pf-memscope-panel__body:has(> .pf-grid) { |
| padding: 0; |
| } |
| } |
| |
| .pf-memscope-subpage { |
| display: flex; |
| flex-direction: column; |
| gap: 12px; |
| } |
| |
| // First-load entrance: each block fades in and rises a little into place. |
| // Runs once when the element mounts (every section mounts at page open now, |
| // showing its loading panel), so it plays on first load rather than on every |
| // data swap. The 4-panel row cascades via nth-child. |
| @keyframes pf-memscope-enter { |
| from { |
| opacity: 0; |
| transform: translateY(8px); |
| } |
| |
| to { |
| opacity: 1; |
| transform: none; |
| } |
| } |
| |
| // Direct children of the page/subpage each fade up, cascading in document |
| // order via nth-child. |
| .pf-memscope-page__content > *, |
| .pf-memscope-subpage > * { |
| animation: pf-memscope-enter 0.35s ease-out both; |
| |
| @for $i from 1 through 8 { |
| &:nth-child(#{$i}) { |
| animation-delay: #{($i - 1) * 60}ms; |
| } |
| } |
| } |
| |
| @media (prefers-reduced-motion: reduce) { |
| .pf-memscope-page__content > *, |
| .pf-memscope-subpage > * { |
| animation: none; |
| } |
| } |