diff --git a/src/account/KcAccountUi.tsx b/src/account/KcAccountUi.tsx index 35aafcf..45bff06 100644 --- a/src/account/KcAccountUi.tsx +++ b/src/account/KcAccountUi.tsx @@ -8,6 +8,8 @@ import "@patternfly/patternfly/patternfly-addons.css"; import "@patternfly/react-core/dist/styles/base.css"; import "./theme.css"; +import "../console-ui.css"; +import "./workspace.css"; import { useReducer, useEffect } from "react"; import { startColorSchemeManagement } from "./colorScheme"; diff --git a/src/account/assets/logo.svg b/src/account/assets/logo.svg index 5a6a72d..44ff9ab 100644 --- a/src/account/assets/logo.svg +++ b/src/account/assets/logo.svg @@ -1,16 +1,13 @@ NEXUS ID - - - - - - - - - + + + - NEXUS - / ID + NEXUS + WORKSPACE + + + diff --git a/src/account/workspace.css b/src/account/workspace.css new file mode 100644 index 0000000..5664c9c --- /dev/null +++ b/src/account/workspace.css @@ -0,0 +1,301 @@ +/* Account-specific composition on top of the shared console language. */ + +.nexus-nav-context { + gap: 0.25rem; + margin: 0 0.35rem 1.25rem; + padding: 0.15rem 0.45rem 1.15rem; + border-bottom: 1px solid var(--console-line); +} + +.nexus-nav-context__eyebrow { + color: var(--console-primary-deep); + font-family: inherit; + font-size: 0.65rem; + font-weight: 750; + letter-spacing: 0.11em; +} + +.nexus-nav-context strong { + color: var(--console-ink); + font-family: inherit; + font-size: 1.05rem; + font-weight: 720; +} + +.nexus-nav-context__rule { + width: 4.25rem; + height: 3px; + margin-top: 0.45rem; + background: linear-gradient( + 90deg, + var(--console-teal) 0 34%, + var(--console-amber) 34% 67%, + var(--console-coral) 67% + ); + opacity: 1; + mask-image: none; +} + +.nexus-nav-label__icon { + color: var(--console-faint); +} + +.pf-v5-c-nav__link:hover .nexus-nav-label__icon, +.pf-v5-c-nav__link:focus .nexus-nav-label__icon, +.pf-v5-c-nav__link.pf-m-current .nexus-nav-label__icon { + color: var(--console-primary); + transform: none; +} + +.pf-v5-c-page__main-section:first-child { + padding-top: clamp(2rem, 4vw, 3.5rem); + padding-bottom: clamp(1.5rem, 2.5vw, 2.25rem); + border-bottom: 0; + background: transparent; + backdrop-filter: none; +} + +.pf-v5-c-page__main-section:first-child::after { + display: none; +} + +.nexus-page-intro { + align-items: center; +} + +.nexus-page-intro__kicker { + margin-bottom: 0.65rem; + color: var(--console-primary-deep); + font-family: inherit; + font-size: 0.7rem; + font-weight: 750; + letter-spacing: 0.11em; +} + +.nexus-page-intro__mark { + grid-template-columns: auto 3.5rem auto; + gap: 0.65rem; + padding: 0.65rem 0.85rem; + border: 1px solid var(--console-line); + border-radius: 999px; + color: var(--console-muted); + background: color-mix(in srgb, var(--console-surface) 76%, transparent); + font-family: inherit; + font-size: 0.62rem; + font-weight: 700; + box-shadow: 0 8px 22px rgba(23, 50, 77, 0.055); +} + +.nexus-page-intro__mark > span:first-child { + color: var(--console-primary-deep); + font-family: inherit; + font-size: 0.72rem; + font-weight: 800; +} + +.nexus-page-intro__mark i { + background: linear-gradient(90deg, var(--console-teal), var(--console-primary)); +} + +.pf-v5-c-page__main-section + .pf-v5-c-page__main-section { + padding-top: 0; + padding-bottom: 5rem; +} + +.nexus-profile-layout { + grid-template-columns: minmax(245px, 0.58fr) minmax(0, 1.65fr); + gap: clamp(1.25rem, 2.6vw, 2.5rem); +} + +.nexus-identity-card { + min-height: 0; + padding: 1.45rem; + border: 1px solid var(--console-line); + border-radius: var(--console-radius); + color: var(--console-ink); + background: linear-gradient( + 145deg, + var(--console-surface), + var(--console-surface-soft) + ); + box-shadow: var(--console-shadow); +} + +.nexus-identity-card::before { + position: absolute; + inset: 0 0 auto; + width: auto; + height: 4px; + background: linear-gradient( + 90deg, + var(--console-teal) 0 34%, + var(--console-amber) 34% 67%, + var(--console-coral) 67% + ); + content: ""; +} + +.nexus-identity-card::after { + right: -4.5rem; + bottom: -5.5rem; + border-color: color-mix(in srgb, var(--console-primary) 10%, transparent); + box-shadow: + 0 0 0 2.8rem color-mix(in srgb, var(--console-primary) 3%, transparent), + 0 0 0 5.6rem color-mix(in srgb, var(--console-teal) 2%, transparent); +} + +.nexus-identity-card__topline, +.nexus-identity-card__name > span, +.nexus-identity-card__facts dt, +.nexus-identity-card__footer { + color: var(--console-muted); + font-family: inherit; + font-weight: 700; +} + +.nexus-identity-card__topline i { + border-color: var(--console-primary); + border-radius: 50%; + background: var(--console-primary); + box-shadow: 0 0 0 4px color-mix(in srgb, var(--console-primary) 12%, transparent); + transform: none; +} + +.nexus-identity-card__avatar { + width: 5rem; + height: 5rem; + margin: 1.8rem 0 1.35rem; + border: 0; + border-radius: 18px; + color: #ffffff; + background: linear-gradient(145deg, var(--console-primary), var(--console-teal)); + box-shadow: 0 10px 24px color-mix(in srgb, var(--console-primary) 22%, transparent); + transform: none; +} + +.nexus-identity-card__avatar span { + font-family: inherit; + font-size: 1.35rem; + font-weight: 760; + transform: none; +} + +.nexus-identity-card__name h2, +.nexus-identity-card__facts dd { + color: var(--console-ink); +} + +.nexus-identity-card__name h2 { + font-family: inherit; + font-size: 1.55rem; + letter-spacing: -0.03em; +} + +.nexus-identity-card__name p { + color: var(--console-muted); +} + +.nexus-identity-card__facts > div { + border-top-color: var(--console-line); +} + +.nexus-profile-editor { + overflow: hidden; + border: 1px solid var(--console-line); + border-radius: var(--console-radius); + background: var(--console-surface); + box-shadow: var(--console-shadow); +} + +.nexus-profile-editor__header { + padding: 1.55rem clamp(1.25rem, 2.5vw, 2rem); + border-bottom: 1px solid var(--console-line); + background: linear-gradient( + 180deg, + var(--console-surface), + var(--console-surface-soft) + ); +} + +.nexus-profile-editor__header > span { + color: var(--console-primary-deep); + font-family: inherit; + font-weight: 750; +} + +.nexus-profile-editor__header h2 { + color: var(--console-ink); + font-family: inherit; + font-size: 1.28rem; +} + +.nexus-profile-editor__header p { + color: var(--console-muted); +} + +.nexus-profile-editor > .pf-v5-c-form { + padding: clamp(1.35rem, 3vw, 2.2rem); +} + +.nexus-profile-editor .pf-v5-c-form__group { + padding-block: 0.45rem; +} + +html[data-kc-theme-name="class"] .nexus-identity-card, +html[data-kc-theme-name="class"] .nexus-profile-editor, +html[data-kc-theme-name="class"] .pf-v5-c-card { + border-radius: var(--console-radius); +} + +html[data-kc-theme-name="class"] .nexus-identity-card { + border-color: var(--console-line); + color: var(--console-ink); + background: linear-gradient( + 145deg, + var(--console-surface), + var(--console-surface-soft) + ); + box-shadow: var(--console-shadow); +} + +html[data-kc-theme-name="class"] .nexus-identity-card::after { + display: block; +} + +html[data-kc-theme-name="class"] .nexus-identity-card__topline, +html[data-kc-theme-name="class"] .nexus-identity-card__name p, +html[data-kc-theme-name="class"] .nexus-identity-card__facts dt, +html[data-kc-theme-name="class"] .nexus-identity-card__footer { + color: var(--console-muted); +} + +html[data-kc-theme-name="class"] .nexus-identity-card__facts dd { + color: var(--console-ink); +} + +html[data-kc-theme-name="class"] .nexus-identity-card__avatar { + border: 0; + border-radius: 18px; + color: #ffffff; + background: linear-gradient(145deg, var(--console-primary), var(--console-teal)); + box-shadow: 0 10px 24px color-mix(in srgb, var(--console-primary) 22%, transparent); +} + +@media (max-width: 768px) { + .nexus-page-intro__mark { + display: none; + } + + .nexus-profile-layout { + grid-template-columns: 1fr; + } + + .nexus-identity-card { + position: relative; + top: auto; + } + + .nexus-profile-editor__header { + grid-template-columns: 1fr; + } +} diff --git a/src/admin/KcAdminUi.tsx b/src/admin/KcAdminUi.tsx index 133e420..7085064 100644 --- a/src/admin/KcAdminUi.tsx +++ b/src/admin/KcAdminUi.tsx @@ -16,6 +16,7 @@ import { routes } from "./routes"; import { getKcContext } from "./KcContext"; import "./index.css"; +import "../console-ui.css"; const { kcContext } = getKcContext(); diff --git a/src/admin/assets/logo.svg b/src/admin/assets/logo.svg index 5a6a72d..44ff9ab 100644 --- a/src/admin/assets/logo.svg +++ b/src/admin/assets/logo.svg @@ -1,16 +1,13 @@ NEXUS ID - - - - - - - - - + + + - NEXUS - / ID + NEXUS + WORKSPACE + + + diff --git a/src/console-ui.css b/src/console-ui.css new file mode 100644 index 0000000..1c0b34a --- /dev/null +++ b/src/console-ui.css @@ -0,0 +1,569 @@ +/* + * Shared account/admin workspace language. + * This layer intentionally comes after the owned Keycloak styles so the two + * consoles feel like one product without coupling their generated sources. + */ + +:root { + --console-ink: #17324d; + --console-muted: #667a8e; + --console-faint: #8da0b1; + --console-canvas: #f3f7fb; + --console-surface: #ffffff; + --console-surface-soft: #f8fbfe; + --console-nav: #edf4fa; + --console-line: #d9e4ed; + --console-line-strong: #b9cbd9; + --console-primary: #356fd6; + --console-primary-deep: #2459b4; + --console-teal: #279477; + --console-amber: #e9ad38; + --console-coral: #e86452; + --console-danger: #c94046; + --console-radius-sm: 8px; + --console-radius: 14px; + --console-shadow: 0 1px 2px rgba(23, 50, 77, 0.04), + 0 14px 38px rgba(23, 50, 77, 0.075); + --pf-v5-global--primary-color--100: var(--console-primary); + --pf-v5-global--primary-color--200: var(--console-primary-deep); + --pf-v5-global--link--Color: var(--console-primary-deep); + --pf-v5-global--link--Color--hover: #173f88; + --pf-v5-global--BackgroundColor--100: var(--console-surface); + --pf-v5-global--BackgroundColor--150: var(--console-surface-soft); + --pf-v5-global--BackgroundColor--200: var(--console-canvas); + --pf-v5-global--Color--100: var(--console-ink); + --pf-v5-global--Color--200: var(--console-muted); + --pf-v5-global--BorderColor--100: var(--console-line); + --pf-v5-global--BorderColor--200: var(--console-line-strong); + --pf-v5-c-page__main-section--m-light--BackgroundColor: transparent; + color-scheme: light; +} + +.pf-v5-theme-dark { + --console-ink: #eaf2f8; + --console-muted: #a4b5c4; + --console-faint: #8295a7; + --console-canvas: #0d1823; + --console-surface: #142332; + --console-surface-soft: #182a3a; + --console-nav: #101f2d; + --console-line: #294052; + --console-line-strong: #456176; + --console-primary: #78a8ff; + --console-primary-deep: #96baff; + --console-teal: #61c7aa; + --console-amber: #f2c45c; + --console-coral: #ff8173; + --console-danger: #ff858b; + --console-shadow: 0 18px 42px rgba(0, 0, 0, 0.26); + --pf-v5-global--primary-color--100: var(--console-primary); + --pf-v5-global--primary-color--200: var(--console-primary-deep); + --pf-v5-global--link--Color: #9dbfff; + --pf-v5-global--link--Color--hover: #c3d7ff; + --pf-v5-global--BackgroundColor--100: var(--console-surface); + --pf-v5-global--BackgroundColor--150: var(--console-surface-soft); + --pf-v5-global--BackgroundColor--200: var(--console-canvas); + --pf-v5-global--Color--100: var(--console-ink); + --pf-v5-global--Color--200: var(--console-muted); + --pf-v5-global--BorderColor--100: var(--console-line); + --pf-v5-global--BorderColor--200: var(--console-line-strong); + color-scheme: dark; +} + +html[data-kc-theme-name="class"] { + --console-ink: #18324a; + --console-muted: #61778c; + --console-canvas: #f4f9fd; + --console-nav: #edf6fc; + --console-line: #d4e3ee; + --console-line-strong: #abc4d7; + --console-primary: #3f7fd6; + --console-primary-deep: #2868c7; + --console-teal: #23966f; + --console-amber: #f0b92e; + --console-coral: #ef6654; +} + +html[data-kc-theme-name="class"].pf-v5-theme-dark { + --console-ink: #e7f1f9; + --console-muted: #9ab0c2; + --console-canvas: #0a1723; + --console-surface: #102435; + --console-surface-soft: #152c3e; + --console-nav: #0d2132; + --console-line: #2d485d; + --console-line-strong: #4d6c82; + --console-primary: #76aafa; + --console-primary-deep: #9bc0ff; + --console-teal: #58cba2; + --console-amber: #f2c45c; + --console-coral: #ff8173; +} + +html, +body, +#root, +.pf-v5-c-page { + min-height: 100%; +} + +body { + color: var(--console-ink); + background: var(--console-canvas); + font-family: "Segoe UI Variable", "Segoe UI", "PingFang SC", "Microsoft YaHei", + sans-serif; + font-size: 15px; +} + +.pf-v5-c-page, +.pf-v5-c-page__main, +.pf-v5-c-page__main-section, +.pf-v5-c-page__main-section.pf-m-light { + background: transparent; +} + +.pf-v5-c-page__main { + min-width: 0; + overflow-x: clip; + background-color: var(--console-canvas); + background-image: radial-gradient( + circle at 92% 1%, + color-mix(in srgb, var(--console-primary) 8%, transparent), + transparent 27rem + ), + linear-gradient( + 90deg, + color-mix(in srgb, var(--console-line) 20%, transparent) 1px, + transparent 1px + ); + background-size: + auto, + 112px 100%; +} + +/* Header: quiet, bright, and consistent across both consoles. */ +.pf-v5-c-masthead { + min-height: 68px; + border: 0; + border-bottom: 1px solid var(--console-line); + color: var(--console-ink); + background: color-mix(in srgb, var(--console-surface) 94%, transparent); + box-shadow: 0 6px 24px rgba(23, 50, 77, 0.055); + backdrop-filter: blur(18px); +} + +.pf-v5-c-masthead::after { + right: 0; + bottom: -1px; + width: min(34vw, 32rem); + height: 3px; + background: linear-gradient( + 90deg, + transparent 0 8%, + var(--console-teal) 8% 40%, + var(--console-amber) 40% 70%, + var(--console-coral) 70% + ); + opacity: 1; +} + +img.keycloak__pageheader_brand { + width: 180px; + height: 40px; + filter: drop-shadow(0 1px 1px rgba(23, 50, 77, 0.1)); +} + +.pf-v5-theme-dark img.keycloak__pageheader_brand { + padding: 0.2rem 0.45rem; + border: 1px solid rgba(255, 255, 255, 0.14); + border-radius: 10px; + background: #f8fbfe; +} + +.pf-v5-c-masthead .pf-v5-c-button.pf-m-link, +.pf-v5-c-masthead .pf-v5-c-button.pf-m-plain { + color: var(--console-muted); +} + +.pf-v5-c-masthead .pf-v5-c-button:hover { + color: var(--console-primary-deep); + background: var(--console-nav); +} + +/* Navigation is now a calm secondary surface instead of a competing dark panel. */ +.pf-v5-c-page__sidebar, +.pf-v5-c-page__sidebar-body { + color: var(--console-ink); + background: var(--console-nav); +} + +.pf-v5-c-page__sidebar { + width: 272px; + border-right: 1px solid var(--console-line); + box-shadow: none; +} + +.pf-v5-c-page__sidebar-body { + padding: 1.25rem 0.9rem 2rem; +} + +.pf-v5-c-page__sidebar-body::before { + display: none; +} + +.pf-v5-c-nav__section-title, +.pf-v5-c-nav__link, +.pf-v5-c-nav__group-title, +.pf-v5-c-nav__link.pf-m-expandable { + color: var(--console-muted); +} + +.pf-v5-c-nav__section-title { + color: var(--console-ink); + font-family: inherit; + font-size: 0.95rem; + font-weight: 700; +} + +.pf-v5-c-nav__group-title { + padding-top: 1.35rem; + color: var(--console-faint); + font-family: inherit; + font-size: 0.7rem; + font-weight: 700; + letter-spacing: 0.09em; +} + +.pf-v5-c-nav__list { + gap: 0.28rem; +} + +.pf-v5-c-nav__link { + min-height: 44px; + padding: 0.72rem 0.9rem; + border: 1px solid transparent; + border-radius: 10px; + font-size: 0.9rem; + font-weight: 600; + transition: + color 140ms ease, + background-color 140ms ease, + border-color 140ms ease; +} + +.pf-v5-c-nav__link:hover, +.pf-v5-c-nav__link:focus { + color: var(--console-ink); + border-color: color-mix(in srgb, var(--console-primary) 15%, var(--console-line)); + background: color-mix(in srgb, var(--console-surface) 82%, transparent); + transform: none; +} + +.pf-v5-c-nav__link.pf-m-current, +.pf-v5-c-nav__item.pf-m-current > .pf-v5-c-nav__link { + color: var(--console-primary-deep); + border-color: color-mix(in srgb, var(--console-primary) 22%, var(--console-line)); + background: var(--console-surface); + box-shadow: 0 8px 22px rgba(39, 82, 124, 0.08); +} + +.pf-v5-c-nav__link.pf-m-current::after { + right: 0.8rem; + width: 5px; + height: 18px; + border: 0; + border-radius: 999px; + background: var(--console-primary); + box-shadow: none; +} + +.pf-v5-c-page__main-section, +.pf-v5-c-page__main-breadcrumb { + padding-inline: clamp(1.25rem, 3.2vw, 3.75rem); +} + +.pf-v5-c-page__main-section > *, +.pf-v5-c-page__main-breadcrumb > * { + width: 100%; + max-width: 1380px; + margin-inline: auto; +} + +.pf-v5-c-page__main-breadcrumb { + border-bottom: 1px solid var(--console-line); + background: color-mix(in srgb, var(--console-surface) 82%, transparent); + backdrop-filter: blur(16px); +} + +.pf-v5-c-page__main-section { + padding-top: clamp(1.75rem, 3vw, 3rem); + padding-bottom: clamp(3rem, 6vw, 5.5rem); +} + +.pf-v5-c-title, +.pf-v5-c-content h1, +.pf-v5-c-content h2, +.pf-v5-c-page__main-title { + color: var(--console-ink); + font-family: "Segoe UI Variable Display", "Segoe UI", "PingFang SC", sans-serif; + letter-spacing: -0.035em; +} + +.pf-v5-c-title.pf-m-2xl, +.pf-v5-c-page__main-title { + font-size: clamp(2rem, 3vw, 2.75rem); + font-weight: 720; + line-height: 1.08; +} + +.pf-v5-c-title.pf-m-2xl::before, +.pf-v5-c-page__main-title::before { + display: none; +} + +.pf-v5-c-content > p, +.pf-v5-c-text-content > p, +.pf-v5-c-helper-text, +.pf-v5-c-form__helper-text { + color: var(--console-muted); + line-height: 1.65; +} + +/* Every working surface shares the same edge, depth and spacing rhythm. */ +.pf-v5-c-card, +.pf-v5-c-data-list, +.pf-v5-c-table, +.pf-v5-c-modal-box, +.pf-v5-c-drawer__panel, +.pf-v5-c-popover__content, +.pf-v5-c-menu, +.pf-v5-c-empty-state { + border: 1px solid var(--console-line); + border-radius: var(--console-radius); + color: var(--console-ink); + background: var(--console-surface); + box-shadow: var(--console-shadow); +} + +.pf-v5-c-card, +.pf-v5-c-table, +.pf-v5-c-modal-box { + overflow: hidden; +} + +.pf-v5-c-card__title { + color: var(--console-ink); + font-family: inherit; + font-size: 1.08rem; + font-weight: 700; + letter-spacing: -0.015em; +} + +.pf-v5-c-card__header, +.pf-v5-c-modal-box__header { + border-bottom: 1px solid var(--console-line); + background: linear-gradient( + 180deg, + var(--console-surface), + var(--console-surface-soft) + ); +} + +.pf-v5-c-table thead, +.pf-v5-c-data-list__item:first-child { + color: var(--console-muted); + background: var(--console-surface-soft); + font-family: inherit; + font-size: 0.74rem; + font-weight: 700; + letter-spacing: 0.055em; + text-transform: uppercase; +} + +.pf-v5-c-table tr > *, +.pf-v5-c-data-list__item { + border-bottom-color: var(--console-line); +} + +.pf-v5-c-table tbody tr:hover > *, +.pf-v5-c-data-list__item:not(:first-child):hover { + background: color-mix(in srgb, var(--console-primary) 4%, var(--console-surface)); +} + +.pf-v5-c-toolbar__content { + padding-inline: 0; +} + +.pf-v5-c-form__label-text { + color: var(--console-ink); + font-weight: 650; +} + +.pf-v5-c-form-control, +.pf-v5-c-select__toggle, +.pf-v5-c-menu-toggle, +.pf-v5-c-number-input, +.pf-v5-c-search-input { + min-height: 42px; + border-color: var(--console-line-strong); + border-radius: var(--console-radius-sm); + color: var(--console-ink); + background: var(--console-surface); + box-shadow: 0 1px 1px rgba(23, 50, 77, 0.025); +} + +.pf-v5-c-form-control:hover, +.pf-v5-c-menu-toggle:hover, +.pf-v5-c-search-input:hover { + border-color: color-mix(in srgb, var(--console-primary) 48%, var(--console-line)); +} + +.pf-v5-c-form-control:focus-within, +.pf-v5-c-menu-toggle:focus, +.pf-v5-c-menu-toggle.pf-m-expanded, +.pf-v5-c-search-input:focus-within { + border-color: var(--console-primary); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--console-primary) 15%, transparent); +} + +.pf-v5-c-button { + min-height: 40px; + border-radius: var(--console-radius-sm); + font-weight: 650; + letter-spacing: 0; +} + +.pf-v5-c-button.pf-m-primary { + color: #ffffff; + background: var(--console-primary); + box-shadow: 0 7px 18px color-mix(in srgb, var(--console-primary) 22%, transparent); +} + +.pf-v5-c-button.pf-m-primary:hover { + background: var(--console-primary-deep); + box-shadow: 0 9px 22px color-mix(in srgb, var(--console-primary) 27%, transparent); + transform: translateY(-1px); +} + +.pf-v5-c-button.pf-m-secondary { + border-color: var(--console-line-strong); + color: var(--console-ink); + background: var(--console-surface); +} + +.pf-v5-c-button.pf-m-danger { + background: var(--console-danger); +} + +.pf-v5-c-tabs { + border-bottom: 1px solid var(--console-line); +} + +.pf-v5-c-tabs__link { + color: var(--console-muted); + font-weight: 650; +} + +.pf-v5-c-tabs__item.pf-m-current .pf-v5-c-tabs__link { + color: var(--console-primary-deep); +} + +.pf-v5-c-tabs__link::after { + height: 3px; + border-color: var(--console-primary); +} + +.pf-v5-c-label { + border-radius: 999px; + font-weight: 650; +} + +.pf-v5-c-alert { + border: 1px solid var(--console-line); + border-radius: var(--console-radius); + box-shadow: 0 8px 24px rgba(23, 50, 77, 0.06); +} + +.pf-v5-c-empty-state { + border-style: dashed; + background: color-mix(in srgb, var(--console-surface) 88%, transparent); +} + +.pf-v5-c-switch__input:checked ~ .pf-v5-c-switch__toggle, +input[type="checkbox"], +input[type="radio"] { + accent-color: var(--console-primary); +} + +.keycloak__form { + max-width: 1160px; +} + +.keycloak__form_actions { + border-top-color: var(--console-line); + background: color-mix(in srgb, var(--console-surface) 92%, transparent); + box-shadow: 0 -10px 30px rgba(23, 50, 77, 0.055); +} + +div.w-tc-editor { + border-color: var(--console-line); + border-radius: var(--console-radius-sm); +} + +:focus-visible { + outline: 2px solid var(--console-primary) !important; + outline-offset: 3px; +} + +@media (max-width: 768px) { + .pf-v5-c-masthead { + min-height: 60px; + gap: 0.5rem; + padding-inline: 0.75rem; + } + + .pf-v5-c-masthead::after { + width: 52vw; + } + + .pf-v5-c-page__sidebar { + width: min(88vw, 310px); + min-width: 0; + max-width: min(88vw, 310px); + box-shadow: 16px 0 40px rgba(23, 50, 77, 0.16); + } + + img.keycloak__pageheader_brand { + width: 156px; + height: 36px; + } + + .pf-v5-c-page__main-section, + .pf-v5-c-page__main-breadcrumb { + padding-inline: 1rem; + } + + .pf-v5-c-page__main-section { + padding-top: 1.5rem; + padding-bottom: 3.5rem; + } + + .pf-v5-c-card, + .pf-v5-c-data-list, + .pf-v5-c-table, + .pf-v5-c-modal-box, + .pf-v5-c-empty-state { + border-radius: 10px; + } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + scroll-behavior: auto !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } +}