/* Shared record presentation for both portals. Source status keys and sort values stay intact. */
.nk-body:is(.portal-booker,.portal-entertainer) {
    --portal-status-wait: #BF9E6B;
    --portal-status-good: #719B78;
    --portal-status-stop: #C47F79;
}
/* One tag geometry in rows, cards, headings and dynamically mounted dialogs.
   Inline formatting also ellipsises raw text without restructuring Alpine content. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) :is(.badge,.cx-status-badge,.cx-enquiry-detail__badge,.cx-booking-detail__status,.cx-review-status,.invoice-document__status,.portal-status-tag,:where(span).cx-team-status) {
    box-sizing: border-box !important;
    display: inline-block !important;
    width: fit-content; min-width: 0 !important; max-width: 100% !important;
    height: 28px !important; min-height: 28px !important; max-height: 28px !important;
    padding: 4px 9px !important; margin-block: 0 !important;
    border: 1px solid #454545 !important; border-radius: 6px !important;
    background: var(--portal-section-surface, #303030) !important; color: var(--portal-text) !important;
    font: 600 12px/18px 'Satoshi Variable', 'Satoshi', sans-serif !important;
    letter-spacing: 0 !important; text-transform: none !important; text-align: left !important;
    white-space: nowrap !important; overflow-wrap: normal !important; word-break: normal !important;
    overflow: hidden !important; text-overflow: ellipsis !important; vertical-align: middle;
}
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) [data-portal-status-tone] {
    background: var(--status-fill) !important;
    border-left: 3px solid var(--status-edge) !important;
}
.nk-body.nk-body [data-portal-status-tone="neutral"] { --status-edge: #999; --status-fill: var(--portal-section-surface, #303030); }
.nk-body.nk-body [data-portal-status-tone="waiting"] { --status-edge: var(--portal-status-wait); --status-fill: #393329; }
.nk-body.nk-body [data-portal-status-tone="positive"] { --status-edge: var(--portal-status-good); --status-fill: #2D372F; }
.nk-body.nk-body [data-portal-status-tone="negative"] { --status-edge: var(--portal-status-stop); --status-fill: #3C2F2E; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) :is(.badge,.cx-status-badge,.cx-enquiry-detail__badge,.cx-booking-detail__status,.cx-review-status,.invoice-document__status,.portal-status-tag,:where(span).cx-team-status) :is(span,strong):not(.icon) {
    display: inline !important; padding: 0 !important; margin: 0 !important;
    color: inherit !important; font: inherit !important;
    letter-spacing: 0 !important; text-transform: none !important;
    white-space: nowrap !important; overflow-wrap: normal !important; word-break: normal !important;
}
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) :is(.badge,.cx-status-badge,.portal-status-tag) > :is(.icon,svg) {
    display: inline-block !important; width: 14px !important; height: 14px !important;
    min-width: 14px !important; padding: 0 !important; margin: 0 4px 0 0 !important;
    font-size: 14px !important; line-height: 14px !important; color: inherit !important;
    vertical-align: -2px;
}
/* Felix 2026-10-17 (U21): status tags are the word and its coloured edge, on every page. Events,
   Bookings, Invoices and Financials had a small icon in the tag; Enquiries, Quotes, the event page and
   Messages didn't. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) :is(.cx-status-badge,.portal-status-tag) > :is(.icon,svg) { display: none !important; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-enquiry-detail__badge::before { display: none; }
/* Hidden status nodes must remain hidden despite the shared display rule. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) :is(.badge,.portal-status-tag,[data-portal-status-tone]):is([hidden],[x-cloak],[style*="display: none"]) { display: none !important; }

/* Full values fit in date/money cells. Only compact record names are shortened. */
/* No max-width cap: the wrap breaks out of the card padding on both sides (app-overrides.css),
   and a 100% cap stopped it short of the right edge. Wide tables still scroll inside the wrap. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table-wrap { max-width: none; overflow-x: auto; }
.nk-body:is(.portal-booker,.portal-entertainer) [data-portal-column="number"] { width: 48px; font-variant-numeric: tabular-nums; }
.nk-body:is(.portal-booker,.portal-entertainer) [data-portal-column="amount"] { min-width: 150px; white-space: nowrap; font-variant-numeric: tabular-nums; }
.nk-body:is(.portal-booker,.portal-entertainer) [data-portal-column="date"] { min-width: 180px; }
.nk-body:is(.portal-booker,.portal-entertainer) [data-portal-column="text"] { min-width: 0; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-name {
    display: block; min-width: 0; max-width: 100%; overflow: hidden !important;
    text-overflow: ellipsis; white-space: nowrap !important; overflow-wrap: normal;
}
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-tb-col[data-portal-column="text"] > .portal-record-name { max-width: 260px; }
.nk-body:is(.portal-booker,.portal-entertainer) :is(.cx-mobile-record-card__heading,.cx-mobile-compact-row__main,.user-info) { min-width: 0; }
@media(min-width:768px) {
    .nk-body:is(.portal-booker,.portal-entertainer) .cx-ent-bookings:not(.cx-rose-events) .cx-fin-table { min-width: 968px; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table .nk-tb-col[data-portal-column="amount"] { padding-right: 20px !important; }
}
/* Quotes is a table from 992px; below that it uses the same card as every other list. */
@media(min-width:992px) {
    /* Event | Event date | Amount | Status | Download | View (style guide section 9; Download added
       for D3, Felix 2026-10-17). The same widths as the document lists, so it fits a 1280 laptop. */
    .nk-body:is(.portal-booker,.portal-entertainer) .cx-quotes-premium .cx-fin-table { display:block; min-width:860px; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-quotes-premium .cx-fin-table .nk-tb-item { display:grid; grid-template-columns:minmax(220px,1fr) 152px 112px 176px 140px 124px; align-items:center; width:100%; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-quotes-premium .cx-fin-table .nk-tb-col { display:block; min-width:0; width:auto; padding:16px 12px !important; white-space:normal; }
}
@media(min-width:1400px) {
    .nk-body:is(.portal-booker,.portal-entertainer) .cx-ent-bookings:not(.cx-rose-events) .cx-fin-table { min-width: 1112px; }
}
@media(max-width:767.98px) {
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-quote-record .nk-tb-col[data-portal-column] { min-width: 0; width: auto; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-quote-record .nk-tb-col[data-portal-column="text"] > .portal-record-name { max-width: 100%; }
}

/* A single continuous focus stroke; stable textarea geometry prevents text reflow. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content :is(.cx-unified-search,.cx-unified-thread-search__field,.cx-unified-compose-field) {
    border:1px solid #474747 !important; outline:none !important; box-shadow:none !important;
}
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content :is(.cx-unified-search,.cx-unified-thread-search__field,.cx-unified-compose-field):focus-within {
    border-color:#9DBCA2 !important; outline:none !important; box-shadow:none !important;
}
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content :is(.cx-unified-search,.cx-unified-thread-search__field,.cx-unified-compose-field) :is(input,textarea),
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content :is(.cx-unified-search,.cx-unified-thread-search__field,.cx-unified-compose-field) :is(input,textarea):focus {
    border:0 !important; outline:none !important; box-shadow:none !important; background:transparent !important;
}
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-compose-field textarea {
    box-sizing:border-box; scrollbar-gutter:stable; overflow-y:auto; resize:none;
    font:400 16px/24px 'Satoshi Variable','Satoshi',sans-serif !important;
    padding:10px 0 !important; letter-spacing:normal !important; transition:none !important;
}
.nk-body:is(.portal-booker,.portal-entertainer) textarea.portal-message-input { scrollbar-gutter:stable; }

/* Neutral value text in every portal dialog, including dialogs mounted outside page wrappers. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .modal-content :is(strong,.fw-bold,.fw-medium) { color: var(--portal-text) !important; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .modal-content .portal-quote-total > strong,
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-quote-review-modal__fact--total > strong { color: var(--portal-total) !important; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-enquiry-detail__decline--inline { margin:16px 0 24px !important; padding:20px; border:1px solid #555; border-radius:8px; background: var(--portal-surface-raised); scroll-margin-top:88px; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-enquiry-detail__decline--inline:not([open]) { display:none; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-enquiry-detail__decline--inline > summary { display:none; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-enquiry-detail__decline--inline form { margin-top:0; }
@media(max-width:575.98px) {
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-enquiry-detail__decline--inline { padding:16px; }
}

.nk-body.nk-body:is(.portal-booker,.portal-entertainer) :is(.nk-content,.modal-content) :is(.cx-fin-table,.cx-mobile-record-card,.cx-mobile-compact-row) .cx-status-badge[data-portal-status-tone] > span { font:inherit !important; letter-spacing:0 !important; }

/* A date range wraps between its two dates rather than invading the next column. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-fin-table :is([data-portal-display-date],[data-enquiry-display-date],[data-event-display-date]) { white-space:normal !important; overflow-wrap:normal; }

/* Quotes use the same labelled "View" button as every other list (no icon-only buttons). */

/* Keep multi-digit row numbers together inside their compact column. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table .nk-tb-item > .nk-tb-col[data-portal-column="number"] { padding-inline:6px !important; white-space:nowrap !important; }

/* Enquiry cards can have more actions than fit on one phone-width line. */
@media(max-width:991.98px) {
    .nk-body:is(.portal-booker,.portal-entertainer) :is(.cx-booker-enquiries,.cx-ent-enquiries) .cx-mobile-record-card__footer { flex-wrap: wrap; gap: 8px; }
}

/* Settings use the same semantic palette for small icon-only verification marks. */
.nk-body.portal-entertainer .cx-team-abn__badge--verified { color: var(--portal-status-good) !important; background:#2D372F !important; }
.nk-body.portal-entertainer .cx-team-abn__badge--unverified { color: var(--portal-status-wait) !important; background:#393329 !important; }
.nk-body.portal-entertainer .cx-team-abn__badge--missing { color: var(--portal-status-stop) !important; background:#3C2F2E !important; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-status-tag--stacked { display:block !important; margin-top:8px !important; }

/* Calendar and title stay aligned even with long event names. */
.cx-event-record-identity { width:100%; display:flex; align-items:center; gap:14px; min-width:0; }
.cx-event-record-identity__copy { min-width:0; flex:1; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-rose-events .cx-event-record-identity__copy .cx-rose-event-link { display:block; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cx-rose-events .cx-mobile-record-card__header { gap:12px; flex-wrap:wrap; align-items:center; }
.cx-rose-events .cx-mobile-record-card__heading { flex:1; min-width:0; }
.cx-rose-events .cx-mobile-compact-record { display:grid; grid-template-columns:48px minmax(0,1fr); gap:12px; }
.cx-rose-events .cx-mobile-compact-record__main { min-width:0; }
.cx-rose-events .cx-mobile-compact-record__side { grid-column:2; display:flex; justify-content:space-between; align-items:center; gap:12px; }
.cx-rose-events :is(.cx-mobile-compact-record__main,.cx-mobile-record-card__heading) :is(h3,a) { display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* Give status, title and actions their own space in both account types. */
.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-info--event-details .cx-unified-info__body { padding:20px !important; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-event-detail-summary { display:grid; grid-template-columns:40px minmax(0,1fr); gap:12px; padding:0 0 20px; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-event-detail-summary__copy { display:contents; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-event-detail-summary h4 { margin:0; font-size:16px; line-height:1.4; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-event-detail-summary p { margin:0; }
.cx-unified-event-detail-reference { color: var(--portal-muted); font-size:12px; line-height:1.5; }
.cx-unified-event-detail-status { grid-column:1/-1; display:flex; gap:10px; min-width:0; padding-top:4px; }
.cx-unified-event-quick-actions { display:grid; grid-template-columns:minmax(0,1fr); gap:8px; margin:18px 0 22px; }
.cx-unified-event-quick-actions h4 { margin:0 0 4px; color: var(--portal-muted); font-size:12px; font-weight:700; }
.cx-unified-event-quick-actions :is(a,button) { display:flex; align-items:center; justify-content:flex-start; gap:10px; width:100%; min-width:0; min-height:44px; padding:10px 12px; border:1px solid #515151; border-radius:8px; background:var(--portal-section-surface, #303030); color: var(--portal-text); font:600 14px/20px 'Satoshi Variable','Satoshi',sans-serif; text-decoration:none; }
.cx-unified-event-quick-actions :is(a,button):hover { background:#383838; border-color:#92b497; }
.cx-unified-event-quick-actions :is(a,button):focus-visible { outline:2px solid #9dbca2; outline-offset:2px; }
.cx-unified-event-quick-actions .icon { flex:0 0 18px; font-size:18px; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-event-detail-list { margin:0; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-event-detail-list>div { display:grid; grid-template-columns:minmax(0,1fr); gap:6px; padding:16px 0; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-event-detail-list dd { display:grid; justify-items:start; gap:8px; text-align:left; margin:0; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-event-detail-list dt { font-size:12px; line-height:18px; }

.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-event-detail-reference { align-self:center; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-event-detail-summary :is(h4,p) { grid-column:1/-1; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-unified-event-quick-actions a { color: var(--portal-text) !important; text-decoration:none !important; }

/* Shared event identity and readable actions for both dashboard roles. */
.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-identity__title {
    /* Names wrap to two lines instead of being cut off (style guide section 14). */
    display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-clamp:2;
    color: var(--portal-text); font:600 14px/20px 'Satoshi Variable','Satoshi',sans-serif !important;
    overflow:hidden; white-space:normal; overflow-wrap:anywhere; max-width:100%;
}
.nk-body:is(.portal-booker,.portal-entertainer) .portal-list-cell-text {
    display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-clamp:2; overflow:hidden; min-width:0;
}
.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-identity__reference {
    display:block; margin-top:4px; color: var(--portal-muted); font-size:12px; line-height:18px; overflow-wrap:normal; white-space:normal !important;
}
/* Each part (act, booker, reference) stays whole; the line wraps between parts, never inside an ID. */
/* Each part is one block: a short part moves to the next line whole, and only a part longer than the
   whole line (a very long act name) wraps inside itself instead of running off the card (Felix 2026-10-16). */
.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-identity__part { display:inline-block; max-width:100%; vertical-align:top; white-space:normal; overflow-wrap:anywhere; }
/* The dot travels with the next part, so a line never starts or ends with a lone dot. */
.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-identity__part + .portal-record-identity__part::before { content:'· '; }
.portal-record-actions { display:flex; align-items:center; flex-wrap:wrap; gap:8px; width:100%; min-width:0; }
.portal-record-actions form { margin:0; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-action {
    box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center; gap:8px;
    width:auto !important; min-width:0; min-height:44px; padding:10px 12px !important; margin:0;
    border:1px solid #656565; border-radius:8px; background: var(--portal-surface-raised); color: var(--portal-text);
    font:600 13px/20px 'Satoshi Variable','Satoshi',sans-serif !important; white-space:nowrap; text-decoration:none;
}
/* Every row button is the standard secondary button (style guide section 5). Some lists had a
   lighter fill (#303030) or white text from older link rules (Felix 2026-10-16 button audit). */
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-action:not(:disabled):not(.is-disabled):not([aria-disabled="true"]) { background-color: var(--portal-surface-raised); border-color:#656565; color: var(--portal-text) !important; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-action:not(:disabled):not(.is-disabled):not([aria-disabled="true"]):is(:hover,:focus-visible) { background-color:#383838; border-color:#8B8B8B; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-action:hover { background:#383838; border-color:#8B8B8B; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-action:focus-visible { outline:2px solid #9DBCA2; outline-offset:2px; }
.portal-record-action .icon { flex:0 0 18px; font-size:18px; }
@media(min-width:768px) {
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries .cx-fin-table-wrap { overflow-x:auto !important; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries .cx-fin-table { display:block !important; min-width:880px !important; width:100% !important; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries .cx-fin-table .nk-tb-item {
        /* Event | Event date | Venue | Status | Download and View. Same columns for both roles.
           Download added for D3 (Felix 2026-10-17); still fits a 1280 laptop. */
        display:grid; grid-template-columns:minmax(220px,2fr) 152px minmax(120px,1fr) 176px 244px; width:100%;
    }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries .cx-fin-table .cx-agent-view-col {
        position:static; min-width:0; width:auto; max-width:none; background:transparent; border-left:0; box-shadow:none;
    }
    /* Booker Enquiries now fills its card edge to edge like every other list. */
    .nk-body.nk-body.portal-booker .cx-booker-enquiries .cx-fin-table-wrap { margin-left:-24px; margin-right:-24px; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries .cx-fin-table .nk-tb-col {
        display:flex !important; align-items:center; align-content:center; flex-wrap:wrap; gap:8px; min-width:0 !important;
        width:auto !important; max-width:none !important; padding:16px 12px !important; white-space:normal;
    }
    /* Event | Event date | Amount | Status | Action (only when a row needs one) | View.
       The Action column fits the longest row button ("Review payment details") on one line now that
       row actions are full-size buttons (Felix 2026-10-16); dates and money keep to one line. */
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-fin-table { min-width:880px !important; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-fin-table .nk-tb-item {
        grid-template-columns:minmax(200px,1fr) 152px 128px 160px 216px 124px; align-items:center;
    }
    /* No row buttons in this tab: the action column only holds Download (D3, Felix 2026-10-17). */
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .portal-bookings-list--no-actions .nk-tb-item {
        grid-template-columns:minmax(200px,1fr) 152px 128px 160px 140px 124px;
    }
    /* Older layers hide booking columns by position; the new list shows every column it renders. */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-fin-table.portal-bookings-list .nk-tb-col { display:flex !important; align-items:center; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-fin-table .cx-agent-view-col { position:static; width:auto !important; min-width:0; max-width:none; border-left:0; }
}
@media(max-width:767.98px) {
    .nk-body:is(.portal-booker,.portal-entertainer) :is(.portal-aligned-enquiries,.portal-aligned-bookings) .cx-mobile-record-card__header {
        display:flex; align-items:flex-start; flex-wrap:wrap; gap:16px;
    }
    .nk-body:is(.portal-booker,.portal-entertainer) :is(.portal-aligned-enquiries,.portal-aligned-bookings) .cx-mobile-record-card__heading { flex:1 0 100%; width:100%; min-width:0; }
    .nk-body:is(.portal-booker,.portal-entertainer) :is(.portal-aligned-enquiries,.portal-aligned-bookings) .cx-mobile-compact-record { display:flex; flex-direction:column; align-items:stretch; gap:16px; }
    .nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries .cx-mobile-compact-record__side { display:flex; align-items:flex-start; flex-direction:column; gap:16px; width:100%; }
    .nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries .portal-record-actions { display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries .portal-record-action { width:100% !important; }
}

.portal-record-identity__heading { margin:0 !important; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings.cx-ent-bookings .cx-fin-table .nk-tb-item .nk-tb-col [data-portal-display-date] { min-width:0; max-width:100%; white-space:normal !important; overflow-wrap:normal; }

.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-action > span { font:inherit !important; color:inherit; }

/* Status filters and Alpine search must always be able to hide matching layouts. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries [data-enquiry-status][hidden] { display:none !important; }

/* Tag text sat ~3px low in table rows: the legacy row-text rule in app-overrides.css
   (.nk-tb-col ... span, 14px / 24px, weight 400) also reached the <span> inside each tag,
   so the tag text was the wrong size and its 24px line pushed it down. Tag text always
   inherits the tag's own 12px / 600 / 18px metrics (style guide v3, section 8). */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .nk-tb-item:not(.nk-tb-head) .nk-tb-col:not(.nk-tb-col-tools) :is(.badge,.cx-status-badge,.cx-enquiry-detail__badge,.cx-booking-detail__status,.cx-review-status,.portal-status-tag) :is(span,strong):not(.icon) {
    font: inherit !important;
    letter-spacing: 0 !important;
    color: inherit !important;
}

/* Batch 2 (style guide v3 s.5): buttons inside table rows were caught by the same legacy
   row-text rule (14px / 400 / 24px), making them 46px tall and thinner than every other
   button. Row buttons now use the shared 13px / 600 / 20px metrics, so they are 44px. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .nk-tb-item:not(.nk-tb-head) .nk-tb-col :is(a,button):is(.btn,.portal-action,.portal-record-action,.cx-bookings-action,.cx-quote-open-button,.cx-fin-download,.cx-fin-view,.cx-booker-quote-action,.cx-agent-record-action):not(.btn-link) {
    font: 600 13px/20px 'Satoshi Variable','Satoshi',sans-serif !important;
    letter-spacing: normal !important;
}
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .nk-tb-item:not(.nk-tb-head) .nk-tb-col :is(.btn,.portal-action,.portal-record-action,.cx-bookings-action,.cx-quote-open-button,.cx-fin-download,.cx-fin-view,.cx-booker-quote-action,.cx-agent-record-action):not(.btn-link) :is(span,strong):not(.icon):not(.badge):not(.cx-status-badge) {
    font: inherit !important;
    letter-spacing: inherit !important;
    color: inherit !important;
}
/* A switched-off Download is a span, so the old row-text rule (14px / 400 / 24px, white) reached it
   too: it was 46px tall with white words (D3, 2026-10-17). Same metrics and grey as every other
   switched-off button (style guide section 5). */
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .nk-tb-item:not(.nk-tb-head) .nk-tb-col span.portal-record-action.is-disabled {
    font: 600 13px/20px 'Satoshi Variable','Satoshi',sans-serif !important;
    letter-spacing: normal !important;
    color: #7E7E7E !important;
}

/* Batch 2: the icon-only download button was 38px; every tap target is at least 44px. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-fin-download {
    width: 44px !important; height: 44px !important; min-width: 44px !important; min-height: 44px !important;
}


/* Financials uses the shared document list row: see "Document lists" below. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-download-action.is-disabled { opacity:.45; cursor:not-allowed; pointer-events:none; }

/* The legacy row-text rule restyles every span in a row; keep the shared identity readable everywhere. */
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .nk-tb-item:not(.nk-tb-head) .nk-tb-col:not(.nk-tb-col-tools) .portal-record-identity .portal-record-identity__title.portal-record-identity__title {
    font:600 14px/20px 'Satoshi Variable','Satoshi',sans-serif !important; color: var(--portal-text) !important; letter-spacing:0 !important;
}
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .nk-tb-item:not(.nk-tb-head) .nk-tb-col:not(.nk-tb-col-tools) .portal-record-identity :is(.portal-record-identity__reference,.portal-record-identity__part):is(span,span) {
    font:400 12px/18px 'Satoshi Variable','Satoshi',sans-serif !important; color: var(--portal-muted) !important; letter-spacing:0 !important;
}
@media(max-width:767.98px) {
    /* Bookings cards: one full-width View, like Enquiries and Quotes. */
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-mobile-record-card__footer--bookings .cx-agent-view-col { justify-self:stretch; width:100% !important; max-width:none !important; margin:0 !important; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-mobile-record-card__footer--bookings .cx-agent-view-col .cx-bookings-actions { width:100%; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-mobile-record-card__footer--bookings .cx-agent-view-col .portal-record-action { width:100% !important; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-mobile-record-card__footer--bookings .cx-bookings-action-col:not(:has(.cx-bookings-action, .cx-fin-download-action)) { display:none !important; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-mobile-record-card__footer--financials .portal-record-action { width:100% !important; }
}
@media(max-width:767.98px) {
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-mobile-record-card__footer.cx-mobile-record-card__footer--bookings { display:grid !important; grid-template-columns:minmax(0,1fr) !important; gap:12px; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-mobile-record-card__footer.cx-mobile-record-card__footer--bookings > * { grid-column:1 / -1 !important; grid-row:auto !important; }
}
@media(max-width:767.98px) {
    /* Financials cards: name and reference get the full width; the amount sits underneath, as on Bookings. */
    .nk-body:is(.portal-booker,.portal-entertainer) .cx-ent-financials .cx-mobile-record-card__header { display:flex; flex-wrap:wrap; align-items:flex-start; gap:12px 16px; }
    .nk-body:is(.portal-booker,.portal-entertainer) .cx-ent-financials .cx-mobile-record-card__heading { flex:1 0 100%; width:100%; min-width:0; }
}

/* Events: Event | Type | Event date | Stage | View, the same row as every other list. */
@media(min-width:768px) {
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-rose-events .cx-fin-table > .nk-tb-item,
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-rose-events .cx-fin-table [data-event-rows] > .nk-tb-item {
        grid-template-columns:minmax(260px,2fr) minmax(140px,1fr) 170px 200px 112px; align-items:center;
    }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-rose-events .cx-fin-table .cx-events-view-col { display:flex; align-items:center; }
}
/* Event names wrap to two lines instead of being cut off. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-rose-events .cx-event-record-identity__copy .cx-rose-event-link,
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-rose-events :is(.cx-mobile-compact-record__main,.cx-mobile-record-card__heading) :is(h3,a) {
    display:-webkit-box !important; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-clamp:2; white-space:normal !important; overflow:hidden; text-overflow:clip;
}
@media(max-width:767.98px) {
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-rose-events .cx-mobile-record-card__footer .cx-agent-record-action { width:100% !important; justify-content:center; }
}


/* ===== Batch 5 (style guide section 14): one record card on phones and tablets =====
   Same shape on every list: identity (date tile, title, grey line), status, details, one full-width View. */
@media(max-width:991.98px) {
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card {
        display:flex !important; flex-direction:column; gap:12px; min-width:0; height:auto;
        margin:0; padding:16px !important; background: var(--portal-surface-raised) !important; border: 1px solid var(--portal-border) !important;
        border-radius:8px !important; box-shadow:none !important;
    }
    /* Felix 2026-10-21: search and the tabs hide a card with display: none (Alpine x-show) or hidden, but the
       display:flex !important above showed it again, so on phones and tablets nothing was filtered. */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card:is([hidden], [style*="display: none"]) { display:none !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card .cx-mobile-record-card__header {
        display:block !important; margin:0 !important; padding:0 !important; border:0 !important;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card .cx-mobile-record-card__heading { display:block; width:100%; min-width:0; margin:0; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card__status { display:flex; align-items:center; min-width:0; margin:0; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card__status :is(.nk-tb-col,.cx-bookings-status-stack) {
        display:block !important; position:static !important; width:auto !important; min-width:0 !important; max-width:100% !important;
        margin:0 !important; padding:0 !important; border:0 !important; background:none !important;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card .cx-mobile-record-card__details {
        display:grid !important; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 16px;
        margin:0 !important; padding:12px 0 0 !important; border:0 !important; border-top: 1px solid var(--portal-border) !important;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card .cx-mobile-record-card__details > div { min-width:0; margin:0; padding:0; border:0; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card .cx-mobile-record-card__details dt,
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record [data-label]::before {
        display:block; margin:0 0 4px; color:#9A9A9A !important;
        font:600 12px/18px 'Satoshi Variable','Satoshi',sans-serif !important; letter-spacing:0 !important; text-transform:none !important;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record [data-label]::before { content:attr(data-label); }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card .cx-mobile-record-card__details dd {
        margin:0; color: var(--portal-text) !important; font:500 14px/20px 'Satoshi Variable','Satoshi',sans-serif !important; letter-spacing:0 !important; overflow-wrap:anywhere;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card .cx-mobile-record-card__footer {
        display:grid !important; grid-template-columns:minmax(0,1fr) !important; gap:8px; margin:0 !important; padding:0 !important; border:0 !important;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card .cx-mobile-record-card__footer > * {
        grid-column:1 / -1 !important; grid-row:auto !important; width:100% !important; max-width:none !important; margin:0 !important;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card .cx-mobile-record-card__footer :is(.nk-tb-col,.cx-bookings-actions,.portal-record-actions) {
        display:grid !important; gap:8px; position:static !important; width:100% !important; padding:0 !important; border:0 !important; background:none !important;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card .cx-mobile-record-card__footer .cx-bookings-action-col:not(:has(.cx-bookings-action, .cx-fin-download-action)) { display:none !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card .cx-mobile-record-card__footer :is(.portal-record-action,.cx-agent-record-action,.cx-bookings-action) {
        display:inline-flex !important; width:100% !important; justify-content:center; min-height:44px;
    }

    /* Quotes has no separate card markup: its table rows become the same card. */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-fin-table-wrap { margin-left:0 !important; margin-right:0 !important; overflow:visible !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-fin-table {
        display:grid !important; grid-template-columns:minmax(0,1fr); gap:12px; min-width:0 !important; width:100% !important;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-fin-table .nk-tb-head { display:none !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-fin-table .cx-quote-record {
        display:grid !important; grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-areas:"id id" "status status" "date amount" "download download" "view view";
        gap:12px 16px; margin:0; padding:16px !important; background: var(--portal-surface-raised) !important; border: 1px solid var(--portal-border) !important; border-radius:8px !important; box-shadow:none !important;
    }
    /* Felix 2026-10-21: the same for Quotes cards: Search and the tabs hide a card with hidden. */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-fin-table .cx-quote-record[hidden] { display:none !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record > .nk-tb-col {
        display:block !important; position:static !important; width:auto !important; min-width:0 !important; max-width:none !important;
        margin:0 !important; padding:0 !important; border:0 !important; background:none !important;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record > .portal-record-identity-col { grid-area:id; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record > [data-label="Status"] { grid-area:status; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record > [data-label="Status"]::before { content:none !important; display:none !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record > :is([data-label="Date"],[data-label="Amount"]) {
        padding-top:12px !important; border-top: 1px solid var(--portal-border) !important;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record > [data-label="Date"] { grid-area:date; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record > [data-label="Amount"] { grid-area:amount; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record > .nk-tb-col:last-child { grid-area:view; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record > .cx-quote-download-col { grid-area:download; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record > :is(.nk-tb-col:last-child,.cx-quote-download-col) .portal-record-action { width:100% !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record > :is([data-label="Date"],[data-label="Amount"]) > span {
        color: var(--portal-text) !important; font:500 14px/20px 'Satoshi Variable','Satoshi',sans-serif !important; letter-spacing:0 !important;
    }
}
/* Tablets: two cards across, on every list (Quotes included). */
@media(min-width:576px) and (max-width:991.98px) {
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-fin-table { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
/* Same identity text in cards as in table rows: title #EDEDED 14px/600, grey line #B5B5B5 12px. */
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-identity .portal-record-identity__title.portal-record-identity__title {
    color: var(--portal-text) !important; font:600 14px/20px 'Satoshi Variable','Satoshi',sans-serif !important; letter-spacing:0 !important; text-decoration:none;
}
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-identity .portal-record-identity__reference :is(.portal-record-identity__part,span),
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-identity .portal-record-identity__reference.portal-record-identity__reference {
    color: var(--portal-muted) !important; font:400 12px/18px 'Satoshi Variable','Satoshi',sans-serif !important; letter-spacing:0 !important;
}
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-identity__heading { font-size:14px !important; line-height:20px !important; }

/* Dashboard stat cards sit two across on phones (style guide section 14): icon above the label. */
@media(max-width:575.98px) {
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-dash-card .card-inner { padding:16px !important; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-dash-card .card-inner > div { flex-direction:column; align-items:flex-start !important; gap:8px !important; }
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-dash-card .card-inner > div > div:last-child > div:first-child { min-height:32px; }
}
/* The page title shows on phones for both roles (style guide section 4). An older rule hid it for bookers. */
@media(max-width:575.98px) {
    .nk-body.nk-body.portal-booker .cx-ent-dashboard .nk-block-head .nk-block-head-content > div:first-child { display:flex !important; }
}
/* Stat cards in the same row share one height. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .row > [class*="col-"] > .cx-dash-card { height:100%; }

/* Document lists: booker Invoices and entertainer Financials share one row (Felix 2026-10-16).
   Event (date tile, name, number) | Date | Amount | Status | Download | View. Dates, money and the
   tag never wrap; the event name takes the spare width and wraps to two lines. Clicking the row,
   or View, opens the document's pop-up. */
@media(min-width:768px) {
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table.portal-document-list { display:block; min-width:896px !important; width:100%; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table.portal-document-list > .nk-tb-item {
        display:grid; grid-template-columns:minmax(200px,1fr) 152px 112px 168px 140px 124px; align-items:center; width:100%;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table.portal-document-list > .nk-tb-item > .nk-tb-col {
        display:flex !important; align-items:center; min-width:0 !important; width:auto !important; max-width:none !important;
        padding:16px 12px !important; white-space:normal;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table.portal-document-list > .nk-tb-item > .nk-tb-col:is(:nth-child(2),:nth-child(3),:nth-child(4)) :is(span,[data-portal-display-date]) { white-space:nowrap !important; }
    /* Same breathing room at the right edge as the left edge of the card (Felix: Download sat on the edge). */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table.portal-document-list > .nk-tb-item > .nk-tb-col:last-child { padding-right:24px !important; justify-content:flex-end; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table.portal-document-list > .nk-tb-item > .nk-tb-col:first-child { padding-left:24px !important; }
}
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-invoices :is(.portal-document-list,.cx-mobile-record-card__footer) .portal-record-action { color: var(--portal-text) !important; }

/* Bookings row actions (Pay now, Payment details, Add charge) are the same secondary button as View
   beside them: 44px, #2B2B2B, 13px / 600 (Felix 2026-10-16 button audit). They were 35px chips. */
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-bookings-action:not(:disabled) {
    box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center; gap:8px;
    min-height:44px; padding:10px 12px !important; margin:0;
    border:1px solid #656565 !important; border-radius:8px !important; background: var(--portal-surface-raised) !important; color: var(--portal-text) !important;
    font:600 13px/20px 'Satoshi Variable','Satoshi',sans-serif !important; letter-spacing:normal !important; white-space:nowrap; text-decoration:none;
}
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-bookings-action:not(:disabled):is(:hover,:focus-visible) { background:#383838 !important; border-color:#8B8B8B !important; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-bookings-action.cx-bookings-action--review:not(:disabled) { border-color:#BF9E6B !important; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-bookings-action.cx-bookings-action--review:not(:disabled) .icon { color:#E8C98F !important; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-bookings-action:disabled { min-height:44px; padding:10px 12px !important; border-radius:8px !important; font:600 13px/20px 'Satoshi Variable','Satoshi',sans-serif !important; }
.nk-body:is(.portal-booker,.portal-entertainer) .cx-bookings-action .icon { flex:0 0 18px; font-size:18px; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-bookings-action > span { white-space:nowrap !important; font:inherit !important; color:inherit !important; }

/* Rows and phone cards that open a record show it on hover (style guide section 20). */
.nk-body:is(.portal-booker,.portal-entertainer) [data-record-open] { cursor:pointer; }
/* Phone cards with Download and View: both full width, View last, nearest the thumb (section 5). */
@media(max-width:767.98px) {
    .nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-mobile-record-card__footer--financials .portal-record-actions { display:grid; grid-template-columns:minmax(0,1fr); gap:12px; width:100%; }
}

/* Record pop-ups (app.components.portal.record-overview): the money card sits under the facts. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-overview .portal-record-overview__money { margin:24px 0 0 !important; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-overview .portal-record-overview__money .d-flex + .d-flex:not(.portal-quote-total) { margin-top:8px; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-record-overview .portal-record-overview__note { margin-right:auto !important; font-size:13px; line-height:20px; color: var(--portal-muted) !important; }

/* ===== One list table (Felix 2026-10-17, round 56): "the tables should render the same from module to
   module". Events, Enquiries, Quotes, Bookings, Invoices and Financials had grown their own paddings
   (12/8 to 16/24), widths and heading bands (47 to 55px). From 992px (below that every list is cards)
   they now share: 16px 12px cells, 24px from both card edges (style guide section 9), one heading band,
   the same column widths in the same order (Event | date | Venue or Type | Amount | Status | Download |
   View), buttons lined up at the right, and headings that never wrap. ID weight wins over the older
   per-page layers. */
@media (min-width: 992px) {
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) { min-width: 0 !important; width: 100% !important; --cx-date-col: 176px; --cx-list-cols: minmax(200px,1fr) var(--cx-date-col) 128px 144px 140px 132px; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries .cx-fin-table:not(#cx-one-list) { --cx-list-cols: minmax(200px,1.4fr) var(--cx-date-col) minmax(120px,1fr) 144px 264px; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-rose-events .cx-fin-table:not(#cx-one-list) { --cx-list-cols: minmax(200px,1.4fr) var(--cx-date-col) minmax(120px,1fr) 144px 132px; }
    /* U135: the last row button (View, or the step word on amber rows) keeps one width on Enquiries and Quotes, so nothing shifts. */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col:last-child .portal-record-actions > a.portal-record-action:last-child, .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-enquiries .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col:last-child .portal-record-actions > form:last-child > .portal-record-action { min-width: 100px; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-quotes-premium .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col:last-child .portal-record-action { min-width: 88px; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-fin-table:not(#cx-one-list) { --cx-list-cols: minmax(200px,1fr) var(--cx-date-col) 128px 184px 241px 132px; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-fin-table.portal-bookings-list--no-actions:not(#cx-one-list) { --cx-list-cols: minmax(200px,1fr) var(--cx-date-col) 128px 184px 140px 132px; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item, .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > [data-event-rows] > .nk-tb-item {
        display: grid !important; grid-template-columns: var(--cx-list-cols) !important; align-items: center !important; width: 100% !important; min-width: 0 !important;
    }
    /* Felix 2026-10-21: Search and the tabs hide a row with display: none (Alpine x-show) or hidden; the
       display: grid !important above showed it again, so on computers nothing was filtered either. */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item:is([hidden], [style*="display: none"]) { display: none !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col, .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > [data-event-rows] > .nk-tb-item > .nk-tb-col {
        display: flex !important; align-items: center !important; min-width: 0 !important; width: auto !important; max-width: none !important;
        padding: 16px 12px !important; position: static !important; white-space: normal;
    }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col:first-child, .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > [data-event-rows] > .nk-tb-item > .nk-tb-col:first-child { padding-left: 24px !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col:last-child, .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > [data-event-rows] > .nk-tb-item > .nk-tb-col:last-child { padding-right: 24px !important; justify-content: flex-end !important; }
    /* Download and the other row buttons sit at the right of their column, so every list's buttons line up. */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col:nth-last-child(2):is(.cx-quote-download-col, .nk-tb-col-tools, .cx-bookings-agreement-col), .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > [data-event-rows] > .nk-tb-item > .nk-tb-col:nth-last-child(2):is(.cx-quote-download-col, .nk-tb-col-tools, .cx-bookings-agreement-col) { justify-content: flex-end !important; }
    /* One heading band: the same height, words and sort arrows everywhere; headings stay on one line. */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-head .sub-text, .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-head .cx-sort-button { white-space: nowrap !important; }
    /* Row buttons (Enquiries has two) hug the right edge like every other list's buttons. */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col:last-child > :is(.portal-record-actions,.portal-row-actions,.d-flex), .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > [data-event-rows] > .nk-tb-item > .nk-tb-col:last-child > :is(.portal-record-actions,.portal-row-actions,.d-flex) { justify-content: flex-end !important; margin-left: auto !important; width: auto !important; }
    /* Every row the same height: the name keeps up to two lines, the grey line is one line cut with "..."
       (the full line shows on hover), and each row keeps room for a two-line name. */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item:not(.nk-tb-head), .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > [data-event-rows] > .nk-tb-item:not(.nk-tb-head) { min-height: 96px; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) .nk-tb-item:not(.nk-tb-head) .portal-record-identity .portal-record-identity__reference.portal-record-identity__reference { display: block !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; max-width: 100%; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) .nk-tb-item:not(.nk-tb-head) .portal-record-identity .portal-record-identity__part { display: inline !important; white-space: nowrap !important; }
    /* Bookings: Add charge and Download sit side by side, never stacked. */
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) .nk-tb-item:not(.nk-tb-head) .cx-bookings-action-col .cx-bookings-actions { flex-direction: row !important; flex-wrap: nowrap !important; justify-content: flex-end !important; align-items: center !important; gap: 8px !important; margin-left: auto !important; }
}
/* Between 992 and 1199px the separate date column gives its room to the name (the date tile in each row
   still shows the date), so no list scrolls sideways and names are not squeezed. */
@media (min-width: 992px) and (max-width: 1199.98px) {
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) { --cx-date-col: 0px; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col:nth-child(2), .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > [data-event-rows] > .nk-tb-item > .nk-tb-col:nth-child(2) { padding: 0 !important; height: 0 !important; min-height: 0 !important; overflow: hidden !important; visibility: hidden !important; }
}

/* Table actions are static columns after the fitted layout; remove the divider left by the old sticky rail. */
@media (min-width: 992px) {
    .nk-body:is(.portal-booker,.portal-entertainer) .cx-ent-bookings:not(.cx-rose-events) .cx-fin-table .cx-bookings-agreement-col {
        position: static !important; right: auto !important; border-left: 0 !important; box-shadow: none !important;
    }
    .nk-body:is(.portal-booker,.portal-entertainer) .cx-ent-bookings:not(.cx-rose-events) .cx-fin-table .nk-tb-head .cx-bookings-agreement-col {
        background: transparent !important;
    }
}

/* Full booking statuses wrap in the list instead of clipping to the badge's former fixed height. */
.nk-body:is(.portal-booker,.portal-entertainer) :is(.cx-fin-table,.cx-mobile-record-list,.cx-mobile-compact-list) .cx-status-badge {
    height: auto !important; min-height: 28px !important; max-height: none !important;
    white-space: normal !important; overflow: visible !important; text-overflow: clip !important;
}
.nk-body:is(.portal-booker,.portal-entertainer) :is(.cx-fin-table,.cx-mobile-record-list,.cx-mobile-compact-list) .cx-status-badge > :is(span,strong):not(.icon) {
    white-space: normal !important; overflow-wrap: anywhere !important; word-break: normal !important;
}

/* Keep one deliberate 12px table-to-card footer on desktop; the scroll wrapper retains its own scrollbar. */
@media (min-width: 992px) {
    .nk-body:is(.portal-booker,.portal-entertainer) :is(.cx-ent-bookings,.cx-booker-enquiries,.cx-ent-enquiries,.cx-ent-financials) .card-inner:has(.cx-fin-table-wrap) {
        padding-bottom: 12px !important;
    }
}

/* U154 (Felix 2026-10-19): the date a job reached its stage, under the status tag in every list (beside it on
   phone and tablet cards). One date style everywhere (style guide section 13). */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-status-stack { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 0; min-width: 0; max-width: 100%; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-status-stack .portal-status-since { display: block; margin-top: 1px; font-size: 12px !important; font-weight: 500 !important; line-height: 16px !important; color: #9A9A9A !important; white-space: nowrap; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-bookings-status-badges > :is(.cx-status-badge,.portal-status-tag) { white-space: nowrap !important; overflow-wrap: normal !important; word-break: normal !important; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-bookings-status-badges > .cx-status-badge > :is(span,strong):not(.icon) { white-space: nowrap !important; overflow-wrap: normal !important; word-break: normal !important; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-bookings-status-badges > .portal-status-tag { overflow: hidden !important; text-overflow: ellipsis !important; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-bookings-status-badges > .portal-status-tag > span { white-space: nowrap !important; overflow-wrap: normal !important; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card__status .portal-status-stack { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 4px 8px; width: 100%; }
.nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .portal-record-card__status .portal-status-stack .portal-status-since { margin-top: 0; }
@media (max-width: 991.98px) {
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record .portal-status-stack { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 4px 8px; width: 100%; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .nk-content .cx-quotes-premium .cx-quote-record .portal-status-stack .portal-status-since { margin-top: 0; }
}

/* U154 part 2 (Felix 2026-10-19): the progress bar (Enquiry, Quote, Booked, Event, Review). Done steps filled green,
   the step now amber on your turn (style guide wait colours) or a green ring while you wait, a cross where a job
   stopped (grey when it simply ended, red when cancelled or disputed). Same on every screen size. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress__step { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; min-width: 0; margin: 0; padding: 0; text-align: center; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress__step::before { content: ""; position: absolute; top: 9px; right: 50%; width: 100%; height: 2px; background: #3C3C3C; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress__step:first-child::before { display: none; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress__step:is(.is-done, .is-now, .is-stopped)::before { background: var(--portal-accent, #5B8060); }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress__dot { position: relative; z-index: 1; display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; width: 20px; height: 20px; border: 2px solid #656565; border-radius: 50%; background: #1C1C1C; font-style: normal; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress__dot .icon { font-size: 11px; line-height: 1; color: #EDEDED; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress__step.is-done .portal-progress__dot { border-color: var(--portal-accent, #5B8060); background: var(--portal-accent, #5B8060); }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress--waiting .is-now .portal-progress__dot { border-color: #719B78; background: #2D372F; box-shadow: 0 0 0 4px rgba(113, 155, 120, .18); }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress--yours .is-now .portal-progress__dot { border-color: #BF9E6B; background: #393329; box-shadow: 0 0 0 4px rgba(191, 158, 107, .2); }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress--ended .is-stopped .portal-progress__dot { border-color: #999999; background: #303030; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress--ended .is-stopped .portal-progress__dot .icon { color: #B5B5B5; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress--problem .is-stopped .portal-progress__dot { border-color: #C47F79; background: #3C2F2E; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress--problem .is-stopped .portal-progress__dot .icon { color: #C47F79; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress__label { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 600; line-height: 16px; color: #9A9A9A; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress__step.is-done .portal-progress__label { color: #B5B5B5; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress__step.is-now .portal-progress__label { color: #EDEDED; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress--yours .is-now .portal-progress__label { color: #E8C98F; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress--problem .is-stopped .portal-progress__label { color: #C47F79; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress--ended .is-stopped .portal-progress__label { color: #B5B5B5; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-progress__date { margin-top: -4px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; font-weight: 500; line-height: 14px; color: #9A9A9A; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-event-overview__progress { margin: 0; padding: 8px 0 0; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-enquiry-detail__progress { margin: 0 0 16px; padding: 0 0 16px; border-bottom: 1px solid #333333; }

/* U154 part 3 (Felix 2026-10-19): "What happens when", the whole job with dates (portal/timeline). One darker box
   (style guide 24). What happened has a filled green dot and a green line to the next step; what's next a green
   ring (the same as the progress bar while you wait); later steps an empty dot; where a job stopped a grey dot
   (ended) or a red one (cancelled, a problem). Same on every screen size. */
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline { margin: 0; padding: 16px; list-style: none; background: #1C1C1C; border: 1px solid #2E2E2E; border-radius: 8px; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__item { position: relative; display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 12px; margin: 0; padding: 0 0 16px; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__item:last-child { padding-bottom: 0; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__item::before { content: ""; position: absolute; top: 20px; bottom: 0; left: 9px; width: 2px; background: #3C3C3C; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__item.is-done::before { background: var(--portal-accent, #5B8060); }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__item:last-child::before { display: none; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__dot { position: relative; z-index: 1; display: block; box-sizing: border-box; width: 12px; height: 12px; margin: 4px 0 0 4px; border: 2px solid #656565; border-radius: 50%; background: #1C1C1C; font-style: normal; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__item.is-done .portal-timeline__dot { border-color: var(--portal-accent, #5B8060); background: var(--portal-accent, #5B8060); }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__item.is-next .portal-timeline__dot { border-color: #719B78; background: #2D372F; box-shadow: 0 0 0 4px rgba(113, 155, 120, .18); }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__item.is-ended .portal-timeline__dot { border-color: #999999; background: #303030; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__item.is-problem .portal-timeline__dot { border-color: #C47F79; background: #3C2F2E; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__body { min-width: 0; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__when { display: block; font-size: 13px; font-weight: 600; line-height: 20px; color: #EDEDED; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__item:is(.is-next, .is-later) .portal-timeline__when { color: #B5B5B5; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__text { font-size: 14px; font-weight: 400; line-height: 20px; color: #C9C9C9; overflow-wrap: anywhere; }
.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-timeline__item.is-next .portal-timeline__text { color: #EDEDED; }

/* U170 / U169 (Felix 2026-10-20): rows never grow and buttons never squeeze. On Bookings the step button
   (Review, Pay now, Add charge) keeps its own width, and Download and View sit 8px apart like the
   buttons in every other list (they are in two columns, so the gap comes from the column padding, and the
   View column is 132px: 8px gap, the 100px last button, 24px to the card edge). */
@media (min-width: 992px) {
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-ent-bookings .cx-fin-table:not(#cx-one-list) .nk-tb-item:not(.nk-tb-head) .cx-bookings-action-col .cx-bookings-action { flex: none !important; max-width: none !important; white-space: nowrap !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-ent-bookings .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col.cx-bookings-action-col { padding-right: 0 !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-ent-bookings .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col.cx-agent-view-col { padding-left: 8px !important; }
}
/* U169: Bookings with a step button (Review, Pay now, Add charge) needs 248px for its buttons. Between 1200
   and 1319px the wider adjustment status also needs room, so the separate date column gives its room to the
   name, as it already does below 1200px (the date tile in each row still shows the date). */
@media (min-width: 1200px) and (max-width: 1319.98px) {
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-fin-table:not(.portal-bookings-list--no-actions):not(#cx-one-list) { --cx-date-col: 0px; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .portal-aligned-bookings .cx-fin-table:not(.portal-bookings-list--no-actions):not(#cx-one-list) > .nk-tb-item > .nk-tb-col:nth-child(2) { padding: 0 !important; height: 0 !important; min-height: 0 !important; overflow: hidden !important; visibility: hidden !important; }
}
/* U169 (Felix 2026-10-20): one button spacing in every list. The last two buttons (Download, then View or the
   step) sit 8px apart, and the last button is 100px in every list (the same as Enquiries, with room for
   "Review" and its icon) and ends 24px from the card edge, so the buttons in every list line up. The last
   column is 132px (8 + 100 + 24) and the column before it ends flush. */
@media (min-width: 992px) {
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col:nth-last-child(2):is(.cx-quote-download-col, .nk-tb-col-tools, .cx-bookings-agreement-col, .cx-bookings-action-col) { padding-right: 0 !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item > .nk-tb-col:nth-last-child(2):is(.cx-quote-download-col, .nk-tb-col-tools, .cx-bookings-agreement-col, .cx-bookings-action-col) + .nk-tb-col:last-child { padding-left: 8px !important; }
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > .nk-tb-item:not(.nk-tb-head) > .nk-tb-col:last-child :is(a, button):is(.portal-record-action, .cx-fin-view, .cx-bookings-action),
    .nk-body.nk-body.nk-body:is(.portal-booker,.portal-entertainer) .cx-fin-table:not(#cx-one-list) > [data-event-rows] > .nk-tb-item:not(.nk-tb-head) > .nk-tb-col:last-child :is(a, button):is(.portal-record-action, .cx-fin-view, .cx-bookings-action) { min-width: 100px; flex: none; }
}
