/* ══════════════════════════════════════════════════════════════════════
   PMS restyle — drop-in layer over app.css
   ──────────────────────────────────────────────────────────────────────
   Load AFTER app.css and after css/themes/*.css:

     <link rel="stylesheet" href="app.css" />
     <link rel="stylesheet" href="css/themes/light.css" />
     <link rel="stylesheet" href="css/themes/dark.css" />
     <link rel="stylesheet" href="pms-restyle.css" />

   Everything here is presentation only. It does not touch the auth
   pages (.pms-auth*) — the login/forgot/reset design is retained as-is.
   Two changes need Razor edits as well; both are marked [RAZOR] and
   spelled out in the guideline document.
   ══════════════════════════════════════════════════════════════════════ */

/* ── 1. Type ──────────────────────────────────────────────────────────
   Archivo replaces the system stack. Noto Kufi Arabic covers Arabic,
   which Archivo does not. Both are declared once, on body; the auth
   pages inherit it too, which is intentional — only their layout is
   frozen, not their typeface.
   Add to App.razor <head>:
   <link rel="preconnect" href="https://fonts.googleapis.com">
   <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
   <link href="https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700;800&family=Noto+Kufi+Arabic:wght@400;500;700&display=swap" rel="stylesheet">
   ─────────────────────────────────────────────────────────────────── */
body {
    font-family: Archivo, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
html[lang^="ar"] body,
html[dir="rtl"] body {
    font-family: "Noto Kufi Arabic", Archivo, system-ui, sans-serif;
}

/* Latin identifiers, money, dates and times keep Archivo and tabular
   figures even inside an Arabic page, and stay LTR. */
.pms-money,
.pms-num,
.pms-record-grid-title,
.pms-record-detail-field dd,
.pms-kpi-value,
.pms-pager-info,
.pms-financial-statement .pms-date,
.pms-financial-statement .pms-statement-account-number {
    font-family: Archivo, system-ui, sans-serif;
    font-variant-numeric: tabular-nums;
}

/* ── 2. Surfaces ──────────────────────────────────────────────────────
   Square corners, no drop shadows, lighter outlines. Elevation comes
   from the canvas tint behind the panels (section 3), not from blur.
   ─────────────────────────────────────────────────────────────────── */
:root {
    --pms-radius-control: 0px;
    --pms-radius-panel: 0px;
    --pms-shadow-sm: none;
    --pms-rule: #e6e9ed;        /* separators */
    --pms-rule-soft: #eef0f3;   /* row rules, inner rules */
    --pms-panel-border: #e2e5ea;
    --pms-rule-width: 1px;
    --pms-selection-rule-width: 3px;
    --pms-focus-ring-width: 2px;
    --pms-focus-ring-offset: 2px;
    --pms-space-xs: 0.25rem;
    --pms-space-sm: 0.5rem;
    --pms-space-md: 0.75rem;
    --pms-space-lg: 1rem;
    --pms-space-xl: 1.25rem;
    --pms-space-2xl: 1.5rem;
    --pms-font-micro: 0.65625rem;
    --pms-font-nano: 0.625rem;
    --pms-font-small: 0.75rem;
    --pms-font-body: 0.875rem;
    --pms-font-panel-title: 1.1875rem;
    --pms-font-weight-regular: 400;
    --pms-font-weight-medium: 500;
    --pms-font-weight-semibold: 600;
    --pms-font-weight-bold: 700;
    --pms-tracking-micro: 0.1em;
    --pms-tracking-status: 0.08em;
    --pms-control-block-size: 2.5rem;
    --pms-control-padding-block: 0.5rem;
    --pms-control-padding-inline: 0.7rem;
    --pms-grid-row-block-size: 3.1875rem;
    --pms-filter-field-basis: 22rem;
    --pms-rate-editor-size: 12rem;
    --pms-entry-grid-min-size: 58rem;
    --pms-indicator-size: 0.5rem;
    --pms-shell-search-min-inline-size: 10rem;
    --pms-shell-search-max-inline-size: 36rem;
    --pms-shell-search-control-block-size: 2.125rem;
    --pms-shell-search-results-max-block-size: 22rem;
    --pms-shell-search-result-icon-size: 1.875rem;
    --pms-shell-search-layer: 320;
    --pms-disabled-opacity: 0.55;
    --pms-input-affix-tag-max-inline-size: calc(
        var(--pms-space-2xl) + var(--pms-space-2xl) + var(--pms-space-2xl) + var(--pms-space-lg));
    --pms-input-affix-gutter: calc(
        var(--pms-input-affix-tag-max-inline-size) + var(--pms-control-padding-inline) + var(--pms-space-sm));
}
html[data-theme="dark"] {
    --pms-rule: #262b33;
    --pms-rule-soft: #232830;
    --pms-panel-border: #2f353e;
}

.pms-editor-card,
.pms-filter-panel,
.pms-directory-table-wrap,
.pms-split-list,
.pms-split-section,
.pms-dashboard-header,
.pms-dashboard-card,
.pms-kpi-tile,
.pms-home-command-panel,
.pms-home-panel,
.pms-party-master,
.pms-record-master {
    border-color: var(--pms-panel-border);
    border-radius: 0;
    box-shadow: none;
}
.pms-dashboard-header {
    background: var(--pms-bg);      /* the two-stop gradient is dropped */
}
.pms-home-grid {
    align-items: start;
}
.pms-home-area-card {
    min-inline-size: 0;
    border: var(--pms-rule-width) solid var(--pms-panel-border);
    background: var(--pms-bg);
}
.pms-home-area-card > summary {
    border: 0;
    cursor: pointer;
    list-style: none;
}
.pms-home-area-card > summary::-webkit-details-marker {
    display: none;
}
.pms-home-area-card > summary::marker {
    content: "";
}
.pms-home-area-card[open] > summary {
    border-block-end: var(--pms-rule-width) solid var(--pms-rule-soft);
}
.pms-home-area-chevron {
    flex: 0 0 auto;
    margin-inline-start: auto;
}
.pms-home-area-card[open] .pms-home-area-chevron {
    transform: rotate(180deg);
}
.pms-home-area-links {
    grid-template-columns: minmax(0, 1fr);
    max-block-size: var(--pms-shell-search-results-max-block-size);
    padding: var(--pms-space-sm) var(--pms-space-md) var(--pms-space-md);
    overflow-block: auto;
}
.pms-btn,
.pms-party-add,
.pms-chip,
.pms-segmented,
.pms-segmented-item,
.pms-party-grid-status,
.pms-party-row-popover,
.pms-record-detail-grid,
.pms-directory-heading-icon,
.pms-directory-stats div,
.pms-brand-badge,
.pms-lookup-results {
    border-radius: 0;
    box-shadow: none;
}
.pms-btn-primary {
    box-shadow: none;
}

/* ── 3. Page canvas ───────────────────────────────────────────────────
   Chrome (top bar + sidebar) stays --pms-bg; the workspace behind the
   panels drops to --pms-canvas so white panels read as a layer above it.
   ─────────────────────────────────────────────────────────────────── */
.pms-main {
    background: var(--pms-canvas);
}
.pms-topbar,
.pms-sidebar {
    background: var(--pms-bg);
    border-color: var(--pms-rule);
}
.pms-topbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr)
        minmax(var(--pms-shell-search-min-inline-size), var(--pms-shell-search-max-inline-size))
        minmax(0, 1fr);
    gap: var(--pms-space-md);
    padding-inline: var(--pms-space-lg);
    border-bottom: 1px solid var(--pms-rule);
}
html[dir="rtl"] .pms-sidebar {
    border-inline-start: 1px solid var(--pms-rule);
}

/* ── 4. Sidebar navigation ────────────────────────────────────────────
   The reported defect: group headers were 11px uppercase while their
   own children were 14px, so a parent read as a caption under its
   items. Group headers now outrank children in size and weight, and
   the children are held by an indent rule instead of by icons.
   ─────────────────────────────────────────────────────────────────── */
.pms-nav-group-toggle {
    gap: 0.6875rem;
    width: 100%;
    margin: 0.5rem 0 0;
    padding: 0.5rem 0.875rem;
    font-size: 0.84375rem;      /* 13.5px */
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    color: var(--pms-fg);
}
.pms-nav-group-toggle:hover {
    background: var(--pms-bg-alt);
}
.pms-nav-group-toggle[aria-expanded="true"] {
    background: var(--pms-bg-alt);
}
.pms-nav-group-toggle .pms-nav-icon {
    color: var(--pms-fg-muted);
}
.pms-nav-group-toggle[aria-expanded="true"] .pms-nav-icon {
    color: var(--pms-accent);
}

.pms-navlist > .pms-nav-item {
    margin: 0;
    padding: 0.5rem 0.875rem;
    border-radius: 0;
    font-size: 0.84375rem;
    font-weight: 600;
}

/* Children: one step down, indented against a hairline. */
.pms-subnav {
    margin-inline-start: 1.6875rem;
    border-inline-start: 1px solid var(--pms-rule-soft);
    padding-bottom: 0;
}
.pms-subnav .pms-nav-item {
    margin: 0;
    padding: 0.40625rem 0.875rem;
    border-radius: 0;
    font-size: 0.8125rem;
    font-weight: 400;
    color: color-mix(in srgb, var(--pms-fg) 82%, transparent);
}
.pms-subnav .pms-nav-item .pms-nav-icon {
    display: none;              /* icons belong to the group, not the leaf */
}
.pms-nav-item.active,
.pms-subnav .pms-nav-item.active {
    background: color-mix(in srgb, var(--pms-accent) 8%, transparent);
    color: var(--pms-accent);
    font-weight: 700;
    box-shadow: inset 2px 0 0 var(--pms-accent);
}
html[dir="rtl"] .pms-nav-item.active,
html[dir="rtl"] .pms-subnav .pms-nav-item.active {
    box-shadow: inset -2px 0 0 var(--pms-accent);
}
/* The report sub-headings are the one place uppercase micro-type stays,
   because they label groups of leaves rather than compete with them. */
.pms-subnav-label {
    padding-inline: 1.375rem 0.75rem;
    font-size: 0.625rem;
    letter-spacing: 0.09em;
}

/* Brand block and bottom account strip move to the top bar. */
.pms-sidebar .pms-brand,
.pms-nav-bottom {
    display: none;
}
.pms-navlist {
    padding: 0.75rem 0;
}

/* ── 5. Top bar: brand + account menu  [RAZOR] ────────────────────────
   Markup for .pms-topbar-brand and .pms-usermenu is in the guideline.
   ─────────────────────────────────────────────────────────────────── */
.pms-topbar-start,
.pms-topbar-end {
    display: flex;
    align-items: center;
    min-inline-size: 0;
}
.pms-topbar-start {
    grid-column: 1;
    justify-self: start;
    gap: var(--pms-space-sm);
}
.pms-topbar-end {
    grid-column: 3;
    justify-self: end;
    margin-inline-start: 0;
    gap: var(--pms-space-sm);
}
.pms-topbar-brand {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    flex: 0 0 28px;
    background: var(--pms-accent);
    color: var(--pms-accent-fg);
    font-size: 0.59375rem;
    font-weight: 800;
    letter-spacing: 0.04em;
}
.pms-topbar-title {
    min-inline-size: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.9375rem;
    color: var(--pms-fg);
    letter-spacing: 0.005em;
}

/* The authenticated shell search mirrors the MyCollege screen launcher, but is
   progressively enhanced from static SSR by shell.js. The hidden catalog is already
   policy-filtered on the server before JavaScript receives it. */
.pms-shell-search {
    position: relative;
    grid-column: 2;
    justify-self: center;
    min-inline-size: 0;
    inline-size: 100%;
    max-inline-size: var(--pms-shell-search-max-inline-size);
}
.pms-shell-search-form {
    display: flex;
    align-items: center;
    block-size: var(--pms-shell-search-control-block-size);
    min-inline-size: 0;
    border: 1px solid var(--pms-panel-border);
    background: var(--pms-bg-alt);
    color: var(--pms-fg-muted);
}
.pms-shell-search-form:focus-within {
    border-color: var(--pms-accent);
    outline: var(--pms-focus-ring-width) solid var(--pms-accent);
    outline-offset: var(--pms-focus-ring-offset);
}
.pms-shell-search-icon {
    flex: 0 0 auto;
    margin-inline-start: var(--pms-space-md);
}
.pms-shell-search-input {
    flex: 1 1 auto;
    min-inline-size: 0;
    block-size: 100%;
    padding-inline: var(--pms-space-sm);
    border: 0;
    outline: 0;
    background: transparent;
    color: var(--pms-fg);
    font: inherit;
    font-size: var(--pms-font-small);
}
.pms-shell-search-input::placeholder {
    color: var(--pms-fg-muted);
    opacity: 1;
}
.pms-shell-search-input::-webkit-search-cancel-button {
    display: none;
}
.pms-shell-search-clear {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 var(--pms-shell-search-control-block-size);
    align-self: stretch;
    padding: 0;
    border: 0;
    border-inline-start: 1px solid var(--pms-rule-soft);
    background: transparent;
    color: var(--pms-fg-muted);
    cursor: pointer;
}
.pms-shell-search-clear[hidden] {
    display: none;
}
.pms-shell-search-clear:hover {
    background: color-mix(in srgb, var(--pms-accent) 7%, var(--pms-bg-alt));
    color: var(--pms-fg);
}
.pms-shell-search-clear:focus-visible {
    outline: var(--pms-focus-ring-width) solid var(--pms-accent);
    outline-offset: calc(var(--pms-focus-ring-offset) * -1);
}
.pms-shell-search-results {
    position: absolute;
    inset-block-start: calc(100% + var(--pms-space-sm));
    inset-inline-start: 50%;
    z-index: var(--pms-shell-search-layer);
    inline-size: min(
        var(--pms-shell-search-max-inline-size),
        calc(100vw - var(--pms-space-xl) - var(--pms-space-xl)));
    max-block-size: min(
        var(--pms-shell-search-results-max-block-size),
        calc(100dvh - var(--pms-topbar-h, 52px) - var(--pms-space-xl)));
    overflow-y: auto;
    translate: -50% 0;
    border: 1px solid var(--pms-panel-border);
    background: var(--pms-bg);
    box-shadow: none;
}
.pms-shell-search-result {
    display: grid;
    grid-template-columns: var(--pms-shell-search-result-icon-size) minmax(0, 1fr);
    align-items: center;
    gap: var(--pms-space-sm);
    min-block-size: var(--pms-control-block-size);
    padding: var(--pms-space-sm) var(--pms-space-md);
    border-inline-start: var(--pms-selection-rule-width) solid transparent;
    border-bottom: 1px solid var(--pms-rule-soft);
    color: var(--pms-fg);
    text-decoration: none;
}
.pms-shell-search-result:last-child {
    border-bottom: 0;
}
.pms-shell-search-result:hover,
.pms-shell-search-result:focus-visible,
.pms-shell-search-result.is-active {
    border-inline-start-color: var(--pms-accent);
    background: color-mix(in srgb, var(--pms-accent) 7%, var(--pms-bg));
    color: var(--pms-fg);
    text-decoration: none;
}
.pms-shell-search-result-mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    inline-size: var(--pms-shell-search-result-icon-size);
    block-size: var(--pms-shell-search-result-icon-size);
    color: var(--pms-accent);
}
.pms-shell-search-result-copy {
    min-inline-size: 0;
}
.pms-shell-search-result-title,
.pms-shell-search-result-group {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pms-shell-search-result-title {
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-semibold);
}
.pms-shell-search-result-group {
    margin-block-start: var(--pms-space-xs);
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-micro);
    font-weight: var(--pms-font-weight-medium);
    letter-spacing: var(--pms-tracking-status);
    text-transform: uppercase;
}
.pms-shell-search-empty {
    padding: var(--pms-space-lg);
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-small);
    text-align: center;
}
html[dir="rtl"] .pms-shell-search-result-mark svg {
    transform: scaleX(-1);
}
html[dir="rtl"] .pms-shell-search-results {
    translate: 50% 0;
}
.pms-lang-switcher {
    gap: 0;
    border: 1px solid var(--pms-border);
}
.pms-lang-switcher a {
    padding: 0.3125rem 0.5625rem;
    border: 0;
    border-radius: 0;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.06em;
}
.pms-lang-switcher a[aria-current="true"] {
    background: var(--pms-bg-alt);
    color: var(--pms-fg);
}
.pms-topbar-btn {
    width: 28px;
    height: 28px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 0;
    color: var(--pms-fg-muted);
}

.pms-usermenu {
    position: relative;
}
.pms-usermenu > summary {
    display: inline-flex;
    align-items: center;
    gap: 0.5625rem;
    height: 34px;
    padding-inline: 0.375rem 0.5625rem;
    background: var(--pms-bg-alt);
    color: var(--pms-fg);
    font-size: 0.78125rem;
    font-weight: 600;
    cursor: pointer;
    list-style: none;
}
.pms-usermenu > summary::-webkit-details-marker { display: none; }
.pms-usermenu > summary:hover {
    background: color-mix(in srgb, var(--pms-accent) 8%, var(--pms-bg-alt));
}
.pms-usermenu-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    flex: 0 0 24px;
    background: var(--pms-accent);
    color: var(--pms-accent-fg);
    font-family: Archivo, sans-serif;
    font-size: 0.65625rem;
    font-weight: 700;
}
.pms-usermenu-chevron {
    color: var(--pms-fg-muted);
    transition: transform var(--pms-duration-fast) var(--pms-ease-out);
}
.pms-usermenu[open] .pms-usermenu-chevron { transform: rotate(180deg); }

.pms-usermenu-popover {
    position: absolute;
    inset-block-start: calc(100% + 9px);
    inset-inline-end: 0;
    z-index: 300;
    width: 252px;
    background: var(--pms-bg);
    border: 1px solid var(--pms-panel-border);
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.1);
}
html[data-theme="dark"] .pms-usermenu-popover {
    background: var(--pms-bg-alt);
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.4);
}
.pms-usermenu-who {
    padding: 0.75rem 0.875rem;
    border-bottom: 1px solid var(--pms-rule-soft);
}
.pms-usermenu-who span {
    display: block;
    color: var(--pms-fg-muted);
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.11em;
    text-transform: uppercase;
}
.pms-usermenu-who strong {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.84375rem;
}
.pms-usermenu-action {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.625rem 0.875rem;
    color: var(--pms-fg);
    font-size: 0.8125rem;
    text-decoration: none;
}
.pms-usermenu-action:hover {
    background: var(--pms-bg-alt);
    text-decoration: none;
}
.pms-usermenu-action--danger {
    border-top: 1px solid var(--pms-rule-soft);
    color: var(--pms-danger);
}
/* Sign-out is a form post, so the last menu row is a <button> — strip the native chrome so it
   reads exactly like the <a> rows above it. */
.pms-usermenu-logout {
    margin: 0;
}
button.pms-usermenu-action {
    width: 100%;
    background: none;
    border: 0;
    border-top: 1px solid var(--pms-rule-soft);
    font-family: inherit;
    text-align: start;
    cursor: pointer;
}
.pms-usermenu-about-meta {
    display: inline-flex;
    align-items: center;
    gap: var(--pms-space-xs);
    min-inline-size: 0;
    margin-inline-start: auto;
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-micro);
    font-variant-numeric: tabular-nums;
    font-weight: var(--pms-font-weight-medium);
    white-space: nowrap;
}
.pms-usermenu-about-meta code {
    color: inherit;
    font: inherit;
}
.pms-usermenu-about-meta .pms-date {
    color: inherit;
}

@media (max-width: 72rem) {
    .pms-topbar-title {
        display: none;
    }
}

@media (max-width: 52rem) {
    .pms-usermenu-name {
        display: none;
    }
}

@media (max-width: 42rem) {
    .pms-topbar {
        gap: var(--pms-space-sm);
        padding-inline: var(--pms-space-sm);
    }
    .pms-topbar-brand {
        display: none;
    }
    .pms-topbar-start,
    .pms-topbar-end {
        gap: var(--pms-space-xs);
    }
    .pms-shell-search-results,
    html[dir="rtl"] .pms-shell-search-results {
        position: fixed;
        inset-block-start: calc(var(--pms-topbar-h, 52px) + var(--pms-space-sm));
        inset-inline: var(--pms-space-sm);
        inline-size: auto;
        translate: none;
    }
}

@media (max-width: 30rem) {
    .pms-topbar {
        grid-template-columns: auto minmax(0, 1fr) auto;
    }
    .pms-usermenu-chevron {
        display: none;
    }
    .pms-usermenu > summary {
        padding-inline: var(--pms-space-xs);
    }
}

/* ── 6. Master list ───────────────────────────────────────────────────
   Ruled header instead of a filled bar; row rules softened; the
   selected row keeps its accent bar but the wash drops to 5% so the
   row text keeps full contrast.
   ─────────────────────────────────────────────────────────────────── */
.pms-split-list {
    inset-block-start: 0;
}

.pms-party-master-toolbar,
.pms-party-detail-toolbar {
    align-items: flex-end;
    border-bottom: 1px solid var(--pms-rule);
}
.pms-party-master-kicker {
    font-size: 0.65625rem;
    letter-spacing: 0.1em;
    color: var(--pms-fg-muted);
}
.pms-party-master-toolbar strong {
    font-size: 1.1875rem;
    letter-spacing: -0.01em;
}
.pms-party-master .pms-split-list-head {
    border-bottom: 1px solid var(--pms-rule-soft);
}
.pms-party-master-search {
    border-color: var(--pms-panel-border);
    background: color-mix(in srgb, var(--pms-bg-alt) 60%, var(--pms-bg));
}

.pms-party-grid-head,
.pms-record-grid-head {
    min-height: 2.125rem;
    padding-inline: 0.875rem;
    background: var(--pms-bg);
    border-bottom: 1px solid var(--pms-rule);
    color: var(--pms-fg-muted);
    font-size: 0.65625rem;
    font-weight: 700;
    letter-spacing: 0.1em;
}
/* Sorted column is marked by an accent underline, not by a fill. */
.pms-record-grid-head > .pms-record-sort[aria-sort],
.pms-record-grid-head > .pms-record-sort.is-sorted {
    box-shadow: inset 0 -2px 0 var(--pms-accent);
}
.pms-record-sort-indicator { color: var(--pms-accent); }

.pms-party-grid-row,
.pms-record-grid-row {
    border-bottom: 1px solid var(--pms-rule-soft);
    padding-inline: 0.6875rem 0.25rem;
}
.pms-party-grid-row.active,
.pms-record-grid-row.active {
    background: color-mix(in srgb, var(--pms-accent) 5%, var(--pms-bg));
}
@media (hover: hover) and (pointer: fine) {
    .pms-party-grid-row:not(.active):hover,
    .pms-record-grid-row:not(.active):hover {
        background: color-mix(in srgb, var(--pms-accent) 3%, var(--pms-bg));
    }
}
.pms-record-grid-title,
.pms-party-grid-name {
    font-variant-numeric: tabular-nums;
}
.pms-record-grid-secondary,
.pms-party-grid-currency {
    font-size: 0.71875rem;
    color: var(--pms-fg-muted);
}
.pms-party-master .pms-split-list-body:has(.pms-party-row-menu[open]) {
    padding-block-end: 6rem;
}
/* Numeric list column, right-aligned. [RAZOR] — see guideline §6. */
.pms-record-grid-amount {
    display: block;
    inline-size: 100%;
    text-align: end;
    padding-inline-end: 0.5rem;
    font-size: 0.8125rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.pms-record-grid-numeric-header { text-align: end; }
.pms-record-grid-head > .pms-record-sort-numeric {
    justify-content: flex-end;
    text-align: end;
}

/* Status: square tag, not a pill. */
.pms-party-grid-status,
.pms-chip {
    justify-self: start;
    border: 0;
    border-radius: 0;
    padding: 0.125rem 0.3125rem;
    font-size: 0.59375rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.pms-chip {
    min-height: 0;
    padding: 0.1875rem 0.4375rem;
    font-size: 0.625rem;
    letter-spacing: 0.09em;
}

.pms-party-master .pms-split-list-footer,
.pms-split-list-footer {
    min-inline-size: 0;
    overflow: hidden;
    border-top: 1px solid var(--pms-rule);
}
.pms-pager {
    justify-content: space-between;
    padding: 0.1875rem 0.375rem;
}
.pms-pager-info {
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.pms-pager-compact {
    display: grid;
    grid-template-columns: 2.375rem minmax(0, 1fr) 2.375rem;
    gap: 0.5rem;
    inline-size: 100%;
}
.pms-pager-compact .pms-btn {
    inline-size: 2.375rem;
    min-inline-size: 0;
    padding: 0;
}
.pms-pager-compact .pms-pager-info {
    min-inline-size: 0;
    overflow: hidden;
    text-align: center;
    text-overflow: ellipsis;
    text-transform: none;
}

/* Opt-in Syncfusion master list. It follows the same status and selection
   language as the legacy RecordWorkspace list without changing default users. */
.pms-record-master-grid-body {
    min-block-size: 0;
    overflow: hidden;
}
.pms-record-master-grid.e-grid {
    --pms-record-master-selection-rule: 0.1875rem;
    min-block-size: 0;
    border: 0;
    background: var(--pms-bg);
}
.pms-record-master-grid .e-gridheader,
.pms-record-master-grid .e-headercell {
    border-color: var(--pms-rule);
    background: var(--pms-bg);
}
.pms-record-master-grid .e-headertext,
.pms-record-master-grid .e-icons {
    color: var(--pms-fg-muted);
}
.pms-record-master-grid .e-rowcell {
    overflow: hidden;
    border-color: var(--pms-rule-soft);
    background: var(--pms-bg);
    color: var(--pms-fg);
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pms-record-master-grid .e-row .e-rowcell:first-child {
    border-inline-start: var(--pms-record-master-selection-rule) solid
        color-mix(in srgb, var(--pms-accent) 0%, transparent);
}
.pms-record-master-grid .e-row.pms-record-master-row-selected .e-rowcell,
.pms-record-master-grid .e-row .e-selectionbackground {
    background: color-mix(in srgb, var(--pms-accent) 5%, var(--pms-bg));
}
.pms-record-master-grid .e-row.pms-record-master-row-selected .e-rowcell:first-child,
.pms-record-master-grid .e-row .e-selectionbackground:first-child {
    border-inline-start-color: var(--pms-accent);
}
.pms-record-master-grid .e-row.pms-record-master-row-deleted .e-rowcell {
    color: var(--pms-fg-muted);
}
.pms-record-grid-title-deleted {
    color: var(--pms-fg-muted);
    text-decoration: line-through;
}
@media (hover: hover) and (pointer: fine) {
    .pms-record-master-grid .e-row:hover .e-rowcell {
        background: color-mix(in srgb, var(--pms-accent) 3%, var(--pms-bg));
    }
}

/* Syncfusion's full pager message is wider than a master-list panel in some
   cultures. These bounds keep it useful and contained instead of spilling. */
.pms-record-master-grid .e-gridpager,
.pms-record-master-grid .e-gridpager .e-pager,
.pms-record-master-grid .e-gridpager .e-pagercontainer,
.pms-record-master-grid .e-gridpager .e-parentmsgbar {
    box-sizing: border-box;
    min-inline-size: 0;
    max-inline-size: 100%;
}
.pms-record-master-grid .e-gridpager {
    inline-size: 100%;
    overflow: hidden;
    border-color: var(--pms-rule);
    background: var(--pms-bg);
}
.pms-record-master-grid .e-gridpager .e-pagercontainer,
.pms-record-master-grid .e-gridpager .e-parentmsgbar {
    overflow: hidden;
}
.pms-record-master-grid .e-gridpager .e-parentmsgbar {
    color: var(--pms-fg-muted);
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Syncfusion cells clip ordinary descendants, so row actions use the browser top layer and are
   positioned against their trigger by shell.js. This keeps the familiar three-dot menu usable on
   the first and last visible rows without changing grid scrolling. */
.pms-record-grid-menu-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    inline-size: 1.8rem;
    block-size: 1.8rem;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--pms-fg-muted);
    cursor: pointer;
    transition:
        transform var(--pms-duration-fast) var(--pms-ease-out),
        background-color var(--pms-duration-fast) var(--pms-ease-out),
        color var(--pms-duration-fast) var(--pms-ease-out);
}
.pms-record-grid-menu-trigger:active {
    transform: scale(0.97);
}
@media (hover: hover) and (pointer: fine) {
    .pms-record-grid-menu-trigger:hover {
        background: var(--pms-bg-alt);
        color: var(--pms-fg);
    }
}
.pms-record-grid-row-popover[popover] {
    position: fixed;
    inset-block: auto;
    inset-inline: auto;
    inline-size: min(20rem, calc(100vi - 2rem));
    max-block-size: calc(100vb - 2rem);
    margin: 0;
    overflow-y: auto;
}

/* Fluid editor pages opt in when a dense grid benefits from the full workspace.
   Logical sizing consumes inline-end space in LTR and inline-start space in RTL. */
.pms-editor-page--wide {
    inline-size: 100%;
    max-inline-size: none;
}
.pms-editor-page--wide .pms-editor-card,
.pms-editor-page--wide .pms-syncfusion-grid-wrap,
.pms-inline-reference-grid.e-grid {
    min-inline-size: 0;
    inline-size: 100%;
}

/* Party directories use the full canvas while retaining their master-detail layout. */
.pms-party-workspace--fluid {
    min-inline-size: 0;
    inline-size: 100%;
    max-inline-size: none;
}

/* Transaction record workspaces use the same fluid-width policy as the dense reference grids. */
.pms-transaction-page,
.pms-transaction-page > .pms-record-workspace {
    min-inline-size: 0;
    inline-size: 100%;
    max-inline-size: none;
}
.pms-transaction-page .pms-party-save-group {
    flex: 1 1 auto;
    flex-wrap: wrap;
    justify-content: flex-end;
    min-inline-size: 0;
}

/* Transaction line items are a sibling panel rather than part of the record-header fieldset. */
.pms-transaction-page .pms-record-header-section,
.pms-transaction-page .pms-record-items-section,
.pms-transaction-page .pms-record-items-fieldset,
.pms-transaction-page .pms-record-items-content {
    min-inline-size: 0;
}
.pms-transaction-page .pms-record-items-content {
    overflow: visible;
}
.pms-transaction-page .pms-record-items-content > .pms-grid {
    border: 0;
    border-block-end: 1px solid var(--pms-rule-soft);
    box-shadow: none;
}
.pms-transaction-page .pms-record-items-content > .pms-grid tfoot tr {
    border-block-start: 1px solid var(--pms-rule);
    background: var(--pms-bg-alt);
}
.pms-transaction-page .pms-record-items-content > .pms-grid tfoot th,
.pms-transaction-page .pms-record-items-content > .pms-grid tfoot td {
    padding-block: 0.75rem;
}
.pms-transaction-page .pms-record-items-content > .pms-btn {
    margin-block: 0.75rem 1rem;
    margin-inline: 1rem;
}

/* Compact Lucide actions for editable data grids. */
.pms-grid-actions {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    min-inline-size: 0;
}
.pms-grid-action {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    inline-size: 2rem;
    block-size: 2rem;
    padding: 0;
    border: 1px solid transparent;
    border-radius: var(--pms-radius-control);
    background: transparent;
    color: var(--pms-fg-muted);
    cursor: pointer;
    transition:
        transform var(--pms-duration-fast) var(--pms-ease-out),
        border-color var(--pms-duration-fast) var(--pms-ease-out),
        background-color var(--pms-duration-fast) var(--pms-ease-out),
        color var(--pms-duration-fast) var(--pms-ease-out);
}
.pms-grid-action:active:not(:disabled) {
    transform: scale(0.97);
}
.pms-grid-action:disabled {
    cursor: not-allowed;
    opacity: 0.45;
}
.pms-grid-action--danger { color: var(--pms-danger); }
.pms-grid-action--save { color: var(--pms-accent); }
@media (hover: hover) and (pointer: fine) {
    .pms-grid-action:hover:not(:disabled) {
        border-color: var(--pms-rule);
        background: var(--pms-bg-alt);
        color: var(--pms-fg);
    }
    .pms-grid-action--danger:hover:not(:disabled) {
        border-color: color-mix(in srgb, var(--pms-danger) 32%, var(--pms-rule));
        background: color-mix(in srgb, var(--pms-danger) 8%, var(--pms-bg));
        color: var(--pms-danger);
    }
    .pms-grid-action--save:hover:not(:disabled) {
        border-color: color-mix(in srgb, var(--pms-accent) 32%, var(--pms-rule));
        background: color-mix(in srgb, var(--pms-accent) 8%, var(--pms-bg));
        color: var(--pms-accent);
    }
}

/* ── 7. Detail pane and forms ─────────────────────────────────────────
   The fieldset legend becomes a ruled section header; field labels are
   uppercase micro-type so the value below them carries the weight.
   ─────────────────────────────────────────────────────────────────── */
.pms-split-section {
    padding: 0;
    border-color: var(--pms-panel-border);
}
.pms-party-fieldset legend {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0.75rem 1.25rem;
    border-bottom: 1px solid var(--pms-rule-soft);
    color: var(--pms-fg-muted);
    font-size: 0.65625rem;
    font-weight: 700;
    letter-spacing: 0.11em;
    text-transform: uppercase;
}
.pms-party-fieldset > .pms-form,
.pms-split-section > h2 + .pms-record-detail-grid,
.pms-split-section > .pms-form {
    padding: 1.25rem;
}
.pms-party-detail-toolbar-actions-only .pms-party-save-group {
    flex-wrap: wrap;
    justify-content: flex-end;
    min-inline-size: 0;
    margin-inline-start: auto;
}
.pms-party-detail-toolbar-actions-only {
    padding-block: 0.75rem;
    padding-inline: 1.25rem;
}
.pms-record-detail { container-type: inline-size; }
.pms-form-row {
    display: grid;
    grid-column: 1 / -1;
    gap: 1rem 1.25rem;
    inline-size: 100%;
    min-inline-size: 0;
}
.pms-form-row-two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pms-form-row-three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pms-form-row-four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pms-form-row > label { min-inline-size: 0; }
.pms-form-row > .pms-form-col-span-two { grid-column: span 2; }
.pms-form-row > .pms-amount-hint-col {
    align-self: end;
    display: flex;
    align-items: center;
    min-block-size: var(--pms-control-block-size);
    min-inline-size: 0;
}
.pms-form label.pms-checkbox-field {
    align-self: end;
    flex-direction: row;
    align-items: center;
    min-block-size: 2.5rem;
    gap: 0.5rem;
}
.pms-form label.pms-checkbox-field > input[type="checkbox"] {
    flex: 0 0 auto;
    margin: 0;
}
@container (max-width: 46rem) {
    .pms-form-row-four { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@container (max-width: 34rem) {
    .pms-form-row-two,
    .pms-form-row-three,
    .pms-form-row-four {
        grid-template-columns: minmax(0, 1fr);
    }
    .pms-form-row > .pms-form-col-span-two { grid-column: 1 / -1; }
}
.pms-form label,
.pms-filter-panel label {
    gap: 0.375rem;
    color: var(--pms-fg-muted);
    font-size: 0.65625rem;
    font-weight: 700;
    letter-spacing: 0.09em;
    text-transform: uppercase;
}
.pms-form label > input:not([type="checkbox"]):not([type="radio"]):not(.e-input),
.pms-form label > select,
.pms-form label > textarea,
.pms-filter-panel label > input:not([type="checkbox"]):not([type="radio"]):not(.e-input),
.pms-lookup-input,
.pms-split-list-head input {
    border-color: color-mix(in srgb, var(--pms-panel-border) 88%, var(--pms-border));
    border-radius: 0;
    box-shadow: none;
    font-size: 0.875rem;
    font-weight: 500;
    letter-spacing: normal;
    text-transform: none;
}
/* Money inputs read as money. */
.pms-form label > input[type="number"] {
    text-align: end;
    font-variant-numeric: tabular-nums;
}
/* Input with a trailing tag, such as the pay-currency label beside an amount. */
.pms-input-affix {
    position: relative;
    display: flex;
    align-items: center;
    inline-size: 100%;
}
.pms-input-affix > input {
    inline-size: 100%;
}
.pms-input-affix > input[type="number"]::-webkit-outer-spin-button,
.pms-input-affix > input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.pms-input-affix > input[type="number"] {
    -moz-appearance: textfield;
    appearance: textfield;
}
.pms-form label .pms-input-affix > input {
    min-block-size: var(--pms-control-block-size);
    padding-block: var(--pms-control-padding-block);
    padding-inline-start: var(--pms-control-padding-inline);
    padding-inline-end: var(--pms-input-affix-gutter);
    border: var(--pms-rule-width) solid var(--pms-panel-border);
    border-radius: var(--pms-radius-control);
    background: var(--pms-bg);
    color: var(--pms-fg);
    box-shadow: none;
    font-family: inherit;
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-medium);
    letter-spacing: normal;
    text-transform: none;
}
.pms-form label .pms-input-affix > input:focus {
    outline: none;
    border-color: var(--pms-accent);
    background: var(--pms-bg);
    box-shadow: none;
}
.pms-form label .pms-input-affix > input[type="number"] {
    text-align: end;
    font-variant-numeric: tabular-nums;
}
.pms-input-affix-tag {
    position: absolute;
    inset-inline-end: var(--pms-control-padding-inline);
    max-inline-size: var(--pms-input-affix-tag-max-inline-size);
    overflow: hidden;
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-small);
    font-weight: var(--pms-font-weight-semibold);
    letter-spacing: normal;
    text-overflow: ellipsis;
    text-transform: none;
    white-space: nowrap;
    pointer-events: none;
}
.pms-transaction-form {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
.pms-transaction-form .pms-form-wide {
    grid-column: 1 / -1;
}
.pms-field-hint {
    font-weight: 400;
    letter-spacing: normal;
    text-transform: none;
}
.pms-field-hint--warning {
    color: var(--pms-warning);
}

/* Shared section, data-entry and filter composition for dense maintenance pages. */
.pms-section-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--pms-space-lg);
    margin-block-end: var(--pms-space-lg);
    padding-block-end: var(--pms-space-lg);
    border-block-end: var(--pms-rule-width) solid var(--pms-rule-soft);
}
.pms-section-heading h2 {
    margin: 0;
    color: var(--pms-fg);
    font-size: var(--pms-font-panel-title);
    font-weight: var(--pms-font-weight-bold);
}
.pms-section-heading .pms-field-hint {
    margin-block: var(--pms-space-xs) 0;
}
.pms-section-meta {
    flex: 0 0 auto;
    padding-block: var(--pms-space-xs);
    padding-inline: var(--pms-space-sm);
    border: var(--pms-rule-width) solid var(--pms-rule);
    background: var(--pms-bg-alt);
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-micro);
    font-weight: var(--pms-font-weight-bold);
    letter-spacing: var(--pms-tracking-status);
    text-transform: uppercase;
    white-space: nowrap;
}
.pms-entry-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--pms-space-lg);
    margin-block-end: var(--pms-space-lg);
    padding: var(--pms-space-lg);
    border: var(--pms-rule-width) solid var(--pms-rule);
    background: var(--pms-bg-alt);
}
.pms-entry-toolbar-fields {
    flex: 0 1 var(--pms-filter-field-basis);
    grid-template-columns: minmax(0, 1fr);
    min-inline-size: 0;
    margin: 0;
}
.pms-entry-toolbar-actions {
    display: flex;
    flex: 1 1 auto;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: var(--pms-space-md);
    min-inline-size: 0;
    margin-inline-start: auto;
}
.pms-rate-unsaved-indicator {
    display: inline-flex;
    align-items: center;
    gap: var(--pms-space-sm);
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-small);
    font-weight: var(--pms-font-weight-semibold);
}
.pms-rate-unsaved-dot {
    inline-size: var(--pms-indicator-size);
    block-size: var(--pms-indicator-size);
    flex: 0 0 var(--pms-indicator-size);
    background: var(--pms-accent);
}
.pms-filter-toolbar {
    align-items: flex-end;
}
.pms-filter-panel > .pms-filter-field--grow {
    flex: 1 1 var(--pms-filter-field-basis);
    min-inline-size: 0;
}
.pms-filter-panel label > select {
    min-block-size: var(--pms-control-block-size);
    padding-block: var(--pms-control-padding-block);
    padding-inline: var(--pms-control-padding-inline);
    border: var(--pms-rule-width) solid var(--pms-panel-border);
    border-radius: var(--pms-radius-control);
    background: var(--pms-bg);
    color: var(--pms-fg);
    font-family: inherit;
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-medium);
    letter-spacing: normal;
    text-transform: none;
}
.pms-filter-panel label > select:focus {
    border-color: var(--pms-accent);
}
.pms-filter-panel label > select:focus-visible {
    outline: var(--pms-focus-ring-width) solid var(--pms-accent);
    outline-offset: var(--pms-focus-ring-offset);
}
.pms-filter-toolbar .pms-btn {
    align-self: flex-end;
}

/* Filtered reports keep each completed search as a stable Syncfusion tab snapshot. */
.pms-report-tabs.e-tab {
    --color-sf-primary: var(--pms-accent);
    --color-sf-primary-text-color: var(--pms-accent-fg);
    --color-sf-border: var(--pms-rule);
    --color-sf-content-bg-color: var(--pms-bg);
    --color-sf-content-text-color: var(--pms-fg);
    border: var(--pms-rule-width) solid var(--pms-panel-border);
    border-radius: 0;
    background: var(--pms-bg);
    color: var(--pms-fg);
    box-shadow: none;
}
.pms-report-tabs.e-tab > .e-tab-header,
.pms-report-tabs.e-tab > .e-tab-header .e-toolbar-items,
.pms-report-tabs.e-tab > .e-tab-header .e-toolbar-item {
    border-radius: 0;
    background: var(--pms-bg-alt);
    box-shadow: none;
}
.pms-report-tabs.e-tab > .e-tab-header {
    border-block-end: var(--pms-rule-width) solid var(--pms-rule);
}
.pms-report-tabs.e-tab .e-tab-header .e-tab-wrap {
    min-block-size: var(--pms-control-block-size);
    padding-inline: var(--pms-space-lg);
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-semibold);
}
.pms-report-tabs.e-tab .e-tab-header .e-toolbar-item.e-active .e-tab-wrap {
    color: var(--pms-accent);
}
.pms-report-tabs.e-tab .e-tab-header .e-indicator {
    block-size: var(--pms-selection-rule-width);
    background: var(--pms-accent);
}
.pms-report-tabs.e-tab .e-tab-header .e-close-icon {
    color: var(--pms-fg-muted);
}
@media (hover: hover) and (pointer: fine) {
    .pms-report-tabs.e-tab .e-tab-header .e-close-icon:hover {
        background: var(--pms-bg);
        color: var(--pms-fg);
    }
}
.pms-report-tabs.e-tab .e-tab-header .e-tab-wrap:focus-visible,
.pms-report-tabs.e-tab .e-tab-header .e-close-icon:focus-visible {
    outline: var(--pms-focus-ring-width) solid var(--pms-accent);
    outline-offset: calc(var(--pms-focus-ring-offset) * -1);
}
.pms-report-tabs.e-tab > .e-content {
    background: var(--pms-bg);
    color: var(--pms-fg);
}
.pms-report-tabs.e-tab > .e-content > .e-item {
    padding: 0;
}
.pms-report-snapshot {
    padding: var(--pms-space-lg);
}
.pms-report-meta,
.pms-report-print-audit {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--pms-filter-field-basis)), 1fr));
    gap: var(--pms-space-md) var(--pms-space-lg);
    margin-block-end: var(--pms-space-lg);
    padding-block-end: var(--pms-space-lg);
    border-block-end: var(--pms-rule-width) solid var(--pms-rule);
}
.pms-report-meta-item {
    display: grid;
    gap: var(--pms-space-xs);
    min-inline-size: 0;
}
.pms-report-meta-item > span:first-child {
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-micro);
    font-weight: var(--pms-font-weight-bold);
    letter-spacing: var(--pms-tracking-micro);
    text-transform: uppercase;
}
.pms-report-meta-item > strong {
    color: var(--pms-fg);
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-semibold);
    overflow-wrap: anywhere;
}
.pms-report-print-audit {
    display: none;
}
.pms-report-actions {
    justify-content: flex-end;
}
.pms-report-dialog-context {
    display: grid;
    gap: var(--pms-space-xs);
    margin-block-end: var(--pms-space-lg);
    padding: var(--pms-space-md);
    border: var(--pms-rule-width) solid var(--pms-rule);
    background: var(--pms-bg-alt);
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-body);
}
@page pms-client-account-report {
    size: A4 landscape;
    margin: 10mm;
}
@page pms-report {
    size: A4 landscape;
    margin: 10mm;
}
@media print {
    .pms-client-account-report-print-context {
        page: pms-client-account-report;
    }
    .pms-report-print-context {
        page: pms-report;
    }
    .pms-report-tabs.e-tab {
        border: 0 !important;
        background: transparent !important;
    }
    .pms-report-tabs.e-tab > .e-tab-header,
    .pms-report-actions,
    .pms-report-feedback {
        display: none !important;
    }
    .pms-report-tabs.e-tab > .e-content {
        block-size: auto !important;
        overflow: visible !important;
        background: transparent !important;
    }
    .pms-report-tabs.e-tab > .e-content > .e-item {
        display: none !important;
    }
    .pms-report-tabs.e-tab > .e-content > .e-item.e-active {
        position: static !important;
        display: block !important;
        block-size: auto !important;
        overflow: visible !important;
        opacity: 1 !important;
        transform: none !important;
    }
    .pms-report-snapshot {
        padding: 0 !important;
    }
    .pms-report-meta,
    .pms-report-print-audit {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        break-inside: avoid;
    }
    .pms-report-print-audit {
        display: grid;
    }
    .pms-report-snapshot .pms-directory-table-wrap {
        overflow: visible;
    }
    .pms-report-snapshot .pms-grid tfoot {
        break-inside: avoid;
    }
}
.pms-switch-row {
    display: inline-flex;
}
.pms-entry-feedback {
    min-block-size: var(--pms-space-xl);
    margin-block: var(--pms-space-md) 0;
    font-size: var(--pms-font-small);
}
.pms-warning {
    color: var(--pms-warning);
}
.pms-lookup {
    --pms-lookup-affordance-inset: 0.625rem;
    --pms-lookup-affordance-gutter: 2.25rem;
}
.pms-lookup-search-icon {
    position: absolute;
    inset-block-start: 50%;
    inset-inline-start: var(--pms-lookup-affordance-inset);
    z-index: 1;
    color: var(--pms-fg-muted);
    pointer-events: none;
    transform: translateY(-50%);
}
.pms-lookup > input.pms-lookup-input {
    padding-inline-start: var(--pms-lookup-affordance-gutter);
    padding-inline-end: var(--pms-lookup-affordance-gutter);
}
.pms-lookup-clear {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.pms-lookup-clear svg {
    display: block;
}
.pms-lookup-group {
    padding-block: var(--pms-space-sm) var(--pms-space-xs);
    padding-inline: var(--pms-space-md);
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-semibold);
    letter-spacing: normal;
}
.pms-lookup-group:not(:first-child) {
    margin-block-start: var(--pms-space-xs);
    padding-block-start: var(--pms-space-sm);
    border-block-start: var(--pms-rule-width) solid var(--pms-rule-soft);
}
.pms-form label > textarea.pms-expandable-textarea {
    block-size: auto;
    min-block-size: 0;
    max-block-size: 12rem;
    overflow-y: auto;
    resize: vertical;
}
.pms-record-detail-grid { border-color: var(--pms-panel-border); }
.pms-record-detail-field {
    border-color: var(--pms-rule-soft);
}
.pms-record-detail-field dt {
    font-size: 0.65625rem;
    letter-spacing: 0.09em;
}

/* Shared detail tabs for master/detail workspaces. */
.pms-detail-tabs {
    display: flex;
    align-items: end;
    gap: var(--pms-space-lg);
    border-block-end: var(--pms-rule-width) solid var(--pms-rule-soft);
}
.pms-detail-tab {
    display: inline-flex;
    align-items: center;
    gap: var(--pms-space-sm);
    min-block-size: var(--pms-control-block-size);
    padding-block: var(--pms-control-padding-block);
    padding-inline: var(--pms-space-sm);
    border: 0;
    border-block-end: var(--pms-selection-rule-width) solid transparent;
    background: transparent;
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-small);
    font-weight: var(--pms-font-weight-semibold);
    cursor: pointer;
}
.pms-detail-tab:hover:not(:disabled) {
    color: var(--pms-fg);
    background: var(--pms-bg-alt);
}
.pms-detail-tab.active {
    border-block-end-color: var(--pms-accent);
    color: var(--pms-accent);
}
.pms-detail-tab:disabled {
    cursor: not-allowed;
    opacity: var(--pms-disabled-opacity);
}
.pms-detail-tab-count {
    padding-block: var(--pms-space-xs);
    padding-inline: var(--pms-space-sm);
    background: var(--pms-bg-alt);
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-nano);
    font-variant-numeric: tabular-nums;
}
.pms-detail-tab-panel {
    padding-block-start: var(--pms-space-lg);
}
.pms-detail-tab-panel[hidden] {
    display: none;
}

/* Shared modal shell used by the system audit fingerprint dialog. */
.pms-dialog-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: grid;
    place-items: center;
    padding: 1rem;
    background: color-mix(in srgb, var(--pms-fg) 32%, transparent);
    opacity: 1;
    transition: opacity var(--pms-duration-ui) var(--pms-ease-out);
}
.pms-dialog-backdrop[hidden] {
    display: none;
}
.pms-dialog {
    inline-size: min(32rem, 100%);
    max-block-size: calc(100dvh - 2rem);
    overflow: auto;
    border: 1px solid var(--pms-panel-border);
    border-radius: var(--pms-radius-panel);
    background: var(--pms-bg);
    color: var(--pms-fg);
    box-shadow: none;
    transform: scale(1);
    transform-origin: center;
    transition: transform var(--pms-duration-ui) var(--pms-ease-out);
}
.pms-dialog:focus-visible {
    outline: 2px solid var(--pms-accent);
    outline-offset: 2px;
}
.pms-dialog-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--pms-rule);
}
.pms-dialog-header h2 {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    min-inline-size: 0;
    margin: 0;
    font-size: 1.1875rem;
}
.pms-dialog-header h2 span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pms-dialog-close.pms-btn {
    justify-content: center;
    inline-size: 2.375rem;
    min-inline-size: 2.375rem;
    padding: 0;
}
.pms-dialog-close svg {
    display: block;
    flex: 0 0 auto;
}
.pms-dialog-body { padding: 1rem; }
.pms-about-intro,
.pms-about-hint {
    margin-block: 0 var(--pms-space-lg);
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-small);
}
.pms-about-details {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    gap: var(--pms-space-md) var(--pms-space-lg);
    margin: 0;
    padding-block: var(--pms-space-lg);
    border-block: 1px solid var(--pms-rule-soft);
    font-size: var(--pms-font-small);
}
.pms-about-details dt {
    color: var(--pms-fg-muted);
    font-weight: var(--pms-font-weight-semibold);
}
.pms-about-details dd {
    min-inline-size: 0;
    margin: 0;
    overflow-wrap: anywhere;
    color: var(--pms-fg);
    font-variant-numeric: tabular-nums;
    text-align: start;
}
.pms-about-details code {
    color: inherit;
    font: inherit;
}
.pms-about-hint {
    margin-block: var(--pms-space-lg) 0;
}
.pms-about-copy-status {
    margin-block: var(--pms-space-sm) 0;
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-small);
}
.pms-about-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: var(--pms-space-sm);
    margin-block-start: var(--pms-space-lg);
}
.pms-audit-dialog .pms-fingerprint {
    margin: 0;
    padding: 0;
    border: 0;
}
.pms-audit-dialog .pms-fingerprint dl {
    grid-template-columns: minmax(8rem, auto) minmax(0, 1fr);
    gap: 0.75rem 1rem;
    font-size: 0.8125rem;
}

@starting-style {
    .pms-dialog-backdrop { opacity: 0; }
    .pms-dialog { transform: scale(0.98); }
}

@media (prefers-reduced-motion: reduce) {
    .pms-dialog-backdrop,
    .pms-dialog {
        transition-duration: 0ms;
    }
    .pms-dialog { transform: none; }
}

/* ── 8. Buttons ───────────────────────────────────────────────────────
   Square, no lift. Primary is a solid accent fill; ghost is an outline.
   ─────────────────────────────────────────────────────────────────── */
.pms-btn {
    min-height: 2.375rem;
    padding: 0 1.125rem;
    font-weight: 700;
    letter-spacing: 0.01em;
}
.pms-btn-ghost {
    border-color: var(--pms-panel-border);
    color: var(--pms-fg);
}
.pms-btn-ghost:hover:not(:disabled) {
    border-color: var(--pms-border-strong);
    background: var(--pms-bg-alt);
}
.pms-btn-primary:hover:not(:disabled) {
    opacity: 1;
    background: color-mix(in srgb, var(--pms-accent) 88%, #000);
    border-color: color-mix(in srgb, var(--pms-accent) 88%, #000);
}
.pms-party-add {
    width: auto;
    height: 2rem;
    flex: 0 0 auto;
    gap: 0.4375rem;
    padding-inline: 0.75rem;
    font-size: 0.78125rem;
    font-weight: 700;
}
.pms-segmented { padding: 0; border-color: var(--pms-panel-border); }
.pms-segmented-item { border-radius: 0; }
.pms-segmented-item.active { box-shadow: none; }

/* ── 9. Data tables (.pms-grid, incl. Syncfusion header rows) ─────────
   The accent-filled header bar is replaced by a rule. Numeric cells use
   tabular figures. Add .pms-num to numeric <td>/<th>.
   ─────────────────────────────────────────────────────────────────── */
.pms-grid {
    border: 1px solid var(--pms-panel-border);
    border-radius: 0;
    /* app.css clips the table for its rounded corners; with radius 0 the clip
       only serves to swallow the absolutely-positioned .pms-lookup-results
       dropdown inside item grids, so lift it. */
    overflow: visible;
}
.pms-grid thead tr {
    background: var(--pms-bg);
    color: var(--pms-fg-muted);
    border-bottom: 1px solid var(--pms-rule);
}
.pms-grid th {
    font-size: 0.65625rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}
.pms-grid td { border-bottom: 1px solid var(--pms-rule-soft); }
.pms-grid tbody tr:nth-child(even) { background: transparent; }
.pms-grid th.pms-num,
.pms-grid td.pms-num {
    text-align: end;
    font-variant-numeric: tabular-nums;
}
.pms-grid tbody input {
    box-sizing: border-box;
    inline-size: 100%;
    min-inline-size: 0;
    border: 1px solid var(--pms-panel-border);
    border-radius: 0;
    background: var(--pms-bg);
    color: var(--pms-fg);
    font: inherit;
}
.pms-directory-table-wrap > .pms-grid {
    border-block-width: 0;
    border-inline-width: 0;
}
.pms-entry-grid {
    min-inline-size: var(--pms-entry-grid-min-size);
}
.pms-directory-table-wrap:focus-visible {
    outline: var(--pms-focus-ring-width) solid var(--pms-accent);
    outline-offset: var(--pms-focus-ring-offset);
}
.pms-entry-grid thead th:first-child,
.pms-entry-grid tbody th.pms-grid-primary-cell {
    position: sticky;
    inset-inline-start: 0;
    z-index: 1;
    min-inline-size: var(--pms-rate-editor-size);
    border-inline-end: var(--pms-rule-width) solid var(--pms-rule);
    background: var(--pms-bg);
}
.pms-entry-grid thead th:first-child {
    z-index: 2;
}
.pms-entry-grid tbody th.pms-grid-primary-cell {
    border-block-end: var(--pms-rule-width) solid var(--pms-rule-soft);
    color: var(--pms-fg);
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-regular);
    letter-spacing: normal;
    text-align: start;
    text-transform: none;
    vertical-align: middle;
}
.pms-entry-grid td {
    block-size: var(--pms-grid-row-block-size);
    vertical-align: middle;
}
.pms-grid-primary-cell > strong,
.pms-grid-value,
.pms-grid-meta {
    display: block;
}
.pms-grid-primary-cell > strong,
.pms-grid-value {
    color: var(--pms-fg);
    font-variant-numeric: tabular-nums;
}
.pms-grid-meta,
.pms-grid-empty-value {
    margin-block-start: var(--pms-space-xs);
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-small);
    font-weight: var(--pms-font-weight-regular);
    letter-spacing: normal;
    text-transform: none;
}
.pms-grid-header-meta {
    display: block;
    margin-block-start: var(--pms-space-xs);
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-nano);
    font-weight: var(--pms-font-weight-regular);
    letter-spacing: normal;
    text-transform: none;
}
.pms-grid-editor {
    display: grid;
    gap: var(--pms-space-xs);
    inline-size: min(100%, var(--pms-rate-editor-size));
    margin-inline-start: auto;
}
.pms-entry-grid tbody input:not([type="checkbox"]):not([type="radio"]) {
    min-block-size: var(--pms-control-block-size);
    padding-block: var(--pms-control-padding-block);
    padding-inline: var(--pms-control-padding-inline);
    border-color: var(--pms-panel-border);
    background: var(--pms-bg);
    color: var(--pms-fg);
}
.pms-entry-grid tbody input[type="number"] {
    text-align: end;
    font-variant-numeric: tabular-nums;
}
.pms-entry-grid tbody input.pms-grid-input--invalid {
    border-color: var(--pms-danger);
}
.pms-rate-change {
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-small);
    font-weight: var(--pms-font-weight-semibold);
    text-align: end;
}
.pms-entry-status {
    display: grid;
    gap: var(--pms-space-sm);
    align-items: start;
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-small);
}
.pms-entry-status .pms-switch-row {
    align-items: flex-start;
    color: var(--pms-fg);
    font-size: var(--pms-font-small);
    font-weight: var(--pms-font-weight-medium);
    letter-spacing: normal;
    text-transform: none;
    white-space: normal;
}
.pms-entry-grid tbody tr.pms-grid-row--dirty {
    background: color-mix(in srgb, var(--pms-accent) 4%, var(--pms-bg));
}
.pms-entry-grid tbody tr.pms-grid-row--dirty > :first-child {
    border-inline-start: var(--pms-selection-rule-width) solid var(--pms-accent);
    background: color-mix(in srgb, var(--pms-accent) 4%, var(--pms-bg));
}
.pms-entry-grid tbody tr.pms-grid-row--error {
    background: color-mix(in srgb, var(--pms-danger) 4%, var(--pms-bg));
}
.pms-entry-grid tbody tr.pms-grid-row--error > :first-child {
    border-inline-start: var(--pms-selection-rule-width) solid var(--pms-danger);
    background: color-mix(in srgb, var(--pms-danger) 4%, var(--pms-bg));
}
.pms-entry-grid tbody tr.pms-grid-row--saved > :first-child {
    border-inline-start: var(--pms-selection-rule-width) solid var(--pms-success);
}
.pms-entry-grid tbody tr:last-child > * {
    border-block-end: 0;
}
html .pms-entry-grid .pms-chip-success,
html .pms-syncfusion-grid .pms-chip-success {
    border-color: color-mix(in srgb, var(--pms-success) 30%, var(--pms-rule));
    background: color-mix(in srgb, var(--pms-success) 10%, var(--pms-bg));
    color: var(--pms-success);
}
.pms-grid tfoot th,
.pms-grid tfoot td {
    border-top: 1px solid var(--pms-rule);
    background: var(--pms-bg-alt);
}

/* GL financial statements: restrained hierarchy for screen and paper. */
.pms-statement-results {
    display: grid;
    gap: var(--pms-space-lg);
    min-inline-size: 0;
}
.pms-financial-statement {
    --pms-statement-account-column-size: 7.5rem;
    --pms-statement-amount-column-size: 11rem;
    min-inline-size: 0;
    padding: var(--pms-space-2xl);
}
.pms-statement-header {
    display: grid;
    justify-items: center;
    gap: var(--pms-space-xs);
    margin-block-end: var(--pms-space-xl);
    padding-block-end: var(--pms-space-xl);
    border-block-end: var(--pms-rule-width) solid var(--pms-fg);
    text-align: center;
}
.pms-statement-header h2,
.pms-statement-header dl,
.pms-statement-header dd {
    margin: 0;
}
.pms-statement-header h2 {
    color: var(--pms-fg);
    font-size: var(--pms-font-panel-title);
    font-weight: var(--pms-font-weight-bold);
    line-height: 1.25;
}
.pms-statement-date-list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--pms-space-sm) var(--pms-space-2xl);
    margin-block-start: var(--pms-space-sm) !important;
}
.pms-statement-date-list > div {
    display: flex;
    align-items: baseline;
    gap: var(--pms-space-sm);
}
.pms-statement-date-list dt {
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-small);
    font-weight: var(--pms-font-weight-medium);
}
.pms-statement-date-list dd {
    color: var(--pms-fg);
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-semibold);
}
.pms-statement-table-wrap {
    min-inline-size: 0;
}
.pms-statement-table {
    table-layout: fixed;
}
.pms-statement-table .pms-statement-account-number {
    inline-size: var(--pms-statement-account-column-size);
    direction: ltr;
    text-align: start;
    unicode-bidi: isolate;
}
.pms-statement-table .pms-statement-amount {
    inline-size: var(--pms-statement-amount-column-size);
    direction: ltr;
    text-align: end !important;
    white-space: nowrap;
}
.pms-statement-table tbody th,
.pms-statement-table tfoot th {
    border-block-end: var(--pms-rule-width) solid var(--pms-rule-soft);
    color: var(--pms-fg);
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-regular);
    letter-spacing: normal;
    text-transform: none;
    white-space: normal;
}
.pms-statement-account-title {
    padding-inline-start: calc(
        var(--pms-space-md) + var(--pms-statement-depth, 0) * var(--pms-space-xl)) !important;
    text-align: start;
}
.pms-statement-account-row--group > .pms-statement-account-title {
    font-weight: var(--pms-font-weight-semibold);
}
.pms-statement-table .pms-statement-account-row:hover {
    background: transparent;
}
.pms-statement-table .pms-grid-section-row,
.pms-statement-table .pms-grid-section-row:hover {
    background: var(--pms-bg-alt);
}
.pms-statement-table .pms-grid-section-row th {
    padding-block: var(--pms-space-md);
    border-block-start: calc(var(--pms-rule-width) * 2) solid var(--pms-fg);
    border-block-end: var(--pms-rule-width) solid var(--pms-rule);
    color: var(--pms-fg);
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-bold);
    letter-spacing: normal;
    text-transform: none;
    white-space: normal;
}
.pms-statement-table .pms-statement-section-total,
.pms-statement-table .pms-statement-section-total:hover {
    background: transparent;
}
.pms-statement-table .pms-statement-section-total > * {
    border-block-start: var(--pms-rule-width) solid var(--pms-fg-muted);
    border-block-end: 0;
    background: transparent;
    font-weight: var(--pms-font-weight-semibold);
}
.pms-statement-table .pms-statement-accumulated-row,
.pms-statement-table .pms-statement-accumulated-row:hover {
    background: color-mix(in srgb, var(--pms-accent) 3%, var(--pms-bg));
}
.pms-statement-table .pms-statement-accumulated-row > * {
    border-block-start: var(--pms-rule-width) solid var(--pms-rule-soft);
    border-block-end: 0;
    background: transparent;
    font-weight: var(--pms-font-weight-medium);
}
.pms-statement-table .pms-grid-subtotal-row,
.pms-statement-table .pms-grid-subtotal-row:hover {
    background: color-mix(in srgb, var(--pms-accent) 4%, var(--pms-bg));
}
.pms-statement-table .pms-grid-subtotal-row > * {
    border-block-start: calc(var(--pms-rule-width) * 2) solid var(--pms-fg-muted);
    border-block-end: 0;
    background: transparent;
    font-weight: var(--pms-font-weight-bold);
}
.pms-statement-table .pms-grid-total-row,
.pms-statement-table .pms-grid-total-row:hover {
    background: var(--pms-bg);
}
.pms-statement-table .pms-grid-total-row > * {
    padding-block: var(--pms-space-md);
    border-block-start: calc(var(--pms-rule-width) * 3) double var(--pms-fg);
    border-block-end: var(--pms-rule-width) solid var(--pms-fg);
    background: transparent;
    color: var(--pms-fg);
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-bold);
}
.pms-statement-layout {
    min-inline-size: 0;
}
.pms-balance-sheet-layout {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 32rem), 1fr));
    gap: var(--pms-space-2xl);
    align-items: start;
}
.pms-balance-sheet-column {
    display: grid;
    align-content: start;
    gap: var(--pms-space-2xl);
    min-inline-size: 0;
}
.pms-statement-section {
    min-inline-size: 0;
}
.pms-statement-section-heading {
    margin-block-end: var(--pms-space-sm);
    padding-block-end: var(--pms-space-sm);
    border-block-end-color: var(--pms-fg);
}
.pms-statement-section-heading h3 {
    margin: 0;
    color: var(--pms-fg);
    font-size: var(--pms-font-panel-title);
    font-weight: var(--pms-font-weight-bold);
}
.pms-statement-grand-total {
    display: grid;
    grid-template-columns: minmax(0, 1fr) var(--pms-statement-amount-column-size);
    align-items: baseline;
    margin-block-start: calc(var(--pms-space-xs) * -1);
    padding-block: var(--pms-space-md);
    padding-inline: var(--pms-space-md);
    border-block-start: calc(var(--pms-rule-width) * 3) double var(--pms-fg);
    border-block-end: var(--pms-rule-width) solid var(--pms-fg);
    color: var(--pms-fg);
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-bold);
}
.pms-statement-grand-total .pms-statement-amount {
    direction: ltr;
    text-align: end;
    white-space: nowrap;
}
.pms-statement-imbalance {
    display: grid;
    gap: var(--pms-space-xs);
    margin-block-end: var(--pms-space-xl);
    padding: var(--pms-space-md);
    border-inline-start: var(--pms-selection-rule-width) solid var(--pms-danger);
    background: color-mix(in srgb, var(--pms-danger) 8%, var(--pms-bg));
    color: var(--pms-danger);
}
.pms-statement-imbalance > div {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--pms-space-lg);
    font-weight: var(--pms-font-weight-bold);
}
.pms-statement-imbalance p {
    margin: 0;
    font-size: var(--pms-font-small);
    font-weight: var(--pms-font-weight-medium);
}
/* Classic paired presentation (Trading & P&L): the debit and credit halves sit side by side,
   first half on the inline-start side, so RTL naturally places المدين on the right. Each half
   keeps a readable minimum and the surrounding .pms-statement-table-wrap scrolls when the
   viewport cannot fit the pair. */
.pms-classic-statement-columns {
    --pms-classic-statement-column-min: 18rem;
    display: grid;
    grid-template-columns: repeat(2, minmax(var(--pms-classic-statement-column-min), 1fr));
    gap: var(--pms-space-lg);
    align-items: start;
}
@media (max-width: 40rem) {
    .pms-financial-statement {
        --pms-statement-account-column-size: 5.75rem;
        --pms-statement-amount-column-size: 8.5rem;
        padding: var(--pms-space-lg);
    }
    .pms-statement-date-list {
        display: grid;
    }
}
@page pms-income-statement {
    size: A4 portrait;
    margin: 12mm;
}
@page pms-balance-sheet {
    size: A4 landscape;
    margin: 10mm;
}
@media print {
    .pms-income-statement {
        page: pms-income-statement;
    }
    .pms-balance-sheet {
        page: pms-balance-sheet;
    }
    .pms-statement-page {
        display: block;
    }
    .pms-statement-page-heading,
    .pms-statement-controls,
    .pms-statement-page > .pms-report-feedback {
        display: none !important;
    }
    .pms-statement-results {
        display: block;
    }
    .pms-financial-statement {
        color-scheme: light;
        --pms-bg: Canvas;
        --pms-bg-alt: Canvas;
        --pms-fg: CanvasText;
        --pms-fg-muted: CanvasText;
        --pms-rule: GrayText;
        --pms-rule-soft: GrayText;
        --pms-panel-border: GrayText;
        --pms-danger: #c92a20;
        inline-size: 100%;
        margin: 0;
        padding: 0 !important;
        border: 0 !important;
        background: var(--pms-bg) !important;
        color: var(--pms-fg) !important;
    }
    .pms-statement-header {
        margin-block-end: 4mm;
        padding-block-end: 3mm;
        break-inside: avoid;
    }
    .pms-statement-header h2 {
        font-size: 16pt;
    }
    .pms-statement-date-list {
        margin-block-start: 2mm !important;
    }
    .pms-financial-statement .pms-directory-table-wrap {
        overflow: visible !important;
        outline: none !important;
        border: 0 !important;
        background: transparent !important;
    }
    .pms-financial-statement .pms-statement-table {
        inline-size: 100% !important;
        border: 0 !important;
        background: transparent !important;
        color: var(--pms-fg) !important;
        font-size: 8.5pt;
    }
    .pms-financial-statement .pms-statement-table thead {
        display: table-header-group;
    }
    .pms-financial-statement .pms-statement-table thead tr,
    .pms-financial-statement .pms-statement-table tbody tr,
    .pms-financial-statement .pms-statement-table tfoot tr {
        background: transparent !important;
        color: var(--pms-fg) !important;
    }
    .pms-financial-statement .pms-statement-table th,
    .pms-financial-statement .pms-statement-table td {
        padding-block: 1.5mm !important;
        padding-inline: 2mm !important;
        border: 0 !important;
        border-block-end: 0.25pt solid var(--pms-rule-soft) !important;
        background: transparent !important;
        color: var(--pms-fg) !important;
    }
    .pms-financial-statement .pms-statement-table .pms-statement-account-title {
        padding-inline-start: calc(
            2mm + var(--pms-statement-depth, 0) * 4mm) !important;
    }
    .pms-financial-statement .pms-statement-table .pms-grid-section-row th {
        padding-block-start: 2.5mm !important;
        border-block-start: 1pt solid var(--pms-fg) !important;
        border-block-end: 0.5pt solid var(--pms-fg) !important;
    }
    .pms-financial-statement .pms-statement-table .pms-statement-section-total > * {
        border-block-start: 0.5pt solid var(--pms-fg) !important;
        border-block-end: 0 !important;
    }
    .pms-financial-statement .pms-statement-table .pms-grid-subtotal-row > * {
        border-block-start: 1pt solid var(--pms-fg) !important;
        border-block-end: 0 !important;
    }
    .pms-financial-statement .pms-statement-table .pms-grid-total-row > * {
        border-block-start: 2.25pt double var(--pms-fg) !important;
        border-block-end: 0.75pt solid var(--pms-fg) !important;
    }
    .pms-financial-statement .pms-statement-table .pms-statement-accumulated-row > * {
        border-block-start: 0.25pt solid var(--pms-rule-soft) !important;
        border-block-end: 0 !important;
    }
    .pms-balance-sheet-layout {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8mm;
    }
    .pms-balance-sheet-column {
        gap: 6mm;
    }
    .pms-balance-sheet-column + .pms-balance-sheet-column {
        padding-block-start: 0;
        padding-inline-start: 8mm;
        border-block-start: 0;
        border-inline-start: 0.5pt solid var(--pms-fg);
    }
    .pms-statement-section-heading {
        margin-block-end: 2mm;
        padding-block-end: 1.5mm;
    }
    .pms-financial-statement .pms-statement-imbalance,
    .pms-financial-statement .pms-grid-section-row,
    .pms-financial-statement .pms-statement-section-total,
    .pms-financial-statement .pms-grid-subtotal-row,
    .pms-financial-statement .pms-grid-total-row,
    .pms-financial-statement .pms-statement-accumulated-row,
    .pms-financial-statement .pms-statement-account-row,
    .pms-financial-statement .pms-statement-grand-total {
        break-inside: avoid;
    }
    .pms-financial-statement .pms-statement-section-heading,
    .pms-financial-statement .pms-grid-section-row {
        break-after: avoid;
    }
    .pms-financial-statement .pms-statement-table-wrap {
        break-before: avoid;
    }
    .pms-financial-statement .pms-statement-section-total,
    .pms-financial-statement .pms-grid-subtotal-row,
    .pms-financial-statement .pms-grid-total-row,
    .pms-financial-statement .pms-statement-accumulated-row,
    .pms-financial-statement .pms-statement-grand-total {
        break-before: avoid;
    }
    .pms-financial-statement .pms-statement-grand-total {
        padding-block: 2mm;
        padding-inline: 2mm;
        border-block-start: 2.25pt double var(--pms-fg);
        border-block-end: 0.75pt solid var(--pms-fg);
        color: var(--pms-fg);
    }
}

/* Syncfusion grids use the same ruled, square table language as .pms-grid. */
.pms-syncfusion-grid-wrap {
    inline-size: 100%;
    overflow-x: auto;
    border: var(--pms-rule-width) solid var(--pms-panel-border);
    background: var(--pms-bg);
}
.pms-syncfusion-grid.e-grid {
    --color-sf-primary: var(--pms-accent);
    --color-sf-primary-text-color: var(--pms-accent-fg);
    --color-sf-border: var(--pms-rule);
    --color-sf-border-alt: var(--pms-rule-soft);
    --color-sf-border-focus: var(--pms-accent);
    --color-sf-content-bg-color: var(--pms-bg);
    --color-sf-content-bg-color-alt1: var(--pms-bg);
    --color-sf-content-bg-color-alt2: var(--pms-bg-alt);
    --color-sf-content-bg-color-hover: var(--pms-bg-alt);
    --color-sf-content-bg-color-selected: var(--pms-accent);
    --color-sf-content-text-color: var(--pms-fg);
    --color-sf-content-text-color-alt1: var(--pms-fg-muted);
    --color-sf-content-text-color-hover: var(--pms-fg);
    --color-sf-content-text-color-selected: var(--pms-accent-fg);
    --color-sf-icon-color: var(--pms-fg-muted);
    --color-sf-icon-color-hover: var(--pms-fg);
    border: 0;
    background: var(--pms-bg);
    color: var(--pms-fg);
}
.pms-syncfusion-grid .e-gridheader,
.pms-syncfusion-grid .e-headercell,
.pms-syncfusion-grid .e-filterbarcell,
.pms-syncfusion-grid .e-toolbar {
    border-color: var(--pms-rule);
    background: var(--pms-bg);
}
.pms-syncfusion-grid .e-headercell {
    block-size: var(--pms-grid-row-block-size);
}
.pms-syncfusion-grid .e-headertext {
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-micro);
    font-weight: var(--pms-font-weight-bold);
    letter-spacing: var(--pms-tracking-micro);
    text-transform: uppercase;
}
.pms-syncfusion-grid .e-rowcell {
    block-size: var(--pms-grid-row-block-size);
    border-color: var(--pms-rule-soft);
    background: var(--pms-bg);
    color: var(--pms-fg);
    font-size: var(--pms-font-body);
}
.pms-syncfusion-grid .e-altrow .e-rowcell {
    background: var(--pms-bg);
}
.pms-syncfusion-grid .e-filterbarcell :where(.e-input-group, select.e-input),
.pms-syncfusion-grid .e-toolbar .e-input-group {
    min-block-size: var(--pms-control-block-size);
    border-color: var(--pms-panel-border);
    border-radius: var(--pms-radius-control);
    background: var(--pms-bg-alt);
    color: var(--pms-fg);
    box-shadow: none;
}
.pms-syncfusion-grid .e-gridpager {
    border-color: var(--pms-rule);
    background: var(--pms-bg);
    color: var(--pms-fg-muted);
}
.pms-syncfusion-grid .e-gridpager :where(
    .e-numericitem,
    .e-firstpage,
    .e-firstpagedisabled,
    .e-prevpage,
    .e-prevpagedisabled,
    .e-nextpage,
    .e-nextpagedisabled,
    .e-lastpage,
    .e-lastpagedisabled,
    .e-input-group,
    .e-pagerdropdown
) {
    border-radius: 0;
    background-color: var(--pms-bg);
    color: var(--pms-fg-muted);
}
.pms-syncfusion-grid .e-sortfilterdiv,
.pms-syncfusion-grid .e-headercell .e-icons {
    color: var(--pms-fg-muted);
}
.pms-syncfusion-grid .e-currentitem,
.pms-syncfusion-grid .e-currentitem:hover {
    background: var(--pms-accent);
    color: var(--pms-accent-fg);
}

@media (hover: hover) and (pointer: fine) {
    .pms-grid tbody tr:not(.pms-grid-row--dirty):not(.pms-grid-row--error):hover {
        background: color-mix(in srgb, var(--pms-accent) 4%, var(--pms-bg));
    }
    .pms-entry-grid tbody tr:not(.pms-grid-row--dirty):not(.pms-grid-row--error):hover > th:first-child {
        background: color-mix(in srgb, var(--pms-accent) 4%, var(--pms-bg));
    }
    .pms-syncfusion-grid .e-row:hover .e-rowcell {
        background: color-mix(in srgb, var(--pms-accent) 4%, var(--pms-bg));
    }
}

@media (hover: none), (pointer: coarse) {
    .pms-grid tbody tr:hover {
        background: transparent;
    }
    .pms-entry-grid tbody tr.pms-grid-row--dirty:hover {
        background: color-mix(in srgb, var(--pms-accent) 4%, var(--pms-bg));
    }
    .pms-entry-grid tbody tr.pms-grid-row--error:hover {
        background: color-mix(in srgb, var(--pms-danger) 4%, var(--pms-bg));
    }
    .pms-syncfusion-grid .e-row:hover .e-rowcell {
        background: var(--pms-bg);
    }
}

@media (max-width: 960px) {
    .pms-transaction-form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 560px) {
    .pms-transaction-form {
        grid-template-columns: minmax(0, 1fr);
    }
    .pms-section-heading {
        flex-direction: column;
    }
    .pms-entry-toolbar-actions {
        inline-size: 100%;
        justify-content: flex-start;
        margin-inline-start: 0;
    }
    .pms-entry-toolbar-actions .pms-btn {
        inline-size: 100%;
    }
}

/* PB-compatible transaction print preview. The document structure follows the legacy
   d_inv_* DataWindows while remaining a self-contained A4 sheet on plain paper. */
.pms-transaction-print-page {
    min-block-size: 100%;
    padding: 1.5rem;
    background: var(--pms-canvas);
}
.pms-transaction-print-toolbar {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    inline-size: min(210mm, 100%);
    margin: 0 auto 1rem;
}
.pms-transaction-print-state {
    display: grid;
    place-items: center;
    min-block-size: 50vb;
    inline-size: min(210mm, 100%);
    margin: 0 auto;
    border: 1px solid var(--pms-panel-border);
    background: var(--pms-bg);
    text-align: center;
}
.pms-transaction-print-document {
    color-scheme: light;
    --pms-fg: CanvasText;
    --pms-fg-muted: CanvasText;
    --pms-bg: Canvas;
    --pms-panel-border: CanvasText;
    box-sizing: border-box;
    inline-size: min(210mm, 100%);
    min-block-size: 297mm;
    margin: 0 auto;
    padding: 13mm 14mm 11mm;
    border: 1px solid var(--pms-panel-border);
    background: var(--pms-bg);
    color: var(--pms-fg);
    font-size: 10.5pt;
    line-height: 1.45;
}
.pms-transaction-print-document h1,
.pms-transaction-print-document h2,
.pms-transaction-print-document p,
.pms-transaction-print-document dl,
.pms-transaction-print-document dd {
    margin: 0;
}
.pms-transaction-print-document img {
    display: block;
    inline-size: 18mm;
    block-size: 22mm;
    object-fit: contain;
}
.pms-transaction-print-letterhead {
    display: flex;
    align-items: flex-end;
    justify-content: flex-start;
    min-block-size: 42mm;
    padding-block-end: 5mm;
}
.pms-transaction-print-letterhead h1 {
    font-size: 25pt;
    line-height: 1;
}
.pms-transaction-print-commerce-meta {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 62mm;
    gap: 10mm;
    padding-block: 7mm 5mm;
}
.pms-transaction-print-party dl,
.pms-transaction-print-document-facts,
.pms-transaction-print-bank dl {
    display: grid;
    grid-template-columns: 30mm minmax(0, 1fr);
    gap: 1.2mm 3mm;
}
.pms-transaction-print-party dt,
.pms-transaction-print-document-facts dt,
.pms-transaction-print-bank dt {
    color: var(--pms-fg-muted);
    font-weight: 600;
}
.pms-transaction-print-party dd,
.pms-transaction-print-document-facts dd,
.pms-transaction-print-bank dd {
    min-inline-size: 0;
    overflow-wrap: anywhere;
}
.pms-transaction-print-party dd span,
.pms-transaction-print-party dd strong {
    display: block;
}
.pms-transaction-print-lines {
    inline-size: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 9pt;
}
.pms-transaction-print-lines th,
.pms-transaction-print-lines td {
    padding: 2.5mm 2mm;
    border: 1px solid var(--pms-fg);
    vertical-align: top;
    text-align: start;
}
.pms-transaction-print-lines th {
    font-size: 8.5pt;
    font-weight: 700;
}
.pms-transaction-print-lines td.pms-num,
.pms-transaction-print-lines th.pms-num {
    text-align: end;
}
.pms-transaction-print-lines td strong,
.pms-transaction-print-description-ar {
    display: block;
}
.pms-transaction-print-description-ar {
    margin-block-start: 1mm;
    text-align: start;
}
.pms-transaction-print-sequence { inline-size: 8mm; }
.pms-transaction-print-part { inline-size: 30mm; }
.pms-transaction-print-unit { inline-size: 15mm; }
.pms-transaction-print-quantity { inline-size: 18mm; }
.pms-transaction-print-price { inline-size: 25mm; }
.pms-transaction-print-total { inline-size: 28mm; }
.pms-transaction-print-summary {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(65mm, 0.75fr);
    gap: 10mm;
    margin-block-start: 5mm;
}
.pms-transaction-print-bank {
    border: 1px solid var(--pms-fg);
}
.pms-transaction-print-bank h2 {
    padding: 2mm 3mm;
    border-block-end: 1px solid var(--pms-fg);
    font-size: 10pt;
    text-align: center;
}
.pms-transaction-print-bank dl {
    padding: 3mm;
}
.pms-transaction-print-totals {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 32mm;
    align-self: start;
}
.pms-transaction-print-totals dt,
.pms-transaction-print-totals dd {
    padding: 2.5mm 2mm;
    border-block-end: 1px solid var(--pms-fg);
}
.pms-transaction-print-totals dt {
    font-weight: 700;
    text-align: end;
}
.pms-transaction-print-totals dd {
    font-variant-numeric: tabular-nums;
    text-align: end;
}
.pms-transaction-print-signature-stamp {
    display: flex;
    flex-direction: column;
    align-items: center;
    inline-size: 58mm;
    margin-block-start: 18mm;
    padding-block-start: 3mm;
    border-block-start: 1px solid var(--pms-fg);
}
.pms-transaction-print-signature-stamp strong {
    margin-block-start: 7mm;
}
.pms-transaction-print-receipt-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    min-block-size: 48mm;
    padding-block-end: 5mm;
    border-block-end: 2px solid var(--pms-fg);
}
.pms-transaction-print-receipt-header h1 {
    margin-block: 4mm 2mm;
    font-size: 26pt;
}
.pms-transaction-print-voucher-dates {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr);
    gap: 1mm 3mm;
}
.pms-transaction-print-voucher-dates dt {
    font-weight: 700;
}
.pms-transaction-print-receipt-grid {
    display: grid;
    grid-template-columns: 44mm minmax(0, 1fr) 28mm 48mm;
    margin-block-start: 9mm;
    border-block-start: 1px solid var(--pms-fg);
    border-inline-start: 1px solid var(--pms-fg);
}
.pms-transaction-print-receipt-label,
.pms-transaction-print-receipt-value {
    min-block-size: 15mm;
    padding: 3mm;
    border-block-end: 1px solid var(--pms-fg);
    border-inline-end: 1px solid var(--pms-fg);
}
.pms-transaction-print-receipt-label {
    font-weight: 700;
}
.pms-transaction-print-receipt-party {
    grid-column: span 1;
}
.pms-transaction-print-receipt-notes,
.pms-transaction-print-receipt-words {
    grid-column: span 3;
}
.pms-transaction-print-receipt-reference span {
    display: block;
}
.pms-transaction-print-receipt-notes {
    min-block-size: 28mm;
}
.pms-transaction-print-receipt-words {
    min-block-size: 22mm;
    font-style: italic;
}
.pms-transaction-print-signatures {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 28mm;
    margin-block-start: 30mm;
}
.pms-transaction-print-signatures div {
    padding-block-start: 3mm;
    border-block-start: 1px solid var(--pms-fg);
    text-align: center;
}
.pms-transaction-print-voucher-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-block-start: 9mm;
    border-block-start: 1px solid var(--pms-fg);
    border-inline-start: 1px solid var(--pms-fg);
}
.pms-transaction-print-voucher-grid > div {
    display: grid;
    grid-template-columns: 34mm minmax(0, 1fr);
    min-block-size: 15mm;
    border-block-end: 1px solid var(--pms-fg);
    border-inline-end: 1px solid var(--pms-fg);
}
.pms-transaction-print-voucher-grid strong,
.pms-transaction-print-voucher-grid span {
    padding: 3mm;
}
.pms-transaction-print-voucher-grid strong {
    border-inline-end: 1px solid var(--pms-fg);
}
.pms-transaction-print-voucher-wide,
.pms-transaction-print-voucher-amount {
    grid-column: 1 / -1;
}
.pms-transaction-print-voucher-wide {
    grid-template-columns: 34mm minmax(0, 1fr) !important;
}
.pms-transaction-print-voucher-reason {
    min-block-size: 34mm !important;
}
@media print {
    @page {
        size: A4 portrait;
        margin: 10mm;
    }
    .pms-transaction-print-page {
        padding: 0;
        background: transparent;
    }
    .pms-transaction-print-toolbar {
        display: none !important;
    }
    .pms-transaction-print-document {
        inline-size: 100%;
        min-block-size: 0;
        margin: 0;
        padding: 0;
        border: 0;
        background: Canvas;
        color: CanvasText;
    }
    .pms-transaction-print-lines thead {
        display: table-header-group;
    }
    .pms-transaction-print-lines tr,
    .pms-transaction-print-summary,
    .pms-transaction-print-bank,
    .pms-transaction-print-totals,
    .pms-transaction-print-signatures,
    .pms-transaction-print-signature-stamp {
        break-inside: avoid;
    }
    .pms-transaction-print-description-ar,
    .pms-transaction-print-party dt,
    .pms-transaction-print-document-facts dt,
    .pms-transaction-print-bank dt {
        color: inherit;
    }
    .pms-transaction-page .pms-record-master,
    .pms-transaction-page .pms-party-save-group,
    .pms-transaction-page .pms-grid button {
        display: none !important;
    }
    .pms-transaction-page .pms-split {
        display: block !important;
    }
    .pms-transaction-page .pms-record-detail {
        inline-size: 100% !important;
    }
}

/* Asset-type hierarchy: shared by asset creation and category management. */
.pms-asset-type-field {
    display: grid;
    gap: var(--pms-space-sm);
    min-inline-size: 0;
}
.pms-asset-type-label {
    color: var(--pms-fg-muted);
    font-size: var(--pms-font-micro);
    font-weight: var(--pms-font-weight-bold);
    letter-spacing: var(--pms-tracking-micro);
    text-transform: uppercase;
}
.pms-tree-picker {
    min-inline-size: 0;
    border: var(--pms-rule-width) solid var(--pms-panel-border);
    border-radius: var(--pms-radius-panel);
    background: var(--pms-bg);
}
.pms-tree,
.pms-tree ul {
    margin: 0;
    padding: 0;
    list-style: none;
}
.pms-tree {
    padding-block: var(--pms-space-xs);
}
.pms-tree ul {
    margin-inline-start: var(--pms-space-lg);
    border-inline-start: var(--pms-rule-width) solid var(--pms-rule-soft);
}
.pms-tree-node {
    min-inline-size: 0;
}
.pms-tree-row {
    display: flex;
    align-items: center;
    gap: var(--pms-space-xs);
    min-inline-size: 0;
    padding-inline-end: var(--pms-space-xs);
}
.pms-tree-select {
    display: flex;
    flex: 1 1 auto;
    align-items: center;
    min-inline-size: 0;
    min-block-size: var(--pms-control-block-size);
    padding-block: var(--pms-control-padding-block);
    padding-inline: var(--pms-control-padding-inline);
    border: 0;
    border-inline-start: var(--pms-selection-rule-width) solid transparent;
    border-radius: var(--pms-radius-control);
    background: transparent;
    color: var(--pms-fg);
    font: inherit;
    font-size: var(--pms-font-body);
    font-weight: var(--pms-font-weight-medium);
    text-align: start;
    cursor: pointer;
    transition:
        transform var(--pms-duration-fast) var(--pms-ease-out),
        background-color var(--pms-duration-fast) var(--pms-ease-out),
        border-color var(--pms-duration-fast) var(--pms-ease-out),
        color var(--pms-duration-fast) var(--pms-ease-out);
}
.pms-tree-select > span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pms-tree-select.is-selected {
    border-inline-start-color: var(--pms-accent);
    background: color-mix(in srgb, var(--pms-accent) 5%, var(--pms-bg));
    color: var(--pms-accent);
    font-weight: var(--pms-font-weight-bold);
}
.pms-tree-select:active {
    transform: scale(0.99);
}
.pms-tree-node-actions {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: var(--pms-space-xs);
}
.pms-tree-editor {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--pms-space-sm);
    min-inline-size: 0;
    padding-block: var(--pms-space-sm);
    padding-inline: var(--pms-space-md);
    border-block-start: var(--pms-rule-width) solid var(--pms-rule-soft);
    background: var(--pms-bg-alt);
}
.pms-tree-root-editor {
    border-block-start: 0;
    border-block-end: var(--pms-rule-width) solid var(--pms-rule-soft);
}
.pms-tree-editor input {
    min-inline-size: 0;
    min-block-size: var(--pms-control-block-size);
    padding-block: var(--pms-control-padding-block);
    padding-inline: var(--pms-control-padding-inline);
    border: var(--pms-rule-width) solid var(--pms-panel-border);
    border-radius: var(--pms-radius-control);
    background: var(--pms-bg);
    color: var(--pms-fg);
    font: inherit;
}
@media (hover: hover) and (pointer: fine) {
    .pms-tree-select:not(.is-selected):hover {
        background: var(--pms-bg-alt);
    }
}

/* ── 10. Focus ────────────────────────────────────────────────────────
   Square 2px accent ring, never the browser default.
   ─────────────────────────────────────────────────────────────────── */
:where(a, button, summary, input, select, textarea, [tabindex]):focus-visible {
    outline: 2px solid var(--pms-accent);
    outline-offset: 2px;
    border-radius: 0;
}

/* ── 11. Auth pages are excluded ──────────────────────────────────────
   The login/forgot/reset design is retained. Only the typeface reaches
   them; their radii, gradients and shadows are restored here.
   ─────────────────────────────────────────────────────────────────── */
.pms-auth-input,
.pms-auth-submit,
.pms-auth-lang,
.pms-auth-lang a,
.pms-auth-theme,
.pms-auth-brand-mark,
.pms-auth-eyebrow,
.pms-auth-chips li,
.pms-auth-validation:not(:empty),
.pms-auth-alert,
.pms-auth-status {
    border-radius: var(--pms-auth-radius, 8px);
}
.pms-auth-eyebrow,
.pms-auth-chips li,
.pms-auth-lang,
.pms-auth-lang a,
.pms-auth-theme {
    --pms-auth-radius: 999px;
}
.pms-auth-lang { --pms-auth-radius: 9px; }
.pms-auth-lang a { --pms-auth-radius: 6px; }
.pms-auth-theme { --pms-auth-radius: 9px; }
.pms-auth-brand-mark { --pms-auth-radius: 10px; }
.pms-auth-lang a.is-active { box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05); }
.pms-auth-submit,
.pms-auth .pms-btn-primary {
    justify-content: center;
    box-shadow:
        0 1px 1px color-mix(in srgb, #000 8%, transparent),
        inset 0 1px 0 color-mix(in srgb, #fff 16%, transparent);
}
.pms-main.pms-main--login { background: var(--pms-bg); }

/* ── 12. Dashboard layout ─────────────────────────────────────────────
   The page previously capped at 1480px, leaving a dead strip on wide
   monitors, and the fixed 5-column KPI grid wrapped the sixth tile
   (Net Margin YTD) into a mostly-empty second row.

   This layer loads after ALL of app.css, so every rule here would also
   beat app.css's narrow-viewport media rules; each override therefore
   carries its own responsive scoping. The six-tile strip is driven by
   a container query on the page's inline size instead of the viewport,
   so the 6-up switch accounts for the sidebar being expanded (260px)
   or collapsed (56px): a tile must fit a three-decimal LYD amount in
   the 22px KPI face without wrapping, which needs ≈220px per tile
   (6 × 220px + 5 gaps ≈ 1380px of content width). */
.pms-dashboard-page {
    max-width: none;
    container-type: inline-size;
}
/* Above app.css's 1060px single-column switch, hold the share card at
   its designed ~28rem so all reclaimed width goes to the yearly chart. */
@media (min-width: 1061px) {
    .pms-dashboard-main {
        grid-template-columns: minmax(0, 1fr) minmax(320px, 28rem);
    }
}
/* Six tiles (profit KPI present): 1 → 2 → 3×2 → one 6-up row, stepped
   by the width actually available to the strip. */
.pms-kpi-strip--six {
    grid-template-columns: repeat(1, minmax(0, 1fr));
}
@container (min-width: 520px) {
    .pms-kpi-strip--six {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@container (min-width: 800px) {
    .pms-kpi-strip--six {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}
@container (min-width: 1380px) {
    .pms-kpi-strip--six {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }
}
