:root {
    --red: #e4021a;
    --black: #000;
    --white: #fff;

    --blur: 18px;
    --sat: 1.25;

    --radius: 20px;
    --radius-shell: 40px;

    --maxw: 540px;
    --text: rgba(255, 255, 255, .92);
    --muted: rgba(255, 255, 255, .70);
}

* {
    box-sizing: border-box;
}

html,
body {
    height: 100%;
}

body {
    margin: 0;
    color: var(--text);
    background: #050506;
    font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    overflow-x: hidden;
}

/* ===== Fundo premium ===== */
.bg {
    position: fixed;
    inset: 0;
    z-index: -3;
    background:
        radial-gradient(1100px 700px at 15% 15%, rgba(228, 2, 26, .25), transparent 60%),
        radial-gradient(900px 700px at 90% 20%, rgba(255, 255, 255, .08), transparent 55%),
        radial-gradient(1000px 800px at 55% 105%, rgba(228, 2, 26, .14), transparent 55%),
        linear-gradient(180deg, #040405 0%, #09090b 55%, #040405 100%);
}

.shards {
    position: fixed;
    inset: -10%;
    z-index: -2;
    pointer-events: none;
    background:
        conic-gradient(from 220deg at 20% 35%, rgba(255, 255, 255, .14), transparent 35%, rgba(255, 255, 255, .08), transparent 68%),
        conic-gradient(from 120deg at 80% 25%, rgba(255, 255, 255, .10), transparent 40%, rgba(228, 2, 26, .10), transparent 70%),
        conic-gradient(from 30deg at 55% 75%, rgba(255, 255, 255, .08), transparent 35%, rgba(255, 255, 255, .05), transparent 70%);
    filter: blur(18px);
    opacity: .75;
    transform: rotate(6deg);
    mix-blend-mode: screen;
}

.grain {
    position: fixed;
    inset: -30%;
    z-index: -1;
    pointer-events: none;
    background-image:
        repeating-radial-gradient(circle at 20% 30%, rgba(255, 255, 255, .08) 0 1px, transparent 1px 7px),
        repeating-radial-gradient(circle at 75% 60%, rgba(255, 255, 255, .06) 0 1px, transparent 1px 9px);
    opacity: .14;
    filter: blur(.35px);
    transform: rotate(7deg);
    mix-blend-mode: soft-light;
}

.wrap {
    min-height: 100%;
    display: flex;
    justify-content: center;
    padding: max(18px, env(safe-area-inset-top)) 18px max(22px, env(safe-area-inset-bottom));
}

/* ===== Shell ===== */
.shell {
    width: min(92vw, var(--maxw));
    border-radius: var(--radius-shell);
    padding: 22px 18px 16px;
    position: relative;

    background: linear-gradient(135deg, rgba(255, 255, 255, .06), rgba(255, 255, 255, .02));
    border: 1px solid rgba(255, 255, 255, .10);
    box-shadow:
        0 35px 120px rgba(0, 0, 0, .65),
        inset 0 1px 0 rgba(255, 255, 255, .14);

    backdrop-filter: blur(14px) saturate(1.1);
    -webkit-backdrop-filter: blur(14px) saturate(1.1);
    overflow: hidden;

    isolation: isolate;
    contain: paint;
}

.shell::before {
    content: "";
    position: absolute;
    inset: -30%;
    background:
        radial-gradient(circle at 30% 20%, rgba(255, 255, 255, .14), transparent 45%),
        radial-gradient(circle at 70% 30%, rgba(228, 2, 26, .16), transparent 52%);
    opacity: .55;
    /* sem blur aqui pra evitar “caixa” no iOS */
    filter: none;
    pointer-events: none;
}

header {
    text-align: center;
    padding: 8px 8px 12px;
    position: relative;
    z-index: 1;
}

/* ===== LOGO (corrigido: sem “retângulo fantasma”) ===== */
.logo {
    width: 86px;
    height: 86px;
    margin: 4px auto 14px;
    border-radius: 999px;
    display: grid;
    place-items: center;
    position: relative;
    overflow: hidden;

    background: linear-gradient(135deg, rgba(255, 255, 255, .14), rgba(255, 255, 255, .05));
    border: 1px solid rgba(255, 255, 255, .22);
    box-shadow:
        0 18px 55px rgba(0, 0, 0, .45),
        inset 0 1px 0 rgba(255, 255, 255, .30);

    backdrop-filter: blur(16px) saturate(1.15);
    -webkit-backdrop-filter: blur(16px) saturate(1.15);

    isolation: isolate;
    contain: paint;
}

.logo::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 999px;
    background:
        radial-gradient(90px 70px at 30% 25%, rgba(255, 255, 255, .55), transparent 60%),
        conic-gradient(from 210deg at 50% 50%,
            rgba(255, 255, 255, .14),
            rgba(255, 255, 255, 0) 35%,
            rgba(228, 2, 26, .16),
            rgba(255, 255, 255, 0) 70%,
            rgba(255, 255, 255, .12));
    opacity: .65;
    mix-blend-mode: screen;
    /* FORÇA recorte perfeito no iOS */
    clip-path: circle(50% at 50% 50%);
    pointer-events: none;
}

.logo img {
    width: 54px;
    height: 54px;
    object-fit: contain;
    position: relative;
    z-index: 2;
    filter: drop-shadow(0 10px 22px rgba(0, 0, 0, .35));
}

h1 {
    margin: 0;
    font-size: 18px;
    font-weight: 800;
    letter-spacing: .2px;
    line-height: 1.15;
}

.subtitle {
    margin: 8px 0 0;
    font-size: 13px;
    line-height: 1.35;
    color: var(--muted);
}

.badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 11px;
    font-weight: 800;
    padding: 7px 11px;
    border-radius: 999px;
    margin: 12px auto 0;
    width: fit-content;

    color: rgba(255, 255, 255, .92);
    background: linear-gradient(135deg, rgba(228, 2, 26, .55), rgba(255, 255, 255, .10));
    border: 1px solid rgba(255, 255, 255, .22);
    box-shadow: 0 12px 30px rgba(228, 2, 26, .18);

    backdrop-filter: blur(12px) saturate(1.15);
    -webkit-backdrop-filter: blur(12px) saturate(1.15);
}

/* ===== Grid ===== */
.grid {
    margin-top: 12px;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    padding: 10px 6px 6px;
    position: relative;
    z-index: 1;
}

@media (max-width: 380px) {
    .grid {
        grid-template-columns: 1fr;
    }

    .shell {
        padding: 18px 14px 12px;
        border-radius: 34px;
    }

    .logo {
        width: 78px;
        height: 78px;
    }
}

/* ===== CARD DESATIVADO / EM BREVE ===== */
.card.is-disabled {
    pointer-events: none;
    /* não clicável */
    cursor: not-allowed;
    filter: grayscale(1) saturate(.2) brightness(.65);
}

.card.is-disabled::after {
    opacity: .25;
    /* reduz brilho crystal */
}

/* overlay escuro sutil */
.card.is-disabled::before {
    opacity: .25;
}

/* texto com aparência desativada */
.card.is-disabled .card-title,
.card.is-disabled .card-desc {
    color: rgba(255, 255, 255, .55);
}

/* selo “EM BREVE” */
.card.is-disabled::marker {
    display: none;
}

.card.is-disabled .coming-soon {
    position: absolute;
    bottom: 14px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 3;

    font-size: 12px;
    font-weight: 800;
    letter-spacing: .4px;
    text-transform: uppercase;

    padding: 6px 12px;
    border-radius: 999px;

    background: rgba(0, 0, 0, .55);
    border: 1px solid rgba(255, 255, 255, .25);
    color: rgba(255, 255, 255, .85);

    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}


/* ===== CARD (novo layout conforme protótipo) ===== */
.card {
    position: relative;
    display: flex;
    flex-direction: column;
    border-radius: var(--radius);
    text-decoration: none;
    outline: none;

    /* Sem “espaço interno” geral: a imagem vai quase até as bordas */
    padding: 0;
    overflow: hidden;

    background: linear-gradient(135deg, rgba(255, 255, 255, .10), rgba(255, 255, 255, .05));
    border: 1px solid rgba(255, 255, 255, .16);

    box-shadow:
        0 22px 70px rgba(0, 0, 0, .62),
        inset 0 1px 0 rgba(255, 255, 255, .22),
        inset 0 -1px 0 rgba(255, 255, 255, .08);

    backdrop-filter: blur(var(--blur)) saturate(var(--sat));
    -webkit-backdrop-filter: blur(var(--blur)) saturate(var(--sat));

    color: rgba(255, 255, 255, .92);

    isolation: isolate;
    contain: paint;

    /* tilt */
    --rx: 0deg;
    --ry: 0deg;
    transform: perspective(900px) rotateX(var(--rx)) rotateY(var(--ry));
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease, filter .18s ease;
}

/* borda iridescente (só a borda) */
.card::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    padding: 1px;
    background:
        conic-gradient(from 180deg at 50% 50%,
            rgba(255, 255, 255, .38),
            rgba(228, 2, 26, .42),
            rgba(255, 255, 255, .18),
            rgba(160, 190, 255, .18),
            rgba(255, 255, 255, .34));
    -webkit-mask:
        linear-gradient(#000 0 0) content-box,
        linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    opacity: .55;
    pointer-events: none;
}

/* highlight/facetas (sem blur forte e com recorte perfeito no iOS) */
.card::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background:
        radial-gradient(220px 160px at var(--mx, 20%) var(--my, 18%), rgba(255, 255, 255, .30), transparent 62%),
        conic-gradient(from 220deg at 30% 40%, rgba(255, 255, 255, .12), transparent 35%, rgba(255, 255, 255, .05), transparent 70%),
        linear-gradient(115deg, rgba(255, 255, 255, .10), rgba(255, 255, 255, 0) 42%),
        linear-gradient(25deg, rgba(228, 2, 26, .10), rgba(255, 255, 255, 0) 60%);
    opacity: .70;
    mix-blend-mode: screen;
    clip-path: inset(0 round var(--radius));
    pointer-events: none;
}

.card:hover {
    transform: perspective(900px) translateY(-2px) rotateX(var(--rx)) rotateY(var(--ry));
    border-color: rgba(255, 255, 255, .26);
    box-shadow:
        0 30px 92px rgba(0, 0, 0, .70),
        inset 0 1px 0 rgba(255, 255, 255, .26);
    filter: saturate(1.05);
}

.card:active {
    transform: perspective(900px) translateY(0px) scale(.995) rotateX(var(--rx)) rotateY(var(--ry));
}

.card:focus-visible {
    box-shadow:
        0 30px 92px rgba(0, 0, 0, .70),
        0 0 0 3px rgba(228, 2, 26, .38);
    border-color: rgba(228, 2, 26, .55);
}

.card[data-accent="red"] {
    border-color: rgba(228, 2, 26, .26);
}

.card[data-accent="red"]::before {
    opacity: .72;
}

/* ===== topo: título e descrição centralizados ===== */
.card-top {
    position: relative;
    z-index: 1;
    padding: 14px 12px 12px;
    text-align: center;

    /* pra ficar bem “acabamento fino” */
    background: rgba(0, 0, 0, .06);
}

.card-title {
    font-weight: 900;
    font-size: 16px;
    letter-spacing: .12px;
    line-height: 1.1;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.card-desc {
    margin: 6px 0 0;
    font-size: 13px;
    color: rgba(255, 255, 255, .72);
    line-height: 1.2;

    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* linha fina separadora (abaixo da descrição) */
.card-divider {
    position: relative;
    z-index: 1;
    height: 1px;
    margin: 0 12px;
    background: rgba(255, 255, 255, .22);
}

/* ===== imagem encostando quase nas bordas ===== */
.thumb {
    position: relative;
    z-index: 1;

    /* imagem “colada” no card: sem padding, sem borda extra */
    margin: 10px 10px 10px;
    border-radius: 16px;
    overflow: hidden;

    aspect-ratio: 16 / 9;
    background: rgba(255, 255, 255, .06);
}

.thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transform: scale(1.01);
    filter: contrast(1.05) saturate(1.05);
}

.title {
    font-weight: 850;
    font-size: 14px;
    letter-spacing: .18px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.desc {
    font-size: 12px;
    color: rgba(255, 255, 255, .70);
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.chev {
    flex: 0 0 auto;
    width: 38px;
    height: 38px;
    border-radius: 14px;
    display: grid;
    place-items: center;

    background: linear-gradient(135deg, rgba(255, 255, 255, .14), rgba(255, 255, 255, .06));
    border: 1px solid rgba(255, 255, 255, .18);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .20);

    backdrop-filter: blur(10px) saturate(1.1);
    -webkit-backdrop-filter: blur(10px) saturate(1.1);
    color: rgba(255, 255, 255, .88);
    position: relative;
    z-index: 1;
}

.chev svg {
    width: 18px;
    height: 18px;
}


footer {
    margin-top: 12px;
    padding: 8px 8px 2px;
    text-align: center;
    color: rgba(255, 255, 255, .52);
    font-size: 12px;
    position: relative;
    z-index: 1;
}

@media (prefers-reduced-motion: reduce) {
    .card {
        transition: none;
    }

    .card:hover {
        transform: none;
    }
}