/* Pannello delle cantine: stessa grafica del mockup approvato. */
:root {
    --ground: #F4F6F5;
    --surface: #FFFFFF;
    --line: #DEE3E2;
    --line-soft: #ECEFEE;
    --field: #CBD2D0;
    --text: #111414;
    --muted: #56605E;
    --primary: #00DABC;
    --primary-soft: #DDF8F3;
    --link: #00705E;
    --link-hover: #004D41;
    --danger: #A4262C;
    --warn-bg: #FDF1DC;
    --warn: #7A4E00;
    --ok-bg: #E3F0E5;
    --ok: #245A2E;
}

* { box-sizing: border-box; }
body { margin: 0; background: var(--ground); color: var(--text); font: 15px/1.45 Inter, system-ui, sans-serif; }
a { color: var(--link); }
a:hover { color: var(--link-hover); }
h1 { margin: 0; font-size: 28px; font-weight: 700; }
.muted { color: var(--muted); }
.small { font-size: 13px; }
.danger { color: var(--danger); font-weight: 600; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.topbar { background: var(--surface); border-bottom: 1px solid var(--line); }
.topbar-in { max-width: 1200px; margin: 0 auto; padding: 0 24px; min-height: 64px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 28px; }
.brand img { display: block; height: 26px; width: auto; }
.menu { display: flex; flex-wrap: wrap; gap: 4px; flex: 1 1 auto; }
.menu a { padding: 12px 14px; border-radius: 8px; color: var(--text); font-size: 14px; text-decoration: none; }
.menu a.current { background: var(--primary-soft); color: var(--link); font-weight: 600; }
.account { display: flex; align-items: center; gap: 12px; font-size: 14px; }
.account form { margin: 0; }
.company-name { font-weight: 500; }

.page > * { min-width: 0; }
.page { max-width: 1200px; margin: 0 auto; padding: 28px 24px 40px; display: flex; flex-direction: column; gap: 20px; }
.page-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px; }
.page-head p { margin: 4px 0 0; font-size: 14px; }

.card { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; }
.licence { padding: 14px 18px; display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; font-size: 14px; }
.meter-row { display: flex; align-items: center; gap: 10px; flex: 1 1 240px; font-size: 13px; }
.meter { flex: 1; height: 8px; border-radius: 4px; background: #ECE9E4; overflow: hidden; }
.meter div { height: 8px; background: var(--link); }

.alert { margin: 0; padding: 12px 16px; border-radius: 10px; background: var(--warn-bg); color: var(--warn); font-size: 14px; font-weight: 500; }

.btn { min-height: 44px; padding: 0 18px; border-radius: 10px; border: 1px solid var(--field); background: var(--surface); color: var(--text); font: 500 14px Inter, sans-serif; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
.btn-primary { background: var(--primary); border-color: var(--primary); color: #0B0B0B; font-weight: 600; }
.btn-primary:hover { background: #00C4A9; }
.btn-quiet { border-radius: 22px; padding: 0 14px; }
.btn-block { width: 100%; }

.filters { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.filters input { flex: 1 1 280px; }
input[type=search], input[type=email], input[type=password], input[type=text] {
    min-height: 44px; padding: 0 14px; border-radius: 10px; border: 1px solid var(--field); background: var(--surface); font: 15px Inter, sans-serif; color: var(--text); width: 100%;
}
.filters input { width: auto; }
input:focus-visible, button:focus-visible, a:focus-visible { outline: 3px solid #7FE9DA; outline-offset: 1px; }
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { min-height: 44px; padding: 0 14px; border-radius: 22px; border: 1px solid var(--field); background: var(--surface); color: var(--text); font: 500 13px Inter, sans-serif; cursor: pointer; }
.chip[aria-pressed=true] { background: var(--text); border-color: var(--text); color: #FFFFFF; }

.table-box { overflow-x: auto; }
.wines { width: 100%; min-width: 640px; border-collapse: collapse; font-size: 14px; }
.wines th { text-align: left; color: var(--muted); font-size: 12.5px; font-weight: 500; padding: 12px 18px; border-bottom: 1px solid var(--line); }
.wines td { padding: 14px 18px; border-bottom: 1px solid var(--line-soft); vertical-align: top; }
.wines tr:last-child td { border-bottom: 0; }
.wine-name { font-weight: 600; }
.warning { color: var(--warn); margin-top: 2px; }
.actions { text-align: right; white-space: nowrap; }
.badge { display: inline-block; padding: 4px 10px; border-radius: 12px; font-size: 12.5px; font-weight: 600; white-space: nowrap; }
.badge-open { background: var(--warn-bg); color: var(--warn); }
.badge-done { background: var(--ok-bg); color: var(--ok); }
.empty { margin: 0; padding: 24px 18px; color: var(--muted); }

.login-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px 16px; }
.login-card { width: 100%; max-width: 400px; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; padding: 32px 28px; display: flex; flex-direction: column; gap: 18px; }
.login-logo { display: block; height: 32px; width: auto; align-self: flex-start; }
.login-card h1 { font-size: 22px; }
.stack { display: flex; flex-direction: column; gap: 16px; }
.field { display: flex; flex-direction: column; gap: 6px; }
.field label { font-size: 13px; font-weight: 500; }

@media (max-width: 640px) {
    .topbar-in, .page { padding-left: 16px; padding-right: 16px; }
    .company-name { display: none; }
    /* Sul telefono ogni vino è un blocco, senza scorrimento laterale. */
    .wines { min-width: 0; }
    .wines thead { display: none; }
    .wines tr { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; padding: 14px 16px; border-bottom: 1px solid var(--line-soft); }
    .wines tr:last-child { border-bottom: 0; }
    .wines td { padding: 0; border: 0; }
    .wines td:nth-child(1) { grid-column: 1 / -1; }
    .wines tr[hidden] { display: none; }
}

/* Scheda del vino */
.head-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.notice { margin: 0; padding: 12px 16px; border-radius: 10px; background: var(--ok-bg); color: var(--ok); font-size: 14px; font-weight: 500; }
.alert ul { margin: 6px 0 0; padding-left: 20px; font-weight: 400; }
.editor { display: grid; grid-template-columns: 200px minmax(0, 1fr) 260px; gap: 20px; align-items: start; }
.section-nav { position: sticky; top: 16px; padding: 8px; display: flex; flex-direction: column; gap: 2px; }
.section-nav a { min-height: 44px; padding: 0 12px; border-radius: 8px; display: flex; align-items: center; color: var(--text); text-decoration: none; font-size: 14px; }
.section-nav a:hover { background: var(--primary-soft); color: var(--link); }
.editor-main { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.editor-side { position: sticky; top: 16px; }
.panel { padding: 22px 24px; display: flex; flex-direction: column; gap: 16px; scroll-margin-top: 16px; }
.panel h2 { margin: 0; font-size: 20px; font-weight: 600; }
.panel > p { margin: 0; font-size: 14px; }
.panel .sub { margin: 4px 0 0; font-size: 14px; font-weight: 600; color: var(--muted); }
.side-h { font-size: 16px !important; }
.grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.span-2 { grid-column: 1 / -1; }
.hint { font-size: 12.5px; color: var(--muted); }
.field input, .field select, .picker select { min-height: 44px; padding: 0 12px; border-radius: 8px; border: 1px solid var(--field); background: var(--surface); font: 15px Inter, sans-serif; color: var(--text); width: 100%; }
.field input[aria-invalid=true] { border-color: var(--danger); }
.check { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; }
.check input { width: 20px; height: 20px; margin: 1px 0 0; flex: none; accent-color: var(--link); }
.picker { display: flex; flex-direction: column; gap: 8px; padding-bottom: 16px; border-bottom: 1px solid var(--line-soft); }
.picker-label { font-size: 14px; font-weight: 600; }
.chips-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.chips-list:empty { display: none; }
.chips-list li { display: inline-flex; align-items: center; gap: 2px; padding: 2px 4px 2px 12px; border-radius: 18px; background: var(--primary-soft); font-size: 14px; }
.allergen { font-weight: 700; }
.icon-btn { min-width: 36px; min-height: 36px; border: 0; border-radius: 18px; background: transparent; color: var(--link); font: 600 16px Inter, sans-serif; cursor: pointer; }
.icon-btn:hover { background: #C5EFE7; }
.presets { display: flex; flex-wrap: wrap; gap: 6px; }
.save-bar { position: sticky; bottom: 0; display: flex; align-items: center; gap: 14px; padding: 12px 0; background: var(--ground); }
.checks { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 14px; }
.checks .ok { color: var(--ok); font-weight: 700; display: inline-block; min-width: 24px; }
.checks .todo { color: var(--warn); font-weight: 700; display: inline-block; min-width: 24px; }
.wine-link { color: var(--text); text-decoration: none; }
.wine-link:hover { color: var(--link); text-decoration: underline; }

@media (max-width: 1000px) {
    .editor { grid-template-columns: minmax(0, 1fr); }
    .section-nav { position: static; flex-direction: row; flex-wrap: wrap; }
    .editor-side { position: static; order: -1; }
    .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
    .grid-2 { grid-template-columns: minmax(0, 1fr); }
    .panel { padding: 18px 16px; }
}
