/*
|--------------------------------------------------------------------------
| Tema do checkout
|--------------------------------------------------------------------------
|
| Camada de acabamento carregada DEPOIS de style.css. As regras antigas
| continuam valendo para tudo que este arquivo não toca; aqui ficam as cores,
| o espaçamento e os estados da tela de compra.
|
| As cores são as do painel do trader/admin (main.css): a escala zinc do
| painel, o botão cheio preto no claro e branco no escuro, e verde só para o
| que é sucesso de verdade. O checkout não carrega o main.css, então os
| valores se repetem aqui — cada token diz de qual variável do painel veio.
|
| O tema escuro é a classe `.ck-tema-escuro` no <html>, e não uma media
| query: quem está logado compra no tema que escolheu no painel, e só o
| visitante segue o do sistema (o script no <head> do header.blade.php põe e
| tira a classe). Com cores do lojista (`.ck-custom-colors`) a classe nunca
| entra: um tema claro escolhido a dedo não vira escuro.
|
*/

:root {
    color-scheme: light;

    --ck-bg: #fbfbfb;                       /* --background */
    --ck-surface: #fefefe;                  /* --card */
    --ck-surface-sunken: #fafafa;           /* --tertiary: moldura do layer card */
    --ck-surface-raised: #ffffff;           /* --popover */
    --ck-surface-muted: #f4f4f5;            /* --muted */

    --ck-border: rgba(0, 0, 29, 0.075);     /* --border */
    --ck-border-strong: #e3e3e7;            /* --input: anel da superfície do layer card */

    /* Campo de formulário: os --campo-* do painel. */
    --ck-field-ring: rgba(10, 10, 10, 0.1);
    --ck-field-focus: rgba(11, 11, 11, 0.5);
    --ck-placeholder: #a1a1a1;
    --ck-select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='%23737373'%3E%3Cpath d='M181.66,170.34a8,8,0,0,1,0,11.32l-48,48a8,8,0,0,1-11.32,0l-48-48a8,8,0,0,1,11.32-11.32L128,212.69l42.34-42.35A8,8,0,0,1,181.66,170.34Zm-96-84.68L128,43.31l42.34,42.35a8,8,0,0,0,11.32-11.32l-48-48a8,8,0,0,0-11.32,0l-48,48A8,8,0,0,0,85.66,85.66Z'/%3E%3C/svg%3E");

    --ck-text: #08080a;                     /* --foreground */
    --ck-text-soft: #3f3f46;                /* zinc-700, entre o texto e o apagado */
    --ck-text-muted: #71717a;               /* --muted-foreground */

    /* Botão cheio do painel (--primary). "Accent" é o destaque de interação:
       compra, seleção e foco seguem o mesmo neutro, sem uma segunda cor. */
    --ck-brand: #17171b;
    --ck-brand-contrast: #f9f9f9;
    --ck-accent: #17171b;
    --ck-accent-strong: #17171b;
    --ck-accent-hover: #2e2e33;
    --ck-accent-contrast: #f9f9f9;
    --ck-accent-soft: #f4f4f5;
    /* O check do checkbox marcado, na cor de contraste do botão (SVG em url() não
       herda currentColor). */
    --ck-check-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f9f9f9' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");

    --ck-success: #008932;                  /* --green */
    --ck-success-soft: rgba(0, 137, 50, 0.08);
    --ck-warning: #a07a05;
    --ck-warning-soft: rgba(255, 193, 7, 0.12);
    --ck-danger: #e9142d;                   /* --red */
    --ck-danger-soft: rgba(233, 20, 45, 0.08);

    --ck-focus-ring: rgba(23, 23, 27, 0.2); /* --ring a 20%, o anel de foco do painel */

    --ck-radius: 14px;
    --ck-radius-sm: 10px;
    --ck-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
}

/* Os valores do `body.dark` do painel. */
.ck-tema-escuro {
    color-scheme: dark;

    --ck-bg: #191919;
    --ck-surface: #161616;
    --ck-surface-sunken: #202020;
    --ck-surface-raised: #1c1c1e;
    --ck-surface-muted: #27272a;

    --ck-border: #27272a;
    --ck-border-strong: #27272a;

    --ck-field-ring: #333333;
    --ck-field-focus: rgba(233, 233, 233, 0.5);
    --ck-placeholder: #737373;
    --ck-select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='%23a1a1a1'%3E%3Cpath d='M181.66,170.34a8,8,0,0,1,0,11.32l-48,48a8,8,0,0,1-11.32,0l-48-48a8,8,0,0,1,11.32-11.32L128,212.69l42.34-42.35A8,8,0,0,1,181.66,170.34Zm-96-84.68L128,43.31l42.34,42.35a8,8,0,0,0,11.32-11.32l-48-48a8,8,0,0,0-11.32,0l-48,48A8,8,0,0,0,85.66,85.66Z'/%3E%3C/svg%3E");

    --ck-text: #f9f9f9;
    --ck-text-soft: #d4d4d8;
    --ck-text-muted: #a1a1a9;

    --ck-brand: #f9f9f9;
    --ck-brand-contrast: #17171b;
    --ck-accent: #f9f9f9;
    --ck-accent-strong: #f9f9f9;
    --ck-accent-hover: #e4e4e7;
    --ck-accent-contrast: #17171b;
    --ck-accent-soft: #27272a;
    --ck-check-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2317171b' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");

    /* O verde e o vermelho do painel somem no fundo quase preto: no escuro eles
       clareiam até ler com folga, como os tons de status do Kumo. */
    --ck-success: #22c55e;
    --ck-success-soft: rgba(34, 197, 94, 0.12);
    --ck-warning: #e0b429;
    --ck-warning-soft: rgba(224, 180, 41, 0.12);
    --ck-danger: #ff6467;
    --ck-danger-soft: rgba(255, 100, 103, 0.12);

    --ck-focus-ring: rgba(211, 211, 215, 0.2);

    --ck-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);

    /* As variáveis antigas do style.css também viram tema: `.c-mid-blue` e
       `.c-gray-dark` estão espalhadas pelo blade e sumiriam no fundo escuro. */
    --mid-blue: #d4d4d8;
    --dark-gray: #e4e4e7;
    --gray-light: #a1a1a9;
}

/* Cores do lojista mandam: nada de escuro por cima delas. */
.ck-custom-colors {
    color-scheme: light;
}

/*
|--------------------------------------------------------------------------
| Base
|--------------------------------------------------------------------------
*/

body {
    background-color: var(--ck-bg);
    color: var(--ck-text);
    -webkit-font-smoothing: antialiased;
}

/*
 * O invólucro das telas de checkout centralizava na vertical com `.vh-100`. Quando a
 * página é mais alta que a janela — checkout com pacote, cartão e endereço — a sobra
 * escapava para os dois lados e o topo ficava fora de alcance: não havia como rolar até
 * o nome do produto. Com `min-height` o container cresce junto do conteúdo e a
 * centralização só age nas telas curtas (aguardando pagamento, obrigado, falha).
 *
 * A classe substitui `.vh-100` no blade em vez de sobrescrevê-la: as utilitárias do
 * Bootstrap são `!important` e ganhariam desta regra.
 */
.ck-page {
    min-height: 100vh;
}

#checkout {
    padding: 32px 0 56px;
}

#checkout .container {
    max-width: 1140px;
}

/* Respiro entre as colunas quando elas empilham no celular. */
#checkout > .container > .row {
    row-gap: 20px;
}

.box-fields {
    background-color: var(--ck-surface);
    border: 1px solid var(--ck-border);
    border-radius: var(--ck-radius);
    box-shadow: var(--ck-shadow);
    padding: 28px;
}

@media (max-width: 575px) {
    #checkout {
        padding: 16px 0 40px;
    }

    .box-fields {
        padding: 18px;
        border-radius: 12px;
    }
}

/*
|--------------------------------------------------------------------------
| Cabeçalho do produto
|--------------------------------------------------------------------------
*/

#sticky_bottom {
    gap: 18px;
    padding-bottom: 22px;
    border-bottom: 1px solid var(--ck-border);
    margin-bottom: 22px;
}

#sticky_bottom img {
    width: 96px;
    height: 96px;
    object-fit: cover;
    border-radius: 12px;
    border: 1px solid var(--ck-border);
    background-color: var(--ck-surface-sunken);
}

#sticky_bottom .content-info-produto {
    width: auto;
    flex: 1;
    padding-left: 0;
}

#sticky_bottom .content-info-produto > p:first-child {
    font-size: 20px;
    line-height: 1.25;
    font-weight: 700;
    color: var(--ck-text);
    margin-bottom: 4px;
}

/* `.preco` tinha o azul-marinho fixo e sumia no fundo escuro — inclusive no total do PIX. */
.preco {
    color: var(--ck-text);
}

/* Os dois links de modal da tela (detalhes do produto e termos) usam `.destaque`. */
.destaque {
    color: var(--ck-accent-strong);
}

.view_valor_produto .preco,
.view_valor_produto #product_value {
    font-size: 30px;
    line-height: 1.1;
    font-weight: 700;
    color: var(--ck-text);
    margin: 6px 0 0;
}

.view_valor_produto .precounico.medium {
    font-size: 26px;
    font-weight: 700;
    color: var(--ck-text);
}

.view_valor_produto .label-price {
    color: var(--ck-text-muted);
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.view_valor_produto .diagonal-strike {
    color: var(--ck-text-muted);
}

#sticky_bottom .destaque.t-link {
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.06em;
    color: var(--ck-text-muted);
    text-decoration-color: var(--ck-border-strong);
}

#sticky_bottom .destaque.t-link:hover {
    color: var(--ck-text);
}

/* Barra fixa do celular: sem a borda inferior e com fundo próprio. */
#sticky_bottom.fixed-bottom {
    background-color: var(--ck-surface);
    border-top: 1px solid var(--ck-border);
    border-bottom: 0;
    margin-bottom: 0;
    padding: 12px 16px;
    box-shadow: 0 -8px 24px -12px rgba(0, 0, 0, 0.35);
}

/*
|--------------------------------------------------------------------------
| Blocos do formulário
|--------------------------------------------------------------------------
*/

.ck-section {
    margin-top: 22px;
}

.ck-section__title {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ck-text-muted);
    margin: 0 0 10px;
}


/*
|--------------------------------------------------------------------------
| Campos
|--------------------------------------------------------------------------
*/

form .form-group label {
    font-size: 13px;
    font-weight: 600;
    line-height: 18px;
    color: var(--ck-text-soft);
    margin-bottom: 6px;
}

/*
 * A dica ao lado do rótulo ("Código* CVV") segue na mesma linha. Só a dica longa do nome
 * do cartão ganha linha própria — ela já vinha marcada com `.m-block`, que no style.css
 * só quebrava abaixo de 992px; aqui a quebra vale em qualquer largura, senão o rótulo
 * inteiro vira uma linha comprida no desktop.
 */
form .form-group label .min {
    margin-left: 6px;
    font-size: 11px;
    font-weight: 400;
    letter-spacing: 0.02em;
    color: var(--ck-text-muted);
}

form .form-group label .m-block {
    display: block;
    margin-left: 0;
    margin-top: 2px;
}

form .form-group input,
form .form-group select,
form .form-group textarea,
form input.form-control,
form select.form-control,
form textarea.form-control {
    /* `background-color`, nunca o atalho `background`: o atalho zera repeat/size/position e
       a seta do select (declarada abaixo) passa a ladrilhar dentro do campo. */
    background-color: var(--ck-surface-sunken);
    color: var(--ck-text);
    border: 1px solid var(--ck-border-strong);
    border-radius: var(--ck-radius-sm);
    padding: 11px 14px;
    font-size: 14px;
    line-height: 20px;
    transition: border-color 0.15s, box-shadow 0.15s, background-color 0.15s;
}

form .form-group input:hover,
form .form-group select:hover,
form .form-group textarea:hover,
form .form-control:hover {
    border-color: var(--ck-text-muted);
}

/*
 * `color` repetido aqui de propósito: o `.form-control:focus` do Bootstrap também
 * declara a cor do texto, e com dois seletores (0,2,0) ganha do `form
 * input.form-control` (0,1,2) que pinta o campo em repouso. Sem esta linha o que o
 * comprador digita vira quase preto no fundo escuro enquanto o campo está em foco.
 */
form .form-group input:focus,
form .form-group select:focus,
form .form-group textarea:focus,
form .form-control:focus {
    background-color: var(--ck-surface);
    color: var(--ck-text);
    border-color: var(--ck-accent-strong);
    box-shadow: 0 0 0 3px var(--ck-focus-ring);
    outline: none;
}

/* Mesma armadilha de especificidade: `.form-control:disabled` do Bootstrap traz um
   cinza claro de fundo, e o cupom fica desabilitado enquanto a validação roda. */
form .form-group input:disabled,
form .form-group input[readonly],
form .form-control:disabled,
form .form-control[readonly] {
    background-color: var(--ck-surface-sunken);
    color: var(--ck-text-muted);
    opacity: 1;
}

form .form-group.has-error.has-danger input {
    border-color: var(--ck-danger);
}

form .form-group .help-block.with-errors {
    color: var(--ck-danger);
    font-size: 12px;
}

/* `.form-control` no seletor porque o Bootstrap pinta o placeholder pela classe, e
   um `::placeholder` solto perde para ele. */
form .form-group input::-webkit-input-placeholder,
form .form-control::-webkit-input-placeholder,
::-webkit-input-placeholder {
    color: var(--ck-placeholder);
    opacity: 1;
}

form .form-group input::placeholder,
form .form-control::placeholder,
::placeholder {
    color: var(--ck-placeholder);
    opacity: 1;
}

/*
 * A seta do select é a do painel (--ck-select-arrow), uma por tema: cor de SVG em
 * url() não herda currentColor.
 */
form .form-group select,
form select.form-control {
    appearance: none;
    -webkit-appearance: none;
    padding-right: 38px;
    background-image: var(--ck-select-arrow);
    background-repeat: no-repeat;
    background-position: calc(100% - 12px) center;
    background-size: 16px;
}

/*
|--------------------------------------------------------------------------
| Formas de pagamento
|--------------------------------------------------------------------------
|
| Antes cada aba tinha a sua cor (verde e azul), o que fazia as duas
| parecerem selecionadas. Agora a não escolhida é neutra e só a ativa
| recebe o verde da marca.
|
*/

.radiosPagamentos .radiomark {
    justify-content: center;
    gap: 8px;
    background-color: var(--ck-surface-sunken);
    border: 1px solid var(--ck-border-strong);
    border-radius: var(--ck-radius-sm);
    color: var(--ck-text-soft);
    font-size: 13px;
    font-weight: 600;
    padding: 14px 16px;
}

.radiosPagamentos .radiomark svg {
    width: 22px;
    fill: currentColor;
}

.radiosPagamentos .radiomark i {
    font-size: 15px;
}

.radiosPagamentos .item:hover input ~ .radiomark {
    background-color: var(--ck-surface);
    border-color: var(--ck-text-muted);
    color: var(--ck-text);
}

.radiosPagamentos .item input:checked ~ .radiomark {
    background-color: var(--ck-accent-soft);
    border-color: var(--ck-accent-strong);
    color: var(--ck-accent-strong);
}

.radiosPagamentos .item input:focus-visible ~ .radiomark {
    box-shadow: 0 0 0 3px var(--ck-focus-ring);
}

.tabpane.card,
#metodoCartaoDeCredito.card,
#metodoPix.card {
    background: var(--ck-surface-sunken);
    border: 1px solid var(--ck-border);
    border-radius: var(--ck-radius-sm);
}

/*
 * Os três argumentos do PIX. As margens vêm de utilitárias `!important`, daí o
 * `!important` aqui: sem isso o card fica com respiro de 10px em cima de cada parágrafo
 * e o texto encosta nas bordas.
 */
/*
 * Em três colunas dentro da coluna do formulário cada card ficava com ~180px: o texto
 * quebrava em cinco linhas e o `h-100` deixava um vazio embaixo dos mais curtos. Viram
 * uma lista de três linhas, ícone à esquerda, que lê bem em qualquer largura.
 */
#metodoPix > .row {
    display: flex;
    flex-direction: column;
    row-gap: 10px;
}

#metodoPix > .row > [class*="col-"] {
    flex: 0 0 auto;
    width: 100%;
    max-width: 100%;
    margin-bottom: 0 !important;
}

#metodoPix .card {
    display: grid;
    grid-template-columns: 34px 1fr;
    column-gap: 12px;
    align-items: start;
    background-color: var(--ck-surface);
    border: 1px solid var(--ck-border);
    border-radius: var(--ck-radius-sm);
    color: var(--ck-text-soft);
    padding: 14px 16px !important;
}

#metodoPix .card > i,
#metodoPix .card > svg {
    grid-row: span 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    padding: 0 !important;
    border-radius: 10px;
    background-color: var(--ck-accent-soft);
    color: var(--ck-accent-strong);
    fill: var(--ck-accent-strong);
    font-size: 15px;
}

#metodoPix .card > svg {
    padding: 7px !important;
}

#metodoPix .card p {
    grid-column: 2;
    margin-top: 0 !important;
}

#metodoPix .card p.min {
    font-size: 13px;
    line-height: 1.35;
    margin-bottom: 4px;
    color: var(--ck-text);
}

#metodoPix .card p.mid-min {
    font-size: 12px;
    line-height: 1.5;
    margin-bottom: 0;
    color: var(--ck-text-muted);
}

#metodoPix > p.mid-min {
    font-size: 12px;
    line-height: 1.5;
    color: var(--ck-text-muted);
    margin-top: 14px !important;
}

/*
 * O total fechava a aba num azul-marinho fixo do `.preco`, que no tema escuro
 * desaparecia no fundo. Vira uma linha de fechamento: rótulo apagado, valor em destaque.
 */
#metodoPix .preco {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin-top: 14px !important;
    padding-top: 14px;
    border-top: 1px solid var(--ck-border);
}

#metodoPix .preco > span:first-child {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--ck-text-muted);
}

#metodoPix .preco .valor-total {
    font-size: 22px;
    line-height: 1.1;
    font-weight: 700;
    color: var(--ck-text);
}

@media (max-width: 575px) {
    #metodoPix .preco {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }
}

.qtd-parcelas-view,
.box-cartao {
    color: var(--ck-text);
}

/*
|--------------------------------------------------------------------------
| Botão de compra
|--------------------------------------------------------------------------
*/

#form-card button[type="submit"].btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    margin-top: 8px;
    padding: 16px 24px;
    font-size: 15px;
    letter-spacing: 0.04em;
    border-radius: var(--ck-radius-sm);
    background-color: var(--ck-accent-strong);
    color: var(--ck-accent-contrast);
    box-shadow: none;
    transition: background-color 0.2s, transform 0.05s;
}

#form-card button[type="submit"].btn:hover,
#form-card button[type="submit"].btn:focus {
    background-color: var(--ck-accent-hover);
    color: var(--ck-accent-contrast);
}

#form-card button[type="submit"].btn:active {
    transform: translateY(1px);
}

#form-card button[type="submit"].btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 4px var(--ck-focus-ring);
}

/*
 * O validador marca o botão como `.disabled` até o formulário fechar. Sem estilo próprio
 * isso virava o verde a 65% de opacidade — parecia acabamento ruim, não botão bloqueado.
 */
#form-card button[type="submit"].btn.disabled,
#form-card button[type="submit"].btn:disabled {
    background-color: var(--ck-accent-soft);
    border: 1px solid var(--ck-accent-strong);
    color: var(--ck-accent-strong);
    box-shadow: none;
    opacity: 1;
    cursor: not-allowed;
}

/*
 * As outras telas do fluxo (aguardando pagamento, obrigado, falha) reaproveitam estes
 * botões. Sem token, `.btn-dark-gray` ficava cinza-claro com texto branco no tema escuro.
 */
.btn.btn-dark-gray {
    background-color: var(--ck-surface-sunken);
    border: 1px solid var(--ck-border-strong);
    color: var(--ck-text);
}

.btn.btn-dark-gray:hover,
.btn.btn-dark-gray:focus {
    background-color: var(--ck-accent-strong);
    border-color: var(--ck-accent-strong);
    color: var(--ck-accent-contrast);
}

.btn.btn-primary {
    background-color: var(--ck-brand);
    color: var(--ck-brand-contrast);
}

.btn.btn-primary:hover,
.btn.btn-primary:focus {
    background-color: var(--ck-accent-strong);
    color: var(--ck-accent-contrast);
}

.simple-link {
    color: var(--ck-accent-strong);
}

.input-copiar {
    color: var(--ck-text);
}

.btn-cupom {
    background-color: var(--ck-brand);
    color: var(--ck-brand-contrast);
    border-radius: var(--ck-radius-sm);
    padding: 11px 18px;
}

.btn-cupom:hover,
.btn-cupom:focus {
    background-color: var(--ck-accent-strong);
    color: var(--ck-accent-contrast);
}

/*
|--------------------------------------------------------------------------
| Conteúdo do pacote
|--------------------------------------------------------------------------
*/

.package-contents {
    border: 1px solid var(--ck-border);
    border-radius: var(--ck-radius-sm);
    background: var(--ck-surface-sunken);
    padding: 16px 18px;
    margin-top: 20px;
}

.package-contents__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

.package-contents__title {
    margin: 0;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ck-text-muted);
}

.package-contents__badge {
    flex-shrink: 0;
    font-size: 12px;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 999px;
    background: var(--ck-accent-soft);
    color: var(--ck-accent-strong);
    white-space: nowrap;
}

.package-contents__list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.package-contents__item {
    display: flex;
    align-items: baseline;
    gap: 12px;
    padding: 10px 0;
    border-top: 1px solid var(--ck-border);
}

.package-contents__item:first-child {
    border-top: 0;
    padding-top: 0;
}

.package-contents__quantity {
    flex-shrink: 0;
    min-width: 34px;
    font-size: 15px;
    font-weight: 700;
    color: var(--ck-accent-strong);
}

.package-contents__name {
    display: block;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.3;
    color: var(--ck-text);
}

.package-contents__meta {
    display: block;
    font-size: 12px;
    line-height: 1.4;
    margin-top: 2px;
    color: var(--ck-text-muted);
}

.package-contents__note {
    margin: 12px 0 0;
    padding-top: 12px;
    border-top: 1px solid var(--ck-border);
    font-size: 12px;
    line-height: 1.4;
    color: var(--ck-text-muted);
}

@media (max-width: 575px) {
    .package-contents {
        padding: 14px;
    }
}

/*
|--------------------------------------------------------------------------
| Cupom
|--------------------------------------------------------------------------
*/

.coupon-feedback {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    border-radius: var(--ck-radius-sm);
    font-size: 13px;
    line-height: 1.3;
    border: 1px solid transparent;
}

.coupon-feedback--success {
    background-color: var(--ck-success-soft);
    border-color: var(--ck-success);
    color: var(--ck-success);
}

.coupon-feedback--error {
    background: var(--ck-danger-soft);
    border-color: var(--ck-danger);
    color: var(--ck-danger);
}

.coupon-feedback--warning {
    background: var(--ck-warning-soft);
    border-color: color-mix(in srgb, var(--ck-warning) 45%, transparent);
    color: var(--ck-warning);
}

.coupon-feedback__text {
    flex: 1;
}

.btn-remove-cupom {
    background: none;
    border: 0;
    padding: 0;
    font-size: 12px;
    font-weight: 600;
    text-decoration: underline;
    color: inherit;
    cursor: pointer;
}

.input-cupom.is-coupon-applied {
    border-color: var(--ck-success);
    background-color: var(--ck-success-soft);
}

.btn-cupom[disabled] {
    opacity: 0.65;
    cursor: not-allowed;
}

/*
|--------------------------------------------------------------------------
| Coluna do comprador
|--------------------------------------------------------------------------
*/

/* A coluna é flex: sem isto o cartão do comprador estica até a altura do formulário
   e deixa um vazio enorme embaixo dos dados. */
#checkout .col-lg-4.d-flex {
    align-items: flex-start;
}

.ck-buyer {
    position: sticky;
    top: 24px;
}

.ck-buyer .f-size-14 {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ck-text-muted);
}

.ck-buyer .user-avatar {
    background-color: var(--ck-accent-soft) !important;
    color: var(--ck-accent-strong);
}

.ck-buyer .user-avatar i {
    font-size: 26px;
    color: var(--ck-accent-strong) !important;
}

.ck-buyer .text-muted {
    color: var(--ck-text-muted) !important;
}

.ck-buyer p {
    margin-bottom: 0;
}

.ck-buyer .f-size-16 {
    font-size: 15px;
}

.ck-buyer .user-details {
    border-top: 1px solid var(--ck-border) !important;
}

.ck-buyer .border-top {
    border-color: var(--ck-border) !important;
}

.ck-buyer .t-link {
    font-size: 13px;
    color: var(--ck-text-soft);
}

.ck-buyer .user-details i {
    color: var(--ck-text-muted) !important;
    font-size: 13px;
}

.ck-buyer .badge.bg-success-light {
    background-color: var(--ck-accent-soft) !important;
    color: var(--ck-accent-strong) !important;
    border-radius: 999px;
    padding: 6px 12px !important;
    font-size: 12px;
}

@media (max-width: 991px) {
    .ck-buyer {
        position: static;
    }
}

/*
|--------------------------------------------------------------------------
| Termos, rodapé e modais
|--------------------------------------------------------------------------
*/

.form-check label .t-link {
    font-size: 13px;
    color: var(--ck-text-soft);
}

.form-check input[type="checkbox"] {
    accent-color: var(--ck-accent-strong);
    width: 16px;
    height: 16px;
}

footer {
    color: var(--ck-text-muted);
}

footer .t-copy {
    color: var(--ck-text-muted);
    font-size: 12px;
}

.modal-content {
    background-color: var(--ck-surface);
    color: var(--ck-text);
    border: 1px solid var(--ck-border);
    border-radius: var(--ck-radius);
}

.modal-header,
.modal-footer {
    border-color: var(--ck-border);
}

.modal-content .header-modal {
    color: var(--ck-text);
}

.ck-tema-escuro .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%);
}

/*
 * A maquete do cartão vem do card.js com fundo claro fixo. Só o cartão ainda não
 * identificado é escurecido: quando a bandeira aparece, o gradiente dela é que manda.
 */
.ck-tema-escuro .jp-card:not(.jp-card-identified) .jp-card-front,
.ck-tema-escuro .jp-card:not(.jp-card-identified) .jp-card-back {
    background: #27272a !important;
}
