/* The staff report inbox (/scpsl/report-manager): the list beside the open report, and the report pane also used by
   /scpsl/report/{id}. Built on reports.css (rows, people, context, choices) and appeals.css (thread, composer);
   palette variables and motion tokens only, so light and dark both work. Everything that moves respects
   prefers-reduced-motion. */

/* ---------- Two columns ---------- */

.pn-ri {
    display: grid;
    grid-template-columns: minmax(340px, 36%) minmax(0, 1fr);
    gap: 16px;
    align-items: start;
}

.pn-ri-list {
    position: sticky;
    top: 76px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-height: calc(100dvh - 92px);
    min-width: 0;
    padding: 12px;
    overflow: auto;
    overscroll-behavior: contain;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--pn-radius);
    background: var(--mud-palette-surface);
    scrollbar-gutter: stable;
}

.pn-ri-detail { min-width: 0; }

/* ---------- Views ---------- */

.pn-ri-views {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

.pn-ri-view {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 10px;
    border-radius: 999px;
    color: var(--mud-palette-text-secondary);
    font-size: 0.82rem;
    font-weight: 600;
    text-decoration: none;
    transition: background-color var(--pn-dur-fast) ease, color var(--pn-dur-fast) ease, transform var(--pn-dur-press) var(--pn-ease-out);
}

.pn-ri-view .mud-icon-root { font-size: 1rem; }
.pn-ri-view:active { transform: scale(.97); }

.pn-ri-view[aria-current="page"] {
    background: rgba(var(--mud-palette-primary-rgb), 0.14);
    color: var(--mud-palette-primary);
}

.pn-ri-view-count {
    min-width: 20px;
    padding: 0 6px;
    border-radius: 999px;
    font-size: 0.72rem;
    line-height: 18px;
    text-align: center;
    font-variant-numeric: tabular-nums;
}

@media (hover: hover) and (pointer: fine) {
    .pn-ri-view:hover:not([aria-current="page"]) {
        background: var(--mud-palette-action-default-hover);
        color: var(--mud-palette-text-primary);
    }
}

/* ---------- Toolbar, filters ---------- */

.pn-ri-toolbar {
    display: flex;
    align-items: center;
    gap: 6px;
}

.pn-ri-toolbar > :first-child { flex: 1; min-width: 0; }

.pn-ri-filters {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    padding: 10px;
    border-radius: var(--pn-radius-md);
    background: var(--mud-palette-background-gray);
    animation: pn-ri-drop var(--pn-dur-fast) var(--pn-ease-out);
}

.pn-ri-filters .mud-input-control { margin: 0 !important; }
.pn-ri-filters .mud-picker { grid-column: 1 / -1; }

.pn-ri-sort {
    display: flex;
    align-items: center;
    gap: 2px;
}

.pn-ri-active { margin: 0; }
.pn-ri-active .pn-chip-filter .mud-icon-root { font-size: .9rem; margin-left: 2px; }

.pn-ri-fresh { margin-top: 0; }

.pn-ri-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 28px;
    font-size: 0.8rem;
    color: var(--mud-palette-text-secondary);
}

.pn-ri-bulk {
    top: 0;
    margin-bottom: 0;
    padding: 6px 8px 6px 12px;
}

/* ---------- Rows ---------- */

.pn-ri-rows {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pn-ri-rows[aria-busy="true"] { opacity: .6; transition: opacity var(--pn-dur-fast) ease; }

/* A grid row of one track, so it can fold to nothing (grid-template-rows 1fr → 0fr) before it leaves. */
.pn-ri-row {
    display: grid;
    grid-template-rows: 1fr;
    opacity: 1;
    transition: grid-template-rows var(--pn-dur) var(--pn-ease-out), opacity var(--pn-dur-fast) ease;
}

.pn-ri-row[data-leaving] {
    grid-template-rows: 0fr;
    opacity: 0;
    pointer-events: none;
}

.pn-ri-row-inner {
    position: relative;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 6px;
    min-height: 0;
    overflow: hidden;
    padding: 8px 8px 8px 12px;
    border-radius: var(--pn-radius-md);
    transition: background-color var(--pn-dur-fast) ease;
}

/* The age rail: green, amber, red; violet while it waits for the reporter; grey once resolved. */
.pn-ri-row-inner::before {
    content: "";
    position: absolute;
    inset: 8px auto 8px 3px;
    width: 3px;
    border-radius: 3px;
    background: var(--pn-ri-rail, var(--mud-palette-lines-default));
    transition: background-color var(--pn-dur) ease;
}

.pn-ri-row.is-fresh { --pn-ri-rail: var(--mud-palette-success); }
.pn-ri-row.is-aging { --pn-ri-rail: var(--mud-palette-warning); }
.pn-ri-row.is-stale { --pn-ri-rail: var(--mud-palette-error); }
.pn-ri-row.is-waiting { --pn-ri-rail: var(--mud-palette-secondary); }

.pn-ri-row.is-mine .pn-ri-row-inner { background: rgba(var(--mud-palette-primary-rgb), 0.05); }
.pn-ri-row.is-selected .pn-ri-row-inner { background: rgba(var(--mud-palette-primary-rgb), 0.1); }

.pn-ri-row.is-active .pn-ri-row-inner {
    background: rgba(var(--mud-palette-primary-rgb), 0.14);
    box-shadow: inset 0 0 0 1px rgba(var(--mud-palette-primary-rgb), 0.35);
}

/* Reports that arrived with the "novedades" bar flash once. */
.pn-ri-row.is-new .pn-ri-row-inner { animation: pn-ri-flash 1.2s var(--pn-ease-out); }

/* The check box only shows on hover, on keyboard focus or once something is selected. */
.pn-ri-select {
    display: inline-flex;
    width: 0;
    overflow: hidden;
    opacity: 0;
    transition: width var(--pn-dur-fast) var(--pn-ease-out), opacity var(--pn-dur-fast) ease;
}

.pn-ri-select .mud-checkbox { margin: 0; }

.pn-ri-row.is-selected .pn-ri-select,
.pn-ri-row:focus-within .pn-ri-select,
.pn-ri-rows:has(.is-selected) .pn-ri-select {
    width: 28px;
    opacity: 1;
}

@media (hover: hover) and (pointer: fine) {
    .pn-ri-row:hover .pn-ri-select { width: 28px; opacity: 1; }
    .pn-ri-row:not(.is-active):hover .pn-ri-row-inner { background: var(--mud-palette-action-default-hover); }
}

@media (hover: none) {
    .pn-ri-select { width: 28px; opacity: 1; }
}

.pn-ri-link {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    color: inherit;
    text-decoration: none;
}

.pn-ri-link:focus-visible {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 2px;
    border-radius: 6px;
}

.pn-ri-line {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}

.pn-ri-id {
    font-weight: 700;
    font-size: 0.8rem;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

.pn-ri-reason {
    overflow: hidden;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pn-ri-flag { font-size: 1rem !important; color: var(--mud-palette-info); flex: none; }

.pn-ri-time {
    margin-left: auto;
    padding-left: 6px;
    font-size: 0.75rem;
    white-space: nowrap;
}

.pn-ri-sub { font-size: 0.82rem; }

.pn-ri-player {
    flex: none;
    max-width: 50%;
    overflow: hidden;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pn-ri-by {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pn-ri-badge {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    flex: none;
    padding: 0 6px;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 700;
    line-height: 18px;
}

.pn-ri-badge .mud-icon-root { font-size: .85rem; }
.pn-ri-badge.is-waiting { background: rgba(var(--mud-palette-secondary-rgb), 0.15); color: var(--mud-palette-secondary); }
.pn-ri-badge.is-replied { background: rgba(var(--mud-palette-info-rgb), 0.15); color: var(--mud-palette-info); }
.pn-ri-badge.is-staff { background: rgba(var(--mud-palette-primary-rgb), 0.12); color: var(--pn-brand-text); }

/* A report about staff: who may read it, said once at the top of the pane. */
.pn-ri-staff-note {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 0 0 12px;
    padding: 10px 12px;
    border: 1px solid rgba(var(--mud-palette-primary-rgb), .3);
    border-radius: var(--pn-radius-sm);
    background: rgba(var(--mud-palette-primary-rgb), .06);
    font-size: .85rem;
}

.pn-ri-incident { display: flex; flex-wrap: wrap; gap: 4px 12px; }

/* Priority dot: high pulses once when it appears (never in a loop). */
.pn-ri-urgency {
    flex: none;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--mud-palette-lines-default);
}

.pn-ri-urgency.is-medium { background: var(--mud-palette-warning); }

.pn-ri-urgency.is-high {
    background: var(--mud-palette-error);
    animation: pn-ri-ping .9s var(--pn-ease-out) 1;
}

/* The right edge of an inbox row (the pane's side column shares the name and stretches, below). */
.pn-ri-row .pn-ri-side {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 4px;
}

.pn-ri-owner {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

/* Taking a report: the avatar pops in. */
.pn-ri-owner .pn-rep-avatar { animation: pn-pop var(--pn-dur) var(--pn-ease-out); }

.pn-ri-owner-name {
    max-width: 90px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pn-ri-viewers { display: inline-flex; }

.pn-ri-viewer {
    width: 20px;
    height: 20px;
    margin-left: -6px;
    font-size: 0.65rem;
    box-shadow: 0 0 0 2px var(--mud-palette-surface), 0 0 0 3px var(--mud-palette-info);
}

.pn-ri-viewer:first-child { margin-left: 0; }

/* ---------- Empty pane ---------- */

.pn-ri-empty {
    position: sticky;
    top: 76px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 360px;
    padding: 32px;
    border: 1px dashed var(--mud-palette-lines-default);
    border-radius: var(--pn-radius);
    text-align: center;
    color: var(--mud-palette-text-secondary);
}

.pn-ri-empty strong { color: var(--mud-palette-text-primary); font-size: 1.05rem; }
.pn-ri-empty-icon { font-size: 3rem !important; opacity: .5; }

/* ---------- Pane ---------- */

.pn-ri-pane {
    display: flex;
    flex-direction: column;
    gap: 16px;
    min-width: 0;
}

/* A new report fades in (opacity only: nothing slides). */
.pn-ri-pane-body { animation: pn-fade var(--pn-dur-fast) ease; }

.pn-ri-pane.is-embedded .pn-ri-pane-body {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.pn-ri-pane.is-page .pn-ri-pane-body {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 16px;
    align-items: start;
}

.pn-ri-col, .pn-ri-side {
    display: flex;
    flex-direction: column;
    gap: 16px;
    min-width: 0;
}

.pn-ri-pane.is-page .pn-ri-side {
    position: sticky;
    top: 76px;
    align-items: stretch;
}

.pn-ri-pane .pn-section { height: auto; }

.pn-ri-pane-head {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 0 8px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.pn-ri-pane-title {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

.pn-ri-pane-title h2 {
    margin: 0;
    overflow: hidden;
    font-size: 1.15rem;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pn-ri-pane-title .pn-dir-muted { font-size: 0.82rem; }

.pn-ri-pane-nav {
    display: flex;
    align-items: center;
    gap: 2px;
    flex: none;
}

.pn-ri-back { display: none !important; }

.pn-ri-viewing {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-right: 6px;
    padding: 2px 10px;
    border-radius: 999px;
    background: rgba(var(--mud-palette-info-rgb), 0.12);
    color: var(--mud-palette-info);
    font-size: 0.75rem;
    font-weight: 600;
    animation: pn-fade var(--pn-dur) ease;
}

.pn-ri-viewing-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: currentColor;
    box-shadow: 0 0 0 3px rgba(var(--mud-palette-info-rgb), 0.25);
}

.pn-ri-trust-line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    font-size: 0.8rem;
}

.pn-ri-reply {
    margin-top: 14px;
    padding: 12px;
    border: 1px solid rgba(var(--mud-palette-info-rgb), 0.35);
    border-radius: var(--pn-radius-md);
    background: rgba(var(--mud-palette-info-rgb), 0.06);
}

.pn-ri-reply-label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--mud-palette-info);
}

/* ---------- Context ---------- */

.pn-ri-alert {
    display: flex;
    gap: 10px;
    margin-bottom: 10px;
    padding: 10px 12px;
    border-radius: var(--pn-radius-md);
    font-size: 0.85rem;
}

.pn-ri-alert > .mud-icon-root { margin-top: 2px; flex: none; }

.pn-ri-alert > div {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.pn-ri-alert.is-warning { background: rgba(var(--mud-palette-warning-rgb), 0.12); }
.pn-ri-alert.is-warning > .mud-icon-root { color: var(--mud-palette-warning); }
.pn-ri-alert.is-info { background: rgba(var(--mud-palette-info-rgb), 0.1); }
.pn-ri-alert.is-info > .mud-icon-root { color: var(--mud-palette-info); }
.pn-ri-alert.is-error { background: rgba(var(--mud-palette-error-rgb), 0.1); }
.pn-ri-alert.is-error > .mud-icon-root { color: var(--mud-palette-error); }
.pn-ri-alert-action { align-self: flex-start; margin-left: -8px !important; }

.pn-ri-played {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 10px 0 0;
    font-size: 0.82rem;
    color: var(--mud-palette-text-secondary);
}

.pn-ri-played .mud-icon-root { font-size: 1rem; }

.pn-ri-context .pn-rep-context-item span { line-height: 1.25; }

/* ---------- Decision ---------- */

.pn-ri-decision-anchor { scroll-margin-top: 84px; }

.pn-ri-decision-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}

.pn-ri-priority {
    padding: 2px 10px;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 700;
    background: var(--mud-palette-action-default-hover);
    color: var(--mud-palette-text-secondary);
}

.pn-ri-priority.is-medium { background: rgba(var(--mud-palette-warning-rgb), 0.14); color: var(--mud-palette-warning); }
.pn-ri-priority.is-high { background: rgba(var(--mud-palette-error-rgb), 0.12); color: var(--mud-palette-error); }

.pn-ri-owner-line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 6px 10px;
    margin-bottom: 10px;
    font-size: 0.88rem;
}

.pn-ri-owner-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

.pn-ri-owner-actions kbd { margin-left: 6px; }

.pn-ri-form {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin: 6px 0 12px;
    padding: 14px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--pn-radius-md);
    background: var(--mud-palette-background-gray);
    animation: pn-ri-drop var(--pn-dur) var(--pn-ease-out);
}

.pn-ri-form .pn-rep-choices { margin: 0; }

.pn-ri-form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 6px;
}

.pn-ri-templates { margin: 0; }

.pn-ri-together {
    display: flex;
    flex-direction: column;
    font-size: 0.85rem;
}

.pn-ri-actionbar {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
    padding-top: 12px;
    border-top: 1px solid var(--mud-palette-lines-default);
}

.pn-ri-actionbar.is-done { justify-content: space-between; }

/* The quick strip at the end of the pane: always within reach while the report is long. */
.pn-ri-quickbar {
    position: sticky;
    bottom: 12px;
    z-index: 3;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 6px;
    align-self: flex-end;
    padding: 6px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 999px;
    background: var(--mud-palette-surface);
    box-shadow: 0 8px 24px rgba(0, 0, 0, .14);
}

.pn-ri-quickbar .mud-button-root { border-radius: 999px; }

.pn-ri-staff-option {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

/* ---------- Help ---------- */

.pn-ri-help {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
    animation: pn-ri-drop var(--pn-dur-fast) var(--pn-ease-out);
}

.pn-ri-help ul {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 18px;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: 0.85rem;
}

/* ---------- Narrow screens: one column at a time ---------- */

@media (max-width: 1280px) {
    .pn-ri-pane.is-page .pn-ri-pane-body { grid-template-columns: minmax(0, 1fr) 320px; }
}

@media (max-width: 1100px) {
    .pn-ri { grid-template-columns: minmax(300px, 40%) minmax(0, 1fr); }
}

@media (max-width: 960px) {
    .pn-ri { grid-template-columns: minmax(0, 1fr); }

    .pn-ri-list {
        position: static;
        max-height: none;
        padding: 0;
        overflow: visible;
        border: 0;
        background: none;
    }

    .pn-ri[data-open] .pn-ri-list { display: none; }
    .pn-ri:not([data-open]) .pn-ri-detail { display: none; }

    .pn-ri-back { display: inline-flex !important; }

    .pn-ri-pane.is-page .pn-ri-pane-body { grid-template-columns: minmax(0, 1fr); }
    .pn-ri-pane.is-page .pn-ri-side { position: static; order: -1; }

    .pn-ri-quickbar {
        bottom: calc(12px + env(safe-area-inset-bottom));
        align-self: stretch;
        justify-content: space-around;
    }
}

@media (max-width: 600px) {
    .pn-ri-filters { grid-template-columns: minmax(0, 1fr); }
    .pn-ri-pane-nav .pn-rep-pos, .pn-ri-viewing { display: none; }
}

/* Above the phone tab bar. */
.pn-has-bottomnav .pn-ri-quickbar { bottom: calc(76px + env(safe-area-inset-bottom)); }

@media (min-width: 960px) {
    .pn-has-bottomnav .pn-ri-quickbar { bottom: 12px; }
}

/* ---------- Statistics ---------- */

.pn-rep-bars--backlog .pn-rep-bar { background: var(--mud-palette-warning); }
.pn-rep-bars--hours { height: 100px; }
.pn-rep-bars--hours .pn-rep-bar { background: var(--mud-palette-info); }

/* The bars grow from the axis once, when the statistics arrive. */
.pn-rep-bars .pn-rep-bar {
    transform-origin: bottom;
    animation: pn-ri-grow .5s var(--pn-ease-out) both;
}

/* ---------- Motion ---------- */



@keyframes pn-ri-drop {
    from { opacity: 0; transform: translateY(-4px); }
}



@keyframes pn-ri-flash {
    0%, 30% { background: rgba(var(--mud-palette-info-rgb), 0.18); }
}

@keyframes pn-ri-grow {
    from { transform: scaleY(0); }
}

@keyframes pn-ri-ping {
    0% { box-shadow: 0 0 0 0 rgba(var(--mud-palette-error-rgb), .5); }
    100% { box-shadow: 0 0 0 8px rgba(var(--mud-palette-error-rgb), 0); }
}

@media (prefers-reduced-motion: reduce) {
    .pn-ri-row, .pn-ri-row-inner, .pn-ri-row-inner::before, .pn-ri-select, .pn-ri-view { transition: none; }

    .pn-ri-row.is-new .pn-ri-row-inner, .pn-ri-urgency.is-high, .pn-ri-owner .pn-rep-avatar, .pn-ri-pane-body,
    .pn-ri-form, .pn-ri-filters, .pn-ri-help, .pn-ri-viewing, .pn-rep-bars .pn-rep-bar { animation: none; }
}

/* An appeal of the sanction a resolved report led to (ReportDecision). */
.pn-ri-appeal {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}
