:root{--bg: #1a1a2e;--surface: #16213e;--accent: #e94560;--text: #eee;--text-dim: #999;--border: #0f3460}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100dvh;overflow:hidden;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}#app{display:flex;flex-direction:column;height:100dvh;overflow:hidden}.camera-layer{position:fixed;inset:0;z-index:0}.camera-layer video{width:100%;height:100%;object-fit:cover}.scan-region{position:fixed;top:35%;left:50%;width:65vw;height:65vw;max-width:280px;max-height:280px;transform:translate(-50%,-50%);border:2px solid rgba(255,255,255,.3);border-radius:12px;box-shadow:0 0 0 200vmax #1a1a2ed9;z-index:1;pointer-events:none}.scan-line{position:absolute;left:5%;right:5%;height:2px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.5;animation:scan-line-move 2.5s ease-in-out infinite}@keyframes scan-line-move{0%,to{top:10%}50%{top:90%}}.scan-ok{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.5);font-size:5rem;color:#2ecc71;opacity:0;pointer-events:none;z-index:5}.scan-ok.show{animation:scan-ok-flash .8s ease forwards}@keyframes scan-ok-flash{0%{transform:translate(-50%,-50%) scale(.5);opacity:0}30%{transform:translate(-50%,-50%) scale(1);opacity:1}70%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(1);opacity:0}}header{position:relative;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}header h1{font-size:1.2rem;font-weight:700}.byline{font-size:.7rem;font-weight:400;color:var(--text-dim);margin-left:.3rem}.count{font-size:.85rem;color:var(--text-dim)}.count-num{font-size:1rem;font-weight:700;color:var(--text)}.count-num.bump{animation:count-bump .3s ease}@keyframes count-bump{50%{transform:scale(1.3)}}main{flex:1 1 0;display:flex;flex-direction:column;overflow:hidden;min-height:0;position:relative;z-index:5}.scan-spacer{flex:1 1 0}.camera-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:2rem;text-align:center;color:var(--text-dim)}.camera-error p{margin-bottom:.5rem}.list-section{max-height:30dvh;overflow-y:auto;min-height:0;background:var(--bg);border-radius:12px 12px 0 0;border-top:1px solid var(--border)}#scan-list{list-style:none}.scan-row{display:flex;align-items:center;gap:.5rem;padding:.6rem 1rem;border-bottom:1px solid var(--border);transition:background .3s}.scan-row.flash{animation:flash-bg .6s ease}@keyframes flash-bg{0%,to{background:transparent}50%{background:var(--accent)}}.scan-row.flash-success{animation:flash-bg-green .6s ease}@keyframes flash-bg-green{0%,to{background:transparent}50%{background:#2ecc714d}}.row-num{font-size:.75rem;color:var(--text-dim);min-width:2.5rem;flex-shrink:0}.row-value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem}.row-time{font-size:.75rem;color:var(--text-dim);flex-shrink:0}.row-delete{background:none;border:none;color:var(--text-dim);font-size:1.2rem;cursor:pointer;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;flex-shrink:0;-webkit-tap-highlight-color:transparent}.row-delete:hover{color:var(--accent)}footer{position:relative;z-index:10;display:flex;gap:.5rem;padding:.5rem 1rem;background:var(--surface);border-top:1px solid var(--border);flex-shrink:0}footer button{flex:1;display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.5rem .3rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:.7rem;cursor:pointer}footer button:active{background:var(--border)}.footer-sep{width:1px;background:var(--border);margin:.2rem 0}footer .btn-clear{color:var(--accent);border-color:#e9456066}footer .btn-clear:active{background:var(--accent);color:#fff}.toast{position:fixed;top:0;left:50%;transform:translate(-50%) translateY(-100%);background:var(--accent);color:#fff;padding:.5rem 1.2rem;border-radius:0 0 8px 8px;font-size:.85rem;font-weight:600;z-index:100;transition:transform .3s ease;pointer-events:none}.toast.visible{transform:translate(-50%) translateY(0)}.toast.success{background:#2ecc71;font-size:1rem;padding:.6rem 1.5rem}.empty-state{text-align:center;color:var(--text-dim);padding:2rem 1rem}
