/* Identity verification — the wizard at /verify and the profile Verification
   pane. Translated from the KYC design reference; every value is a
   measurement from that reference, not a suggestion. The classes mirror the
   design's component set verbatim; rules the design leaves implicit (screen
   margins, responsive collapse, app-only widgets) live in the addendum at
   the bottom. */

/* Text and list defaults inside the flow. One class of specificity: enough
   to beat the framework's element rules, low enough that every class rule
   below overrides them. */
.kyc-root :where(p, ul, ol),
.kyc-pane :where(p, ul, ol) {
    margin: 0;
    padding: 0;
    list-style: none;
}

:root {
    /* surfaces */
    --kyc-page: linear-gradient(340deg, #f3f6fb 0%, #f0f2fa 100%);
    --kyc-surface: #fff;
    --kyc-tint: #f0f3fa; /* neutral fill: icon tiles, page proxy, hover */
    --kyc-tint-blue: #f0f6ff; /* selected row / current rail stage */
    --kyc-tint-soft: #f8fbff; /* filled upload slot, done checklist cell */
    --kyc-tint-grey: #f8fafd; /* signed-message block */
    --kyc-scan-done: #f6f9ff; /* completed scan row */

    /* lines */
    --kyc-border: #e4e5ea;
    --kyc-border-soft: #dbe7f8; /* border of a completed cell */
    --kyc-dash: #b9cbe6; /* dashed upload borders + row hover border */
    --kyc-hairline: #f0f3fa;
    --kyc-rail-line: #eceff5; /* sidebar group separators */
    --kyc-track: #e9edf6; /* progress bar track */

    /* ink */
    --kyc-ink: #1a2029;
    --kyc-ink-72: rgba(26, 32, 41, 0.72);
    --kyc-ink-64: rgba(26, 32, 41, 0.64);
    --kyc-ink-60: rgba(26, 32, 41, 0.6);
    --kyc-ink-56: rgba(26, 32, 41, 0.56);
    --kyc-ink-55: rgba(26, 32, 41, 0.55);
    --kyc-ink-50: rgba(26, 32, 41, 0.5);
    --kyc-ink-48: rgba(26, 32, 41, 0.48);
    --kyc-ink-45: rgba(26, 32, 41, 0.45);
    --kyc-ink-40: rgba(26, 32, 41, 0.4);
    --kyc-ink-35: rgba(26, 32, 41, 0.35);
    --kyc-nav: #3c4658; /* sidebar nav label */

    /* brand */
    --kyc-blue: #006ef2;
    --kyc-blue-deep: #01469c; /* small-pill label, file glyph */
    --kyc-purple: #763be9;
    --kyc-grad: linear-gradient(90deg, #006ef2 0%, #763be9 100%);
    --kyc-grad-mark: linear-gradient(135deg, #006ef2, #763be9);
    --kyc-grad-hero: linear-gradient(90deg, #0553c8 0%, #3b53ee 55%, #763be9 100%);
    --kyc-disabled: #c8d2e2;

    /* semantic */
    --kyc-green: #16a34a; /* icons */
    --kyc-green-text: #15803d; /* text */
    --kyc-red: #dc2626;
    --kyc-amber-text: #b45309;
    --kyc-radio-off: #cfd6e2;

    /* type */
    --kyc-display: "Usual", "Hanken Grotesk", system-ui, sans-serif;
    --kyc-body: "Lato", system-ui, sans-serif;
}

/* ---- Shell ---- */

.kyc-root {
    min-height: 100vh;
    background: var(--kyc-page);
    font-family: var(--kyc-display);
    color: var(--kyc-ink);
    display: flex;
    align-items: flex-start;
}

/* left rail */
.kyc-rail {
    flex: none;
    width: 296px;
    box-sizing: border-box;
    height: 100vh;
    position: sticky;
    top: 0;
    display: flex;
    flex-direction: column;
    padding: 24px 22px;
    background: var(--kyc-surface);
    border-inline-end: 1px solid var(--kyc-border);
}

.kyc-logo {
    display: flex;
    align-items: center;
    gap: 10px;
}

.kyc-logo__mark {
    flex: none;
    width: 26px;
    height: 26px;
    border-radius: 7px;
    background: var(--kyc-ink);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--kyc-body);
    font-size: 13px;
    font-weight: 900;
}

.kyc-logo__word {
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0.05em;
}

.kyc-rail__eyebrow {
    margin-top: 30px;
    font-family: var(--kyc-body);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--kyc-blue);
}

.kyc-stages {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 14px;
}

.kyc-rail__foot {
    margin-top: auto;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* content column */
.kyc-main {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.kyc-bar {
    height: 3px;
    background: var(--kyc-track);
}

.kyc-bar__fill {
    height: 3px;
    background: var(--kyc-grad);
    transition: width 0.3s ease;
}

.kyc-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 18px 40px 0;
}

.kyc-step {
    font-family: var(--kyc-body);
    font-size: 12.5px;
    font-weight: 700;
    color: var(--kyc-ink-50);
}

.kyc-body {
    flex: 1;
    display: flex;
    justify-content: center;
    padding: 44px 40px 160px;
}

.kyc-col {
    width: 100%;
    max-width: 560px;
    min-width: 0;
}

/* rail stage row */
.kyc-stage {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 11px 12px;
    border-radius: 11px;
    background: transparent;
}

.kyc-stage.is-current {
    background: var(--kyc-tint-blue);
}

.kyc-stage__num {
    flex: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--kyc-body);
    font-size: 12px;
    font-weight: 900;
    background: var(--kyc-tint);
    color: var(--kyc-ink-40);
}

.kyc-stage.is-current .kyc-stage__num {
    background: #fff;
    color: var(--kyc-blue);
    border: 1.5px solid var(--kyc-blue);
}

.kyc-stage.is-done .kyc-stage__num {
    background: var(--kyc-blue);
    color: #fff;
}

.kyc-stage__text {
    flex: 1;
    min-width: 0;
}

.kyc-stage__label {
    font-family: var(--kyc-body);
    font-size: 14px;
    font-weight: 700;
    color: var(--kyc-ink-55);
}

.kyc-stage.is-current .kyc-stage__label {
    color: var(--kyc-blue);
}

.kyc-stage.is-done .kyc-stage__label {
    color: var(--kyc-ink);
}

.kyc-stage__sub {
    margin-top: 2px;
    font-family: var(--kyc-body);
    font-size: 11.5px;
    color: var(--kyc-ink-48);
}

/* ---- Typography inside the column ---- */

.kyc-eyebrow {
    font-family: var(--kyc-body);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--kyc-blue);
}

.kyc-h1 {
    margin: 12px 0 0;
    font-size: 32px;
    font-weight: 700;
    line-height: 1.14;
    text-wrap: pretty;
}

.kyc-h1--result {
    font-size: 30px;
}

.kyc-h1--done {
    font-size: 34px;
}

.kyc-lede {
    margin-top: 12px;
    font-family: var(--kyc-body);
    font-size: 14.5px;
    line-height: 1.65;
    color: var(--kyc-ink-64);
    text-wrap: pretty;
}

.kyc-note {
    margin-top: 7px;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    color: var(--kyc-ink-56);
}

/* ---- Buttons ---- */

/* primary — full-width gradient pill with an arrow circle */
.kyc-btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    width: 100%;
    box-sizing: border-box;
    margin-top: 24px;
    border: none;
    border-radius: 999px;
    padding: 6px 6px 6px 26px;
    background: var(--kyc-grad);
    color: #fff;
    cursor: pointer;
}

.kyc-btn:hover {
    filter: brightness(1.06);
}

.kyc-btn[disabled] {
    background: var(--kyc-disabled);
    cursor: not-allowed;
    filter: none;
}

.kyc-btn__label {
    font-family: var(--kyc-body);
    font-size: 15px;
    font-weight: 700;
}

.kyc-btn__arrow {
    flex: none;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.25);
    display: flex;
    align-items: center;
    justify-content: center;
}

/* secondary — outline pill, always directly under a primary */
.kyc-btn--ghost {
    justify-content: center;
    margin-top: 10px;
    padding: 14px 26px;
    background: var(--kyc-surface);
    color: var(--kyc-ink);
    border: 1px solid var(--kyc-border);
    font-family: var(--kyc-body);
    font-size: 14.5px;
    font-weight: 700;
}

.kyc-btn--ghost:hover {
    background: var(--kyc-tint);
    filter: none;
}

/* small pill — Replace, chips in cards */
.kyc-btn--sm {
    width: auto;
    flex: none;
    margin: 0;
    padding: 8px 16px;
    background: var(--kyc-surface);
    color: var(--kyc-blue-deep);
    border: 1px solid var(--kyc-border);
    font-family: var(--kyc-body);
    font-size: 13px;
    font-weight: 700;
}

.kyc-btn--sm:hover {
    background: var(--kyc-tint);
    filter: none;
}

/* back pill, top bar */
.kyc-back {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 9px 16px;
    border: 1px solid var(--kyc-border);
    border-radius: 999px;
    background: var(--kyc-surface);
    color: var(--kyc-ink);
    cursor: pointer;
    font-family: var(--kyc-body);
    font-size: 13.5px;
    font-weight: 700;
}

.kyc-back:hover {
    background: var(--kyc-tint);
}

/* quiet text action, rail foot */
.kyc-link-btn {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 2px;
    border: none;
    background: none;
    cursor: pointer;
    font-family: var(--kyc-body);
    font-size: 13.5px;
    font-weight: 700;
    color: var(--kyc-nav);
}

.kyc-link-btn:hover {
    color: var(--kyc-blue);
}

/* ---- Fields ---- */

.kyc-label {
    display: block;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    font-weight: 700;
}

.kyc-input {
    width: 100%;
    box-sizing: border-box;
    margin-top: 8px;
    padding: 14px 15px;
    border: 1px solid var(--kyc-border);
    border-radius: 12px;
    background: var(--kyc-surface);
    color: var(--kyc-ink);
    font-family: var(--kyc-body);
    font-size: 15px;
    outline: none;
}

.kyc-input:focus {
    border-color: var(--kyc-blue);
}

.kyc-input--date {
    padding: 13px 15px;
}

.kyc-select {
    appearance: none;
    -webkit-appearance: none;
    cursor: pointer;
    padding: 14px 44px 14px 15px; /* 44px right gutter holds the chevron */
}

.kyc-field-row {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 20px;
}

.kyc-field-row > * {
    flex: 1 1 200px;
    min-width: 180px;
}

.kyc-check {
    display: flex;
    align-items: center;
    gap: 9px;
    margin-top: 16px;
    border: none;
    background: none;
    padding: 0;
    cursor: pointer;
    font-family: var(--kyc-body);
    font-size: 13.5px;
    font-weight: 700;
    color: var(--kyc-blue);
}

.kyc-check__box {
    flex: none;
    width: 19px;
    height: 19px;
    border-radius: 5px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    border: 1.5px solid var(--kyc-radio-off);
}

.kyc-check.is-on .kyc-check__box {
    background: var(--kyc-blue);
    border: 1px solid var(--kyc-blue);
    /* 12px white check, stroke 3 */
}

/* ---- Option rows (single-select radio card) ---- */

.kyc-opt {
    display: flex;
    align-items: center;
    gap: 14px;
    width: 100%;
    box-sizing: border-box;
    padding: 15px 16px;
    border: 1px solid var(--kyc-border);
    border-radius: 12px;
    background: var(--kyc-surface);
    cursor: pointer;
    text-align: start;
    transition:
        border-color 0.12s,
        background 0.12s;
}

.kyc-opt:hover {
    border-color: var(--kyc-dash);
}

.kyc-opt.is-selected {
    border-color: var(--kyc-blue);
    background: var(--kyc-tint-blue);
}

.kyc-opt__radio {
    flex: none;
    width: 19px;
    height: 19px;
    border-radius: 50%;
    box-sizing: border-box;
    background: #fff;
    border: 1.5px solid var(--kyc-radio-off);
}

.kyc-opt.is-selected .kyc-opt__radio {
    border: 6px solid var(--kyc-blue); /* thick border = the dot */
}

.kyc-opt__text {
    flex: 1;
    min-width: 0;
}

.kyc-opt__label {
    display: block;
    font-family: var(--kyc-body);
    font-size: 14.5px;
    font-weight: 700;
    color: var(--kyc-ink);
}

.kyc-opt__note {
    display: block;
    margin-top: 2px;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    color: var(--kyc-ink-55);
}

.kyc-opts {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 24px;
}

/* ---- Cards ---- */

/* page-level card (profile tab panels) */
.kyc-card {
    background: var(--kyc-surface);
    border: 1px solid var(--kyc-border);
    border-radius: 16px;
    padding: 24px;
}

/* card inside the 560px column */
.kyc-panel {
    background: var(--kyc-surface);
    border: 1px solid var(--kyc-border);
    border-radius: 14px;
    padding: 16px;
}

.kyc-panel--list {
    padding: 6px; /* rows supply their own padding: 13px 14px */
}

.kyc-panel--scan {
    padding: 10px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.kyc-panel__eyebrow {
    font-family: var(--kyc-body);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: var(--kyc-ink-50);
}

.kyc-hair {
    height: 1px;
    background: var(--kyc-hairline);
}

/* intro row: icon tile + text + time badge */
.kyc-row {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px;
    border: 1px solid var(--kyc-border);
    border-radius: 12px;
    background: var(--kyc-surface);
}

.kyc-tile {
    flex: none;
    width: 38px;
    height: 38px;
    border-radius: 9px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 110, 242, 0.1);
    color: var(--kyc-blue); /* 18px svg, stroke 1.9 */
}

.kyc-tile--purple {
    background: rgba(118, 59, 233, 0.12);
    color: var(--kyc-purple);
}

.kyc-row__text {
    flex: 1;
    min-width: 0;
}

.kyc-row__title {
    font-family: var(--kyc-body);
    font-size: 14.5px;
    font-weight: 700;
}

.kyc-row__note {
    margin-top: 2px;
    font-family: var(--kyc-body);
    font-size: 13px;
    color: var(--kyc-ink-56);
}

.kyc-row__meta {
    flex: none;
    font-family: var(--kyc-body);
    font-size: 12px;
    font-weight: 700;
    color: var(--kyc-blue); /* purple on the optional row */
}

.kyc-row__meta--purple {
    color: var(--kyc-purple);
}

/* key/value row (ID matched, rejection reasons) */
.kyc-kv {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 13px 14px;
}

.kyc-kv__key {
    flex: 1;
    min-width: 0;
    font-family: var(--kyc-body);
    font-size: 13px;
    color: var(--kyc-ink-60); /* 13.5px + ink-72 in the rejection card */
}

.kyc-kv__val {
    flex: none;
    white-space: nowrap;
    display: flex;
    align-items: center;
    gap: 8px;
    font-family: var(--kyc-body);
    font-size: 13.5px;
    font-weight: 700;
}

.kyc-kv__val--pass {
    font-size: 12.5px;
    color: var(--kyc-green-text);
}

.kyc-kv__val--fail {
    font-size: 12.5px;
    color: var(--kyc-red);
}

.kyc-kv__val--review {
    font-size: 12.5px;
    color: var(--kyc-ink-55);
}

/* ---- Upload components ---- */

/* ID slot, empty */
.kyc-slot {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px;
    cursor: pointer;
    border: 1.5px dashed var(--kyc-dash);
    border-radius: 13px;
    background: var(--kyc-surface);
    transition: border-color 0.12s;
}

.kyc-slot:hover {
    border-color: var(--kyc-blue);
}

.kyc-slot__tile {
    flex: none;
    width: 42px;
    height: 42px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--kyc-tint);
    color: var(--kyc-ink-45); /* 20px svg, stroke 1.8 */
}

.kyc-slot__action {
    flex: none;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    font-weight: 700;
    color: var(--kyc-blue);
}

/* ID slot, filled — solid blue border, soft fill, tinted tile */
.kyc-slot.is-filled {
    border: 1px solid var(--kyc-blue);
    background: var(--kyc-tint-soft);
}

.kyc-slot.is-filled .kyc-slot__tile {
    background: rgba(0, 110, 242, 0.12);
    color: var(--kyc-blue);
}

.kyc-slot.is-filled .kyc-slot__action {
    color: var(--kyc-blue-deep);
}

/* proof-of-address drop zone */
.kyc-drop {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 34px 20px;
    margin-top: 14px;
    cursor: pointer;
    border: 1.5px dashed var(--kyc-dash);
    border-radius: 14px;
    background: var(--kyc-surface);
}

.kyc-drop:hover {
    border-color: var(--kyc-blue);
    background: var(--kyc-tint-soft);
}

.kyc-drop__tile {
    width: 46px;
    height: 46px;
    border-radius: 11px;
    background: rgba(0, 110, 242, 0.1);
    display: flex;
    align-items: center;
    justify-content: center; /* 21px svg, stroke 1.9 */
}

.kyc-drop__label {
    font-family: var(--kyc-body);
    font-size: 14.5px;
    font-weight: 700;
    color: var(--kyc-blue);
}

.kyc-drop__meta {
    font-family: var(--kyc-body);
    font-size: 12.5px;
    color: var(--kyc-ink-55);
}

/* uploaded-file header + document preview */
.kyc-file__tile {
    flex: none;
    width: 38px;
    height: 38px;
    border-radius: 9px;
    background: var(--kyc-tint);
    color: var(--kyc-blue-deep);
    display: flex;
    align-items: center;
    justify-content: center;
}

.kyc-file__name {
    font-family: var(--kyc-body);
    font-size: 14px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.kyc-file__meta {
    margin-top: 2px;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    color: var(--kyc-ink-55);
}

.kyc-preview {
    margin-top: 14px;
    padding: 18px;
    border-radius: 10px;
    background: var(--kyc-tint);
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* ---- Processing, result and status components ---- */

/* medallions — one per outcome, all border-radius: 50% */
.kyc-medal {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 78px;
    height: 78px;
    border-radius: 50%;
}

.kyc-medal--scan {
    background: rgba(0, 110, 242, 0.08);
}

.kyc-medal--ok {
    background: rgba(22, 163, 74, 0.1); /* 34px check, #16a34a, stroke 2.4 */
}

.kyc-medal--review {
    background: rgba(118, 59, 233, 0.1); /* 34px clock, #763be9, stroke 1.9 */
}

.kyc-medal--locked {
    background: rgba(26, 32, 41, 0.06); /* 32px lock, #1a2029, stroke 1.9 */
}

.kyc-medal--fail {
    width: 66px;
    height: 66px;
    background: rgba(220, 38, 38, 0.09);
}

.kyc-medal--done {
    width: 82px;
    height: 82px;
    background: var(--kyc-grad-mark);
}

.kyc-spinner {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    border: 3px solid rgba(0, 110, 242, 0.18);
    border-top-color: var(--kyc-blue);
    animation: kyc-spin 900ms linear infinite;
}

@keyframes kyc-spin {
    to {
        transform: rotate(360deg);
    }
}

@keyframes kyc-pulse {
    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0.45;
    }
}

@media (prefers-reduced-motion: reduce) {
    .kyc-spinner {
        animation: none;
    }

    .kyc-scan__num.is-active,
    .kyc-time__num.is-active {
        animation: none;
    }

    .kyc-bar__fill {
        transition: none;
    }
}

/* scan checklist row */
.kyc-scan {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    border-radius: 10px;
    background: transparent;
}

.kyc-scan.is-done {
    background: var(--kyc-scan-done);
}

.kyc-scan__num {
    flex: none;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--kyc-body);
    font-size: 11.5px;
    font-weight: 900;
    background: var(--kyc-tint);
    color: var(--kyc-ink-35);
}

.kyc-scan__num.is-active {
    background: #e6efff;
    color: var(--kyc-blue);
    animation: kyc-pulse 1.4s ease-in-out infinite;
}

.kyc-scan.is-done .kyc-scan__num {
    background: var(--kyc-blue);
    color: #fff;
}

.kyc-scan__text {
    font-family: var(--kyc-body);
    font-size: 13.5px;
    font-weight: 700;
    color: var(--kyc-ink-45);
}

.kyc-scan.is-done .kyc-scan__text,
.kyc-scan.is-active .kyc-scan__text {
    color: var(--kyc-ink);
}

/* review timeline (purple, 1.6s pulse on the active step) */
.kyc-time__num {
    flex: none;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--kyc-body);
    font-size: 12px;
    font-weight: 900;
}

.kyc-time__num.is-done {
    background: var(--kyc-blue);
    color: #fff;
}

.kyc-time__num.is-active {
    background: rgba(118, 59, 233, 0.14);
    color: var(--kyc-purple);
    animation: kyc-pulse 1.6s ease-in-out infinite;
}

.kyc-time__num.is-todo {
    background: var(--kyc-tint);
    color: var(--kyc-ink-35);
}

/* unlocked-capability grid on the verified screen */
.kyc-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 10px;
    margin-top: 26px;
}

.kyc-cell {
    padding: 16px;
    text-align: start;
    border: 1px solid var(--kyc-border);
    border-radius: 12px;
    background: var(--kyc-surface);
}

.kyc-cell__title {
    font-family: var(--kyc-body);
    font-size: 13.5px;
    font-weight: 700;
}

.kyc-cell__note {
    margin-top: 3px;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    color: var(--kyc-ink-55);
}

.kyc-cell__note--warn {
    color: var(--kyc-amber-text); /* "Needs a linked wallet" */
}

/* status pill */
.kyc-pill {
    border-radius: 999px;
    padding: 5px 11px;
    font-family: var(--kyc-body);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
}

.kyc-pill--amber {
    color: var(--kyc-amber-text);
    background: rgba(245, 158, 11, 0.14);
}

.kyc-pill--purple {
    color: var(--kyc-purple);
    background: rgba(118, 59, 233, 0.12);
}

.kyc-pill--green {
    color: var(--kyc-green-text);
    background: rgba(22, 163, 74, 0.12);
}

/* ---- Wallet screen (Phantom) ---- */

.kyc-wallet__mark {
    flex: none;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: var(--kyc-grad-mark);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--kyc-body);
    font-size: 14px;
    font-weight: 900;
}

.kyc-wallet__addr {
    margin-top: 2px;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    color: var(--kyc-ink-55);
    font-variant-numeric: tabular-nums;
}

.kyc-msg {
    margin-top: 10px;
    padding: 13px 14px;
    border-radius: 10px;
    background: var(--kyc-tint-grey);
    font-family: var(--kyc-body);
    font-size: 13px;
    line-height: 1.6;
    color: var(--kyc-ink-72);
}

/* ---- Profile → Verification tab ---- */

.kyc-status__title {
    margin-top: 12px;
    font-size: 26px;
    font-weight: 700;
    line-height: 1.15;
}

.kyc-status__body {
    margin-top: 8px;
    font-family: var(--kyc-body);
    font-size: 14px;
    line-height: 1.6;
    color: rgba(26, 32, 41, 0.62);
    max-width: 520px;
}

.kyc-start {
    flex: none;
    display: flex;
    align-items: center;
    gap: 14px;
    border: none;
    border-radius: 999px;
    padding: 6px 6px 6px 24px;
    background: var(--kyc-grad);
    color: #fff;
    cursor: pointer;
}

.kyc-start__arrow {
    width: 36px;
    height: 36px; /* 2px smaller than the in-flow CTA */
    flex: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.25);
    display: flex;
    align-items: center;
    justify-content: center;
}

/* 5-cell progress checklist */
.kyc-checks {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 10px;
    margin-top: 22px;
}

.kyc-checks__cell {
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 13px 14px;
    border: 1px solid var(--kyc-border);
    border-radius: 12px;
    background: var(--kyc-surface);
}

.kyc-checks__cell.is-done {
    border-color: var(--kyc-border-soft);
    background: var(--kyc-tint-soft);
}

.kyc-checks__num {
    flex: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--kyc-body);
    font-size: 12px;
    font-weight: 900;
    background: var(--kyc-tint);
    color: var(--kyc-ink-40);
}

.kyc-checks__cell.is-done .kyc-checks__num {
    background: var(--kyc-blue);
    color: #fff;
}

/* ================================================================
   Addendum — rules the design reference carries outside the class
   set above: text resets, screen-specific margins, app-only widgets
   and the responsive collapse.
   ================================================================ */

.kyc-pane {
    font-family: var(--kyc-display);
    color: var(--kyc-ink);
}

a.kyc-btn,
a.kyc-start,
a.kyc-btn--ghost,
a.kyc-link-btn,
a.kyc-logo {
    text-decoration: none;
}

a.kyc-link-btn {
    color: var(--kyc-nav);
}

a.kyc-link-btn:hover {
    color: var(--kyc-blue);
}

a.kyc-btn:hover,
a.kyc-start:hover {
    color: #fff;
}

/* rail: saved-progress note */
.kyc-rail__saved {
    border: 1px solid var(--kyc-border);
    border-radius: 12px;
    padding: 14px;
}

.kyc-rail__saved-title {
    font-family: var(--kyc-body);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--kyc-ink-50);
}

.kyc-rail__saved-body {
    font-family: var(--kyc-body);
    font-size: 12.5px;
    line-height: 1.55;
    color: var(--kyc-ink-60);
    margin-top: 6px;
}

/* field group: label + control + helper under it */
.kyc-field {
    margin-top: 20px;
    min-width: 0;
}

.kyc-lede + .kyc-field,
.kyc-h1 + .kyc-field,
.kyc-lede + .kyc-field-row,
.kyc-h1 + .kyc-field-row {
    margin-top: 24px;
}

.kyc-field-row .kyc-field {
    margin-top: 0;
}

.kyc-field--postal {
    flex: 1 1 160px;
    min-width: 150px;
}

.kyc-fieldset {
    border: 0;
    padding: 0;
    margin: 0;
    min-width: 0;
}

.kyc-fieldset:disabled {
    opacity: 0.5;
}

/* the country picker wears the input's look; its own chevron sits in the
   44px gutter the select reserves. The picker's own stylesheet zeroes the
   padding through nested first-child/last-child rules whose specificity a
   two-class selector cannot reach, so the padding carries !important. */
.kyc-selecthost > div {
    display: block;
    width: 100%;
}

.kyc-selecthost .form-control {
    margin-top: 8px;
    padding: 14px 44px 14px 15px !important;
    border: 1px solid var(--kyc-border);
    border-radius: 12px;
    background-color: var(--kyc-surface);
    box-shadow: none;
    min-height: 0;
    height: auto;
}

.kyc-selecthost .form-control:focus-within {
    border-color: var(--kyc-blue);
}

.kyc-selecthost .form-control button {
    padding: 0;
    border: 0;
    width: 100%;
    text-align: start;
    font-family: var(--kyc-body);
    font-size: 15px;
    color: var(--kyc-ink);
}

/* bordered info row (the address constraint) */
.kyc-infobox {
    display: flex;
    align-items: flex-start;
    gap: 11px;
    border: 1px solid var(--kyc-border);
    border-radius: 12px;
    background: var(--kyc-surface);
    padding: 14px 16px;
    margin-top: 20px;
}

.kyc-infobox svg {
    flex: none;
    margin-top: 1px;
}

.kyc-infobox__text {
    font-family: var(--kyc-body);
    font-size: 13px;
    line-height: 1.55;
    color: rgba(26, 32, 41, 0.66);
}

/* bold inline value inside a lede (the address the document must show) */
.kyc-lede strong {
    font-weight: 700;
    color: var(--kyc-ink);
}

/* accepted-documents rows inside a panel */
.kyc-panel--accept {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 20px;
}

.kyc-accept {
    display: flex;
    align-items: center;
    gap: 9px;
    font-family: var(--kyc-body);
    font-size: 13.5px;
    color: var(--kyc-ink-72);
}

.kyc-accept svg {
    flex: none;
}

.kyc-accept--no {
    color: var(--kyc-ink-50);
    margin-top: 2px;
}

/* the slot and drop zone are buttons, which neither stretch nor align
   their text to the start on their own */
.kyc-slot,
.kyc-drop {
    width: 100%;
    box-sizing: border-box;
}

.kyc-slot {
    text-align: start;
}

/* upload slot text column */
.kyc-slot__text {
    flex: 1;
    min-width: 0;
}

.kyc-slot__title {
    font-family: var(--kyc-body);
    font-size: 14.5px;
    font-weight: 700;
}

.kyc-slot__note {
    margin-top: 2px;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    color: var(--kyc-ink-55);
}

.kyc-slot.is-dragging,
.kyc-drop.is-dragging {
    border-color: var(--kyc-blue);
}

.kyc-drop.is-dragging {
    background: var(--kyc-tint-soft);
}

.kyc-file-input {
    display: none;
}

/* the real document inside the preview mat */
.kyc-preview__doc {
    width: 100%;
    height: 340px;
    border: 0;
    border-radius: 5px;
    background: var(--kyc-surface);
}

/* file header row on the preview card */
.kyc-file {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.kyc-file__lead {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.kyc-file__text {
    min-width: 0;
}

.kyc-panel--file {
    padding: 14px;
    margin-top: 20px;
}

/* terminal screens: centred block, glyph first */
.kyc-terminal {
    text-align: center;
    padding-top: 24px;
}

.kyc-terminal .kyc-h1 {
    margin-top: 22px;
}

.kyc-terminal .kyc-lede {
    margin-top: 10px;
}

.kyc-terminal .kyc-panel--scan,
.kyc-terminal .kyc-panel--list {
    margin-top: 26px;
    text-align: start;
}

.kyc-terminal .kyc-panel--list {
    margin-top: 24px;
}

/* rejection screen: left-aligned glyph, heading 20px under it */
.kyc-reject .kyc-h1 {
    margin-top: 20px;
}

/* rejection breakdown: plain rows, hairlines between */
.kyc-panel--checks {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 16px;
    margin-top: 20px;
}

.kyc-panel--checks .kyc-kv {
    padding: 0;
}

.kyc-panel--checks .kyc-kv__key {
    font-size: 13.5px;
    color: var(--kyc-ink-72);
}

/* review card on the in-review outcome */
.kyc-review {
    padding: 18px;
    margin-top: 24px;
    text-align: start;
}

.kyc-review__eyebrow {
    font-family: var(--kyc-body);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--kyc-purple);
}

.kyc-review__detail {
    font-family: var(--kyc-body);
    font-size: 14px;
    line-height: 1.6;
    color: var(--kyc-ink-72);
    margin-top: 9px;
}

.kyc-review .kyc-hair {
    margin: 16px 0;
}

.kyc-time {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.kyc-time__row {
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: var(--kyc-body);
    font-size: 13.5px;
}

.kyc-time__row.is-active {
    font-weight: 700;
}

.kyc-time__row.is-todo {
    color: var(--kyc-ink-45);
}

/* wallet card headline + connected pill fill */
.kyc-wallet__title {
    font-family: var(--kyc-body);
    font-size: 14px;
    font-weight: 700;
}

.kyc-pill--connected {
    color: var(--kyc-green-text);
    background: rgba(22, 163, 74, 0.1);
}

.kyc-wallet__row {
    display: flex;
    align-items: center;
    gap: 14px;
}

/* footnote under a button (attempt counter, wallet skip note) */
.kyc-footnote {
    font-family: var(--kyc-body);
    font-size: 12.5px;
    line-height: 1.55;
    color: var(--kyc-ink-55);
    margin-top: 12px;
}

.kyc-footnote--center {
    text-align: center;
}

.kyc-footnote a {
    color: var(--kyc-blue);
    text-decoration: none;
}

.kyc-footnote a:hover {
    color: var(--kyc-purple);
}

/* the wizard's failure line */
.kyc-error {
    margin-top: 12px;
    font-family: var(--kyc-body);
    font-size: 13px;
    color: var(--kyc-red);
}

/* long-form consent tick: the label wraps over several lines */
.kyc-check--consent {
    align-items: flex-start;
    text-align: start;
}

.kyc-check--consent .kyc-check__box {
    margin-top: 1px;
}

/* intro rows list */
.kyc-rows {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 24px;
}

/* per-screen CTA spacing the reference sets: 26px after a list of intro
   cards, a checkbox row or the capability grid, 22px after a card, 28px
   after a form field group, 20px after the reset row */
.kyc-rows + .kyc-btn,
.kyc-opts + .kyc-btn,
.kyc-check + .kyc-btn,
.kyc-grid + .kyc-btn {
    margin-top: 26px;
}

.kyc-panel + .kyc-btn,
.kyc-review + .kyc-btn {
    margin-top: 22px;
}

.kyc-terminal .kyc-panel--list + .kyc-btn {
    margin-top: 24px;
}

.kyc-field + .kyc-btn,
.kyc-field-row + .kyc-btn,
.kyc-datehost + .kyc-btn,
.kyc-infobox + .kyc-btn {
    margin-top: 28px;
}

.kyc-row + .kyc-btn {
    margin-top: 20px;
}

/* ---- Profile pane layout (two columns, collapses by wrapping) ---- */

.kyc-profile {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    align-items: flex-start;
}

.kyc-profile__main {
    flex: 3 1 620px;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.kyc-profile__side {
    flex: 1 1 300px;
    min-width: 280px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.kyc-status__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
}

.kyc-status__lead {
    min-width: 0;
    max-width: 520px;
}

.kyc-status__chips {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.kyc-checks__text {
    min-width: 0;
}

.kyc-checks__label {
    font-family: var(--kyc-body);
    font-size: 13.5px;
    font-weight: 700;
}

.kyc-checks__note {
    margin-top: 2px;
    font-family: var(--kyc-body);
    font-size: 12px;
    color: var(--kyc-ink-50);
}

.kyc-card__body {
    font-family: var(--kyc-body);
    font-size: 14px;
    line-height: 1.65;
    color: rgba(26, 32, 41, 0.68);
    margin-top: 10px;
    max-width: 760px;
}

.kyc-card--rail {
    padding: 20px;
}

.kyc-caps {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: 14px;
}

.kyc-cap {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-family: var(--kyc-body);
    font-size: 13.5px;
    line-height: 1.5;
}

.kyc-cap svg {
    flex: none;
    margin-top: 2px;
}

.kyc-cap.is-blocked {
    color: var(--kyc-ink-55);
}

.kyc-card__note {
    font-family: var(--kyc-body);
    font-size: 13.5px;
    line-height: 1.6;
    color: rgba(26, 32, 41, 0.62);
    margin-top: 10px;
}

.kyc-card__note a {
    color: var(--kyc-blue);
    text-decoration: none;
}

.kyc-card__note a:hover {
    color: var(--kyc-purple);
}

/* ---- Responsive collapse ---- */

@media (max-width: 900px) {
    .kyc-root {
        flex-direction: column;
    }

    .kyc-rail {
        width: 100%;
        height: auto;
        position: static;
        border-inline-end: 0;
        border-bottom: 1px solid var(--kyc-border);
    }

    .kyc-stages,
    .kyc-rail__foot {
        display: none;
    }

    .kyc-top,
    .kyc-body {
        padding-inline: 20px;
    }
}

/* ---- Icon colors (glyphs stroke currentColor) ---- */

.kyc-medal--ok {
    color: var(--kyc-green);
}

.kyc-medal--review {
    color: var(--kyc-purple);
}

.kyc-medal--locked {
    color: var(--kyc-ink);
}

.kyc-medal--fail {
    color: var(--kyc-red);
}

.kyc-medal--done {
    color: #fff;
}

.kyc-infobox svg {
    color: var(--kyc-blue);
}

.kyc-check__box {
    color: #fff;
}

.kyc-accept svg {
    color: var(--kyc-green);
}

.kyc-accept--no svg {
    color: var(--kyc-ink-40);
}

.kyc-kv__val svg {
    color: var(--kyc-green);
}

.kyc-cap svg {
    color: var(--kyc-green);
}

.kyc-cap.is-blocked svg {
    color: var(--kyc-ink-35);
}

.kyc-drop__tile {
    color: var(--kyc-blue);
}

/* Two-line text stacks are spans (legal inside buttons); stack them. */
.kyc-stage__label,
.kyc-stage__sub,
.kyc-slot__title,
.kyc-slot__note,
.kyc-row__title,
.kyc-row__note,
.kyc-file__name,
.kyc-file__meta,
.kyc-wallet__title,
.kyc-wallet__addr,
.kyc-checks__label,
.kyc-checks__note,
.kyc-cell__title,
.kyc-cell__note {
    display: block;
}

/* the shared date input wears the field look inside its host; its own
   stylesheet pins an 11rem width with !important, so the override needs
   the same weight */
.kyc-datehost input {
    width: 100% !important;
    box-sizing: border-box;
    margin-top: 8px;
    padding: 13px 15px;
    border: 1px solid var(--kyc-border);
    border-radius: 12px;
    background: var(--kyc-surface);
    color: var(--kyc-ink);
    font-family: var(--kyc-body);
    font-size: 15px;
    outline: none;
    height: auto;
    box-shadow: none;
}

.kyc-datehost input:focus {
    border-color: var(--kyc-blue);
}

/* rate-limit reset row */
.kyc-row--reset {
    justify-content: space-between;
    padding: 15px 16px;
    margin-top: 22px;
    text-align: start;
}

.kyc-row--reset .kyc-reset__key {
    font-family: var(--kyc-body);
    font-size: 13.5px;
    color: rgba(26, 32, 41, 0.66);
}

.kyc-row--reset .kyc-reset__val {
    font-family: var(--kyc-body);
    font-size: 13.5px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

/* wallet cards */
.kyc-panel--wallet {
    margin-top: 22px;
}

.kyc-panel--message {
    margin-top: 12px;
}

/* profile pane shell: clears the tab row by the same step the sibling
   tabs get, and holds the pane open while the record loads */
.kyc-pane {
    margin-top: 1.625rem;
    min-width: 0;
}

.kyc-pane--pending {
    min-height: 60vh;
}
