/* Identity verification — the wizard at /verify. 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. The profile's Verification
   tab draws the same record to the profile page's own design, in its own
   component sheets. */

/* 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) {
    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-blue-vivid: #3b53ee; /* the hero gradient midpoint; inactive pill hover */
    --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: var(--exc-font-display);
    --kyc-body: var(--exc-font-body);
}

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

.kyc-root {
    min-height: 100dvh;
    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: 100dvh;
}

.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;

    &.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 & {
        background: #fff;
        color: var(--kyc-blue);
        border: 1.5px solid var(--kyc-blue);
    }

    .kyc-stage.is-done & {
        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 & {
        color: var(--kyc-blue);
    }

    .kyc-stage.is-done & {
        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;

    &:hover {
        filter: brightness(1.06);
    }

    &[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;

    &: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;

    &: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;

    &: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);

    &: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;

    &: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;

    & > * {
        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 & {
        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;

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

    &.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 & {
        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 ---- */

/* 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;

    &: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);

    &: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;

    &.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);

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

    .kyc-scan.is-done & {
        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.is-active & {
        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;

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

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

    &.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);
}

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

a.kyc-btn,
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 {
    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;

    &: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;

    & 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);

    & 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-h1 {
        margin-top: 22px;
    }

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

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

    & .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-kv {
        padding: 0;
    }

    & .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;

    &.is-active {
        font-weight: 700;
    }

    &.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;

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

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

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

/* 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__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;
}

/* ---- 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-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-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-reset__key {
        font-family: var(--kyc-body);
        font-size: 13.5px;
        color: rgba(26, 32, 41, 0.66);
    }

    & .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;
}

/* ================================================================
   Virtual trading — the paper-trading mode. Translated from its design
   reference; every value is a measurement from it. The fuchsia token set
   below (`--fx-*`, the reference's own names) is the only new colour
   family in the feature: in virtual trading every blue accent becomes
   its fuchsia equivalent, and live mode keeps its exact styling apart
   from the entry banner.
   ================================================================ */

:root {
    --fx-accent: #a21caf; /* headlines, eyebrows, secondary buttons */
    --fx-violet: #763be9; /* gradient start (shared with the live palette) */
    --fx-fuchsia: #c026d3; /* gradient end, chart stroke */
    --fx-grad: linear-gradient(90deg, #763be9, #c026d3);
    --fx-panel-grad: linear-gradient(135deg, #5b2bd0 0%, #763be9 45%, #c026d3 100%);
    --fx-border: #ecdff5; /* card borders in virtual trading */
    --fx-border-soft: #ecdcf7; /* banner/chip borders */
    --fx-border-dashed: #e3d1f2; /* paused-nav notice, Sell button border */
    --fx-tint: #fbf5ff; /* banner/chip backgrounds */
    --fx-tint-pill: #f9f0fd; /* "Simulated" pill, active nav item */
    --fx-tint-track: #f3e9fb; /* pill track, position initial tile */
    --fx-hairline: #f5eefb; /* position row dividers */
    --fx-page-grad: linear-gradient(180deg, #faf4fe 0%, #fdfbff 340px, #fff 100%);
    --fx-shadow: 0 8px 24px -18px rgba(118, 59, 233, 0.3); /* virtual trading stat/panel cards */
    --fx-up-on-grad: #7ef2d0; /* positive change on the gradient panel */
    --fx-down-on-grad: #ffb3c0; /* negative change on the gradient panel */
}

/* ---- Mode banner: the virtual trading statement under the band ---- */

/* A notice on the page ground, clear of the band above it: the practice
   tint with the accent on its leading edge, so it reads as a status line
   and not as a second band. */
.fx-banner {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-3);
    margin-top: var(--space-6);
    border: 1px solid var(--fx-border-soft);
    border-inline-start: 3px solid var(--fx-accent);
    background: var(--fx-tint);
    border-radius: var(--exc-radius-inner);
    padding: var(--space-3) var(--space-5);
    color: var(--kyc-ink);
}

.fx-banner__icon {
    flex: none;
    display: flex;
    color: var(--fx-accent);
}

.fx-banner__text {
    flex: 1 1 20rem;
    min-width: 0;
    margin: 0;
    font-family: var(--kyc-body);
    font-size: 0.84375rem;
    font-weight: 400;
    overflow-wrap: anywhere;
}

/* `margin-inline-start: auto` keeps the button on the trailing edge once the
   text has wrapped onto its own line */
.fx-banner__exit {
    flex: none;
    margin-inline-start: auto;
    min-height: 2.75rem;
    max-width: 100%;
    box-sizing: border-box;
    border: 1px solid var(--fx-accent);
    background: #fff;
    color: var(--fx-accent);
    border-radius: 999px;
    padding: var(--space-2) var(--space-4);
    cursor: pointer;
    font-family: var(--kyc-body);
    font-size: 0.78125rem;
    font-weight: 500;
    white-space: normal;
    overflow-wrap: anywhere;

    &:hover {
        background: var(--fx-tint);
    }

    &:focus-visible {
        outline: 2px solid var(--fx-accent);
        outline-offset: 3px;
    }
}

@container dashboardWelcome (max-width: 640px) {
    .fx-banner {
        display: grid;
        grid-template-columns: auto minmax(0, 1fr);
        padding: var(--space-4);
    }

    .fx-banner__exit {
        grid-column: 1 / -1;
        width: 100%;
        margin-inline-start: 0;
    }
}

/* ---- The practice book on white ---- */

/* gains and losses on white keep the app's own pair */
.fx-up {
    color: var(--kyc-green-text);
}

.fx-down {
    color: var(--kyc-red);
}

/* the Sell button of the open position */
.fx-sell {
    position: relative;
    flex: none;
    border: 1px solid var(--fx-border-dashed);
    background: var(--kyc-surface);
    color: var(--fx-accent);
    border-radius: 999px;
    padding: 7px 16px;
    cursor: pointer;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    font-weight: 700;

    &:hover {
        background: var(--fx-tint-pill);
    }
}

/* the virtual dashboard's ground is the app's own, the one the chrome paints
   around the page, so the page and its surroundings are one surface; the
   live dashboard's sections stay transparent over it */
[data-theme="exchange-home"][data-mode="virtual"] {
    background: var(--exc-gray-50);
}

/* ---- Quick trade panel ---- */

.fx-trade {
    border-radius: 16px;
    padding: 24px;
    background: var(--fx-panel-grad);
    color: #fff;
}

.fx-trade__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.fx-trade__label {
    font-family: var(--kyc-body);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.85);
}

.fx-trade__pill {
    font-family: var(--kyc-body);
    font-size: 11.5px;
    font-weight: 700;
    background: rgba(255, 255, 255, 0.16);
    border-radius: 999px;
    padding: 4px 12px;
}

/* the amount to spend: the live swap card's "You pay" panel, on the
   gradient */
.fx-amount {
    margin-top: 18px;
    background: rgba(255, 255, 255, 0.12);
    border-radius: 12px;
    padding: 12px 14px;
}

.fx-amount__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
}

.fx-amount__balance {
    font-family: var(--kyc-body);
    font-size: 11.5px;
    color: rgba(255, 255, 255, 0.65);
    white-space: nowrap;
}

.fx-amount__row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 6px;
}

.fx-amount__prefix {
    font-family: var(--kyc-body);
    font-size: 22px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.85);
}

.fx-amount__input {
    flex: 1;
    min-width: 0;
    border: none;
    background: transparent;
    color: #fff;
    font-family: var(--kyc-body);
    font-size: 26px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    padding: 0;
    outline: none;

    &::placeholder {
        color: rgba(255, 255, 255, 0.45);
    }

    &:focus-visible {
        outline: 2px solid rgba(255, 255, 255, 0.6);
        outline-offset: 2px;
        border-radius: 4px;
    }
}

/* the preset chips fill the amount field */
.fx-chips {
    display: flex;
    gap: 8px;
    margin-top: 12px;
}

.fx-chip {
    flex: 1;
    border: 1px solid rgba(255, 255, 255, 0.45);
    background: none;
    color: #fff;
    border-radius: 999px;
    padding: 8px 0;
    cursor: pointer;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    font-weight: 700;

    /* selected: white, violet text, no visible border; the border stays in
       the box so every chip keeps one height */
    &.is-selected {
        border-color: transparent;
        background: #fff;
        color: var(--fx-violet);
    }
}

.fx-assets {
    display: flex;
    flex-direction: column;
    margin-top: 14px;
}

.fx-asset {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
}

.fx-asset__text {
    flex: 1;
    min-width: 0;
}

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

.fx-asset__class {
    font-family: var(--kyc-body);
    font-size: 11.5px;
    color: rgba(255, 255, 255, 0.65);
    margin-top: 1px;
}

.fx-asset__right {
    text-align: end;
}

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

.fx-asset__change {
    font-family: var(--kyc-body);
    font-size: 11.5px;
    font-weight: 700;
    margin-top: 1px;
    font-variant-numeric: tabular-nums;
}

.fx-asset__change--up {
    color: var(--fx-up-on-grad);
}

.fx-asset__change--down {
    color: var(--fx-down-on-grad);
}

.fx-buy {
    position: relative;
    flex: none;
    border: none;
    background: #fff;
    color: var(--fx-violet);
    border-radius: 999px;
    padding: 7px 16px;
    cursor: pointer;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    font-weight: 700;

    &:hover {
        filter: brightness(0.94);
    }
}

.fx-buy[disabled],
.fx-sell[disabled] {
    opacity: 0.55;
    cursor: not-allowed;
    filter: none;
}

/* the 44px hit target on the 30px-tall buttons; the extra area is invisible */
.fx-buy::before,
.fx-sell::before {
    content: "";
    position: absolute;
    inset: -7px 0;
}

.fx-hint {
    font-family: var(--kyc-body);
    font-size: 11.5px;
    color: rgba(255, 255, 255, 0.65);
    margin-top: 14px;
}

.fx-error {
    margin-top: 12px;
    font-family: var(--kyc-body);
    font-size: 12.5px;
    font-weight: 700;
    color: var(--fx-down-on-grad);
}

.fx-warning {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    background: rgba(255, 255, 255, 0.12);
    border-radius: 10px;
    padding: 10px 12px;
    margin-top: 12px;
}

.fx-warning__icon {
    flex: none;
    display: flex;
    margin-top: 1px;
    color: #fff;
}

.fx-warning__text {
    font-family: var(--kyc-body);
    font-size: 11.5px;
    line-height: 1.5;
    color: rgba(255, 255, 255, 0.85);
}

.fx-unavailable {
    margin-top: 34px;
    font-family: var(--kyc-body);
    font-size: 13.5px;
    color: var(--kyc-ink-50);
}
