/* hadjikyriakos-core — promo code scanner. Theme tokens (--hk-*) with fallbacks so the same card works in wp-admin. */

.hkc-vscan { --v-ink: var(--hk-ink, #16181D); --v-ink-2: var(--hk-ink-2, #2A2E37); --v-muted: var(--hk-muted, #6B7280); --v-line: var(--hk-line, #E3E6EB); --v-surface: var(--hk-surface, #F5F6F8); --v-accent: var(--hk-accent, #F2A900); --v-accent-soft: var(--hk-accent-soft, #FFF6DD); --v-ok: var(--hk-ok, #15803D); --v-bad: var(--hk-sale, #DC2626); --v-radius: var(--hk-radius, 16px); --v-radius-sm: var(--hk-radius-md, 12px); --v-ease: var(--hk-ease-fast, 160ms cubic-bezier(.2,.7,.2,1));
  width: 100%; max-width: 640px; margin-inline: auto; color: var(--v-ink); }
.hkc-vscan__sprite { position: absolute; width: 0; height: 0; overflow: hidden; }

.hkc-vscan__card { display: grid; gap: 1.25rem; padding: clamp(1.25rem, 4vw, 2.25rem); background: #fff; border: 1px solid var(--v-line); border-radius: var(--hk-radius-xl, 24px); box-shadow: var(--hk-shadow, 0 2px 4px rgba(22,24,29,.04), 0 8px 24px rgba(22,24,29,.06)); }
.hkc-vscan__head { display: grid; gap: .4rem; }
.hkc-vscan__eyebrow { margin: 0; font-size: var(--wp--preset--font-size--xs, .8125rem); font-weight: 650; letter-spacing: .08em; text-transform: uppercase; color: var(--v-muted); }
.hkc-vscan__title { margin: 0; font-family: var(--wp--preset--font-family--display, inherit); font-size: var(--wp--preset--font-size--xl, 2rem); font-weight: 650; letter-spacing: -.02em; line-height: 1.1; }
.hkc-vscan__lead { margin: 0; max-width: 46ch; color: var(--v-ink-2); font-size: var(--wp--preset--font-size--sm, .9375rem); line-height: 1.55; }
.hkc-vscan--notice .hkc-vscan__card { justify-items: start; }

.hkc-vscan__form, .hkc-vscan__redeem { display: grid; gap: .5rem; }
.hkc-vscan__label { font-size: var(--wp--preset--font-size--sm, .9375rem); font-weight: 600; }
.hkc-vscan__optional { font-weight: 450; color: var(--v-muted); }
.hkc-vscan__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .625rem; }
@media (max-width: 480px) { .hkc-vscan__row { grid-template-columns: 1fr; } }

.hkc-vscan .hkc-vscan__input, .hkc-vscan .hkc-vscan__note {
  width: 100%; margin: 0; font: inherit; color: var(--v-ink); background: #fff; border: 1.5px solid var(--v-line); border-radius: var(--v-radius-sm);
  transition: border-color var(--v-ease), box-shadow var(--v-ease); }
.hkc-vscan .hkc-vscan__input { min-height: 60px; padding: .75rem 1rem; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: clamp(1.125rem, 3.5vw, 1.375rem); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.hkc-vscan .hkc-vscan__input::placeholder { color: #B8BDC6; letter-spacing: .08em; }
.hkc-vscan .hkc-vscan__note { min-height: 48px; padding: .7rem 1rem; font-size: 1rem; }
.hkc-vscan .hkc-vscan__input:focus, .hkc-vscan .hkc-vscan__note:focus { outline: none; border-color: var(--v-ink); box-shadow: 0 0 0 4px var(--v-accent-soft); }
.hkc-vscan .hkc-vscan__submit { min-height: 60px; min-width: 128px; padding-inline: 1.75rem; font-size: 1rem; }
.hkc-vscan .hkc-vscan__confirm { min-height: 52px; width: 100%; font-size: 1rem; }
.hkc-vscan .hkc-vscan__again { justify-self: start; }
.hkc-vscan button:focus-visible, .hkc-vscan a:focus-visible { outline: 3px solid var(--v-ink); outline-offset: 3px; }
.hkc-vscan[data-busy] button[type="submit"] { opacity: .6; cursor: progress; }

.hkc-vscan__status { margin: -.5rem 0 0; min-height: 1.4em; font-size: var(--wp--preset--font-size--sm, .9375rem); color: var(--v-muted); }
.hkc-vscan__status:empty { margin-top: -1.25rem; }

.hkc-vscan__result { --state: var(--v-muted); --state-bg: var(--v-surface); display: grid; gap: 1rem; padding: 1.25rem; border-radius: var(--v-radius); background: var(--state-bg); border: 1.5px solid color-mix(in srgb, var(--state) 35%, transparent); animation: hkc-vscan-in .22s cubic-bezier(.2,.7,.2,1); }
.hkc-vscan__result[hidden] { display: none; }
.hkc-vscan__result[data-state="active"] { --state: var(--v-ok); --state-bg: #F0FAF3; }
.hkc-vscan__result[data-state="done"], .hkc-vscan__result[data-state="redeemed"] { --state: var(--v-ink); --state-bg: var(--v-surface); }
.hkc-vscan__result[data-state="done"] { --state: var(--v-ok); --state-bg: #F0FAF3; }
.hkc-vscan__result[data-state="expired"] { --state: #B45309; --state-bg: #FFFBEB; }
.hkc-vscan__result[data-state="not_found"], .hkc-vscan__result[data-state="disabled"], .hkc-vscan__result[data-state="error"] { --state: var(--v-bad); --state-bg: #FEF2F2; }
@keyframes hkc-vscan-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .hkc-vscan__result { animation: none; } }

.hkc-vscan__verdict { display: flex; align-items: center; gap: .75rem; }
.hkc-vscan__icon { display: grid; place-items: center; flex: none; width: 44px; height: 44px; border-radius: 50%; background: var(--state); color: #fff; }
.hkc-vscan__icon svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
.hkc-vscan__headline { margin: 0; font-size: var(--wp--preset--font-size--md, 1.0625rem); font-weight: 650; line-height: 1.35; color: var(--v-ink); }
.hkc-vscan__headline:focus, .hkc-vscan__headline:focus-visible { outline: none; } /* programmatic focus target only */

.hkc-vscan__details { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: .5rem 1.25rem; margin: 0; padding: 1rem 1.125rem; background: #fff; border-radius: var(--v-radius-sm); font-size: var(--wp--preset--font-size--sm, .9375rem); }
.hkc-vscan__details:empty { display: none; }
.hkc-vscan__details dt { color: var(--v-muted); font-weight: 500; }
.hkc-vscan__details dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.hkc-vscan__details .hkc-vscan__code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: .04em; }
.hkc-vscan__details .hkc-vscan__warn { color: #B45309; }
@media (max-width: 420px) { .hkc-vscan__details { grid-template-columns: 1fr; gap: .15rem; } .hkc-vscan__details dd { margin-bottom: .5rem; } }

.hkc-vscan__redeem { padding-top: .25rem; }
.hkc-vscan__redeem[hidden] { display: none; }

.hkc-vscan__who { margin: 1rem 0 0; text-align: center; font-size: var(--wp--preset--font-size--xs, .8125rem); color: var(--v-muted); }
.hkc-vscan__who a { color: var(--v-ink); font-weight: 600; }

/* wp-admin */
.hkc-vscan--admin { margin: 1.5rem 0 0; }
.hkc-vscan--admin .hkc-vscan__title { font-size: 1.5rem; }
.hkc-vscan--admin .hkc-vscan__submit.button-hero, .hkc-vscan--admin .hkc-vscan__confirm.button-hero { display: inline-flex; align-items: center; justify-content: center; line-height: 1; }

/* The theme's .hk-prose heading rhythm would otherwise push the card headings apart. */
.hkc-vscan .hkc-vscan__title, .hkc-vscan .hkc-vscan__headline { margin-block: 0; }
