/* Poslední vrstva společných oprav rozvržení. */
.closure-protocol,
.closure-protocol section,
.protocol-header > * {
    min-width: 0;
}

.closure-protocol section > table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scrollbar-gutter: stable;
}

.closure-protocol section > table td {
    overflow-wrap: anywhere;
}

@media (max-width: 650px) {
    .closure-protocol {
        padding: 16px;
    }

    .protocol-summary {
        grid-template-columns: 1fr 1fr;
    }

    .signature-lines {
        grid-template-columns: 1fr;
        gap: 38px;
    }
}

@media print {
    .closure-protocol section > table {
        display: table;
        overflow: visible;
    }

    .closure-protocol section > table td {
        overflow-wrap: normal;
    }
}

/* Společná ochrana proti přetékání formulářů a dlouhého obsahu. */
input:not([type="checkbox"]):not([type="radio"]),
select,
textarea {
    min-width: 0;
    max-width: 100%;
}

label > input:not([type="checkbox"]):not([type="radio"]),
label > select,
label > textarea {
    width: 100%;
}

.form-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.form-grid > .form-wide {
    grid-column: span 2;
}

.actions {
    max-width: 100%;
    flex-wrap: wrap;
}

button,
.button {
    display: inline-flex;
    min-width: 0;
    max-width: 100%;
    align-items: center;
    justify-content: center;
    line-height: 1.25;
    text-align: center;
    white-space: normal;
    overflow-wrap: anywhere;
}

pre {
    max-width: 100%;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.month-employee-group {
    margin: 0;
    padding: 6px 10px;
    border: 1px solid var(--line);
    border-top: 0;
    border-bottom: 0;
    border-left: 3px solid var(--brand);
    border-radius: 0;
    background: #f4f5f7;
    font-size: 14px;
    line-height: 1.15;
}

.month-day.state-unavailable,
.month-day.outside-assignment {
    background: #e4e7ec !important;
    color: #98a2b3 !important;
    box-shadow: none !important;
    cursor: not-allowed;
}

.month-day.outside-assignment span,
.month-day.outside-assignment small {
    color: #98a2b3;
}

.legend-unavailable {
    background: #e4e7ec;
    color: #667085;
}

.legend-mixed {
    background: linear-gradient(90deg, #e8f4df 0 68%, #dbeafe 68% 100%);
    color: #355a1d;
}

/* Měsíční plán má jeden společný řádek dat a pod ním pouze hodnoty zaměstnanců. */
.month-plan-scroll {
    width: 100%;
    margin-top: 12px;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: thin;
}

.month-plan-scroll .month-plan-list {
    min-width: 0;
    margin-top: 0;
}

.month-date-header,
.month-sales-row,
.month-plan .month-employee {
    display: grid;
    grid-template-columns: 164px minmax(0, 1fr);
}

.month-date-header {
    position: sticky;
    top: 0;
    z-index: 5;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 10px 10px 0 0;
    background: #fff;
}

.month-plan-list > .month-employee:last-child {
    border-radius: 0 0 10px 10px;
}

.month-date-label {
    display: flex;
    min-width: 0;
    align-items: center;
    padding: 7px 9px;
    border-right: 1px solid var(--line);
    background: #f7f5f3;
    font-size: 12px;
    font-weight: 800;
}

.month-date-row,
.month-sales-days,
.month-plan .month-row {
    display: grid;
    min-width: 0;
    grid-template-columns: repeat(var(--days), minmax(0, 1fr));
}

.month-sales-row {
    overflow: hidden;
    border-right: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
    border-left: 1px solid var(--line);
    background: #fff;
}

.month-sales-summary {
    display: flex;
    min-width: 0;
    min-height: 60px;
    padding: 5px 8px;
    align-items: flex-start;
    justify-content: center;
    flex-direction: column;
    gap: 1px;
    border: 0;
    border-right: 1px solid var(--line);
    border-radius: 0;
    background: #f7f5f3;
    color: var(--ink);
    text-align: left;
}

.month-sales-summary strong,
.month-sales-summary span,
.month-sales-summary small {
    display: block;
    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.month-sales-summary strong {
    font-size: 12px;
    line-height: 1.15;
}

.month-sales-summary span,
.month-sales-summary small {
    font-size: 9px;
    line-height: 1.15;
}

.month-sales-row.is-balanced .month-sales-summary {
    box-shadow: inset 4px 0 #4f7f2c;
    background: #eef8e8;
}

.month-sales-row.is-under .month-sales-summary {
    box-shadow: inset 4px 0 #d97706;
    background: #fff8e8;
}

.month-sales-row.is-over .month-sales-summary {
    box-shadow: inset 4px 0 var(--brand);
    background: #fff0f1;
}

.month-sales-row.has-no-target .month-sales-summary {
    box-shadow: inset 4px 0 #8a8582;
}

.month-sales-summary:not(:disabled):hover,
.month-sales-day:not(:disabled):hover {
    background: #edf5ff;
    color: var(--ink);
}

.month-sales-summary:disabled,
.month-sales-day:disabled {
    cursor: default;
    opacity: 1;
}

.month-sales-day {
    display: grid;
    min-width: 0;
    min-height: 60px;
    padding: 2px 1px;
    place-items: center;
    border: 0;
    border-right: 1px solid var(--line);
    border-radius: 0;
    background: #fff;
    color: var(--ink);
    line-height: 1;
}

.month-sales-day span {
    max-width: 100%;
    font-size: 8px;
    font-weight: 750;
    line-height: 1.15;
    overflow-wrap: anywhere;
    text-align: center;
}

.month-sales-day.is-empty span {
    color: var(--muted);
    font-weight: 500;
}

.month-sales-day.weekend {
    background: #f7f8fa;
    box-shadow: inset 0 3px #c9c5c2;
}

.month-sales-day.holiday {
    box-shadow: inset 0 3px var(--brand);
}

.month-sales-day:last-of-type {
    border-right: 0;
}

.month-sales-signature-spacer {
    display: none;
    min-width: 0;
    border-left: 1px solid var(--line);
    background: #fff;
}

.sales-target-editor {
    width: min(520px, calc(100vw - 32px));
}

.sales-target-editor label {
    display: grid;
    gap: 6px;
    margin-top: 18px;
}

.staffing-row-actions {
    display: flex;
    align-items: center;
    gap: 7px;
    flex-wrap: wrap;
}

.staffing-row-actions form {
    margin: 0;
}

.month-signature-heading,
.month-signature-cell {
    display: none;
    min-width: 0;
    background: #fff;
}

.month-signature-heading {
    min-height: 38px;
    align-items: center;
    justify-content: center;
    padding: 3px 5px;
    font-size: 9px;
    font-weight: 800;
    text-align: center;
}

.month-signature-cell {
    height: 60px;
    align-items: flex-end;
    padding: 0 7px 8px;
}

.month-signature-cell::after {
    width: 100%;
    border-bottom: 1px solid #9d9692;
    content: "";
}

.month-date {
    position: relative;
    display: flex;
    min-width: 0;
    min-height: 38px;
    padding: 0;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 1px;
    border: 0;
    border-right: 1px solid var(--line);
    border-radius: 0;
    background: #fff;
    color: var(--ink);
    cursor: pointer;
    line-height: 1;
}

.month-date:last-child {
    border-right: 0;
}

.month-date span {
    color: var(--muted);
    font-size: 8px;
    text-transform: uppercase;
}

.month-date strong {
    font-size: 12px;
}

.month-date.weekend {
    box-shadow: inset 0 3px #c9c5c2;
}

.month-date.holiday {
    box-shadow: inset 0 3px var(--brand);
}

.month-date:hover,
.month-date:focus-visible {
    background: #edf5ff;
    color: var(--ink);
}

.month-date:focus-visible {
    z-index: 2;
    outline: 2px solid #2468a2;
    outline-offset: -2px;
}

.month-date.is-column-selected,
.month-sales-day.is-column-selected,
.month-day.is-column-selected {
    z-index: 1;
    outline: 2px solid #2468a2;
    outline-offset: -2px;
}

.month-plan .month-employee > header {
    height: 60px;
    min-height: 60px;
}

.month-employee-violations {
    display: grid;
    grid-column: 1 / -1;
    grid-template-columns: 164px minmax(0, 1fr);
    border-top: 1px solid #efb5b5;
    background: #fff4f3;
    color: #8b1d1d;
}

.month-employee-violations.has-warning {
    border-top-color: #efb5b5;
    background: #fff4f3;
    color: #8b1d1d;
}

.plan-operational-violations {
    margin: 0 0 10px;
    border: 1px solid #efb5b5;
    border-radius: 8px;
    overflow: hidden;
}

.plan-operational-violations .month-employee-violation-list {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
}

.plan-operational-violations .month-employee-violation-detailed {
    max-width: none;
    width: 100%;
    flex: 1 1 100%;
    gap: 1px;
}

.operational-warning-line {
    display: grid;
    width: 100%;
    min-width: 0;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: baseline;
    gap: 4px 18px;
}

.operational-warning-facts {
    display: flex;
    align-items: baseline;
    gap: 12px;
}

.operational-warning-detail .validation-source {
    text-align: right;
}

.shift-template-identity {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap;
}

.shift-template-identity .color-sample {
    flex: 0 0 18px;
    margin: 0;
}

.staffing-change-dialog {
    width: min(820px, calc(100vw - 32px));
}

.form-grid.staffing-change-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding: 20px 22px;
}

.staffing-change-actions {
    display: flex;
    grid-column: 1 / -1;
    justify-content: flex-end;
    gap: 10px;
}

.month-employee-violations > strong {
    display: flex;
    min-width: 0;
    padding: 6px 8px;
    align-items: center;
    border-right: 1px solid currentColor;
    font-size: 10px;
    line-height: 1.2;
}

.month-employee-violation-list {
    display: flex;
    min-width: 0;
    padding: 5px 8px;
    align-items: stretch;
    flex-wrap: wrap;
    gap: 4px 12px;
}

.month-employee-violation {
    display: grid;
    min-width: 210px;
    flex: 1 1 320px;
    grid-template-columns: auto minmax(150px, 1fr) auto;
    align-items: baseline;
    gap: 4px 7px;
    font-size: 10px;
    line-height: 1.25;
}

.month-employee-violation b,
.month-employee-violation small {
    white-space: nowrap;
}

.month-employee-violation small {
    color: inherit;
    font-weight: 700;
}

.month-employee-violation-detailed {
    display: flex;
    max-width: 680px;
    flex: 0 1 680px;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
}

.month-employee-violation-heading {
    display: flex;
    max-width: 100%;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 3px 8px;
}

.month-employee-violation-heading strong {
    font-size: inherit;
}

.month-employee-violation-message,
.month-employee-violation-detailed small {
    display: block;
    max-width: 100%;
    white-space: normal;
}

.plan-operational-violations .operational-warning-facts small,
.plan-operational-violations .operational-warning-detail .validation-source {
    white-space: nowrap;
}

@media (max-width: 900px) {
    .operational-warning-line {
        grid-template-columns: minmax(0, 1fr);
    }

    .operational-warning-facts {
        flex-wrap: wrap;
    }

    .operational-warning-detail .validation-source {
        text-align: left;
    }

    .plan-operational-violations .operational-warning-facts small,
    .plan-operational-violations .operational-warning-detail .validation-source {
        white-space: normal;
    }

    .form-grid.staffing-change-form {
        grid-template-columns: minmax(0, 1fr);
    }
}

.month-plan .month-day {
    position: relative;
    display: grid;
    height: 60px;
    padding: 2px 1px;
    grid-template-rows: 15px minmax(0, 1fr) 25px;
    place-items: center;
    gap: 0;
    overflow: hidden;
    text-align: center;
}

.month-day.state-mixed {
    background: #edf7e7;
    color: #355a1d;
}

.month-shift-times {
    position: absolute;
    left: 50%;
    bottom: 3px;
    transform: translateX(-50%);
    display: flex;
    width: calc(100% - 2px);
    min-width: 0;
    align-items: flex-end;
    justify-content: center;
    gap: 1px;
    text-align: center;
}

.month-plan .month-day .month-shift-time {
    display: flex;
    flex: 0 1 auto;
    min-width: 0;
    align-items: center;
    justify-content: flex-end;
    flex-direction: column;
    gap: 0;
    color: inherit;
    font-size: 9px;
    line-height: 1;
    text-align: center;
    text-transform: none;
    white-space: nowrap;
}

.month-shift-times.is-multiple .month-shift-time {
    flex: 1 1 0;
}

.month-shift-times.is-multiple .month-shift-time b {
    font-size: 7px;
    line-height: 8px;
}

.month-shift-times.is-multiple .month-shift-time i {
    height: 4px;
    font-size: 6px;
    line-height: 4px;
}

.month-shift-time b {
    font-size: 9px;
    font-weight: 800;
    line-height: 9px;
}

.month-shift-time i {
    height: 6px;
    font-size: 7px;
    font-style: normal;
    line-height: 6px;
}

.month-day.has-foreign-shift {
    background: #edf3f8;
}

.month-day.foreign-only-shift {
    color: #526579;
}

.month-shift-time.is-foreign {
    color: #526579;
}

.month-plan .month-day .month-shift-time.has-template-color {
    padding: 2px 3px;
    border-radius: 4px;
    background: var(--shift-color);
    color: var(--shift-ink);
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.month-shift-times.is-multiple .month-shift-time.has-template-color {
    padding-right: 1px;
    padding-left: 1px;
}

.month-absence-marks {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 2px;
    max-width: calc(100% - 2px);
}

.month-absence-marks.with-shift {
    top: 2px;
}

.month-absence-mark {
    min-width: 0;
    color: var(--absence-color);
    line-height: 1;
}

.month-absence-marks.with-shift .month-absence-mark {
    display: flex;
    flex: 0 0 14px;
    width: 14px;
    height: 14px;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: var(--absence-color);
    color: #fff;
}

.month-absence-marks.with-shift .month-absence-mark b {
    font-size: 7px;
}

.month-absence-marks.with-shift .month-foreign-lock-mark {
    display: flex;
    flex: 0 0 14px;
    width: 14px;
    height: 14px;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: #d97706;
    color: #fff;
}

.month-foreign-lock-mark b {
    font-size: 7px;
    line-height: 1;
}

.month-absence-marks.without-shift {
    top: 50%;
    transform: translate(-50%, -50%);
}

.month-absence-marks.without-shift .month-absence-mark {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 3px;
}

.month-absence-marks.without-shift .month-absence-mark b {
    display: inline-flex;
    min-width: 20px;
    min-height: 20px;
    align-items: center;
    justify-content: center;
    padding: 3px;
    border-radius: 999px;
    background: var(--absence-color);
    color: #fff;
    font-size: 9px;
}

.month-absence-marks.without-shift .month-absence-mark small {
    max-width: 100%;
    font-size: 7px;
    white-space: nowrap;
}

.month-empty-mark {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    color: var(--muted);
    font-size: 10px;
    line-height: 1;
}

@media (max-width: 900px) {
    .month-plan-scroll .month-plan-list {
        min-width: calc(145px + var(--days) * 32px);
    }

    .month-date-header,
    .month-sales-row,
    .month-plan .month-employee {
        grid-template-columns: 145px minmax(0, 1fr);
        overflow: visible;
    }

    .month-employee-violations {
        grid-template-columns: 145px minmax(0, 1fr);
    }

    .month-date-label,
    .month-sales-summary,
    .month-plan .month-employee > header {
        position: sticky;
        left: 0;
        z-index: 4;
    }

    .month-date-label {
        z-index: 6;
    }

    .month-plan .month-row,
    .month-sales-days,
    .month-date-row {
        min-width: 0;
        grid-template-columns: repeat(var(--days), minmax(0, 1fr));
    }

    .month-employee-violation {
        grid-template-columns: 1fr;
        gap: 2px;
    }
}

/* Editor jednoho dne má vlastní pružnou mřížku a svislé rolování. */
.day-editor {
    width: min(760px, calc(100vw - 32px));
    max-width: calc(100vw - 32px);
    max-height: calc(100vh - 32px);
    overflow: hidden;
}

.day-editor > form {
    width: 100%;
    max-width: 100%;
    max-height: calc(100vh - 32px);
    padding: 22px;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.day-editor .dialog-heading {
    flex-wrap: nowrap;
}

.day-editor .dialog-heading > div {
    min-width: 0;
}

.day-editor .dialog-heading p {
    margin-bottom: 0;
    overflow-wrap: anywhere;
}

.day-editor .dialog-shift-grid,
.day-editor .dialog-absence-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.day-editor .dialog-absence-grid > .form-wide {
    grid-column: 1 / -1;
    width: 100%;
}

.day-editor .dialog-absence-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.employee-loan-search-wrap {
    position: relative;
}

.employee-loan-results {
    top: calc(100% - 18px);
    width: min(520px, calc(100vw - 48px));
}

.day-editor .shift-live-summary {
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
}

.day-editor .dialog-note {
    margin-top: 2px;
}

.day-editor .dialog-close-icon {
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    padding: 0;
    background: transparent;
    color: var(--ink);
    font-size: 25px;
    line-height: 1;
}

.day-editor .dialog-actions .dialog-close {
    flex: 0 0 auto;
    width: auto;
    height: auto;
    min-width: 88px;
    margin-left: auto;
    padding: 10px 15px;
    background: #475467;
    color: #fff;
    font-size: inherit;
    white-space: nowrap;
}

.day-editor .dialog-actions .dialog-close:hover {
    background: #344054;
}

/* Jednotné zarovnání formulářů: popisek je nad polem a akce začíná
   ve stejné výšce jako vstup, i když má některé pole doplňující nápovědu. */
main form input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),
main form select,
main form button,
main form .button {
    min-height: 40px;
}

form.actions {
    align-items: flex-end;
}

/* Schvalování uzávěrek: hlavní ovládání využije celou šířku karty
   a na užších obrazovkách se bezpečně složí pod sebe. */
.approval-card {
    gap: 10px;
    padding: 16px 20px;
}

.approval-card-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.approval-card-heading h2 {
    margin: 0 0 6px;
}

.approval-card .approval-form {
    grid-template-columns: minmax(280px, .85fr) minmax(360px, 1.5fr) auto;
    gap: 10px 14px;
    align-items: end;
}

.approval-form .approval-action-choice {
    grid-column: 1;
    grid-row: 1;
}

.approval-form .approval-comment {
    grid-column: 2;
    grid-row: 1;
}

.approval-form .approval-comment textarea {
    height: 40px;
    min-height: 40px;
}

.approval-form .approval-submit {
    grid-column: 3;
    grid-row: 1;
}

.approval-form .approval-submit button {
    white-space: nowrap;
}

.approval-form .return-details {
    grid-column: 1 / -1;
    grid-row: 2;
    margin: 2px 0 0;
}

.approval-card > details {
    margin-top: 2px;
}

@media (max-width: 900px) {
    .approval-card .approval-form {
        grid-template-columns: minmax(220px, .9fr) minmax(280px, 1.1fr);
    }

    .approval-form .approval-submit {
        grid-column: 1 / -1;
        grid-row: 2;
    }

    .approval-form .return-details {
        grid-row: 3;
    }
}

@media (max-width: 620px) {
    .approval-card {
        padding: 14px;
    }

    .approval-card-heading {
        align-items: stretch;
        flex-direction: column;
    }

    .approval-card-heading > .button {
        width: 100%;
    }

    .approval-card .approval-form {
        grid-template-columns: 1fr;
    }

    .approval-form .approval-action-choice,
    .approval-form .approval-comment,
    .approval-form .approval-submit,
    .approval-form .return-details {
        grid-column: 1;
        grid-row: auto;
    }

    .approval-form .approval-submit button {
        width: 100%;
    }
}

.month-day.has-shift:not(.has-absence) .month-shift-times {
    top: 50%;
    bottom: auto;
    align-items: center;
    transform: translate(-50%, -50%);
}

.month-day.has-shift.has-absence .month-absence-marks.with-shift {
    top: 7px;
}

.month-day.has-shift.has-absence .month-shift-times {
    top: 22px;
    bottom: auto;
}

.month-day.has-shift.has-foreign-shift .month-absence-marks.with-shift {
    top: 7px;
}

.month-day.has-shift.has-foreign-shift .month-shift-times {
    top: 22px;
    bottom: auto;
    transform: translateX(-50%);
}

.schedule-publication-actions {
    align-items: flex-end;
}

.schedule-publication-actions.is-first-publication {
    flex: 0 0 auto;
}

.schedule-publication-actions.is-first-publication > form {
    display: flex;
    width: auto;
    align-items: center;
}

.schedule-publication-actions > form {
    margin: 0;
}

.schedule-publication-actions .late-publication-form {
    display: grid;
    width: min(620px, 52vw);
    grid-template-columns: minmax(300px, 1fr) auto;
    align-items: end;
}

.late-publication-form textarea {
    width: 100%;
    min-height: 64px;
    resize: vertical;
}

.month-plan-title-line {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.month-plan-heading {
    display: grid;
    grid-template-columns: minmax(0, 1fr) max-content;
    align-items: start;
    gap: 10px 18px;
}

.month-plan-heading > div:first-child {
    grid-column: 1;
}

.month-plan-heading .month-legend {
    grid-column: 2;
    justify-self: end;
    align-self: start;
    justify-content: flex-end;
    flex-wrap: nowrap;
}

.month-plan-title-line h2 {
    margin: 0;
}

.schedule-ready-badge {
    background: #ecfdf3;
    color: var(--ok);
}

.schedule-version-badge {
    background: #eef2f6;
    color: #344054;
}

.schedule-publication-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px 18px;
    margin: 8px 0 10px;
    padding: 10px 12px;
    border: 1px solid #b9d5b0;
    border-radius: 8px;
    background: #f3faef;
}

.schedule-publication-bar > p {
    flex: 1 1 250px;
    margin: 0;
    text-align: left;
    color: #274b22;
}

.schedule-publication-bar .schedule-publication-actions {
    flex: 0 1 auto;
    justify-content: flex-end;
}

.schedule-publication-bar.is-first-publication {
    align-items: center;
}

.schedule-warning-bar {
    display: flex;
    width: 100%;
    align-items: center;
    gap: 8px;
    margin: 8px 0 10px;
    padding: 11px 12px;
    border: 1px solid #efb5b5;
    border-radius: 8px;
    background: #fff4f3;
    color: #8b1d1d;
}

.schedule-warning-bar strong {
    flex: 0 0 auto;
}

.schedule-warning-content {
    display: grid;
    min-width: 0;
    flex: 1 1 auto;
    gap: 7px;
}

.schedule-warning-content > span {
    display: block;
}

.schedule-warning-detail {
    display: grid;
    gap: 3px;
    padding-top: 7px;
    border-top: 1px solid #efb5b5;
}

.schedule-warning-detail > div {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 5px 10px;
}

.schedule-warning-detail p,
.schedule-warning-detail small {
    display: block;
    margin: 0;
    color: inherit;
}

.form-grid > button,
.form-grid > .button {
    align-self: start;
    min-height: 40px;
    margin-top: 22px;
}

.employee-loan-form {
    grid-template-columns:
        minmax(250px, 1.25fr)
        minmax(230px, 1.15fr)
        minmax(150px, .7fr)
        minmax(150px, .7fr)
        minmax(165px, max-content);
    align-items: end;
    gap: 12px;
}

.employee-loan-form input,
.employee-loan-form select,
.employee-loan-form .entity-picker-input,
.employee-loan-form .employee-loan-submit {
    min-height: 40px;
}

.employee-loan-form .employee-loan-submit {
    width: 100%;
    white-space: nowrap;
}

.relation-type-list {
    display: grid;
    gap: 12px;
}

.relation-type-card {
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: #fff;
}

.relation-type-summary {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 14px;
}

.relation-type-summary > div {
    display: grid;
    flex: 1 1 auto;
    gap: 3px;
}

.relation-type-summary small,
.relation-type-usage {
    color: var(--muted);
}

.relation-type-form {
    grid-template-columns: repeat(4, minmax(160px, 1fr));
}

.relation-type-actions {
    display: flex;
    align-items: flex-end;
    gap: 8px;
    min-height: 40px;
}

.relation-type-actions button {
    flex: 1 1 auto;
}

.required-by-type::after {
    content: "Povinné pro vybraný typ";
    color: var(--danger);
    font-size: 12px;
    font-weight: 600;
}

@media (max-width: 1180px) and (min-width: 801px) {
    .form-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .employee-loan-form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .relation-type-form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .employee-loan-form .employee-loan-submit {
        grid-column: 1 / -1;
    }

    .day-editor .dialog-shift-grid,
    .day-editor .dialog-absence-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .day-editor .dialog-absence-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (max-width: 800px) {
    .month-plan-heading {
        grid-template-columns: minmax(0, 1fr);
    }

    .month-plan-heading .month-legend {
        grid-column: 1;
        justify-self: end;
        max-width: 100%;
        overflow-x: auto;
    }

    .schedule-publication-bar {
        align-items: stretch;
        flex-direction: column;
    }

    .schedule-publication-bar .schedule-publication-actions {
        justify-content: flex-start;
    }

    .schedule-publication-actions.is-first-publication {
        flex-basis: 100%;
        width: 100%;
    }

    .schedule-publication-actions.is-first-publication > form {
        width: 100%;
    }

    .schedule-warning-bar {
        align-items: flex-start;
        flex-direction: column;
    }

    .form-grid,
    .day-editor .dialog-shift-grid,
    .day-editor .dialog-absence-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .employee-loan-form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .employee-loan-form .employee-loan-submit {
        grid-column: 1 / -1;
    }
}

@media (max-width: 520px) {
    .schedule-publication-actions,
    .schedule-publication-actions > form {
        width: 100%;
        align-items: stretch;
    }

    .schedule-publication-actions > form > label,
    .schedule-publication-actions button {
        width: 100%;
    }

    .schedule-publication-actions .late-publication-form {
        width: 100%;
        grid-template-columns: 1fr;
    }

    .form-grid,
    .day-editor .dialog-shift-grid,
    .day-editor .dialog-absence-grid {
        grid-template-columns: 1fr;
    }

    .employee-loan-form {
        grid-template-columns: 1fr;
    }

    .relation-type-form {
        grid-template-columns: 1fr;
    }

    .relation-type-summary {
        align-items: flex-start;
        flex-direction: column;
    }

    .form-grid > .form-wide {
        grid-column: auto;
    }

    .day-editor {
        width: calc(100vw - 16px);
        max-width: calc(100vw - 16px);
        max-height: calc(100vh - 16px);
    }

    .day-editor > form {
        max-height: calc(100vh - 16px);
        padding: 16px;
    }

    .day-editor .day-kind {
        grid-template-columns: 1fr;
    }

    .day-editor .dialog-actions {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .day-editor .dialog-actions button {
        width: 100%;
    }

    .day-editor .dialog-actions .dialog-close {
        grid-column: 1 / -1;
        margin-left: 0;
    }
}

/* Tisk plánu je samostatný dokument A4 na šířku. Prohlížeč musí dostat
   nulový okraj přímo na výchozí stránce; obsah si vytváří vlastní bezpečný okraj. */
.print-only {
    display: none !important;
}

.month-version-switch {
    display: flex;
    align-items: flex-end;
    gap: 10px;
    margin: 8px 0 10px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fafc;
}

.month-version-switch label {
    width: min(100%, 520px);
}

.month-version-switch select {
    width: 100%;
}

.month-version-switch button {
    flex: 0 0 auto;
}

.historical-version-badge {
    align-self: center;
    background: #fff0d5;
    color: #7b4c00;
}

@media (max-width: 650px) {
    .month-version-switch {
        align-items: stretch;
        flex-direction: column;
    }

    .month-version-switch label,
    .month-version-switch button {
        width: 100%;
    }
}

@page {
    size: A4 landscape;
    margin: 0 !important;

    @top-left {
        content: "";
    }

    @top-center {
        content: "";
    }

    @top-right {
        content: "";
    }

    @bottom-left {
        content: "";
    }

    @bottom-center {
        content: "";
    }

    @bottom-right {
        content: "";
    }
}

@media print {
    html,
    body {
        margin: 0 !important;
        padding: 0 !important;
        background: #fff !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    body:has(.schedule-print-document) .wrap {
        width: 297mm;
        max-width: none;
        margin: 0;
        padding: 7mm 8mm 6mm;
    }

    .schedule-print-document {
        width: 100%;
        margin: 0;
        padding: 0 !important;
        border: 0 !important;
        border-radius: 0;
        box-shadow: none !important;
        overflow: visible;
    }

    .schedule-print-document .print-only {
        display: flex !important;
    }

    .schedule-print-header {
        min-height: 12mm;
        align-items: center;
        gap: 6mm;
        margin: 0 0 1mm;
        padding: 0 0 .8mm;
        border-bottom: .4mm solid #b51f29;
    }

    .schedule-print-header img {
        display: block;
        width: 37mm;
        height: auto;
    }

    .schedule-print-header div {
        display: grid;
        min-width: 0;
        gap: .8mm;
    }

    .schedule-print-header .schedule-print-kicker {
        color: #b51f29;
        font-size: 8pt;
        font-weight: 800;
        letter-spacing: .08em;
        text-transform: uppercase;
    }

    .schedule-print-header h1 {
        margin: 0;
        font-size: 17pt;
        line-height: 1.05;
    }

    .schedule-print-version {
        color: #514b4b;
        font-size: 7.5pt;
        font-weight: 650;
        white-space: nowrap;
    }

    .schedule-print-document .month-plan-heading {
        display: none !important;
    }

    .schedule-print-legend {
        display: flex !important;
        align-self: flex-end;
        justify-content: flex-end;
        flex-wrap: nowrap;
        gap: 2mm;
        margin: 0 0 .8mm auto;
    }

    .schedule-print-document .month-plan-scroll {
        width: 100%;
        margin: 0;
        overflow: visible !important;
    }

    .schedule-print-document .month-plan-list {
        width: 100%;
        min-width: 0;
        margin: 0;
    }

    .schedule-print-document .month-date-header,
    .schedule-print-document .month-sales-row,
    .schedule-print-document .month-employee {
        grid-template-columns: 43mm minmax(0, 1fr);
    }

    .schedule-print-document .month-date-header {
        position: static;
        break-after: avoid;
        border-radius: 2mm 2mm 0 0;
    }

    .schedule-print-document .month-date-label {
        padding: 1.2mm 2mm;
        font-size: 10pt;
        line-height: 1;
    }

    .schedule-print-document .month-date {
        min-width: 0;
        height: 10mm;
        padding: .6mm 0;
        border-radius: 0;
    }

    .schedule-print-document .month-date-row,
    .schedule-print-document .month-sales-days,
    .schedule-print-document .month-row {
        grid-template-columns: repeat(var(--days), minmax(0, 1fr)) 19mm;
    }

    .schedule-print-document .month-sales-row {
        break-after: avoid;
        break-inside: avoid;
    }

    .schedule-print-document .month-sales-summary,
    .schedule-print-document .month-sales-day {
        min-height: 11mm;
    }

    .schedule-print-document .month-sales-summary {
        position: static;
        padding: .7mm 2mm;
    }

    .schedule-print-document .month-sales-summary strong {
        font-size: 7pt;
    }

    .schedule-print-document .month-sales-summary span,
    .schedule-print-document .month-sales-summary small {
        font-size: 5.5pt;
    }

    .schedule-print-document .month-sales-day {
        padding: .4mm 0;
    }

    .schedule-print-document .month-sales-day span {
        font-size: 5.4pt;
    }

    .schedule-print-document .month-sales-day.is-empty span {
        display: none;
    }

    .schedule-print-document .month-sales-signature-spacer {
        display: block;
    }

    .schedule-print-document .month-signature-heading {
        display: flex;
        min-height: 10mm;
        padding: .6mm 1mm;
        font-size: 6pt;
    }

    .schedule-print-document .month-signature-cell {
        display: flex;
        height: 13mm;
        padding: 0 1.5mm 2.2mm;
    }

    .schedule-print-document.is-blank-template .month-date-row,
    .schedule-print-document.is-blank-template .month-sales-days,
    .schedule-print-document.is-blank-template .month-row {
        grid-template-columns: repeat(var(--days), minmax(0, 1fr));
    }

    .schedule-print-document.is-blank-template .month-signature-heading,
    .schedule-print-document.is-blank-template .month-signature-cell,
    .schedule-print-document.is-blank-template .month-sales-signature-spacer {
        display: none !important;
    }

    .schedule-print-document .month-date span {
        font-size: 5.8pt;
    }

    .schedule-print-document .month-date strong {
        font-size: 8pt;
    }

    .schedule-print-document .month-employee-group {
        margin: 0;
        padding: 1.4mm 2mm;
        break-after: avoid;
        break-inside: avoid;
        font-size: 8.5pt;
    }

    .schedule-print-document .month-employee {
        break-inside: avoid;
        page-break-inside: avoid;
    }

    .schedule-print-document .month-employee > header,
    .schedule-print-document .month-day {
        height: 13mm;
        min-height: 13mm;
    }

    .schedule-print-document .month-employee > header {
        position: static;
        padding: 1.1mm 2mm;
    }

    .schedule-print-document .month-employee > header strong {
        font-size: 8pt;
        line-height: 1.1;
    }

    .schedule-print-document .month-employee > header span,
    .schedule-print-document .month-employee > header small {
        font-size: 5.8pt;
        line-height: 1.15;
    }

    .schedule-print-document .month-day {
        padding: .5mm 0;
        grid-template-rows: 3mm minmax(0, 1fr) 6mm;
    }

    .schedule-print-document .month-shift-time,
    .schedule-print-document .month-shift-times,
    .schedule-print-document .month-empty,
    .schedule-print-document .month-absence-mark {
        font-size: 5.8pt;
    }

    .schedule-print-document .month-employee-violations {
        break-inside: avoid;
        page-break-inside: avoid;
        grid-template-columns: 43mm minmax(0, 1fr);
    }

    .schedule-print-document.is-blank-template .month-employee > header .month-employee-summary,
    .schedule-print-document.is-blank-template .month-employee > header small,
    .schedule-print-document.is-blank-template .month-day > * {
        display: none !important;
    }

    .schedule-print-document.is-blank-template .month-day {
        background: #fff !important;
        color: #172033 !important;
    }

    .schedule-print-document.is-blank-template .month-day.state-unavailable,
    .schedule-print-document.is-blank-template .month-day.outside-assignment {
        background: #e4e7ec !important;
        color: #98a2b3 !important;
        box-shadow: none !important;
    }

    body:has(.attendance-print-document) .wrap > *:not(.attendance-print-document) {
        display: none !important;
    }

    .attendance-print-document .month-day.has-plan-reference .month-shift-times,
    .attendance-print-document .attendance-plan-hint,
    .attendance-print-document .month-empty-mark {
        display: none !important;
    }

    .attendance-print-document .month-date-row,
    .attendance-print-document .month-sales-days,
    .attendance-print-document .month-row {
        grid-template-columns: repeat(var(--days), minmax(0, 1fr));
    }

    .schedule-print-document .month-employee > header {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        grid-auto-flow: row;
        align-content: center;
        justify-items: start;
        gap: 0;
        overflow: hidden;
    }

    .schedule-print-document .month-employee > header > * {
        position: static !important;
        width: 100%;
        max-width: 100%;
        margin: 0 !important;
        overflow: hidden;
        text-overflow: clip;
        white-space: nowrap;
    }

    .schedule-print-document .month-employee > header .month-employee-summary,
    .schedule-print-document .month-employee > header .month-employee-difference {
        font-size: 5.2pt;
        line-height: 1.08;
        letter-spacing: -.015em;
    }
}

/* Seřazení pozic bez ručního zadávání číselné priority. */
.position-list-heading {
    align-items: flex-end;
    margin-bottom: 12px;
}

.position-list-heading h2,
.position-list-heading p {
    margin: 0;
}

.position-list-heading p {
    margin-top: 4px;
}

.position-admin-row {
    grid-template-columns: 104px minmax(260px, 2fr) minmax(105px, .45fr) minmax(150px, .75fr) auto;
}

.position-move-controls {
    display: grid;
    grid-template-columns: 36px 30px 30px;
    gap: 4px;
}

.position-move-controls button {
    width: 100%;
    min-height: 34px !important;
    padding: 4px;
    border: 1px solid var(--line);
    background: #f8fafc;
    color: var(--ink);
    font-size: 17px;
    line-height: 1;
}

.position-drag-handle {
    cursor: grab;
}

.position-drag-handle:active {
    cursor: grabbing;
}

.position-sort-table tr.is-dragging {
    opacity: .5;
    background: #eef4ff;
}

.position-list-heading button:disabled {
    opacity: .55;
    cursor: not-allowed;
}

@media (max-width: 900px) {
    .position-admin-row {
        grid-template-columns: 104px minmax(220px, 1fr) minmax(105px, .5fr);
    }

    .position-usage,
    .position-admin-actions {
        grid-column: 2 / -1;
    }
}

@media (max-width: 560px) {
    .position-list-heading {
        align-items: stretch;
    }

    .position-list-heading form,
    .position-list-heading button {
        width: 100%;
    }

    .position-admin-row {
        grid-template-columns: 1fr;
    }

    .position-usage,
    .position-admin-actions {
        grid-column: 1;
    }
}

/* Založení zaměstnance: pevné řádky a jedna společná lišta akcí. */
.employee-create-intro {
    margin: 10px 0 14px;
}

.employee-create-form {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    align-items: start;
    gap: 14px;
}

.employee-create-form > label {
    align-self: start;
}

.employee-create-form > label > input,
.employee-create-form > label > select,
.employee-create-form .entity-picker-input,
.employee-create-form .searchable-select-button {
    width: 100%;
    min-height: 40px;
}

.employee-create-form label > small {
    display: block;
    min-height: 16px;
    color: var(--muted);
    font-weight: 400;
    line-height: 1.25;
}

.employee-create-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 16px;
    margin-top: 2px;
    padding-top: 14px;
    border-top: 1px solid var(--line);
}

.employee-create-actions .check {
    flex-direction: row;
    align-items: center;
    margin: 0 auto 0 0;
}

.employee-create-actions button {
    width: min(100%, 330px);
    min-height: 40px;
}

.employee-contract-create {
    margin: 12px 0;
}

.employee-contract-create-form .contract-wide-field {
    grid-column: span 2;
}

.employee-contract-create-actions {
    justify-content: flex-end;
}

@media (max-width: 1180px) and (min-width: 801px) {
    .employee-create-form {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .employee-contract-create-form .contract-wide-field {
        grid-column: auto;
    }
}

@media (max-width: 800px) {
    .employee-create-form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .employee-contract-create-form .contract-wide-field {
        grid-column: auto;
    }
}

@media (max-width: 520px) {
    .employee-create-form {
        grid-template-columns: 1fr;
    }

    .employee-create-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .employee-create-actions .check,
    .employee-create-actions button {
        width: 100%;
    }
}

/* Úprava prodejny: identifikační údaje v jedné řadě a samostatná spodní lišta. */
.record-title-line {
    display: flex;
    align-items: baseline;
    gap: 12px;
    min-width: 0;
}

.record-title-line h1,
.record-title-line h2 {
    margin: 0;
}

.record-title-line h2::before {
    content: "–";
    margin-right: 12px;
    color: var(--muted);
    font-weight: 400;
}

.store-edit-form {
    display: grid;
    gap: 18px;
}

.store-edit-fields {
    display: grid;
    grid-template-columns: minmax(150px, .65fr) minmax(260px, 1fr) minmax(300px, 1.15fr);
    align-items: start;
    gap: 14px;
}

.store-edit-fields > label,
.store-edit-manager-readonly {
    align-self: start;
}

.store-edit-manager small {
    display: block;
    margin-top: 1px;
    color: var(--muted);
    font-weight: 400;
    line-height: 1.3;
}

.store-edit-manager-readonly {
    display: grid;
    gap: 7px;
    font-size: 13px;
}

.store-edit-manager-readonly p {
    min-height: 40px;
    margin: 0;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 7px;
    background: #f8fafc;
}

.store-edit-footer {
    display: grid;
    grid-template-columns: max-content minmax(260px, 1fr) max-content;
    align-items: end;
    gap: 18px;
    padding-top: 16px;
    border-top: 1px solid var(--line);
}

.store-edit-status {
    min-height: 40px;
    margin: 0;
    white-space: nowrap;
}

.store-edit-actions {
    justify-content: flex-end;
    flex-wrap: nowrap;
}

.store-edit-actions button,
.store-edit-actions .button {
    min-height: 40px;
    white-space: nowrap;
}

@media (max-width: 900px) {
    .store-edit-fields {
        grid-template-columns: 1fr 1fr;
    }

    .store-edit-manager,
    .store-edit-manager-readonly {
        grid-column: 1 / -1;
    }

    .store-edit-footer {
        grid-template-columns: max-content minmax(0, 1fr);
    }

    .store-edit-actions {
        grid-column: 1 / -1;
    }
}

@media (max-width: 560px) {
    .record-title-line {
        align-items: flex-start;
        flex-direction: column;
        gap: 4px;
    }

    .record-title-line h2::before {
        content: none;
    }

    .store-edit-fields,
    .store-edit-footer {
        grid-template-columns: 1fr;
    }

    .store-edit-manager,
    .store-edit-manager-readonly,
    .store-edit-actions {
        grid-column: 1;
    }

    .store-edit-actions {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .store-edit-actions > * {
        width: 100%;
    }
}

/* Stabilní rozložení všech mřížkových formulářů.
   Pole se zarovnávají od horní hrany, takže delší nápověda pod jedním
   ovládacím prvkem neposune sousední popisky a vstupy do jiné výšky. */
.form-grid {
    align-items: start;
}

.form-grid > label > small {
    display: block;
    color: var(--muted);
    font-weight: 400;
    line-height: 1.3;
}

label.checkbox {
    flex-direction: row;
    align-items: center;
}

label.checkbox > input {
    width: auto;
}

.form-grid > .check,
.form-grid > .checkbox {
    align-self: start;
    min-height: 40px;
    margin-top: 22px;
    justify-content: flex-start;
}

/* Pozdní společná vrstva nesmí přepsat rozložení specializovaných formulářů. */
.form-grid.assignment-edit-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.form-grid.additional-store-single {
    grid-template-columns: minmax(280px, 1.5fr) minmax(140px, .7fr) minmax(140px, .7fr);
}

.form-grid.planning-settings-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.form-grid.deletion-confirm-form {
    grid-template-columns: minmax(260px, 2fr) minmax(240px, 1fr);
    align-items: start;
}

.assignment-edit-form > .assignment-primary-choice {
    min-height: 19px;
    margin-top: 0;
}

@media (max-width: 900px) {
    .form-grid.additional-store-single,
    .form-grid.planning-settings-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .form-grid.deletion-confirm-form {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 560px) {
    .form-grid.assignment-edit-form,
    .form-grid.additional-store-single,
    .form-grid.planning-settings-grid {
        grid-template-columns: 1fr;
    }

    .form-grid > button,
    .form-grid > .button,
    .form-grid > .check,
    .form-grid > .checkbox {
        margin-top: 0;
    }
}
