[x-cloak] { display: none !important; }

/* Prevent scroll containers inside modals from clipping input focus outlines.
   overflow-y:auto forces overflow-x to non-visible per spec, which cuts the
   focus ring on inputs/selects. Pad horizontally and pull back with margin
   so visual alignment is unchanged. */
.modal-box .overflow-y-auto,
.modal-box .overflow-auto {
    padding-left: 4px;
    padding-right: 4px;
    margin-left: -4px;
    margin-right: -4px;
}

tbody tr.htmx-swapping {
    transition: opacity 200ms ease-out;
    opacity: 0;
}

/* Locked rows get a diagonal hatch. Paint it on the row (not each cell) so the
   stripes run continuously across the whole row and take a single colour from
   the row's text colour, instead of restarting/recolouring per cell. The cells
   are made transparent so the row's hatch shows through. */
tr.tx-locked {
    background-image: repeating-linear-gradient(
        -45deg,
        transparent 0,
        transparent 6px,
        color-mix(in oklab, currentColor 8%, transparent) 6px,
        color-mix(in oklab, currentColor 8%, transparent) 7px
    );
}

tr.tx-locked > td {
    background-color: transparent !important;
}

/* Lighten the default DaisyUI row dividers so they read as subtle
   separators rather than heavy lines. Theme-aware: derived from the
   row's text colour, so it softens on both light and dark themes. */
.table :where(thead, tbody) :where(tr:not(:last-child)) > :where(th, td) {
    border-bottom-color: color-mix(in oklab, currentColor 10%, transparent);
}
