* {
    box-sizing: border-box;
    margin: 0;
    padding: 0
}

body {
    background-color: #f9fafb;
    color: #1f2937;
    font-family: Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;
    line-height: 1.5
}

.container {
    margin: 0 auto;
    max-width: 1200px;
    padding: 0 1rem;
    width: 100%
}

.grid {
    display: grid;
    gap: 1.5rem
}

.grid-cols-1 {
    grid-template-columns: repeat(1, minmax(0, 1fr))
}

.grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr))
}

.grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr))
}

.grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr))
}

.flex {
    display: flex
}

.flex-col {
    flex-direction: column
}

.items-center {
    align-items: center
}

.justify-center {
    justify-content: center
}

.justify-between {
    justify-content: space-between
}

.gap-2 {
    gap: .5rem
}

.gap-4 {
    gap: 1rem
}

.gap-6 {
    gap: 1.5rem
}

.p-2 {
    padding: .5rem
}

.p-4 {
    padding: 1rem
}

.p-6 {
    padding: 1.5rem
}

.px-4 {
    padding-left: 1rem;
    padding-right: 1rem
}

.py-2 {
    padding-bottom: .5rem;
    padding-top: .5rem
}

.py-4 {
    padding-bottom: 1rem;
    padding-top: 1rem
}

.m-2 {
    margin: .5rem
}

.m-4 {
    margin: 1rem
}

.m-6 {
    margin: 1.5rem
}

.mb-2 {
    margin-bottom: .5rem
}

.mb-4 {
    margin-bottom: 1rem
}

.mb-6 {
    margin-bottom: 1.5rem
}

.mt-2 {
    margin-top: .5rem
}

.mt-4 {
    margin-top: 1rem
}

.mt-6 {
    margin-top: 1.5rem
}

h1,
h2,
h3,
h4,
h5,
h6 {
    color: #111827;
    font-weight: 600;
    line-height: 1.25;
    margin-bottom: .5rem
}

h1 {
    font-size: 2rem
}

h2 {
    font-size: 1.75rem
}

h3 {
    font-size: 1.5rem
}

h4 {
    font-size: 1.25rem
}

h5 {
    font-size: 1.125rem
}

h6 {
    font-size: 1rem
}

p {
    margin-bottom: 1rem
}

.text-center {
    text-align: center
}

.text-right {
    text-align: right
}

.text-sm {
    font-size: .875rem
}

.text-lg {
    font-size: 1.125rem
}

.text-xl {
    font-size: 1.25rem
}

.text-2xl {
    font-size: 1.5rem
}

.font-bold {
    font-weight: 700
}

.text-primary {
    color: #7f56d9
}

.text-secondary {
    color: #667085
}

.text-success {
    color: #10b981
}

.text-danger {
    color: #ef4444
}

.text-warning {
    color: #f59e0b
}

.text-info {
    color: #3b82f6
}

.btn-success {
    background-color: #10b981;
    border: 1px solid #10b981;
    color: #fff
}

.btn-success:hover:not(:disabled) {
    background-color: #059669;
    border-color: #059669
}

.btn-danger {
    background-color: #ef4444;
    border: 1px solid #ef4444;
    color: #fff
}

.btn-danger:hover:not(:disabled) {
    background-color: #dc2626;
    border-color: #dc2626
}

.btn-warning {
    background-color: #f59e0b;
    border: 1px solid #f59e0b;
    color: #fff
}

.btn-warning:hover:not(:disabled) {
    background-color: #d97706;
    border-color: #d97706
}

.btn-sm {
    font-size: .875rem;
    padding: .5rem 1rem
}

.btn-lg {
    font-size: 1.125rem;
    padding: 1rem 2rem
}

select {
    background-color: #fff;
    border: 1px solid #d0d5dd;
    border-radius: .5rem;
    color: #1d2939;
    font-size: 1rem;
    padding: .75rem;
    transition: border-color .2s ease;
    width: 100%
}

select:focus {
    border-color: #7f56d9;
    box-shadow: 0 0 0 4px rgba(127, 86, 217, .1);
    outline: none
}

textarea {
    border: 1px solid #d0d5dd;
    border-radius: .5rem;
    color: #1d2939;
    font-size: 1rem;
    min-height: 100px;
    padding: .75rem;
    resize: vertical;
    transition: border-color .2s ease;
    width: 100%
}

textarea:focus {
    border-color: #7f56d9;
    box-shadow: 0 0 0 4px rgba(127, 86, 217, .1);
    outline: none
}

.shadow-sm {
    box-shadow: 0 1px 2px rgba(0, 0, 0, .05)
}

.shadow {
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06)
}

.shadow-md {
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05)
}

.rounded {
    border-radius: .25rem
}

.rounded-md {
    border-radius: .375rem
}

.rounded-lg {
    border-radius: .5rem
}

.rounded-full {
    border-radius: 9999px
}

.w-full {
    width: 100%
}

.h-full {
    height: 100%
}

.max-w-md {
    max-width: 28rem
}

.max-w-lg {
    max-width: 32rem
}

.max-w-xl {
    max-width: 36rem
}

.overflow-hidden {
    overflow: hidden
}

.cursor-pointer {
    cursor: pointer
}

@keyframes spin {
    0% {
        transform: rotate(0deg)
    }
    to {
        transform: rotate(1turn)
    }
}

.rotate {
    animation: spin 1s linear infinite
}

.refresh-balance-btn {
    align-items: center;
    display: flex;
    height: 28px;
    justify-content: center;
    overflow: hidden;
    position: relative;
    transition: all .2s ease;
    width: 28px
}

.mobile-refresh-btn {
    height: 24px;
    margin-right: -4px;
    min-height: 24px;
    min-width: 24px;
    padding: 4px;
    width: 24px
}

.mobile-refresh-btn i {
    font-size: .7rem
}

.refresh-balance-btn:hover {
    transform: scale(1.1)
}

.refresh-balance-btn:active {
    transform: scale(.95)
}

.refresh-balance-btn i {
    transition: transform .3s ease
}

.refresh-balance-btn i.rotate {
    animation: spin 1s linear infinite
}

.refresh-balance-btn:after {
    background: hsla(0, 0%, 100%, .5);
    border-radius: 100%;
    content: "";
    height: 5px;
    left: 50%;
    opacity: 0;
    position: absolute;
    top: 50%;
    transform: scale(1) translate(-50%);
    transform-origin: 50% 50%;
    width: 5px
}

.refresh-balance-btn:focus:not(:active):after {
    animation: ripple 1s ease-out
}

@keyframes ripple {
    0% {
        opacity: .5;
        transform: scale(0)
    }
    20% {
        opacity: .3;
        transform: scale(25)
    }
    to {
        opacity: 0;
        transform: scale(40)
    }
}

@media (max-width:768px) {
    .grid-cols-2,
    .grid-cols-3,
    .grid-cols-4 {
        grid-template-columns: repeat(1, minmax(0, 1fr))
    }
    .sm\:grid-cols-2 {
        grid-template-columns: repeat(2, minmax(0, 1fr))
    }
}

@media (min-width:768px) and (max-width:1279px) {
    .grid-cols-3,
    .grid-cols-4 {
        grid-template-columns: repeat(2, minmax(0, 1fr))
    }
    .md\:grid-cols-3 {
        grid-template-columns: repeat(3, minmax(0, 1fr))
    }
    .user-dropdown .dropdown-trigger {
        padding: .5rem
    }
    .user-dropdown .dropdown-trigger i.fa-user-circle {
        font-size: 1.5rem
    }
    .md\:space-x-1>*+* {
        margin-left: .25rem
    }
    .md\:space-x-2>*+* {
        margin-left: .5rem
    }
    .hidden.md\:flex.items-center {
        font-size: .875rem;
        padding: .25rem .75rem
    }
    a[href^="/carteira/"] {
        padding: .5rem !important
    }
    a[href^="/carteira/"] i {
        font-size: 1.25rem
    }
}

.user-dropdown {
    position: relative
}

.dropdown-trigger {
    cursor: pointer;
    position: relative;
    user-select: none
}

.dropdown-menu,
.dropup-menu {
    margin-top: .5rem;
    min-width: 200px;
    opacity: 0;
    position: absolute;
    transform: translateY(-10px);
    transition: opacity .2s ease, transform .2s ease, visibility .2s;
    visibility: hidden;
    z-index: 50
}

.dropdown-menu {
    right: 0;
    top: 100%
}

@media (max-width:768px) {
    .dropup-menu {
        border-radius: 12px 12px 0 0;
        bottom: 69px;
        box-shadow: 0 -4px 6px -1px rgba(0, 0, 0, .1), 0 -2px 4px -1px rgba(0, 0, 0, .06);
        left: 0;
        margin: 0;
        max-width: none;
        opacity: 0;
        position: fixed;
        right: 0;
        transform: translateY(100%);
        transition: all .3s ease;
        visibility: hidden;
        width: 100%;
        z-index: 1001
    }
    .dropup-menu.show {
        opacity: 1;
        transform: translateY(0);
        visibility: visible
    }
    .dropup-menu a {
        align-items: center;
        border-bottom: 1px solid hsla(0, 0%, 100%, .1);
        display: flex;
        font-size: 16px;
        padding: 16px
    }
    .dropup-menu a:last-child {
        border-bottom: none
    }
    .dropup-menu i {
        font-size: 20px;
        text-align: center;
        width: 24px
    }
    .dropup-menu .border-t {
        border-color: hsla(0, 0%, 100%, .2)
    }
    .dropup-menu .text-gray-400 {
        color: #a3a3a3
    }
    .dropup-menu .text-gray-300 {
        color: #d1d5db
    }
    .dropup-menu .text-gray-100 {
        color: #f3f4f6
    }
    .dropup-menu .space-y-1>div {
        padding: 2px 0
    }
    .dropup-backdrop {
        background-color: rgba(0, 0, 0, .5);
        bottom: 0;
        left: 0;
        opacity: 0;
        position: fixed;
        right: 0;
        top: 0;
        transition: all .3s ease;
        visibility: hidden;
        z-index: 1000
    }
    .dropup-backdrop.show {
        opacity: 1;
        visibility: visible
    }
    .profile-dropup,
    .wallet-dropup {
        position: relative
    }
    .profile-dropup button,
    .wallet-dropup button {
        position: relative;
        z-index: 1002
    }
    .dropup-menu .border-t {
        margin: 4px 0;
        opacity: .2
    }
}

.dropdown-trigger:after {
    background: transparent;
    bottom: -8px;
    content: "";
    height: 12px;
    left: 0;
    position: absolute;
    right: 0;
    z-index: 49
}

@media (min-width:768px) {
    .user-dropdown:hover .dropdown-menu:not(.show) {
        opacity: 0;
        visibility: hidden
    }
}

.btn-primary {
    background-color: #7f56d9;
    border: none;
    color: #fff;
    font-weight: 600;
    transition: all .3s ease
}

.btn-primary:hover {
    background-color: #6941c6;
    box-shadow: 0 4px 12px rgba(127, 86, 217, .4);
    transform: translateY(-2px)
}

.animate-pulse {
    animation: pulse 2s infinite
}

.bg-gradient-to-r {
    background-image: linear-gradient(to right, var(--tw-gradient-stops))
}

.from-gray-900 {
    --tw-gradient-from: #111827;
    --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgba(17, 24, 39, 0))
}

.to-gray-800 {
    --tw-gradient-to: #1f2937
}

@keyframes vibrate {
    0% {
        transform: translate(0)
    }
    10% {
        transform: translate(-2px, -2px)
    }
    20% {
        transform: translate(2px, -2px)
    }
    30% {
        transform: translate(-2px, 2px)
    }
    40% {
        transform: translate(2px, 2px)
    }
    50% {
        transform: translate(-2px, -2px)
    }
    60% {
        transform: translate(2px, -2px)
    }
    70% {
        transform: translate(-2px, 2px)
    }
    80% {
        transform: translate(2px, 2px)
    }
    90% {
        transform: translate(-2px, -2px)
    }
    to {
        transform: translate(0)
    }
}

.vibrate-effect {
    animation: vibrate .3s linear infinite
}

@keyframes pulse {
    0% {
        text-shadow: 0 0 10px gold, 0 0 20px rgba(255, 215, 0, .8), 0 0 30px rgba(255, 215, 0, .6);
        transform: translate(-50%, -50%) scale(1)
    }
    50% {
        text-shadow: 0 0 15px gold, 0 0 25px rgba(255, 215, 0, .8), 0 0 35px rgba(255, 215, 0, .6);
        transform: translate(-50%, -50%) scale(1.1)
    }
    to {
        text-shadow: 0 0 10px gold, 0 0 20px rgba(255, 215, 0, .8), 0 0 30px rgba(255, 215, 0, .6);
        transform: translate(-50%, -50%) scale(1)
    }
}

.qrcode-container {
    align-items: center;
    display: flex;
    height: 176px;
    justify-content: center;
    margin: 0 auto;
    width: 176px
}

.qrcode-container img {
    display: block;
    height: auto;
    max-width: 100%
}

.balance-dropdown {
    position: relative
}

.balance-dropdown .dropdown-menu {
    opacity: 0;
    transform: translateY(10px);
    transition: all .2s ease-in-out;
    visibility: hidden;
    z-index: 50
}

.balance-dropdown .dropdown-menu.show,
.dropdown-menu.show {
    opacity: 1;
    transform: translateY(0);
    visibility: visible
}

@media (min-width:1024px) {
    #scratch-container {
        box-shadow: 0 10px 25px -5px rgba(0, 0, 0, .3), 0 10px 10px -5px rgba(0, 0, 0, .2);
        max-height: 500px;
        min-height: 400px;
        transition: transform .3s ease, box-shadow .3s ease;
        width: 100%
    }
    #scratch-container:hover {
        box-shadow: 0 20px 25px -5px rgba(0, 0, 0, .4), 0 10px 10px -5px rgba(0, 0, 0, .3);
        transform: translateY(-5px)
    }
    #scratch-card {
        cursor: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v8M8 12h8'/%3E%3C/svg%3E") 16 16, auto
    }
    canvas#scratch-card {
        display: block;
        height: 100% !important;
        width: 100% !important
    }
    .hidden.lg\:block .bg-gray-700 {
        align-items: center;
        display: inline-flex;
        justify-content: center
    }
    @keyframes pop-in {
        0% {
            opacity: 0;
            transform: scale(.9)
        }
        70% {
            opacity: 1;
            transform: scale(1.05)
        }
        to {
            opacity: 1;
            transform: scale(1)
        }
    }
    @keyframes slide-in-right {
        0% {
            opacity: 0;
            transform: translateX(100px)
        }
        to {
            opacity: 1;
            transform: translateX(0)
        }
    }
    @keyframes slide-in-left {
        0% {
            opacity: 0;
            transform: translateX(-100px)
        }
        to {
            opacity: 1;
            transform: translateX(0)
        }
    }
    .lg\:w-2\/3 {
        animation: slide-in-left .5s ease-out forwards
    }
    .lg\:w-1\/3 {
        animation: slide-in-right .5s ease-out forwards
    }
    #prizes-grid .prize-item {
        transition: transform .2s ease, filter .2s ease
    }
    #prizes-grid .prize-item:hover {
        filter: brightness(1.2);
        transform: scale(1.05)
    }
    .lg\:block button {
        transition: all .3s ease
    }
    .lg\:block button:hover {
        box-shadow: 0 5px 15px rgba(0, 0, 0, .1);
        transform: translateY(-2px)
    }
    .lg .bg-gray-800 {
        backdrop-filter: blur(10px);
        background-color: rgba(31, 41, 55, .8);
        border: 1px solid hsla(0, 0%, 100%, .1)
    }
}

@media (hover:hover) {
    #scratch-card:active {
        cursor: grabbing
    }
}

.btn-mobile-header {
    align-items: center;
    border-radius: .5rem;
    box-shadow: 0 2px 4px rgba(0, 0, 0, .2);
    display: flex;
    font-size: .75rem;
    font-weight: 500;
    transition: all .3s ease;
    z-index: 5
}

.btn-mobile-header:active {
    transform: scale(.95)
}

@media (max-width:260px) {
    .btn-mobile-header span {
        display: none
    }
    .btn-mobile-header .mr-1 {
        margin-right: 0
    }
}