*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}:root{--bg: #0f1115;--surface: #1a1d24;--surface-2: #232730;--text: #f2f4f8;--muted: #9aa3b2;--accent: #3b82f6;--accent-hover: #2563eb;--danger: #ef4444;--warn: #f59e0b;--border: #2a2f3a;--radius: 12px}@media (prefers-color-scheme: light){:root{--bg: #f5f6f8;--surface: #ffffff;--surface-2: #f0f2f6;--text: #111418;--muted: #5b6573;--border: #e2e6ec}}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45;min-height:100dvh;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}#app{max-width:36rem;margin:0 auto;padding:env(safe-area-inset-top) 1rem calc(env(safe-area-inset-bottom) + 1rem) 1rem;min-height:100dvh;display:flex;flex-direction:column;gap:1rem}.app__header h1{font-size:1.25rem;margin:.5rem 0;letter-spacing:-.01em}h2{font-size:1.125rem;margin:0 0 .5rem}.muted{color:var(--muted);margin:.25rem 0;font-size:.95rem}.scan{position:relative;flex:1;display:flex;flex-direction:column;min-height:60vh;border-radius:var(--radius);overflow:hidden;background:#000}.scan__video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.scan__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.scan__box{width:min(60vmin,100%);max-width:100%;aspect-ratio:1;border:3px solid rgba(255,255,255,.95);border-radius:16px;box-shadow:0 0 0 9999px #00000059,0 0 8px #0009;animation:scan-pulse 1s ease-in-out infinite}@keyframes scan-pulse{0%,to{border-color:#fffffff2}50%{border-color:#ffffff73}}@media (prefers-reduced-motion: reduce){.scan__box{animation:none}}.scan__hint{margin-top:1rem;color:#fff;background:#00000080;padding:.4rem .75rem;border-radius:999px;font-size:.9rem}.scan__bottom{position:absolute;bottom:1rem;left:0;right:0;display:flex;justify-content:center;padding:0 1rem}.banner{position:absolute;top:1rem;left:1rem;right:1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;display:flex;flex-direction:column;gap:.5rem}.banner--error{border-color:var(--danger)}.result{display:flex;flex-direction:column;gap:1rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;display:flex;flex-direction:column;gap:.75rem}.card__title{margin-bottom:0}.row{display:flex;flex-direction:column;gap:.25rem;border-top:1px solid var(--border);padding-top:.75rem}.row:first-of-type{border-top:0;padding-top:0}.row__head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.row__label{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}.row__body{display:flex;align-items:center;gap:.75rem}.row__value{flex:1;font-size:1.05rem;font-weight:500;word-break:break-all}.badge{font-size:.7rem;padding:.15rem .5rem;background:var(--warn);color:#1a1300;border-radius:999px;font-weight:600}.input{width:100%;padding:.65rem .75rem;font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:8px;min-height:44px}.input--textarea{resize:vertical;min-height:96px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:.5rem 1rem;font:inherit;font-weight:600;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;cursor:pointer;text-decoration:none;transition:background .12s ease,transform .05s ease}.btn:hover{background:var(--border)}.btn:active{transform:translateY(1px)}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn--secondary{background:var(--surface-2)}.btn--ghost{background:transparent}.btn--copy{padding:.4rem .75rem;min-height:36px;font-size:.85rem}.btn--again{align-self:center;margin-top:.5rem}.ctas{display:flex;gap:.75rem;flex-wrap:wrap}.ctas .btn{flex:1 1 12rem}@media (max-width: 480px){.ctas{position:sticky;bottom:env(safe-area-inset-bottom);background:var(--bg);padding:.5rem 0;z-index:5}}.toast{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 1.25rem);left:50%;transform:translate(-50%);background:#000000d9;color:#fff;padding:.5rem 1rem;border-radius:999px;font-size:.9rem;z-index:100;transition:opacity .25s ease}.toast--hide{opacity:0}.warn-banner{border:1px solid #FFC107;background:#ffc1071a;color:#5a4400;padding:16px;border-radius:8px;margin-bottom:1rem;font-size:.95rem;line-height:1.4}@media (prefers-color-scheme: dark){.warn-banner{color:#ffd766;background:#ffc1071f}}.ocr{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.ocr-button{align-self:flex-start;padding:.4rem .85rem;min-height:36px;font-size:.85rem;font-weight:600}.ocr-button:disabled{opacity:.6;cursor:not-allowed}.ocr-status{display:inline-flex;align-items:center;gap:.5rem;color:var(--muted);font-size:.85rem;margin-top:.25rem}.ocr-spinner{display:inline-block;width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ocr-spin .8s linear infinite}@keyframes ocr-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.ocr-spinner{animation:none}}.ocr-chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.ocr-chip{display:inline-flex;align-items:center;min-height:36px;padding:.4rem .9rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem;font-weight:600;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;cursor:pointer;transition:background .12s ease,transform .05s ease}.ocr-chip:hover{background:var(--border)}.ocr-chip:active{transform:translateY(1px);background:var(--accent);border-color:var(--accent);color:#fff}.ocr-none{display:inline-flex;align-items:center;min-height:36px;padding:.4rem .6rem;font:inherit;font-size:.85rem;color:var(--muted);background:transparent;border:0;cursor:pointer;text-decoration:underline}.tech-detail{margin:.5rem 0 1rem;font-size:.85rem}.tech-detail summary{cursor:pointer;color:var(--muted, #888)}.tech-detail__pre{margin-top:.5rem;padding:.5rem;background:#0000000d;border-radius:4px;white-space:pre-wrap;word-break:break-all;font-size:.8rem}@media (prefers-color-scheme: dark){.tech-detail__pre{background:#ffffff0f}}
