/* ============================================================
   Servizio Mensa Scolastica  Comune di Accadia  v4.0
   Tre temi: admin (blu), genitore (terracotta), ditta (verde)
   ============================================================ */
:root{
  --blu:#1c3d5a; --blu-s:#122a3f; --blu-l:#2d5a84;
  /* "arancio" ora BLU (palette blu/rosso/verde) — accenti e azioni di conferma */
  --arancio:#2563eb; --arancio-s:#1d4ed8; --arancio-l:#60a5fa;
  --verde:#2e7d52; --verde-s:#1f5438; --verde-l:#4aa070;
  --grigio-fondo:#f3f5f6; --grigio-bordo:#d7dde1;
  --testo:#1f2933; --testo-tenue:#5a6672;
  --bianco:#fff; --rosso:#a3342f; --giallo:#8a6d1d;
  --radius:7px;
}
*{box-sizing:border-box;}
body{margin:0;font-family:"Segoe UI",Arial,sans-serif;background:var(--grigio-fondo);color:var(--testo);font-size:15px;line-height:1.45;}
a{color:var(--blu);text-decoration:none;} a:hover{text-decoration:underline;}
.icon{width:18px;height:18px;flex-shrink:0;vertical-align:middle;}

/* LANDING */
.landing{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(135deg,#0a1e30,#1c3d5a 60%,#2d5a84);}
.landing-header{text-align:center;padding:40px 20px 10px;}
.landing-logo{width:64px;height:64px;border-radius:18px;background:var(--arancio);display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px;}
.landing-logo .icon{width:36px;height:36px;color:#fff;}
.landing-title{color:#fff;font-size:clamp(22px,4vw,32px);font-weight:700;margin:0 0 6px;}
.landing-sub{color:#9db4c6;font-size:15px;margin:0 0 30px;}
.landing-portals{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:18px;padding:0 30px 40px;max-width:1000px;margin:0 auto;width:100%;}
.portal-card{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);border-radius:14px;padding:28px 22px;text-align:center;transition:all .2s;text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:12px;backdrop-filter:blur(6px);}
.portal-card:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.35);transform:translateY(-3px);text-decoration:none;}
.portal-icon{width:62px;height:62px;border-radius:16px;display:flex;align-items:center;justify-content:center;}
.portal-icon .icon{width:30px;height:30px;color:#fff;}
.portal-card.admin .portal-icon{background:var(--blu-l);}
.portal-card.genitore .portal-icon{background:var(--arancio);}
.portal-card.ditta .portal-icon{background:var(--verde);}
.portal-card h2{color:#fff;font-size:19px;margin:0;font-weight:700;}
.portal-card p{color:#9db4c6;font-size:13px;margin:0;line-height:1.5;}
.portal-card .cta{background:rgba(255,255,255,.15);color:#fff;padding:7px 18px;border-radius:999px;font-size:13px;font-weight:600;border:1px solid rgba(255,255,255,.25);margin-top:4px;}
.portal-card:hover .cta{background:rgba(255,255,255,.25);}

/* APP SHELL */
.app-shell{display:flex;min-height:100vh;}
.sidebar{width:244px;flex-shrink:0;padding:0 0 24px;display:flex;flex-direction:column;}
.sidebar.blu{background:var(--blu-s);}
.sidebar.arancio{background:linear-gradient(180deg,#1e3a5a,#0f2438);}
.sidebar.verde{background:linear-gradient(180deg,#1a3d28,#0d2418);}
.sidebar .brand{display:flex;align-items:center;gap:12px;padding:18px;border-bottom:1px solid rgba(255,255,255,.1);}
.bicon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.bicon .icon{width:21px;height:21px;color:#fff;}
.bicon.blu{background:var(--blu-l);} .bicon.arancio{background:var(--arancio);} .bicon.verde{background:var(--verde);}
.brand-text strong{color:#fff;font-size:14px;display:block;line-height:1.3;}
.brand-text small{color:#9db4c6;font-size:11px;}
.sidebar nav{padding:10px 0;flex:1;}
.sidebar nav a{display:flex;align-items:center;gap:10px;padding:9px 18px;color:#cfe0ec;font-size:14px;border-left:3px solid transparent;transition:all .15s;}
.sidebar nav a .icon{color:#9db4c6;width:17px;height:17px;}
.sidebar nav a:hover{background:rgba(255,255,255,.07);text-decoration:none;}
.sidebar nav a.active{background:rgba(255,255,255,.12);color:#fff;font-weight:600;}
.sidebar.blu nav a.active{border-left-color:var(--arancio);}
.sidebar.arancio nav a.active{border-left-color:var(--arancio-l);}
.sidebar.verde nav a.active{border-left-color:var(--verde-l);}
.sidebar nav a.active .icon{color:#fff;}
.nav-sep{text-transform:uppercase;font-size:10.5px;letter-spacing:.07em;color:#7e96aa;padding:13px 18px 4px;}
.nav-badge{margin-left:auto;background:#a3342f;color:#fff;font-size:11px;padding:1px 7px;border-radius:999px;font-weight:700;}
.main{flex:1;min-width:0;display:flex;flex-direction:column;}
.topbar{background:#fff;border-bottom:1px solid var(--grigio-bordo);padding:12px 24px;display:flex;justify-content:space-between;align-items:center;gap:12px;}
.topbar h1{font-size:18px;margin:0;color:var(--blu-s);}
.who{font-size:13px;color:var(--testo-tenue);display:flex;align-items:center;gap:10px;}
.content{padding:24px;flex:1;}

/* CARD / STATS */
.card{background:#fff;border:1px solid var(--grigio-bordo);border-radius:var(--radius);padding:20px;margin-bottom:20px;}
.card h2{margin-top:0;font-size:16px;color:var(--blu-s);display:flex;align-items:center;gap:8px;}
.card-a{border-left:4px solid var(--arancio);}
.grid-stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:13px;}
.stat{position:relative;background:#fff;border:1px solid var(--grigio-bordo);border-left:4px solid var(--verde);border-radius:var(--radius);padding:14px 14px 14px 56px;min-height:60px;}
.stat.a{border-left-color:var(--arancio);} .stat.b{border-left-color:var(--blu);} .stat.r{border-left-color:var(--rosso);}
.stat .si{position:absolute;left:12px;top:14px;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--grigio-fondo);color:var(--blu);}
.stat .si .icon{width:16px;height:16px;}
.stat.a .si{background:#dbeafe;color:var(--arancio-s);} .stat.b .si{background:#dce9f5;} .stat.r .si{background:#fbe8e8;color:var(--rosso);}
.stat .num{font-size:24px;font-weight:700;color:var(--blu-s);line-height:1;}
.stat .lbl{font-size:12px;color:var(--testo-tenue);margin-top:2px;}

/* TABLES */
table{width:100%;border-collapse:collapse;font-size:14px;}
th,td{padding:9px 10px;border-bottom:1px solid var(--grigio-bordo);text-align:left;}
th{background:#eef2f4;color:var(--blu-s);font-weight:600;}
tr:hover td{background:#fafcfd;}
.tc{text-align:center;} .tr{text-align:right;}

/* TOOLBAR / BUTTONS */
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
.toolbar form{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--radius);border:1px solid var(--blu);background:var(--blu);color:#fff;font-size:14px;cursor:pointer;font-family:inherit;}
.btn .icon{width:15px;height:15px;}
.btn:hover{background:var(--blu-s);text-decoration:none;color:#fff;}
.btn.sec{background:#fff;color:var(--blu);} .btn.sec:hover{background:#eef2f4;color:var(--blu);}
.btn.acc{background:var(--arancio);border-color:var(--arancio);} .btn.acc:hover{background:var(--arancio-s);}
.btn.grn{background:var(--verde);border-color:var(--verde);} .btn.grn:hover{background:var(--verde-s);}
.btn.red{background:#fff;color:var(--rosso);border-color:var(--rosso);} .btn.red:hover{background:#fbeceb;}
.btn.sm{padding:4px 9px;font-size:13px;} .btn.full{width:100%;justify-content:center;}

/* BADGES */
.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:12px;background:#e4ebee;color:var(--blu-s);}
.badge.ok{background:#e4f1e8;color:#2f6b46;} .badge.off{background:#fbeceb;color:var(--rosso);}
.badge.warn{background:#fbf3da;color:var(--giallo);} .badge.acc{background:#dbeafe;color:var(--arancio-s);}
.badge.grn{background:#dff0e8;color:var(--verde-s);}

/* FORMS */
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px 18px;}
.form-grid .full{grid-column:1/-1;}
label{display:block;font-size:13px;font-weight:600;color:var(--testo-tenue);margin-bottom:4px;}
input[type=text],input[type=password],input[type=email],input[type=date],input[type=time],input[type=number],input[type=tel],select,textarea{width:100%;padding:8px 10px;border:1px solid var(--grigio-bordo);border-radius:var(--radius);font-size:14px;font-family:inherit;background:#fff;color:var(--testo);}
input:focus,select:focus,textarea:focus{outline:2px solid var(--verde);outline-offset:1px;}
.help{font-size:12px;color:var(--testo-tenue);margin-top:3px;}
fieldset{border:1px dashed var(--grigio-bordo);border-radius:var(--radius);padding:14px;margin:0;}
fieldset legend{font-weight:700;color:var(--blu-s);padding:0 6px;font-size:14px;}

/* FLASH */
.flash{padding:10px 14px;border-radius:var(--radius);margin-bottom:16px;font-size:14px;}
.flash.success{background:#e4f1e8;color:#2f6b46;border:1px solid #bfe0cb;}
.flash.error{background:#fbeceb;color:var(--rosso);border:1px solid #f0c6c3;}
.flash.warning{background:#fbf3da;color:var(--giallo);border:1px solid #f0e0a8;}

.actions{display:flex;gap:8px;flex-wrap:wrap;}
.muted{color:var(--testo-tenue);font-size:13px;}

/* WEEKDAY PICKER */
.wdpicker{display:flex;gap:8px;flex-wrap:wrap;}
.wdpicker label{cursor:pointer;}
.wdpicker input{display:none;}
.wdpicker span{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:2px solid var(--grigio-bordo);font-weight:700;font-size:12px;color:var(--testo-tenue);background:#fff;transition:all .15s;}
.wdpicker input:checked+span{background:var(--blu);border-color:var(--blu);color:#fff;}

/* MEAL GRID */
.meal-grid-wrap{overflow-x:auto;}
.meal-grid{border-collapse:collapse;font-size:11.5px;}
.meal-grid th,.meal-grid td{border:1px solid var(--grigio-bordo);text-align:center;padding:4px 2px;}
.meal-grid thead th{background:var(--blu);color:#fff;font-weight:700;min-width:21px;}
.meal-grid thead th:first-child{text-align:left;min-width:126px;padding-left:8px;}
.meal-grid .ml{text-align:left;font-weight:700;font-size:10.5px;text-transform:uppercase;padding-left:8px;background:#eef2f4;color:var(--blu-s);}
.meal-grid tr:nth-child(even) td:not(.ml){background:#fafcfd;}
.cok{color:#2f6b46;display:inline-flex;} .cof{color:var(--rosso);display:inline-flex;} .cna{color:#c0c8d0;display:inline-flex;}
.cok .icon,.cof .icon,.cna .icon{width:12px;height:12px;}
.cell-btn{border:none;background:none;padding:0;cursor:pointer;display:inline-flex;}
.info-pop{position:relative;display:inline-block;}
.info-pop summary{list-style:none;cursor:pointer;width:17px;height:17px;border-radius:50%;background:var(--grigio-bordo);display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:var(--blu-s);}
.info-pop summary::-webkit-details-marker{display:none;}
.info-pop[open] summary{background:var(--blu);color:#fff;}
.info-pop .pop{position:absolute;right:0;top:21px;background:#fff;border:1px solid var(--grigio-bordo);border-radius:6px;padding:9px 12px;box-shadow:0 6px 18px rgba(0,0,0,.15);font-size:12px;text-align:left;white-space:nowrap;z-index:10;}

/* PORTALE GENITORE */
.balance-hero{background:linear-gradient(135deg,var(--arancio),#1d4ed8);color:#fff;border-radius:14px;padding:20px;margin-bottom:18px;}
.balance-hero.low{background:linear-gradient(135deg,#a3342f,#7a241f);}
.balance-hero .lbl{font-size:12px;opacity:.85;display:flex;align-items:center;gap:6px;}
.balance-hero .amt{font-size:30px;font-weight:700;margin:5px 0 2px;}
.child-pills{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;}
.child-pills a{padding:7px 14px;border-radius:999px;border:1px solid var(--grigio-bordo);background:#fff;color:var(--testo);font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px;text-decoration:none;}
.child-pills a.active{background:var(--arancio);border-color:var(--arancio);color:#fff;}
.meal-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--grigio-bordo);}
.meal-row:last-child{border:none;}
.meal-row .dt{font-weight:700;min-width:100px;font-size:14px;}
.meal-row .mn{flex:1;color:var(--testo-tenue);font-size:13px;}

/* PULSANTONI MOBILE */
.app-buttons{display:grid;grid-template-columns:repeat(2,1fr);gap:13px;margin-bottom:18px;}
.app-btn{background:#fff;border:1px solid var(--grigio-bordo);border-radius:12px;padding:18px 12px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:9px;text-decoration:none;color:var(--testo);transition:all .15s;}
.app-btn:hover{border-color:var(--arancio);box-shadow:0 4px 14px rgba(0,0,0,.1);text-decoration:none;color:var(--testo);}
.ab-icon{width:48px;height:48px;border-radius:13px;display:flex;align-items:center;justify-content:center;}
.ab-icon .icon{width:25px;height:25px;color:#fff;}
.ab-icon.o{background:var(--arancio);} .ab-icon.b{background:var(--blu);}
.ab-icon.g{background:var(--verde);} .ab-icon.r{background:var(--rosso);} .ab-icon.v{background:#7e4f8a;}
.app-btn strong{font-size:14px;display:block;}
.app-btn span{font-size:11.5px;color:var(--testo-tenue);}

/* LOGIN / INSTALLER */
.center-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;}
.cs-blu{background:var(--blu-s);} .cs-arancio{background:linear-gradient(135deg,#0f2438,#1e3a5a);}
.cs-verde{background:linear-gradient(135deg,#0d2418,#1a3d28);}
.auth-box{background:#fff;padding:32px;border-radius:var(--radius);width:370px;box-shadow:0 10px 30px rgba(0,0,0,.25);}
.auth-icon{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:14px;}
.auth-icon.o{background:var(--arancio);} .auth-icon.b{background:var(--blu-l);} .auth-icon.g{background:var(--verde);}
.auth-icon .icon{width:24px;height:24px;color:#fff;}
.auth-box h1{font-size:18px;margin:0 0 4px;color:var(--blu-s);}
.auth-sub{font-size:13px;color:var(--testo-tenue);margin-bottom:18px;}
.installer-wrap{max-width:740px;margin:40px auto;padding:0 16px;}
.steps{display:flex;gap:5px;margin-bottom:18px;}
.steps .step{flex:1;text-align:center;padding:8px 4px;font-size:11px;border-radius:var(--radius);background:#e4ebee;color:var(--testo-tenue);}
.steps .step.active{background:var(--blu);color:#fff;font-weight:700;}
.steps .step.done{background:#d7e6dc;color:#2f6b46;}

/* Hamburger + overlay — navigazione mobile per admin/ditta */
.hamburger{display:none;width:40px;height:40px;border:none;background:#eef2f4;border-radius:8px;
  align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;}
.hamburger .icon{width:22px;height:22px;color:var(--blu-s);}
.nav-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:95;}
.nav-overlay.open{display:block;}

@media(max-width:800px){
  .form-grid{grid-template-columns:1fr;}
  .cols2{grid-template-columns:1fr!important;}
  .sidebar{position:fixed;top:0;left:0;height:100vh;height:100dvh;z-index:100;
    transform:translateX(-100%);transition:transform .25s;overflow-y:auto;}
  .sidebar.open{transform:translateX(0);}
  .hamburger{display:flex;}
  .content{padding:16px;}
  .card{overflow-x:auto;}
  .auth-box{width:94vw;padding:24px 18px;}
  .landing-portals{padding:0 14px 28px;gap:12px;}
}

/* ============================================================
   AGGIUNTA v4.1 — alias e classi mancanti
   ============================================================ */
:root {
  --bordo: var(--grigio-bordo);   /* alias per compatibilità */
}

/* auth-icon verde (ditta) */
.auth-icon.v { background: var(--verde); }
.auth-icon .icon { width:24px;height:24px;color:#fff; }

/* ---- CALENDARIO GRIGLIA (admin + genitore, stessa estetica) ---- */
.cal-wrap  { overflow-x:auto; }
.cal-grid  { display:grid;grid-template-columns:repeat(7,1fr);gap:4px;min-width:640px; }
.cal-hdr   { text-align:center;font-size:11px;font-weight:700;color:var(--testo-tenue);
             padding:6px 2px;border-bottom:2px solid var(--grigio-bordo);letter-spacing:.04em; }
.cal-hdr.we { color:#c0c8d0; }
.cal-empty { border:1px solid #f0f0f2;border-radius:7px;min-height:92px;background:#fafafa; }
.cal-day   { border:1px solid var(--grigio-bordo);border-radius:7px;padding:7px 6px;
             min-height:92px;font-size:12px;background:#fff;transition:box-shadow .15s;position:relative; }
.cal-day:hover { box-shadow:0 2px 8px rgba(0,0,0,.09); }

/* stati cella */
.cal-day.d-aperto   { background:#f0fff4;border-color:#9ed4ae; }
.cal-day.d-pren     { background:#f0fff4;border-color:#9ed4ae; }
.cal-day.d-disdetto { background:#fff6f0;border-color:#f0b080; }
.cal-day.d-consumato{ background:#f0f4ff;border-color:#aab4e0; }
.cal-day.d-chiuso   { background:#fff4f4;border-color:#f0b0b0; }
.cal-day.d-fest     { background:#fffaf0;border-color:#f0d090; }
.cal-day.we         { background:#fafafa;border-color:#ebebeb; }
.cal-day.oggi       { border-width:2px;border-color:var(--arancio)!important; }
.cal-day.passato    { opacity:.78; }

/* elementi dentro cella */
.cal-num            { font-weight:700;font-size:13px;margin-bottom:5px;color:var(--testo); }
.cal-num.oggi-num   { color:var(--arancio); }
.cal-note           { font-size:10px;color:var(--blu-l);margin:2px 0;
                      white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%; }
.cal-chiuso         { font-size:10px;color:var(--rosso);font-weight:600;margin:2px 0; }
.cal-azioni         { margin-top:5px;display:flex;gap:3px;flex-wrap:wrap; }
.cal-azioni form    { margin:0; }
.cbtn               { font-size:10px;padding:2px 8px;border-radius:5px;font-weight:700;
                      cursor:pointer;line-height:1.5;border:1px solid;background:#fff; }
.cbtn-r             { border-color:var(--rosso);color:var(--rosso); }
.cbtn-r:hover       { background:#fbeceb; }
.cbtn-g             { border-color:var(--verde);color:var(--verde); }
.cbtn-g:hover       { background:#edfbf0; }

/* badge contatori cella */
.cbadge             { display:inline-flex;align-items:center;gap:3px;border-radius:5px;
                      padding:2px 7px;font-size:10px;font-weight:700;margin:1px 0;
                      line-height:1.4;white-space:nowrap; }
.cb-g { background:#d4f0dc;color:#1a6b32; }
.cb-r { background:#fde0d8;color:#9a2010; }
.cb-b { background:#dce4ff;color:#2a40a0; }
.cb-o { background:#ffefd8;color:#9a5010; }

/* mese separator (pasti genitore) */
.mese-sep { font-size:13px;font-weight:700;color:var(--blu-s);
            padding:8px 0 10px;border-bottom:2px solid var(--grigio-bordo);
            margin-bottom:10px;display:flex;align-items:center;gap:8px; }

/* selezione figlio (pills) */
.child-tabs { display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px; }
.child-tabs a { border:1px solid var(--grigio-bordo);border-radius:999px;padding:5px 15px;
                font-size:13px;font-weight:600;color:var(--testo);text-decoration:none;
                display:flex;align-items:center;gap:5px;transition:.15s; }
.child-tabs a.active,.child-tabs a:hover { background:var(--arancio);border-color:var(--arancio);color:#fff; }

/* pannelli generate/festività */
.panel-gen  { background:#f0f4ff;border:1px solid #c8d8f8;border-radius:10px;padding:14px;margin-bottom:14px; }
.panel-fest { background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:14px;margin-bottom:14px; }

/* stampa */
@media print {
  .sidebar,.topbar,.toolbar,.cal-azioni,.btn,.cbtn { display:none!important; }
  .card { border:none;box-shadow:none; }
  .cal-day { min-height:70px; }
}
