/*
 * The redesigned contractor portal: its accent colours, the agency card, the phone tab bar and the dashboard.
 * Like the rest of the new layout it only applies inside .ui-shell, which is only rendered on html[data-ui="v2"].
 * Phones (below 768px) get the tab bar instead of the slide-out menu.
 */

/* ---------- Accent ---------- */

.ui-shell--contractor {
    --ui-sidebar-bg: linear-gradient(180deg, #4b2fdc 0%, #3a63ea 55%, #2f8ff0 100%);
    --ui-hero-bg: linear-gradient(100deg, #3f3fe4 0%, #3f6fee 55%, #22b6f2 100%);
    --ui-ring-from: #4a3be6;
    --ui-ring-to: #1fb8f0;
}

html[data-ui="v2"].dark .ui-shell--contractor {
    --ui-sidebar-bg: linear-gradient(180deg, #24177a 0%, #1f3aa0 55%, #1b5fae 100%);
    --ui-hero-bg: linear-gradient(100deg, #24177a 0%, #2141a8 55%, #1477ad 100%);
}

.ui-shell .ui-hero__eyebrow {
    margin: 0 0 2px;
    color: var(--ui-on-brand-muted);
    font-size: 13.5px;
    font-weight: 600;
}

/* ---------- Agency card ---------- */

.ui-agency-card-anchor {
    position: relative;
    margin: 18px 0 4px;
}

.ui-agency-card {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 100%;
    padding: 12px;
    border: 0;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.14);
    color: var(--ui-on-brand);
    font-family: inherit;
    text-align: left;
}

.ui-agency-card.is-switchable {
    cursor: pointer;
}

.ui-agency-card.is-switchable:hover {
    background: rgba(255, 255, 255, 0.22);
}

.ui-agency-card__row {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
}

/* The agency's own logo, on white so logos made for light backgrounds read properly */
.ui-agency-card__logo {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 64px;
    padding: 8px 12px;
    border-radius: 10px;
    background: #ffffff;
}

.ui-agency-card__logo img {
    display: block;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.ui-agency-card.has-logo .ui-agency-card__initials {
    display: none;
}

.ui-agency-card__initials {
    display: inline-flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border: 1px solid rgba(255, 255, 255, 0.6);
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
}

.ui-agency-card__text {
    display: flex;
    flex: 1;
    flex-direction: column;
    min-width: 0;
}

.ui-agency-card__name {
    font-size: 15px;
    font-weight: 600;
    line-height: 1.25;
}

.ui-agency-card__caption {
    color: var(--ui-on-brand-muted);
    font-size: 12.5px;
}

.ui-agency-card__chevron {
    flex: none;
    opacity: 0.8;
}

.ui-agency-card__menu {
    left: 0;
    right: 0;
    min-width: 0;
    color: var(--ui-text);
}

.is-nav-collapsed .ui-agency-card__text,
.is-nav-collapsed .ui-agency-card__chevron,
.is-nav-collapsed .ui-agency-card__logo {
    display: none;
}

/* The collapsed rail is too narrow for a logo, so it keeps the initials */
.is-nav-collapsed .ui-agency-card.has-logo .ui-agency-card__initials {
    display: inline-flex;
}

/* The agency chip in the hero only shows on phones, where the sidebar's card isn't visible */
.ui-hero-agency {
    display: none;
}

/* ---------- Top bar without search ---------- */

.ui-topbar__spacer {
    flex: 1;
}

.ui-topbar__brand {
    display: none;
}

/* ---------- Phone tab bar ---------- */

.ui-mobile-tabs {
    display: none;
}

.ui-mobile-tab {
    position: relative;
    display: flex;
    flex: 1;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    min-width: 0;
    padding: 8px 2px 6px;
    color: var(--ui-text-faint);
    font-size: 11.5px;
    font-weight: 600;
}

.ui-shell a.ui-mobile-tab.is-active {
    color: var(--ui-primary);
}

.ui-mobile-tab.is-disabled {
    opacity: 0.45;
}

.ui-mobile-tab__icon {
    position: relative;
    display: inline-flex;
}

.ui-mobile-tab__label {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ui-mobile-tab__badge {
    position: absolute;
    top: -6px;
    right: -10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border: 2px solid var(--ui-surface);
    border-radius: 999px;
    background: var(--ui-danger);
    color: #ffffff;
    font-size: 10.5px;
    font-weight: 700;
}

/* ---------- Dashboard layout ---------- */

.ui-contractor-home {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
    align-items: start;
}

.ui-contractor-home__profile {
    grid-column: span 3;
    min-width: 0;
}

.ui-contractor-home__side {
    display: flex;
    flex-direction: column;
    gap: 20px;
    min-width: 0;
}

.ui-contractor-home__quick,
.ui-contractor-home__contact-mobile {
    display: none;
}

.ui-contractor-home__week,
.ui-contractor-home__extra {
    align-self: stretch;
    min-width: 0;
}

.ui-contractor-home__week > .ui-card,
.ui-contractor-home__extra > .ui-card {
    height: 100%;
}

.ui-card-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 0;
    border: 0;
    background: none;
    color: var(--ui-primary);
    font-family: inherit;
    font-size: 14px;
    font-weight: 600;
    white-space: nowrap;
    cursor: pointer;
}

.ui-card-link:hover {
    text-decoration: underline;
}

.ui-inline-link {
    padding: 0;
    border: 0;
    background: none;
    color: var(--ui-primary);
    font: inherit;
    font-weight: 600;
    cursor: pointer;
}

.ui-inline-link:hover {
    text-decoration: underline;
}

/* ---------- Profile card ---------- */

.ui-profile-card__head {
    display: flex;
    align-items: center;
    gap: 22px;
    padding: 20px 24px;
    border-bottom: 1px solid var(--ui-border-subtle);
}

.ui-profile-card__intro {
    flex: 1;
    min-width: 0;
}

.ui-shell .ui-profile-card__title {
    margin: 0;
    color: var(--ui-text);
    font-family: var(--ui-font);
    font-size: 21px;
    font-weight: 600;
    line-height: 1.25;
}

.ui-profile-card__text {
    margin: 4px 0 0;
    max-width: 600px;
    color: var(--ui-text-muted);
    font-size: 15px;
}

.ui-profile-card__open {
    flex: none;
    align-self: flex-start;
}

.ui-profile-card__steps {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 24px;
    padding: 4px 24px 12px;
}

.ui-profile-card__mobile {
    display: none;
}

.ui-profile-card__all {
    display: block;
    width: 100%;
    padding: 14px;
    border: 0;
    border-top: 1px solid var(--ui-border-subtle);
    background: none;
    color: var(--ui-primary);
    font-family: inherit;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
}

/* ---------- Progress ring ---------- */

.ui-progress-ring {
    position: relative;
    display: inline-flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 96px;
    height: 96px;
}

.ui-progress-ring svg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.ui-progress-ring__track,
.ui-progress-ring__fill {
    fill: none;
    stroke-width: 5;
}

.ui-progress-ring__track {
    stroke: var(--ui-border-subtle);
}

.ui-progress-ring__fill {
    stroke-linecap: round;
    transition: stroke-dasharray 0.4s ease;
}

.ui-progress-ring__value {
    position: relative;
    color: var(--ui-text);
    font-size: 24px;
    font-weight: 600;
}

.ui-progress-ring__value small {
    margin-left: 2px;
    font-size: 15px;
}

.ui-progress-ring--sm {
    width: 64px;
    height: 64px;
}

.ui-progress-ring--sm .ui-progress-ring__value {
    font-size: 17px;
}

/* ---------- Profile steps ---------- */

.ui-step {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 62px;
    padding: 10px 0;
    border-bottom: 1px solid var(--ui-border-subtle);
}

.ui-step__mark {
    display: inline-flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 50%;
}

.ui-step.is-done .ui-step__mark {
    background: #8cc63f;
    color: #ffffff;
}

.ui-step.is-todo .ui-step__mark {
    border: 2px dashed var(--ui-checkbox-border);
}

.ui-step.is-agency .ui-step__mark {
    background: var(--ui-border-subtle);
}

.ui-step__text {
    display: flex;
    flex: 1;
    flex-direction: column;
    min-width: 0;
}

.ui-step__title {
    color: var(--ui-text-muted);
    font-size: 13px;
}

.ui-step__detail {
    color: var(--ui-text);
    font-size: 14px;
    overflow-wrap: anywhere;
}

.ui-step__tags {
    margin-top: 4px;
}

.ui-step__action {
    flex: none;
    min-width: 64px;
}

/* ---------- Next shift ---------- */

.ui-next-shift__empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 4px 0 6px;
    text-align: center;
}

.ui-next-shift__moo {
    flex: none;
    width: 110px;
    height: 110px;
    background: url("../img/moo-question.png") no-repeat center / contain;
}

.ui-shell .ui-next-shift__heading {
    margin: 10px 0 6px;
    color: var(--ui-text);
    font-family: var(--ui-font);
    font-size: 18px;
    font-weight: 600;
}

.ui-next-shift__copy {
    margin: 0 0 14px;
    color: var(--ui-text-muted);
    font-size: 14.5px;
}

.ui-next-shift__booked {
    display: flex;
    gap: 16px;
    align-items: center;
}

.ui-next-shift__date {
    display: flex;
    flex: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 68px;
    height: 76px;
    border-radius: 14px;
    background: var(--ui-primary-soft);
    color: var(--ui-primary);
    line-height: 1.1;
}

.ui-next-shift__day,
.ui-next-shift__month {
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
}

.ui-next-shift__num {
    font-size: 26px;
    font-weight: 700;
}

.ui-next-shift__info {
    min-width: 0;
}

.ui-next-shift__client {
    color: var(--ui-text);
    font-size: 16px;
    font-weight: 600;
}

.ui-next-shift__title {
    color: var(--ui-text-muted);
}

.ui-next-shift__time {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 4px;
    color: var(--ui-text-muted);
}

.ui-next-shift__booked + .ui-next-shift__button {
    margin-top: 16px;
}

/* ---------- Agency contacts ---------- */

.ui-contacts {
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-contacts__row {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 20px;
    border-top: 1px solid var(--ui-border-subtle);
}

.ui-contacts__row:first-child {
    border-top: 0;
}

.ui-contacts__none {
    background: #8a93a8;
}

.ui-contacts__text {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.ui-contacts__name {
    color: var(--ui-text);
    font-size: 15px;
    font-weight: 500;
}

.ui-contacts__role {
    color: var(--ui-text-muted);
    font-size: 13px;
}

/* ---------- This week ---------- */

.ui-week {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 6px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-week__day {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: 8px 2px;
    border: 2px solid transparent;
    border-radius: 12px;
    background: var(--ui-bg-subtle);
}

.ui-week__day.is-today {
    border-color: var(--ui-primary);
    background: var(--ui-primary-soft);
}

.ui-week__name {
    color: var(--ui-text-muted);
    font-size: 12px;
}

.ui-week__letter,
.ui-week__dot {
    display: none;
}

.ui-week__num {
    color: var(--ui-text);
    font-size: 20px;
    font-weight: 600;
    line-height: 1.2;
}

.ui-week__day.is-today .ui-week__num,
.ui-week__day.is-today .ui-week__name {
    color: var(--ui-primary);
}

.ui-week__state {
    padding: 1px 6px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
}

.ui-week__day.is-free .ui-week__state {
    background: var(--ui-tone-green-bg);
    color: var(--ui-tone-green-fg);
}

.ui-week__day.is-booked .ui-week__state {
    background: var(--ui-tone-blue-bg);
    color: var(--ui-tone-blue-fg);
}

.ui-week__day.is-away .ui-week__state {
    background: var(--ui-tone-amber-bg);
    color: var(--ui-tone-amber-fg);
}

.ui-week__day.is-unavailable .ui-week__state {
    background: var(--ui-tone-grey-bg);
    color: var(--ui-tone-grey-fg);
}

.ui-week-card__absence {
    display: none;
}

.ui-week-card__hint {
    margin: 18px 0 0;
    color: var(--ui-text-muted);
    font-size: 13.5px;
}

/* ---------- Small lists and empty states in the bottom cards ---------- */

.ui-mini-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 8px 4px;
    text-align: center;
}

.ui-shell .ui-mini-empty__title {
    margin: 0 0 8px;
    color: var(--ui-text);
    font-family: var(--ui-font);
    font-size: 17px;
    font-weight: 500;
}

.ui-mini-empty__text {
    margin: 0 0 10px;
    color: var(--ui-text-muted);
    font-size: 14px;
}

.ui-mini-list {
    margin: 0 0 12px;
    padding: 0;
    list-style: none;
}

.ui-mini-list__row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--ui-border-subtle);
}

.ui-mini-list li:last-child .ui-mini-list__row,
.ui-mini-list li.ui-mini-list__row:last-child {
    border-bottom: 0;
}

.ui-mini-list__main {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    color: var(--ui-text);
    font-size: 15px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ui-mini-list__meta {
    flex: none;
    color: var(--ui-text-faint);
    font-size: 13px;
}

.ui-folder-icon {
    display: inline-flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: var(--ui-tone-amber-bg);
    color: #e09b12;
}

.ui-timesheet-nudge {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
    padding: 10px 12px;
    border-radius: var(--ui-radius-sm);
    background: var(--ui-tone-amber-bg);
    color: var(--ui-tone-amber-fg);
    font-size: 13.5px;
    font-weight: 600;
}

.ui-pay-rate {
    align-items: flex-start;
}

.ui-pay-rate__figures {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    color: var(--ui-text);
    font-weight: 600;
}

.ui-pay-rate__figures small {
    color: var(--ui-text-faint);
    font-weight: 500;
}

.ui-contractor-pay .ui-moo-tip .ui-moo-tip__moo {
    background-image: url("../img/moo-question.png");
    background-size: contain;
}

/* ---------- Phone shortcuts ---------- */

.ui-quick-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.ui-quick-action {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
    padding: 16px;
    border: 1px solid var(--ui-border-subtle);
    border-radius: var(--ui-radius);
    background: var(--ui-surface);
    box-shadow: var(--ui-shadow);
    color: var(--ui-text);
    font-family: inherit;
    text-align: left;
    cursor: pointer;
}

.ui-quick-action__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: 12px;
    background: var(--tone-solid, var(--ui-primary));
    color: #ffffff;
}

.ui-quick-action__icon.ui-tone--amber { background: #f5b524; }
.ui-quick-action__icon.ui-tone--red { background: #ef5b6b; }
.ui-quick-action__icon.ui-tone--blue { background: #1e9be8; }
.ui-quick-action__icon.ui-tone--green { background: #8cc63f; }

.ui-quick-action__label {
    font-size: 16px;
    font-weight: 500;
}

/* ---------- Forms ---------- */

.ui-check-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 6px;
    color: var(--ui-text);
    font-size: 14.5px;
    cursor: pointer;
}

.ui-secure-note {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 4px 0 0;
    padding: 12px 14px;
    border-radius: 10px;
    background: var(--ui-bg-subtle);
    color: var(--ui-text-muted);
    font-size: 13px;
}

.ui-secure-note svg {
    flex-shrink: 0;
    color: var(--ui-primary);
}

/* ---------- Profile page ---------- */

.ui-profile-header {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 20px 24px;
}

.ui-profile-header__photo {
    position: relative;
    display: inline-flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: linear-gradient(135deg, #2f8ff0, #1fb8f0);
    color: #ffffff;
    font-family: inherit;
    font-size: 22px;
    font-weight: 600;
    cursor: pointer;
}

.ui-profile-header__photo img {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
}

.ui-profile-header__photo-edit {
    position: absolute;
    right: -2px;
    bottom: -2px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border: 2px solid var(--ui-surface);
    border-radius: 50%;
    background: #4a3be6;
    color: #ffffff;
}

.ui-profile-header__main {
    flex: 1;
    min-width: 0;
}

.ui-profile-header__name-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}

.ui-shell .ui-profile-header__name {
    margin: 0;
    color: var(--ui-text);
    font-family: var(--ui-font);
    font-size: 23px;
    font-weight: 600;
}

.ui-profile-header__facts {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 20px;
    margin-top: 4px;
    color: var(--ui-text-muted);
    font-size: 14.5px;
}

.ui-profile-header__badge {
    margin-top: 6px;
}

.ui-profile-header__contacts {
    display: flex;
    flex: none;
    gap: 24px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-profile-header__contacts li {
    display: flex;
    align-items: center;
    gap: 10px;
}

.ui-profile-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
    align-items: start;
    margin-top: 20px;
}

/* The tag and Edit button sit together on the right of a card's title */
.ui-profile-grid .ui-card__header {
    justify-content: flex-start;
    gap: 8px;
}

.ui-shell .ui-profile-grid .ui-card__title {
    margin-right: auto;
}

.ui-profile-empty {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.ui-profile-grid .ui-kv dt {
    color: var(--ui-text-muted);
    font-weight: 400;
}

.ui-profile-grid .ui-kv dd {
    color: var(--ui-text);
}

.ui-profile-note {
    margin: 12px 0 0;
    color: var(--ui-text-faint);
    font-size: 13.5px;
}

.ui-profile-subsection {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--ui-border-subtle);
}

.ui-profile-subsection__title {
    color: var(--ui-text);
    font-weight: 600;
}

.ui-profile-file {
    margin-top: 10px;
}

.ui-week-hours {
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-week-hours li {
    display: flex;
    justify-content: space-between;
    padding: 7px 0;
    border-bottom: 1px solid var(--ui-border-subtle);
    color: var(--ui-text);
}

.ui-week-hours li:last-child {
    border-bottom: 0;
}

.ui-week-hours li.is-off span:last-child {
    color: var(--ui-text-faint);
}

.ui-pay-table {
    width: 100%;
}

/* ---------- Profile side panels ---------- */

.ui-availability-presets {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 14px;
}

.ui-availability-days {
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-availability-day {
    display: grid;
    grid-template-columns: 110px 170px minmax(0, 1fr);
    align-items: center;
    gap: 12px;
    min-height: 52px;
    border-bottom: 1px solid var(--ui-border-subtle);
}

.ui-availability-day__name {
    color: var(--ui-text);
    font-weight: 600;
}

.ui-availability-day__times {
    display: flex;
    align-items: center;
    gap: 8px;
}

.ui-availability-day__times .ui-input {
    width: 110px;
}

.ui-file-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--ui-text);
}

.ui-photo-pick {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
}

.ui-photo-pick__preview {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 140px;
    height: 140px;
    overflow: hidden;
    border-radius: 50%;
    background: var(--ui-bg-subtle);
    color: var(--ui-text-faint);
}

.ui-photo-pick__preview img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ---------- Responsive ---------- */

@media (max-width: 1399.98px) {
    .ui-contractor-home {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ui-contractor-home__profile {
        grid-column: span 2;
    }

    .ui-contractor-home__side {
        display: contents;
    }
}

/* ---------- Documents ---------- */

.ui-docs {
    display: grid;
    grid-template-columns: minmax(300px, 420px) minmax(0, 1fr);
    gap: 20px;
    align-items: start;
}

.ui-docs__back {
    display: none;
}

.ui-folder-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.ui-folder-tile {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 76px;
    padding: 14px;
    border: 1px solid var(--ui-border-subtle);
    border-radius: 12px;
    background: var(--ui-surface);
    color: var(--ui-text);
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.15s, background-color 0.15s;
}

.ui-folder-tile:hover {
    border-color: var(--ui-primary);
}

.ui-folder-tile.is-selected {
    border: 2px solid var(--ui-primary);
    padding: 13px;
    background: var(--ui-primary-soft);
}

.ui-folder-tile__icon {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: var(--ui-tone-amber-bg);
    color: #f5a524;
}

.ui-folder-tile__icon svg {
    fill: currentColor;
}

.ui-folder-tile__text {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.ui-folder-tile__name {
    font-size: 14.5px;
    font-weight: 500;
    overflow-wrap: break-word;
}

.ui-folder-tile__count {
    color: var(--ui-text-muted);
    font-size: 12.5px;
}

.ui-moo-tip {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-top: 18px;
    padding: 14px 16px;
    border-radius: 12px;
    background: var(--ui-primary-soft);
}

.ui-moo-tip__image {
    flex-shrink: 0;
    width: 52px;
    height: auto;
}

.ui-moo-tip__title {
    margin: 0 0 2px;
    color: var(--ui-primary);
    font-weight: 600;
    font-size: 14px;
}

.ui-moo-tip__text {
    margin: 0;
    color: var(--ui-text);
    font-size: 13.5px;
    line-height: 1.5;
}

.ui-doc-sections {
    display: flex;
    flex-direction: column;
    gap: 22px;
}

.ui-doc-section + .ui-doc-section,
.ui-doc-archive {
    padding-top: 20px;
    border-top: 1px solid var(--ui-border-subtle);
}

.ui-doc-section__header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 10px;
}

.ui-doc-section__title {
    margin: 0;
    color: var(--ui-text);
    font-size: 15px;
    font-weight: 600;
}

.ui-doc-section__text {
    margin: -4px 0 12px;
    color: var(--ui-text-muted);
    font-size: 13.5px;
    line-height: 1.5;
}

.ui-doc-archive summary {
    color: var(--ui-text-muted);
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
}

.ui-doc-archive[open] summary {
    margin-bottom: 12px;
}

.ui-doc-archive .ui-doc-section__header {
    display: none;
}

.ui-doc-list {
    list-style: none;
    margin: 0 0 14px;
    padding: 0;
}

.ui-doc-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid var(--ui-border-subtle);
}

.ui-doc-row:first-child {
    padding-top: 0;
}

.ui-doc-row:last-child {
    border-bottom: 0;
}

.ui-doc-row__text {
    display: flex;
    flex: 1;
    flex-direction: column;
    min-width: 0;
}

.ui-doc-row__title {
    color: var(--ui-text);
    font-size: 14.5px;
    font-weight: 500;
    overflow-wrap: anywhere;
}

.ui-doc-row__meta {
    color: var(--ui-text-muted);
    font-size: 12.5px;
}

.ui-doc-row__status {
    flex-shrink: 0;
}

.ui-doc-row__actions {
    display: flex;
    flex-shrink: 0;
    align-items: center;
    gap: 6px;
}

.ui-file-icon {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: var(--ui-tone-grey-bg);
    color: var(--ui-tone-grey-fg);
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.02em;
}

.ui-file-icon--pdf { background: var(--ui-tone-red-bg); color: var(--ui-tone-red-fg); }
.ui-file-icon--doc { background: var(--ui-tone-blue-bg); color: var(--ui-tone-blue-fg); }
.ui-file-icon--img { background: var(--ui-tone-green-bg); color: var(--ui-tone-green-fg); }
.ui-file-icon--item { background: var(--ui-primary-soft); color: var(--ui-primary); }

/* An invisible file input covers the zone, so files can be dropped on it or it can be clicked */
.ui-dropzone {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 28px 20px;
    border: 2px dashed var(--ui-checkbox-border);
    border-radius: 14px;
    color: var(--ui-text);
    text-align: center;
    transition: border-color 0.15s, background-color 0.15s;
}

.ui-dropzone:hover,
.ui-dropzone.is-dragging {
    border-color: var(--ui-primary);
    background: var(--ui-primary-soft);
}

.ui-dropzone__input {
    position: absolute;
    inset: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}

.ui-dropzone__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    margin-bottom: 4px;
    border-radius: 50%;
    background: var(--ui-primary-soft);
    color: var(--ui-primary);
}

.ui-dropzone__title {
    font-size: 15px;
    font-weight: 500;
}

.ui-dropzone__hint {
    color: var(--ui-text-muted);
    font-size: 13px;
}

.ui-dropzone__actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
    margin-top: 8px;
}

/* Above the covering input, so it opens the camera rather than the file picker; phones and tablets only */
.ui-dropzone__photo {
    position: relative;
    z-index: 2;
    display: none;
    cursor: pointer;
}

.ui-dropzone__camera {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

@media (pointer: coarse) {
    .ui-dropzone__photo,
    .ui-dropzone--compact .ui-dropzone__actions .ui-btn--primary.ui-btn--primary {
        display: inline-flex;
    }
}

.ui-dropzone__problems {
    position: relative;
    z-index: 2;
    margin: 8px 0 0;
    padding: 0;
    list-style: none;
    color: var(--ui-tone-red-fg);
    font-size: 13px;
}

.ui-dropzone.is-busy {
    border-style: solid;
    color: var(--ui-text-muted);
}

.ui-dropzone--compact {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    gap: 4px 12px;
    padding: 14px 16px;
    border-width: 1.5px;
    border-radius: 12px;
}

.ui-dropzone--compact .ui-dropzone__icon {
    width: 32px;
    height: 32px;
    margin: 0;
}

.ui-dropzone--compact .ui-dropzone__title {
    font-size: 14px;
}

.ui-dropzone--compact .ui-dropzone__hint {
    display: none;
}

.ui-dropzone--compact .ui-dropzone__actions {
    margin: 0;
}

.ui-dropzone--compact .ui-dropzone__actions .ui-btn--primary {
    display: none;
}

.ui-panel-subtitle {
    margin: 8px 0 -4px;
    color: var(--ui-text);
    font-size: 14px;
    font-weight: 600;
}

.ui-sign-step {
    display: flex;
    align-items: center;
    gap: 12px;
}

.ui-sign-step + .ui-sign-step {
    margin-top: 8px;
}

.ui-sign-step__number {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--ui-primary-soft);
    color: var(--ui-primary);
    font-size: 13px;
    font-weight: 600;
}

.ui-sign-step.is-done .ui-sign-step__number {
    background: var(--ui-tone-green-bg);
    color: var(--ui-tone-green-fg);
}

.ui-sign-step.is-waiting {
    opacity: 0.6;
}

.ui-sign-step__text {
    display: flex;
    flex: 1;
    flex-direction: column;
    font-size: 13px;
}

.ui-sign-step__title {
    color: var(--ui-text);
    font-size: 14.5px;
    font-weight: 500;
}

.ui-signature {
    border-radius: 12px;
    background: var(--ui-bg-subtle);
}

@media (max-width: 1199.98px) {
    .ui-docs {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
    }

    .ui-folder-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* Phones and small tablets: the folders, or a folder on its own with a way back */
@media (max-width: 991.98px) {
    .ui-docs {
        grid-template-columns: minmax(0, 1fr);
    }

    .ui-folder-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ui-docs.is-picked .ui-docs__side,
    .ui-docs:not(.is-picked) .ui-docs__main {
        display: none;
    }

    .ui-docs__back {
        display: inline-flex;
        align-items: center;
        gap: 4px;
        margin-bottom: 12px;
        padding: 6px 2px;
        border: 0;
        background: none;
        color: var(--ui-primary);
        font: inherit;
        font-weight: 500;
        cursor: pointer;
    }
}

@media (max-width: 575.98px) {
    .ui-folder-grid {
        grid-template-columns: minmax(0, 1fr);
        gap: 8px;
    }

    .ui-folder-tile {
        min-height: 0;
    }

    .ui-doc-row {
        flex-wrap: wrap;
    }

    .ui-doc-row__text {
        flex-basis: calc(100% - 52px);
    }

    .ui-doc-row__status {
        margin-left: 52px;
    }

    .ui-doc-row__actions {
        margin-left: auto;
    }
}

/* ---------- Diary ---------- */

.ui-diary {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 20px;
    align-items: start;
}

.ui-diary--shifts {
    grid-template-columns: minmax(0, 1fr);
}

.ui-diary__note {
    margin: 10px 4px 0;
    color: var(--ui-text-muted);
    font-size: 13px;
}

.ui-diary .ui-week-hours li {
    gap: 12px;
}

.ui-pre-line {
    white-space: pre-line;
}

/* Laptops and smaller: the calendar takes the full width and the side cards sit underneath, side by side */
@media (max-width: 1399.98px) {
    .ui-diary {
        grid-template-columns: minmax(0, 1fr);
    }

    .ui-diary__side {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        align-items: start;
    }
}

@media (max-width: 767.98px) {
    .ui-diary__side {
        grid-template-columns: minmax(0, 1fr);
    }

    /* The phone mockup keeps just "Add absence" in the header */
    .ui-diary__weekly {
        display: none;
    }
}

/* ---------- Timesheets ---------- */

.ui-ts-list {
    margin-bottom: 20px;
}

.ui-ts-list__toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    padding: 16px 20px;
    border-bottom: 1px solid var(--ui-border-subtle);
}

/* The table on bigger screens, a list on phones */
.ui-ts-list__cards {
    display: none;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-ts-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 18px;
    border-bottom: 1px solid var(--ui-border-subtle);
    color: var(--ui-text);
    text-decoration: none;
}

.ui-ts-list__cards li:last-child .ui-ts-card {
    border-bottom: 0;
}

.ui-ts-card__main {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.ui-ts-card__title {
    font-size: 15px;
    font-weight: 500;
}

.ui-ts-card__meta {
    color: var(--ui-text-muted);
    font-size: 13px;
}

.ui-ts-list__pager {
    padding: 12px 18px;
}

.ui-ts-steps {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-ts-step {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 16px;
    border-radius: 12px;
    background: var(--ui-bg-subtle);
}

.ui-ts-step__number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    margin-bottom: 6px;
    border-radius: 50%;
    background: var(--ui-primary);
    color: #fff;
    font-size: 13px;
    font-weight: 600;
}

.ui-ts-step__title {
    color: var(--ui-text);
    font-size: 15.5px;
    font-weight: 500;
}

.ui-ts-step__text {
    color: var(--ui-text-muted);
    font-size: 13.5px;
    line-height: 1.5;
}

.ui-ts-sent-back {
    border-left: 4px solid var(--ui-tone-red-fg);
}

.ui-ts-sent-back .ui-panel-text {
    margin-bottom: 12px;
}

@media (max-width: 1199.98px) {
    .ui-ts-steps {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767.98px) {
    .ui-ts-list__table {
        display: none;
    }

    .ui-ts-list__cards {
        display: block;
    }

    .ui-ts-list__toolbar {
        overflow-x: auto;
        flex-wrap: nowrap;
    }

    .ui-ts-steps {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* ---------- Timesheet editor ---------- */

.ui-tsx {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 340px;
    gap: 20px;
    align-items: start;
}

.ui-tsx__main {
    display: flex;
    flex-direction: column;
    gap: 20px;
    min-width: 0;
}

.ui-tsx__side {
    position: sticky;
    top: 20px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.ui-tsx-weeks__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.ui-tsx-week {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    padding: 9px 16px;
    border: 1px solid var(--ui-border);
    border-radius: 12px;
    background: var(--ui-surface);
    color: var(--ui-text);
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.ui-tsx-week:hover {
    border-color: var(--ui-primary);
}

.ui-tsx-week.is-selected {
    padding: 8px 15px;
    border: 2px solid var(--ui-primary);
    background: var(--ui-primary-soft);
    color: var(--ui-primary);
}

.ui-tsx-week.has-timesheet .ui-tsx-week__range {
    color: var(--ui-tone-green-fg);
}

.ui-tsx-week__title {
    font-size: 15px;
    font-weight: 500;
}

.ui-tsx-week__range {
    color: var(--ui-text-muted);
    font-size: 12px;
}

.ui-tsx-week__date {
    width: 140px;
    padding: 0;
    border: 0;
    background: none;
    color: var(--ui-text-muted);
    font: inherit;
    font-size: 12px;
}

.ui-tsx-weeks__hint {
    margin: 12px 0 0;
    color: var(--ui-text-muted);
    font-size: 13px;
}

/* The hours: a table-like grid on wide screens */
.ui-tsx-hours .ui-card__body {
    padding: 0;
}

.ui-tsx-head,
.ui-tsx-day {
    display: grid;
    grid-template-columns: 120px 64px 104px 104px 84px 220px minmax(110px, 1fr) 64px;
    align-items: center;
    gap: 10px 12px;
    padding: 10px 20px;
}

.ui-tsx-head {
    padding-top: 12px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--ui-border-subtle);
    color: var(--ui-text-muted);
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.ui-tsx-head span:last-child,
.ui-tsx-day__hours {
    text-align: right;
}

.ui-tsx-day {
    border-bottom: 1px solid var(--ui-border-subtle);
}

.ui-tsx-day:last-child {
    border-bottom: 0;
}

.ui-tsx-day__name {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.ui-tsx-day__weekday {
    color: var(--ui-text);
    font-size: 14.5px;
    font-weight: 500;
}

.ui-tsx-day__date {
    color: var(--ui-text-muted);
    font-size: 12.5px;
}

.ui-tsx-day:not(.is-worked) .ui-tsx-day__weekday {
    color: var(--ui-text-faint);
}

.ui-tsx-day__summary,
.ui-tsx-cell__label,
.ui-tsx-day__more {
    display: none;
}

.ui-tsx-cell {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.ui-tsx-cell .ui-input {
    width: 100%;
    min-width: 0;
}

.ui-tsx-cell .ui-input:disabled {
    background: var(--ui-bg-subtle);
    color: var(--ui-text-faint);
}

.ui-tsx-overtime {
    display: flex;
    align-items: center;
    gap: 6px;
}

.ui-tsx-overtime__to {
    color: var(--ui-text-muted);
    font-size: 12.5px;
}

.ui-tsx-day__hours {
    color: var(--ui-text);
    font-size: 14.5px;
    font-weight: 500;
}

.ui-tsx-day:not(.is-worked) .ui-tsx-day__hours {
    color: var(--ui-text-faint);
}

.ui-tsx-day__problem {
    grid-column: 1 / -1;
    margin: -2px 0 0;
    color: var(--ui-tone-red-fg);
    font-size: 13px;
}

.ui-tsx-day.has-problem {
    background: color-mix(in srgb, var(--ui-tone-red-bg) 40%, transparent);
}

.ui-tsx-summary {
    display: flex;
    flex-direction: column;
    padding: 20px 22px;
}

.ui-tsx-summary__week {
    color: var(--ui-text-muted);
    font-size: 13.5px;
}

.ui-tsx-summary__total {
    margin-top: 2px;
    color: var(--ui-text);
    font-size: 40px;
    font-weight: 600;
    line-height: 1.15;
}

.ui-tsx-summary__label {
    color: var(--ui-text-muted);
    font-size: 13.5px;
}

.ui-tsx-summary__facts {
    display: grid;
    grid-template-columns: auto 1fr;
    margin: 14px 0 16px;
}

.ui-tsx-summary__facts dt,
.ui-tsx-summary__facts dd {
    margin: 0;
    padding: 10px 0;
    border-bottom: 1px solid var(--ui-border-subtle);
    font-size: 14.5px;
}

.ui-tsx-summary__facts dt {
    color: var(--ui-text-muted);
}

.ui-tsx-summary__facts dd {
    color: var(--ui-text);
    text-align: right;
}

.ui-tsx-summary__submit,
.ui-tsx-summary__draft {
    justify-content: center;
    width: 100%;
}

.ui-tsx-summary__submit {
    min-height: 44px;
}

.ui-tsx-summary__draft {
    margin-top: 6px;
}

.ui-tsx-summary__hint {
    margin-top: 8px;
    color: var(--ui-text-muted);
    font-size: 12.5px;
    text-align: center;
}

/* Shown instead of the side card on laptops, tablets and phones */
.ui-tsx-bar,
.ui-tsx-draft-inline {
    display: none;
}

.ui-tsx-done {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 48px 24px;
    text-align: center;
}

.ui-tsx-done__title {
    margin: 4px 0 8px;
    color: var(--ui-text);
    font-size: 26px;
    font-weight: 500;
}

.ui-tsx-done__text {
    max-width: 640px;
    margin: 0 0 18px;
    color: var(--ui-text-muted);
    font-size: 15px;
}

.ui-tsx-done__actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
}

@media (max-width: 1399.98px) {
    .ui-tsx {
        grid-template-columns: minmax(0, 1fr);
    }

    .ui-tsx__side {
        display: none;
    }

    .ui-tsx-bar {
        position: sticky;
        bottom: 0;
        z-index: 40;
        display: flex;
        align-items: center;
        gap: 10px;
        margin-top: 20px;
        padding: 14px 20px;
        border: 1px solid var(--ui-border);
        border-radius: 16px;
        background: var(--ui-surface);
        box-shadow: 0 -4px 20px rgba(16, 24, 40, 0.08);
    }

    .ui-tsx-bar__total {
        display: flex;
        flex: 1;
        flex-direction: column;
        min-width: 0;
    }

    .ui-tsx-bar__hours {
        color: var(--ui-text);
        font-size: 24px;
        font-weight: 500;
        line-height: 1.2;
    }

    .ui-tsx-bar__meta {
        color: var(--ui-text-muted);
        font-size: 13px;
    }

    .ui-tsx-bar__submit {
        min-width: 140px;
        min-height: 46px;
        justify-content: center;
        font-size: 16px;
    }
}

/* Below about 1340px the table no longer fits beside the menu, so it becomes the phone design's day cards */
@media (max-width: 1339.98px) {
    .ui-tsx-head {
        display: none;
    }

    .ui-tsx-day {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 10px 12px;
        padding: 16px 20px;
    }

    .ui-tsx-day__name {
        grid-column: 1 / 3;
    }

    .ui-tsx-day__weekday {
        font-size: 17px;
    }

    .ui-tsx-day__date {
        font-size: 13.5px;
    }

    .ui-tsx-day__summary,
    .ui-tsx-cell__label {
        display: inline;
    }

    .ui-tsx-cell__label {
        color: var(--ui-text-muted);
        font-size: 13px;
    }

    .ui-tsx-day__switch {
        grid-column: 3;
        justify-self: end;
    }

    .ui-tsx-day__hours {
        display: none;
    }

    .ui-tsx-cell--overtime,
    .ui-tsx-cell--notes {
        display: none;
        grid-column: 1 / -1;
    }

    .ui-tsx-cell--overtime.is-open,
    .ui-tsx-cell--notes.is-open {
        display: flex;
    }

    .ui-tsx-overtime .ui-input {
        flex: 1;
    }

    .ui-tsx-day__more {
        display: flex;
        flex-wrap: wrap;
        gap: 6px 16px;
        grid-column: 1 / -1;
    }

    .ui-tsx-day__more:empty {
        display: none;
    }

    /* Days not worked show just the name and the switch */
    .ui-tsx-day:not(.is-worked) .ui-tsx-cell--time,
    .ui-tsx-day:not(.is-worked) .ui-tsx-cell--break,
    .ui-tsx-day:not(.is-worked) .ui-tsx-cell--overtime {
        display: none;
    }
}

@media (max-width: 767.98px) {
    .ui-tsx-weeks__chips {
        flex-wrap: nowrap;
        margin: 0 -20px;
        padding: 0 20px 4px;
        overflow-x: auto;
    }

    .ui-tsx-week {
        flex: none;
    }

    /* Above the phone tab bar */
    .ui-tsx-bar {
        position: fixed;
        right: 0;
        bottom: calc(64px + env(safe-area-inset-bottom));
        left: 0;
        margin: 0;
        padding: 12px 16px;
        border-width: 1px 0 0;
        border-radius: 0;
    }

    .ui-tsx-bar__draft {
        display: none;
    }

    .ui-tsx-draft-inline.ui-tsx-draft-inline {
        display: inline-flex;
        align-self: center;
    }

    .ui-tsx-bar__hours {
        white-space: nowrap;
    }

    .ui-tsx {
        padding-bottom: 84px;
    }
}

/* ---------- CV ---------- */

.ui-cv-grid {
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
    gap: 20px;
    align-items: start;
}

.ui-cv-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

/* Entries hang off a line, like a timeline */
.ui-cv-item {
    position: relative;
    display: flex;
    gap: 14px;
    padding-bottom: 18px;
}

.ui-cv-item:last-child {
    padding-bottom: 0;
}

.ui-cv-item:not(:last-child)::before {
    content: "";
    position: absolute;
    top: 14px;
    bottom: 0;
    left: 5px;
    width: 2px;
    background: var(--ui-border-subtle);
}

.ui-cv-item__dot {
    flex-shrink: 0;
    width: 12px;
    height: 12px;
    margin-top: 4px;
    border: 2px solid var(--ui-primary);
    border-radius: 50%;
    background: var(--ui-surface);
}

.ui-cv-item__main {
    flex: 1;
    min-width: 0;
}

.ui-cv-item__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
}

.ui-cv-item__text {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.ui-cv-item__title {
    color: var(--ui-text);
    font-weight: 600;
    font-size: 15px;
    overflow-wrap: anywhere;
}

.ui-cv-item__institution {
    color: var(--ui-text-muted);
    font-size: 14px;
    overflow-wrap: anywhere;
}

.ui-cv-item__actions {
    display: flex;
    flex-shrink: 0;
    gap: 4px;
}

.ui-cv-item__dates {
    display: block;
    margin-top: 4px;
    color: var(--ui-text-faint);
    font-size: 13px;
}

.ui-cv-item__description {
    margin: 8px 0 0;
    color: var(--ui-text);
    font-size: 14px;
    line-height: 1.5;
    white-space: pre-line;
    overflow-wrap: anywhere;
}

@media (max-width: 991.98px) {
    .ui-cv-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 1399.98px) {
    .ui-profile-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    /* The third column's cards join the first two */
    .ui-profile-grid > .ui-stack:last-child {
        grid-column: span 2;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        align-items: start;
    }

    .ui-profile-header {
        flex-wrap: wrap;
    }

    .ui-profile-header__contacts {
        width: 100%;
        padding-top: 14px;
        border-top: 1px solid var(--ui-border-subtle);
    }
}

@media (max-width: 991.98px) {
    .ui-profile-card__steps {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 767.98px) {
    /* The tab bar replaces the slide-out menu; the top bar becomes part of the hero */
    .ui-shell.has-mobile-tabs .ui-sidebar,
    .ui-shell.has-mobile-tabs .ui-topbar__toggle,
    .ui-shell.has-mobile-tabs .ui-user__text {
        display: none;
    }

    .ui-shell.has-mobile-tabs .ui-topbar {
        height: 64px;
        border-bottom: 0;
        background: var(--ui-hero-bg);
        background-attachment: fixed;
    }

    .ui-shell.has-mobile-tabs .ui-topbar__brand {
        display: inline-flex;
        margin-right: auto;
    }

    .ui-shell.has-mobile-tabs .ui-topbar__brand img {
        height: 30px;
        width: auto;
    }

    .ui-shell.has-mobile-tabs .ui-topbar__spacer {
        display: none;
    }

    .ui-shell.has-mobile-tabs .ui-topbar .ui-icon-button {
        background: rgba(255, 255, 255, 0.18);
        color: #ffffff;
    }

    .ui-shell.has-mobile-tabs .ui-content {
        padding-bottom: calc(96px + env(safe-area-inset-bottom));
    }

    .ui-shell.has-mobile-tabs .ui-hero {
        background-attachment: fixed;
    }

    .ui-mobile-tabs {
        position: fixed;
        right: 0;
        bottom: 0;
        left: 0;
        z-index: 50;
        display: flex;
        padding: 0 4px env(safe-area-inset-bottom);
        border-top: 1px solid var(--ui-border);
        background: var(--ui-surface);
        box-shadow: 0 -4px 20px rgba(16, 24, 40, 0.06);
    }

    .ui-hero-agency {
        display: inline-flex;
        align-items: center;
        gap: 10px;
        margin-top: 14px;
        padding: 6px 16px 6px 6px;
        border-radius: 999px;
        background: rgba(255, 255, 255, 0.16);
        color: var(--ui-on-brand);
    }

    .ui-hero-agency .ui-agency-card__initials {
        width: 30px;
        height: 30px;
        border-radius: 50%;
        background: #ffffff;
        color: var(--ui-primary);
        font-size: 11px;
    }

    .ui-hero-agency .ui-agency-card__row {
        gap: 10px;
    }

    /* With a logo the chip shows it on a small white pill in place of the initials */
    .ui-hero-agency.has-logo .ui-agency-card__initials {
        display: none;
    }

    .ui-hero-agency .ui-agency-card__logo {
        height: 30px;
        max-width: 110px;
        padding: 4px 10px;
        border-radius: 999px;
    }

    .ui-contractor-hero-actions {
        display: none;
    }

    /* Dashboard: profile, shortcuts, next shift, this week, one contact */
    .ui-contractor-home {
        grid-template-columns: minmax(0, 1fr);
        gap: 16px;
    }

    .ui-contractor-home__profile {
        grid-column: auto;
    }

    .ui-contractor-home__quick,
    .ui-contractor-home__contact-mobile {
        display: block;
    }

    .ui-contractor-home__contacts,
    .ui-contractor-home__extra {
        display: none;
    }

    .ui-profile-card__head {
        gap: 16px;
        padding: 18px;
    }

    .ui-profile-card .ui-progress-ring {
        width: 80px;
        height: 80px;
    }

    .ui-shell .ui-profile-card__title {
        font-size: 19px;
    }

    .ui-profile-card__open,
    .ui-profile-card__steps {
        display: none;
    }

    .ui-profile-card__mobile {
        display: block;
        padding: 0 18px;
    }

    .ui-profile-card__mobile .ui-step:last-of-type {
        border-bottom: 0;
    }

    .ui-profile-card__all {
        margin: 0 -18px;
        width: calc(100% + 36px);
    }

    .ui-next-shift__empty {
        flex-direction: row;
        align-items: flex-start;
        gap: 14px;
        text-align: left;
    }

    .ui-next-shift__moo {
        width: 76px;
        height: 76px;
    }

    .ui-shell .ui-next-shift__heading {
        margin-top: 0;
    }

    .ui-next-shift__empty .ui-next-shift__button {
        display: none;
    }

    .ui-week-card__absence {
        display: inline-flex;
    }

    .ui-week-card .ui-card__meta,
    .ui-week-card__hint,
    .ui-week__name,
    .ui-week__state {
        display: none;
    }

    .ui-week__letter,
    .ui-week__dot {
        display: block;
    }

    .ui-week__letter {
        color: var(--ui-text-muted);
        font-size: 13px;
    }

    .ui-week__day.is-today .ui-week__letter {
        color: var(--ui-primary);
    }

    .ui-week__dot {
        width: 7px;
        height: 7px;
        margin-top: 4px;
        border-radius: 50%;
        background: #8cc63f;
    }

    /* Profile: one column, a smaller header */
    .ui-profile-grid,
    .ui-profile-grid > .ui-stack:last-child {
        grid-template-columns: minmax(0, 1fr);
        grid-column: auto;
        gap: 16px;
    }

    .ui-profile-header {
        align-items: flex-start;
        gap: 14px;
        padding: 16px;
    }

    .ui-shell .ui-profile-header__name {
        font-size: 20px;
    }

    .ui-profile-header__facts {
        flex-direction: column;
    }

    .ui-profile-header__contacts {
        flex-direction: column;
        gap: 12px;
    }

    .ui-availability-day {
        grid-template-columns: minmax(0, 1fr) auto;
        padding: 8px 0;
    }

    .ui-availability-day__times {
        grid-column: span 2;
    }

    .ui-availability-day__times .ui-input {
        flex: 1;
        width: auto;
    }

    .ui-week__day.is-booked .ui-week__dot { background: var(--ui-primary); }
    .ui-week__day.is-away .ui-week__dot { background: #f5b524; }
    .ui-week__day.is-unavailable .ui-week__dot { background: var(--ui-checkbox-border); }
}
