/* Licensing owns product-level presentation. Foundation supplies the Blazor host and
   Foundry supplies the shell, navigation, identity and shared component behaviour. */
:root,
[data-bs-theme="light"] {
    color-scheme: light;
    --bs-primary: #1557c0;
    --bs-primary-rgb: 21, 87, 192;
    --bs-link-color: #1557c0;
    --bs-link-hover-color: #0f4397;
    --bs-body-color: #172236;
    --bs-body-color-rgb: 23, 34, 54;
    --bs-body-bg: #f5f7fa;
    --bs-body-bg-rgb: 245, 247, 250;
    --bs-secondary-color: #647188;
    --bs-secondary-color-rgb: 100, 113, 136;
    --bs-secondary-bg: #eef2f7;
    --bs-tertiary-bg: #f8fafc;
    --bs-light-rgb: 248, 250, 252;
    --bs-border-color: #dfe4ec;
    --bs-border-radius: .5rem;
    --bs-border-radius-sm: .375rem;
    --bs-border-radius-lg: .75rem;
    --portal-surface: #ffffff;
    --portal-surface-muted: #f8fafc;
    --portal-surface-raised: #ffffff;
    --portal-ink: #172236;
    --portal-muted: #647188;
    --portal-border: #dfe4ec;
    --portal-border-strong: #c9d1dd;
    --portal-brand: #1557c0;
    --portal-brand-strong: #0e3f91;
    --portal-brand-soft: #e9f0fc;
    --portal-accent: #007f83;
    --portal-shadow-sm: 0 1px 2px rgba(18, 34, 59, .05);
    --portal-shadow-md: 0 12px 32px rgba(18, 34, 59, .08);
}

[data-bs-theme="dark"] {
    color-scheme: dark;
    --bs-primary: #76a7ff;
    --bs-primary-rgb: 118, 167, 255;
    --bs-link-color: #8bb5ff;
    --bs-link-hover-color: #b6d0ff;
    --bs-body-color: #e8edf5;
    --bs-body-color-rgb: 232, 237, 245;
    --bs-body-bg: #101722;
    --bs-body-bg-rgb: 16, 23, 34;
    --bs-secondary-color: #a8b3c4;
    --bs-secondary-color-rgb: 168, 179, 196;
    --bs-secondary-bg: #1a2636;
    --bs-tertiary-bg: #111a26;
    --bs-light-rgb: 17, 26, 38;
    --bs-border-color: #2b3748;
    --portal-surface: #151f2d;
    --portal-surface-muted: #111a26;
    --portal-surface-raised: #1a2636;
    --portal-ink: #eef3fa;
    --portal-muted: #a8b3c4;
    --portal-border: #2b3748;
    --portal-border-strong: #3b4a5f;
    --portal-brand: #76a7ff;
    --portal-brand-strong: #a8c7ff;
    --portal-brand-soft: #172d50;
    --portal-accent: #5fc7c8;
    --portal-shadow-sm: 0 1px 2px rgba(0, 0, 0, .2);
    --portal-shadow-md: 0 16px 38px rgba(0, 0, 0, .24);
}

html {
    min-height: 100%;
    background: var(--bs-body-bg);
}

body {
    min-height: 100vh;
    margin: 0;
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
    font-family: "Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, sans-serif;
    font-size: .9375rem;
    font-feature-settings: "ss01" 1, "cv05" 1;
    line-height: 1.55;
    text-rendering: optimizeLegibility;
}

::selection {
    background: rgba(var(--bs-primary-rgb), .2);
}

a,
button,
input,
select,
textarea {
    transition-duration: 140ms;
    transition-property: color, background-color, border-color, box-shadow, opacity, transform;
    transition-timing-function: ease-out;
}

/* Foundry shell */
.navbar-theme {
    position: sticky !important;
    inset-block-start: 0;
    z-index: 1030;
    min-height: 4.5rem;
    padding: .65rem 0;
    background: color-mix(in srgb, var(--portal-surface) 94%, transparent) !important;
    border-bottom: 1px solid var(--portal-border) !important;
    box-shadow: 0 1px 0 rgba(18, 34, 59, .02);
    color: var(--portal-ink) !important;
    backdrop-filter: saturate(140%) blur(14px);
}

.navbar-theme .container-fluid {
    width: min(100% - 2rem, 1480px);
    padding: 0;
}

.navbar-theme .navbar-brand {
    display: inline-flex;
    align-items: center;
    min-width: 9rem;
    margin-right: 2rem;
    padding: 0;
}

.navbar-theme .navbar-brand img {
    width: auto;
    max-width: 10rem;
    height: 2.25rem !important;
    object-fit: contain;
}

.navbar-theme .navbar-toggler {
    padding: .5rem;
    border-color: var(--portal-border);
    box-shadow: none;
}

.navbar-theme .navbar-nav {
    align-items: center;
    gap: .25rem;
}

.navbar-theme .nav-link {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    padding: .55rem .75rem !important;
    border-radius: .45rem;
    color: var(--portal-muted) !important;
    font-size: .875rem;
    font-weight: 600;
}

.navbar-theme .nav-link:hover,
.navbar-theme .nav-link:focus-visible,
.navbar-theme .nav-link.show {
    background: var(--portal-surface-muted);
    color: var(--portal-ink) !important;
}

.navbar-theme .nav-link > i {
    color: var(--portal-brand);
    font-size: 1rem;
}

.navbar-theme .dropdown-menu {
    min-width: 16rem !important;
    margin-top: .65rem;
    padding: .5rem !important;
    background: var(--portal-surface-raised);
    border: 1px solid var(--portal-border);
    border-radius: .7rem;
    box-shadow: var(--portal-shadow-md);
}

.navbar-theme .dropdown-item {
    display: flex;
    align-items: center;
    gap: .7rem;
    min-height: 2.6rem;
    padding: .55rem .7rem !important;
    border-radius: .42rem;
    color: var(--portal-ink);
    font-size: .875rem;
}

.navbar-theme .dropdown-item:hover,
.navbar-theme .dropdown-item:focus {
    background: var(--portal-brand-soft);
    color: var(--portal-brand-strong);
}

.navbar-theme .dropdown-item i {
    width: 1.1rem;
    color: var(--portal-muted);
    text-align: center;
}

.navbar-theme .rounded-circle {
    border: 1px solid var(--portal-border);
    background: var(--portal-surface-muted);
}

.container-integrated {
    width: min(100% - 2rem, 1480px) !important;
    min-height: calc(100vh - 4.5rem);
    margin: 0 auto !important;
    padding: 2.5rem 0 1.5rem !important;
}

.container-integrated > footer.fixed-bottom {
    position: static !important;
    min-height: auto !important;
    height: auto !important;
    margin-top: 3rem;
    padding: 1.25rem 0 .5rem !important;
    background: transparent !important;
    border-top: 1px solid var(--portal-border) !important;
    color: var(--portal-muted) !important;
    font-size: .75rem;
}

.container-integrated > footer.fixed-bottom p {
    margin-left: 0 !important;
}

/* Product surfaces */
.min-width-0 {
    min-width: 0;
}

.portal-eyebrow {
    color: var(--portal-brand) !important;
    font-size: .6875rem;
    font-weight: 750;
    letter-spacing: .12em;
    line-height: 1.2;
    text-transform: uppercase;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    color: var(--portal-ink) !important;
    letter-spacing: -.015em;
}

h1 {
    letter-spacing: -.035em;
}

h1:focus {
    outline: none;
}

.card {
    --bs-card-bg: var(--portal-surface);
    --bs-card-border-color: var(--portal-border);
    --bs-card-border-radius: .7rem;
    margin-bottom: 0;
    border: 1px solid var(--portal-border);
    box-shadow: var(--portal-shadow-sm);
}

.card:hover {
    box-shadow: var(--portal-shadow-sm);
}

.card-header {
    padding: 1.15rem 1.35rem;
    background: transparent;
    border-bottom-color: var(--portal-border);
}

.card-body {
    color: var(--portal-ink);
}

.list-group {
    --bs-list-group-bg: var(--portal-surface);
    --bs-list-group-color: var(--portal-ink);
    --bs-list-group-border-color: var(--portal-border);
    --bs-list-group-action-hover-bg: var(--portal-surface-muted);
    --bs-list-group-action-active-bg: var(--portal-brand-soft);
}

.portal-icon {
    display: grid;
    flex: 0 0 auto;
    width: 2.55rem;
    height: 2.55rem;
    place-items: center;
    border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
    border-radius: .55rem;
    font-size: 1.1rem;
}

.portal-metric {
    position: relative;
    overflow: hidden;
    color: inherit;
}

.portal-metric::before {
    position: absolute;
    inset: 0 auto 0 0;
    width: 3px;
    background: var(--portal-brand);
    content: "";
    opacity: 0;
    transition: opacity 140ms ease-out;
}

.portal-metric:hover,
.portal-metric:focus-visible {
    border-color: var(--portal-border-strong);
    box-shadow: 0 8px 24px rgba(18, 34, 59, .08);
    transform: translateY(-1px);
}

.portal-metric:hover::before,
.portal-metric:focus-visible::before {
    opacity: 1;
}

.portal-metric .display-6 {
    font-size: clamp(1.75rem, 2.4vw, 2.35rem);
    font-variant-numeric: tabular-nums;
    letter-spacing: -.045em;
}

.portal-feature {
    position: relative;
    overflow: hidden;
    background: #10274a;
    color: #f8fbff;
    border: 1px solid #244b79;
    border-radius: .7rem;
    box-shadow: var(--portal-shadow-sm);
}

.portal-feature::after {
    position: absolute;
    right: -5rem;
    bottom: -6rem;
    width: 13rem;
    height: 13rem;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 50%;
    content: "";
}

.portal-feature > * {
    position: relative;
    z-index: 1;
}

.portal-feature h2 {
    color: #fff !important;
}

.portal-feature .text-body-secondary {
    color: #b9c8dc !important;
}

.portal-feature-step {
    display: inline-grid;
    width: 1.65rem;
    height: 1.65rem;
    flex: 0 0 auto;
    place-items: center;
    border: 1px solid #58759a;
    border-radius: 50%;
    color: #dce9fb;
    font-size: .6875rem;
    font-weight: 700;
}

/* Controls */
.btn {
    --bs-btn-border-radius: .48rem;
    --bs-btn-font-weight: 650;
    min-height: 2.45rem;
    letter-spacing: -.005em;
}

.btn-sm {
    min-height: 2.05rem;
}

.btn-primary {
    --bs-btn-bg: #1557c0;
    --bs-btn-border-color: #1557c0;
    --bs-btn-hover-bg: #10489f;
    --bs-btn-hover-border-color: #10489f;
    --bs-btn-active-bg: #0d3c86;
    --bs-btn-active-border-color: #0d3c86;
    --bs-btn-focus-shadow-rgb: 21, 87, 192;
    box-shadow: 0 1px 1px rgba(12, 50, 110, .18);
}

.btn-light {
    --bs-btn-bg: var(--portal-surface-muted);
    --bs-btn-border-color: var(--portal-border);
    --bs-btn-hover-bg: var(--portal-brand-soft);
    --bs-btn-hover-border-color: var(--portal-border-strong);
    --bs-btn-color: var(--portal-ink);
}

.form-label {
    margin-bottom: .45rem;
    color: var(--portal-ink);
    font-size: .8125rem;
    font-weight: 650;
}

.form-control,
.form-select,
.input-group-text {
    min-height: 2.75rem;
    background-color: var(--portal-surface);
    border-color: var(--portal-border-strong);
    color: var(--portal-ink);
}

.form-control::placeholder {
    color: color-mix(in srgb, var(--portal-muted) 78%, transparent);
    opacity: 1;
}

.form-control:disabled,
.form-select:disabled,
.form-control[readonly],
.input-group-text,
.portal-surface-muted,
.portal-key-panel {
    background-color: var(--portal-surface-muted) !important;
    color: var(--portal-ink);
}

.form-check-input {
    background-color: var(--portal-surface);
    border-color: var(--portal-border-strong);
}

.form-check-input:checked {
    background-color: var(--portal-brand);
    border-color: var(--portal-brand);
}

.form-select option {
    background-color: var(--portal-surface-raised);
    color: var(--portal-ink);
}

.form-control:-webkit-autofill,
.form-control:-webkit-autofill:hover,
.form-control:-webkit-autofill:focus {
    -webkit-text-fill-color: var(--portal-ink);
    box-shadow: 0 0 0 1000px var(--portal-surface) inset;
    caret-color: var(--portal-ink);
}

[data-bs-theme="dark"] .form-control,
[data-bs-theme="dark"] .form-select,
[data-bs-theme="dark"] .input-group-text {
    background-color: var(--portal-surface-raised) !important;
    color: var(--portal-ink) !important;
}

.form-control:focus,
.form-select:focus,
.form-check-input:focus,
.btn:focus-visible,
.page-link:focus-visible,
a:focus-visible {
    border-color: rgba(var(--bs-primary-rgb), .65);
    box-shadow: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .15);
    outline: 0;
}

.form-text {
    color: var(--portal-muted);
    font-size: .775rem;
}

.portal-feature-choice {
    background: var(--portal-surface);
}

.portal-choice-card {
    background: var(--portal-surface);
    cursor: pointer;
}

.portal-choice-card:has(input:checked) {
    background: var(--portal-brand-soft);
    border-color: color-mix(in srgb, var(--portal-brand) 52%, var(--portal-border)) !important;
}

.portal-key-input,
.portal-product-key {
    font-family: "Cascadia Mono", "SFMono-Regular", Consolas, monospace;
    font-variant-numeric: tabular-nums;
    letter-spacing: .035em;
}

.portal-feature-choice:has(input:checked) {
    background: var(--portal-brand-soft);
    border-color: color-mix(in srgb, var(--portal-brand) 52%, var(--portal-border)) !important;
}

.validation-message,
.validation-errors {
    color: var(--bs-danger-text-emphasis);
    font-size: .8125rem;
}

.invalid {
    border-color: var(--bs-danger) !important;
}

/* Data-dense views */
.table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--portal-ink);
    --bs-table-border-color: var(--portal-border);
    --bs-table-hover-bg: var(--portal-surface-muted);
    margin-bottom: 0;
    font-size: .84375rem;
}

.table > :not(caption) > * > * {
    padding: .95rem 1.35rem;
    vertical-align: middle;
}

.table thead th {
    background: var(--portal-surface-muted);
    color: var(--portal-muted);
    font-size: .675rem;
    font-weight: 750;
    letter-spacing: .065em;
    text-transform: uppercase;
    white-space: nowrap;
}

.table tbody tr:last-child > * {
    border-bottom: 0;
}

.badge {
    padding: .42em .68em;
    font-weight: 650;
    letter-spacing: .01em;
}

.portal-seat-progress {
    width: min(8rem, 100%);
    min-width: 5rem;
    height: .25rem;
    background: var(--portal-border);
}

.portal-product-key {
    overflow-wrap: anywhere;
    font-variant-numeric: tabular-nums;
    letter-spacing: .075em;
    user-select: all;
}

.portal-request-json {
    min-height: 16rem;
    font-family: "Cascadia Code", "SFMono-Regular", Consolas, monospace;
    font-size: .78rem;
}

.portal-audit-detail {
    max-width: 34rem;
}

code {
    color: color-mix(in srgb, var(--portal-accent) 82%, var(--portal-ink));
}

details summary {
    cursor: pointer;
}

.pagination {
    --bs-pagination-bg: var(--portal-surface);
    --bs-pagination-border-color: var(--portal-border);
    --bs-pagination-color: var(--portal-brand);
    --bs-pagination-hover-bg: var(--portal-brand-soft);
}

/* Foundry authentication pages */
.auth-card {
    border: 1px solid color-mix(in srgb, var(--portal-border) 84%, transparent);
    box-shadow: 0 24px 70px rgba(4, 13, 29, .26);
}

.auth-card .card-body {
    padding: clamp(1.5rem, 4vw, 2.5rem) !important;
}

@media (max-width: 991.98px) {
    .navbar-theme .container-fluid {
        width: min(100% - 1.5rem, 1480px);
    }

    .navbar-theme .navbar-collapse {
        margin-top: .75rem;
        padding: .75rem;
        background: var(--portal-surface-raised);
        border: 1px solid var(--portal-border);
        border-radius: .7rem;
        box-shadow: var(--portal-shadow-md);
    }

    .navbar-theme .navbar-nav {
        align-items: stretch;
    }

    .navbar-theme .nav-link {
        width: 100%;
    }

    .container-integrated {
        width: min(100% - 1.5rem, 1480px) !important;
        padding-top: 1.5rem !important;
    }
}

@media (max-width: 575.98px) {
    body {
        font-size: .9rem;
    }

    .container-integrated {
        width: min(100% - 1rem, 1480px) !important;
        padding-top: 1rem !important;
    }

    .container-integrated .row.g-4 {
        --bs-gutter-x: 1rem;
    }

    .card-header,
    .table > :not(caption) > * > * {
        padding-right: 1rem;
        padding-left: 1rem;
    }

    .portal-metric .card-body {
        padding: 1rem !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
    }
}

@supports not (backdrop-filter: blur(14px)) {
    .navbar-theme {
        background: var(--portal-surface) !important;
    }
}
