﻿/* Tema visuale, layout e responsive base
   Estratto da assets/style.css per rendere il progetto piu manutenibile. */

/* V5.1 - aggiornamento automatico */
.auto-refresh-note{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  background:#ecfdf5;
  color:#065f46;
  padding:4px 10px;
  font-size:12px;
  font-weight:800;
}


/* V5.4 - conferma vendita più veloce */
.last-sale-message{
  margin-bottom:12px;
  border:1px solid #bbf7d0;
  background:#ecfdf5;
  color:#065f46;
  border-radius:14px;
  padding:10px 12px;
  font-weight:800;
}
button:disabled{
  opacity:.55;
  cursor:not-allowed;
}


/* =========================================================
   V5.5 - Grafica migliorata / effetto luminoso professionale
   ========================================================= */

:root{
  --bg-main:#f3f6fb;
  --bg-panel:rgba(255,255,255,.92);
  --border-soft:#dbe4f0;
  --text-main:#0f172a;
  --text-muted:#64748b;
  --primary:#0f172a;
  --primary-soft:#1e293b;
  --accent:#10b981;
  --accent-dark:#047857;
  --blue:#2563eb;
  --amber:#f59e0b;
  --danger:#dc2626;
  --shadow-soft:0 10px 25px rgba(15,23,42,.08);
  --shadow-hover:0 18px 45px rgba(15,23,42,.14);
  --glow-primary:0 0 0 rgba(15,23,42,0);
  --glow-green:0 0 0 rgba(16,185,129,0);
}

*{
  box-sizing:border-box;
}

body{
  background:
    radial-gradient(circle at top left, rgba(16,185,129,.10), transparent 32rem),
    radial-gradient(circle at top right, rgba(37,99,235,.08), transparent 34rem),
    linear-gradient(180deg,#f8fafc 0%,var(--bg-main) 100%) !important;
  color:var(--text-main);
  -webkit-font-smoothing:antialiased;
}

.card,
.stat,
.item,
.payment-panel,
.cashier-left,
.cashier-right .card,
.tablewrap,
.pay-total-card{
  transition:
    transform .22s ease,
    box-shadow .22s ease,
    border-color .22s ease,
    background-color .22s ease,
    filter .22s ease;
}

.card{
  background:var(--bg-panel) !important;
  border:1px solid rgba(203,213,225,.85) !important;
  box-shadow:var(--shadow-soft) !important;
  backdrop-filter:blur(10px);
}

.card:hover{
  transform:translateY(-2px);
  box-shadow:var(--shadow-hover) !important;
  border-color:rgba(148,163,184,.9) !important;
}

.stat:hover,
.item:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 28px rgba(15,23,42,.10);
}

/* Bottoni: luce graduale al passaggio mouse */
button{
  position:relative;
  overflow:hidden;
  isolation:isolate;
  transition:
    transform .18s ease,
    box-shadow .24s ease,
    filter .24s ease,
    background-color .24s ease,
    border-color .24s ease,
    color .24s ease !important;
}

button::before{
  content:"";
  position:absolute;
  inset:-2px;
  z-index:-1;
  opacity:0;
  background:
    radial-gradient(circle at var(--x,50%) var(--y,50%), rgba(255,255,255,.65), transparent 28%),
    linear-gradient(120deg, rgba(255,255,255,.22), transparent 55%);
  transition:opacity .28s ease;
}

button:hover{
  transform:translateY(-1px) scale(1.012);
  filter:brightness(1.04);
  box-shadow:
    0 12px 26px rgba(15,23,42,.18),
    0 0 18px rgba(16,185,129,.12);
}

button:hover::before{
  opacity:1;
}

button:active{
  transform:translateY(0) scale(.985);
  box-shadow:0 5px 12px rgba(15,23,42,.16);
}

button:focus-visible{
  outline:none;
  box-shadow:
    0 0 0 4px rgba(16,185,129,.22),
    0 12px 26px rgba(15,23,42,.18);
}

button.secondary,
button.out{
  background:rgba(255,255,255,.92) !important;
  color:var(--text-main) !important;
  border:1px solid var(--border-soft) !important;
}

button.secondary:hover,
button.out:hover{
  border-color:#94a3b8 !important;
  background:#f8fafc !important;
  box-shadow:
    0 10px 22px rgba(15,23,42,.10),
    0 0 18px rgba(37,99,235,.10);
}

button.good,
button:not(.secondary):not(.out):not(.danger){
  background:linear-gradient(135deg,#0f172a 0%,#1e293b 100%) !important;
}

button.good:hover{
  box-shadow:
    0 16px 34px rgba(16,185,129,.28),
    0 0 24px rgba(16,185,129,.30) !important;
}

button.danger:hover{
  box-shadow:
    0 14px 28px rgba(220,38,38,.24),
    0 0 20px rgba(220,38,38,.22) !important;
}

/* Input e select più leggibili */
input,
select,
textarea{
  transition:
    border-color .2s ease,
    box-shadow .2s ease,
    background-color .2s ease,
    transform .16s ease !important;
}

input:hover,
select:hover,
textarea:hover{
  border-color:#94a3b8 !important;
  background:#ffffff !important;
}

input:focus,
select:focus,
textarea:focus{
  outline:none !important;
  border-color:#10b981 !important;
  box-shadow:
    0 0 0 4px rgba(16,185,129,.15),
    0 10px 22px rgba(15,23,42,.08) !important;
  transform:translateY(-1px);
}

/* Totale cassa più visibile */
.pay-total-card,
.total-card,
.bigtotal{
  background:
    radial-gradient(circle at top right, rgba(255,255,255,.85), transparent 14rem),
    linear-gradient(135deg,#ecfdf5 0%,#d1fae5 100%) !important;
  border:4px solid rgba(16,185,129,.78) !important;
  box-shadow:
    0 20px 45px rgba(16,185,129,.22),
    inset 0 1px 0 rgba(255,255,255,.85) !important;
  animation:totalGlow 3.8s ease-in-out infinite;
}

@keyframes totalGlow{
  0%,100%{
    box-shadow:
      0 20px 45px rgba(16,185,129,.20),
      0 0 0 rgba(16,185,129,0),
      inset 0 1px 0 rgba(255,255,255,.85);
  }
  50%{
    box-shadow:
      0 24px 58px rgba(16,185,129,.28),
      0 0 28px rgba(16,185,129,.20),
      inset 0 1px 0 rgba(255,255,255,.9);
  }
}

.pay-total-amount,
.huge{
  text-shadow:0 3px 10px rgba(4,120,87,.12);
}

/* Riga carrello più chiara */
.cart-line{
  background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%) !important;
  border:1px solid rgba(203,213,225,.9) !important;
  box-shadow:0 6px 16px rgba(15,23,42,.05);
}

.cart-line:hover{
  transform:translateY(-2px);
  border-color:#94a3b8 !important;
  box-shadow:0 12px 28px rgba(15,23,42,.11);
}

.cart-line-main b{
  letter-spacing:-.01em;
}

/* Tabelle più professionali */
.tablewrap,
table{
  border-radius:18px;
  overflow:hidden;
}

table tr{
  transition:background-color .18s ease, transform .18s ease;
}

tbody tr:hover{
  background:#f1f5f9 !important;
}

thead{
  background:linear-gradient(180deg,#f8fafc,#eef2f7) !important;
}

/* Badge e stati */
.badge{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28);
}

.greenbox,
.bluebox,
.amberbox{
  box-shadow:0 10px 22px rgba(15,23,42,.06);
}

.greenbox:hover{
  box-shadow:0 14px 30px rgba(16,185,129,.16);
}

.bluebox:hover{
  box-shadow:0 14px 30px rgba(37,99,235,.16);
}

.amberbox:hover{
  box-shadow:0 14px 30px rgba(245,158,11,.16);
}

/* Sidebar/cassa sticky più pulita */
.cashier-right{
  scrollbar-width:thin;
  scrollbar-color:#94a3b8 transparent;
}

.cashier-right::-webkit-scrollbar,
body::-webkit-scrollbar{
  width:10px;
}

.cashier-right::-webkit-scrollbar-thumb,
body::-webkit-scrollbar-thumb{
  background:#cbd5e1;
  border-radius:999px;
  border:2px solid transparent;
  background-clip:padding-box;
}

.cashier-right::-webkit-scrollbar-thumb:hover,
body::-webkit-scrollbar-thumb:hover{
  background:#94a3b8;
  background-clip:padding-box;
}

/* Messaggi e conferma vendita */
.last-sale-message{
  animation:fadeSlideIn .35s ease both;
}

@keyframes fadeSlideIn{
  from{opacity:0;transform:translateY(-6px)}
  to{opacity:1;transform:translateY(0)}
}

.pay-confirm-button{
  letter-spacing:.04em;
  text-transform:uppercase;
}

.pay-confirm-button:hover{
  transform:translateY(-2px) scale(1.01);
}

/* Menu e navigazione */
nav button,
.sidebar button,
.tab button{
  border-radius:14px !important;
}

nav button:hover{
  background:#eef2ff !important;
  color:#1e293b !important;
  box-shadow:0 8px 20px rgba(37,99,235,.10);
}

/* Riduzione animazioni per chi preferisce meno movimento */
@media (prefers-reduced-motion: reduce){
  *,
  *::before,
  *::after{
    animation:none !important;
    transition:none !important;
    scroll-behavior:auto !important;
  }
}

/* Mobile: mantiene tutto pulito */
@media(max-width:700px){
  .card:hover,
  .item:hover,
  .stat:hover,
  .cart-line:hover{
    transform:none;
  }

  button:hover{
    transform:none;
  }

  .pay-total-amount,
  .huge{
    font-size:48px !important;
  }
}


/* =========================================================
   V5.6 - Grafica accessibile / alta leggibilità
   ========================================================= */

/* Base più chiara e leggibile */
body{
  font-size:16px !important;
  background:#f6f8fc !important;
  color:#0f172a !important;
}

/* Testi principali più leggibili */
h1,h2,h3,b,strong{
  color:#0f172a !important;
}

.muted,
small,
.text-muted{
  color:#475569 !important;
}

/* Header e scanner: campo più largo, niente testo tagliato */
header,
.topbar,
.header,
.app-header{
  gap:18px !important;
  align-items:center !important;
}

header .scanner,
.topbar .scanner,
.header .scanner,
.scanbar,
.barcode-area{
  min-width:420px !important;
  max-width:720px !important;
  width:100% !important;
}

header input,
.topbar input,
.header input,
#barcode,
input[placeholder*="barcode"],
input[placeholder*="Barcode"],
input[placeholder*="Scansiona"]{
  min-width:320px !important;
  width:100% !important;
  height:54px !important;
  font-size:17px !important;
  font-weight:650 !important;
  color:#0f172a !important;
  background:#ffffff !important;
  border:2px solid #cbd5e1 !important;
  border-radius:14px !important;
  padding-left:16px !important;
  padding-right:16px !important;
  text-overflow:ellipsis !important;
}

header input::placeholder,
.topbar input::placeholder,
.header input::placeholder,
#barcode::placeholder,
input[placeholder*="barcode"]::placeholder,
input[placeholder*="Barcode"]::placeholder,
input[placeholder*="Scansiona"]::placeholder{
  color:#334155 !important;
  opacity:1 !important;
}

/* Bottone scansione più grande e non tagliato */
header button,
.topbar button,
.header button{
  min-width:128px !important;
  height:54px !important;
  padding-left:20px !important;
  padding-right:20px !important;
  font-size:16px !important;
  font-weight:900 !important;
  white-space:nowrap !important;
  overflow:visible !important;
  text-overflow:clip !important;
}

/* Bottoni generali: testo sempre chiaro e contrastato */
button{
  min-height:46px;
  font-size:15px !important;
  font-weight:850 !important;
  letter-spacing:.01em;
  white-space:nowrap;
  border-radius:14px !important;
}

/* Menu: prima era troppo scuro con testo poco leggibile */
nav,
.menu,
.tabs,
.navbar{
  background:#ffffff !important;
  border:1px solid #dbe4f0 !important;
}

nav button,
.menu button,
.tabs button,
.navbar button{
  background:#ffffff !important;
  color:#0f172a !important;
  border:2px solid #cbd5e1 !important;
  box-shadow:none !important;
  opacity:1 !important;
  min-height:52px !important;
  font-size:15px !important;
  font-weight:900 !important;
}

nav button:hover,
.menu button:hover,
.tabs button:hover,
.navbar button:hover{
  background:#ecfdf5 !important;
  color:#064e3b !important;
  border-color:#10b981 !important;
  box-shadow:0 0 0 4px rgba(16,185,129,.14), 0 12px 26px rgba(15,23,42,.10) !important;
  transform:translateY(-1px) !important;
}

/* Bottone attivo: scuro sì, ma testo bianco leggibile */
nav button.active,
nav button[aria-current="page"],
.menu button.active,
.tabs button.active,
.navbar button.active,
nav button.selected,
nav button.is-active{
  background:#0f172a !important;
  color:#ffffff !important;
  border-color:#0f172a !important;
}

/* Nel tuo app il tab attivo è spesso dato da classi inline/scure.
   Forziamo comunque testo bianco quando lo sfondo è scuro. */
button[style*="background:#0f172a"],
button[style*="background: #0f172a"],
button[style*="background-color:#0f172a"],
button[style*="background-color: #0f172a"]{
  color:#ffffff !important;
}

/* Pulsanti scuri normali: meno pesanti e più leggibili */
button:not(.secondary):not(.out):not(.danger){
  background:#0f172a !important;
  color:#ffffff !important;
  border:2px solid #0f172a !important;
}

button:not(.secondary):not(.out):not(.danger):hover{
  background:#064e3b !important;
  border-color:#10b981 !important;
  color:#ffffff !important;
  box-shadow:0 0 0 5px rgba(16,185,129,.18), 0 14px 30px rgba(15,23,42,.18) !important;
}

/* Pulsanti secondari chiari */
button.secondary,
button.out{
  background:#ffffff !important;
  color:#0f172a !important;
  border:2px solid #cbd5e1 !important;
}

button.secondary:hover,
button.out:hover{
  background:#eff6ff !important;
  color:#1e3a8a !important;
  border-color:#2563eb !important;
  box-shadow:0 0 0 5px rgba(37,99,235,.14), 0 12px 24px rgba(15,23,42,.10) !important;
}

/* Card più leggibili, meno trasparenti */
.card,
.item,
.stat,
.payment-panel,
.cashier-left,
.cashier-right .card{
  background:#ffffff !important;
  border:1px solid #d8e0ec !important;
  box-shadow:0 8px 22px rgba(15,23,42,.07) !important;
}

/* Input e select molto più visibili */
input,
select,
textarea{
  font-size:16px !important;
  color:#0f172a !important;
  background:#ffffff !important;
  border:2px solid #cbd5e1 !important;
  min-height:48px !important;
}

input:focus,
select:focus,
textarea:focus{
  border-color:#2563eb !important;
  box-shadow:0 0 0 5px rgba(37,99,235,.18) !important;
}

/* Tabelle più leggibili */
table{
  font-size:15px !important;
}

th{
  color:#0f172a !important;
  font-weight:950 !important;
  background:#eef2f7 !important;
}

td{
  color:#1e293b !important;
}

/* Totale cassa ancora grande ma pulito */
.pay-total-card,
.total-card,
.bigtotal{
  background:#ecfdf5 !important;
  border:4px solid #059669 !important;
  box-shadow:0 14px 34px rgba(5,150,105,.18) !important;
}

.pay-total-label{
  color:#064e3b !important;
  font-size:14px !important;
  font-weight:1000 !important;
}

.pay-total-amount,
.huge{
  color:#047857 !important;
  text-shadow:none !important;
}

/* Disabilitati: non troppo invisibili */
button:disabled{
  opacity:.72 !important;
  color:#334155 !important;
  background:#e2e8f0 !important;
  border-color:#cbd5e1 !important;
}

/* Migliore layout se lo schermo è largo */
@media(min-width:1000px){
  .topbar,
  header{
    display:flex !important;
    flex-wrap:nowrap !important;
  }

  header > div:last-child,
  .topbar > div:last-child{
    margin-left:auto !important;
    display:flex !important;
    align-items:center !important;
    gap:8px !important;
    min-width:560px !important;
  }
}

/* Tablet e PC piccoli: scanner non deve tagliare il testo */
@media(max-width:1100px){
  header,
  .topbar{
    flex-wrap:wrap !important;
  }

  header > div:last-child,
  .topbar > div:last-child{
    width:100% !important;
    min-width:0 !important;
  }

  header input,
  .topbar input,
  #barcode,
  input[placeholder*="barcode"],
  input[placeholder*="Scansiona"]{
    min-width:0 !important;
    flex:1 1 auto !important;
  }
}

/* Accessibilità per persone che vedono poco */
@media(min-width:1200px){
  nav button{
    font-size:16px !important;
  }

  .card{
    padding-top:1.15rem;
    padding-bottom:1.15rem;
  }
}


