:root {
  --blue:#165dff;
  --yellow:#ffd43b;
  --coral:#ff5c62;
  --navy:#102044;
  --paper:#f5f7fb;
  --mint:#1fc7a7;
  --muted:#687089;
  --line:#dfe4ef;
  --white:#fff;
}

* { box-sizing:border-box; }
html { width:100%; overflow-x:hidden; }
body { width:100%; min-height:100vh; margin:0; overflow-x:hidden; background:var(--paper); color:var(--navy); font-family:Arial,Helvetica,sans-serif; }
a { color:inherit; text-decoration:none; }
button,input,select,textarea { font:inherit; }
h1,h2 { margin:0; font-weight:1000; letter-spacing:-.06em; line-height:.92; }
h1 em,h2 em { color:var(--coral); font-style:normal; }
p { margin-top:0; }

.eyebrow { display:flex; align-items:center; gap:10px; margin:0 0 20px; color:var(--navy); font-size:10px; font-weight:1000; letter-spacing:.14em; text-transform:uppercase; }
.eyebrow i { width:28px; height:3px; display:block; border-radius:4px; background:var(--coral); }

/* Accesso e prima configurazione */
.auth-page { padding:54px 24px 80px; display:flex; flex-direction:column; align-items:center; background:var(--paper); }
.auth-brand { width:auto; margin:0 0 42px; display:flex; align-items:center; justify-content:center; gap:12px; }
.auth-brand::before { content:""; width:58px; height:58px; flex:0 0 auto; border:2px solid var(--yellow); border-radius:50%; background:var(--yellow) url("../caricatura-zaza-home.webp") center/auto 115% no-repeat; }
.auth-brand img { display:block; width:min(250px,62vw); height:auto; }
.auth-card { position:relative; width:min(720px,100%); padding:58px 54px 48px; border-radius:32px; background:var(--white); box-shadow:12px 14px 0 var(--navy); }
.lock { position:absolute; right:38px; top:38px; width:78px; height:78px; display:grid; place-items:center; border-radius:23px; background:var(--yellow); box-shadow:6px 7px 0 var(--coral); font-size:36px; transform:rotate(4deg); }
.auth-card h1 { max-width:560px; padding-right:85px; font-size:clamp(48px,8vw,78px); }
.auth-lead { max-width:570px; margin:28px 0 30px; color:var(--muted); line-height:1.65; }
.auth-card form { display:grid; gap:17px; }
.auth-card label { display:block; }
.auth-card label>span,.user-identity-grid label>span,.edit-grid label>span,.new-order label>span,.menu-form label>span,.menu-edit label>span { display:block; margin-bottom:7px; color:var(--navy); font-size:10px; font-weight:1000; letter-spacing:.07em; text-transform:uppercase; }
.auth-card input,.user-identity-grid input,.edit-grid input,.edit-grid select,.new-order input,.new-order select,.new-order textarea,.menu-form input,.menu-form select,.menu-form textarea,.menu-edit input,.menu-edit select,.menu-edit textarea,.status-select,.toolbar input,.toolbar select { width:100%; min-height:50px; padding:10px 14px; border:2px solid var(--line); border-radius:14px; outline:0; background:#fff; color:var(--navy); font:inherit; }
.auth-card input:focus,.user-identity-grid input:focus,.edit-grid input:focus,.edit-grid select:focus,.new-order input:focus,.new-order select:focus,.new-order textarea:focus,.menu-form input:focus,.menu-form select:focus,.menu-form textarea:focus,.menu-edit input:focus,.menu-edit select:focus,.menu-edit textarea:focus,.toolbar input:focus,.toolbar select:focus { border-color:var(--blue); box-shadow:0 0 0 4px rgba(22,93,255,.1); }
.auth-card label small { display:block; margin-top:7px; color:#7a8294; font-size:11px; }
.primary,button.primary,a.primary { min-height:48px; padding:0 20px; display:inline-flex; align-items:center; justify-content:center; border:0; border-radius:14px; background:var(--blue); color:#fff; cursor:pointer; font-weight:1000; box-shadow:0 5px 0 rgba(16,32,68,.18); }
.auth-card .primary { width:100%; margin-top:5px; background:var(--coral); }
.error,.success,.notice { padding:14px 17px; border-radius:14px; font-weight:850; line-height:1.45; }
.error { background:#ffe2de; color:#9b2432; }
.success { background:#d9f8ee; color:#08775e; }

/* Intestazione comune */
.topbar { min-height:90px; padding:0 max(32px,calc((100vw - 1680px)/2)); display:flex; align-items:center; justify-content:space-between; gap:24px; border-bottom:1px solid var(--line); background:var(--paper); }
.admin-brand { width:auto; display:flex; align-items:center; gap:11px; }
.admin-brand::before { content:""; width:54px; height:54px; flex:0 0 auto; border:2px solid var(--yellow); border-radius:50%; background:var(--yellow) url("../caricatura-zaza-home.webp") center/auto 115% no-repeat; }
.admin-brand img { display:block; width:min(230px,40vw); height:auto; }
.topbar>span { display:flex; align-items:center; gap:14px; color:var(--muted); font-size:12px; }
.topbar>span b { font-weight:850; }
.logout-pill { padding:10px 15px; border-radius:999px; background:var(--navy); color:#fff; font-size:10px; font-weight:1000; letter-spacing:.06em; text-transform:uppercase; }

/* Struttura pannello */
.page { width:min(1680px,calc(100% - 64px)); margin:0 auto 90px; }
.hero { padding:70px 0 42px; }
.hero h1 { max-width:none; font-size:clamp(54px,7vw,104px); }
.hero>p:last-child { max-width:760px; margin:25px 0 0; color:var(--muted); font-size:16px; line-height:1.65; }
.tabs { display:flex; flex-wrap:wrap; gap:10px; margin:0 0 24px; }
.tabs a { padding:12px 16px; border:2px solid transparent; border-radius:13px; background:#fff; color:var(--navy); font-size:12px; font-weight:900; box-shadow:0 4px 0 var(--line); }
.tabs a.active { border-color:var(--blue); color:var(--blue); box-shadow:0 5px 0 var(--blue); }
.tabs a:hover { transform:translateY(-2px); }
.toolbar { display:flex; align-items:end; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.toolbar form { display:flex; align-items:end; gap:10px; flex-wrap:wrap; }
.toolbar label { color:var(--muted); font-size:10px; font-weight:1000; letter-spacing:.07em; text-transform:uppercase; }
.toolbar input { min-width:280px; }
.toolbar select { min-width:130px; margin-top:7px; }

.stats { margin:22px 0 28px; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.stats article { padding:22px; border-radius:22px; background:#fff; box-shadow:0 6px 0 var(--line); }
.stats article:nth-child(2) { box-shadow:0 6px 0 var(--mint); }
.stats article:nth-child(3) { box-shadow:0 6px 0 var(--yellow); }
.stats article:nth-child(4) { box-shadow:0 6px 0 var(--blue); }
.stats span,.stats strong { display:block; }
.stats span { color:#747d91; font-size:10px; font-weight:1000; letter-spacing:.08em; text-transform:uppercase; }
.stats strong { margin-top:7px; font-size:36px; }

.panel,.users-list { margin-top:24px; padding:28px; border-radius:27px; background:#fff; box-shadow:0 9px 30px rgba(16,32,68,.09); }
.panel>h2,.panel-heading h2,.users-list>h2 { font-size:clamp(30px,4vw,42px); letter-spacing:-.04em; }
.panel-heading { margin-bottom:24px; }
.panel-heading span { display:block; margin-bottom:5px; color:var(--coral); font-size:10px; font-weight:1000; letter-spacing:.1em; text-transform:uppercase; }

.table-wrap { width:100%; overflow-x:auto; }
table { width:100%; min-width:930px; margin-top:20px; border-collapse:collapse; }
th { padding:14px 15px; background:var(--paper); color:#70798e; font-size:9px; font-weight:1000; letter-spacing:.08em; text-align:left; text-transform:uppercase; }
td { padding:17px 15px; border-top:1px solid #edf0f5; vertical-align:middle; font-size:13px; line-height:1.5; }
td a { color:var(--blue); font-weight:900; }
td small { color:#7a8294; }
.badge { width:max-content; padding:6px 9px; display:inline-block; border-radius:999px; background:#fff1c9; color:#8a5a00; font-size:10px; font-weight:1000; text-transform:uppercase; }
.badge.paid { background:#d9f8ee; color:#08775e; }
.inline { display:inline; }
.inline button,.menu-toggle button { padding:8px 10px; border:0; border-radius:10px; background:#eef3ff; color:var(--blue); cursor:pointer; font-size:11px; font-weight:900; }

.edit-grid { margin-top:22px; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:15px; }
.edit-grid .primary { align-self:end; }
.registration-create-panel { padding:0; overflow:hidden; }
.registration-create-panel>summary { padding:24px 28px; display:flex; align-items:center; justify-content:space-between; gap:18px; cursor:pointer; list-style:none; }
.registration-create-panel>summary::-webkit-details-marker { display:none; }
.registration-create-panel>summary span small,.registration-create-panel>summary span strong { display:block; }
.registration-create-panel>summary span small { margin-bottom:5px; color:var(--coral); font-size:10px; font-weight:1000; letter-spacing:.09em; text-transform:uppercase; }
.registration-create-panel>summary span strong { font-size:26px; }
.registration-create-panel>summary>b { padding:10px 14px; border-radius:12px; background:#eef3ff; color:var(--blue); font-size:11px; }
.registration-create-panel[open]>summary { border-bottom:1px solid var(--line); }
.registration-create-panel[open]>summary>b { background:var(--blue); color:#fff; }
.registration-create-content { padding:0 28px 28px; }
.registration-create-content>p { margin:24px 0 0; color:var(--muted); }
.registration-confirmation { grid-column:1/-1; padding:14px 16px; display:flex!important; align-items:flex-start; gap:11px; border-radius:14px; background:var(--paper); }
.registration-confirmation input { width:19px; height:19px; margin:1px 0 0; flex:0 0 auto; accent-color:var(--blue); }
.registration-confirmation>span { margin:0!important; font-size:12px!important; line-height:1.5; letter-spacing:0!important; text-transform:none!important; }
.registration-actions { min-width:390px; display:flex; align-items:center; flex-wrap:nowrap; gap:8px; white-space:nowrap; }
.registration-actions>a { padding:7px 11px; border-radius:10px; background:#eef3ff; }
.registration-actions .inline button { width:auto; white-space:nowrap; }
.registration-actions .inline button.danger { border-color:#ffd3d7; background:#fff0f1; color:#b91f36; }
.registration-actions .inline button.danger:hover { border-color:#e13b50; background:#ffe3e6; }
.food-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.food-grid.single { grid-template-columns:1fr; }
.menu-form,.menu-edit { display:grid; grid-template-columns:minmax(170px,1fr) minmax(150px,.7fr) 150px 170px; gap:12px; align-items:end; }
.menu-form { margin-top:24px; }
.menu-form textarea,.menu-edit textarea { min-height:92px; resize:vertical; }
.menu-form .field-wide,.menu-edit .field-wide { grid-column:1/-1; }
.menu-form>.primary,.menu-edit>.primary { justify-self:start; }
.menu-categories { margin-top:26px; display:grid; gap:24px; }
.menu-category-group { padding:18px; border:2px solid var(--line); border-radius:21px; background:var(--paper); }
.menu-category-group>header { margin-bottom:13px; display:flex; align-items:center; justify-content:space-between; gap:14px; }
.menu-category-group>header small,.menu-category-group>header h3 { display:block; margin:0; }
.menu-category-group>header small { color:var(--coral); font-size:9px; font-weight:1000; letter-spacing:.09em; text-transform:uppercase; }
.menu-category-group>header h3 { margin-top:2px; font-size:24px; letter-spacing:-.04em; }
.menu-category-group>header>span { padding:7px 10px; border-radius:999px; background:#fff; color:var(--muted); font-size:10px; font-weight:1000; }
.menu-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); align-items:start; gap:9px; }
.menu-item-details { overflow:hidden; border:2px solid var(--line); border-radius:16px; background:var(--paper); }
.menu-item-details summary { min-height:82px; padding:11px 13px; display:flex; align-items:center; justify-content:space-between; gap:10px; cursor:pointer; list-style:none; background:#fff; }
.menu-item-details summary::-webkit-details-marker { display:none; }
.menu-item-details summary span,.menu-item-details summary small,.menu-item-details summary strong,.menu-item-details summary em { display:block; }
.menu-item-details summary small { color:var(--coral); font-size:9px; font-weight:1000; letter-spacing:.08em; text-transform:uppercase; }
.menu-item-details summary strong { font-size:13px; line-height:1.2; }
.menu-item-details summary em { margin-top:4px; color:var(--muted); font-size:11px; font-style:normal; }
.menu-item-details summary em.sold-out { color:var(--coral); font-weight:1000; text-transform:uppercase; }
.menu-item-details summary>b { flex:0 0 auto; color:var(--blue); }
.menu-item-details.is-inactive { opacity:.62; }
.menu-item-details[open] { grid-column:1/-1; opacity:1; }
.menu-item-details[open] summary { border-bottom:1px solid var(--line); background:#fff; }
.menu-edit { padding:18px; background:#fff; }
.menu-toggle { padding:0 18px 18px; background:#fff; }
.new-order { display:grid; gap:17px; }
.new-order label { display:block; }
.new-order textarea { min-height:90px; resize:vertical; }
.order-prerequisite { margin:20px 0 17px; padding:16px 18px; border:1px solid #f1d785; border-radius:15px; background:#fff7d8; color:#6f5a19; line-height:1.5; }
.order-prerequisite strong { display:block; margin-bottom:3px; color:var(--navy); }
.new-order select:disabled,.new-order button:disabled { cursor:not-allowed; opacity:.6; }
.pos-order-meta { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:14px; }
.pos-order-meta textarea { min-height:72px; }
.pos-menu { padding:18px; border:2px solid var(--line); border-radius:22px; background:var(--paper); }
.pos-menu-heading { margin-bottom:16px; display:flex; align-items:flex-end; justify-content:space-between; gap:16px; }
.pos-menu-heading strong,.pos-menu-heading small { display:block; }
.pos-menu-heading strong { font-size:18px; }
.pos-menu-heading small { margin-top:4px; color:var(--muted); font-size:11px; }
.pos-category-filter { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:7px; }
.pos-category-filter button { min-height:36px; padding:0 13px; border:1px solid #d5dbea; border-radius:999px; background:#fff; color:var(--navy); cursor:pointer; font-size:10px; font-weight:1000; }
.pos-category-filter button:hover,.pos-category-filter button.active { border-color:var(--blue); background:var(--blue); color:#fff; }
.pos-dish-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(145px,1fr)); gap:9px; }
.pos-dish { position:relative; min-width:0; overflow:hidden; border:2px solid #d7ddeb; border-radius:18px; background:#fff; box-shadow:0 5px 0 #dfe4ef; }
.pos-dish.category-aperitivo,.pos-dish.category-antipasto { border-color:#ff9b9f; background:#fff1f1; }
.pos-dish.category-primo { border-color:#e9be1b; background:#fff9dc; }
.pos-dish.category-secondo { border-color:#64708b; background:#edf0f6; }
.pos-dish.category-contorno { border-color:#4acfb5; background:#e9fbf7; }
.pos-dish.category-piatto-unico,.pos-dish.category-panino { border-color:#6592ff; background:#edf3ff; }
.pos-dish.category-dolce { border-color:#e58ac1; background:#fff0f9; }
.pos-dish.category-bevanda { border-color:#56bfd1; background:#eafaff; }
.pos-dish.sold-out { filter:grayscale(.8); opacity:.58; }
.pos-dish-add { position:relative; width:100%; min-height:116px; padding:11px 11px 9px; display:flex; flex-direction:column; align-items:flex-start; border:0; background:transparent; color:var(--navy); cursor:pointer; text-align:left; }
.pos-dish-add:hover:not(:disabled) { background:rgba(255,255,255,.56); }
.pos-dish-add:active:not(:disabled) { transform:scale(.98); }
.pos-dish-category { margin-bottom:6px; color:var(--coral); font-size:8px; font-weight:1000; letter-spacing:.08em; text-transform:uppercase; }
.pos-dish-add strong { max-width:calc(100% - 22px); font-size:13px; line-height:1.16; }
.pos-dish-price { margin-top:auto; padding-top:10px; font-size:16px; font-weight:1000; }
.pos-dish-add small { margin-top:3px; color:var(--muted); font-size:10px; font-weight:700; }
.pos-dish-badge { position:absolute; right:10px; top:10px; min-width:31px; height:31px; padding:0 8px; display:grid; place-items:center; border-radius:999px; background:var(--coral); color:#fff; box-shadow:0 3px 0 rgba(16,32,68,.22); font-size:13px; }
.pos-dish-controls { height:42px; display:grid; grid-template-columns:42px 1fr 42px; align-items:stretch; border-top:1px solid rgba(16,32,68,.13); background:rgba(255,255,255,.74); }
.pos-dish-controls button { border:0; background:transparent; color:var(--blue); cursor:pointer; font-size:25px; font-weight:1000; }
.pos-dish-controls button:hover:not(:disabled) { background:#fff; }
.pos-dish-controls output { display:grid; place-items:center; border-right:1px solid rgba(16,32,68,.11); border-left:1px solid rgba(16,32,68,.11); font-size:16px; font-weight:1000; }
.pos-order-bar { position:sticky; z-index:8; bottom:12px; padding:12px; display:grid; grid-template-columns:minmax(150px,1fr) auto auto; align-items:center; gap:10px; border:2px solid var(--navy); border-radius:20px; background:rgba(255,255,255,.96); box-shadow:0 12px 35px rgba(16,32,68,.23); backdrop-filter:blur(10px); }
.pos-order-totals { display:flex; align-items:baseline; gap:14px; }
.pos-order-totals span { color:var(--muted); font-size:12px; font-weight:900; }
.pos-order-totals strong { font-size:24px; }
.pos-clear { min-height:48px; padding:0 17px; border:1px solid #d7ddeb; border-radius:14px; background:#fff; color:var(--coral); cursor:pointer; font-weight:1000; }
.pos-order-bar .primary { min-width:220px; }
.orders-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; }
.orders-heading small { color:var(--coral); font-size:9px; font-weight:1000; letter-spacing:.08em; text-transform:uppercase; }
.orders-heading h2 { margin-top:4px; }
.orders-heading>span { padding:9px 13px; border-radius:999px; background:var(--mint); font-size:11px; font-weight:1000; }
.order-filters { margin:16px 0 18px; display:flex; flex-wrap:wrap; gap:8px; }
.order-filters a { min-height:39px; padding:0 13px; display:inline-flex; align-items:center; gap:8px; border:1px solid #d7ddeb; border-radius:999px; background:#fff; color:var(--muted); font-size:11px; font-weight:1000; }
.order-filters a span { min-width:22px; height:22px; padding:0 6px; display:grid; place-items:center; border-radius:999px; background:#edf0f5; font-size:9px; }
.order-filters a.active { border-color:var(--navy); background:var(--navy); color:#fff; box-shadow:0 4px 0 rgba(16,32,68,.18); }
.order-filters a.active span { background:rgba(255,255,255,.18); }
.orders { display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); align-items:start; grid-auto-flow:dense; gap:14px; }
.order { min-width:0; overflow:hidden; border:2px solid var(--navy); border-radius:17px; background:#fff; box-shadow:4px 5px 0 var(--yellow); }
.order header { padding:11px 13px; display:flex; align-items:center; justify-content:space-between; gap:10px; background:var(--navy); color:#fff; }
.order header strong { font-size:14px; }
.order header span { color:var(--yellow); font-size:9px; font-weight:1000; text-transform:uppercase; }
.order-customer { margin:11px 13px 5px; }
.order-customer strong,.order-customer small { display:block; }
.order-customer small { margin-top:3px; color:var(--muted); font-size:10px; }
.order ul { max-height:155px; margin:6px 13px 10px; padding:0 4px 0 0; overflow:auto; display:grid; gap:5px; list-style:none; }
.order li { display:grid; grid-template-columns:32px 1fr; gap:6px; font-size:12px; }
.order li strong { color:var(--coral); }
.order-note { margin:0 13px 10px; padding:8px; border-radius:9px; background:#fff4d4; font-size:11px; }
.order-total { padding:10px 13px; display:flex; align-items:center; justify-content:space-between; border-top:1px solid var(--line); font-size:12px; }
.order-total strong { font-size:15px; }
.order-qr { margin:0 12px 11px; padding:8px; display:grid; grid-template-columns:58px 1fr; align-items:center; gap:9px; border:1px solid #d8e2dc; border-radius:11px; background:#effaf6; }
.order-qr [data-qr-value],.order-qr svg { width:58px; height:58px; display:block; }
.order-qr span strong,.order-qr span small { display:block; }
.order-qr span strong { color:#08775e; font-size:10px; text-transform:uppercase; }
.order-qr span small { margin-top:3px; color:#596c66; font-size:9px; line-height:1.3; }
.order-pay { margin:0 12px 11px; }
.order-pay button { width:100%; min-height:39px; border:0; border-radius:10px; background:var(--mint); color:var(--navy); cursor:pointer; font-size:11px; font-weight:1000; }
.order footer { padding:9px 12px; display:grid; grid-template-columns:42px 1fr; align-items:center; gap:8px; border-top:1px solid var(--line); background:var(--paper); }
.print-icon { width:42px; height:40px; display:grid; place-items:center; border-radius:10px; background:var(--blue); color:#fff; }
.print-icon svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.order footer form { min-width:0; }
.status-select { width:100%; min-width:0; min-height:40px; padding:7px 34px 7px 9px!important; font-size:11px; }
.order.status-ready { box-shadow:4px 5px 0 var(--mint); }
.order.status-delivered,.order.status-cancelled { opacity:.58; }

/* Pubblicazione temporanea dello stand */
.stand-visibility { margin:22px 0 26px; padding:20px 22px; display:flex; align-items:center; justify-content:space-between; gap:22px; border:2px solid var(--line); border-radius:22px; background:#fff; box-shadow:0 6px 0 var(--line); }
.stand-visibility.mode-catalog { border-color:var(--yellow); box-shadow:0 6px 0 var(--yellow); }
.stand-visibility.mode-orders { border-color:var(--mint); box-shadow:0 6px 0 var(--mint); }
.stand-visibility small,.stand-visibility h2,.stand-visibility p { display:block; margin:0; }
.stand-visibility small { color:var(--coral); font-size:9px; font-weight:1000; letter-spacing:.09em; text-transform:uppercase; }
.stand-visibility h2 { margin-top:3px; font-size:28px; letter-spacing:-.04em; }
.stand-visibility p { margin-top:7px; color:var(--muted); font-size:13px; }
.stand-visibility a { margin-top:7px; display:inline-block; color:var(--blue); font-size:11px; font-weight:1000; }
.stand-mode-controls { display:grid; grid-template-columns:repeat(3,minmax(120px,1fr)); gap:8px; }
.stand-visibility button { min-height:48px; padding:0 15px; border:2px solid var(--line); border-radius:14px; background:#fff; color:var(--line); cursor:pointer; font-weight:1000; box-shadow:none; }
.stand-visibility button:hover { border-color:var(--blue); color:var(--blue); }
.stand-visibility button.active { border-color:var(--blue); background:var(--blue); color:#fff; box-shadow:0 5px 0 rgba(16,32,68,.18); }
.stand-visibility.mode-catalog button.active { border-color:#c79700; background:var(--yellow); color:var(--line); }
.stand-visibility.mode-orders button.active { border-color:#079c7e; background:var(--mint); color:var(--line); }
.order-source { color:var(--blue)!important; font-weight:900; text-transform:uppercase; }

/* Scanner QR cucina */
.kitchen-scan-panel { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr); gap:22px; }
.kitchen-camera { min-height:390px; overflow:hidden; display:grid; place-items:center; border-radius:22px; background:var(--navy); position:relative; }
.kitchen-camera video { width:100%; height:100%; object-fit:cover; display:block; }
.kitchen-camera::after { content:""; width:min(260px,68%); aspect-ratio:1; border:4px solid var(--yellow); border-radius:24px; position:absolute; box-shadow:0 0 0 999px rgba(16,32,68,.34); pointer-events:none; }
.kitchen-camera-placeholder { max-width:420px; padding:30px; color:#fff; text-align:center; line-height:1.55; }
.kitchen-camera-placeholder strong { display:block; margin-bottom:8px; color:var(--yellow); font-size:24px; }
.kitchen-scan-actions { align-content:start; display:grid; gap:14px; }
.kitchen-scan-actions h2 { font-size:34px; }
.kitchen-scan-actions>p { margin:0; color:var(--muted); line-height:1.55; }
.kitchen-scan-actions button,.kitchen-scan-actions .primary { width:100%; }
.kitchen-token-form { padding-top:14px; display:grid; gap:9px; border-top:1px solid var(--line); }
.kitchen-token-form label { color:var(--muted); font-size:10px; font-weight:1000; text-transform:uppercase; }
.kitchen-token-form input { width:100%; min-height:50px; padding:10px 14px; border:1px solid #d7ddeb; border-radius:14px; }
.kitchen-scan-status { margin:0; padding:12px 14px; border-radius:12px; background:#fff7d8; color:#6f5a19; font-size:12px; font-weight:850; }

/* Utenti e permessi */
.notice { margin:18px 0; }
.users-admin-page .user-panel { margin-top:0; }
.user-form { display:grid; gap:22px; }
.user-identity-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:15px; }
.user-identity-grid input:disabled { background:#f1f3f7; color:#7b8394; }
.permission-grid { margin:0; padding:18px; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:11px; border:2px solid #e5e8ef; border-radius:18px; }
.permission-grid legend { padding:0 8px; font-size:11px; font-weight:1000; text-transform:uppercase; }
.permission-grid label,.active-account { margin:0; padding:13px; display:flex; align-items:flex-start; gap:11px; border-radius:13px; background:var(--paper); cursor:pointer; }
.permission-grid input,.active-account input { width:19px; height:19px; flex:0 0 auto; accent-color:var(--blue); }
.permission-grid span,.permission-grid strong,.permission-grid small,.active-account span,.active-account strong,.active-account small { display:block; }
.permission-grid strong,.active-account strong { font-size:13px; }
.permission-grid small,.active-account small { margin-top:4px; color:#778095; font-size:11px; line-height:1.4; }
.active-account { width:max-content; }
.users-list { margin-top:30px; }
.users-table-wrap { width:100%; overflow-x:auto; }
.users-table { min-width:850px; margin-top:0; }
.user-table-row>td:first-child strong,.user-table-row>td:first-child small { display:block; }
.user-table-row>td:first-child small { margin-top:4px; }
.user-status { display:inline-flex; align-items:center; gap:8px; font-size:11px; font-weight:900; }
.user-status i { width:10px; height:10px; border-radius:50%; }
.user-status.active i { background:var(--mint); box-shadow:0 0 0 4px rgba(31,199,167,.15); }
.user-status.inactive i { background:#a9afbc; }
.permission-count { padding:7px 10px; border-radius:999px; background:#edf2ff; color:var(--blue); font-size:10px; font-weight:1000; }
.user-expand { padding:9px 13px; border:0; border-radius:10px; background:var(--navy); color:#fff; cursor:pointer; font-size:11px; font-weight:1000; }
.user-details-row>td { padding:0; background:#f8f9fc; }
.user-details-row .user-form { padding:24px; border-top:2px solid var(--blue); }
.user-form-footer { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.user-form-footer>small { color:#7a8294; }
.user-account-actions { margin:0 24px 24px; padding-top:18px; display:flex; align-items:center; justify-content:flex-end; gap:10px; border-top:1px solid var(--line); }
.user-account-actions form { margin:0; }
.user-account-actions button { min-height:42px; }
.user-account-actions .credential-button:disabled { opacity:.45; cursor:not-allowed; transform:none; box-shadow:none; }
.sponsor-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; align-items:end; }
.sponsor-form>label>span { display:block; margin-bottom:7px; font-size:11px; font-weight:900; text-transform:uppercase; }
.sponsor-field-help { margin-top:6px; display:block; color:var(--muted); font-size:10px; line-height:1.35; }
.sponsor-form input { width:100%; min-height:46px; padding:10px 12px; border:1px solid #d7ddea; border-radius:12px; background:#fff; }
.sponsor-form .active-account { width:max-content; min-height:46px; padding:7px 11px; align-self:end; align-items:center; gap:8px; }
.sponsor-form .active-account input { width:16px; height:16px; min-height:16px; padding:0; }
.sponsor-form .active-account strong { font-size:11px; line-height:1.2; }
.sponsor-form .active-account small { margin-top:2px; font-size:9px; line-height:1.2; }
.sponsor-cards { display:grid; gap:16px; }
.sponsor-card { padding:18px; display:grid; grid-template-columns:150px 1fr; gap:20px; align-items:center; border:1px solid #e3e7f0; border-radius:20px; background:#fff; box-shadow:0 8px 24px rgba(16,32,68,.06); }
.sponsor-card>img { width:100%; height:105px; object-fit:contain; }
.sponsor-card-brand-fallback { width:100%; min-height:120px; margin:auto; padding:12px; display:grid; place-items:center; border:2px dashed var(--yellow); border-radius:15px; background:#fff9d9; color:var(--navy); text-align:center; text-transform:uppercase; overflow-wrap:anywhere; font-size:clamp(25px,2.8vw,38px); letter-spacing:-.045em; line-height:1; }
.sponsor-empty { margin:0; padding:28px; border:2px dashed var(--line); border-radius:18px; color:var(--muted); text-align:center; }
.inactive-sponsors { margin-top:34px; padding:22px; border:1px solid var(--line); border-radius:22px; background:#eef1f6; }
.inactive-sponsors .panel-heading { margin-bottom:15px; }
.inactive-sponsors .panel-heading h2 { margin-bottom:5px; font-size:28px; }
.inactive-sponsors .panel-heading p { margin:0; color:var(--muted); font-size:12px; }
.inactive-sponsor-list { display:grid; gap:8px; }
.inactive-sponsor-row { min-height:62px; padding:8px 10px; display:grid; grid-template-columns:46px minmax(180px,1fr) 120px auto; align-items:center; gap:12px; border:1px solid #dce1eb; border-radius:14px; background:#fff; }
.inactive-sponsor-row>img,.inactive-sponsor-placeholder { width:46px; height:46px; object-fit:contain; border-radius:10px; background:#f7f8fb; }
.inactive-sponsor-placeholder { display:grid; place-items:center; color:var(--muted); font-weight:1000; }
.inactive-sponsor-row>strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; }
.inactive-sponsor-amount { color:var(--muted); text-align:right; font-size:12px; font-weight:800; }
.inactive-sponsor-row form { margin:0; }
.sponsor-activate { min-height:38px; padding:0 17px; border:0; border-radius:11px; background:var(--mint); color:var(--navy); cursor:pointer; font-size:11px; font-weight:1000; text-transform:uppercase; }
.sponsor-activate:hover { filter:saturate(1.12); transform:translateY(-1px); }
.sponsor-card-destinations { grid-template-columns:190px minmax(0,1fr); align-items:start; }
.sponsor-main-preview { position:sticky; top:20px; display:grid; gap:12px; }
.sponsor-preview-list { display:grid; gap:9px; }
.sponsor-preview-item { position:relative; min-width:0; margin:0; padding:25px 8px 8px; display:grid; place-items:center; height:105px; overflow:hidden; border:1px solid #dfe4ed; border-radius:13px; background:#f5f6f9; opacity:.6; }
.sponsor-preview-item.is-selected { border-color:#81dac1; background:#f5fffb; opacity:1; box-shadow:0 0 0 2px rgba(31,199,167,.1); }
.sponsor-preview-item figcaption { position:absolute; top:6px; left:7px; padding:4px 6px; border-radius:999px; background:#fff; color:var(--muted); font-size:7px; font-weight:1000; letter-spacing:.04em; text-transform:uppercase; }
.sponsor-preview-item.is-selected figcaption { background:var(--mint); color:var(--navy); }
.sponsor-preview-item img { width:100%; height:68px; object-fit:contain; }
.sponsor-preview-item strong { max-width:100%; color:var(--navy); text-align:center; text-transform:uppercase; font-size:18px; line-height:.95; overflow-wrap:anywhere; }
.sponsor-preview-screen { aspect-ratio:16/9; height:auto; min-height:105px; }
.sponsor-destination-summary { display:flex; flex-wrap:wrap; gap:5px; }
.sponsor-destination-summary span { padding:6px 8px; border-radius:999px; background:#e4f8f1; color:#08775e; font-size:8px; font-weight:1000; text-transform:uppercase; }
.sponsor-destination-form { align-items:start; }
.sponsor-destinations { grid-column:1/-1; margin:0; padding:13px; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; border:1px solid #d7ddea; border-radius:15px; }
.sponsor-destinations legend { padding:0 7px; font-size:10px; font-weight:1000; text-transform:uppercase; }
.sponsor-destinations label { min-height:44px; padding:9px 11px; display:flex; align-items:center; gap:8px; border-radius:11px; background:var(--paper); cursor:pointer; font-size:11px; font-weight:900; }
.sponsor-destinations input { width:17px!important; min-height:17px!important; accent-color:var(--blue); }
.sponsor-image-fields { grid-column:1/-1; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.sponsor-image-fields label { padding:12px; border:1px solid #e1e5ed; border-radius:14px; background:#fbfcff; }
.sponsor-image-fields span,.sponsor-image-fields small { display:block; }.sponsor-image-fields span { margin-bottom:7px; font-size:9px; font-weight:1000; text-transform:uppercase; }.sponsor-image-fields small { margin-top:5px; color:var(--muted); font-size:9px; }
.sponsor-image-rule { grid-column:1/-1; margin:0; padding:11px 13px; border-radius:12px; background:#fff8d7; color:#66551a; font-size:10px; font-weight:750; line-height:1.5; }
.screen-launch { margin:0 0 26px; padding:19px; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:22px; border-radius:20px; background:#fff; box-shadow:0 7px 0 var(--yellow); }
.screen-launch .year-select { margin:0; }.screen-launch>div strong,.screen-launch>div span { display:block; }.screen-launch>div strong { font-size:18px; }.screen-launch>div span { margin-top:4px; color:var(--muted); font-size:11px; }
.screen-open-button { padding:15px 18px; border-radius:13px; text-decoration:none; white-space:nowrap; }
.screen-slide-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:14px; }
.screen-slide-list article { padding:13px; border:1px solid var(--line); border-radius:17px; background:#fff; box-shadow:0 7px 20px rgba(16,32,68,.06); }
.screen-slide-list article>div { height:125px; display:grid; place-items:center; border-radius:12px; background:var(--paper); overflow:hidden; }.screen-slide-list img { width:100%; height:100%; object-fit:contain; }.screen-slide-list article>div strong { padding:10px; text-align:center; text-transform:uppercase; font-size:24px; overflow-wrap:anywhere; }
.screen-slide-list h2 { margin:12px 0 3px; font-size:17px; }.screen-slide-list p { margin:0; color:var(--muted); font-size:11px; }.screen-slide-list article>span { margin-top:10px; display:inline-block; padding:6px 9px; border-radius:999px; background:#fff4c2; font-size:9px; font-weight:1000; text-transform:uppercase; }
.screen-timer-form { margin-top:12px; padding-top:12px; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:7px; border-top:1px solid var(--line); }
.screen-timer-form label b { margin-bottom:5px; display:block; color:var(--muted); font-size:8px; text-transform:uppercase; }.screen-timer-form input { width:100%; min-height:40px!important; padding:8px 10px!important; }.screen-timer-form button { min-height:40px; padding:0 12px; border:0; border-radius:11px; background:var(--navy); color:#fff; cursor:pointer; font-size:10px; font-weight:1000; }.screen-timer-form small { grid-column:1/-1; color:var(--muted); font-size:8px; }
.screen-repeat-form { margin:0 0 24px; padding:15px 18px; display:flex; align-items:center; justify-content:space-between; gap:18px; border:1px solid #dfe4ed; border-radius:17px; background:#fff; }
.screen-repeat-form>label { display:flex; align-items:center; gap:12px; cursor:pointer; }.screen-repeat-form input { width:19px; height:19px; accent-color:var(--blue); }.screen-repeat-form span,.screen-repeat-form strong,.screen-repeat-form small { display:block; }.screen-repeat-form strong { font-size:13px; }.screen-repeat-form small { margin-top:3px; color:var(--muted); font-size:10px; }.screen-repeat-form button { min-height:42px; padding:0 14px; border:0; border-radius:12px; background:var(--navy); color:#fff; cursor:pointer; font-size:10px; font-weight:1000; }
.screen-readonly-note { margin:12px 0 0!important; padding-top:10px; border-top:1px solid var(--line); color:var(--muted)!important; font-size:9px!important; font-weight:850; text-transform:uppercase; }
@media(max-width:760px){.sponsor-card-destinations{grid-template-columns:1fr}.sponsor-main-preview{position:static}.sponsor-destinations,.sponsor-image-fields{grid-template-columns:1fr}.screen-launch{grid-template-columns:1fr}.screen-open-button{text-align:center}.screen-repeat-form{align-items:stretch;flex-direction:column}.screen-slide-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
.activity-form { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; align-items:end; }
.activity-form>label>span { display:block; margin-bottom:7px; font-size:11px; font-weight:900; text-transform:uppercase; }
.activity-form input,.activity-form select,.activity-form textarea { width:100%; min-height:46px; padding:10px 12px; border:1px solid #d7ddea; border-radius:12px; background:#fff; color:var(--navy); }
.activity-form textarea { resize:vertical; }
.activity-form .wide { grid-column:1/-1; }
.activity-days { min-height:82px; margin:0; padding:11px 14px; display:flex; gap:18px; border:1px solid #d7ddea; border-radius:14px; }
.activity-days legend { padding:0 6px; font-size:10px; font-weight:1000; text-transform:uppercase; }
.activity-days label { display:flex; align-items:center; gap:7px; font-weight:900; }
.activity-days input { width:20px; min-height:20px; accent-color:var(--blue); }
.activity-cards { display:grid; gap:12px; }
.activity-card { overflow:hidden; border:1px solid #dfe4ee; border-radius:17px; background:#fff; box-shadow:0 6px 18px rgba(16,32,68,.05); }
.activity-card[data-inactive] { opacity:.58; }
.activity-card summary { padding:16px; display:grid; grid-template-columns:150px minmax(220px,1fr) 180px 100px; align-items:center; gap:14px; cursor:pointer; }
.activity-card summary strong { font-size:15px; }
.activity-card summary time { text-align:right; font-weight:900; }
.activity-day { width:max-content; padding:7px 10px; border-radius:999px; background:#edf3ff; color:var(--blue); font-size:10px; font-weight:1000; text-transform:uppercase; }
.activity-card .activity-form { padding:18px; border-top:1px solid #e5e8ef; background:#f8faff; }

/* Attività collaborative */
.activity-stats article:nth-child(4) strong { color:#b42336; }
.activity-assignees { margin:0; padding:14px; display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:9px; border:1px solid #d7ddea; border-radius:16px; }
.activity-assignees legend { padding:0 7px; font-size:10px; font-weight:1000; letter-spacing:.06em; text-transform:uppercase; }
.activity-assignees label { margin:0; padding:11px; display:flex; align-items:flex-start; gap:9px; border-radius:12px; background:var(--paper); cursor:pointer; }
.activity-assignees input { width:19px!important; min-height:19px!important; flex:0 0 auto; accent-color:var(--blue); }
.activity-assignees span,.activity-assignees strong,.activity-assignees small { display:block; }
.activity-assignees strong { font-size:12px; }
.activity-assignees small { margin-top:3px; color:var(--muted); font-size:10px; line-height:1.35; }
.activity-form label>small { margin-top:5px; display:block; color:var(--muted); font-size:10px; }
.activity-card[data-overdue] { border-color:#ff9aa4; box-shadow:0 6px 0 #ffbbc2; }
.activity-card summary { grid-template-columns:140px minmax(220px,1fr) minmax(160px,.7fr) 145px 110px; }
.activity-card summary>span:nth-child(3) { color:var(--muted); font-size:12px; }
.activity-status,.finance-status { width:max-content; padding:7px 10px; border-radius:999px; font-size:10px; font-weight:1000; text-transform:uppercase; }
.status-todo { background:#fff1c9; color:#8a5a00; }
.status-in_progress { background:#e5edff; color:var(--blue); }
.status-completed { background:#d9f8ee; color:#08775e; }
.activity-card-body { padding:20px; border-top:1px solid #e5e8ef; background:#fbfcff; }
.activity-overview { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:24px; }
.activity-overview>p { margin:0; color:#4f5b72; line-height:1.6; }
.activity-overview dl { margin:0; display:flex; flex-wrap:wrap; justify-content:flex-end; gap:10px; }
.activity-overview dl>div { min-width:120px; padding:10px 12px; border-radius:12px; background:#fff; }
.activity-overview dt { color:var(--muted); font-size:9px; font-weight:1000; text-transform:uppercase; }
.activity-overview dd { margin:4px 0 0; font-size:12px; font-weight:900; }
.overdue-text { color:#b42336; }
.activity-status-form,.activity-upload-form { margin-top:16px; padding:14px; display:flex; align-items:end; gap:10px; border-radius:15px; background:#fff; }
.activity-status-form label,.activity-upload-form label { flex:1; }
.activity-status-form label>span,.activity-upload-form label>span { margin-bottom:6px; display:block; color:var(--muted); font-size:9px; font-weight:1000; text-transform:uppercase; }
.activity-status-form select,.activity-upload-form input { width:100%; min-height:46px; padding:9px 12px; }
.activity-documents { margin-top:16px; padding:17px; border:1px solid var(--line); border-radius:17px; background:#fff; }
.activity-documents>div { display:flex; align-items:center; justify-content:space-between; gap:15px; }
.activity-documents h3 { margin:0; font-size:18px; }
.activity-documents>div>span { color:var(--muted); font-size:10px; font-weight:1000; text-transform:uppercase; }
.activity-documents>p { margin:13px 0 0; color:var(--muted); }
.activity-documents ul { margin:13px 0 0; padding:0; display:grid; gap:8px; list-style:none; }
.activity-documents li { padding:10px 12px; display:flex; align-items:center; justify-content:space-between; gap:12px; border-radius:11px; background:var(--paper); }
.activity-documents li a strong,.activity-documents li a small { display:block; }
.activity-documents li a { color:var(--blue); }
.activity-documents li a small { margin-top:3px; color:var(--muted); font-size:9px; }
.activity-edit { margin-top:16px; overflow:hidden; border:1px solid var(--line); border-radius:16px; background:#fff; }
.activity-edit>summary { padding:13px 16px; color:var(--blue); cursor:pointer; font-size:11px; font-weight:1000; text-transform:uppercase; }
.activity-edit .activity-form { border-top:1px solid var(--line); }
.activity-delete-form,.finance-delete-form { padding:0 18px 18px; background:#f8faff; }
button.danger { min-height:40px; padding:0 13px; border:1px solid #ffd3d7; border-radius:12px; background:#fff0f1; color:#b91f36; cursor:pointer; font-weight:900; }
.empty-activity-list { margin:0; padding:30px; border:2px dashed var(--line); border-radius:18px; color:var(--muted); text-align:center; }

/* Bilancio evento */
.finance-toolbar { display:flex; align-items:end; justify-content:space-between; gap:16px; }
.finance-toolbar .year-select { margin:0; }
.finance-stats article:nth-child(3) { background:linear-gradient(135deg,var(--navy),#21447e); color:#fff; }
.finance-stats article:nth-child(3) span { color:#d4def3; }
.finance-stats article:nth-child(3) strong { color:var(--yellow); }
.finance-stats article.negative strong { color:var(--coral); }
.finance-stats strong { font-size:clamp(24px,3vw,36px); }
.finance-sources { margin:22px 0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.finance-sources article { padding:24px; border-radius:22px; background:#fff; box-shadow:0 6px 0 var(--mint); }
.finance-sources article:last-child { box-shadow:0 6px 0 var(--yellow); }
.finance-sources span { color:var(--coral); font-size:9px; font-weight:1000; letter-spacing:.08em; text-transform:uppercase; }
.finance-sources h2 { margin-top:5px; font-size:28px; letter-spacing:-.04em; }
.finance-sources strong { margin-top:16px; display:block; font-size:34px; }
.finance-sources small { margin-top:5px; display:block; color:var(--muted); }
.finance-sources a { margin-top:14px; display:inline-block; color:var(--blue); font-size:11px; font-weight:1000; }
.finance-form { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; align-items:end; }
.finance-form label>span { margin-bottom:7px; display:block; font-size:10px; font-weight:1000; letter-spacing:.06em; text-transform:uppercase; }
.finance-form input,.finance-form select,.finance-form textarea { width:100%; min-height:46px; padding:10px 12px; }
.finance-form textarea { resize:vertical; }
.finance-form .wide { grid-column:1/-1; }
.finance-entry-list { margin-top:30px; }
.finance-cards { display:grid; gap:11px; }
.finance-card { overflow:hidden; border:1px solid var(--line); border-radius:17px; background:#fff; box-shadow:0 6px 18px rgba(16,32,68,.05); }
.finance-card[data-type="cost"] { border-left:5px solid var(--coral); }
.finance-card[data-type="income"] { border-left:5px solid var(--mint); }
.finance-card>summary { padding:15px 17px; display:grid; grid-template-columns:110px minmax(220px,1fr) 170px 110px 130px 105px; align-items:center; gap:12px; cursor:pointer; }
.finance-card>summary strong { font-size:14px; }
.finance-card>summary time,.finance-card>summary b { text-align:right; }
.finance-type { color:var(--coral); font-size:10px; font-weight:1000; text-transform:uppercase; }
.finance-card[data-type="income"] .finance-type { color:#08775e; }
.finance-status.status-planned { background:#fff1c9; color:#8a5a00; }
.finance-status.status-confirmed { background:#d9f8ee; color:#08775e; }
.finance-card .finance-form { padding:18px; border-top:1px solid var(--line); background:#f8faff; }

/* Controlli moderni del pannello */
.page input:not([type="checkbox"]):not([type="hidden"]),.page select,.page textarea {
  border:1px solid #d7ddeb;
  border-radius:16px;
  background-color:#fff;
  color:var(--navy);
  box-shadow:0 5px 14px rgba(16,32,68,.06),inset 0 1px 0 rgba(255,255,255,.85);
  outline:0;
  transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease;
}
.page input:not([type="checkbox"]):not([type="hidden"]):focus,.page select:focus,.page textarea:focus {
  border-color:var(--blue);
  box-shadow:0 0 0 4px rgba(22,93,255,.12),0 8px 20px rgba(16,32,68,.08);
}
.page select {
  appearance:none;
  padding-right:46px!important;
  background-image:
    linear-gradient(45deg,transparent 50%,var(--blue) 50%),
    linear-gradient(135deg,var(--blue) 50%,transparent 50%);
  background-position:calc(100% - 20px) 52%,calc(100% - 14px) 52%;
  background-size:6px 6px,6px 6px;
  background-repeat:no-repeat;
  cursor:pointer;
}
.primary,button.primary,a.primary,.user-expand {
  border:0;
  border-radius:15px;
  background:linear-gradient(135deg,var(--blue),#6540f5);
  color:#fff;
  box-shadow:0 5px 0 rgba(16,32,68,.20),0 10px 22px rgba(22,93,255,.16);
  transition:transform .18s ease,box-shadow .18s ease,filter .18s ease;
}
.menu-form>.primary { white-space:nowrap; }
.primary:hover,button.primary:hover,a.primary:hover,.user-expand:hover {
  transform:translateY(-2px);
  filter:saturate(1.08);
  box-shadow:0 7px 0 rgba(16,32,68,.18),0 14px 28px rgba(22,93,255,.20);
}
.primary:active,button.primary:active,a.primary:active,.user-expand:active { transform:translateY(2px); box-shadow:0 2px 0 rgba(16,32,68,.20); }
.tabs a { border:1px solid #e0e5ef; border-radius:15px; box-shadow:0 5px 14px rgba(16,32,68,.07); transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease; }
.tabs a.active { border-color:var(--blue); background:#eef3ff; box-shadow:0 5px 0 var(--blue),0 10px 22px rgba(22,93,255,.12); }
.tabs a:hover { border-color:var(--blue); box-shadow:0 8px 20px rgba(16,32,68,.11); }
.inline button,.menu-toggle button {
  min-height:40px;
  padding:0 14px;
  border:1px solid #d7ddeb;
  border-radius:13px;
  background:#fff;
  color:var(--blue);
  box-shadow:0 4px 12px rgba(16,32,68,.06);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.inline button:hover,.menu-toggle button:hover { border-color:var(--blue); transform:translateY(-2px); box-shadow:0 8px 18px rgba(16,32,68,.10); }
.page button:focus-visible,.page a:focus-visible,.page select:focus-visible { outline:3px solid var(--yellow); outline-offset:3px; }

/* Incassi dello stand */
.revenue-filter-panel { display:flex; align-items:flex-end; justify-content:space-between; gap:22px; }
.revenue-filter { display:flex; align-items:flex-end; flex-wrap:wrap; gap:12px; }
.revenue-filter label { display:grid; gap:7px; }
.revenue-filter label span { color:#687089; font-size:10px; font-weight:1000; letter-spacing:.08em; text-transform:uppercase; }
.revenue-filter input { min-width:168px; min-height:50px; padding:0 14px; border:1px solid #d7ddeb; border-radius:14px; background:#fff; color:var(--navy); font:inherit; font-weight:800; }
.revenue-filter .primary { min-height:50px; padding:0 22px; }
.revenue-shortcuts { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }
.revenue-shortcuts a { min-height:40px; padding:0 14px; display:inline-flex; align-items:center; border:1px solid #d7ddeb; border-radius:999px; background:#fff; color:var(--blue); font-size:12px; font-weight:1000; text-decoration:none; }
.revenue-shortcuts a:hover { border-color:var(--blue); background:#eef3ff; }
.revenue-stats article:first-child { background:linear-gradient(135deg,var(--navy),#21447e); color:#fff; }
.revenue-stats article:first-child span { color:#cfdcff; }
.revenue-stats article:first-child strong { color:var(--yellow); }
.revenue-list { margin-top:22px; }
.revenue-list .orders-heading { margin-bottom:18px; }
.table-wrap { overflow:auto; border:1px solid #e0e5ef; border-radius:18px; }
.revenue-table { width:100%; min-width:720px; border-collapse:collapse; }
.revenue-table th,.revenue-table td { padding:15px 16px; border-bottom:1px solid #e8ebf2; text-align:left; }
.revenue-table th { background:#f5f7fb; color:#687089; font-size:10px; font-weight:1000; letter-spacing:.08em; text-transform:uppercase; }
.revenue-table th:nth-last-child(-n+3),.revenue-table td:nth-last-child(-n+3) { text-align:right; }
.revenue-table tbody tr:hover { background:#fafbff; }
.revenue-table tbody tr:last-child td { border-bottom:0; }
.revenue-category { padding:5px 9px; display:inline-flex; border-radius:999px; background:#fff2b3; color:#614e00; font-size:10px; font-weight:1000; text-transform:uppercase; }
.revenue-table tfoot td { border-top:2px solid var(--navy); border-bottom:0; background:#eef3ff; color:var(--navy); font-weight:1000; }

/* Comanda da stampare */
.ticket-page { min-height:100vh; padding:1px 0 30px; background:#edf0f6; }
.ticket { width:80mm; margin:20px auto; padding:5mm 4mm; overflow-wrap:anywhere; background:#fff; color:#000; font-size:13px; line-height:1.3; }
.ticket+.ticket { margin-top:28px; }
.ticket header { padding-bottom:3mm; text-align:center; border-bottom:1px dashed #000; }
.ticket header>span { display:block; font-size:10px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.ticket-department { margin:2.5mm auto 0; padding:1.5mm 3mm; display:table; border:1.2mm solid #000; font-size:19px; font-weight:1000; letter-spacing:.12em; line-height:1; }
.ticket-part { margin-top:1.5mm; display:block; font-size:9px; font-weight:800; letter-spacing:.03em; text-transform:uppercase; }
.ticket h1 { margin-top:2mm; font-size:26px; letter-spacing:-.04em; line-height:1; }
.ticket h2 { margin-top:1.5mm; font-size:20px; letter-spacing:-.02em; line-height:1.08; }
.ticket section,.ticket ul { margin:0; padding:3mm 0; border-bottom:1px dashed #000; }
.ticket p { margin:0; }
.ticket ul { list-style:none; }
.ticket li { margin:2mm 0; display:grid; grid-template-columns:10mm minmax(0,1fr); align-items:start; gap:2mm; font-size:16px; font-weight:800; line-height:1.15; }
.ticket li strong { width:auto; display:block; font-size:21px; line-height:1; text-align:right; }
.ticket-qr { padding:5mm 0 2mm; display:grid; place-items:center; border-bottom:0!important; }
.ticket-qr [data-qr-value],.ticket-qr svg { width:50mm; height:50mm; display:block; }
.ticket-print { width:46px; height:44px; margin-top:5mm; display:grid; place-items:center; border:0; border-radius:8px; background:#000; color:#fff; cursor:pointer; }
.ticket-print svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }

@media(max-width:800px) {
  .auth-page { padding:32px 20px 55px; }
  .auth-brand { margin-bottom:30px; }
  .auth-card { padding:48px 22px 30px; border-radius:25px; box-shadow:8px 9px 0 var(--navy); }
  .lock { right:20px; top:22px; width:62px; height:62px; font-size:28px; }
  .auth-card h1 { padding-right:55px; }
  .topbar { align-items:flex-start; padding:18px 20px; flex-direction:column; }
  .topbar>span { width:100%; justify-content:space-between; }
  .page { width:calc(100% - 40px); margin-bottom:55px; }
  .hero { padding:48px 0 32px; }
  .stats { grid-template-columns:1fr 1fr; }
  .food-grid,.edit-grid,.user-identity-grid,.permission-grid,.menu-form,.menu-edit,.kitchen-scan-panel,.sponsor-form,.sponsor-card,.activity-form,.activity-card summary,.finance-form,.finance-card>summary { grid-template-columns:1fr; }
  .activity-form .wide { grid-column:auto; }
  .activity-card summary time { text-align:left; }
  .activity-overview { grid-template-columns:1fr; }
  .activity-overview dl { justify-content:flex-start; }
  .activity-status-form,.activity-upload-form { align-items:stretch; flex-direction:column; }
  .finance-toolbar { align-items:stretch; flex-direction:column; }
  .finance-toolbar .primary { width:100%; }
  .finance-sources { grid-template-columns:1fr; }
  .finance-form .wide { grid-column:auto; }
  .inactive-sponsor-row { grid-template-columns:42px minmax(0,1fr) auto; gap:9px; }
  .inactive-sponsor-row>img,.inactive-sponsor-placeholder { width:42px; height:42px; grid-row:1/3; }
  .inactive-sponsor-row>strong { grid-column:2; grid-row:1; align-self:end; }
  .inactive-sponsor-amount { grid-column:2; grid-row:2; align-self:start; text-align:left; }
  .inactive-sponsor-row form { grid-column:3; grid-row:1/3; }
  .finance-card>summary time,.finance-card>summary b { text-align:left; }
  .pos-order-meta { grid-template-columns:1fr; }
  .pos-menu-heading { align-items:flex-start; flex-direction:column; }
  .pos-category-filter { justify-content:flex-start; }
  .pos-order-bar { grid-template-columns:1fr auto; }
  .pos-order-bar .primary { min-width:0; grid-column:1/-1; }
  .menu-form .field-wide,.menu-edit .field-wide { grid-column:auto; }
  .toolbar,.toolbar form { align-items:stretch; flex-direction:column; }
  .toolbar input,.toolbar select { min-width:0; }
  .toolbar .primary { width:100%; }
  .user-form-footer { align-items:stretch; flex-direction:column; }
  .user-form-footer .primary { width:100%; }
  .user-account-actions { align-items:stretch; flex-direction:column; }
  .user-account-actions form,.user-account-actions button { width:100%; }
  .revenue-filter-panel { align-items:stretch; flex-direction:column; }
  .revenue-shortcuts { justify-content:flex-start; }
}

@media(max-width:520px) {
  .stats { grid-template-columns:1fr; }
  .admin-brand::before { width:50px; height:50px; }
  .admin-brand img { width:min(205px,58vw); }
  .revenue-filter,.revenue-filter label,.revenue-filter input,.revenue-filter .primary { width:100%; }
  .topbar>span b { max-width:62%; }
  .panel,.users-list { padding:20px; border-radius:22px; }
  .pos-menu { margin-right:-8px; margin-left:-8px; padding:10px; border-radius:17px; }
  .pos-dish-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
  .pos-dish-add { min-height:112px; padding:10px 9px 8px; }
  .pos-dish-add strong { max-width:100%; font-size:13px; }
  .pos-dish-price { font-size:16px; }
  .pos-dish-add small { font-size:9px; }
  .pos-dish-controls { grid-template-columns:42px 1fr 42px; }
  .pos-order-bar { bottom:7px; }
  .pos-order-totals { gap:8px; }
  .pos-order-totals strong { font-size:20px; }
  .pos-clear { padding:0 12px; }
  .orders { grid-template-columns:1fr; }
  .orders-heading { align-items:flex-start; flex-direction:column; }
  .stand-visibility { align-items:stretch; flex-direction:column; }
  .stand-mode-controls { grid-template-columns:1fr; }
  .stand-visibility button { width:100%; }
  .menu-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .menu-category-group { padding:13px; }
  .menu-item-details[open] { grid-column:1/-1; }
  .kitchen-camera { min-height:310px; }
}

@page { margin:0; }

@media print {
  html,body { width:80mm; min-width:80mm; min-height:0; margin:0!important; padding:0!important; overflow:visible; background:#fff; }
  body { print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  .ticket { width:80mm; margin:0!important; padding:5mm 5mm 4mm; box-shadow:none; break-after:page; page-break-after:always; }
  .ticket:last-of-type { break-after:auto; page-break-after:auto; }
  .no-print { display:none!important; }
}
/* Elenchi atleti e regia maxi schermo */
.roster-tools{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:0 0 22px}.roster-tools .year-select{margin-right:auto}.roster-import-panel{margin-bottom:24px}.roster-import-grid{display:grid;grid-template-columns:minmax(220px,1fr) minmax(260px,1.5fr) auto;gap:14px;align-items:end}.roster-import-grid label,.roster-category-head label,.roster-schedule label{display:grid;gap:7px;font-weight:800}.roster-import-grid label span,.roster-category-head label,.roster-schedule label span{font-size:12px;text-transform:uppercase;letter-spacing:.06em}.roster-preview{display:grid;gap:5px;margin:16px 0;padding:14px 16px;border:2px solid #102044;border-radius:14px;background:#f0fbf7}.roster-preview span{font-size:13px;color:#59627b}.roster-categories{display:grid;gap:20px}.roster-category{padding:0;overflow:hidden}.roster-category-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 24px;background:#fff4c9}.roster-category-head h2{margin:3px 0 0;font-size:27px}.roster-category-head>div>span{font-size:12px;font-weight:900;text-transform:uppercase;color:#687089}.roster-category-head form{display:flex;align-items:end;gap:10px}.roster-category-head input{width:90px}.roster-empty{margin:0;padding:22px 24px;color:#687089}.roster-team-list{display:grid}.roster-team{border-top:1px solid #dfe3ec}.roster-team summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 22px;cursor:pointer;list-style:none}.roster-team summary::-webkit-details-marker{display:none}.roster-team summary>span{display:grid;gap:3px}.roster-team summary small{color:#687089}.roster-team-body{padding:0 22px 20px}.roster-team-body ol{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;counter-reset:athlete}.roster-team-body li{counter-increment:athlete;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-radius:10px;background:#f4f6fa}.roster-team-body li::before{content:counter(athlete);font-weight:900;color:#ff5f57}.roster-team-body li strong{margin-right:auto}.roster-team-body li span{font-size:11px;color:#687089}.roster-schedule{display:grid;grid-template-columns:1.4fr .7fr auto auto;align-items:end;gap:12px;margin-top:16px;padding:15px;border-radius:14px;background:#e6f8f2}.roster-active{display:flex!important;align-items:center;gap:7px!important;min-height:46px}.roster-active input{width:auto}.helper{font-size:13px;color:#687089}
@media(max-width:850px){.roster-import-grid{grid-template-columns:1fr}.roster-category-head{align-items:stretch;flex-direction:column}.roster-category-head form{flex-wrap:wrap}.roster-team-body ol{grid-template-columns:1fr}.roster-schedule{grid-template-columns:1fr 1fr}.roster-tools>*{width:100%}.roster-tools .primary,.roster-tools .secondary{width:100%}}
.roster-juniores-controls{display:grid;grid-template-columns:minmax(250px,.8fr) minmax(480px,1.8fr);gap:14px;margin-top:16px}.roster-juniores-controls .roster-schedule{margin-top:0}.roster-team-image-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;padding:15px;border-radius:14px;background:#fff4c9}.roster-team-image-form>img{grid-column:1/-1;max-width:100%;width:auto;height:90px;object-fit:contain;object-position:left center}.roster-team-image-form label{display:grid;gap:7px;font-weight:800}.roster-team-image-form label span{font-size:12px;text-transform:uppercase;letter-spacing:.06em}.roster-remove-image{grid-column:1/-1;display:flex!important;align-items:center;gap:7px!important;font-size:12px}.roster-remove-image input{width:auto}
@media(max-width:850px){.roster-juniores-controls{grid-template-columns:1fr}.roster-team-image-form{grid-template-columns:1fr}.roster-team-image-form button{width:100%}}
.screen-mode-form{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 20px;padding:16px 18px;border:2px solid var(--navy);border-radius:16px;background:#fff}.screen-mode-form>strong{margin-right:auto}.screen-mode-form label{cursor:pointer}.screen-mode-form label input{position:absolute;opacity:0;pointer-events:none}.screen-mode-form label span,.screen-mode-badge{display:inline-flex;align-items:center;min-height:42px;padding:9px 15px;border:2px solid #cfd5e1;border-radius:999px;background:#fff;font-weight:900}.screen-mode-form label.is-active span,.screen-mode-form label:has(input:checked) span,.screen-mode-badge.is-active{border-color:var(--navy);background:var(--yellow);color:var(--navy)}.roster-juniores-controls.image-only{grid-template-columns:minmax(250px,560px)}
@media(max-width:850px){.screen-mode-form>*{width:100%}.screen-mode-form label span,.screen-mode-form button{width:100%;justify-content:center}.screen-mode-badge{justify-content:center}}
.roster-athlete-remove{margin-left:auto;flex:0 0 auto}.roster-athlete-remove button.danger{min-height:32px;padding:0 10px;border-radius:9px;font-size:11px}.roster-team-body li>span{flex:0 0 auto}
.roster-athlete-identity{min-width:0;display:grid;gap:3px}.roster-athlete-identity span{font-size:11px;color:#687089}.roster-athlete-actions,.roster-bib-form{display:flex;align-items:end;gap:7px}.roster-athlete-actions{margin-left:auto;flex:0 0 auto}.roster-bib-form label{display:grid;gap:3px}.roster-bib-form label span{font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.06em}.roster-bib-form input{width:68px;min-height:32px;padding:5px 7px}.roster-bib-form button.primary{min-height:32px;padding:0 10px;border-radius:9px;font-size:10px;box-shadow:0 3px 0 rgba(16,32,68,.18)}
@media(max-width:850px){.roster-team-body li{align-items:flex-start;flex-wrap:wrap}.roster-athlete-actions{width:100%;margin-left:0;padding-left:34px}.roster-bib-form{flex:1}.roster-bib-form label{flex:1}.roster-bib-form input{width:100%}}

.roster-order-form{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin-bottom:20px}.roster-order-form label{display:grid;gap:6px}.roster-order-form input{width:110px}.roster-order-form .helper{flex-basis:100%}

/* Aspetto comune dei comandi del backend. Dimensioni dei controlli speciali preservate. */
.admin-ui :where(button,.admin-button){display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:9px 16px;border:1px solid transparent;background:var(--blue);color:#fff;cursor:pointer;text-decoration:none}
.admin-ui :is(button,.admin-button,a.primary){border-radius:12px;font-weight:850;line-height:1.25;box-shadow:0 3px 0 rgba(16,32,68,.15);transition:background-color .15s,box-shadow .15s}
.admin-ui .admin-button-secondary{background:#fff;color:var(--navy);border:1px solid var(--line)}
.admin-ui :is(button,.admin-button):focus-visible{outline:3px solid var(--yellow);outline-offset:3px}
.admin-ui button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}

.director-category-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}.director-category-heading p{margin:12px 0}.director-category-send,.director-settings{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.director-category-send label,.director-settings label{display:grid;gap:6px;font-size:12px;font-weight:700}.director-category-send input,.director-settings input:not([type=checkbox]){width:110px;min-height:44px;padding:9px;border:1px solid var(--line);border-radius:12px}.director-settings input[type=datetime-local]{width:220px}.director-team{display:flex;flex-wrap:wrap;align-items:center;gap:18px;padding:22px 0;border-top:1px solid var(--line)}.director-team-identity{display:flex;gap:14px;align-items:center;flex:1;min-width:230px}.director-team-identity img{width:85px;height:65px;object-fit:contain}.director-team h3{font-size:18px;margin:0 0 8px}.director-team p{margin:0;font-size:12px;color:var(--muted)}.director-schedule{flex-basis:100%;padding:10px 0}.director-schedule summary{cursor:pointer;font-weight:700}.director-schedule form{margin:16px 0}.director-category>.helper{margin:18px 0}@media(max-width:700px){.director-team-identity,.director-settings,.director-send{flex-basis:100%}.director-send button{width:100%}}

/* Elenchi gara: gerarchia espandibile e righe uniformi. */
.roster-admin-page .roster-category{padding:0;margin:0;border:1px solid #d7ddeb;border-radius:18px}
.roster-admin-page .roster-category-head{flex-direction:row;align-items:center;cursor:pointer;list-style:none;padding:20px 24px}
.roster-admin-page summary::-webkit-details-marker{display:none}
.roster-admin-page summary:focus-visible{outline:3px solid var(--blue);outline-offset:-4px}
.roster-admin-page .roster-toggle{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border-radius:10px;background:var(--blue);color:white;font-size:24px;font-weight:700;line-height:1}
.roster-admin-page .roster-toggle::before{content:'+'}
.roster-admin-page details[open]>summary>.roster-toggle::before{content:'−'}
.roster-admin-page .roster-team-list{gap:12px;padding:16px}
.roster-admin-page .roster-team{border:1px solid #d7ddeb;border-radius:12px;overflow:hidden}
.roster-admin-page .roster-team>summary{padding:16px 20px;min-height:76px;background:#fff}
.roster-admin-page .roster-team>summary>span:first-child{min-width:0;gap:6px;overflow-wrap:anywhere}
.roster-admin-page .roster-team[open]>summary{background:#eaf0ff;border-bottom:1px solid #cad6f1}
.roster-admin-page .roster-team-body{padding:20px;background:#f3f6fc;border-left:4px solid var(--blue)}
.roster-admin-page .roster-detail-title{font-size:14px;margin:0 0 16px;color:#52617c}
.roster-admin-page .roster-team-body ol{grid-template-columns:1fr;gap:0;border:1px solid #dde3ed;border-radius:12px;overflow:hidden;background:#fff}
.roster-admin-page .roster-team-body li{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:16px;padding:16px;border-radius:0;background:#fff;border-bottom:1px solid #e3e8f1}
.roster-admin-page .roster-team-body li:last-child{border-bottom:0}
.roster-admin-page .roster-team-body li:nth-child(even){background:#f9faff}
.roster-admin-page .roster-athlete-identity{gap:6px;overflow-wrap:anywhere}
.roster-admin-page .roster-athlete-identity strong{font-size:16px;line-height:1.4}
.roster-admin-page .roster-athlete-identity span{font-size:12px}
.roster-admin-page .roster-athlete-actions,.roster-admin-page .roster-bib-form{gap:12px;align-items:end}
.roster-admin-page .roster-bib-form label{gap:6px}
.roster-admin-page .roster-bib-form input{width:90px;height:42px;min-height:42px}
.roster-admin-page button{min-height:42px;padding:10px 16px;border-radius:12px;font-size:13px;font-weight:800;line-height:1.3;box-shadow:0 3px 0 rgba(16,32,68,.15)}
.roster-admin-page button.danger{background:#fff0f0;color:#a62734;border:1px solid #e9b6bd}
.roster-admin-page button:hover{transform:none;filter:brightness(.97)}
.roster-admin-page .roster-juniores-controls.image-only{grid-template-columns:1fr;margin-top:20px}
.roster-admin-page .roster-team-image-form{background:#fff;padding:16px;border:1px solid #dde3ed;gap:16px}
.roster-admin-page .roster-import-panel .helper{margin:16px 0;line-height:1.5}
.roster-admin-page input[type=file]::file-selector-button{border:0;border-radius:8px;padding:8px 12px;margin-right:12px;background:#eaf0ff;color:var(--blue);font:inherit;font-weight:700;cursor:pointer}
@media(max-width:850px){.roster-admin-page .roster-athlete-actions{width:auto;padding-left:0;margin-left:0}.roster-admin-page .roster-bib-form{flex:initial}}
@media(max-width:600px){
.roster-admin-page .roster-category-head{padding:16px}.roster-admin-page .roster-category-head h2{font-size:23px}
.roster-admin-page .roster-team-list{padding:10px;gap:10px}.roster-admin-page .roster-team>summary{padding:14px 12px}
.roster-admin-page .roster-team-body{padding:14px 10px}.roster-admin-page .roster-team-body li{grid-template-columns:20px minmax(0,1fr);gap:12px;padding:14px 10px}
.roster-admin-page .roster-athlete-actions{grid-column:1/-1;justify-content:space-between;gap:8px}
.roster-admin-page .roster-bib-form{gap:8px;flex:1;min-width:0}.roster-admin-page .roster-bib-form label{min-width:0;flex:1}.roster-admin-page .roster-bib-form input{width:100%}
.roster-admin-page .roster-team-image-form{padding:12px;min-width:0}.roster-admin-page input[type=file]{max-width:100%;min-width:0}
}
.roster-admin-page :is(button.primary,button.danger){min-height:42px;padding:10px 16px;border-radius:12px;font-size:13px;font-weight:800;line-height:1.3;box-shadow:0 3px 0 rgba(16,32,68,.15)}

/* Riquadro comune per anteprima e pubblicazione, separato dall'edizione. */
.publication-panel .stand-mode-controls{display:flex;gap:10px;flex-wrap:wrap}
.publication-panel>div{min-width:0}
.publication-panel .traffic-day-actions{margin:0;flex:1;justify-content:flex-end}
.revenues-page>.year-select{margin-bottom:22px}
@media(max-width:800px){.publication-panel{flex-direction:column;align-items:stretch}.publication-panel .stand-mode-controls{flex-direction:column}.publication-panel .traffic-day-actions{justify-content:flex-start}.publication-panel .traffic-day-actions>*{width:100%}}
/* Contrasto dei comandi di pubblicazione non selezionati. */
.stand-visibility button:not(.active){color:var(--navy);background:#fff;border-color:#b9c5da}

/* Regia squadre: categorie richiudibili e comandi allineati. */
#regia-squadre{margin-bottom:36px}
#regia-squadre h2{margin-bottom:18px}
#regia-squadre>p{margin:0 0 24px;line-height:1.65}
.screen-admin-page .director-category{padding:0;overflow:hidden;border:1px solid #d7ddeb}
.director-category>summary{cursor:pointer;list-style:none;padding:20px 24px;background:#fff4c9}
.director-category>summary::-webkit-details-marker{display:none}
.director-category>summary strong{display:block;font-size:24px}
.director-category>summary small{display:block;margin-top:8px;color:#52617c}
.director-toggle{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--blue);color:#fff;font-size:24px}
.director-toggle::before{content:'+'}.director-category[open]>summary .director-toggle::before{content:'−'}
.director-category>summary:focus-visible{outline:3px solid var(--blue);outline-offset:-4px}
.director-category-body{padding:24px}.director-category-body>.helper{margin:22px 0;line-height:1.6}
.director-category-send{justify-content:flex-end}
.director-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(490px,580px) 120px;gap:16px;align-items:center}
.director-row .director-team-identity{min-width:0}.director-row h3{overflow-wrap:anywhere;line-height:1.4}
.director-row-settings{display:grid;grid-template-columns:80px 80px minmax(210px,1fr) 80px;align-items:end;gap:12px}
.director-row-settings input:not([type=checkbox]){width:100%;min-width:0;height:44px}
.director-row .director-schedule-cell{position:relative;padding-bottom:0;min-width:0}
.director-row .director-schedule-active{position:absolute;top:100%;left:0;display:flex;gap:6px;margin-top:6px;white-space:nowrap}
.director-row .director-schedule-active input{width:auto;margin:0}
.director-row .director-no-schedule{align-self:center;color:#687089;font-size:12px;display:grid;gap:6px}
.director-row button{width:100%;height:44px;min-height:44px;padding:8px 12px;font-size:13px;white-space:nowrap}
.director-row .director-send{align-self:end;margin:0}
.director-row:has(.director-schedule-active){padding-bottom:44px}
@media(max-width:1100px){.director-row{grid-template-columns:minmax(0,1fr) 120px}.director-row .director-team-identity{grid-column:1/-1}.director-row-settings{grid-template-columns:70px 70px minmax(190px,1fr) 80px}}
@media(max-width:700px){.director-category-body{padding:16px}.director-row{grid-template-columns:1fr;gap:18px}.director-row-settings{grid-template-columns:1fr 1fr}.director-row .director-schedule-cell{grid-column:1/-1}.director-row .director-schedule-active{position:static;margin-top:10px}.director-row-settings>button{grid-column:1/-1}.director-row .director-send{width:100%}.director-row .director-no-schedule{display:none}.director-row:has(.director-schedule-active){padding-bottom:24px}.director-category-send>*{width:100%}}
/* Struttura comune del backend: navigazione laterale e contenuto. */
.backend-shell{display:grid;grid-template-columns:240px minmax(0,1fr);align-items:start;max-width:2040px;margin:0 auto}
.backend-sidebar{display:block;position:sticky;top:0;background:#fff;border-right:1px solid var(--line);min-height:calc(100vh - 90px);padding:22px 14px;max-height:100vh;overflow-y:auto}
.backend-sidebar>.backend-navigation{display:block!important}
.backend-sidebar .backend-menu-toggle{display:none}
.backend-navigation svg,.backend-menu-toggle svg{width:19px;height:19px;flex:0 0 19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.backend-nav-group{margin:0 0 20px;padding:0 0 16px;border-bottom:1px solid var(--line)}
.backend-nav-group:last-child{border-bottom:0;margin:0;padding:0}
.backend-nav-group h2{display:flex;align-items:center;gap:8px;font-size:10px;line-height:1.4;letter-spacing:.06em;text-transform:uppercase;color:#586781;margin:0 8px 10px}
.backend-nav-group h2 svg{color:var(--blue);width:16px;height:16px;flex-basis:16px}
.backend-nav-group a{display:flex;align-items:center;gap:10px;padding:11px 12px;margin:4px 0;border:1px solid transparent;border-radius:11px;color:var(--navy);font-size:13px;font-weight:750;min-height:44px}
.backend-nav-group a:hover{background:#f1f5ff;color:var(--blue)}
.backend-nav-group a[aria-current=page]{background:#eef3ff;color:var(--blue);border-color:#b5caff;box-shadow:inset 3px 0 0 var(--blue)}
.backend-nav-group a:focus-visible,.backend-menu-toggle:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.backend-shell>.page{width:auto;min-width:0;margin:0;padding:0 32px 70px}
.backend-shell .hero{padding:38px 0 28px}
.backend-shell .hero h1{font-size:clamp(38px,4vw,66px);line-height:1.05}
.backend-shell .hero>p:last-child{margin-top:18px;font-size:14px}
.backend-shell .panel{min-width:0}
.backend-shell>.page>.year-select{margin-bottom:24px}
@media(min-width:901px) and (max-width:1350px){
.backend-shell{grid-template-columns:218px minmax(0,1fr)}.backend-shell>.page{padding-right:24px;padding-left:24px}
.backend-shell .director-row{grid-template-columns:minmax(0,1fr) 120px}.backend-shell .director-row .director-team-identity{grid-column:1/-1}
.backend-shell .sponsor-form,.backend-shell .menu-form{grid-template-columns:repeat(2,minmax(0,1fr))}
.backend-shell .roster-import-grid{grid-template-columns:1fr}.backend-shell .revenue-filter-panel{align-items:stretch;flex-direction:column}
}
@media(max-width:900px){
.backend-shell{display:block}.backend-sidebar{position:static;min-height:0;max-height:none;overflow:visible;margin:16px 20px 0;padding:0;border:1px solid var(--line);border-radius:14px}
.backend-sidebar .backend-menu-toggle{display:flex;align-items:center;gap:10px;padding:14px 16px;cursor:pointer;font-weight:750;list-style:none}
.backend-menu-toggle::-webkit-details-marker{display:none}.backend-menu-indicator{margin-left:auto}.backend-menu-indicator:before{content:'+'}.backend-sidebar[open] .backend-menu-indicator:before{content:'−'}
.backend-sidebar:not([open])>.backend-navigation{display:none!important}.backend-sidebar[open]>.backend-navigation{display:grid!important;grid-template-columns:1fr 1fr;gap:16px;padding:16px;border-top:1px solid var(--line)}
.backend-shell>.page{padding:0 20px 55px}.backend-shell .hero{padding-top:28px}.backend-nav-group{margin:0}
}
@media(max-width:520px){.backend-sidebar[open]>.backend-navigation{grid-template-columns:1fr}.backend-shell .hero h1{font-size:40px}.backend-shell .stats{grid-template-columns:1fr}.backend-shell .director-row-settings{grid-template-columns:1fr 1fr}}
/* Backend a tutta larghezza: testata allineata a navigazione e contenuto. */
.backend-layout{--backend-content-gutter:32px}
.backend-layout .backend-shell{width:100%;max-width:none;margin:0}
.backend-layout>.topbar{padding-left:26px;padding-right:var(--backend-content-gutter)}
.backend-layout .backend-shell>.page{padding-left:var(--backend-content-gutter);padding-right:var(--backend-content-gutter)}
@media(min-width:901px) and (max-width:1350px){.backend-layout{--backend-content-gutter:24px}}
@media(max-width:900px){.backend-layout{--backend-content-gutter:20px}.backend-layout>.topbar{padding-left:20px}}
/* Testata sempre visibile e menu fermo durante lo scorrimento. */
.backend-layout{--backend-header-height:90px}
.backend-layout>.topbar{position:sticky;top:0;z-index:100;min-height:90px}
@media(min-width:901px){
.backend-layout .backend-sidebar{top:var(--backend-header-height);height:calc(100dvh - var(--backend-header-height));min-height:0;max-height:calc(100dvh - var(--backend-header-height));overflow-y:auto;overscroll-behavior:contain}
/* Mantiene lo sticky nel contenitore di scorrimento della pagina. */
body.backend-layout{overflow-x:clip;overflow-y:visible}
}
.backend-layout{scroll-padding-top:var(--backend-header-height)}
.backend-layout .page [id]{scroll-margin-top:calc(var(--backend-header-height) + 16px)}
body.backend-layout{overflow-x:clip;overflow-y:visible}
@media(max-width:900px){.backend-layout .backend-sidebar{position:sticky;top:var(--backend-header-height);z-index:90;max-height:calc(100dvh - var(--backend-header-height));overflow-y:auto;overscroll-behavior:contain;background:#fff}}
/* Cassa: tessere leggibili, indipendenti dallo stile dei pulsanti generici. */
.backend-layout .new-order>h2{margin-bottom:22px}
.admin-ui .pos-dish-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.admin-ui .pos-dish{display:flex;flex-direction:column;background:#fff;border-color:#d5ddeb;border-top:4px solid #b9caff;box-shadow:0 3px 0 #e2e7ef}
.admin-ui .pos-dish.category-primo{border-top-color:#d6ad16}
.admin-ui .pos-dish.category-contorno{border-top-color:#20a58b}
.admin-ui .pos-dish.category-bevanda{border-top-color:#2999b0}
.admin-ui .pos-dish.category-panino,.admin-ui .pos-dish.category-piatto-unico{border-top-color:#165dff}
.admin-ui button.pos-dish-add{flex:1;display:flex;align-items:flex-start;justify-content:flex-start;gap:0;min-height:190px;padding:16px;background:#fff;color:#102044;border:0;border-radius:0;box-shadow:none;text-align:left;transform:none}
.admin-ui button.pos-dish-add:hover:not(:disabled){background:#f0f5ff;box-shadow:none;transform:none}
.admin-ui .pos-dish-category{font-size:11px;color:#52617b;margin-bottom:10px;padding-right:32px;letter-spacing:.04em}
.admin-ui .pos-dish-add strong{font-size:17px;line-height:1.35;max-width:100%;padding-right:22px;overflow-wrap:anywhere}
.admin-ui .pos-dish-price{font-size:22px;color:#102044;padding-top:16px;margin-top:auto}
.admin-ui .pos-dish-add small{font-size:12px;color:#52617b;margin-top:6px}
.admin-ui .pos-dish-badge{background:#165dff;color:#fff;box-shadow:none;top:12px;right:12px}
.admin-ui .pos-dish-controls{height:48px;flex-shrink:0;grid-template-columns:48px 1fr 48px;background:#f5f8fd}
.admin-ui .pos-dish-controls button{border:0;border-radius:0;padding:0;min-height:48px;background:transparent;color:#165dff;box-shadow:none;font-size:26px;transform:none}
.admin-ui .pos-dish-controls output{font-size:18px;color:#102044}
.admin-ui .pos-dish.sold-out{filter:none;opacity:1}.admin-ui .pos-dish.sold-out .pos-dish-add{opacity:.65}
.admin-ui .pos-category-filter button{min-height:42px;font-size:12px;padding:8px 15px}
.admin-ui .pos-dish[hidden],.admin-ui .pos-dish-badge[hidden]{display:none!important}
@media(max-width:600px){.admin-ui .pos-dish-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.admin-ui button.pos-dish-add{padding:12px;min-height:200px}.admin-ui .pos-dish-add strong{font-size:15px;padding-right:0}.admin-ui .pos-dish-category{font-size:10px;padding-right:28px}.admin-ui .pos-dish-price{font-size:20px}.admin-ui .pos-dish-add small{font-size:11px}.admin-ui .pos-dish-badge{right:6px;top:8px;min-width:26px;height:26px}.admin-ui .pos-dish-controls{grid-template-columns:42px 1fr 42px}}
@media(max-width:360px){.admin-ui .pos-dish-grid{grid-template-columns:1fr}}
.backend-layout .panel:has(.pos-dish-grid)>h2{margin-bottom:22px}
/* Edizione comune in testata, prima dell'utente. */
.backend-layout .header-edition{margin:0 12px 0 0;padding-right:24px;border-right:1px solid var(--line)}
.backend-layout .header-edition label{display:flex;align-items:center;gap:10px}
.backend-layout .header-edition label>span{font-size:10px;letter-spacing:.06em;text-transform:uppercase;font-weight:850;color:#52617b}
.backend-layout .header-edition select{width:100px;min-height:42px;padding:8px 12px;border:1px solid #d5ddeb;border-radius:12px;background:#fff;color:var(--navy);font-size:14px;font-weight:750}
.backend-layout .header-edition select:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
@media(max-width:800px){.backend-layout>.topbar>span{flex-wrap:wrap;justify-content:flex-end;gap:12px}.backend-layout .header-edition{margin-right:auto;padding-right:12px}.backend-layout .header-edition label{gap:6px}.backend-layout .header-edition select{width:84px}.backend-layout>.topbar>span b{max-width:35%;overflow-wrap:anywhere}}
@media(max-width:360px){.backend-layout .header-edition label{display:grid;gap:4px}.backend-layout .header-edition{padding-right:8px}}

/* Flag attività compatto, nei moduli di creazione e modifica. */
.activity-form .active-account{display:flex;align-items:center;align-self:center;width:max-content;max-width:100%;min-height:32px;padding:5px 8px;gap:7px}
.activity-form .active-account input[type=checkbox]{flex:0 0 14px;width:14px;height:14px;min-width:14px;min-height:14px;padding:0;margin:0;border-radius:3px;box-shadow:none;accent-color:#165dff}
.activity-form .active-account strong{font-size:12px;line-height:1.3}
.activity-form .active-account small{font-size:10px;line-height:1.3;margin-top:2px}

.sponsor-main-preview>.sponsor-preview-save{display:block;box-sizing:border-box;width:100%;min-width:0;margin-top:12px;padding:12px 8px;font-size:13px;line-height:1.3}

/* Contributi sponsor: tipo e valore nella stessa colonna. */
.sponsor-contribution-fields{display:grid;grid-template-columns:minmax(110px,1fr) minmax(100px,1fr);gap:10px;min-width:0}
.sponsor-contribution-fields label{min-width:0}
.sponsor-contribution-fields select{width:100%;min-height:46px;box-sizing:border-box}
.finance-materials{margin:24px 0}
.finance-materials>p{margin:12px 0;line-height:1.6}
.finance-material-list{list-style:none;padding:0;margin:16px 0 0}
.finance-material-list li{display:flex;justify-content:space-between;gap:20px;padding:14px 0;border-top:1px solid #dce3ef}
.finance-material-list li strong{white-space:nowrap}

.finances-admin-page .finance-sources{grid-template-columns:repeat(3,minmax(0,1fr))}.finances-admin-page .finance-material-total{border:2px solid #16bfa5;background:#effbf7}.finance-material-total strong{overflow-wrap:anywhere}#materiale-sponsor{scroll-margin-top:110px}@media(max-width:1000px){.finances-admin-page .finance-sources{grid-template-columns:1fr}}
