/* ==========================================================================
   Ticket list (AI-1825): the page's own parts on the ui.css primitives. The
   row design itself (glass-ticketrow*) stays in glass/pages/glass.tickets.css.
   ========================================================================== */

/* ---------- Loading and toolbar ----------------------------------------- */

.tickets-loading-body {
    padding: 20px;
}

.tickets-loading-progress {
    margin-top: 12px;
}

.tickets-mass-progress {
    flex: 0 0 auto;
    width: 120px;
    margin: 0 8px;
}

.tickets-global-actions {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    margin-left: .25rem;
}

.tickets-spam-disabled-region {
    opacity: .55;
    pointer-events: none;
}

.tickets-spam-toggle {
    position: relative;
    display: inline-flex;
}

.tickets-spam-toggle__badge {
    position: absolute;
    top: -3px;
    right: -5px;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border: 2px solid var(--ui-bg-card);
    border-radius: var(--ui-radius-pill);
    background: var(--ui-tone-warning);
    color: color-mix(in srgb, var(--ui-tone-warning) 18%, black);
    font-size: 8px;
    font-weight: 800;
    line-height: 1;
    pointer-events: none;
}

/* ---------- The lists ----------------------------------------------------
   Both lists keep the datagrid skin they had: soft row borders, the glass
   hover and selection colours, a tinted pager. Reloads happen on every
   realtime event, so a load neither dims the rows nor shows the list's own
   bar; the page shows its own bar for searches and the spam view. */

.glass-tickets-grid .ui-datalist__progress {
    display: none;
}

.ui-datalist.glass-tickets-grid.is-loading .ui-datalist__rows {
    opacity: 1;
}

.glass-tickets-grid .ui-datalist__row {
    border-bottom-color: var(--datagrid-border-soft, var(--ui-divider));
    color: var(--text-1);
}

.glass-tickets-grid .ui-datalist__row:hover {
    background: var(--datagrid-row-hover-bg, var(--ui-bg-hover));
}

.glass-tickets-grid .ui-datalist__row.selected,
.glass-tickets-grid .ui-datalist__row.selected:hover {
    background: var(--datagrid-row-selected-bg, var(--ui-bg-active));
}

.glass-tickets-grid .ui-datalist__cell {
    overflow: hidden;
    padding: 16px;
}

.glass-tickets-grid--compact .ui-datalist__cell {
    padding-top: 0;
    padding-bottom: 0;
}

.glass-tickets-grid .ui-datalist__select {
    padding-left: 12px;
}

.glass-tickets-grid .ui-datalist__pager {
    border-top: 1px solid var(--datagrid-border, var(--ui-divider));
    background: color-mix(in srgb, var(--surface-2), transparent 10%);
}

/* ---------- Ticket row: Ui parts inside the glass row -------------------- */

/* Wrappers that only stop a click (or Enter) from opening the ticket; they add no box. */
.glass-ticketrow__control,
.glass-ticketrow__nr-content {
    display: contents;
}

/* Icons in the row are sized by font, as the row's rules (font-size on the star,
   flag, caret, linked icon) expect. */
.glass-ticketrow .ui-icon {
    width: 1em;
    height: 1em;
}

.glass-ticketrow__actions-tip {
    display: grid;
    gap: 2px;
    text-align: left;
}

/* ---------- Spam rows --------------------------------------------------- */

.spam-ticket-row {
    width: 100%;
    min-height: 4.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .65rem .25rem;
    cursor: pointer;
}

.spam-ticket-row__main {
    min-width: 0;
}

.spam-ticket-row__title {
    overflow: hidden;
    color: var(--ui-text);
    font-size: 1rem;
    font-weight: 750;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.spam-ticket-row__sender {
    margin-top: .35rem;
    overflow: hidden;
    color: var(--ui-text-2);
    font-size: .82rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.spam-ticket-row__meta {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 1rem;
}

/* ---------- Narrow screens ---------------------------------------------- */

@media (max-width: 960px) {
    .glass-tickets-grid .ui-datalist__cell,
    .glass-tickets-grid--compact .ui-datalist__cell {
        padding-top: 14px;
        padding-bottom: 14px;
    }

    .glass-tickets-main .glass-card__actions > .glass-tickets-mobile-create {
        flex: 0 0 auto;
        margin-left: auto;
    }

    .glass-tickets-mobile-create.ui-btn {
        --ui-btn-h: 44px;
        border-radius: 13px;
        box-shadow: none;
    }
}

@media (max-width: 959.98px) {
    .tickets-global-actions {
        display: none;
    }
}

@media (max-width: 600px) {
    .spam-ticket-row {
        min-height: 7.25rem;
        flex-direction: column;
        align-items: stretch;
        justify-content: center;
        gap: .75rem;
        padding: .85rem .25rem;
    }

    .spam-ticket-row__title {
        white-space: normal;
    }

    .spam-ticket-row__meta {
        justify-content: space-between;
    }
}
