:root{--bg:#0f172a;--surface:#1e293b;--surface-2:#334155;--text:#f1f5f9;--muted:#94a3b8;--accent:#38bdf8;--amber:#f59e0b;--green:#22c55e;--slate:#64748b}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}.page{max-width:640px;margin:0 auto;padding:24px 16px 104px;min-height:100dvh}.header h1{margin:0;font-size:1.6rem}.header-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.logout{border:1px solid var(--surface-2);background:var(--surface);color:var(--muted);border-radius:8px;padding:6px 12px;font-size:.85rem;cursor:pointer}.logout:hover{color:var(--text)}.user-email{margin:-12px 0 20px;color:var(--slate);font-size:.8rem}.subtitle{margin:4px 0 20px;color:var(--muted);font-size:.95rem}.login-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--surface-2);border-radius:16px;padding:32px 24px;text-align:center}.login-card h1{margin:0 0 4px;font-size:1.6rem}.login-button{display:flex;justify-content:center;margin-top:24px}.scan-button{width:100%;padding:16px;font-size:1rem;font-weight:600;color:#041016;background:var(--accent);border:none;border-radius:14px;cursor:pointer}.scan-button.secondary{margin-top:12px;color:var(--text);background:var(--surface-2)}.fab{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom, 0px));width:60px;height:60px;border-radius:50%;background:var(--accent);color:#041016;border:none;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 26px rgba(2,8,20,.5);cursor:pointer;z-index:50}.fab:active{transform:scale(.94)}.fab svg{width:28px;height:28px}.scanner-overlay{position:fixed;inset:0;background:rgba(2,6,16,.88);display:flex;align-items:center;justify-content:center;padding:16px;z-index:100}.scanner-modal{width:100%;max-width:440px}.scanner-frame{overflow:hidden;border-radius:16px;background:#000}.hint{color:var(--muted)}.error,.hint{text-align:center}.error{color:#f87171}.list-section{margin-top:28px}.empty{color:var(--muted);text-align:center;padding:32px 0}.nfce-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.nfce-card{background:var(--surface);border:1px solid var(--surface-2);border-radius:14px;padding:14px 16px}.nfce-card-head{display:flex;align-items:center;justify-content:space-between}.badge{font-size:.75rem;font-weight:600;padding:4px 10px;border-radius:999px}.badge-waiting_processing{background:rgba(100,116,139,.25);color:#cbd5e1}.badge-processing{background:rgba(245,158,11,.18);color:var(--amber)}.badge-processed{background:rgba(34,197,94,.18);color:var(--green)}.badge-failed{background:rgba(239,68,68,.18);color:#f87171}.nfce-key{margin:12px 0 0;color:var(--muted);font-size:.85rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.nfce-info{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px 16px;gap:10px 16px;margin:14px 0 0}.nfce-info>div:first-child{grid-column:1/-1}.nfce-info dt{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.nfce-info dd{margin:2px 0 0;font-size:.98rem}.nfce-info .total{font-weight:700;color:var(--green)}.spinner{width:16px;height:16px;border:2px solid var(--surface-2);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}.chevron{color:var(--muted);font-size:1.4rem;line-height:1}.nfce-card-link{display:block;color:inherit;text-decoration:none}.back-link{display:inline-block;margin-bottom:16px;color:var(--accent);text-decoration:none;font-weight:600}.detail-header{margin-bottom:8px}.detail-header h1{margin:10px 0 4px;font-size:1.4rem}.total-hero{margin:0;font-size:1.8rem;font-weight:700;color:var(--green)}.detail-section{margin-top:24px;background:var(--surface);border:1px solid var(--surface-2);border-radius:14px;padding:16px}.detail-section h2{margin:0 0 12px;font-size:.95rem;color:var(--accent)}.field-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px 16px;gap:12px 16px;margin:0}.field-grid .field-full{grid-column:1/-1}.field-grid dt{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.field-grid dd{margin:2px 0 0;font-size:.95rem;word-break:break-word}.field-grid dd.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem}.muted{color:var(--muted);margin:0}.product-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.product-item{border-bottom:1px solid var(--surface-2);padding-bottom:12px}.product-item:last-child{border-bottom:none;padding-bottom:0}.product-main{display:flex;justify-content:space-between;gap:12px}.product-desc{font-size:.95rem}.product-value{font-weight:600;white-space:nowrap}.product-meta{margin-top:4px;font-size:.78rem;color:var(--muted)}@keyframes spin{to{transform:rotate(1turn)}}.skeleton-line{height:12px;border-radius:6px;margin-top:12px;background:linear-gradient(90deg,var(--surface-2) 25%,#3f4d63 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}.skeleton-line.short{width:40%;margin-top:0}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}