/* Photo-first basketing capture (club race page): the camera / file buttons inside the drop target, and the
   live list of sheets photographed for the race — each with its read state and the fanciers it placed. */

/* The two ways in, side by side under the zone's hint; each is a <label> wrapping its hidden file input. */
.sheet-capture__actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-sm);
    margin-top: var(--space-sm);
}

.sheet-capture__actions .btn {
    cursor: pointer;
}

.sheet-capture__list {
    margin-top: var(--space-md);
}

.sheet-capture__items {
    list-style: none;
    margin: 0;
    padding: 0;
    border-top: 1px solid var(--outline-variant);
}

.sheet-capture__item {
    padding: var(--space-sm) 0;
    border-bottom: 1px solid var(--outline-variant);
}

.sheet-capture__head {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    min-width: 0;
}

.sheet-capture__icon {
    flex: none;
    font-size: 20px;
    color: var(--on-surface-variant);
}

/* The file name takes the middle and ellipsises — a phone's photo names are long and meaningless. */
.sheet-capture__file {
    flex: 1;
    min-width: 0;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Everything under the head lines up with the file name, past the icon. */
.sheet-capture__detail,
.sheet-capture__fanciers,
.sheet-capture__item-actions {
    margin: var(--space-xs) 0 0 28px;
}

.sheet-capture__item-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-xs) var(--space-sm);
}

/* These are shown/hidden via the hidden attribute (server markup and raceSheetCapture.js alike); the explicit
   [hidden] rule matters — the display:flex above would otherwise beat the browser's own [hidden] and leave
   dead "Read it again anyway" / "Remove" buttons on every listed sheet. */
.sheet-capture__item-actions[hidden],
.sheet-capture__fanciers[hidden] {
    display: none;
}

.sheet-capture__detail {
    font-size: var(--text-body-sm-size);
    color: var(--on-surface-variant);
}

.sheet-capture__fanciers {
    list-style: none;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-xs) var(--space-md);
}

.sheet-capture__fancier {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    font-size: var(--text-body-sm-size);
}

/* The badge and each fancier name are links into the page (to that competitor's panel) only while they carry
   an href — a sheet still being read has nowhere to go yet, and reads as plain text. */
.sheet-capture__fancier-link {
    color: inherit;
    text-decoration: none;
}

.sheet-capture__fancier-link[href],
.sheet-capture__head .badge[href] {
    cursor: pointer;
    text-decoration: underline dotted;
    text-underline-offset: 3px;
}

.sheet-capture__fancier-link[href]:hover,
.sheet-capture__head .badge[href]:hover {
    text-decoration-style: solid;
}

.sheet-capture__head .badge[href]::after {
    content: "arrow_forward";
    font-family: "Material Symbols Outlined";
    font-size: 14px;
    text-transform: none;
    letter-spacing: 0;
}

/* "Whose sheet is this?" — the competitor picker under an unmatched clocking sheet. */
.sheet-capture__attach {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-sm);
    margin: var(--space-sm) 0 0 28px;
}

.sheet-capture__attach .select {
    flex: 1;
    min-width: 12rem;
}

/* Empty roster: the picker has nobody to offer, so a note takes its place beside "Remove". */
.sheet-capture__attach-note {
    flex: 1;
    min-width: 12rem;
    margin: 0;
}

/* The clocking step's capture block sits between the settings and the competitor cards. */
.rc-capture {
    margin-top: var(--space-md);
}
