.keyring-scanner-module{--kr-accent: var(--color-primary, #2680c2);--kr-on-accent: var(--color-primary-contrast, #fff);max-width:480px;margin:0 auto;padding:12px;font-family:var(--font-body, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);color:var(--color-text, #1f2933)}.kr-app{display:flex;flex-direction:column;gap:14px}.kr-heading{margin:0;font-size:1.35rem;text-align:center}.kr-header{display:flex;justify-content:space-between;align-items:center;gap:8px;background:var(--color-primary, #102a43);color:var(--color-primary-contrast, #fff);border-radius:var(--radius-md, 10px);padding:10px 14px;flex-wrap:wrap}.kr-header-location{display:flex;flex-direction:column;gap:4px}.kr-header-name{font-weight:700;font-size:1.05rem}.kr-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.kr-header-staff{font-size:.8rem;opacity:.85}.kr-panel{background:var(--color-bg, #fff);border:1px solid var(--color-border, #d9e2ec);border-radius:var(--radius-lg, 12px);padding:18px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow-sm, 0 1px 3px rgba(16, 42, 67, .08))}.kr-panel-title{margin:0;font-size:1.1rem}.kr-muted{color:var(--color-text-muted, #627d98);font-size:.9rem;margin:0}.kr-label{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary, #486581)}.kr-back{background:none;border:none;color:var(--kr-accent);font-size:.9rem;padding:0;cursor:pointer;text-align:left;align-self:flex-start}.kr-btn{border:none;border-radius:var(--radius, 8px);padding:12px 18px;font-size:1rem;font-weight:600;cursor:pointer;transition:opacity .15s}.kr-btn:disabled{opacity:.45;cursor:not-allowed}.kr-btn-primary{background:var(--kr-accent);color:var(--kr-on-accent)}.kr-btn-secondary{background:#e1effa;color:#14548c}.kr-btn-ghost{background:transparent;color:var(--color-text-secondary, #486581);border:1px solid var(--color-border, #bcccdc)}.kr-btn-block{width:100%}.kr-btn-tiny{padding:5px 10px;font-size:.75rem;background:#ffffff26;color:inherit}.kr-input{width:100%;box-sizing:border-box;border:1px solid var(--color-border, #bcccdc);border-radius:var(--radius, 8px);padding:12px;font-size:1rem;background:var(--color-bg, #fff);color:var(--color-text, #1f2933)}.kr-input:focus{outline:2px solid var(--kr-accent);border-color:var(--kr-accent)}select.kr-input{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.kr-scan{display:flex;flex-direction:column;gap:14px}.kr-scan-explanation{color:var(--color-text-secondary, #486581);font-size:.95rem;text-align:center}.kr-scan-explanation p{margin:0}.kr-scan-camera{display:flex;flex-direction:column;gap:10px;align-items:center}.kr-scan-reader{width:100%;max-width:520px;margin:0 auto;border-radius:var(--radius-lg, 12px);overflow:hidden}.kr-scan-reader video{border-radius:var(--radius-lg, 12px)}.kr-scan-camera-buttons{display:flex;gap:8px}.kr-scan-manual{display:flex;flex-direction:column;gap:6px}.kr-scan-manual-row{display:flex;gap:8px}.kr-scan-manual-row .kr-input{flex:1}.kr-chip{display:inline-block;border-radius:var(--radius-full, 999px);padding:2px 10px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.kr-chip-green{background:#e3f9e5;color:#207227}.kr-chip-gray{background:#e4e7eb;color:#52606d}.kr-chip-red{background:#ffe3e3;color:#ab091e}.kr-chip-amber{background:#fff3c4;color:#8d6708}.kr-chip-cap{background:#fff3;color:inherit;font-weight:600}.kr-panel .kr-chip-cap,.kr-location-item .kr-chip-cap{background:#e1effa;color:#14548c}.kr-cap-chips{display:inline-flex;gap:4px;flex-wrap:wrap}.kr-location-list{display:flex;flex-direction:column;gap:8px}.kr-location-item{display:flex;flex-direction:column;gap:6px;text-align:left;background:var(--color-bg-secondary, #f5f7fa);border:1px solid var(--color-border, #d9e2ec);border-radius:var(--radius-md, 10px);padding:12px 14px;cursor:pointer;font-size:1rem;color:inherit}.kr-location-item:hover{border-color:var(--kr-accent)}.kr-location-name{font-weight:700}.kr-location-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.kr-incentive-head{display:flex;align-items:center;gap:12px}.kr-incentive-icon{font-size:2rem}.kr-incentive-head .kr-chip{margin-left:auto}.kr-incentive-code{font-family:var(--font-mono, ui-monospace, Menlo, Consolas, monospace);color:var(--color-text-secondary, #486581);letter-spacing:.06em}.kr-value-display{font-size:2.2rem;font-weight:800;text-align:center;color:var(--color-text, #102a43);display:flex;flex-direction:column;gap:2px}.kr-value-label{font-size:.85rem;font-weight:500;color:var(--color-text-muted, #627d98)}.kr-action-block{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--color-border-light, #e4e7eb);padding-top:12px}.kr-remaining{margin:0;font-size:.9rem;color:var(--color-success, #207227)}.kr-remaining-over{color:var(--color-danger, #ab091e)}.kr-product{display:flex;gap:12px;align-items:center}.kr-product-img{width:72px;height:72px;object-fit:cover;border-radius:var(--radius, 8px)}.kr-product-name{font-weight:700;font-size:1.05rem}.kr-identity-head{display:flex;align-items:center;gap:12px}.kr-identity-avatar{width:48px;height:48px;border-radius:50%;background:var(--kr-accent);color:var(--kr-on-accent);display:flex;align-items:center;justify-content:center;font-size:1.3rem;font-weight:700;flex-shrink:0}.kr-membership-list{display:flex;flex-direction:column;gap:8px}.kr-membership-card{display:flex;justify-content:space-between;align-items:center;gap:8px;background:var(--color-bg-secondary, #f5f7fa);border-left:4px solid var(--kr-accent);border-radius:var(--radius, 8px);padding:10px 14px}.kr-membership-program{font-weight:700}.kr-membership-balance{color:var(--kr-accent);font-weight:600}.kr-wallet-item{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;background:var(--color-bg-secondary, #f5f7fa);border:1px solid var(--color-border, #d9e2ec);border-radius:var(--radius, 8px);padding:10px 12px;cursor:pointer;font-size:.95rem;color:inherit;font-family:var(--font-mono, ui-monospace, Menlo, Consolas, monospace)}.kr-wallet-item:hover{border-color:var(--kr-accent)}.kr-wallet-item-value{display:flex;align-items:center;gap:6px;font-family:inherit}.kr-result{text-align:center;align-items:center}.kr-result-badge{font-size:1.5rem;font-weight:800;color:#207227;background:#e3f9e5;border-radius:var(--radius-md, 10px);padding:14px 24px}.kr-result-voided{color:#8d6708;background:#fff3c4}.kr-result-detail{margin:0;color:var(--color-text-secondary, #334e68)}.kr-result-actions{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap;justify-content:center}.kr-alert{border-radius:var(--radius, 8px);padding:12px 14px;font-size:.95rem}.kr-alert-error{background:#ffe3e3;color:#ab091e}.kr-busy{text-align:center;color:var(--color-text-muted, #627d98);padding:8px}.kr-handoff-notice{background:#e1effa;color:#14548c;border-radius:var(--radius, 8px);padding:10px 14px;font-size:.9rem;text-align:center}.kr-editor-preview{border:2px dashed var(--color-border, #bcccdc);border-radius:var(--radius-lg, 12px);padding:20px;background:var(--color-bg-secondary, #f5f7fa)}.kr-editor-badge{display:inline-block;background:var(--color-primary, #102a43);color:var(--color-primary-contrast, #fff);border-radius:var(--radius-sm, 6px);padding:4px 10px;font-size:.75rem;font-weight:700;letter-spacing:.04em;margin-bottom:8px;align-self:flex-start}.kr-editor-preview h3{margin:6px 0}.kr-editor-preview ul{margin:8px 0;padding-left:20px}.kr-editor-preview li{margin:4px 0}@media (prefers-color-scheme: dark){.keyring-scanner-module{--color-bg: #111827;--color-bg-secondary: #1f2937;--color-text: #f3f4f6;--color-text-secondary: #d1d5db;--color-text-muted: #9ca3af;--color-border: #374151;--color-border-light: #1f2937;color:#f3f4f6}.kr-chip-green{background:#052e16;color:#86efac}.kr-chip-gray{background:#1f2937;color:#d1d5db}.kr-chip-red{background:#2a0a0a;color:#fca5a5}.kr-chip-amber{background:#2a1800;color:#fcd34d}.kr-chip-cap,.kr-panel .kr-chip-cap,.kr-location-item .kr-chip-cap,.kr-btn-secondary{background:#0c1a33;color:#93c5fd}.kr-alert-error{background:#2a0a0a;color:#fca5a5}.kr-alert-info,.kr-handoff-notice{background:#0c1a33;color:#93c5fd}.kr-result-voided{background:#2a1800;color:#fcd34d}}.kr-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.kr-field{display:flex;flex-direction:column;gap:4px}.kr-field-wide{grid-column:1 / -1}@media (max-width: 560px){.kr-form-grid{grid-template-columns:1fr}}.kr-matches{display:flex;flex-direction:column;gap:8px}.kr-match-item{display:flex;flex-direction:column;gap:2px;text-align:left;background:var(--color-bg-secondary, #f5f7fa);border:1px solid var(--color-border, #d9e2ec);border-radius:var(--radius-md, 10px);padding:10px 14px;cursor:pointer;color:inherit}.kr-match-item:hover{border-color:var(--kr-accent)}.kr-match-name{font-weight:700}.kr-match-meta{font-size:.85rem;color:var(--color-text-muted, #627d98)}.kr-match-banner{display:flex;flex-direction:column;gap:6px;background:#e1effa;color:#14548c;border-radius:var(--radius-md, 10px);padding:10px 14px;font-size:.95rem}.kr-linkbtn{background:none;border:none;padding:0;font:inherit;cursor:pointer;color:#14548c;text-decoration:underline}.kr-alert-warn{background:#fff3c4;color:#8d6708}.kr-alert-info{background:#e1effa;color:#14548c}.kr-result-status{font-size:1.15rem;font-weight:700;text-align:center}.kr-card-print{display:flex;justify-content:center}.kr-card{display:flex;flex-direction:column;align-items:center;gap:8px;background:var(--color-bg, #fff);border:1px solid var(--color-border, #d9e2ec);border-radius:var(--radius-lg, 12px);padding:18px;max-width:300px}.kr-card-name{font-weight:800;font-size:1.15rem;text-align:center}.kr-card-program{font-size:.85rem;color:var(--color-text-muted, #627d98)}.kr-card-qr{width:180px;height:180px;max-width:100%;background:#fff}@media print{body *{visibility:hidden}.kr-card-print,.kr-card-print *{visibility:visible}.kr-card-print{position:absolute;left:0;top:0;width:100%}.kr-card{border:1px solid #000}}@media (prefers-color-scheme: dark){.kr-match-banner{background:#0c1a33;color:#93c5fd}.kr-linkbtn{color:#93c5fd}.kr-alert-warn{background:#2a1800;color:#fcd34d}.kr-alert-info{background:#0c1a33;color:#93c5fd}.kr-card-name{color:#f3f4f6}}
