.app-shell{width:min(1180px,calc(100% - var(--sp-xl)));margin:0 auto;padding:var(--sp-lg) 0 0}.app-tabs{display:flex;gap:var(--sp-sm);padding-bottom:var(--sp-md);border-bottom:1px solid var(--border)}.app-tab{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-sm);padding:0 var(--sp-lg);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card);color:var(--text-muted);font-weight:600;cursor:pointer}.app-tab.active{background:var(--accent);border-color:var(--accent);color:var(--surface-card)}.app-panel[hidden]{display:none}@media(max-width:520px){.app-tabs{flex-direction:column}.app-tab{width:100%}}.encoder-shell{width:min(1180px,calc(100% - var(--sp-xl)));margin:0 auto;padding:var(--sp-2xl) 0 var(--sp-3xl);display:grid;gap:var(--sp-lg)}.encoder-section{background:var(--surface-card);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-lg);box-shadow:0 12px 32px #0f172a0f}.section-heading h1,.section-heading h2,.empty-state h2{margin:0;color:var(--text);font-size:20px;font-weight:600;line-height:1.2}.scan-button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-sm);border:0;border-radius:var(--radius);padding:0 var(--sp-md);background:var(--accent);color:var(--surface-card);font-weight:600;cursor:pointer}.empty-state p,.state-copy{margin:var(--sp-sm) 0 0;color:var(--text-muted)}.file-meta,.estimate-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-md);margin:var(--sp-lg) 0 0}.file-meta div{min-width:0}dt{color:var(--text-muted);font-size:14px;font-weight:600;line-height:1.4}code{font-family:var(--font-mono);font-size:14px;overflow-wrap:anywhere}.preset-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-sm)}.preset-button{min-height:44px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card);color:var(--text);font-weight:600;padding:0 var(--sp-md);cursor:pointer}.preset-button.selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.avanzate-panel{margin-top:var(--sp-md);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-page)}.avanzate-panel>summary{min-height:44px;display:flex;align-items:center;padding:0 var(--sp-md);color:var(--text);font-size:14px;font-weight:600;cursor:pointer;list-style:none}.avanzate-panel>summary::-webkit-details-marker{display:none}.avanzate-panel>summary:before{content:"▸";margin-right:var(--sp-sm);color:var(--text-muted)}.avanzate-panel[open]>summary:before{content:"▾"}.avanzate-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-md);padding:var(--sp-md)}.avanzate-field{display:grid;gap:var(--sp-xs);color:var(--text-muted);font-size:14px;font-weight:600}.avanzate-field input,.avanzate-field select{min-height:44px;width:100%;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card);color:var(--text);padding:0 var(--sp-sm)}.settings-error{margin:var(--sp-md) 0 0;color:var(--state-fail);font-weight:600}.estimate-updating{margin:var(--sp-sm) 0 0;color:var(--info);font-size:14px;font-weight:600}.state-copy.generating{color:var(--accent);font-weight:600}.progress-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-md);margin:var(--sp-md) 0 0;color:var(--info);font-size:14px;font-weight:600}.status-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-md);margin:var(--sp-lg) 0 0}.status-summary div{min-width:0}.dettagli-tecnici{margin-top:var(--sp-md);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-page)}.dettagli-tecnici>summary{min-height:44px;display:flex;align-items:center;padding:0 var(--sp-md);color:var(--text);font-size:14px;font-weight:600;cursor:pointer}.hash-list{display:grid;gap:var(--sp-md);margin:0;padding:var(--sp-md)}.hash-row dd{display:flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.copy-button{min-height:44px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card);color:var(--text);font-weight:600;padding:0 var(--sp-md);cursor:pointer}.encoder-log{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-sm);max-height:320px;overflow-y:auto}.log-empty{margin:var(--sp-sm) 0 0;color:var(--text-muted)}.log-row.error{border-color:#b91c1c59}.log-severity{color:var(--text-muted);font-size:14px;font-weight:600}.log-row.error .log-severity{color:var(--state-fail)}.preview-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--sp-md);align-items:start}.preview-video{width:100%;border:1px solid var(--border);border-radius:var(--radius);background:#000}.preview-frame{margin:0;display:grid;gap:var(--sp-sm)}.preview-frame img{width:100%;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card)}.preview-frame figcaption{color:var(--text-muted);font-size:14px;font-weight:600}.download-button{margin-top:var(--sp-md);text-decoration:none}@media(max-width:840px){.encoder-shell{width:min(100% - var(--sp-lg),720px);padding:var(--sp-lg) 0 var(--sp-2xl)}.input-grid,.file-meta,.estimate-grid,.preset-grid,.avanzate-grid,.status-summary,.progress-details,.preview-grid,.log-row{grid-template-columns:1fr}}@media(max-width:520px){.encoder-section{padding:var(--sp-md)}.scan-button{width:100%}}.file-size-note{margin:var(--space-3, 12px) 0 0;padding:var(--space-3, 12px);border:1px solid var(--border, #d0d7de);border-radius:var(--radius-md, 8px);background:var(--surface-muted, rgba(0, 0, 0, .03));color:var(--text-muted);font-size:14px;line-height:1.45}.file-size-note strong{color:var(--text)}:root{--surface-page: #f8fafc;--surface-card: #ffffff;--accent: #0f766e;--text: #0f172a;--text-muted: #475569;--border: #cbd5e1;--track: #e2e8f0;--state-success: #0f766e;--state-warn: #b45309;--state-fail: #b91c1c;--info: #2563eb;--sp-xs: 4px;--sp-sm: 8px;--sp-md: 16px;--sp-lg: 24px;--sp-xl: 32px;--sp-2xl: 48px;--sp-3xl: 64px;--radius: 8px;--font-sans: ui-sans-serif, system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace}button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}:root{color:var(--text);background:var(--surface-page);font-family:var(--font-sans);font-size:16px;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(90deg,rgba(15,118,110,.05) 1px,transparent 1px),linear-gradient(0deg,rgba(37,99,235,.04) 1px,transparent 1px),var(--surface-page);background-size:var(--sp-xl) var(--sp-xl)}button,input{font:inherit}.decoder-shell{width:min(1180px,calc(100% - var(--sp-xl)));margin:0 auto;padding:var(--sp-2xl) 0 var(--sp-3xl);display:grid;gap:var(--sp-lg)}.decoder-section{background:var(--surface-card);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-lg);box-shadow:0 12px 32px #0f172a0f}.section-heading{display:flex;flex-direction:column;gap:var(--sp-xs);margin-bottom:var(--sp-md)}.section-heading h1,.section-heading h2,.empty-state h2{margin:0;color:var(--text);font-size:20px;font-weight:600;line-height:1.2;letter-spacing:0}.eyebrow{margin:0;color:var(--text-muted);font-size:14px;font-weight:600;line-height:1.4;text-transform:uppercase}.input-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-md);align-items:center}.file-control{min-height:44px;display:grid;gap:var(--sp-sm);color:var(--text);font-size:14px;font-weight:600}.file-control input{min-height:44px;width:100%;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-page);color:var(--text);padding:var(--sp-sm)}.scan-button,.save-button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-sm);border:0;border-radius:var(--radius);padding:0 var(--sp-md);background:var(--accent);color:var(--surface-card);font-weight:600;cursor:pointer;text-decoration:none}.scan-button:disabled{background:var(--border);color:var(--text-muted);cursor:not-allowed}.empty-state{margin-top:var(--sp-lg);padding:var(--sp-lg);border:1px dashed var(--border);border-radius:var(--radius);background:var(--surface-page)}.input-mode-toggle{display:flex;gap:var(--sp-sm);margin-bottom:var(--sp-md)}.input-mode{min-height:44px;display:inline-flex;align-items:center;gap:var(--sp-sm);padding:0 var(--sp-md);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-page);color:var(--text-muted);font-weight:600;cursor:pointer}.input-mode.active{border-color:var(--accent);color:var(--text);background:var(--surface-card)}.webcam-panel{display:grid;gap:var(--sp-md);margin-top:var(--sp-sm)}.webcam-warning{display:flex;align-items:flex-start;gap:var(--sp-sm);margin:0;padding:var(--sp-md);border:1px solid var(--state-warn);border-radius:var(--radius);color:var(--state-warn);background:color-mix(in srgb,var(--state-warn) 8%,var(--surface-card));font-weight:600}.webcam-warning svg{flex:0 0 auto;margin-top:2px}.webcam-preview{width:100%;max-height:320px;border:1px solid var(--border);border-radius:var(--radius);background:#000}.webcam-controls{display:flex;gap:var(--sp-sm)}.webcam-controls .scan-button{min-height:44px}.webcam-stop{background:var(--state-warn)}.webcam-error{margin:0;padding:var(--sp-sm) var(--sp-md);border-radius:var(--radius);color:var(--state-fail);font-weight:600}.empty-state p,.state-copy,.log-empty{margin:var(--sp-sm) 0 0;color:var(--text-muted)}.file-meta,.transfer-lock,.progress-details{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-md);margin:var(--sp-lg) 0 0}.file-meta div,.transfer-lock div{min-width:0}dt,.health-label,.log-severity{color:var(--text-muted);font-size:14px;font-weight:600;line-height:1.4}dd{margin:var(--sp-xs) 0 0;color:var(--text);overflow-wrap:anywhere}code{font-family:var(--font-mono);font-size:14px}.state-copy.scanning{color:var(--accent);font-weight:600}.state-copy.complete{color:var(--text)}.state-copy.failed{color:var(--state-fail);font-weight:600}.progress-meter{width:100%;height:10px;margin-top:var(--sp-md);overflow:hidden;border-radius:999px;background:var(--track)}.progress-fill{height:100%;background:var(--accent);transition:width .18s ease}.progress-details{grid-template-columns:repeat(2,minmax(0,1fr));color:var(--info);font-size:14px;font-weight:600}.transfer-lock{grid-template-columns:repeat(2,minmax(0,1fr))}.health-grid{display:grid;grid-template-columns:repeat(6,minmax(112px,1fr));gap:var(--sp-md)}.health-tile{min-width:112px;min-height:92px;display:flex;flex-direction:column;justify-content:space-between;gap:var(--sp-sm);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-md);background:var(--surface-card)}.health-tile strong{color:var(--text);font-size:20px;font-weight:600;line-height:1.2}.health-tile.primary strong{font-size:28px}.health-tile.good strong{color:var(--state-success)}.health-tile.warn strong{color:var(--state-warn)}.health-tile.bad strong{color:var(--state-fail)}.integrity-banner{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-sm) var(--sp-md);padding:var(--sp-md);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-page)}.integrity-banner-status{display:inline-flex;align-items:center;gap:var(--sp-sm);font-weight:600}.integrity-banner-detail{min-width:0;color:var(--text-muted);font-size:14px}.integrity-label{font-weight:600}.integrity-stages{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--sp-md);margin-top:var(--sp-md)}.integrity-stage{display:grid;gap:var(--sp-xs);padding:var(--sp-md);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card)}.integrity-stage-name{min-width:0;color:var(--text);font-weight:600}.integrity-badge{display:inline-flex;align-items:center;gap:var(--sp-xs);font-size:14px;font-weight:600}.integrity-stage-hash{min-width:0;color:var(--text-muted);font-size:13px}.reconstruction-failure{margin-top:var(--sp-md);padding:var(--sp-md);border:1px solid var(--state-fail);border-radius:var(--radius);background:var(--surface-page)}.failure-copy{margin:0;color:var(--state-fail);font-weight:600}.failure-hashes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-md);margin:var(--sp-md) 0 0}.failure-reason{margin:var(--sp-md) 0 0;color:var(--text-muted)}.save-button{margin-top:var(--sp-md)}.technical-details{margin-top:var(--sp-md);display:grid;gap:var(--sp-md)}.details-toggle,.copy-button{display:inline-flex;align-items:center;gap:var(--sp-xs);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card);color:var(--text);cursor:pointer}.details-toggle{min-height:44px;justify-self:start;padding:0 var(--sp-md);font-weight:600}.copy-button{min-height:32px;padding:0 var(--sp-sm);font-size:13px}.details-list{display:grid;gap:var(--sp-sm);margin:0}.details-row{display:grid;gap:var(--sp-xs)}.details-row dd{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-sm)}.details-hash{min-width:0;overflow-wrap:anywhere}.log-heading{flex-direction:row;justify-content:space-between;align-items:start;gap:var(--sp-md)}.log-filters{display:flex;gap:var(--sp-sm)}.log-filters button{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card);color:var(--text);cursor:pointer}.decoder-log{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-sm);max-height:420px;overflow-y:auto}.log-row{min-height:32px;display:grid;grid-template-columns:92px minmax(0,1fr) auto;gap:var(--sp-sm);align-items:center;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-page)}.log-row.warning{border-color:#b4530959}.log-row.error,.log-row.rejection{border-color:#b91c1c59}.log-row.warning .log-severity{color:var(--state-warn)}.log-row.error .log-severity,.log-row.rejection .log-severity{color:var(--state-fail)}.log-message{min-width:0;overflow-wrap:anywhere}@media(max-width:840px){.decoder-shell{width:min(100% - var(--sp-lg),720px);padding:var(--sp-lg) 0 var(--sp-2xl)}.input-grid,.file-meta,.transfer-lock,.progress-details,.failure-hashes{grid-template-columns:1fr}.health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.log-heading{flex-direction:column}.log-row{grid-template-columns:1fr}}@media(max-width:520px){.decoder-section{padding:var(--sp-md)}.health-grid{grid-template-columns:1fr}.scan-button{width:100%}}
