body {
    font-family: var(--font-family);
    min-width: 320px;
    max-width: 1200px; /* overridden below at 1300px+ */
    margin: 1em auto;
    padding: 0 1em;
    background: var(--surface-a);
    color: var(--text-color);
    overflow-x: hidden;
}

body {
    height: calc(100vh - 2em);
    display: flex;
    flex-direction: column;
}

body > footer {
    font-size: .75em;
    margin-top: auto;
    padding: 1em 0;
    text-align: center;
    opacity: .5;
}

body a, body a:visited {
    color: var(--primary-500);
}

body a:hover, body a:focus, body a:active {
    color: var(--primary-700);
}

body ul {
    padding: 0 0 0 1.25em;
}

body h3 {
    font-size: 1.25em;
}

body hr {
    border: 0;
    border-bottom: 1px solid var(--surface-border);
}

body pre {
    white-space: pre-wrap;
}

body #hamburger + label {
    display: none;
}

body #hamburger ~ .ui-menu .ui-menu-list .ui-menu-child {
    position: absolute !important;
}

body.errorpage pre {
    white-space: pre;
    overflow-x: auto;
}

body .ui-fieldset {
    padding: 0 1em;
    background: inherit;
}

body .ui-fieldset .ui-outputlabel {
    display: block;
    width: 100%;
    margin: 1em 0 .5em;
}

body .ui-fieldset .ui-outputlabel + * {
    display: block;
    width: 100%;
    margin: .5em 0;
}

body .ui-fieldset .ui-outputlabel + .slider {
    width: calc(100% - 1.5em);
    margin: 1em .75em 1.5em;
}

body .ui-fieldset .ui-outputlabel + * > .ui-inputfield {
    width: 100%;
}

body .ui-fieldset .ui-outputlabel + .ui-autocomplete-dd > .ui-inputfield {
    width: calc(100% - 2.357em);
}

body .ui-fieldset .ui-outputlabel + * + .ui-message {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0;
}

body .ui-fieldset .ui-outputlabel + * + .ui-message > div {
    padding: .5em;
}

body .ui-fieldset .ui-inputtextarea {
    min-height: 2em;
}

body .ui-fieldset-content > .ui-panelgrid .ui-panelgrid-cell {
    padding: 0;
}

body .ui-fieldset-content > .ui-panelgrid .ui-panelgrid-cell + .ui-panelgrid-cell {
    padding-left: 1em;
}

body .ui-fieldset .inline {
    display: flex;
    gap: 1em;
}

body .ui-fieldset .inline label {
    width: auto;
}

body .ui-fieldset footer {
    display: flex;
    column-gap: .5em;
    justify-content: flex-end;
    margin: 1em 0;
}

body #login .ui-fieldset {
    margin: 1em 0;
    padding: 0;
    border: 0;
}

body #login .ui-fieldset-content {
    display: flex;
    gap: .5em;
}

body .ui-dialog {
    max-width: 800px;
}

body .ui-dialog-content {
    min-width: 500px;
}

body .ui-panel .ui-panel-content {
    padding-top: 0;
    padding-bottom: 0;
}

body .ui-datatable {
    margin: 1em 0;
}

body .ui-datatable thead th {
    white-space: nowrap;
}

body .ui-datatable thead th,
body .ui-datatable .ui-datatable-data>tr>td,
body .ui-datatable tfoot td {
    padding: .5rem;
}

body .ui-datatable .ui-datatable-data>tr>th {
    border-bottom: 1px solid rgba(0, 0, 0, .08);
}

body .ui-datatable .ui-datatable-data>tr .ui-row-toggler,
body .ui-datatable .ui-datatable-data>tr .icon-drag-handle-vertical {
    color: var(--primary-500);
}

body .ui-datatable .ui-datatable-data>tr>td {
    overflow-wrap: break-word;
}

body .ui-datatable .ui-datatable-data>tr.ui-expanded-row-content>td {
    padding: 0 0 1rem;
}

body .ui-datatable.ui-headless > .ui-datatable-tablewrapper > table > thead > tr > th {
    height: 0;
    padding: 0;
}

body .ui-datatable.ui-headless tfoot td {
    background: none;
}

body .ui-datatable.ui-sortable-helper .ui-datatable-data>tr>td {
    border-top-width: 1px;
}

body .ui-datatable .ui-datatable-data>tr .icon-drag-handle-vertical {
    width: 1rem;
    height: 1rem;
    margin: .266666rem;
}

body .ui-datatable td ul {
    margin: 0;
}

body .ui-datatable td pre {
    font-size: .875em;
    padding: 0 .5rem;
}

body .ui-datatable td.nowrap {
    white-space: nowrap;
}

body .ui-datatable td.actions {
    text-align: right;
}

body .ui-datatable td.actions .ui-button {
    display: block;
    font-size: .875em;
    width: 100%;
    margin: .5em 0;
}

body .ui-datatable td.actions .ui-commandlink + .ui-commandlink {
    margin-left: .5em;
}

body .ui-datatable td.actions > div {
    display: flex;
    gap: .5em;
    margin: .5em 0;
}

body .ui-datatable td.actions > div .ui-button {
    margin: 0;
}

body .ui-datatable .ui-datatable-data > tr.ui-datatable-grouped-row > td.ui-grouped-column {
    font-weight: bold;
    border-right-width: 1px;
}

body .ui-datatable .ui-datatable-header .ui-outputlabel {
    margin-right: .5em;
}

body .ui-datatable .ui-filter-column.ui-filter-hidden .ui-column-filter {
    display: none;
}

body .ui-panelgrid-cell.bottom {
    align-content: end;
}

body .ui-autocomplete-item[data-item-class='ui-helper-hidden'] {
    display: none;
}

body .ui-menu > .ui-menu-list {
    display: flex;
    flex-wrap: wrap;
}

body .ui-menu .ui-menu-list .ui-menuitem {
    white-space: nowrap;
}

body .ui-menu .ui-menu-list .ui-menuitem.right {
    margin-left: auto;
}

body .ui-menu .ui-theme-toggler.light {
    display: none;
}

body .ui-menu .ui-theme-toggler.dark {
    display: block;
}

body .ui-helper-strong {
    font-weight: 700;
}

body .ui-card {
    box-shadow: 0 .25em 1em var(--surface-500);
    border-radius: 1.5em;
    max-width: 500px;
    margin-bottom: 2em;
}

body .ui-card .ui-card-title {
    font-size: 1em;
    display: flex;
    align-items: center;
    justify-content: space-around;
    gap: 1em;
    margin: 0;
    text-align: center;
}

body .ui-card .ui-card-title h2,
body .ui-card .ui-card-title h3 {
    flex: 1;
    margin: 0;
}

body .ui-card .ui-card-body {
    padding: 1em;
}

body .ui-card .ui-card-content {
    padding: 0;
}

body .ui-card .ui-card-content .pi-refresh {
    color: var(--gray-500);
}

body .ui-card .ui-card-content .pi-check {
    color: var(--green-500);
}

body .ui-card .ui-card-content .ui-fieldset {
    border: 0;
    padding: 0;
}

body .ui-card .ui-card-content .ui-fieldset .ui-outputlabel {
    font-weight: bold;
}

body .ui-card .ui-card-content .ui-fieldset .ui-fieldset-content {
    margin-top: -1em;
}

body .centered {
    text-align: center;
}

body .ui-link, body .ui-outputlabel-label {
    white-space: nowrap;
}

body .ui-icon {
    font-size: 1em;
}

body .ui-menu.ui-menubar,
body .ui-inputfield,
body .ui-autocomplete .ui-autocomplete-input.ui-autocomplete-dd-input,
body .ui-button.ui-button-text-only .ui-button-text,
body .ui-button.ui-button-icon-only .ui-button-text,
body .ui-message,
body .ui-datatable .ui-datatable-header,
body select {
    padding: .5em;
}

body .ui-inputfield {
    min-height: calc(2em + 2px);
}

body .ui-button.ui-button-icon-only {
    width: 2.33333em;
}

body .ui-button.ui-button-icon-only .ui-icon,
body .ui-chkbox .ui-chkbox-box .ui-chkbox-icon {
    margin-top: -.5em;
    margin-left: -.5em;
}

body .ui-calendar .ui-button.ui-button-icon-only, body .ui-autocomplete .ui-autocomplete-dropdown {
    width: 2.357em;
}

body .ui-dialog .ui-dialog-titlebar .ui-dialog-title {
    font-size: 1.25em;
}

body .ui-dialog .ui-dialog-titlebar {
    display: flex;
    align-items: center;
    height: 5em;
    padding: 1.5em;
}

body .ui-dialog .ui-dialog-titlebar .ui-dialog-titlebar-icon {
    margin-left: auto;
}

body .ui-dialog .ui-dialog-content {
    padding: 0 1.5em 1.5em;
}

body .ui-datepicker {
    min-width: 300px;
}

body .ui-datepicker .ui-datepicker-calendar-container {
    height: 20em;
}

body .ui-datepicker .ui-datepicker-calendar td>a, body .ui-datepicker .ui-datepicker-calendar td>span, body .ui-datepicker .ui-picker-up {
    width: 2em;
    height: 2em;
    line-height: 2em;
}

body .ui-chkbox .ui-chkbox-box {
    width: 1.5em;
    min-width: 1.5em;
    height: 1.5em;
    margin: calc(.25em + 1px) 0;
}

body .ui-autocomplete .ui-autocomplete-multiple-container {
    padding: .25em .5em;
}

body .ui-autocomplete .ui-autocomplete-multiple-container .ui-autocomplete-input-token {
    padding: .25em 0;
}

body .ui-autocomplete .ui-autocomplete-multiple-container .ui-autocomplete-input-token input {
    font-size: 1em;
}

body .ui-outputlabel-rfi {
    color: var(--red-500);
}

body .ui-dialog.ui-confirm-dialog .ui-dialog-content > span {
    margin: 0;
}

body .ui-dialog.ui-confirm-dialog .ui-dialog-content > span.ui-icon {
    display: none !important;
}

body .ui-helper-hidden {
    display: none;
}

body .ui-sortable-handle {
    cursor: move;
}

body #sessionBlockExecutionDialog fieldset p {
    text-align: center;
}

body #sessionBlockExecutionDialog fieldset footer small {
    display: flex;
    flex: 1;
    align-items: center;
    margin: .75em;
    color: var(--text-color-secondary);
}

body #sessionBlockExecutionDialog fieldset table {
    width: 100%;
    border-collapse: collapse;
}

body #sessionBlockExecutionDialog fieldset table tr.current {
    background: var(--primary-100);
}

body #sessionBlockExecutionDialog fieldset table tr.current th {
    border-radius: .5em 0 0 .5em;
}

body #sessionBlockExecutionDialog fieldset table tr.current td:last-child {
    border-radius: 0 .5em .5em 0;
}

body #sessionBlockExecutionDialog fieldset table th {
    white-space: nowrap;
}

body #sessionBlockExecutionDialog fieldset table th,
body #sessionBlockExecutionDialog fieldset table td {
    padding: .5em;
    text-align: center;
}

body #sessionBlockExecutionDialog fieldset table td input {
    width: 100%;
}

body table.sets th.set {
    width: 2.5em;
    padding-left: 1em;
    text-align: left;
}

body .float-right {
    float: right;
}

body .ui-datatable .ui-reflow-show {
    display: none;
}

body .ui-datatable .ui-reflow-label {
    font-weight: bold;
    color: var(--text-color);
}

body .ui-spinner.sets {
    width: 5.25rem;
    margin: 0 .25em;
}

body .ui-commandlink.ui-link-danger {
    color: #d32f2f;
}

body .ui-commandlink:has(.pi):hover {
    text-decoration: none;
    opacity: .6;
}

body .ui-card.sticky-buttons {
    position: sticky;
    bottom: -1.5em;
    z-index: 1;
}

body .ui-card.sticky-buttons .ui-card-content {
    display: flex;
    gap: 1em;
    margin-bottom: 1.5em;
}

body .ui-card.sticky-buttons .ui-card-content .ui-button {
    width: 100%;
}

body .ui-selectonemenu {
    width: 100%;
    max-width: 575px;
    min-width: auto !important;
}

body .ui-selectmanycheckbox .ui-chkbox .ui-chkbox-box {
    margin: 0;
}

body .ui-selectmanycheckbox.ui-grid-responsive>div>div {
    align-items: center;
}

body .ui-state-valid {
    color: var(--green-600);
}

body .ui-state-invalid {
    color: var(--pink-600);
}

body .ui-messages > div[class^='ui-messages-'] {
    margin: 1em 0;
    padding: 1em;
}

body .ui-messages > div[class^='ui-messages-'] > span[class$='-icon'] {
    display: none;
}

body .ui-message.ui-staticmessage {
    margin: 0;
}

body .dashboard {
    display: flex;
    flex-wrap: wrap;
    gap: 2em;
}

body .statistics {
    display: flex;
    flex-wrap: wrap;
    gap: 2em;
    margin-bottom: 2em;
}

body .statistics section {
    width: calc(50% - 1em);
}

body .statistics section .ui-chart,
body .statistics section .ui-chart > canvas {
    min-width: 100%;
    height: 100% !important;
    max-height: 300px;
}

body .statistics section .ui-chart:not(.donut),
body .statistics section .ui-chart:not(.donut) > canvas {
    width: 100% !important;
    aspect-ratio: 2;
}

body .statistics section .ui-chart.donut,
body .statistics section .ui-chart.donut > canvas {
    aspect-ratio: 1;
}

@media (max-width: 1050px) {
    body .statistics section {
        width: 100%;
        max-width: 1050px;
    }
}

body .ui-selectonemenu-panel .ui-selectonemenu-items .ui-selectonemenu-item.ui-state-disabled {
    display: none;
}

/* ── Client flag alert banner ─────────────────────────────────────────────── */
.client-flag-alert {
    background: #fff3cd;
    border: 2px solid #c0392b;
    border-radius: 6px;
    padding: 10px 16px;
    margin-bottom: 16px;
    color: #c0392b;
    font-weight: bold;
    font-size: 1em;
}

/* ── Badge text centering fix ─────────────────────────────────────────────── */
.ui-badge {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    white-space: nowrap;
}

/* ── Print styles ─────────────────────────────────────────────────────────── */
@media print {
    nav, footer, .no-print,
    .ui-button, .ui-commandbutton,
    .ui-paginator, .ui-datatable-header,
    p:growl, .ui-growl,
    h1 { display: none !important; }

    body {
        max-width: none;
        margin: 0;
        padding: 0;
        font-size: 11pt;
    }

    main {
        padding: 0;
    }

    a { text-decoration: none; color: inherit; }

    .ui-panel, .ui-panel-content { box-shadow: none !important; }
}

/* ── Wide layout on large screens ─────────────────────────────────────────── */
@media (min-width: 1300px) {
    body {
        max-width: none;
        padding: 0 2em;
    }
}

/* ── Calendar — mobile ────────────────────────────────────────────────────── */
.ui-schedule .fc-toolbar {
    flex-wrap: wrap;
    gap: 4px;
}

.ui-schedule .fc-toolbar-chunk {
    display: flex;
    gap: 4px;
}

.ui-schedule .fc-button {
    padding: 6px 10px !important;
    font-size: 0.75rem !important;
}

.ui-schedule .fc-timegrid-slot-label {
    font-size: 0.7rem;
}

/* ── Data table — horizontal scroll when viewport too narrow ──────────────── */
/* Scrollbar appears before any column is squeezed to an unreadable width.    */
body .ui-datatable .ui-datatable-tablewrapper {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* nowrap on short fixed-content columns (numbers, prices, status badges)     */
body .ui-datatable td.nowrap,
body .ui-datatable th.nowrap {
    white-space: nowrap;
}

/* ── Uniform action buttons (scr-actions) ─────────────────────────────────── */
/* Single row of small icon buttons. Add button lives outside the table.      */
body .ui-datatable td.scr-actions {
    text-align: right;
    vertical-align: middle;
    padding: .25rem .5rem;
    white-space: nowrap;
    overflow: visible;
}

body .ui-datatable td.scr-actions div.scr-actions-row {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    gap: .25rem;
    justify-content: flex-end;
}

/* Double-class specificity beats td.actions .ui-button { display:block } */
body .ui-datatable td.scr-actions div.scr-actions-row .ui-button.ui-button {
    display: inline-flex !important;
    width: 2rem !important;
    height: 2rem !important;
    min-width: 2rem !important;
    padding: 0 !important;
    margin: 0 !important;
    font-size: .75rem;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

/* Low-stock row highlight for stock overview table */
.low-stock-row {
    background-color: rgba(255, 100, 100, 0.08) !important;
}

.low-stock {
    color: var(--red-500);
    font-weight: bold;
}
