@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');

:root {
    --ink: #1f2a24;
    --ink-soft: #34443b;
    --muted: #66746d;
    --line: #dce5dd;
    --paper: #f4f7f2;
    --surface: #ffffff;
    --leaf: #2e6f4e;
    --leaf-dark: #205139;
    --leaf-soft: #e0ebe4;
    --danger: #b42318;
    --danger-soft: #fbeae8;
    --amber: #f5b84e;
    --amber-soft: #fff3e0;
    --radius: 0.6rem;
    --radius-sm: 0.4rem;
    --shadow-sm: 0 1px 2px rgba(31, 42, 36, 0.05);
    --shadow-md: 0 6px 20px rgba(31, 42, 36, 0.08);
    --font-stack: "Segoe UI", system-ui, -apple-system, Arial, Helvetica, sans-serif;
    --font-heading: 'Inter', "Segoe UI", system-ui, -apple-system, sans-serif;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
    margin: 0;
    color: var(--ink);
    background: var(--paper);
    font-family: var(--font-stack);
    font-size: 15px;
    line-height: 1.45;
}

/* ---------- Buttons ---------- */
.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    padding: .55rem .85rem;
    font: inherit;
    font-size: .9rem;
    font-weight: 600;
    line-height: 1.1;
    cursor: pointer;
    text-decoration: none;
    transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .05s ease;
}
.button:active { transform: translateY(1px); }
.button:focus-visible { outline: 2px solid var(--leaf); outline-offset: 2px; }
.button-primary { color: #fff; background: var(--leaf); box-shadow: var(--shadow-sm); }
.button-primary:hover { background: var(--leaf-dark); }
.button-secondary { color: var(--ink); background: #e9efe9; border-color: var(--line); }
.button-secondary:hover { background: #dfe8df; }
.button-danger { color: #fff; background: var(--danger); box-shadow: var(--shadow-sm); }
.button-danger:hover { background: #941e14; }
.button:disabled { cursor: not-allowed; opacity: .55; }
.button .icon { flex: none; }

/* ============================================================
   Icons (inline SVG)
   ============================================================ */
.icon {
    display: inline-block;
    width: 1.05em;
    height: 1.05em;
    vertical-align: -0.15em;
    flex: none;
}
.icon-sm { width: .95em; height: .95em; }
.icon-lg { width: 1.5em; height: 1.5em; vertical-align: -0.4em; }

/* Layout ---------- */
.login-body {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: 1.5rem;
    background: linear-gradient(160deg, var(--leaf-dark), var(--leaf) 50%, var(--leaf-soft) 100%);
}

.login-panel {
    width: min(100%, 27rem);
    padding: 2.5rem 2rem 2rem;
    border: none;
    background: var(--leaf-dark);
    box-shadow: 0 8px 32px rgba(0, 0, 0, .18);
    border-radius: var(--radius);
    text-align: center;
}

.login-logo {
    display: block;
    height: 64px;
    width: auto;
    margin: 0 auto 1rem;
}

.login-panel .order-form {
    text-align: left;
    margin-top: 1rem;
}

.login-panel .order-form label {
    font-size: .85rem;
    font-weight: 600;
    color: var(--ink);
}

.login-panel .order-form input[type="email"],
.login-panel .order-form input[type="password"] {
    margin-top: .35rem;
    background: #fff;
    border: 1px solid var(--line);
    color: var(--ink);
}

.login-panel .button-primary {
    margin-top: .5rem;
    width: 100%;
    background: var(--leaf);
    color: #fff;
    font-weight: 700;
}

.login-panel .button-primary:hover {
    background: var(--leaf-dark);
}

.login-panel .remember {
    font-size: .85rem;
    margin-bottom: .5rem;
    color: var(--ink);
}
.remember { display: flex !important; align-items: center; gap: .5rem; font-weight: 400 !important; }
.remember input { width: auto !important; }

.app-header {
    min-height: 4rem;
    padding: 0 5vw;
    display: flex;
    align-items: center;
    gap: 1.25rem;
    color: #fff;
    background: linear-gradient(120deg, var(--leaf-dark), var(--leaf) 70%);
    box-shadow: var(--shadow-sm);
    position: sticky;
    top: 0;
    z-index: 20;
}
.app-header p { margin: 0; opacity: .82; font-size: .95rem; }
.main-nav { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.main-nav .nav-link { display: flex; align-items: center; gap: 0.4rem; }
.nav-link { color: inherit; font-size: .9rem; font-weight: 600; text-decoration: none; padding: .35rem .7rem; border-radius: var(--radius-sm); opacity: .9; transition: background-color .15s ease, opacity .15s ease; }
.nav-link:hover { background: rgba(255, 255, 255, .12); opacity: 1; }
.nav-link.active { background: rgba(255, 255, 255, .2); opacity: 1; }
.nav-link.quickorder { color: var(--leaf-soft); }
.nav-link.quickorder:hover { background: rgba(255, 255, 255, .12); color: var(--paper); }
.logout-form { margin-left: auto; }
.logout-form button {
    padding: .35rem .5rem;
    color: inherit;
    border: 0;
    background: transparent;
    font: inherit;
    font-size: .9rem;
    font-weight: 600;
    border-radius: var(--radius-sm);
    cursor: pointer;
    opacity: .92;
    transition: background-color .15s ease, opacity .15s ease;
}
.logout-form button:hover { background: rgba(255, 255, 255, .12); opacity: 1; }
.brand { color: inherit; display: inline-flex; text-decoration: none; }
.brand-logo { height: 40px; width: auto; }
.print-logo { display: none; height: 56px; width: auto; margin: 0 0 1rem; }

.pagination-wrap { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .75rem; margin-top: 1.25rem; color: var(--muted); font-size: .85rem; }
.pagination-info { margin: 0; }
.pagination { display: flex; align-items: center; gap: .35rem; margin: 0; padding: 0; list-style: none; }
.pagination li a, .pagination li span { display: inline-flex; align-items: center; justify-content: center; min-width: 2.1rem; height: 2.1rem; padding: 0 .65rem; border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--ink); text-decoration: none; font-size: .9rem; font-weight: 600; }
.pagination li a:hover { background: var(--surface-2, #f3f5f4); border-color: var(--line-strong, #dfe3e2); }
.pagination li.active span { background: var(--leaf); border-color: var(--leaf); color: #fff; }
.pagination li.disabled span { color: var(--muted); opacity: .6; cursor: not-allowed; }

.page-shell { width: min(1100px, 92vw); margin: 2.25rem auto 3.5rem; }
.narrow-shell { width: min(920px, 92vw); }
.page-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.page-heading > div:first-child { min-width: 0; overflow-wrap: break-word; }
.heading-actions { display: flex; align-items: center; gap: .6rem; flex: none; }
.heading-actions .button { white-space: nowrap; }
.eyebrow { margin: 0 0 .35rem; color: var(--leaf); font-size: .74rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
h1, h2 { margin: 0; letter-spacing: -.02em; color: var(--danger); font-family: var(--font-heading); }
h1 { font-size: clamp(1rem, 3vw, 1.8rem); font-weight: 800; }
h2 { font-size: clamp(.9rem, 2vw, 1.15rem); font-weight: 600; }

.muted, .empty-state p:not(.eyebrow) { color: var(--muted); }

/* ============================================================
   Forms
   ============================================================ */
.order-form {
    display: grid;
    gap: 1.25rem;
    padding: 1.4rem;
    border: 1px solid var(--line);
    background: var(--surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
}
.order-form label { display: grid; font-size: .88rem; font-weight: 650; }
.field-with-hint { display: grid; gap: .3rem; }
.field-with-hint small { font-weight: 400; color: var(--muted); font-size: .78rem; }
.order-form label .combobox,
.order-form label .combobox-input,
.order-form label select,
.order-form label input,
.order-form label textarea {
    width: 100%;
}
.order-form input,
.order-form select,
.order-form textarea {
    width: 100%;
    padding: .3rem .5rem;
    border: 1px solid #bcc9bd;
    border-radius: var(--radius-sm);
    color: var(--ink);
    background: #fff;
    font: inherit;
    font-weight: 400;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.order-form input:focus,
.order-form select:focus,
.order-form textarea:focus,
.filter-form input:focus,
.filter-form select:focus,
.searchable-select input:focus,
.status-form select:focus {
    outline: none;
    border-color: var(--leaf);
    box-shadow: 0 0 0 3px rgba(46, 111, 78, .18);
}
.order-form textarea { resize: vertical; }

/* Campi di sola lettura (es. Codice in modifica prodotto): aspetto chiaramente non editabile */
.order-form .readonly-field {
    background: #eef1ee;
    color: var(--muted);
    cursor: not-allowed;
    border-style: dashed;
}
.order-form .readonly-field:focus {
    border-color: #bcc9bd;
    box-shadow: none;
}
.form-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem; align-items: end; }
.order-form-grid { grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.9fr) minmax(0, 0.8fr); }
fieldset { margin: 0; padding: 1rem 1rem 1.1rem; border: 1px solid var(--line); border-radius: var(--radius-sm); }
legend { padding: 0 .4rem; font-weight: 650; color: var(--leaf-dark);font-size: 1.1em; }
.line-grid { grid-template-columns: minmax(0, 3fr) minmax(6rem, 0.75fr) minmax(4rem, 0.55fr) auto; }
.line-grid .line-note { grid-column: 1 / -1; }
.order-line { margin-bottom: .5rem; background: #fbfcfa; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: .5rem; }
.order-line > .muted { margin: 0 0.5rem 0.2rem; font-size: 13px; }
.remove-line { padding: .5rem .7rem; font-size: .82rem; }
.line-actions { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: .3rem; }
.add-line { margin-top: 0; }
.day-options { display: flex; flex-wrap: wrap; gap: .4rem 1rem; }
.day-options label { display: flex; align-items: center; gap: .3rem; font-weight: 400; font-size: .82rem; }
.day-options input { width: auto; }

/* Searchable <select> (filter long option lists) */
.searchable-select { display: grid; gap: .4rem; }
.search-input {
    position: relative;
    display: flex;
    align-items: center;
}
.search-input .icon { position: absolute; left: .6rem; color: var(--muted); pointer-events: none; }
.search-input input {
    width: 100%;
    padding: .5rem .7rem .5rem 1.9rem;
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    background: #fbfcfa;
    font: inherit;
    font-size: .88rem;
}
.order-form .searchable-select select { margin-top: 0; }

/* Combobox: select filtrabile (filtro integrato nel campo) */
.combobox { position: relative; display: block; }
.combobox-native { display: none !important; }
.combobox-input {
    width: 100%;
    padding: .55rem 2rem .55rem .7rem;
    border: 1px solid #bcc9bd;
    border-radius: var(--radius-sm);
    color: var(--ink);
    background: #fff;
    font: inherit;
    font-weight: 400;
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.combobox-input:focus {
    outline: none;
    border-color: var(--leaf);
    box-shadow: 0 0 0 3px rgba(46, 111, 78, .18);
}
.combobox::after {
    content: "";
    position: absolute;
    right: .7rem;
    top: 50%;
    transform: translateY(-50%);
    width: .6rem;
    height: .6rem;
    border-right: 2px solid var(--muted);
    border-bottom: 2px solid var(--muted);
    transform: translateY(-50%) rotate(45deg);
    pointer-events: none;
    transition: transform .15s ease;
}
.combobox[aria-expanded="true"]::after {
    transform: translateY(-50%) rotate(-135deg);
}
.combobox-list {
    position: absolute;
    z-index: 30;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    max-height: 18rem;
    overflow-y: auto;
    margin: 0;
    padding: .25rem;
    list-style: none;
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    background: #fff;
    box-shadow: var(--shadow-md);
}
.combobox-option {
    padding: .4rem .55rem;
    border-radius: var(--radius-sm);
    font-size: .85rem;
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.combobox-option:hover,
.combobox-option.active { background: var(--leaf-soft); }
.combobox-option.selected { font-weight: 700; color: var(--leaf-dark); }

/* ============================================================
   Filter forms & export
   ============================================================ */
.filter-form { display: flex; flex-wrap: wrap; align-items: end; gap: .8rem; margin-bottom: 1.4rem; }
.filter-form label { display: grid; gap: .3rem; font-size: .84rem; font-weight: 650; }
.client-summary-form > .client-summary-client-filter { flex: 1 1 28rem; min-width: 20rem; }
.filter-form input,
.filter-form select {
    padding: .5rem .7rem;
    border: 1px solid #bcc9bd;
    border-radius: var(--radius-sm);
    font: inherit;
    background: #fff;
}
.export-group { display: inline-flex; flex-wrap: wrap; gap: .5rem; margin-left: auto; }

/* Pill toggle (es. "Solo ordinabili" nell'anagrafica prodotti) */
.pill-toggle {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .45rem .7rem;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: var(--surface);
    cursor: pointer;
    font-size: .84rem;
    font-weight: 650;
}
.pill-toggle input { position: absolute; width: 0; height: 0; opacity: 0; }
.pill-toggle-track {
    position: relative;
    flex: none;
    width: 2rem;
    height: 1.15rem;
    border-radius: 999px;
    background: #cbd5cc;
    transition: background-color .15s ease;
}
.pill-toggle-track::after {
    content: "";
    position: absolute;
    top: .15rem;
    left: .15rem;
    width: .85rem;
    height: .85rem;
    border-radius: 50%;
    background: #fff;
    box-shadow: var(--shadow-sm);
    transition: transform .15s ease;
}
.pill-toggle input:checked + .pill-toggle-track { background: var(--leaf); }
.pill-toggle input:checked + .pill-toggle-track::after { transform: translateX(.85rem); }
.pill-toggle input:focus-visible + .pill-toggle-track { outline: 2px solid var(--leaf); outline-offset: 2px; }
.filter-form .pill-toggle { display: inline-flex; align-items: center; gap: .5rem; }

.form-actions { display: flex; justify-content: flex-end; gap: .6rem; }
.form-errors { padding: .7rem .85rem; color: var(--danger); border-left: 3px solid var(--danger); background: var(--danger-soft); border-radius: var(--radius-sm); font-weight: 600; }
.warning-notice { padding: .6rem .85rem; color: var(--amber); border-left: 3px solid var(--amber); background: var(--amber-soft); border-radius: var(--radius-sm); font-size: .82rem; font-weight: 600; }
.flash-errors { margin: 0; color: var(--danger); background: var(--danger-soft); }
.flash-errors ul { margin: 0; padding-left: 1.1rem; }

/* Toast stack (messaggi flash non bloccanti) */
.toast-stack {
    position: fixed;
    top: 1rem;
    right: 1rem;
    z-index: 1000;
    display: flex;
    flex-direction: column;
    gap: .5rem;
    pointer-events: none;
}
.toast {
    pointer-events: auto;
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    padding: .7rem .9rem .7rem .7rem;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: var(--surface);
    box-shadow: var(--shadow-md);
    min-width: 18rem;
    max-width: 26rem;
    animation: toast-in .25s ease;
}
@keyframes toast-in {
    from { opacity: 0; transform: translateX(1.5rem); }
    to { opacity: 1; transform: translateX(0); }
}
.toast-hiding {
    animation: toast-out .2s ease forwards;
}
@keyframes toast-out {
    to { opacity: 0; transform: translateX(1.5rem); }
}
.toast-icon {
    flex: none;
    width: 1.25rem;
    height: 1.25rem;
    margin-top: .05rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
}
.toast-success .toast-icon {
    background: var(--leaf-soft);
    color: var(--leaf);
}
.toast-errors .toast-icon {
    background: var(--danger-soft);
    color: var(--danger);
}
.toast-message {
    flex: 1;
    font-size: .85rem;
    line-height: 1.4;
    color: var(--ink);
    padding-top: .1rem;
}
.toast-messages {
    flex: 1;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: .82rem;
    line-height: 1.5;
    color: var(--ink);
}
.toast-messages li { margin-bottom: .25rem; }
.toast-messages li:last-child { margin-bottom: 0; }
.toast-close {
    flex: none;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border: 0;
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--muted);
    cursor: pointer;
    transition: background-color .15s ease, color .15s ease;
}
.toast-close:hover { background: var(--line); color: var(--ink); }
.toast-close:focus-visible { outline: 2px solid var(--leaf); outline-offset: 1px; }
.toast-success {
    background: var(--leaf-soft);
    border-color: var(--leaf);
}
.toast-errors {
    background: var(--danger-soft);
    border-color: var(--danger);
}
.toast-warning {
    background: var(--amber-soft);
    border-color: var(--amber);
}
.toast-success:hover { border-color: var(--leaf-dark); }
.toast-errors:hover { border-color: #8b1a12; }
.toast-warning:hover { border-color: #d4942e; }
@media (max-width: 480px) {
    .toast-stack {
        left: .75rem;
        right: .75rem;
        top: .75rem;
    }
    .toast {
        min-width: 0;
        max-width: none;
    }
}

/* ============================================================
   Metrics
   ============================================================ */
.delivery-days { margin: 1.5rem 0; }
.days-inline { display: grid; gap: .5rem; }
.day-chip { border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); box-shadow: var(--shadow-sm); }
.day-chip summary { display: flex; align-items: center; gap: .75rem; padding: .55rem .7rem; cursor: pointer; list-style: none; }
.day-chip summary::-webkit-details-marker { display: none; }
.day-chip summary::after { margin-left: auto; content: '+'; color: var(--leaf-dark); font-size: 1.1rem; font-weight: 700; }
.day-chip[open] summary { border-bottom: 1px solid var(--line); }
.day-chip[open] summary::after { content: '−'; }
.day-groups { display: grid; gap: .65rem; padding: .65rem; }
.day-chip summary > strong { color: var(--leaf-dark); font-size: .9rem; }
.day-label { font: 700 .8rem; color: var(--ink, #1f231f); white-space: nowrap; }
.group-block { display: grid; gap: .2rem; }
.group-inline { display: inline-flex; align-items: center; gap: .3rem; padding: .18rem .5rem; border-radius: var(--radius-sm); background: var(--leaf-soft, #e1eee5); font-size: .78rem; }
.group-inline .group-name { max-width: 12rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.group-inline strong { color: var(--ink, #1f231f); font-size: 1rem; }
.preparing { color: var(--muted); font-size: .72rem; }
.group-orders { display: grid; gap: .1rem; margin: 0; padding: .15rem .35rem .15rem .9rem; font-size: .76rem; list-style: none; }
.group-orders li { display: flex; align-items: baseline; gap: .4rem; white-space: nowrap; }
.group-orders .order-link { font-weight: 700; color: var(--leaf-dark, #2e6f4e); text-decoration: none; }
.group-orders .order-link:hover { text-decoration: underline; }
.group-orders .order-client { color: var(--ink, #1f231f); overflow: hidden; text-overflow: ellipsis; max-width: 14rem; }
.metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.metric, .empty-state { border: 1px solid var(--line); background: var(--surface); }
.metric {
    min-height: 6.5rem;
    padding: 1rem 1.15rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: .25rem;
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
}
.metric span { color: var(--muted); font-size: .85rem; }
.metric strong { font-size: 1.9rem; line-height: 1.1; color: var(--leaf-dark); }
.metric small { color: var(--muted); }
.button-link { display: inline-block; margin-left: .5rem; font-size: .75rem; font-weight: 600; color: var(--leaf-dark); text-decoration: underline; vertical-align: middle; }
.quickorder { display: inline-flex; align-items: center; gap: .35rem; font-size: .82rem; }
.quickorder .icon { width: 1rem; height: 1rem; }

/* Flatpickr: calendario giorni di consegna disponibili */
.flatpickr-calendar {
    width: auto;
    min-width: 320px;
    max-width: min(92vw, 360px);
    padding: .65rem .65rem .85rem;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: var(--surface);
    box-shadow: var(--shadow-md);
    font-family: var(--font-stack);
    line-height: 1.3;
}
.flatpickr-calendar.open { z-index: 30; }
.flatpickr-months { margin-bottom: .5rem; }
.flatpickr-months .flatpickr-month { color: var(--ink); }
.flatpickr-current-month {
    font-size: .95rem;
    font-weight: 700;
    color: var(--ink);
}
.flatpickr-current-month .cur-month,
.flatpickr-current-month input.cur-year { font-weight: 700; color: var(--ink); }
.flatpickr-current-month input.cur-year:hover { background: transparent; }
.flatpickr-prev-month,
.flatpickr-next-month {
    top: .35rem;
    padding: .15rem;
    color: var(--muted);
    border-radius: var(--radius-sm);
    transition: background-color .15s ease, color .15s ease;
}
.flatpickr-prev-month:hover,
.flatpickr-next-month:hover {
    background: var(--leaf-soft);
    color: var(--leaf-dark);
}
.flatpickr-weekdays { margin-bottom: .25rem; }
.flatpickr-weekday {
    color: var(--muted);
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.flatpickr-weekwrapper { box-shadow: none; }
.flatpickr-days { width: 100%; }
.flatpickr-day {
    max-width: 2.7rem;
    height: 2.25rem;
    color: var(--ink);
    border-radius: var(--radius-sm);
    font-weight: 500;
    line-height: 2.25rem;
    transition: background-color .12s ease, color .12s ease, border-color .12s ease;
}
.flatpickr-day:hover,
.flatpickr-day.prevMonthDay:hover,
.flatpickr-day.nextMonthDay:hover,
.flatpickr-day.flatpickr-hover {
    background: var(--leaf-soft);
    color: var(--leaf-dark);
    border-color: transparent;
}
.flatpickr-day.today { border-color: var(--leaf); color: var(--leaf-dark); font-weight: 700; }
.flatpickr-day.today:hover { background: var(--leaf); color: #fff; }
.flatpickr-day.available-day {
    background: var(--leaf-soft);
    color: var(--leaf-dark);
    font-weight: 800;
}
.flatpickr-day.available-day:hover { background: var(--leaf); color: #fff; }
.flatpickr-day.selected,
.flatpickr-day.selected:hover {
    background: var(--leaf);
    border-color: var(--leaf);
    color: #fff;
    font-weight: 700;
}
.flatpickr-day.flatpickr-disabled,
.flatpickr-day.flatpickr-disabled:hover,
.flatpickr-day.prevMonthDay,
.flatpickr-day.nextMonthDay {
    background: #eef1ee;
    color: #607066;
    opacity: 1;
    text-decoration: line-through;
    border-color: transparent;
}
.flatpickr-day.flatpickr-disabled.available-day,
.flatpickr-day.flatpickr-disabled.available-day:hover { text-decoration: line-through; }
.flatpickr-day.flatpickr-disabled.notAllowed { cursor: not-allowed; }
.flatpickr-calendar.arrowTop:before { border-bottom-color: var(--line); }
.flatpickr-calendar.arrowTop:after { border-bottom-color: var(--surface); }
.flatpickr-calendar.arrowBottom:before { border-top-color: var(--line); }
.flatpickr-calendar.arrowBottom:after { border-top-color: var(--surface); }
.delivery-loader { display: inline-flex; align-items: center; gap: .4rem; margin-top: .35rem; color: var(--muted); font-size: .78rem; }
.delivery-loader[hidden] { display: none !important; }
.delivery-loader::before { width: .8rem; height: .8rem; border: 2px solid var(--line); border-top-color: var(--leaf); border-radius: 50%; content: ""; animation: delivery-spin .7s linear infinite; }
@keyframes delivery-spin { to { transform: rotate(360deg); } }
@keyframes import-spin { to { transform: rotate(360deg); } }
.button.loading { cursor: wait; }
.button.loading .spinner { display: inline-block; animation: import-spin .7s linear infinite; }
.button .spinner { display: none; }
.empty-state { margin-top: 1.5rem; padding: 1.75rem; border-radius: var(--radius); text-align: center; }
.empty-state h2 { margin-bottom: .35rem; }
.empty-state p { margin-bottom: 0; }

/* ============================================================
   Tables
   ============================================================ */
.table-wrap {  margin-top: 1.5rem;overflow-x: auto; border: 1px solid var(--line); background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
table { width: 100%; border-collapse: collapse; text-align: left; font-size: .82rem; }
th, td { padding: .42rem .6rem; border-bottom: 1px solid var(--line); white-space: nowrap; vertical-align: middle; }
th { color: var(--muted); font-size: .68rem; letter-spacing: .04em; text-transform: uppercase; font-weight: 700; }
td { font-size: .82rem; color: var(--ink, #1f231f); }
tbody tr { transition: background-color .12s ease; }
tbody tr:hover { background: #fafcf9; }
tbody tr:last-child td { border-bottom: 0; }
td .button { /*padding: .32rem .5rem; font-size: .76rem;*/ }

.status { display: inline-block; padding: .18rem .5rem; color: var(--leaf-dark); background: var(--leaf-soft, #e1eee5); border-radius: 999px; font-size: .76rem; font-weight: 650; }
.status[data-status] { text-transform: capitalize; }
.status[data-status="annullato"], .status[data-status="non_ordinabile"] { color: #b3261e; background: #fdeeec; }
.order-link { color: var(--leaf-dark); font-weight: 650; text-decoration: none; }
.order-link:hover { text-decoration: underline; }
.order-badge { display: inline-flex; align-items: center; gap: .5rem; padding: .2rem .55rem; color: var(--leaf-dark); font-weight: 650; font-size: .82rem; background: var(--leaf-soft, #e1eee5); border-radius: var(--radius-sm); text-decoration: none; }
.order-badge:hover { background: #c7e2cd; }
.numeric-cell { text-align: right; }

/* Order detail */
.order-meta { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 0 0 1.25rem; }
.order-meta div, .order-notes { padding: .9rem 1rem; border: 1px solid var(--line); background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.order-meta dt { color: var(--muted); font-size: .78rem; }
.order-meta dd { margin: .25rem 0 0; font-weight: 650; }
.order-notes { margin-top: 1.25rem; }
.order-notes h2 { margin-bottom: .4rem; }

/* Order history actions column */
.order-actions { display: flex; align-items: center; gap: .3rem; justify-content: flex-end; white-space: nowrap; }
.order-actions .icon-button { width: 2rem; height: 2rem; padding: .25rem; }
.order-actions form { display: inline-flex; }

.status-form { display: block; }
.status-form select { min-width: 7rem; padding: .2rem .5rem; border: 1px solid #bcc9bd; border-radius: var(--radius-sm); font: inherit;}
.status-select[data-status="inserito"] { color: var(--muted); }
.status-select[data-status="in_preparazione"] { color: #d97706; font-weight: 600; }
.status-select[data-status="evaso"] { color: var(--leaf-dark); font-weight: 600; }
.status-select[data-status="annullato"] { color: var(--danger); font-weight: 600; }
.client-truncated { display: block; max-width: 320px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.delete-form { display: flex; margin-top: 0; }

/* Selection toolbar */
.selection-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; padding: .6rem .9rem; margin-bottom: 1rem; background: var(--amber-soft); border: 1px solid var(--amber); border-radius: var(--radius-sm); font-size: .9rem; }
.selection-count { font-weight: 650; }
.selection-subtotal { margin-left: auto; font-weight: 700; color: var(--leaf-dark); }
.order-select, #select-all-header { width: auto; cursor: pointer; accent-color: var(--leaf); }
.selection-batch-actions { flex-basis: 100%; display: flex; flex-wrap: wrap; gap: .6rem; padding-top: .6rem; border-top: 1px solid rgba(180, 140, 0, .35); }
#batch-delete-form { display: inline; margin: 0 0 0 auto; }
#batch-status-form { display: inline-flex; align-items: center; gap: .4rem; margin: 0; }
#batch-status-form select { min-width: 9rem; padding: .45rem .6rem; border: 1px solid #bcc9bd; border-radius: var(--radius-sm); font: inherit; background: #fff; }

/* Batch order printing */
.print-controls { display: flex; justify-content: flex-end; margin-bottom: 1rem; }
.print-order { padding: 1rem 0 2rem; }
.print-order + .print-order { border-top: 2px solid var(--line); margin-top: 1rem; }
.print-order-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.print-order-header h1 { font-size: 1.5rem; }
.print-order-meta { display: grid; gap: .25rem; text-align: right; color: var(--muted); }
.print-order-meta strong { color: var(--leaf-dark); }
.print-order-lines th:first-child, .print-order-lines td:first-child { width: 3.5rem; }
.print-order-lines th:nth-child(3), .print-order-lines td:nth-child(3) { width: 9rem; }
.print-order-lines th:last-child, .print-order-lines td:last-child { width: 9rem; }
.print-order-note { margin-top: 1rem; }

/* Dashboard panels */
.dashboard-panels { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 1.4rem; }
.dashboard-panels .panel { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 1rem 1.2rem; box-shadow: var(--shadow-sm); }
.dashboard-panels .panel h2 { font-size: 1rem; margin: 0 0 .7rem; color: var(--leaf-dark); }
.dashboard-panels .panel td { padding: .25rem 0; }
.dashboard-panels .client-truncated { max-width: 240px;}
.plain-list { list-style: none; margin: 0; padding: 0; }
.plain-list li { display: flex; align-items: center; gap: .5rem; padding: .25rem 0; border-bottom: 1px solid #eef3ee; font-size: .82rem; }
.plain-list li:last-child { border-bottom: 0; }
.plain-list a { font-weight: 650; color: var(--leaf-dark); text-decoration: none; }
.plain-list a:hover { text-decoration: underline; }
.plain-list .status { margin-left: auto; white-space: nowrap; }

/* Favorites */
.favorites-section { margin-top: 1.5rem; padding: 1.25rem; border: 1px solid var(--line); background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.favorites-section h2 { margin: 0 0 .75rem; color: var(--leaf-dark); font-size: 1.1rem; }
.favorites-list { list-style: none; padding: 0; margin: 0 0 .5rem; }
.favorites-list li { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .4rem .6rem; margin: .2rem 0; border-radius: var(--radius-sm); background: #fbfcfa; }
.favorite-form { display: flex; align-items: end; gap: .6rem; margin-top: 1rem; }
.favorite-form label { display: grid; gap: .3rem; font-size: .85rem; font-weight: 650; flex: 1; }
.favorite-form select { width: 100%; padding: .55rem .7rem; border: 1px solid #bcc9bd; border-radius: var(--radius-sm); font: inherit; background: #fff; }

/* Text button (e.g. "Rimuovi" favorite) */
.text-button { display: inline-flex; align-items: center; gap: .3rem; padding: 0; color: var(--danger); border: 0; background: transparent; font: inherit; font-size: .82rem; font-weight: 650; cursor: pointer; }
.text-button:hover { text-decoration: underline; }

/* Utility */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.unit-list { display: flex; flex-direction: column; gap: .5rem; margin-bottom: .75rem; }
.unit-row { display: flex; align-items: center; gap: .75rem; }
.unit-row input[type="text"] { flex: 1; }
.unit-row .ord-inline, .form-grid .check-inline { display: flex; align-items: center; gap: .35rem; font-size: .9rem; white-space: nowrap; }

/* ============================================================
   Print
   ============================================================ */
@media print {
    .no-print { display: none !important; }
    .app-header { display: none !important; }
    .print-logo { display: block; }
    body { background: #fff; }
    .page-shell { width: 100%; margin: 0; }
    .table-wrap, .order-meta div, .order-notes { border-color: #bbb; box-shadow: none; }
    .button { box-shadow: none; }
}

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 900px) {
    .form-grid { grid-template-columns: 1fr 1fr; }
    .line-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 720px) {
    .app-header { padding: 0 1rem; gap: .9rem; flex-wrap: wrap; }
    .app-header p { display: none; }
    .page-shell { margin: 1.5rem auto 2.5rem; }
    .page-heading { align-items: flex-start; flex-direction: column; }
    .page-heading .button { width: 100%; }
    .metrics { grid-template-columns: repeat(2, 1fr); }
    .dashboard-panels { grid-template-columns: 1fr; }
    .order-meta { grid-template-columns: 1fr; }
    .form-grid, .line-grid { grid-template-columns: 1fr; }
    .order-line { gap: .7rem; }
    .export-group { margin-left: 0; width: 100%; }
    .export-group .button { flex: 1 1 auto; }
    .selection-subtotal { margin-left: 0; }
    .logout-form { margin-left: 0; }
}

/* Ensure combobox works well in form grid */
@media (max-width: 480px) {
    body { font-size: 14px; }
    .metrics { grid-template-columns: 1fr 1fr; gap: .6rem; }
    .metric strong { font-size: 1.5rem; }
    .filter-form { align-items: stretch; flex-direction: column; }
    .filter-form label { flex: 1; }
    .client-summary-form > .client-summary-client-filter { flex: 1 1 auto; min-width: 0; }
    .filter-form .button { width: 100%; }
    .form-actions { flex-direction: column-reverse; }
    .form-actions .button { width: 100%; }
    .export-group { flex-direction: column; }
    .export-group .button { width: 100%; }
    .combobox-input { padding-right: 2.5rem; }
}
