/* Digesta — modern, legal-oriented dark theme.
   Ink-black background, brass/gold accent (the classic legal register),
   editorial serif for headings, clean sans for the working UI. System fonts
   only, so first paint is instant. */
:root{
  --bg:#0b0e12;            /* ink */
  --bg2:#0e1217;
  --panel:#12171e;        /* parchment-in-the-dark */
  --panel2:#171d26;
  --line:#222c38;
  --line2:#2c3947;
  --fg:#e9edf2;
  --muted:#8d9bab;
  --brass:#c8a04a;        /* legal gold */
  --brass-dim:#9a7a33;
  --accent:#6db3e6;
  --ok:#5cc08a; --err:#e0707c; --warn:#e0bd6a;
  --radius:12px;
  --shadow:0 8px 28px rgba(0,0,0,.45);
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;color:var(--fg);font:15px/1.6 var(--sans);
  background:
    radial-gradient(1100px 600px at 80% -10%,rgba(200,160,74,.07),transparent 60%),
    radial-gradient(900px 500px at -10% 110%,rgba(109,179,230,.06),transparent 55%),
    var(--bg);
  background-attachment:fixed;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--accent);text-decoration:none;transition:color .12s}
a:hover{color:#9bcdf2}
code{background:#070a0d;border:1px solid var(--line);padding:1px 6px;border-radius:5px;
  font:.86em ui-monospace,"SF Mono",Menlo,Consolas,monospace;color:var(--brass)}
.container{max-width:1040px;margin:0 auto;padding:30px 22px 70px}
h1{font:600 1.9rem/1.2 var(--serif);letter-spacing:.2px;margin:.1em 0 .25em}
h2{font:600 1.15rem/1.3 var(--serif);margin:0 0 .7em;color:#f1ece1}
h3{font:600 1.05rem var(--serif);margin:0}
.muted{color:var(--muted)} .small{font-size:.85em}

/* ---- top bar ---- */
.topbar{
  display:flex;align-items:center;gap:22px;padding:13px 26px;
  background:linear-gradient(180deg,rgba(18,23,30,.96),rgba(13,17,22,.92));
  border-bottom:1px solid var(--line);
  backdrop-filter:blur(8px);position:sticky;top:0;z-index:20}
.brand{font:600 1.22rem var(--serif);color:#f3ecdc;letter-spacing:.3px}
.brand:hover{color:#fff}
.topbar nav{display:flex;gap:4px;margin-left:10px}
.topbar nav a{color:var(--muted);padding:6px 12px;border-radius:8px;font-size:.92rem}
.topbar nav a:hover{color:var(--fg);background:rgba(255,255,255,.04)}
.topbar .logout{margin-left:auto;display:flex;align-items:center;gap:12px}
.who{color:var(--muted);font-size:.88em}
.who::before{content:"●";color:var(--ok);margin-right:6px;font-size:.7em;vertical-align:middle}

/* ---- buttons ---- */
button{
  background:linear-gradient(180deg,#1d2632,#161d26);
  color:var(--fg);border:1px solid var(--line2);padding:8px 15px;border-radius:9px;
  cursor:pointer;font:500 .92rem var(--sans);transition:.14s;white-space:nowrap}
button:hover{border-color:var(--brass-dim);background:linear-gradient(180deg,#232e3b,#1a222c)}
button:active{transform:translateY(1px)}
#btn-download,#nu-create,#tok-create,#f-apply,.login-card button,#meta-close~*{}
#btn-download,#nu-create,#tok-create,#f-apply{
  background:linear-gradient(180deg,var(--brass),var(--brass-dim));
  color:#1a1306;border-color:var(--brass);font-weight:600}
#btn-download:hover,#nu-create:hover,#tok-create:hover,#f-apply:hover{
  background:linear-gradient(180deg,#d8b15c,#a9852f);border-color:#d8b15c}
button.secondary{background:#151b23}
button.danger{background:linear-gradient(180deg,#3a2125,#2a1619);border-color:#5a2f34;color:#f0c2c6}
button.danger:hover{border-color:var(--err)}

input,select{
  background:#070a0d;border:1px solid var(--line);color:var(--fg);
  padding:8px 11px;border-radius:9px;font:.92rem var(--sans);transition:.14s}
input:focus,select:focus{outline:none;border-color:var(--brass-dim);
  box-shadow:0 0 0 3px rgba(200,160,74,.13)}
label{display:inline-flex;flex-direction:column;gap:5px;font-size:.82em;color:var(--muted)}
label.check{flex-direction:row;align-items:center;gap:8px;color:var(--fg);font-size:.9em}
.row{display:flex;gap:11px;align-items:center;margin:13px 0;flex-wrap:wrap}
.row.wrap{flex-wrap:wrap}

/* ---- panels & cards ---- */
.panel{
  background:linear-gradient(180deg,var(--panel),var(--bg2));
  border:1px solid var(--line);border-radius:var(--radius);
  padding:18px 20px;margin:18px 0;box-shadow:var(--shadow)}
.panel h2{padding-bottom:.5em;border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:8px}
.panel h2::before{content:"";width:3px;height:1.05em;background:var(--brass);
  border-radius:2px;display:inline-block}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:18px}
.card{
  display:block;background:linear-gradient(180deg,var(--panel),var(--bg2));
  border:1px solid var(--line);border-radius:var(--radius);padding:20px;
  color:var(--fg);position:relative;overflow:hidden;transition:.16s;box-shadow:var(--shadow)}
.card::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;
  background:linear-gradient(var(--brass),var(--brass-dim));opacity:.0;transition:.16s}
.card:hover{border-color:var(--line2);transform:translateY(-2px);text-decoration:none}
.card:hover::before{opacity:1}
.card h3{margin-bottom:8px;color:#f3ecdc}
.card p{color:var(--muted);font-size:.9em;margin:0 0 12px}
.badge{display:inline-block;background:rgba(200,160,74,.1);border:1px solid var(--brass-dim);
  padding:3px 10px;border-radius:20px;font-size:.76em;color:var(--brass)}
/* stato di salute di un provider nella tabella Providers */
.badge-ok{background:rgba(90,170,110,.12);border-color:rgba(90,170,110,.55);color:#7fc493}
.badge-warn{background:rgba(214,158,46,.12);border-color:rgba(214,158,46,.55);color:#e0b25a}
.badge-block{background:rgba(200,70,70,.14);border-color:rgba(200,70,70,.6);color:#e08585}

/* ---- facets ---- */
.shortcuts{margin:4px 0 0;align-items:center}
.shortcuts button{padding:5px 12px;font-size:.85rem}
.cfg-h{margin:16px 0 4px;font:600 .74rem var(--sans);color:var(--brass);
  text-transform:uppercase;letter-spacing:.08em;border-top:1px solid var(--line);padding-top:12px}
.cfg-h:first-of-type{border-top:0;padding-top:0}
.snippet{font-size:.88rem;color:#cdd6e0;margin:6px 0;line-height:1.55}
.dropzone{border:2px dashed var(--line2);border-radius:10px;padding:26px;text-align:center;
  margin:14px 0;background:#0b0f12;transition:.15s}
.dropzone.over{border-color:var(--brass);background:rgba(200,160,74,.06)}
.bar{height:5px;background:#0b0f12;border:1px solid var(--line);border-radius:6px;
  overflow:hidden;margin:6px 0 2px;max-width:420px}
.bar span{display:block;height:100%;background:linear-gradient(90deg,var(--brass-dim),var(--brass));transition:width .4s}
.bar span.indet{width:35% !important;animation:indet 1.2s linear infinite;background:linear-gradient(90deg,transparent,var(--brass),transparent)}
@keyframes indet{0%{margin-left:-35%}100%{margin-left:100%}}
.op-line{font-size:.85rem;color:#e7edf1;margin:4px 0 2px}
.err-line{color:#ff8a8a;font-size:.82em;margin-top:4px;white-space:normal;word-break:break-word}
.st-paused{color:var(--accent);border-color:rgba(109,179,230,.4)}
.node-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;background:var(--muted)}
.node-dot.on{background:var(--ok)} .node-dot.off{background:var(--err)}
.facets{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin:12px 0}
.facet h4{margin:0 0 7px;font:600 .72rem var(--sans);color:var(--brass);
  text-transform:uppercase;letter-spacing:.09em}
.facet .opts{max-height:170px;overflow:auto;border:1px solid var(--line);
  border-radius:9px;padding:8px 10px;background:#070a0d}
.facet .opts label{flex-direction:row;align-items:center;gap:7px;color:var(--fg);
  font-size:.88em;padding:3px 0}
.facet .opts::-webkit-scrollbar{width:8px}
.facet .opts::-webkit-scrollbar-thumb{background:var(--line2);border-radius:8px}

/* ---- tables & rows ---- */
table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{text-align:left;padding:10px 11px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--brass);font:600 .72rem var(--sans);text-transform:uppercase;letter-spacing:.07em}
tr:hover td{background:rgba(255,255,255,.015)}
.doc-row{display:flex;gap:10px;align-items:center;justify-content:space-between;
  padding:11px 2px;border-bottom:1px solid var(--line)}
.doc-row:last-child{border-bottom:0}
.doc-row strong{font:600 .98rem var(--serif)}
.meta-line{font-size:.82em;color:var(--muted);margin-top:3px}
.actions{display:flex;gap:7px;flex-shrink:0}
.actions button{padding:6px 11px;font-size:.82rem}
.tag{font-size:.74em;padding:2px 9px;border-radius:20px;border:1px solid var(--line2)}
.st-done{color:var(--ok);border-color:rgba(92,192,138,.4)}
.st-error{color:var(--err);border-color:rgba(224,112,124,.4)}
.st-running{color:var(--warn);border-color:rgba(224,189,106,.4)}
.st-queued,.st-cancelled{color:var(--muted)}

/* ---- login ---- */
.login-card{
  max-width:380px;margin:10vh auto;background:linear-gradient(180deg,var(--panel),var(--bg2));
  border:1px solid var(--line);border-radius:16px;padding:34px 32px;box-shadow:var(--shadow);
  position:relative;overflow:hidden}
.login-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,transparent,var(--brass),transparent)}
.login-card h1{text-align:center;margin-bottom:2px}
.login-card>.muted{text-align:center}
.login-card form{display:flex;flex-direction:column;gap:15px;margin-top:20px}
.login-card label{color:var(--fg);font-size:.85em}
.login-card button{padding:11px;background:linear-gradient(180deg,var(--brass),var(--brass-dim));
  color:#1a1306;border-color:var(--brass);font-weight:600;font-size:.98rem}
.login-card button:hover{background:linear-gradient(180deg,#d8b15c,#a9852f)}

/* ---- misc ---- */
.alert{background:linear-gradient(180deg,#2e2024,#241619);border:1px solid #54343a;
  color:#f3c7cc;padding:10px 14px;border-radius:9px;margin:10px 0;word-break:break-all;
  box-shadow:var(--shadow)}
pre.meta{background:#070a0d;border:1px solid var(--line);border-radius:9px;
  padding:14px;max-height:60vh;overflow:auto;
  font:.82rem ui-monospace,Menlo,Consolas,monospace;color:#cdd6e0}
dialog{background:linear-gradient(180deg,var(--panel),var(--bg2));color:var(--fg);
  border:1px solid var(--line2);border-radius:14px;max-width:700px;width:90%;
  padding:22px;box-shadow:var(--shadow)}
dialog::backdrop{background:rgba(4,6,9,.7);backdrop-filter:blur(3px)}
::selection{background:rgba(200,160,74,.3)}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:8px;border:2px solid var(--bg)}
::-webkit-scrollbar-track{background:transparent}

/* ---- dashboard ---- */
.hero{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:4px}
.hero .sub{color:var(--muted);max-width:640px;margin:.2em 0 0}
.quick{display:flex;gap:9px;flex-wrap:wrap}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:13px;margin:18px 0 6px}
.stat{background:linear-gradient(180deg,var(--panel),var(--bg2));border:1px solid var(--line);
  border-radius:var(--radius);padding:15px 17px;position:relative;overflow:hidden}
.stat::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;
  background:linear-gradient(var(--brass),var(--brass-dim))}
.stat .n{font:600 1.7rem/1.1 var(--serif);color:#f3ecdc;letter-spacing:.3px}
.stat .l{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;margin-top:3px}
.stat .x{color:var(--brass);font-size:.78rem;margin-top:2px}

/* source accordion (compact, expandable) */
.acc{border:1px solid var(--line);border-radius:10px;margin:9px 0;overflow:hidden;
  background:linear-gradient(180deg,var(--panel),var(--bg2))}
.acc-head{display:flex;align-items:center;gap:12px;padding:11px 15px;cursor:pointer;user-select:none}
.acc-head:hover{background:rgba(255,255,255,.025)}
.acc-head .chev{color:var(--brass);transition:transform .18s;font-size:.8rem;width:12px}
.acc.open .chev{transform:rotate(90deg)}
.acc-head .nm{font:600 1rem var(--serif);color:#f3ecdc;flex:0 0 auto}
.acc-head .mini{margin-left:auto;display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.mini .b{font-size:.74rem;color:var(--muted);white-space:nowrap}
.mini .b b{color:var(--fg);font-weight:600}
.mini .b.vec b{color:var(--brass)}
.acc-body{display:none;padding:4px 15px 15px;border-top:1px solid var(--line)}
.acc.open .acc-body{display:block}
.statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px;margin:12px 0}
.statgrid .c .n{font:600 1.15rem var(--serif);color:#f1ece1}
.statgrid .c .l{color:var(--muted);font-size:.74rem}
.qa{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.qa button,.qa a.btn{padding:6px 12px;font-size:.84rem}
a.btn{display:inline-block;background:linear-gradient(180deg,#1d2632,#161d26);
  color:var(--fg);border:1px solid var(--line2);border-radius:9px;font:500 .92rem var(--sans)}
a.btn:hover{border-color:var(--brass-dim);text-decoration:none}
.grp-title{font:600 .82rem var(--sans);text-transform:uppercase;letter-spacing:.08em;
  color:var(--brass);margin:20px 0 2px}

/* --- Ricerca page: full-width + faceted layout ------------------------- */
.container.fullwidth{max-width:none;padding-left:26px;padding-right:26px}
.ricerca-head{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.ricerca-head input{padding:8px 11px}
.ricerca-head .grow{flex:1;min-width:300px;font-size:1.02rem}
.ricerca-head label{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.85rem}
.ricerca-layout{display:flex;gap:20px;align-items:flex-start}
.facets-bar{flex:0 0 280px;position:sticky;top:12px;max-height:calc(100vh - 40px);
  overflow-y:auto;overflow-x:hidden;padding-right:6px}
.facets-bar .facet-group{margin-bottom:16px}
.facets-bar .facet-group h4{margin:.2em 0 .5em;color:var(--brass);font-size:.72rem;
  text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line);padding-bottom:3px}
.ricerca-results{flex:1;min-width:0}
.toggle{display:inline-block;margin:3px 4px 0 0;padding:3px 10px;border-radius:20px;
  border:1px solid var(--line2);background:#151b23;color:var(--fg);cursor:pointer;
  font-size:.78rem;line-height:1.5;transition:all .12s}
.toggle:hover{border-color:var(--brass-dim)}
.toggle.active{background:linear-gradient(180deg,#e0bd6a,#c8a04a);border-color:var(--brass);color:#171d26;font-weight:600}
@media(max-width:820px){.ricerca-layout{flex-direction:column}.facets-bar{position:static;flex-basis:auto;max-height:none;width:100%}}

/* --- result rows: wide clickable left, compact actions right ----------- */
.result-row{display:flex;flex-direction:column;gap:6px;align-items:stretch}
.result-main{min-width:0}
.result-title{display:block;font-weight:600;color:var(--fg);cursor:pointer;text-decoration:none;line-height:1.4}
.result-title:hover{color:var(--brass);text-decoration:underline}
.result-snippet{color:var(--muted);font-size:.88em;margin:.3em 0;line-height:1.45;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.result-actions{display:flex;flex-direction:row;flex-wrap:wrap;gap:6px;margin-top:2px}
.result-actions button{padding:3px 11px;font-size:.74rem}
.facet-more{margin-top:4px}
.facet-more>summary{cursor:pointer;color:var(--accent);font-size:.76rem;margin:4px 0}

/* dashboard: foldable group (TAR) */
.grp-fold>summary{cursor:pointer;list-style:none}
.grp-fold>summary::-webkit-details-marker{display:none}
.grp-fold>summary::before{content:"▶ ";color:var(--brass);font-size:.8em}
.grp-fold[open]>summary::before{content:"▼ "}

/* login-needed banner (session-scoped providers) */
.login-banner{background:linear-gradient(180deg,#3a2f14,#241d0e);border-bottom:1px solid var(--brass-dim);
  color:var(--warn);padding:8px 20px;font-size:.9rem;text-align:center}
.login-banner a{color:var(--brass);font-weight:700;text-decoration:underline}

/* global SPID/CIE login dialog */
.login-dialog{max-width:min(920px,94vw);border:1px solid var(--line2);border-radius:12px;
  background:var(--panel);color:var(--fg);padding:18px}
.login-dialog::backdrop{background:rgba(0,0,0,.55)}
.link-btn{background:none;border:none;color:var(--brass);font-weight:700;text-decoration:underline;
  cursor:pointer;padding:0;font:inherit}
.link-btn:disabled{color:var(--muted);text-decoration:none;cursor:default}

/* spinner (QR generation, etc.) */
.spinner{width:46px;height:46px;border:4px solid #d8d8d8;border-top-color:var(--brass,#b8860b);
  border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* --- Distributed-download volunteers page --- */
.stat .k{display:block;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em}
.stat b{font:600 1.6rem/1.1 var(--serif);color:var(--fg)}
code.token{font-size:.82rem;background:#070a0d}
.new-token{margin-top:10px;padding:10px;border:1px dashed var(--brass-dim);border-radius:8px}
.new-token .token{font-size:.92rem;color:var(--brass)}
button.linkish{background:none;border:0;color:var(--accent);cursor:pointer;font-size:.78rem;padding:0 0 0 8px;text-decoration:underline}
.vstatus{font-weight:600;font-size:.85rem}
.vstatus.v-ok{color:var(--ok)}
.vstatus.v-warn{color:var(--warn)}
.vstatus.v-err{color:var(--err)}
.vstatus.v-muted{color:var(--muted)}
a.button{display:inline-block;text-decoration:none;background:linear-gradient(180deg,#1d2632,#161d26);
  color:var(--fg);border:1px solid var(--line2);padding:8px 15px;border-radius:9px;
  font:500 .92rem var(--sans);transition:.14s}
a.button:hover{border-color:var(--brass-dim);background:linear-gradient(180deg,#232e3b,#1a222c)}
select.cat-select{max-width:16em;font-size:.85rem}
a.button.small,button.small{padding:4px 10px;font-size:.8rem}

/* Volontari — compact volunteer rows (merge token/version/pausa etc.) */
.vname{font-weight:600;color:var(--fg)}
.vmeta{color:var(--muted);font-size:.76rem;margin-top:3px;display:flex;flex-wrap:wrap;
  gap:2px 9px;align-items:center}
.vmeta code.token{font-size:.76rem;padding:0 5px}
.vmeta .sep{opacity:.5}
.ndone{font:600 1.05rem var(--serif);color:#f1ece1}
#vol-table td{vertical-align:top}
#vol-table .cat-select{max-width:15em}
#vol-table .actions{flex-direction:column;align-items:stretch;gap:5px}
#vol-table .actions .button,#vol-table .actions button{text-align:center}

/* Volontari — download-stats chart (no library; brass/accent theme) */
.chart .cap{color:var(--muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.06em;margin:2px 0 9px}
.vbars{display:flex;flex-direction:column;gap:7px}
.vbar{display:grid;grid-template-columns:minmax(72px,150px) 1fr auto;gap:10px;align-items:center}
.vbar .nm{color:var(--fg);font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vbar .tk{height:13px;background:#0b0f12;border:1px solid var(--line);border-radius:7px;overflow:hidden}
.vbar .tk>i{display:block;height:100%;min-width:2px;border-radius:7px 0 0 7px;
  background:linear-gradient(90deg,var(--brass-dim),var(--brass));transition:width .4s}
.vbar .vn{font:600 .9rem var(--sans);color:#f3ecdc;min-width:3.2em;text-align:right}
.vbar .vn small{color:var(--accent);font-weight:600;margin-left:5px;font-size:.8em}
.daybars{display:flex;align-items:flex-end;gap:4px;height:96px;margin-top:2px}
.daybars .d{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.daybars .d>i{display:block;width:100%;max-width:24px;min-height:2px;border-radius:3px 3px 0 0;
  background:linear-gradient(180deg,var(--accent),#3d7fb0);transition:height .4s}
.daybars .d>span{color:var(--muted);font-size:.64rem;margin-top:5px}
.daybars .d.today>i{background:linear-gradient(180deg,var(--brass),var(--brass-dim))}

/* ============================================================= *
 *  Mobile / responsive
 *  Goal: no page-level horizontal scroll on phones. Wide tables
 *  scroll inside their own container; the top bar folds its nav
 *  into a scrollable strip; inputs never overflow the viewport.
 * ============================================================= */

/* Any table that can get wide is wrapped in .tbl-wrap so it scrolls
   inside itself instead of pushing the whole page sideways. */
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.tbl-wrap>table{min-width:max-content}
img,svg,canvas{max-width:100%;height:auto}

@media(max-width:820px){
  .container{padding:22px 16px 60px}
  .container.fullwidth{padding-left:16px;padding-right:16px}
}

@media(max-width:720px){
  h1{font-size:1.55rem}
  h2{font-size:1.05rem}
  body{font-size:14.5px}

  /* Top bar: brand + logout stay on the first line, nav becomes a
     full-width horizontally-scrollable strip below them. */
  .topbar{gap:8px 12px;padding:10px 14px;flex-wrap:wrap}
  .topbar nav{order:3;width:100%;margin-left:0;gap:2px;overflow-x:auto;
    flex-wrap:nowrap;-webkit-overflow-scrolling:touch;padding-bottom:2px}
  .topbar nav::-webkit-scrollbar{height:0}
  .topbar nav a{white-space:nowrap;padding:6px 10px}
  .topbar .logout{margin-left:auto;gap:8px}
  .brand{font-size:1.1rem}

  /* Forms/inputs must never be wider than the screen. Several inputs carry
     inline min-width (e.g. 280–320px) for desktop — override it here so they
     can shrink instead of forcing a horizontal scroll. */
  input,select,textarea{max-width:100%}
  .row input,.row select,.ricerca-head input{min-width:0 !important}
  .row>label{min-width:0}
  label input,label select{max-width:100%}
  .ricerca-head .grow{min-width:0}
  .ricerca-head input,.ricerca-head [id^="f-"]{width:100%}

  .panel{padding:15px 14px;margin:14px 0}
  .cards{grid-template-columns:1fr}

  /* Chart: labels can shrink, keep bars readable */
  .vbar{grid-template-columns:minmax(60px,90px) 1fr auto;gap:8px}
  .daybars{height:80px}
}

@media(max-width:480px){
  .container{padding:18px 12px 54px}
  .container.fullwidth{padding-left:12px;padding-right:12px}
  h1{font-size:1.4rem}
  .stats{grid-template-columns:1fr 1fr}
  .disp-status,#disp-status{gap:12px !important}
  /* Buttons in a row get comfortable tap targets and wrap freely */
  .row button,.row a.button,.row .button{flex:1 1 auto}
  .daybars .d>span{font-size:.58rem}
}
