:root{color-scheme:dark;--bg: #0a0d12;--ink: #f0f4f8;--muted: #8a95a3;--border: rgba(240, 244, 248, .18);--ok: #4dff91;--ok-dim: rgba(77, 255, 145, .15);--fail: #ff5252;--fail-dim: rgba(255, 82, 82, .15);--warn: #ffd166;--accent: #7cd6ff;--topbar-h: 60px;font-family:Trebuchet MS,Segoe UI,system-ui,sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;overflow:hidden}body{background:var(--bg);color:var(--ink)}.scanner-root{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden}.topbar{flex:0 0 var(--topbar-h);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px;background:#0a0d12e0;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10}.topbar-brand{display:flex;align-items:baseline;gap:6px;white-space:nowrap}.topbar-brand span{font-size:.7rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)}.topbar-brand strong{font-size:1.05rem;letter-spacing:.04em}.topbar-right{display:flex;align-items:center;gap:10px;flex:1;justify-content:flex-end;min-width:0}.meal-select{flex:1;min-width:0;max-width:380px;height:38px;padding:0 28px 0 12px;border:1.5px solid var(--border);border-radius:10px;background:#ffffff0f;color:var(--ink);font:inherit;font-size:.9rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238a95a3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.meal-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #7cd6ff40}.topbar-btn{flex:0 0 auto;height:34px;padding:0 14px;border:1.5px solid var(--border);border-radius:8px;background:transparent;color:var(--muted);font:inherit;font-size:.82rem;cursor:pointer;transition:color .14s,border-color .14s}.topbar-btn:hover{color:var(--ink);border-color:#f0f4f873}.camera-stage{flex:1;position:relative;overflow:hidden;background:#000}.camera-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.stage-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:24px;background:#0a0d12d1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.hint-overlay,.warn-overlay{background:#0a0d128c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none}.hint-msg,.warn-msg{font-size:1rem;color:var(--muted);text-align:center;max-width:32ch}.warn-msg{color:var(--warn)}.error-overlay{background:#280a0ae0}.error-msg{color:var(--fail);font-size:.95rem;text-align:center;max-width:36ch}.auth-card{display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center;max-width:360px}.eyebrow{font-size:.7rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.auth-card h1{font-size:clamp(1.3rem,3vw,1.8rem);font-family:Georgia,Times New Roman,serif;line-height:1.25;font-weight:400}.big-btn{padding:13px 28px;border:2px solid var(--ink);border-radius:12px;background:var(--ink);color:#0a0d12;font:inherit;font-size:.95rem;font-weight:800;cursor:pointer;transition:transform .12s,box-shadow .12s;box-shadow:4px 4px #ffffff59}.big-btn:hover{transform:translate(-2px,-2px);box-shadow:6px 6px #ffffff59}.viewfinder{--vf-size: min(70vmin, 340px);--vf-corner: 30px;--vf-thick: 4px;--vf-color: var(--ok);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:var(--vf-size);height:var(--vf-size);pointer-events:none}.vf-busy{--vf-color: var(--accent)}.vf-ok{--vf-color: var(--ok)}.vf-fail{--vf-color: var(--fail)}.vf-corner{position:absolute;width:var(--vf-corner);height:var(--vf-corner)}.vf-corner:before,.vf-corner:after{content:"";position:absolute;background:var(--vf-color);transition:background .2s,box-shadow .2s;border-radius:2px}.vf-corner:before{width:var(--vf-corner);height:var(--vf-thick)}.vf-corner:after{width:var(--vf-thick);height:var(--vf-corner)}.vf-tl{top:0;left:0}.vf-tl:before{top:0;left:0}.vf-tl:after{top:0;left:0}.vf-tr{top:0;right:0}.vf-tr:before{top:0;right:0;left:auto}.vf-tr:after{top:0;right:0;left:auto}.vf-bl{bottom:0;left:0}.vf-bl:before{bottom:0;left:0;top:auto}.vf-bl:after{bottom:0;left:0;top:auto}.vf-br{bottom:0;right:0}.vf-br:before{bottom:0;right:0;left:auto;top:auto}.vf-br:after{bottom:0;right:0;left:auto;top:auto}@keyframes scan{0%{transform:translateY(0);opacity:1}48%{opacity:1}50%{transform:translateY(calc(var(--vf-size) - var(--vf-thick)));opacity:.6}52%{opacity:1}to{transform:translateY(0);opacity:1}}.vf-line{position:absolute;left:0;right:0;height:var(--vf-thick);background:var(--ok);box-shadow:0 0 10px var(--ok),0 0 32px #4dff9180;border-radius:2px;animation:scan 2.2s ease-in-out infinite}@keyframes pulse-ring{0%{opacity:.9;transform:translate(-50%,-50%) scale(.96)}50%{opacity:.4;transform:translate(-50%,-50%) scale(1.04)}to{opacity:.9;transform:translate(-50%,-50%) scale(.96)}}.vf-pulse{position:absolute;top:50%;left:50%;width:70%;height:70%;border:3px solid var(--accent);border-radius:50%;box-shadow:0 0 24px var(--accent);animation:pulse-ring .9s ease-in-out infinite}.vf-busy .vf-corner:before,.vf-busy .vf-corner:after{box-shadow:0 0 8px var(--accent),0 0 20px var(--accent)}.vf-ok .vf-corner:before,.vf-ok .vf-corner:after{box-shadow:0 0 10px var(--ok),0 0 28px var(--ok)}.vf-fail .vf-corner:before,.vf-fail .vf-corner:after{box-shadow:0 0 10px var(--fail),0 0 28px var(--fail)}@keyframes flash-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.result-flash{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;animation:flash-in .14s cubic-bezier(.22,1,.36,1);pointer-events:none}.flash-ok{background:#082412eb}.flash-fail{background:#240808eb}.flash-icon{font-size:clamp(4rem,14vw,7rem);line-height:1;font-weight:900}.flash-ok .flash-icon{color:var(--ok);text-shadow:0 0 40px var(--ok)}.flash-fail .flash-icon{color:var(--fail);text-shadow:0 0 40px var(--fail)}.flash-label{font-size:clamp(1.2rem,4vw,2rem);font-weight:800;letter-spacing:.04em;text-align:center}.flash-ok .flash-label{color:var(--ok)}.flash-fail .flash-label{color:var(--fail)}.flash-name{margin-top:4px;font-size:clamp(1rem,3vw,1.5rem);color:var(--ink);opacity:.85;text-align:center;max-width:28ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-bar{flex:0 0 48px;display:flex;align-items:center;gap:10px;padding:0 16px;background:#0a0d12e6;border-top:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:background .25s;overflow:hidden}.sbar-ok{background:#082412f2}.sbar-fail{background:#240808f2}.sbar-busy{background:#081224f2}@keyframes spin{to{transform:rotate(360deg)}}.sbar-spinner{flex:0 0 16px;width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.sbar-text{flex:1;font-size:.88rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sbar-ok .sbar-text{color:var(--ok)}.sbar-fail .sbar-text{color:var(--fail)}.sbar-busy .sbar-text{color:var(--accent)}.sbar-meal-chip{flex:0 0 auto;font-size:.75rem;font-weight:700;color:var(--muted);background:#ffffff0f;border:1px solid var(--border);border-radius:6px;padding:2px 8px;white-space:nowrap}.manual-fallback{flex:0 0 auto;display:flex;flex-direction:column;gap:8px;padding:12px 16px;border-top:1px solid var(--border);background:#0a0d12f2}.manual-label{font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.manual-input{width:100%;padding:10px 12px;border:1.5px solid var(--border);border-radius:10px;background:#ffffff0a;color:var(--ink);font:inherit;font-size:.85rem;resize:none}.manual-input:focus{outline:none;border-color:var(--accent)}.manual-submit{align-self:flex-end;padding:8px 20px;border:1.5px solid var(--border);border-radius:8px;background:#7cd6ff1f;color:var(--accent);font:inherit;font-size:.85rem;font-weight:700;cursor:pointer;transition:background .14s}.manual-submit:hover:not(:disabled){background:#7cd6ff38}.manual-submit:disabled{opacity:.4;cursor:not-allowed}@media(max-width:480px){.topbar{padding:0 10px;gap:8px}.topbar-brand strong{font-size:.95rem}.meal-select,.status-bar{font-size:.82rem}}
