/* /Components/ActivityFeed.razor.rz.scp.css */
.entry[b-2sinvbsm8g] {
    align-items: baseline;
    font-size: var(--text-sm);
}

.entry .when[b-2sinvbsm8g] {
    flex: 0 0 auto;
    min-width: 8.5rem;
    font-variant-numeric: tabular-nums;
}

/* A value written into a line, underlined away from the words around it. Under the text rather than
   through the middle of it, and in the border's grey so a line with three of them still reads as a
   sentence rather than as a row of links. */
.activity .value[b-2sinvbsm8g] {
    color: var(--muted);
}
/* /Components/TaskBoard.razor.rz.scp.css */
.board[b-rmki7jr3vk] {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: var(--space);
    overflow-x: auto;
    height: 100%;
}

.board-column[b-rmki7jr3vk] {
    display: flex;
    flex-direction: column;
    flex: 0 0 320px;
    gap: var(--space);
    padding: var(--space);
    border-radius: var(--radius-md);
    background: var(--surface-sunken);
    min-width: 0;
    height: 100%;
    overflow: hidden;
}

.board-column-header[b-rmki7jr3vk],
.board-column > .btn[b-rmki7jr3vk] {
    flex: none;
}

.board-column-header[b-rmki7jr3vk] {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: var(--space-tight);
    font-weight: 500;
    margin-bottom: var(--space-tight);
}

.board-cards[b-rmki7jr3vk] {
    display: flex;
    flex-direction: column;
    gap: var(--space);
    flex: 1;
    min-height: 0;
    overflow-y: auto;
}

.board-card[b-rmki7jr3vk] {
    display: flex;
    flex-direction: column;
    gap: var(--space);
    padding: var(--space);
    border: solid 1px var(--border);
    border-radius: var(--radius-md);
    background: var(--surface);
    min-width: 0;
    user-select: none;
    cursor: grab;
}

.board-card-title[b-rmki7jr3vk] {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
    min-width: 0;
}

.board-card a[b-rmki7jr3vk]  {
    text-decoration: none;
}

/* Drag and drop */

.board-card.dragging[b-rmki7jr3vk] {
    opacity: 0.4;
}

.board-card-clone[b-rmki7jr3vk] {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 100;
    pointer-events: none;
    opacity: 0.95;
}

.board-card.drop-before[b-rmki7jr3vk] {
    box-shadow: 0 calc(var(--base-size) * -2) 0 calc(var(--base-size) * -1.5) var(--accent);
}

.board-column.drop-end .board-cards[b-rmki7jr3vk]::after {
    content: "";
    height: calc(var(--base-size) / 2);
    border-radius: calc(var(--base-size) / 4);
    background: var(--accent);
}

.board-column.drop-column[b-rmki7jr3vk] {
    outline: dashed 1px var(--border);
}

body.dragging-card[b-rmki7jr3vk] {
    cursor: grabbing;
    user-select: none;
}
/* /Components/TaskList.razor.rz.scp.css */
/* A subtask drawn under its parent. The name steps in and nothing else does: the number keeps its
   own column, so the ids still read straight down whatever a row belongs to. The cell's own padding
   is carried along — .table-cell sets all four sides at once, and only the left one moves here. */
.table-cell.subtask[b-9297m1jtpw] {
    padding-left: calc(var(--space) + var(--space-section));
}

/* Half a row rather than a whole one: it closes a group rather than being a row of it, and at full
   height it would read as one more task under the heading instead of the way to add one. */
.table-row.add .table-cell[b-9297m1jtpw] {
    padding-block: var(--space-inline);
}
/* /Components/TimeSelector.razor.rz.scp.css */
.number[b-5n07jdf5x1] {
    width: 5.25rem;
}
/* /Components/UserMenu.razor.rz.scp.css */
/* Opened from the top bar the menu wants to be under the button, not beside it: the bar is along the
   top of the screen and the button at its right, so there is room below and none to the side. The
   right-end placement it carries is for the navbar, which is the only place it opens from above this
   width. Under 720px the sheet along the bottom in popover.css takes over from both. */
@media (max-width: 900px) {
    .popover[b-pvbborsejq] {
        position-area: bottom span-left;
        transform-origin: top right;
    }
}
/* /Layout/AuthLayout.razor.rz.scp.css */
.page[b-vl8vqjbs89] {
    min-height: 100dvh;
    padding: var(--space);
    display: flex;
    flex-direction: column;
}

.page .content[b-vl8vqjbs89] {
    flex: 1;
    display: flex;
    align-items: center;
}

.page .content > div[b-vl8vqjbs89] {
    flex: 1;
    max-width: 450px;
    margin: 0 auto;
}

.page .logo[b-vl8vqjbs89] {
    height: 32px;
    width: auto;
}
/* /Layout/MainLayout.razor.rz.scp.css */
.page[b-lvaoz6xz5t] {
    --navbar-width: 250px;

    padding: var(--space);
    display: flex;
    flex-direction: row;
    gap: var(--space);
    height: 100dvh;
    background: var(--surface-sunken);
}

.page > .topbar[b-lvaoz6xz5t] {
    display: none;
}

.page > .navbar[b-lvaoz6xz5t] {
    width: var(--navbar-width);
    height: 100%;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: var(--space-section);
    padding: var(--space-tight);

    /* The popover box the browser draws — fixed to the viewport, centred in it, with a border and
       colours of its own — undone. At this width the attribute is along for the ride and nothing
       about the column should show that it is there. */
    position: static;
    inset: auto;
    margin: 0;
    border: none;
    background: none;
    color: inherit;
}

.page > .navbar > div[b-lvaoz6xz5t] {
    display: flex;
    flex-direction: column;
    gap: var(--space-inline);
}

.page .logo[b-lvaoz6xz5t] {
    height: 24px;
    width: auto;
    vertical-align: bottom;
}

.page > .content[b-lvaoz6xz5t] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--space-section);
    background: var(--surface);
    border: solid 1px var(--border);
    border-radius: var(--radius-md);
    padding: var(--space-section);
    height: 100%;
    overflow: hidden;
}

[b-lvaoz6xz5t] .content-header {
    display: flex;
    align-items: flex-start;
}

[b-lvaoz6xz5t] .content-header .title {
    flex: 1;
}

/* Pulled up and out by the glyph's inset within the control height, so what is drawn on the buttons
   lines up with the title and the edge rather than the boxes around them. One offset serves both
   directions because an icon button is a square; a text button here would want a different right. */
[b-lvaoz6xz5t] .content-header .buttons {
    display: flex;
    margin-top: calc(var(--control-icon-inset) * -1);
    margin-right: calc(var(--control-icon-inset) * -1);
}

[b-lvaoz6xz5t] .content-main {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
}

[b-lvaoz6xz5t] .content-main .content-wrapper {
    max-width: var(--measure);
    margin: 0 auto;
}

[b-lvaoz6xz5t] .btn.nav {
    width: 100%;
    justify-content: start;
    font-weight: normal;
}

[b-lvaoz6xz5t] .btn.nav:hover,
[b-lvaoz6xz5t] .btn.nav.active {
    background: var(--border);
}

@media (max-width: 900px) {
    .page[b-lvaoz6xz5t] {
        flex-direction: column;
        padding-inline: 0;
        padding-bottom: 0;
    }

    .page > .topbar[b-lvaoz6xz5t] {
        display: flex;
        align-items: center;
        gap: var(--space-tight);
        padding: 0 var(--space);
    }

    /* The name is all this has over the icon in the bar, and both open the same menu. */
    .page > .navbar > .user[b-lvaoz6xz5t] {
        display: none;
    }

    /* display: none rather than leaving it to the browser's own rule for a closed popover: the
       column above declares a display, and a declaration of ours outweighs one of theirs whatever
       the state. Everything below :popover-open is what the drawer looks like once it is open. */
    .page > .navbar[b-lvaoz6xz5t] {
        display: none;
        position: fixed;
        left: 0;
        top: 0;
        width: 100%;
        height: 100dvh;
        z-index: 1000;
        background: var(--surface-sunken);
        padding: var(--space);
        opacity: 0;
        transition: opacity var(--transition-speed) ease-in-out,
        overlay var(--transition-speed) ease-in-out allow-discrete,
        display var(--transition-speed) ease-in-out allow-discrete;
    }

    .page > .navbar:popover-open[b-lvaoz6xz5t] {
        display: flex;
        opacity: 1;
    }

    @starting-style {
        .page > .navbar:popover-open[b-lvaoz6xz5t] {
            opacity: 0;
        }
    }

    /* The content is the second row now rather than the second column, so a height of the whole
       page would push the bar it sits under off the bottom. */
    .page > .content[b-lvaoz6xz5t] {
        height: auto;
        min-height: 0;
    }
}
/* /Pages/App/Clients/Details.razor.rz.scp.css */
/* One domain per line, and the line breaks that say so are the ones that were typed. */
.domains[b-vtt2wxlzcn] {
    white-space: pre-wrap;
    line-height: 1.5;
    padding: var(--space);
    border: solid 1px var(--border);
    border-radius: var(--radius-md);
}
/* /Pages/App/Tasks/Details.razor.rz.scp.css */
.description[b-vwlq4iom0n] {
    white-space: pre-wrap;
    line-height: 1.5;
}
/* /Pages/App/Workspaces/Details.razor.rz.scp.css */
.description[b-8ssn6rdn6v] {
    white-space: pre-wrap;
    line-height: 1.5;
}
/* /Pages/App/Workspaces/Index.razor.rz.scp.css */
/* The card is the link to the workspace, so it reads as a card and not as a line of link text. */
.card[b-lln7kz861b] {
    color: inherit;
    text-decoration: none;
}

/* How much of the workspace is done. A native bar rather than two nested divs, which means taking
   the platform's own appearance off it and colouring the track and the fill per engine — the track
   is the element itself in WebKit, and the fill is all Firefox exposes.

   The fill is the completed status's colour, set on the element itself: the colours live in
   TaskItemStatus so every client draws a status the same way, and a stylesheet cannot read them.
   Inherited into both pseudo-elements, which is the only way either of them can be told. */
progress[b-lln7kz861b] {
    appearance: none;
    width: 100%;
    height: var(--space-tight);
    border: none;
    border-radius: var(--radius-sm);
    background: var(--border);
    overflow: hidden;
}

progress[b-lln7kz861b]::-webkit-progress-bar {
    background: var(--border);
}

progress[b-lln7kz861b]::-webkit-progress-value {
    background: var(--fill);
}

progress[b-lln7kz861b]::-moz-progress-bar {
    background: var(--fill);
}
