:root,[data-theme="light"]{
  --bg:#f8fafc;--surf:#fff;--surf2:#f1f5f9;--surf3:#e2e8f0;
  --brd:#cbd5e1;--div:#e2e8f0;--tx:#0f172a;--txm:#475569;--txf:#64748b;
  --pri:#1d4ed8;--prih:#1e40af;--pril:#dbeafe;
  --grn:#16a34a;--grnh:#15803d;--grnl:#dcfce7;
  --ora:#d97706;--orah:#b45309;--oral:#fef3c7;
  --red:#dc2626;--redh:#b91c1c;--redl:#fee2e2;
  --sky:#0ea5e9;--skyl:#0284c7;--skylt:#e0f2fe;
  --hbg:#1e293b;--htx:#f1f5f9;--sh-sm:0 1px 2px rgba(0,0,0,.05);
  --sh-md:0 4px 12px rgba(0,0,0,.08);--sh-lg:0 8px 24px rgba(0,0,0,.12);
  --r-sm:.25rem;--r-md:.5rem;--r-lg:.75rem;--r-xl:1rem;--tr:200ms cubic-bezier(.16,1,.3,1);
  --f:'Inter',system-ui,sans-serif;
}
[data-theme="dark"]{
  --bg:#0f0f23;--surf:#171717;--surf2:#1a1a2e;--surf3:#1e1e2f;--brd:#333;--div:#2a2a3a;--tx:#e2e8f0;--txm:#94a3b8;--txf:#64748b;
  --pri:#60a5fa;--prih:#93c5fd;--pril:#1e3a8a;--grn:#4ade80;--grnh:#22c55e;--grnl:#14532d;--ora:#facc15;--orah:#eab308;--oral:#422006;
  --red:#f87171;--redh:#fca5a5;--redl:#450a0a;--sky:#38bdf8;--skyl:#0369a1;--skylt:#164e63;--hbg:#111827;--htx:#f9fafb;
  --sh-sm:0 1px 3px rgba(0,0,0,.4);--sh-md:0 4px 12px rgba(0,0,0,.5);--sh-lg:0 8px 24px rgba(0,0,0,.6);
}
*,*::before,*::after{box-sizing:border-box;}
html{font-size:15px;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;}
body{font-family:var(--f);background:var(--bg);color:var(--tx);line-height:1.55;overflow-x:hidden;margin:0;}
input,select,textarea,button{font:inherit;color:inherit;}
button{cursor:pointer;background:none;border:none;outline:none;}
:focus-visible{outline:2px solid var(--pri);outline-offset:2px;}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-fill-mode:forwards!important;transition-duration:.01ms!important;}}

.app{ min-height:100dvh; display:flex; flex-direction:column; }
.header{
  background:var(--hbg); color:var(--htx);
  padding:0.6rem 1rem;
  display:flex; align-items:center; justify-content:space-between;
  gap:0.5rem; box-shadow:var(--sh-md); position:sticky; top:0; z-index:100;
  flex-wrap:wrap;
}
.logo{ display:flex; align-items:center; gap:0.75rem; min-width:0; flex-wrap:nowrap; }
.logo b{ font-size:0.875rem; font-weight:700; letter-spacing:-0.02em; }
.logo small{ font-size:0.7rem; opacity:0.8; }
.brand-text{ display:flex; flex-direction:column; min-width:0; }
.home-link{
  display:inline-flex; align-items:center; gap:0.35rem;
  color:var(--htx); text-decoration:none;
  font-weight:700; font-size:0.8rem; line-height:1;
  padding:0.35rem 0.55rem; border-radius:var(--r-md);
  border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.06);
  white-space:nowrap;
  transition:background var(--tr), border-color var(--tr), transform var(--tr), opacity var(--tr);
  flex-shrink:0;
}
.home-link:hover{
  background:rgba(255,255,255,.12);
  border-color:rgba(255,255,255,.26);
  text-decoration:none;
  transform:translateX(-1px);
}
.home-link svg{ width:12px; height:12px; flex-shrink:0; }
.actions{ display:flex; gap:0.5rem; align-items:center; flex-wrap:wrap; }
.btn{ padding:0.4rem 0.875rem; border-radius:var(--r-md); font-size:0.8rem; font-weight:500; border:1px solid currentColor; background:transparent; color:inherit; cursor:pointer; transition:all var(--tr); white-space:nowrap; }
.btn-pri{ background:var(--pri); color:white; border-color:var(--pri); }
.btn-pri:hover{ background:var(--prih); }
.btn-grn{ background:var(--grn); color:white; border-color:var(--grn); }
.btn-grn:hover{ background:var(--grnh); }
.btn-red{ background:transparent; color:var(--red); border-color:var(--red); }
.btn-red:hover{ background:var(--redl); }
.btn-ghost{ background:transparent; color:var(--txm); border-color:transparent; }
.btn-ghost:hover{ background:var(--surf2); }
.btn-sm{ padding:0.25rem 0.625rem; font-size:0.75rem; }
.ml-auto { margin-left: auto; }
.btn-ico{ padding:0.4rem; border-radius:var(--r-sm); line-height:1; }

.sync-badge{
  padding:0.25rem 0.6rem; border-radius:var(--r-md);
  font-size:0.7rem; font-weight:600;
  display:flex; align-items:center; gap:0.3rem;
  cursor:pointer; border:1px solid transparent;
  transition:all var(--tr);
}
.sync-badge.ok  { background:var(--grnl); color:var(--grnh); border-color:var(--grn); }
.sync-badge.warn{ background:var(--oral); color:var(--orah); border-color:var(--ora); }
.sync-badge.err { background:var(--redl); color:var(--redh); border-color:var(--red); }
.sync-badge.spin{ background:var(--pril); color:var(--prih); border-color:var(--pri); }
.sync-dot{ width:7px; height:7px; border-radius:50%; background:currentColor; flex-shrink:0; }
@keyframes pulse{ 0%,100%{ opacity:1 } 50%{ opacity:0.4 } }

.btn-storico{ display:none; }

.main{ flex:1; display:flex; gap:0; }
@media(min-width:800px){ .main{ gap:1rem; padding:1rem; } }
@media(max-width:799px){ .main{ flex-direction:column; padding:0.75rem; } }

.sidebar{ background:var(--surf); border-radius:var(--r-lg); box-shadow:var(--sh-lg); border:1px solid var(--brd); flex:0 0 320px; overflow:hidden; display:flex; flex-direction:column; }

@media(max-width:799px){
  .btn-storico{ display:inline-flex; align-items:center; gap:0.3rem; }
  .logo small{ display:none; }

  .sidebar{
    display:none;
    position:fixed;
    inset:0;
    z-index:200;
    width:85%;
    max-width:340px;
    border-radius:0;
    border:none;
  }
  .sidebar.open{ display:flex; }

  .sidebar-overlay{
    display:none;
    position:fixed;
    inset:0;
    z-index:199;
    background:rgba(0,0,0,0.45);
    backdrop-filter:blur(2px);
  }
  .sidebar-overlay.on{ display:block; }
}

.content{ flex:1; background:var(--surf); border-radius:var(--r-lg); box-shadow:var(--sh-lg); border:1px solid var(--brd); overflow:hidden; position:relative; }
.card{ padding:1.25rem; }

.site-header{ display:flex; align-items:center; gap:0.75rem; margin-bottom:1rem; padding-bottom:0.75rem; border-bottom:2px solid var(--div); }
.site-title{ font-size:1.125rem; font-weight:700; }
.site-subtitle{ font-size:0.85rem; color:var(--txm); }
.site-actions{ margin-left:auto; display:flex; gap:0.5rem; }

.cantiere-info{ padding:1rem; background:var(--surf2); border-radius:var(--r-md); border:1px solid var(--div); margin-bottom:1rem; }
.cantiere-name{ font-size:1.1rem; font-weight:700; margin-bottom:0.25rem; }
.cantiere-meta{ font-size:0.75rem; color:var(--txm); display:flex; gap:1rem; flex-wrap:wrap; }
.cantiere-btns{ display:flex; gap:0.5rem; flex-wrap:wrap; }

.list-container{ flex:1; overflow:auto; }
.list{ list-style:none; margin:0; padding:0; }
.list-item{ padding:0.75rem; border-bottom:1px solid var(--div); cursor:pointer; transition:all var(--tr); display:flex; align-items:center; gap:0.75rem; }
.list-item:hover{ background:var(--surf2); }
.list-item.active{ background:var(--skylt); border-left:3px solid var(--sky); }
.list-item-header{ flex:1; min-width:0; }
.list-item-nr{ font-size:0.875rem; font-weight:700; color:var(--pri); }
.list-item-cant{ font-size:0.8rem; color:var(--txm); margin-top:0.125rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.list-item-date{ font-size:0.7rem; color:var(--txf); }
.list-item-empty{ padding:2rem; text-align:center; color:var(--txf); font-style:italic; }
.list-stats{ padding:1rem; background:var(--surf3); border-radius:var(--r-md); text-align:center; font-size:0.85rem; color:var(--txm); }
.history-toolbar{ display:grid; gap:0.625rem; padding:0 1rem 1rem; }
.history-search{ font-size:0.8rem; }
.history-filters-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0.5rem; }
.history-quick-filters{ display:flex; flex-wrap:wrap; gap:0.35rem; }
.history-chip{ padding:0.38rem 0.55rem; border:1px solid var(--brd); border-radius:999px; background:var(--surf2); color:var(--txm); font-size:0.72rem; font-weight:600; transition:all var(--tr); }
.history-chip.active{ background:var(--pril); color:var(--pri); border-color:var(--pri); }
.history-select{ font-size:0.78rem; }
@media(max-width:799px){ .history-filters-grid{ grid-template-columns:1fr; } }
.history-mode-switch{ display:grid; grid-template-columns:1fr 1fr; gap:0.4rem; }
.history-mode-btn{ padding:0.45rem 0.65rem; border:1px solid var(--brd); border-radius:var(--r-md); background:var(--surf2); color:var(--txm); font-size:0.76rem; font-weight:600; transition:all var(--tr); }
.history-mode-btn.active{ background:var(--pril); color:var(--pri); border-color:var(--pri); }
.request-group{ border-top:1px solid var(--div); }
.request-group:first-child{ border-top:none; }
.group-header{ width:100%; display:flex; align-items:center; gap:0.65rem; padding:0.8rem 0.75rem; text-align:left; background:transparent; color:inherit; }
.group-header:hover{ background:var(--surf2); }
.group-chevron{ font-size:0.8rem; color:var(--txf); transition:transform var(--tr); }
.request-group.open .group-chevron{ transform:rotate(90deg); }
.group-main{ flex:1; min-width:0; }
.group-title{ font-size:0.84rem; font-weight:700; color:var(--tx); }
.group-meta{ display:flex; flex-wrap:wrap; gap:0.5rem 0.8rem; margin-top:0.15rem; font-size:0.72rem; color:var(--txm); }
.group-badge{ padding:0.18rem 0.45rem; border-radius:999px; background:var(--surf3); color:var(--txm); font-size:0.68rem; font-weight:700; white-space:nowrap; }
.group-badge.commessa{ background:var(--pril); color:var(--pri); }
.group-badge.preventivo{ background:var(--oral); color:var(--orah); }
.group-badge.economia{ background:var(--grnl); color:var(--grnh); }
.group-badge.none{ background:var(--surf3); color:var(--txf); }
.group-requests{ display:none; }
.request-group.open .group-requests{ display:block; }
.history-empty{ padding:1.2rem; text-align:center; color:var(--txf); font-style:italic; }

.form-section{ display:none; }
.form-section.active{ display:block; }
.form-header{ display:grid; grid-template-columns:1fr 1fr; gap:1rem 2rem; margin-bottom:0; }
@media(max-width:480px){ .form-header{ grid-template-columns:1fr; } .form-header-top{ flex-direction:column; align-items:flex-start; gap:0.75rem; } }
.form-field{ display:flex; flex-direction:column; gap:0.25rem; }
.form-label{ font-size:0.7rem; font-weight:600; color:var(--txm); text-transform:uppercase; letter-spacing:0.05em; }
.form-input, .form-textarea{ padding:0.5rem 0.75rem; border:1.5px solid var(--brd); border-radius:var(--r-md); background:var(--surf); font-size:0.85rem; transition:border-color var(--tr); }
.form-input:focus, .form-textarea:focus{ border-color:var(--pri); box-shadow:0 0 0 3px var(--pril); outline:none; }
.form-textarea{ resize:none; min-height:60px; line-height:1.55; max-height:200px; overflow:hidden; }
.note-ta-full,.input-table.ta{ resize:none; overflow:hidden; }
.form-input[readonly]{ background:var(--surf2); color:var(--txm); cursor:default; }

.materials-table{ overflow:auto; border:1px solid var(--brd); border-radius:var(--r-md); }
.table{ width:100%; border-collapse:collapse; vertical-align:baseline; }
.th{ padding:0.5rem 0.75rem; background:var(--hbg); color:var(--htx); font-size:0.75rem; font-weight:600; text-transform:uppercase; letter-spacing:0.05em; text-align:left; }
.td{ padding:0.5rem 0.75rem; border-bottom:1px solid var(--div); vertical-align:middle; }
.table-row:hover{ background:var(--surf2); }
.table-row td:first-child{ font-size:0.75rem; color:var(--txm); font-weight:600; width:40px; text-align:center; vertical-align:middle; padding:0.5rem 0.25rem; }
.um-col{ width:84px; }.qty-col{ width:64px; }.qtyc-col{ width:80px; }
.desc-col{ min-width:240px; }
.input-table{ width:100%; padding:0.5rem 0.5rem; border:1px solid transparent; border-radius:var(--r-sm); background:transparent; font-size:0.85rem; line-height:1.45; transition:border-color var(--tr); }
.input-table:focus{ border-color:var(--pri); background:var(--surf); outline:none; box-shadow:0 0 0 2px var(--pril); }
.input-table.ta{ resize:vertical; min-height:42px; vertical-align:middle; margin:0; line-height:1.45; padding:0.5rem; }
.delete-btn{ width:28px; height:28px; border-radius:var(--r-sm); color:var(--txf); display:flex; align-items:center; justify-content:center; margin:0 auto; transition:color var(--tr), background var(--tr); }
.delete-btn:hover{ color:var(--red); background:var(--redl); }

.form-actions{ display:flex; gap:0.75rem; margin-top:1.5rem; padding-top:1rem; border-top:1px solid var(--div); flex-wrap:wrap; }
@media(max-width:480px){ .form-actions{ flex-direction:column; } }

.toast{ position:fixed; bottom:1.25rem; right:1.25rem; z-index:9999; background:var(--hbg); color:var(--htx); padding:0.75rem 1rem; border-radius:var(--r-lg); box-shadow:var(--sh-lg); display:flex; align-items:center; gap:0.5rem; font-size:0.85rem; font-weight:500; opacity:0; transform:translateY(1rem); transition:all 0.25s ease; }
.toast.on{ opacity:1; transform:translateY(0); }
.spinner{ width:16px; height:16px; border:2px solid rgba(255,255,255,0.2); border-top-color:currentColor; border-radius:50%; animation:spin 0.8s linear infinite; }
@keyframes spin{ to{ transform:rotate(360deg); } }

.note-section-full{
  padding:.75rem 1rem;
  border-top:1px solid var(--div);
  border-bottom:1px solid var(--div);
  background:var(--surf);
  margin:0 -1.25rem;
}
.note-header-full{
  display:flex;align-items:center;gap:.375rem;margin-bottom:.375rem;
}
.note-lbl-full{
  font-size:.7rem;font-weight:600;color:var(--txm);
  text-transform:uppercase;letter-spacing:.07em;cursor:pointer;
}
.note-ta-full{
  width:100%;padding:.5rem .75rem;
  border:1.5px solid var(--brd);border-radius:var(--r-md);
  background:var(--surf2);font-size:.8125rem;line-height:1.6;
  resize:vertical;min-height:60px;max-height:240px;
  transition:border-color var(--tr),box-shadow var(--tr),background var(--tr);
}
.note-ta-full:focus{
  border-color:var(--pri);box-shadow:0 0 0 3px var(--pril);
  background:var(--surf);outline:none;
}
.note-ta-full::placeholder{color:var(--txf);font-style:italic;}

.btn-add-row{
  display:inline-flex;align-items:center;gap:0.375rem;
  padding:0.5rem 1rem;border-radius:var(--r-md);
  border:1.5px dashed var(--brd);background:transparent;
  color:var(--txm);font-size:0.85rem;font-weight:500;
  transition:all var(--tr);
}
.btn-add-row:hover{border-color:var(--pri);color:var(--pri);background:var(--pril);}
.btn-add-n{
  padding:0.5rem 0.875rem;border-radius:var(--r-md);
  border:1.5px solid var(--brd);background:transparent;
  color:var(--txm);font-size:0.85rem;font-weight:500;
  transition:all var(--tr);
}
.btn-add-n:hover{border-color:var(--pri);color:var(--pri);background:var(--pril);}

.btn-red-inv{ background:transparent !important; color:var(--red) !important; border:1.5px solid var(--red) !important; }
.btn-red-inv:hover{ background:var(--redl) !important; color:var(--redh) !important; }
.btn-grn-inv{ background:transparent !important; color:var(--grn) !important; border:1.5px solid var(--grn) !important; }
.btn-grn-inv:hover{ background:var(--grnl) !important; color:var(--grnh) !important; }
.btn-ora-inv{ background:transparent !important; color:var(--ora) !important; border:1.5px solid var(--ora) !important; }
.btn-ora-inv:hover{ background:var(--oral) !important; color:var(--orah) !important; }
.btn-sky-inv{ background:transparent !important; color:var(--sky) !important; border:1.5px solid var(--sky) !important; }
.btn-sky-inv:hover{ background:var(--skylt) !important; color:var(--skyl) !important; }

.desc-col td{ vertical-align:middle !important; padding:0 !important; }
.desc-col .input-table.ta{
  width:100%; border-radius:var(--r-sm); margin:0 !important;
  vertical-align:middle; line-height:1.5; resize:vertical;
  min-height:40px !important; padding:0.5rem;
}

.cantiere-modal-overlay{
  position:fixed; inset:0; z-index:300;
  background:rgba(15,23,42,.45); backdrop-filter:blur(3px);
  display:none; align-items:center; justify-content:center;
  padding:1rem;
}
.cantiere-modal-overlay.on{ display:flex; }
.cantiere-modal{
  width:min(920px,100%); max-height:min(88dvh,900px);
  background:var(--surf); color:var(--tx);
  border:1px solid var(--brd); border-radius:var(--r-xl);
  box-shadow:var(--sh-lg); overflow:hidden;
  display:flex; flex-direction:column;
}
.cantiere-modal-head{
  padding:1rem 1.25rem; border-bottom:1px solid var(--div);
  display:flex; align-items:flex-start; justify-content:space-between; gap:1rem;
}
.cantiere-modal-title{ font-size:1.05rem; font-weight:700; margin:0; }
.cantiere-modal-sub{ font-size:0.82rem; color:var(--txm); margin-top:0.2rem; }
.cantiere-modal-body{ padding:1rem 1.25rem 1.25rem; overflow:auto; }
.cantiere-search-wrap{ display:flex; gap:0.625rem; align-items:center; margin-bottom:1rem; flex-wrap:wrap; }
.cantiere-search{
  flex:1; min-width:220px;
  padding:0.75rem 0.95rem; border:1.5px solid var(--brd);
  border-radius:var(--r-md); background:var(--surf2); font-size:0.95rem;
}
.cantiere-search:focus{
  background:var(--surf); border-color:var(--pri); outline:none;
  box-shadow:0 0 0 3px var(--pril);
}
.cantiere-hint{
  font-size:0.78rem; color:var(--txm);
  background:var(--surf2); border:1px solid var(--div);
  border-radius:999px; padding:0.3rem 0.65rem;
}
.cantiere-section{ margin-top:1rem; }
.cantiere-section:first-child{ margin-top:0; }
.cantiere-section-title{
  font-size:0.75rem; color:var(--txm); text-transform:uppercase;
  letter-spacing:0.06em; font-weight:700; margin:0 0 0.625rem 0;
}
.cantiere-grid{ display:grid; gap:0.65rem; }
.cantiere-item{
  width:100%; text-align:left;
  border:1px solid var(--brd); border-radius:var(--r-lg);
  background:var(--surf); padding:0.85rem 0.95rem;
  display:flex; align-items:flex-start; gap:0.75rem;
  transition:border-color var(--tr), box-shadow var(--tr), transform var(--tr), background var(--tr);
}
.cantiere-item:hover{
  border-color:var(--pri); background:var(--surf2); transform:translateY(-1px);
}
.cantiere-item-main{ flex:1; min-width:0; }
.cantiere-item-title{ font-size:0.92rem; font-weight:700; color:var(--tx); }
.cantiere-item-meta{
  font-size:0.78rem; color:var(--txm); margin-top:0.2rem;
  display:flex; gap:0.6rem; flex-wrap:wrap;
}
.cantiere-badges{ display:flex; gap:0.35rem; flex-wrap:wrap; margin-top:0.45rem; }
.cantiere-badge{
  font-size:0.7rem; font-weight:700; border-radius:999px;
  padding:0.2rem 0.45rem; border:1px solid var(--div); color:var(--txm);
  background:var(--surf2);
}
.cantiere-badge.warn{ border-color:var(--ora); color:var(--orah); background:var(--oral); }
.cantiere-badge.ok{ border-color:var(--grn); color:var(--grnh); background:var(--grnl); }
.cantiere-item-arrow{
  color:var(--txf); font-size:1rem; padding-top:0.15rem; flex-shrink:0;
}
.cantiere-empty{
  border:1px dashed var(--brd); border-radius:var(--r-lg); padding:1rem;
  color:var(--txm); text-align:center; background:var(--surf2);
}
.cantiere-create-box{
  border:1px dashed var(--pri); background:var(--pril);
  border-radius:var(--r-lg); padding:1rem; display:flex; gap:0.75rem;
  align-items:flex-start; justify-content:space-between; flex-wrap:wrap;
}
.cantiere-create-text{ font-size:0.84rem; color:var(--txm); }
.cantiere-create-name{ font-weight:700; color:var(--tx); display:block; margin-top:0.2rem; }
@media(max-width:700px){
  .cantiere-modal{ max-height:100dvh; height:100dvh; border-radius:0; }
  .cantiere-modal-overlay{ padding:0; }
  .cantiere-modal-head,.cantiere-modal-body{ padding-left:1rem; padding-right:1rem; }
}

@media print{
  .note-ta-full{border:none!important;resize:none;background:#fff!important;}
  .note-header-full svg{display:none;}
}
@media print{
  *{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .header,.sidebar,.form-actions,[onclick],.modal,.sidebar-overlay{display:none!important;}
  .content{box-shadow:none;border:none;}
  body{background:white;margin:0;}
}
@media(max-width:799px){ .main{ padding:0.5rem; } }

  /* RM_STEP3_COMPACT_OUTPUT */
  @page{ size:A4; margin:8mm; }

  body.compact-output .header,
  body.compact-output .sidebar,
  body.compact-output .sidebar-overlay,
  body.compact-output .form-actions,
  body.compact-output .history-toolbar,
  body.compact-output .cantiere-modal-overlay,
  body.compact-output .toast,
  body.compact-output [data-theme-toggle]{
    display:none!important;
  }

  body.compact-output,
  body.compact-output .app-shell,
  body.compact-output .content,
  body.compact-output .card,
  body.compact-output #printArea{
    background:#fff!important;
    box-shadow:none!important;
    border:none!important;
  }

  body.compact-output .content,
  body.compact-output .card,
  body.compact-output #printArea{
    margin:0!important;
    padding:0!important;
    max-width:none!important;
  }

  body.compact-output .form-header-top,
  body.compact-output .form-grid,
  body.compact-output .form-section,
  body.compact-output .card-body{
    gap:.35rem!important;
  }

  body.compact-output .note-header-full svg,
  body.compact-output .cantiere-badges,
  body.compact-output .sync-badge{
    display:none!important;
  }

  body.compact-output input,
  body.compact-output textarea,
  body.compact-output select{
    border:none!important;
    background:transparent!important;
    box-shadow:none!important;
    outline:none!important;
    padding:0!important;
    min-height:0!important;
    color:#111!important;
  }

  body.compact-output textarea{
    resize:none!important;
    overflow:visible!important;
    height:auto!important;
    max-height:none!important;
  }

  body.compact-output .note-ta-full{
    border:none!important;
    background:#fff!important;
    padding:0!important;
    min-height:0!important;
  }

  body.compact-output table{
    width:100%!important;
    border-collapse:collapse!important;
  }

  body.compact-output th,
  body.compact-output td,
  body.compact-output .td{
    padding:4px 6px!important;
    vertical-align:top!important;
  }

  body.compact-output .table-row,
  body.compact-output tr,
  body.compact-output td,
  body.compact-output th{
    page-break-inside:avoid!important;
    break-inside:avoid!important;
  }

  @media print{
    *{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
    html,body{ background:#fff!important; }
    body{ margin:0!important; }
    body.compact-output .app-shell,
    body.compact-output .content,
    body.compact-output #printArea{
      margin:0!important;
      padding:0!important;
      max-width:none!important;
    }
  }


  /* RM_STEP3B_STATIC_PRINT */
  #printStaticArea{ display:none; }
  body.print-static-mode #formSection{ display:none!important; }
  body.print-static-mode #printStaticArea{ display:block!important; }

  .print-static-area{
    background:#fff;
    color:#111827;
    padding:0;
  }
  .ps-head{
    display:flex; align-items:flex-start; justify-content:space-between; gap:1rem;
    margin-bottom:1rem;
  }
  .ps-brand{ display:flex; align-items:center; gap:.75rem; }
  .ps-logo{
    background:var(--hbg); color:var(--htx); padding:.38rem .62rem; border-radius:12px;
    font-size:.9rem; font-weight:800; letter-spacing:-.03em;
  }
  .ps-title{ font-size:1.9rem; font-weight:800; line-height:1.1; }
  .ps-number{ text-align:right; }
  .ps-number-label{ font-size:.8rem; color:#475569; text-transform:uppercase; font-weight:700; }
  .ps-number-value{ font-size:1.9rem; font-weight:800; margin-top:.15rem; }

  .ps-grid{
    display:grid; grid-template-columns:1fr 1fr; gap:.9rem 1.25rem; margin-bottom:1rem;
  }
  .ps-field-label{
    font-size:.78rem; color:#475569; text-transform:uppercase; font-weight:700; letter-spacing:.06em;
    margin-bottom:.22rem;
  }
  .ps-field-value{ font-size:1.02rem; font-weight:500; min-height:1.2em; }

  .ps-ref{
    display:flex; align-items:center; gap:.45rem; font-size:1rem; font-weight:600; min-height:1.2em;
  }
  .ps-ref-check{ font-size:1rem; }

  .ps-note-wrap{ margin:1rem 0; }
  .ps-note-box{
    border-top:1px solid #cbd5e1; border-bottom:1px solid #cbd5e1;
    padding:.55rem 0 .6rem 0; white-space:pre-wrap; line-height:1.45; min-height:1.2em;
  }

  .ps-materiali-head{ display:flex; align-items:baseline; gap:.6rem; margin:1rem 0 .45rem 0; }
  .ps-materiali-title{ font-size:1.35rem; font-weight:800; }
  .ps-materiali-sub{ color:#475569; font-size:.95rem; }

  .ps-table{ width:100%; border-collapse:collapse; table-layout:fixed; }
  .ps-table thead th{
    background:var(--hbg); color:var(--htx); padding:.45rem .55rem; text-align:left;
    font-size:.78rem; text-transform:uppercase; letter-spacing:.05em;
  }
  .ps-table tbody td{
    border-bottom:1px solid #cbd5e1; padding:.48rem .55rem; vertical-align:top; font-size:.96rem;
  }
  .ps-col-num{ width:38px; text-align:center; }
  .ps-col-um{ width:64px; }
  .ps-col-qta,.ps-col-cons{ width:82px; }
  .ps-desc{ white-space:pre-wrap; word-break:break-word; line-height:1.35; }

  body.print-static-mode .header,
  body.print-static-mode .sidebar,
  body.print-static-mode .sidebar-overlay,
  body.print-static-mode .form-actions,
  body.print-static-mode .cantiere-modal-overlay,
  body.print-static-mode .toast{
    display:none!important;
  }
  body.print-static-mode .main,
  body.print-static-mode .content,
  body.print-static-mode .card,
  body.print-static-mode #printArea{
    background:#fff!important; box-shadow:none!important; border:none!important;
    margin:0!important; padding:0!important; max-width:none!important;
  }

  @media print{
    @page{ size:A4 portrait; margin:8mm; }
    body.print-static-mode{ background:#fff!important; }
    body.print-static-mode .app,
    body.print-static-mode .main,
    body.print-static-mode .content,
    body.print-static-mode .card,
    body.print-static-mode #printArea{
      margin:0!important; padding:0!important; max-width:none!important; min-height:auto!important;
    }
    .ps-table tr, .ps-table td, .ps-table th{ break-inside:avoid; page-break-inside:avoid; }
  }


  /* RM_STEP3C_PRINT_POLISH */
  .print-static-area{ font-size:15px; }
  .ps-head{ margin-bottom:1.15rem; }
  .ps-title{ letter-spacing:-.02em; }
  .ps-number-value{ letter-spacing:.02em; }

  .ps-keygrid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:.65rem .8rem;
    margin:.15rem 0 1rem 0;
  }
  .ps-kpi{
    border:1px solid #d7e2ee;
    background:#f8fbff;
    border-radius:12px;
    padding:.68rem .8rem;
  }
  .ps-kpi .ps-field-label{ margin-bottom:.28rem; }
  .ps-kpi-value{
    font-size:1.18rem;
    line-height:1.2;
    font-weight:800;
    color:#0f172a;
    word-break:break-word;
  }
  .ps-kpi-ref{
    background:#eef5ff;
    border-color:#bfd4f5;
  }

  .ps-grid-secondary{
    display:grid;
    grid-template-columns:1fr;
    gap:.45rem;
    margin:0 0 .9rem 0;
  }
  .ps-secondary{
    border-top:1px solid #e2e8f0;
    padding-top:.45rem;
  }

  .ps-ref{
    display:flex;
    align-items:baseline;
    gap:.5rem;
    flex-wrap:wrap;
    min-height:1.2em;
  }
  .ps-ref-type{
    font-size:.82rem;
    text-transform:uppercase;
    letter-spacing:.06em;
    color:#334155;
    font-weight:700;
  }
  .ps-ref-value{
    font-size:1.22rem;
    line-height:1.15;
    font-weight:800;
    color:#0f172a;
  }
  .ps-ref-empty{
    color:#64748b;
    font-style:italic;
  }

  .ps-note-wrap{ margin:1rem 0 1.05rem 0; }
  .ps-note-box{
    border:1px solid #dbe4ee;
    background:#f8fafc;
    border-radius:10px;
    padding:.7rem .8rem;
    white-space:pre-wrap;
    line-height:1.5;
    min-height:1.35em;
  }

  .ps-materiali-head{
    margin:1.05rem 0 .5rem 0;
    padding-top:.15rem;
    border-top:1px solid #e2e8f0;
  }
  .ps-materiali-title{ letter-spacing:-.02em; }
  .ps-materiali-sub{ font-size:.9rem; }

  .ps-table thead th{
    padding:.5rem .6rem;
    font-size:.75rem;
  }
  .ps-table tbody td{
    padding:.52rem .6rem;
    line-height:1.4;
  }
  .ps-table tbody tr:nth-child(even) td{
    background:#fbfdff;
  }
  .ps-table tbody td:nth-child(3),
  .ps-table tbody td:nth-child(4){
    text-align:right;
    font-variant-numeric:tabular-nums;
  }
  .ps-table tbody td:nth-child(1){
    color:#475569;
    font-weight:700;
  }
  .ps-col-num{ width:42px; }
  .ps-col-um{ width:72px; }
  .ps-col-qta,.ps-col-cons{ width:88px; }

  @media print{
    .ps-keygrid{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  }


  /* RM_STEP3D_PRINT_RELAYOUT */
  .ps-kpi-stack{
    display:grid;
    gap:.65rem;
  }

  .ps-kpi-ref,
  .ps-kpi-commessa{
    background:#f8fbff!important;
    border-color:#d7e2ee!important;
  }

  .ps-kpi-commessa{
    margin:0 0 .95rem 0;
  }

  .ps-kpi-commessa .ps-field-label{
    margin-bottom:.28rem;
  }

  .ps-grid-secondary{
    display:none!important;
  }

  @media print{
    .ps-keygrid{
      grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .ps-kpi-stack{
      display:grid;
      gap:.65rem;
    }
  }


  /* RM_STEP3E_PRINT_HEADER */
  .ps-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    margin-bottom:1rem;
  }

  .ps-number{
    display:flex;
    align-items:baseline;
    justify-content:flex-end;
    gap:.4rem;
    text-align:right;
    white-space:nowrap;
    flex:0 0 auto;
  }

  .ps-number-label{
    font-size:1rem!important;
    color:#475569;
    text-transform:none!important;
    font-weight:700;
    letter-spacing:0!important;
    margin:0!important;
  }

  .ps-number-value{
    font-size:1.45rem!important;
    font-weight:800;
    line-height:1;
    margin:0!important;
    letter-spacing:.01em;
    color:#0f172a;
  }

  @media print{
    .ps-head{
      display:flex;
      align-items:center;
      justify-content:space-between;
    }
    .ps-number{
      display:flex;
      align-items:baseline;
      gap:.35rem;
      white-space:nowrap;
    }
  }

/* RM_HISTORY_TREE */
.history-shell-title{ display:flex; flex-direction:column; gap:.15rem; }
.history-cantiere-tree{
  border:1px solid var(--brd);
  border-radius:var(--r-lg);
  background:var(--surf);
  overflow:hidden;
  margin-bottom:.8rem;
}
.history-cantiere-tree.open{
  box-shadow:0 8px 24px rgba(15,23,42,.06);
}
.history-cantiere-header{
  width:100%;
  display:flex;
  align-items:center;
  gap:.75rem;
  padding:.8rem .9rem;
  background:linear-gradient(180deg,var(--surf),var(--surf2));
  border:none;
  text-align:left;
  cursor:pointer;
}
.history-cantiere-header:hover{ background:var(--surf2); }
.history-cantiere-chevron,
.group-chevron{
  width:1rem;
  flex:0 0 1rem;
  transition:transform var(--tr);
  color:var(--txf);
}
.history-cantiere-tree.open > .history-cantiere-header .history-cantiere-chevron,
.request-group.open > .group-header .group-chevron{
  transform:rotate(90deg);
}
.history-cantiere-main,
.group-main{
  min-width:0;
  flex:1;
}
.history-cantiere-title{
  font-size:.96rem;
  font-weight:800;
  color:var(--tx);
  letter-spacing:-.01em;
}
.history-cantiere-meta,
.group-meta{
  margin-top:.15rem;
  display:flex;
  flex-wrap:wrap;
  gap:.45rem .8rem;
  font-size:.73rem;
  color:var(--txf);
}
.history-cantiere-body{
  display:none;
  padding:.45rem .55rem .65rem .55rem;
  background:var(--bg);
}
.history-cantiere-tree.open > .history-cantiere-body{ display:block; }

.request-group{
  border:1px solid var(--brd);
  border-radius:var(--r-md);
  background:var(--surf);
  overflow:hidden;
}
.request-group + .request-group{ margin-top:.5rem; }
.request-group.nested{ margin-left:1.1rem; }
.group-header{
  width:100%;
  display:flex;
  align-items:center;
  gap:.65rem;
  padding:.7rem .8rem;
  background:var(--surf2);
  border:none;
  cursor:pointer;
  text-align:left;
}
.group-header:hover{ background:var(--pril); }
.group-title{
  font-size:.88rem;
  font-weight:700;
  color:var(--tx);
}
.group-requests{
  display:none;
  padding:.4rem;
  background:var(--bg);
}
.request-group.open > .group-requests{ display:block; }

.history-cantiere-badge{
  margin-left:auto;
  border:1px solid var(--brd);
  border-radius:999px;
  padding:.22rem .5rem;
  font-size:.7rem;
  font-weight:700;
  color:var(--txf);
  background:var(--surf2);
  white-space:nowrap;
}
.history-cantiere-badge.active{
  color:var(--pri);
  border-color:var(--pri);
  background:var(--pril);
}
.list-item{
  margin-bottom:.42rem;
}
.list-item:last-child{ margin-bottom:0; }

@media(max-width:799px){
  .request-group.nested{ margin-left:.4rem; }
  .history-cantiere-header,
  .group-header{ padding:.72rem .72rem; }
}


/* RM_HISTORY_TREE_FIXES_2 */

.history-cantiere-body{
  padding:.5rem .6rem .7rem .6rem !important;
}

.request-group.nested{
  margin-left:.55rem !important;
}

.group-header{
  padding:.78rem .82rem !important;
}

.group-title{
  font-size:.92rem !important;
}

.group-requests{
  padding:.45rem .45rem .25rem .45rem !important;
}

.list-item{
  padding:.65rem .72rem !important;
}

.list-item-header{
  align-items:flex-start !important;
}

.list-item-cant{
  line-height:1.35 !important;
}

.history-cantiere-meta,
.group-meta{
  gap:.4rem .7rem !important;
}

/* Quantità leggermente più larga */
table td:nth-child(3),
table th:nth-child(3){
  width: 88px !important;
  min-width: 88px !important;
}

table td:nth-child(4),
table th:nth-child(4){
  width: 96px !important;
  min-width: 96px !important;
}

table td:nth-child(3) .input-table,
table td:nth-child(4) .input-table,
table td:nth-child(3) input,
table td:nth-child(4) input{
  width: 74px !important;
  min-width: 74px !important;
}


/* RM_LAYOUT_STABLE */
.main{
  min-width:0;
}

.sidebar{
  min-width:0;
}

.content{
  min-width:0;
  display:flex;
  justify-content:flex-start;
  align-items:flex-start;
}

.content > .card,
#printArea,
.form-section{
  width:100%;
  max-width:none;
  margin:0;
}

@media (min-width: 800px) and (max-width: 1199px){
  .main{
    display:grid;
    grid-template-columns:380px minmax(0, 1fr);
    gap:1rem;
    padding:1rem;
    align-items:start;
  }

  .sidebar{
    width:auto;
    max-width:none;
    flex:none;
    position:relative;
    inset:auto;
    display:flex;
    align-self:start;
  }

  .content{
    width:auto;
    max-width:none;
    flex:none;
    align-self:start;
  }

  .content > .card,
  #printArea{
    max-width:900px;
  }
}

@media (min-width: 1200px){
  .main{
    display:grid;
    grid-template-columns:420px minmax(0, 1fr);
    gap:1rem;
    padding:1rem;
    align-items:start;
  }

  .sidebar{
    width:auto;
    max-width:none;
    flex:none;
    position:relative;
    inset:auto;
    display:flex;
    align-self:start;
  }

  .content{
    width:auto;
    max-width:none;
    flex:none;
    align-self:start;
  }

  .content > .card,
  #printArea{
    max-width:860px;
  }
}

@media (min-width: 800px){
  .list-item-cant{
    white-space:normal;
    overflow:hidden;
    display:-webkit-box;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
    line-height:1.32;
  }
}
/* /RM_LAYOUT_STABLE */

/* RM_MANCANTI_UI */
.rm-mancanti-head-actions{
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:.5rem;
}

.rm-mancanti-toggle-btn{
  white-space:nowrap;
}

.rm-mancanti-section{
  margin-top:1rem;
  border-top:1px solid var(--div);
  padding-top:1rem;
}

.rm-mancanti-toolbar{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:1rem;
  margin-bottom:1rem;
}

.rm-mancanti-title{
  font-size:1.05rem;
  font-weight:700;
}

.rm-mancanti-sub{
  font-size:.82rem;
  color:var(--txm);
  margin-top:.2rem;
}

.rm-mancanti-filters{
  display:grid;
  grid-template-columns: 1.1fr .9fr 1fr auto;
  gap:.85rem;
  margin-bottom:1rem;
  align-items:end;
}

.rm-mancanti-field{
  min-width:0;
}

.rm-mancanti-actions .rm-mancanti-btns{
  display:flex;
  gap:.5rem;
  flex-wrap:wrap;
}

.rm-mancanti-results{
  display:flex;
  flex-direction:column;
  gap:1rem;
}

.rm-mancanti-empty{
  padding:1rem;
  border:1px dashed var(--div);
  border-radius:var(--r-md);
  color:var(--txm);
  background:var(--surf2);
}

.rm-mancanti-group{
  border:1px solid var(--div);
  border-radius:var(--r-lg);
  background:var(--surf);
  overflow:hidden;
}

.rm-mancanti-group-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:1rem;
  padding:.9rem 1rem;
  background:var(--surf2);
  border-bottom:1px solid var(--div);
}

.rm-mancanti-group-title{
  font-size:.98rem;
  font-weight:700;
}

.rm-mancanti-group-sub{
  font-size:.82rem;
  color:var(--txm);
  margin-top:.15rem;
}

.rm-mancanti-group-kpis{
  display:flex;
  gap:.5rem;
  flex-wrap:wrap;
  justify-content:flex-end;
}

.rm-mancanti-kpi{
  padding:.28rem .55rem;
  border:1px solid var(--div);
  border-radius:999px;
  font-size:.74rem;
  background:var(--surf);
  color:var(--txm);
}

.rm-mancanti-kpi-strong{
  color:var(--pri);
  border-color:var(--pri);
  background:var(--pril);
}

.rm-mancanti-table-wrap{
  overflow:auto;
}

.rm-mancanti-table{
  width:100%;
  border-collapse:collapse;
  min-width:840px;
}

.rm-mancanti-table th,
.rm-mancanti-table td{
  padding:.65rem .7rem;
  border-bottom:1px solid var(--div);
  text-align:left;
  vertical-align:top;
  font-size:.84rem;
}

.rm-mancanti-table thead th{
  position:sticky;
  top:0;
  background:var(--surf);
  z-index:1;
  font-size:.78rem;
  color:var(--txm);
}

.rm-mancanti-desc{
  min-width:340px;
  font-weight:500;
}

.rm-mancanti-um{
  width:46px;
  white-space:nowrap;
}

.rm-mancanti-num{
  width:62px;
  text-align:right !important;
  white-space:nowrap;
}

.rm-mancanti-miss{
  font-weight:700;
  color:var(--redh);
}

.rm-mancanti-reqs{
  min-width:120px;
  color:var(--txm);
  font-size:.78rem;
  line-height:1.45;
  white-space:nowrap;
}

@media(max-width:899px){
  .rm-mancanti-filters{
    grid-template-columns:1fr;
  }

  .rm-mancanti-toolbar{
    flex-direction:column;
  }

  .rm-mancanti-group-head{
    flex-direction:column;
  }

  .rm-mancanti-group-kpis{
    justify-content:flex-start;
  }
}

@media(max-width:1200px){
  .rm-mancanti-filters{
    grid-template-columns: 1fr 1fr;
  }

  .rm-mancanti-actions{
    grid-column: 1 / -1;
  }

  .rm-mancanti-table{
    min-width:760px;
  }

  .rm-mancanti-desc{
    min-width:280px;
  }

  .rm-mancanti-reqs{
    min-width:100px;
    white-space:normal;
  }

  .rm-mancanti-table th,
  .rm-mancanti-table td{
    padding:.55rem .5rem;
    font-size:.8rem;
  }
}

#printArea.rm-mancanti-mode{
  width:min(100%, 1280px) !important;
  max-width:1280px !important;
  flex:0 1 1280px !important;
}

#printArea.rm-mancanti-mode .rm-mancanti-section{
  width:100% !important;
}

#printArea.rm-mancanti-mode .rm-mancanti-results,
#printArea.rm-mancanti-mode .rm-mancanti-group,
#printArea.rm-mancanti-mode .rm-mancanti-table-wrap{
  width:100% !important;
  max-width:none !important;
}

#printArea.rm-mancanti-mode .rm-mancanti-table{
  min-width:0 !important;
  width:100% !important;
  table-layout:auto !important;
}

#printArea.rm-mancanti-mode .rm-mancanti-desc{
  min-width:0 !important;
  white-space:normal !important;
  overflow-wrap:anywhere !important;
  word-break:break-word !important;
}

#printArea.rm-mancanti-mode .rm-mancanti-reqs{
  min-width:120px !important;
  white-space:nowrap !important;
}

@media(max-width:1200px){
  #printArea.rm-mancanti-mode{
    width:100% !important;
    max-width:100% !important;
    flex:1 1 auto !important;
  }
}
/* /RM_MANCANTI_UI */

/* RM_TOPBAR_UNIFIED_20260428-120053
   Topbar Richiesta Materiali allineata a homepage/Admin/Registro Ore.
   Colore modulo derivato da homepage card .app-card.c-grn:
   --grn=#16a34a
   --grnl=#dcfce7
*/
:root,
[data-theme="light"] {
  --rm-module: #16a34a;
  --rm-module-soft: #dcfce7;
  --rm-module-strong: #15803d;
}

[data-theme="dark"] {
  --rm-module: #16a34a;
  --rm-module-soft: color-mix(in srgb, #16a34a 18%, transparent);
  --rm-module-strong: #16a34a;
}

body {
  padding-top: 86px;
}

.header.rm-topbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 72px;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.7rem 1rem;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--rm-module-soft) 72%, transparent), transparent 62%),
    color-mix(in srgb, var(--surf) 94%, white);
  border-bottom: 1px solid color-mix(in srgb, var(--rm-module) 20%, var(--brd));
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.08);
  backdrop-filter: blur(14px);
}

[data-theme="dark"] .header.rm-topbar {
  background:
    radial-gradient(circle at 24px 20px, color-mix(in srgb, var(--rm-module) 16%, transparent), transparent 34px),
    linear-gradient(135deg, color-mix(in srgb, var(--rm-module) 9%, transparent), transparent 62%),
    color-mix(in srgb, var(--surf) 94%, #020617);
  border-bottom-color: color-mix(in srgb, var(--rm-module) 26%, var(--brd));
  box-shadow: 0 12px 34px rgba(0, 0, 0, 0.34);
}

.rm-topbar-inner {
  width: min(1180px, 100%);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.9rem;
}

.rm-topbar-logo {
  width: 46px;
  height: 46px;
  border-radius: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--rm-module);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--rm-module-soft) 88%, white), color-mix(in srgb, var(--surf) 92%, white));
  border: 1.5px solid color-mix(in srgb, var(--rm-module) 28%, var(--brd));
  box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08);
  text-decoration: none;
  transition:
    transform .18s ease,
    box-shadow .18s ease,
    background .18s ease,
    color .18s ease,
    border-color .18s ease;
}

.rm-topbar-logo:hover {
  transform: translateY(-1px);
  color: #fff;
  background:
    linear-gradient(135deg, var(--rm-module), color-mix(in srgb, var(--rm-module) 78%, #0f172a));
  border-color: color-mix(in srgb, var(--rm-module) 80%, white);
  box-shadow: 0 13px 28px color-mix(in srgb, var(--rm-module) 28%, rgba(15, 23, 42, 0.18));
}

.rm-topbar-title {
  min-width: 0;
  display: flex;
  flex-direction: column;
  line-height: 1.15;
}

.rm-topbar-title b {
  font-size: 1.02rem;
  font-weight: 780;
  letter-spacing: -0.025em;
  color: var(--tx);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.rm-topbar-title small {
  margin-top: 0.18rem;
  font-size: 0.78rem;
  color: var(--txf);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.rm-topbar-actions {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.55rem;
  min-width: 0;
}

.rm-theme-toggle {
  min-width: 42px;
  height: 38px;
  border-radius: 14px;
  border-color: color-mix(in srgb, var(--rm-module) 24%, var(--brd));
  background: color-mix(in srgb, var(--rm-module-soft) 52%, var(--surf));
  color: var(--rm-module-strong);
  box-shadow: 0 6px 16px rgba(15,23,42,.06);
}

.rm-theme-toggle:hover {
  transform: translateY(-1px);
  border-color: var(--rm-module);
  box-shadow: 0 10px 24px color-mix(in srgb, var(--rm-module) 18%, transparent);
}

.header.rm-topbar .sync-badge {
  height: 34px;
  white-space: nowrap;
}

@media (max-width: 640px) {
  body {
    padding-top: 78px;
  }

  .header.rm-topbar {
    height: 66px;
    padding: 0.55rem 0.75rem;
  }

  .rm-topbar-inner {
    gap: 0.65rem;
  }

  .rm-topbar-logo {
    width: 42px;
    height: 42px;
    border-radius: 15px;
  }

  .rm-topbar-title b {
    font-size: 0.94rem;
  }

  .rm-topbar-title small {
    font-size: 0.7rem;
  }

  .header.rm-topbar .sync-badge {
    display: none;
  }
}

@media print {
  body {
    padding-top: 0 !important;
  }
}
/* /RM_TOPBAR_UNIFIED_20260428-120053 */


/* RM_DESC_AUTOCOMPLETE_LOCAL_V1 */
.rm-desc-suggest-anchor{
  position:relative;
}

.rm-desc-suggest{
  position:absolute;
  left:.75rem;
  right:.75rem;
  top:calc(100% - .35rem);
  z-index:80;
  background:var(--surf);
  border:1px solid color-mix(in srgb,var(--grn) 24%,var(--brd));
  border-radius:14px;
  box-shadow:0 16px 40px rgba(15,23,42,.16);
  padding:.35rem;
  display:flex;
  flex-direction:column;
  gap:.25rem;
  max-height:260px;
  overflow:auto;
}

[data-theme="dark"] .rm-desc-suggest{
  background:color-mix(in srgb,var(--surf) 88%,#000);
  box-shadow:0 18px 44px rgba(0,0,0,.38);
}

.rm-desc-suggest[hidden]{
  display:none!important;
}

.rm-desc-suggest-item{
  border:0;
  background:transparent;
  color:var(--tx);
  text-align:left;
  border-radius:10px;
  padding:.55rem .65rem;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:.75rem;
  cursor:pointer;
  font:inherit;
}

.rm-desc-suggest-item:hover{
  background:var(--grnl);
}

.rm-desc-suggest-text{
  line-height:1.25;
  font-size:.86rem;
}

.rm-desc-suggest-um{
  flex-shrink:0;
  font-size:.72rem;
  font-weight:800;
  color:var(--grn);
  background:var(--grnl);
  border:1px solid color-mix(in srgb,var(--grn) 28%,transparent);
  border-radius:999px;
  padding:.12rem .42rem;
  text-transform:uppercase;
}

@media(max-width:700px){
  .rm-desc-suggest{
    left:.45rem;
    right:.45rem;
    max-height:220px;
  }

  .rm-desc-suggest-text{
    font-size:.82rem;
  }
}
/* /RM_DESC_AUTOCOMPLETE_LOCAL_V1 */

/* RM_DESC_AUTOCOMPLETE_LAYER_FIX_V1 */
/*
  Fix livello/ritaglio suggerimenti descrizione materiali.
  Il dropdown è dentro la tabella: alcuni contenitori possono tagliarlo.
  Solo schermo, non stampa.
*/
@media screen {
  .table-wrap,
  .materials-table-wrap,
  .materials-card,
  .table-card,
  .form-card,
  .main-card,
  .content-card {
    overflow: visible !important;
  }

  #materialsTable,
  #materialsTable tr,
  #materialsTable td,
  .table-row,
  .td,
  .desc-col {
    overflow: visible !important;
  }

  .desc-col {
    position: relative;
    z-index: 30;
  }

  .table-row:has(.rm-desc-suggest:not([hidden])) {
    position: relative;
    z-index: 120;
  }

  .rm-desc-suggest-anchor {
    position: relative !important;
    overflow: visible !important;
    z-index: 130;
  }

  .rm-desc-suggest {
    position: absolute !important;
    left: 0;
    right: 0;
    top: calc(100% + 4px);
    z-index: 9999 !important;
    max-height: 260px;
    overflow-y: auto !important;
    box-shadow: 0 18px 45px rgba(15, 23, 42, .20);
  }
}
/* /RM_DESC_AUTOCOMPLETE_LAYER_FIX_V1 */

/* RM_DESC_AUTOCOMPLETE_BODY_PORTAL_V1 */
.rm-desc-suggest-global {
  position: fixed !important;
  z-index: 999999 !important;
  max-height: 260px;
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 0.55rem;
  border: 1px solid color-mix(in srgb, var(--grn, #22c55e) 35%, var(--brd, #d1d5db));
  border-radius: 1rem;
  background: var(--surf, #ffffff);
  box-shadow: 0 18px 45px rgba(15, 23, 42, 0.22);
}

.rm-desc-suggest-global[hidden] {
  display: none !important;
}

.rm-desc-suggest-item {
  width: 100%;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 0.75rem;
  padding: 0.7rem 0.8rem;
  border: 0;
  border-radius: 0.8rem;
  background: transparent;
  color: var(--tx, #111827);
  text-align: left;
  cursor: pointer;
  font: inherit;
}

.rm-desc-suggest-item:hover {
  background: color-mix(in srgb, var(--grn, #22c55e) 12%, transparent);
}

.rm-desc-suggest-text {
  min-width: 0;
  overflow-wrap: anywhere;
}

.rm-desc-suggest-um {
  padding: 0.25rem 0.55rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--grn, #22c55e) 16%, white);
  color: var(--grn, #16a34a);
  font-weight: 800;
  font-size: 0.8rem;
}

[data-theme="dark"] .rm-desc-suggest-global {
  background: var(--surf, #111827);
  box-shadow: 0 18px 45px rgba(0, 0, 0, 0.45);
}
/* /RM_DESC_AUTOCOMPLETE_BODY_PORTAL_V1 */

/* RM_TOPBAR_SCROLLS_AWAY_V1
   La topbar Richiesta Materiali non deve essere fixed/sticky:
   resta nel flusso pagina e sparisce normalmente durante lo scroll. */
body {
  padding-top: 0 !important;
}

.header.rm-topbar {
  position: relative !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  height: auto !important;
  min-height: 72px;
  z-index: 100;
}

@media (max-width: 640px) {
  body {
    padding-top: 0 !important;
  }

  .header.rm-topbar {
    height: auto !important;
    min-height: 66px;
  }
}
/* /RM_TOPBAR_SCROLLS_AWAY_V1 */

/* RM_DESC_AUTOCOMPLETE_BELOW_INPUT_CSS_V1
   Il box globale resta sotto al campo descrizione e non copre il textarea. */
.rm-desc-suggest-global {
  max-height: min(240px, calc(100vh - 24px));
  overflow-y: auto !important;
  overscroll-behavior: contain;
}
/* /RM_DESC_AUTOCOMPLETE_BELOW_INPUT_CSS_V1 */

/* RM_BLUE_TO_GREEN_THEME_V1
   Allinea gli accenti blu/azzurri al verde del modulo Richiesta Materiali.
   Non riscrive i gradienti: cambia solo le variabili colore usate dai blocchi esistenti. */
:root,
[data-theme="light"] {
  --pri: #16a34a;
  --prih: #15803d;
  --pril: #dcfce7;

  --sky: #16a34a;
  --skyl: #15803d;
  --skylt: #dcfce7;
}

[data-theme="dark"] {
  --pri: #4ade80;
  --prih: #86efac;
  --pril: #14532d;

  --sky: #4ade80;
  --skyl: #22c55e;
  --skylt: #14532d;
}
/* /RM_BLUE_TO_GREEN_THEME_V1 */

/* RM_MANCANTI_EDITABLE_CSS_V1 */
.rm-mancanti-delivered-edit-cell {
  min-width: 150px;
}

.rm-mancanti-delivered-edit {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
}

.rm-mancanti-delivered-input {
  width: 76px;
  min-width: 70px;
  padding: 6px 8px;
  text-align: right;
  font-size: 13px;
}

.rm-mancanti-save-delivered-btn {
  padding: 6px 9px;
  white-space: nowrap;
}

@media (max-width: 720px) {
  .rm-mancanti-delivered-edit {
    align-items: stretch;
    flex-direction: column;
  }

  .rm-mancanti-delivered-input {
    width: 100%;
  }

  .rm-mancanti-save-delivered-btn {
    width: 100%;
  }
}
/* /RM_MANCANTI_EDITABLE_CSS_V1 */

/* RM_MANCANTI_EDITABLE_CSS_FIX_V2 */
.rm-mancanti-delivered-edit-cell {
  min-width: 150px;
}

.rm-mancanti-delivered-edit {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
}

.rm-mancanti-delivered-input {
  width: 76px;
  min-width: 70px;
  padding: 6px 8px;
  text-align: right;
  font-size: 13px;
}

.rm-mancanti-save-delivered-btn {
  padding: 6px 9px;
  white-space: nowrap;
}

@media (max-width: 720px) {
  .rm-mancanti-delivered-edit {
    align-items: stretch;
    flex-direction: column;
  }

  .rm-mancanti-delivered-input {
    width: 100%;
  }

  .rm-mancanti-save-delivered-btn {
    width: 100%;
  }
}
/* /RM_MANCANTI_EDITABLE_CSS_FIX_V2 */

/* RM_MANCANTI_FIFO_CSS_V1 */
.rm-mancanti-delivered-fifo-cell {
  background: color-mix(in srgb, var(--skylt) 42%, transparent);
}

.rm-mancanti-fifo-hint {
  margin-top: 4px;
  font-size: 11px;
  line-height: 1.2;
  color: var(--muted);
  text-align: right;
  white-space: normal;
}

@media (max-width: 720px) {
  .rm-mancanti-fifo-hint {
    text-align: left;
  }
}
/* /RM_MANCANTI_FIFO_CSS_V1 */

/* RM_MANCANTI_NO_NUMBER_SPINNER_CSS_V1
   Rinforzo: se un browser mantiene input number, nasconde comunque le freccette. */
.rm-mancanti-delivered-input::-webkit-outer-spin-button,
.rm-mancanti-delivered-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.rm-mancanti-delivered-input[type="number"] {
  -moz-appearance: textfield;
}
/* /RM_MANCANTI_NO_NUMBER_SPINNER_CSS_V1 */

/* RM_MANCANTI_DELIVERED_INPUT_FOCUS_CSS_V1 */
.rm-mancanti-delivered-edit-cell,
.rm-mancanti-delivered-edit,
.rm-mancanti-delivered-input {
  pointer-events: auto !important;
}

.rm-mancanti-delivered-input {
  position: relative;
  z-index: 2;
  user-select: text !important;
  -webkit-user-select: text !important;
  cursor: text !important;
  caret-color: currentColor;
  background: var(--card) !important;
}

.rm-mancanti-delivered-input:focus {
  outline: 2px solid color-mix(in srgb, var(--pri) 38%, transparent);
  outline-offset: 1px;
}
/* /RM_MANCANTI_DELIVERED_INPUT_FOCUS_CSS_V1 */

/* RM_MANCANTI_DELIVERED_TEXTAREA_EDITOR_CSS_V1 */
.rm-mancanti-delivered-textarea {
  width: 82px;
  min-width: 74px;
  min-height: 34px;
  height: 34px;
  max-height: 34px;
  resize: none;
  overflow: hidden;
  line-height: 20px;
  padding: 6px 8px;
  text-align: right;
  font-size: 13px;
  pointer-events: auto !important;
  user-select: text !important;
  -webkit-user-select: text !important;
  cursor: text !important;
  caret-color: currentColor;
  background: var(--card) !important;
  color: var(--text) !important;
  position: relative;
  z-index: 5;
}

.rm-mancanti-delivered-textarea:focus {
  outline: 2px solid color-mix(in srgb, var(--pri) 40%, transparent);
  outline-offset: 1px;
}

@media (max-width: 720px) {
  .rm-mancanti-delivered-textarea {
    width: 100%;
    text-align: left;
  }
}
/* /RM_MANCANTI_DELIVERED_TEXTAREA_EDITOR_CSS_V1 */

