:root{--cream:#f5f0e8;--paper:#faf7f2;--ink:#2c2416;--ink2:#6b5d4a;--ink3:#a89880;--rust:#c4622d;--rust-light:#f2e8e1;--rust-mid:#e8a07a;--sage:#5a7a5a;--sage-light:#e8f0e8;--honey:#c4880a;--honey-light:#fdf3dc;--slate:#4a5a6a;--slate-light:#e4eaf0;--border:rgba(107,93,74,0.15);--border2:rgba(107,93,74,0.3);--ok:#27ae60;--warn:#e67e22;--bad:#e74c3c;--r:12px;--rs:8px;--sh:0 2px 12px rgba(44,36,22,0.08)}
[data-theme=dark]{--cream:#1c1812;--paper:#262019;--ink:#f0e9dd;--ink2:#c4b5a0;--ink3:#7a6d58;--rust:#e07a42;--rust-light:#3a2a1e;--rust-mid:#a05a32;--sage:#8fad8f;--sage-light:#242e24;--honey:#e0a832;--honey-light:#332a14;--slate:#8fa5ba;--slate-light:#20282f;--border:rgba(240,233,221,0.1);--border2:rgba(240,233,221,0.22);--sh:0 2px 12px rgba(0,0,0,0.3)}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--f-body);background:var(--cream);color:var(--ink);min-height:100dvh;font-size:15px;line-height:1.5;transition:background .3s,color .3s}
body::before{content:'';position:fixed;inset:0;background-image:repeating-linear-gradient(0deg,transparent,transparent 27px,var(--border) 27px,var(--border) 27.5px);opacity:.4;pointer-events:none;z-index:0}
#app{position:relative;z-index:1;min-height:100dvh;display:flex;flex-direction:column}
header{background:var(--paper);border-bottom:1.5px solid var(--border2);padding:11px 16px;position:sticky;top:0;z-index:100;box-shadow:var(--sh)}
.hinner{max-width:860px;margin:0 auto;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.logo{font-family:var(--f-display);font-style:italic;font-size:1.3rem;letter-spacing:-0.02em}
.logo em{color:var(--rust);font-style:normal}
.streak{display:flex;align-items:center;gap:4px;background:var(--honey-light);border:1.5px solid var(--border2);border-radius:20px;padding:3px 11px;font-weight:700;font-size:0.8rem;color:var(--honey)}
.probadge{font-size:0.6rem;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;background:var(--ink);color:var(--cream);padding:3px 9px;border-radius:20px}
.alertpill{background:var(--rust);color:#fff;font-size:0.68rem;font-weight:700;padding:4px 10px;border-radius:20px;cursor:pointer;display:none}
.hright{margin-left:auto;display:flex;align-items:center;gap:7px}
.iconbtn{width:32px;height:32px;border:1.5px solid var(--border2);background:none;color:var(--ink2);border-radius:var(--rs);cursor:pointer;font-size:0.95rem;display:flex;align-items:center;justify-content:center;transition:all .15s}
.iconbtn:hover{border-color:var(--rust);color:var(--rust)}
nav{background:var(--paper);border-bottom:1.5px solid var(--border);display:flex;overflow-x:auto;scrollbar-width:none;position:sticky;top:55px;z-index:99}
nav::-webkit-scrollbar{display:none}
.nbtn{flex:1;min-width:68px;padding:10px 4px 8px;border:none;background:none;color:var(--ink3);font-family:var(--f-body);font-size:0.62rem;font-weight:700;text-transform:uppercase;letter-spacing:0.07em;cursor:pointer;border-bottom:2.5px solid transparent;transition:all .18s;display:flex;flex-direction:column;align-items:center;gap:4px}
.nbtn svg{width:18px;height:18px;stroke-width:1.5}
.nbtn.active{color:var(--rust);border-bottom-color:var(--rust)}
main{flex:1;padding:20px 16px 90px;max-width:860px;margin:0 auto;width:100%}
.section{display:none}
.section.active{display:block;animation:fadein .28s ease}
@keyframes fadein{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.stitle{font-family:var(--f-display);font-size:1.18rem;font-weight:700;margin-bottom:16px;display:flex;align-items:center;gap:10px}
.datestrip{background:var(--paper);border:1.5px solid var(--border);border-radius:var(--r);display:flex;align-items:center;margin-bottom:18px;overflow:hidden;box-shadow:var(--sh)}
.datestrip input[type=date]{flex:1;border:none;background:none;font-family:var(--f-display);font-size:0.95rem;font-style:italic;color:var(--ink);padding:11px 14px;-webkit-appearance:none;color-scheme:light dark}
.datestrip input:focus{outline:none}
.darr{padding:11px 13px;border:none;background:none;color:var(--ink2);cursor:pointer;font-size:0.95rem}
.darr:hover{background:var(--cream)}
.todaybtn{padding:6px 11px;margin:6px;border-radius:var(--rs);border:1.5px solid var(--border2);background:none;color:var(--ink2);font-size:0.64rem;font-weight:700;letter-spacing:0.07em;text-transform:uppercase;cursor:pointer;font-family:var(--f-body)}
.todaybtn:hover{color:var(--rust);border-color:var(--rust)}
.mstrip{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:20px}
.mcard{background:var(--paper);border:1.5px solid var(--border);border-radius:var(--rs);padding:11px 8px;text-align:center;box-shadow:var(--sh)}
.mval{font-family:var(--f-display);font-size:1.3rem;font-weight:700;line-height:1}
.mlbl{font-size:0.58rem;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:var(--ink3);margin-top:4px}
.mcard.kcal{border-top:3px solid var(--rust)}.mcard.kcal .mval{color:var(--rust)}
.mcard.carb{border-top:3px solid var(--honey)}.mcard.carb .mval{color:var(--honey)}
.mcard.prot{border-top:3px solid var(--sage)}.mcard.prot .mval{color:var(--sage)}
.mcard.fat{border-top:3px solid var(--slate)}.mcard.fat .mval{color:var(--slate)}
.mgroup{margin-bottom:24px}
.mtitle{font-family:var(--f-hand);font-size:1.15rem;font-weight:700;color:var(--ink2);margin-bottom:9px;padding-bottom:5px;border-bottom:1.5px dashed var(--border2)}
.frow{background:var(--paper);border:1.5px solid var(--border);border-radius:var(--rs);padding:11px 13px;margin-bottom:7px;display:flex;align-items:flex-start;gap:10px;box-shadow:var(--sh);transition:all .15s}
.frow:hover{border-color:var(--rust-mid);transform:translateX(2px)}
.fdot{width:8px;height:8px;border-radius:50%;background:var(--rust-mid);margin-top:7px;flex-shrink:0}
.fbody{flex:1;min-width:0}
.fname{font-weight:700;font-size:0.92rem}
.fqty{font-family:var(--f-hand);font-size:0.86rem;color:var(--rust);font-weight:700}
.fmacros{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}
.mbadge{font-size:0.64rem;font-weight:700;padding:2px 8px;border-radius:20px}
.mb-k{background:var(--rust-light);color:var(--rust)}.mb-c{background:var(--honey-light);color:var(--honey)}.mb-p{background:var(--sage-light);color:var(--sage)}.mb-f{background:var(--slate-light);color:var(--slate)}
.fnote{font-size:0.71rem;color:var(--ink3);margin-top:4px;font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.factions{display:flex;gap:5px;flex-shrink:0}
.abtn{width:28px;height:28px;border-radius:var(--rs);border:1.5px solid var(--border);background:var(--cream);color:var(--ink2);cursor:pointer;font-size:0.8rem;display:flex;align-items:center;justify-content:center}
.abtn:hover{border-color:var(--rust);color:var(--rust)}
.abtn.del:hover{border-color:var(--bad);color:var(--bad)}
.fpaper{background:var(--paper);border:1.5px solid var(--border);border-radius:var(--r);padding:20px;margin-bottom:16px;box-shadow:var(--sh)}
.frow2{display:grid;gap:12px;margin-bottom:12px}
.c2{grid-template-columns:1fr 1fr}.c4{grid-template-columns:1fr 1fr 1fr 1fr}
.field{display:flex;flex-direction:column;gap:5px}
.field label{font-size:0.63rem;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:var(--ink2)}
.field input,.field select,.field textarea{background:var(--cream);border:1.5px solid var(--border2);border-radius:var(--rs);padding:9px 11px;font-family:var(--f-body);font-size:0.87rem;color:var(--ink);width:100%;-webkit-appearance:none;transition:all .18s;color-scheme:light dark}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--rust);box-shadow:0 0 0 3px rgba(196,98,45,0.12)}
.field textarea{resize:vertical;min-height:72px}
.subseclbl{font-size:0.63rem;font-weight:700;text-transform:uppercase;letter-spacing:0.13em;color:var(--ink3);margin:14px 0 12px;display:flex;align-items:center;gap:8px}
.subseclbl::after{content:'';flex:1;height:1px;background:var(--border)}
.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 17px;border-radius:var(--rs);border:1.5px solid transparent;font-family:var(--f-body);font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;cursor:pointer;transition:all .18s}
.btn-p{background:var(--rust);color:#fff;border-color:var(--rust)}
.btn-p:hover{filter:brightness(.88);transform:translateY(-1px)}
.btn-o{background:transparent;color:var(--ink2);border-color:var(--border2)}
.btn-o:hover{border-color:var(--rust);color:var(--rust)}
.btn-d{background:var(--bad);color:#fff;border-color:var(--bad)}
.btn-scan{background:var(--ink);color:var(--cream);border-color:var(--ink)}
.btn-sm{padding:6px 11px;font-size:0.66rem}
.empty{text-align:center;padding:52px 20px}
.ei{font-size:2.6rem;margin-bottom:13px;opacity:.5}
.et{font-family:var(--f-display);font-size:1.05rem;color:var(--ink2);margin-bottom:6px}
.ed{font-size:0.8rem;color:var(--ink3);font-weight:300}
.dheader{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.frow3{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
.chip{padding:5px 12px;border-radius:20px;border:1.5px solid var(--border2);background:var(--paper);color:var(--ink2);font-size:0.65rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;cursor:pointer;transition:all .15s}
.chip.active{background:var(--ink);border-color:var(--ink);color:var(--cream)}
.chip:hover:not(.active){border-color:var(--rust);color:var(--rust)}
.sgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
/* barra credenza proporzionale */
.shelftop{background:var(--paper);border:1.5px solid var(--border);border-radius:var(--r);padding:13px 17px 11px;margin-bottom:16px;box-shadow:var(--sh)}
.shelflbl{font-family:var(--f-hand);font-size:0.88rem;color:var(--ink3);font-weight:700;margin-bottom:7px;display:flex;justify-content:space-between;align-items:center}
.expbar{height:12px;border-radius:6px;overflow:hidden;display:flex;border:1px solid var(--border2);background:var(--cream)}
.expseg{height:100%;transition:width .5s ease}
.expseg.scaduto{background:var(--bad)}.expseg.urgente{background:var(--warn)}.expseg.presto{background:var(--honey)}.expseg.ok{background:var(--ok)}
.explegend{display:flex;gap:12px;flex-wrap:wrap;margin-top:7px;font-size:0.66rem;color:var(--ink2);font-weight:700}
.legdot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;vertical-align:middle}
.sc{background:var(--paper);border:1.5px solid var(--border);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh);transition:all .18s}
.sc:hover{transform:translateY(-2px)}
.sctop{height:4px}
.sctop.ok{background:var(--ok)}.sctop.presto{background:var(--honey)}.sctop.urgente{background:var(--warn)}.sctop.scaduto{background:var(--bad)}
.scbody{padding:12px 14px}
.scicon{font-size:1.5rem;margin-bottom:6px;display:block}
.scnome{font-family:var(--f-display);font-weight:700;font-size:0.95rem;margin-bottom:5px}
.sbadge{display:inline-flex;font-size:0.62rem;font-weight:700;padding:3px 9px;border-radius:20px;text-transform:uppercase;margin-bottom:9px}
.sbadge.ok{background:var(--sage-light);color:var(--sage)}
.sbadge.presto{background:var(--honey-light);color:var(--honey)}
.sbadge.urgente{background:var(--honey-light);color:var(--warn)}
.sbadge.scaduto{background:var(--rust-light);color:var(--bad)}
.smeta{font-size:0.74rem;color:var(--ink2);display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.scfoot{display:flex;gap:6px;border-top:1px solid var(--border);padding:9px 14px;background:var(--cream)}
.bkdrop{position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:200;display:flex;align-items:flex-end;opacity:0;pointer-events:none;transition:opacity .2s}
.bkdrop.open{opacity:1;pointer-events:all}
.modal{background:var(--paper);border-radius:var(--r) var(--r) 0 0;border:1.5px solid var(--border);border-bottom:none;padding:0 0 34px;width:100%;max-height:93dvh;overflow-y:auto;transform:translateY(100%);transition:transform .3s cubic-bezier(.34,1.4,.64,1);max-width:620px;margin:0 auto}
.bkdrop.open .modal{transform:translateY(0)}
.mhandle{width:40px;height:4px;background:var(--border2);border-radius:2px;margin:12px auto}
.mhead{padding:4px 20px 14px;border-bottom:1.5px solid var(--border);margin-bottom:15px}
.mtitlemod{font-family:var(--f-display);font-size:1.1rem;font-weight:700}
.mbody{padding:0 20px}
.mfooter{display:flex;gap:8px;margin-top:15px}
.sday{background:var(--paper);border:1.5px solid var(--border);border-radius:var(--r);padding:12px 15px;margin-bottom:8px;display:flex;align-items:center;gap:12px;cursor:pointer;box-shadow:var(--sh);transition:all .15s}
.sday:hover{border-color:var(--rust-mid);transform:translateX(3px)}
.sdatebox{background:var(--rust-light);border-radius:var(--rs);padding:7px 10px;text-align:center;min-width:48px;flex-shrink:0}
.sdd{font-family:var(--f-display);font-size:1.25rem;font-weight:700;color:var(--rust);line-height:1}
.smon{font-size:0.58rem;font-weight:700;text-transform:uppercase;color:var(--rust-mid)}
.sname{font-weight:700;margin-bottom:3px}
.smacros{display:flex;gap:8px;flex-wrap:wrap}
.sm{font-size:0.78rem;font-family:var(--f-hand);font-weight:700}
.twrap{position:fixed;bottom:70px;left:50%;transform:translateX(-50%);z-index:300;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}
.toast{background:var(--ink);color:var(--cream);border-radius:20px;padding:9px 19px;font-size:0.76rem;font-weight:700;box-shadow:0 4px 20px rgba(0,0,0,0.25);animation:ti .25s ease;white-space:nowrap}
.toast.success{background:var(--sage)}.toast.error{background:var(--bad)}
@keyframes ti{from{opacity:0;transform:translateY(8px)}}
#reader{border-radius:var(--r);overflow:hidden;margin-bottom:12px}
.scanresult{background:var(--sage-light);border:1.5px solid var(--border2);border-radius:var(--rs);padding:13px;margin-bottom:12px;display:none}
.scanresult.show{display:block}
.rcard{background:var(--paper);border:1.5px solid var(--border);border-radius:var(--r);padding:15px;margin-bottom:11px;box-shadow:var(--sh);animation:fadein .3s ease}
.rname{font-family:var(--f-display);font-weight:700;font-size:1rem;margin-bottom:5px}
.rmatch{display:inline-flex;font-size:0.64rem;font-weight:700;padding:3px 9px;border-radius:20px;text-transform:uppercase;margin-bottom:8px}
.rm-hi{background:var(--sage-light);color:var(--sage)}.rm-mid{background:var(--honey-light);color:var(--honey)}.rm-lo{background:var(--rust-light);color:var(--rust)}
.ring{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.ripill{font-size:0.68rem;padding:3px 9px;border-radius:20px;font-weight:700}
.ri-hai{background:var(--sage-light);color:var(--sage)}
.ri-manca{background:var(--cream);color:var(--ink3);border:1px dashed var(--border2);text-decoration:line-through}
.prowall{background:var(--ink);border-radius:var(--r);padding:30px 24px;text-align:center;color:var(--cream)}
.prowall h3{font-family:var(--f-display);font-style:italic;font-size:1.25rem;margin-bottom:9px}
.prowall p{font-size:0.83rem;opacity:.8;margin-bottom:16px;font-weight:300}
.setrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1.5px dashed var(--border)}
.setrow:last-child{border-bottom:none}
.setlbl{font-weight:700;font-size:0.88rem}
.setdesc{font-size:0.72rem;color:var(--ink3);margin-top:2px}
/* Valore in sola lettura a destra di una setrow (username, ruolo, stato email).
   `text-align:right` perché i valori lunghi vanno a capo verso l'etichetta. */
.setval{font-size:0.82rem;color:var(--ink2);text-align:right;flex-shrink:0}
/* FAQ: `details`/`summary` si aprono da soli, senza JS.
   Il marker di default è sostituito da un +/- che segue lo stato aperto. */
.faqitem{border-bottom:1.5px dashed var(--border)}
.faqitem:last-child{border-bottom:none}
.faqq{font-weight:700;font-size:0.85rem;padding:13px 24px 13px 0;cursor:pointer;position:relative;list-style:none}
.faqq::-webkit-details-marker{display:none}
.faqq::after{content:'+';position:absolute;right:2px;top:11px;font-size:1.1rem;color:var(--ink3);font-weight:400}
.faqitem[open] .faqq::after{content:'−'}
.faqa{font-size:0.78rem;color:var(--ink3);line-height:1.6;padding:0 24px 14px 0}
.switch{position:relative;width:44px;height:24px;flex-shrink:0}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;inset:0;background:var(--border2);border-radius:24px;cursor:pointer;transition:.25s}
.slider::before{content:'';position:absolute;width:18px;height:18px;left:3px;top:3px;background:var(--paper);border-radius:50%;transition:.25s}
.switch input:checked + .slider{background:var(--rust)}
.switch input:checked + .slider::before{transform:translateX(20px)}
.emojiinput{width:64px;text-align:center;font-size:1.2rem;background:var(--cream);border:1.5px solid var(--border2);border-radius:var(--rs);padding:6px}
.seg{display:flex;border:1.5px solid var(--border2);border-radius:var(--rs);overflow:hidden}
.seg button{border:none;background:none;color:var(--ink2);padding:6px 14px;font-size:0.72rem;font-weight:700;cursor:pointer;font-family:var(--f-body)}
.seg button.active{background:var(--rust);color:#fff}
@media(max-width:500px){.mstrip{grid-template-columns:repeat(2,1fr)}.c4{grid-template-columns:1fr 1fr}.sgrid{grid-template-columns:1fr}}
@media(min-width:600px){.bkdrop{align-items:center}.modal{border-radius:var(--r);border-bottom:1.5px solid var(--border);transform:scale(.94)}.bkdrop.open .modal{transform:scale(1)}}

/* ─── Account, abbonamento, sessioni (aggiunte v4) ─────────────────── */

.subsectitle {
  font-family: var(--f-display);
  font-size: 0.95rem; font-weight: 700;
  margin: 20px 0 8px;
}
.subsectitle.small { font-size: 0.8rem; margin: 14px 0 6px; opacity: .75; }
.subsectitle.danger { color: var(--bad); }

.fpaper.danger { border: 1px solid var(--bad); }

.warnbox {
  background: var(--honey-light, rgba(255,193,7,.14));
  border-radius: var(--rs); padding: 10px 12px;
  font-size: .74rem; line-height: 1.5; font-weight: 600;
  margin: 0 0 12px;
}

.fhint { display: block; margin-top: 4px; font-size: .68rem; color: var(--ink3); }

.setactions:empty { display: none; }

/* Sessioni: l'IP e lo user-agent possono essere lunghi, quindi vanno a capo
   invece di allargare la pagina. */
.sessrow {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 0; border-bottom: 1px solid var(--line);
}
.sessrow:last-child { border-bottom: none; }
.sessrow.current { opacity: 1; }
.sessinfo { flex: 1; min-width: 0; }
.sessinfo .setdesc { word-break: break-word; }
.sessinfo .setlbl { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }

.payrow {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 0; border-bottom: 1px solid var(--line);
  font-size: .76rem;
}
.payrow:last-child { border-bottom: none; }
.paydate { flex: 1; color: var(--ink3); }
.payamt { font-weight: 700; }

.probadge.muted { background: var(--line); color: var(--ink3); }

/* ─── Utility per rimuovere gli attributi style="" inline (CSP style-src) ───
   Ogni classe qui sotto sostituisce uno stile che prima era scritto a mano
   nel template o costruito in una stringa HTML da app.js. I valori davvero
   dinamici (percentuali di una barra, colore di un segmento) restano
   assegnati da JS con `element.style.xxx = ...`, che la CSP non blocca perché
   non è un attributo HTML: qui ci sono solo le combinazioni fisse. */
.hidden { display: none; }
.mono { font-family: monospace; }
.flex1 { flex: 1; }
.flex-gap8 { display: flex; gap: 8px; }
.m0 { margin: 0; }
.ml-auto { margin-left: auto; }
.mb-10 { margin-bottom: 10px; }
.mb-11 { margin-bottom: 11px; }
.mb-12 { margin-bottom: 12px; }
.mb-14 { margin-bottom: 14px; }
.note-min { min-height: 48px; }
.frow2-add { grid-template-columns: 1fr 76px 72px; }
.frow2-disp { grid-template-columns: 2fr 1fr 1fr; }
.mstrip-3 { grid-template-columns: repeat(3, 1fr); margin-bottom: 14px; }
.expcount-txt { font-family: var(--f-body); font-size: 0.68rem; }
.scan-hint {
  display: none;
  background: var(--sage-light); border-radius: var(--rs); padding: 8px 12px;
  font-size: 0.74rem; color: var(--sage); font-weight: 700; margin-bottom: 12px;
}
.scan-p { font-size: 0.73rem; color: var(--ink3); margin-bottom: 11px; }
.sr-name { font-family: var(--f-display); font-weight: 700; margin-bottom: 6px; }
.sr-macros { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.prowall-price { font-weight: 700; font-size: 1.05rem; }
.fname-row { display: flex; align-items: baseline; gap: 8px; }
.ing-preview { font-size: .69rem; color: var(--ink3); }
.sname-row { flex: 1; }
.sm-rust { color: var(--rust); }
.sm-honey { color: var(--honey); }
.sm-sage { color: var(--sage); }
.sm-ink3 { color: var(--ink3); }
/* Stessa mappa colore di .expseg.<stato>, applicata al pallino della legenda
   invece che al segmento della barra: prima era uno style="background:...". */
.legdot.scaduto { background: var(--bad); }
.legdot.urgente { background: var(--warn); }
.legdot.presto { background: var(--honey); }
.legdot.ok { background: var(--ok); }

/* ═══ Liquid glass (v4.1) ══════════════════════════════════════════════
   Sfondo verde salvia con due bagliori — uno caldo (ruggine), uno verde — e
   superfici frostate. Il vetro ha bisogno di qualcosa di vivo sotto per
   rifrangere: su una tinta piatta la sfocatura è indistinguibile da un
   pannello opaco. Blocco additivo: ridefinisce solo sfondo/sfocatura delle
   superfici e lascia intatti i bordi colorati e l'accento ruggine dei CTA. */
:root{
  --r:16px;
  --grad-top:#dde4d1; --grad-bot:#b6c7a7;
  --glow-warm:rgba(196,98,45,0.20); --glow-cool:rgba(90,122,90,0.22);
  --glass-bg:rgba(250,247,242,0.48); --glass-brd:rgba(255,255,255,0.65);
  --glass-blur:saturate(1.7) blur(26px);
  --glass-sh:0 14px 38px rgba(44,36,22,0.15);
}
[data-theme=dark]{
  --grad-top:#1b241a; --grad-bot:#0d1410;
  --glow-warm:rgba(224,122,66,0.18); --glow-cool:rgba(95,185,138,0.16);
  --glass-bg:rgba(38,32,25,0.44); --glass-brd:rgba(255,255,255,0.14);
  --glass-sh:0 12px 34px rgba(0,0,0,0.42);
}
body{
  background:
    radial-gradient(58% 44% at 88% -6%, var(--glow-warm), transparent 60%),
    radial-gradient(55% 45% at -8% 108%, var(--glow-cool), transparent 60%),
    linear-gradient(158deg, var(--grad-top), var(--grad-bot)) fixed;
}
/* Il motivo a righe sotto il vetro diventa rumore: via. */
body::before{ display:none; }
header, nav{
  background:var(--glass-bg);
  -webkit-backdrop-filter:var(--glass-blur); backdrop-filter:var(--glass-blur);
  border-color:var(--glass-brd);
}
.mcard, .frow, .fpaper, .sc, .datestrip, .sday, .rcard, .shelftop, .modal,
.scanresult, .prowall{
  background:var(--glass-bg);
  -webkit-backdrop-filter:var(--glass-blur); backdrop-filter:var(--glass-blur);
  border-color:var(--glass-brd);
  box-shadow:var(--glass-sh);
}
/* La promo Premium restava troppo chiara sul vetro: testo leggibile forzato. */
.prowall{ color:var(--ink); }
.prowall h3{ color:var(--rust); }
.prowall p{ color:var(--ink2); }
