.barcode-regenerator-app{--mode-accent-repair:var(--color-brand);--mode-accent-manual:#60a5fa;--mode-accent-history:#fbbf24;flex-direction:column;display:flex}.barcode-page__hero{border-bottom:1px solid color-mix(in srgb, var(--color-border) 78%, transparent);margin-bottom:1.5rem;padding-bottom:1.25rem}.barcode-regenerator-app:focus{outline:none}.br-content{flex-direction:column;gap:0;display:flex}.br-content-main{gap:1.25rem;display:grid}.barcode-regenerator-app .br-alert{color:var(--color-destructive);background:color-mix(in oklch, var(--color-destructive) 8%, transparent);border:1px solid color-mix(in oklch, var(--color-destructive) 30%, transparent);border-radius:var(--radius-md);padding:.65rem .875rem;font-size:.8rem;line-height:1.5}.barcode-regenerator-app .mode-navigation{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-bottom:1rem;display:grid}@media (max-width:480px){.barcode-regenerator-app .mode-navigation{margin-bottom:.75rem}}.barcode-regenerator-app .mode-navigation__item{width:100%;min-height:74px;color:var(--color-muted-foreground);background:color-mix(in srgb, var(--color-foreground) 4%, transparent);border:1px solid var(--color-border);border-radius:var(--radius-lg);font:inherit;cursor:pointer;flex-direction:column;align-items:center;gap:.3rem;padding:.7rem .5rem;transition:color .15s,border-color .15s,background-color .15s;display:flex}.barcode-regenerator-app .mode-navigation__item[data-mode=repair]{--mode-accent:var(--mode-accent-repair)}.barcode-regenerator-app .mode-navigation__item[data-mode=manual]{--mode-accent:var(--mode-accent-manual)}.barcode-regenerator-app .mode-navigation__item[data-mode=history]{--mode-accent:var(--mode-accent-history)}.barcode-regenerator-app .mode-navigation__icon{width:1.3rem;height:1.3rem;color:var(--mode-accent,var(--color-brand));opacity:.65;transition:opacity .15s;display:flex}.barcode-regenerator-app .mode-navigation__icon svg{width:100%;height:100%}.barcode-regenerator-app .mode-navigation__text{flex-direction:column;align-items:center;gap:.1rem;display:flex}.barcode-regenerator-app .mode-navigation__label{color:var(--color-foreground);font-family:var(--font-mono);letter-spacing:.02em;font-size:.72rem;font-weight:500}.barcode-regenerator-app .mode-navigation__hint{color:var(--color-muted-foreground);letter-spacing:.01em;font-size:.6rem}.barcode-regenerator-app .mode-navigation__item:hover{border-color:color-mix(in srgb, var(--mode-accent,var(--color-brand)) 45%, var(--color-border))}.barcode-regenerator-app .mode-navigation__item:hover .mode-navigation__icon{opacity:.9}.barcode-regenerator-app .mode-navigation__item.is-active{background:color-mix(in srgb, var(--mode-accent,var(--color-brand)) 12%, var(--color-card));border-color:color-mix(in srgb, var(--mode-accent,var(--color-brand)) 55%, var(--color-border));box-shadow:0 1px 3px color-mix(in srgb, var(--color-foreground) 14%, transparent)}.barcode-regenerator-app .mode-navigation__item.is-active .mode-navigation__icon{opacity:1}@media (max-width:480px){.barcode-regenerator-app .mode-navigation__item{min-height:58px;padding:.5rem .35rem}.barcode-regenerator-app .mode-navigation__hint{display:none}}.barcode-regenerator-app .tool-panel{background:var(--color-card);border:1px solid var(--color-border);border-left:3px solid var(--mode-accent,var(--color-border));border-radius:var(--radius-lg);gap:1rem;min-width:0;padding:1.25rem;display:grid;box-shadow:0 2px 8px #0000001f}.barcode-regenerator-app .manual-panel{--mode-accent:var(--mode-accent-manual)}.barcode-regenerator-app .result-panel{--mode-accent:var(--mode-accent-repair)}.barcode-regenerator-app .history-panel{--mode-accent:var(--mode-accent-history)}.barcode-regenerator-app .repair-panel{background:0 0;border:none;border-radius:0;padding:0}.barcode-regenerator-app .tool-panel h2{color:var(--color-foreground);font-size:.8rem;font-weight:500;font-family:var(--font-mono);letter-spacing:.04em;text-transform:lowercase;margin:0}.barcode-regenerator-app .tool-panel__title-row{align-items:center;gap:.65rem;display:flex}.barcode-regenerator-app .tool-panel__icon{width:2.1rem;height:2.1rem;color:var(--mode-accent,var(--color-brand));background:color-mix(in srgb, var(--mode-accent,var(--color-brand)) 16%, transparent);border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;display:flex}.barcode-regenerator-app .tool-panel__icon svg{width:1.05rem;height:1.05rem}.barcode-regenerator-app .tool-panel label{color:var(--color-muted-foreground);font-size:.8rem;font-weight:500}.barcode-regenerator-app .tool-panel label.source-button{color:var(--color-foreground)}.barcode-regenerator-app .muted{color:var(--color-muted-foreground);font-size:.8rem;line-height:1.5}.barcode-regenerator-app .repair-panel>h2,.barcode-regenerator-app .repair-panel>h2+.muted{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.barcode-regenerator-app button,.barcode-regenerator-app .source-button{min-height:44px;color:var(--color-foreground);font:inherit;background:var(--color-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;justify-content:center;align-items:center;gap:.5rem;padding:.55rem 1rem;font-size:.8rem;font-weight:500;line-height:1.25;transition:opacity .15s,border-color .15s;display:inline-flex}.barcode-regenerator-app button{width:100%}.barcode-regenerator-app button:hover:not(:disabled),.barcode-regenerator-app .source-button:hover{opacity:.8}.barcode-regenerator-app button:disabled{cursor:not-allowed;opacity:.35}.barcode-regenerator-app button:focus-visible{outline:2px solid var(--color-ring);outline-offset:2px}.barcode-regenerator-app .source-button:has(input:focus-visible){outline:2px solid var(--color-ring);outline-offset:2px}.barcode-regenerator-app .primary-action,.barcode-regenerator-app .source-button-primary{color:var(--color-brand-foreground);background:var(--color-brand);border-color:var(--color-brand)}.barcode-regenerator-app .danger{color:var(--color-destructive);border-color:var(--color-border);background:0 0}.barcode-regenerator-app .danger:hover:not(:disabled){border-color:var(--color-destructive);background:color-mix(in oklch, var(--color-destructive) 8%, transparent)}.barcode-regenerator-app .primary-action svg,.barcode-regenerator-app .source-button svg{opacity:.75;flex:none;width:1rem;height:1rem}.barcode-regenerator-app input{width:100%;min-width:0;min-height:44px;color:var(--color-foreground);font:inherit;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.55rem .875rem;font-size:max(.875rem,16px);transition:border-color .15s}.barcode-regenerator-app input:focus-visible{border-color:var(--color-brand);box-shadow:0 0 0 3px color-mix(in oklch, var(--color-brand) 15%, transparent);outline:none}.barcode-regenerator-app .visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.barcode-regenerator-app .photo-frame{width:100%;max-height:32vh;color:var(--color-muted-foreground);background:var(--color-background);border:1px dashed var(--color-border);border-radius:var(--radius-lg);justify-content:center;align-items:center;transition:border-color .15s;display:flex;box-shadow:0 1px 4px #00000014}.barcode-regenerator-app .photo-frame:not(:has(img)){aspect-ratio:8/5}.barcode-regenerator-app .photo-frame:has(img){border-style:solid}.barcode-regenerator-app .photo-frame img{max-width:100%;max-height:32vh;display:block}.barcode-regenerator-app .tool-panel .photo-empty,.barcode-regenerator-app .photo-empty{width:100%;font-size:.8rem;font-family:var(--font-mono);text-align:center;text-wrap:balance;color:var(--color-muted-foreground);cursor:pointer;place-items:center;gap:.4rem;padding:2.25rem 1.5rem;line-height:1.5;transition:color .15s;display:grid}.barcode-regenerator-app .photo-frame:has(.photo-empty:hover){border-color:var(--color-brand)}.barcode-regenerator-app .crop-overlay{justify-items:center;gap:.75rem;display:grid}.barcode-regenerator-app .crop-frame{background:var(--color-background);outline:1px solid var(--color-border);outline-offset:-1px;border-radius:var(--radius-lg);touch-action:none;-webkit-user-select:none;user-select:none;width:fit-content;max-width:100%;line-height:0;display:block;position:relative}.barcode-regenerator-app .crop-frame img{pointer-events:none;max-width:100%;max-height:70vh;display:block}.barcode-regenerator-app .crop-dim{pointer-events:none;background:#0000008c;background:lab(0% 0 0/.55);position:absolute}.barcode-regenerator-app .crop-box{box-sizing:border-box;border:2px solid var(--color-brand);cursor:move;position:absolute;box-shadow:0 0 0 9999px #0000}.barcode-regenerator-app .crop-box:focus-visible{outline:3px solid var(--color-ring);outline-offset:3px}.barcode-regenerator-app .crop-handle{touch-action:none;background:0 0;border:0;width:2.75rem;height:2.75rem;position:absolute}.barcode-regenerator-app .crop-handle:after{content:"";background:var(--color-brand);border:2px solid var(--color-background);border-radius:999px;position:absolute;inset:.625rem}.barcode-regenerator-app .crop-handle-nw{cursor:nwse-resize;top:-1.375rem;left:-1.375rem}.barcode-regenerator-app .crop-handle-ne{cursor:nesw-resize;top:-1.375rem;right:-1.375rem}.barcode-regenerator-app .crop-handle-sw{cursor:nesw-resize;bottom:-1.375rem;left:-1.375rem}.barcode-regenerator-app .crop-handle-se{cursor:nwse-resize;bottom:-1.375rem;right:-1.375rem}.barcode-regenerator-app .crop-actions,.barcode-regenerator-app .source-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}@media (max-width:480px){.barcode-regenerator-app .source-actions{gap:.375rem}}.barcode-regenerator-app .source-button{-webkit-user-select:none;user-select:none;width:100%;position:relative}.barcode-regenerator-app .prepare-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.barcode-regenerator-app .reading-tip{border:1px solid var(--color-border);background:color-mix(in srgb, var(--color-foreground) 4%, transparent);color:var(--color-muted-foreground);border-radius:.5rem;margin:0;padding:.6rem .75rem;font-size:.75rem;line-height:1.55}.barcode-regenerator-app .reading-tip strong{color:var(--color-foreground);font-weight:600;display:block}.barcode-regenerator-app .reading-tip ul{margin:.35rem 0 0;padding-left:1.1rem;list-style:outside}.barcode-regenerator-app .reading-tip li{margin:.15rem 0}.barcode-regenerator-app .reading-tip p{margin:.5rem 0 0}.barcode-regenerator-app .reader-trace{border:1px solid var(--color-border);background:color-mix(in srgb, var(--color-foreground) 3%, transparent);border-radius:.5rem}.barcode-regenerator-app .reader-trace summary{color:var(--color-muted-foreground);cursor:pointer;padding:.55rem .75rem;font-size:.75rem;list-style:none}.barcode-regenerator-app .reader-trace summary::-webkit-details-marker{display:none}.barcode-regenerator-app .reader-trace summary:before{content:"▸ ";width:1em;display:inline-block}.barcode-regenerator-app .reader-trace[open] summary:before{content:"▾ "}.barcode-regenerator-app .reader-trace summary:hover{color:var(--color-foreground)}.barcode-regenerator-app .reader-trace-body{border-top:1px solid var(--color-border);color:var(--color-muted-foreground);font-family:var(--font-mono);word-break:break-all;max-height:40vh;margin-top:0;padding:.6rem .75rem .75rem;font-size:.65rem;line-height:1.6;overflow-y:auto}.barcode-regenerator-app .repair-panel>[role=status],.barcode-regenerator-app .repair-panel>[role=alert]{font-size:.8rem;font-family:var(--font-mono);text-align:center;line-height:1.5}.barcode-regenerator-app .repair-panel>[role=status]{color:var(--color-muted-foreground)}.barcode-regenerator-app .repair-panel>[role=alert],.barcode-regenerator-app .tool-panel [role=alert]{color:var(--color-destructive)}.barcode-regenerator-app .candidate-list{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-background);gap:.375rem;min-width:0;padding:.75rem;display:grid}.barcode-regenerator-app .candidate-list legend{color:var(--color-muted-foreground);font-size:.75rem;font-family:var(--font-mono);letter-spacing:.04em;padding-inline:.375rem}.fullscreen-barcode-overlay{z-index:50;background:#000000d9;justify-content:center;align-items:center;animation:.2s ease-out fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fullscreen-barcode-modal{border-radius:var(--radius-lg);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#fff;flex-direction:column;align-items:center;gap:1rem;max-width:96vw;max-height:92vh;padding:1.25rem;display:flex;position:relative;overflow:auto}.modal-close-button{border:1px solid var(--color-border);border-radius:var(--radius-md);width:2.5rem;height:2.5rem;color:var(--color-muted-foreground);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:0;font-size:1.5rem;transition:all .15s;display:flex;position:absolute;top:1rem;right:1rem}.modal-close-button:hover{background:var(--color-background);color:var(--color-foreground);border-color:var(--color-foreground)}.fullscreen-barcode-content{flex-direction:column;align-items:center;gap:1rem;width:100%;display:flex}.barcode-display{width:100%;max-width:600px}.fullscreen-barcode-modal .barcode-display svg{width:100%;height:auto;display:block}.fullscreen-barcode-modal .fullscreen-tracking{color:#111;font-family:var(--font-mono);letter-spacing:.06em;text-align:center;margin:0;font-size:1rem}.fullscreen-barcode-modal .modal-close-button{color:#444;background:#fff;border-color:#ccc}.barcode-display svg{width:100%;height:auto;display:block}.fullscreen-tracking{font-family:var(--font-mono);letter-spacing:.08em;color:var(--color-foreground);text-align:center;margin:0;font-size:1.25rem}.history-scroll-container{-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;margin:0 -1.25rem;padding:0 1.25rem;overflow:auto hidden}.history-cards{gap:.75rem;min-width:0;padding-bottom:.5rem;display:flex}.history-card{scroll-snap-align:start;scroll-snap-stop:always;flex:0 0 calc(100vw - 3rem);max-width:280px}@media (max-width:480px){.history-card{flex:0 0 calc(100vw - 2.5rem)}}@media (min-width:768px){.history-card{flex:0 0 250px}}.card-tracking{font-family:var(--font-mono);letter-spacing:.06em;margin-bottom:.5rem;font-size:1.125rem;font-weight:500;display:block}.card-meta{color:var(--color-muted-foreground);font-size:.75rem;display:block}.voice-error{color:var(--color-destructive);background:color-mix(in oklch, var(--color-destructive) 8%, transparent);border:1px solid color-mix(in oklch, var(--color-destructive) 30%, transparent);border-radius:var(--radius-md);margin:0;padding:.65rem .875rem;font-size:.8rem;line-height:1.5}.camera-preview-container{flex-direction:column;gap:1rem;min-width:0;display:flex}.camera-viewport{aspect-ratio:4/3;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-lg);justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.camera-viewport video{object-fit:cover;width:100%;height:100%;display:block}.camera-loading,.camera-error{text-align:center;justify-content:center;align-items:center;padding:1rem;font-size:.9rem;display:flex;position:absolute;inset:0}.camera-loading{color:var(--color-muted-foreground)}.camera-error{color:var(--color-destructive);background:color-mix(in oklch, var(--color-destructive) 8%, transparent)}.offline-banner{z-index:40;background:color-mix(in oklch, var(--color-brand) 12%, transparent);border-top:1px solid color-mix(in oklch, var(--color-brand) 40%, transparent);text-align:center;color:var(--color-brand);padding:.75rem 1rem;font-size:.875rem;animation:.3s ease-out slideUp;position:sticky;bottom:0}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.barcode-regenerator-app .candidate{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;align-items:flex-start;gap:.75rem;min-width:0;min-height:40px;padding:.6rem .75rem;transition:border-color .15s;display:flex}.barcode-regenerator-app .candidate:hover{border-color:color-mix(in oklch, var(--color-brand) 40%, var(--color-border))}.barcode-regenerator-app .candidate:has(input:checked){border-color:var(--color-brand);background:color-mix(in oklch, var(--color-brand) 5%, var(--color-card))}.barcode-regenerator-app .candidate span{min-width:0;color:var(--color-foreground);font-family:var(--font-mono);overflow-wrap:anywhere;font-size:.85rem}.barcode-regenerator-app .candidate input{width:1.125rem;min-height:1.125rem;accent-color:var(--color-brand);cursor:pointer;flex:none;margin-top:.15rem;padding:0}.barcode-regenerator-app .selected-tracking{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-md);gap:.625rem;min-width:0;padding:1rem;display:grid}.barcode-regenerator-app .selected-tracking>strong{color:var(--color-muted-foreground);font-size:.7rem;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;font-weight:500}.barcode-regenerator-app .tracking-number,.barcode-regenerator-app .tracking-digits{color:var(--color-foreground);font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:.04em;overflow-wrap:anywhere;font-weight:500}.barcode-regenerator-app .tracking-number{font-size:clamp(1rem,5vw,1.25rem);line-height:1.5}.barcode-regenerator-app .tracking-digits{text-align:center;font-size:clamp(.9rem,4.5vw,1.1rem);line-height:1.7}.barcode-regenerator-app .digit-comparison{grid-template-columns:repeat(4,auto);justify-content:center;gap:.55rem .35rem;display:grid}.barcode-regenerator-app .digit-comparison>p{grid-column:1/-1;margin:0}.barcode-regenerator-app .digit-editor{justify-items:center;gap:.2rem;min-width:2.75rem;display:grid;position:relative}.barcode-regenerator-app .digit-input{color:currentColor;width:2.75rem;min-width:2.75rem;min-height:2.75rem;font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:center;background:var(--color-background);border-radius:var(--radius-sm);border:2px solid;padding:.25rem;font-size:1rem;font-weight:650;line-height:1}.barcode-regenerator-app .digit-input:focus-visible{outline:3px solid var(--color-ring);outline-offset:2px;box-shadow:none;border-color:currentColor}.barcode-regenerator-app .digit-editor.digit-editor-confirmed{color:var(--color-brand)}.barcode-regenerator-app .digit-editor-confirmed .digit-input{background:color-mix(in oklch, var(--color-brand) 8%, var(--color-background))}.barcode-regenerator-app .digit-editor.digit-editor-review{color:var(--color-destructive)}.barcode-regenerator-app .digit-editor-review .digit-input{background:color-mix(in oklch, var(--color-destructive) 8%, var(--color-background));border-style:dashed}.barcode-regenerator-app .digit-rating{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.barcode-regenerator-app .digit-status-mark{color:currentColor;background:var(--color-card);pointer-events:none;border:1px solid;border-radius:999px;place-items:center;width:1.05rem;height:1.05rem;font-family:ui-sans-serif,system-ui,sans-serif;font-size:.65rem;font-weight:700;line-height:1;display:grid;position:absolute;top:-.3rem;right:-.15rem}.barcode-regenerator-app .digit-comparison p{color:var(--color-muted-foreground);font-size:.75rem;font-family:var(--font-mono);text-align:center;flex-basis:100%;margin-top:.4rem}.barcode-regenerator-app .status-valid{color:var(--color-brand-ink);font-weight:500;font-family:var(--font-mono);font-size:.8rem}.barcode-regenerator-app .status-review{color:var(--color-warn-ink);font-weight:500;font-family:var(--font-mono);font-size:.8rem}.barcode-regenerator-app .manual-panel,.barcode-regenerator-app .result-panel,.barcode-regenerator-app .history-panel{gap:.875rem}.barcode-regenerator-app .barcode-surface,.barcode-regenerator-app .barcode{color:#000;border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fff;width:100%;min-width:0;padding:1.25rem;overflow:hidden}.barcode-regenerator-app .barcode svg{color:#000;width:100%;height:auto;display:block}.barcode-regenerator-app .history-list{gap:.375rem;display:grid}.barcode-regenerator-app .history-entry{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:left;cursor:pointer;justify-items:start;gap:.2rem;width:100%;min-width:0;padding:.75rem 1rem;transition:border-color .15s;display:grid}.barcode-regenerator-app .history-entry:hover{border-color:color-mix(in oklch, var(--color-brand) 50%, var(--color-border))}.barcode-regenerator-app .history-entry span{max-width:100%;font-family:var(--font-mono);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;color:var(--color-foreground);font-size:.85rem;font-weight:500}.barcode-regenerator-app .history-entry small{color:var(--color-muted-foreground);font-size:.75rem;font-family:var(--font-mono)}@media (prefers-reduced-motion:reduce){.barcode-regenerator-app *,.barcode-regenerator-app :before,.barcode-regenerator-app :after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
