/**
 * Sistema de Cursores Personalizados - Los Angeles Roleplay
 * Aplicado globalmente em todas as páginas
 * 
 * Arquivos PNG: ../cursor/ (redimensionados fisicamente para metade do tamanho)
 * - default.png: 16x24px, hotspot 1,1
 * - pointer.png: 20x25px, hotspot 1,1
 * - grab.png: 20x25px, hotspot 2,2
 * - grabbing.png: 20x20px, hotspot 2,2
 */

/* ============================================
   VARIÁVEIS DE CURSOR COM HOTSPOT
   ============================================ */
:root {
    /* 
     * Hotspots definidos após a URL no formato: x y
     * PNGs redimensionados para metade do tamanho original
     */
    --cursor-default: url('../cursor/default.png') 1 1, auto;
    --cursor-pointer: url('../cursor/pointer.png') 10 1, pointer;
    --cursor-grab: url('../cursor/grab.png') 10 2, grab;
    --cursor-grabbing: url('../cursor/grabbing.png') 10 2, grabbing;

    /* Alias para compatibilidade */
    --cursor-move: url('../cursor/grabbing.png') 10 2, move;
}

/* ============================================
   APLICAÇÃO GLOBAL - TODOS OS ELEMENTOS
   ============================================ */

/* Cursor padrão para todos os elementos */
html,
body {
    cursor: var(--cursor-default) !important;
}

/* ============================================
   CURSOR POINTER - ELEMENTOS CLICÁVEIS
   ============================================ */

/* Links e navegação */
a,
a *,
link,
area {
    cursor: var(--cursor-pointer) !important;
}

/* Botões e elementos de formulário */
button,
input[type="button"],
input[type="submit"],
input[type="reset"],
input[type="image"],
input[type="checkbox"],
input[type="radio"],
input[type="file"],
input[type="range"],
select,
optgroup,
option,
label,
[for] {
    cursor: var(--cursor-pointer) !important;
}

/* Áreas de texto clicáveis */
textarea[readonly],
input[readonly] {
    cursor: var(--cursor-pointer) !important;
}

/* Elementos com role interativo */
[role="button"],
[role="link"],
[role="tab"],
[role="menuitem"],
[role="option"],
[role="checkbox"],
[role="radio"],
[role="switch"],
[role="slider"] {
    cursor: var(--cursor-pointer) !important;
}

/* Elementos com handlers de clique */
[onclick],
[onmousedown],
[onmouseup],
[ondblclick],
[ontouchstart],
[aria-controls],
[aria-expanded],
[aria-pressed],
[tabindex]:not([tabindex="-1"]) {
    cursor: var(--cursor-pointer) !important;
}

/* Classes de botões */
.btn,
.btn-nav,
.btn-primary,
.btn-secondary,
.btn-ghost,
.btn-outline,
.btn-icon,
.btn-link,
.btn-sm,
.btn-lg,
.button {
    cursor: var(--cursor-pointer) !important;
}

/* Navegação */
.nav-link,
.nav-item,
.menu-item,
.footer-link,
.footer-social-link,
.sidebar-link,
.breadcrumb-link,
.pagination-link {
    cursor: var(--cursor-pointer) !important;
}

/* Cards e itens clicáveis */
.card,
.card-link,
.partner-card,
.staff-card,
.feature-card,
.package-card,
.team-member,
.event-card,
.cal-event,
.cal-nav-btn,
.youtube-placeholder,
.feedbacks-nav-btn,
.news-card {
    cursor: var(--cursor-pointer) !important;
}

/* Menus e dropdowns */
.menu-toggle,
.user-menu-toggle,
.user-menu-item,
.dropdown-toggle,
.dropdown-item,
.dropdown-menu,
.navbar-toggler {
    cursor: var(--cursor-pointer) !important;
}

/* Botões de ação */
.overlay-close,
.modal-close,
.staff-overlay-close,
.alert-close,
.notification-close,
.toast-close,
.drawer-close {
    cursor: var(--cursor-pointer) !important;
}

/* Links e redes sociais */
.social-link,
.social-links a,
.discord-info a,
.hero-buttons a,
.section-header a,
.cta-button {
    cursor: var(--cursor-pointer) !important;
}

/* Cards especiais */
.premium-package,
.status-component,
.feedback-card,
.kanban-card,
.roadmap-card,
.review-card,
.testimonial-card {
    cursor: var(--cursor-pointer) !important;
}

/* Elementos interativos diversos */
.clickable,
.interactive,
.selectable,
.expandable,
.collapsible,
.toggle,
.toggle-button,
.accordion-header,
.tab-button,
.tab-link {
    cursor: var(--cursor-pointer) !important;
}

/* Swiper pagination bullets */
.swiper-pagination-bullet,
.swiper-button-prev,
.swiper-button-next {
    cursor: var(--cursor-pointer) !important;
}

/* ============================================
   CURSOR GRAB - ELEMENTOS ARRASTÁVEIS
   ============================================ */

/* Elementos nativamente arrastáveis */
[draggable="true"] {
    cursor: var(--cursor-grab) !important;
}

/* Carrosséis e sliders */
.carousel,
.carousel-inner,
.swiper,
.swiper-container,
.swiper-wrapper,
.swiper-slide {
    cursor: var(--cursor-grab) !important;
}

/* Vertentes swiper */
.vertentes-swiper,
.vertentes-swiper .swiper-wrapper {
    cursor: var(--cursor-grab) !important;
}

/* Partners carousel */
.partners-carousel,
.partners-track {
    cursor: var(--cursor-grab) !important;
}

/* Timeline */
.timeline-wrapper,
.timeline-container,
.timeline-items,
.timeline-scroll {
    cursor: var(--cursor-grab) !important;
}

/* Galerias com drag */
.gallery-grid,
.gallery-item,
.mosaico-grid,
.gallery-scroll,
.gallery-container,
.feedbacks-carousel-wrapper,
.feedback-card {
    cursor: var(--cursor-grab) !important;
}

/* Kanban boards */
.kanban-board,
.kanban-column,
.kanban-lane {
    cursor: var(--cursor-grab) !important;
}

/* Scroll containers personalizados */
.scroll-container,
.scrollable,
.horizontal-scroll,
.overflow-scroll {
    cursor: var(--cursor-grab) !important;
}

/* ============================================
   CURSOR GRABBING - ESTADO ATIVO/ARRASTANDO
   ============================================ */

/* Estado de arrastar ativo */
.grabbing,
.grabbing *,
.dragging,
.dragging *,
.is-dragging,
.is-dragging *,
.is-grabbing,
.is-grabbing * {
    cursor: var(--cursor-grabbing) !important;
}

/* Swiper em estado de arrastar */
.swiper-grab,
.swiper-grabbing,
.swiper-container-grab,
.swiper-wrapper.grabbing,
.swiper-wrapper.grabbing *,
.feedbacks-carousel-wrapper.grabbing,
.feedbacks-carousel-wrapper.grabbing *,
.feedback-card.grabbing,
.feedback-card.grabbing * {
    cursor: var(--cursor-grabbing) !important;
}

/* Estados ativos */
/* Estados ativos e cliques em arrastáveis */
[draggable="true"]:active,
[draggable="true"]:active *,
.carousel:active,
.carousel:active *,
.carousel-inner:active,
.swiper:active,
.swiper:active *,
.swiper-container:active,
.swiper-container:active *,
.swiper-wrapper:active,
.swiper-slide:active,
.swiper-slide:active *,
.vertentes-swiper:active,
.vertentes-swiper:active *,
.vertentes-swiper .swiper-wrapper:active,
.vertentes-swiper.grabbing,
.vertentes-swiper.grabbing *,
.partners-carousel:active,
.partners-carousel:active *,
.partners-carousel.grabbing,
.partners-carousel.grabbing *,
.timeline-wrapper:active,
.timeline-wrapper:active *,
.timeline-wrapper.grabbing,
.timeline-wrapper.grabbing *,
.timeline-container:active,
.timeline-items:active,
.timeline-scroll:active,
.gallery-grid:active,
.gallery-grid:active *,
.mosaico-grid:active,
.gallery-scroll:active,
.gallery-container:active,
.gallery-container:active *,
.kanban-board:active,
.kanban-column:active,
.kanban-lane:active,
.scroll-container:active,
.scrollable:active,
.horizontal-scroll:active,
.overflow-scroll:active,
.feedbacks-carousel-wrapper:active,
.feedback-card:active,
.active,
[aria-pressed="true"],
[aria-expanded="true"] {
    cursor: var(--cursor-grabbing) !important;
}



/* ============================================
   ESTADOS HOVER - REFORÇO
   ============================================ */

/* Hover em links e botões */
a:hover,
button:hover,
.btn:hover,
.nav-link:hover,
.footer-link:hover {
    cursor: var(--cursor-pointer) !important;
}

/* Hover em cards */
.card:hover,
.gallery-item:hover,
.timeline-item:hover,
.partner-card:hover,
.staff-card:hover {
    cursor: var(--cursor-pointer) !important;
}

/* Hover em elementos arrastáveis */
[draggable="true"]:hover,
.carousel:hover,
.swiper:hover,
.timeline-wrapper:hover {
    cursor: var(--cursor-grab) !important;
}

/* ============================================
   EXCEÇÕES - ELEMENTOS DE TEXTO
   ============================================ */

/* Inputs de texto mantêm cursor de texto */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="search"],
input[type="tel"],
input[type="url"],
input[type="number"],
textarea,
[contenteditable="true"] {
    cursor: text !important;
}

/* Inputs de texto em readonly mantêm cursor apropriado */
input[readonly]:not([type]),
input[readonly][type="text"],
input[readonly][type="email"],
textarea[readonly] {
    cursor: default !important;
}

/* Seleção de texto */
::selection {
    cursor: text !important;
}

/* ============================================
   CORREÇÕES ESPECÍFICAS DE COMPONENTES
   ============================================ */

/* Material Design Icons dentro de botões */
button .mdi,
.btn .mdi,
a .mdi {
    cursor: inherit !important;
}

/* Imagens dentro de links */
a img,
a picture {
    cursor: inherit !important;
}

/* Spans e divs dentro de elementos clicáveis */
button span,
button div,
a span,
a div,
.btn span,
.btn div {
    cursor: inherit !important;
}

/* Input groups */
.input-group button,
.input-group .btn {
    cursor: var(--cursor-pointer) !important;
}

/* Form check e radio */
.form-check-input,
.form-check-label,
.custom-control-input,
.custom-control-label {
    cursor: var(--cursor-pointer) !important;
}

/* ============================================
   MÍDIA E ELEMENTOS ESPECIAIS
   ============================================ */

/* Vídeos e áudios com controles */
video[controls],
audio[controls] {
    cursor: var(--cursor-default) !important;
}

/* Iframes */
iframe {
    cursor: var(--cursor-default) !important;
}

/* Mapas interativos */
.map,
.map-container {
    cursor: var(--cursor-grab) !important;
}

.map:active,
.map.dragging {
    cursor: var(--cursor-grabbing) !important;
}

/* ============================================
   CURSOR PERSONALIZADO PARA LOADING
   ============================================ */

.loading,
.is-loading,
[data-loading="true"] {
    cursor: wait !important;
}

/* ============================================
   CURSOR PARA ELEMENTOS DESABILITADOS
   ============================================ */

[disabled],
.disabled,
[aria-disabled="true"],
.disabled,
.btn.disabled,
.btn[disabled],
button[disabled],
input[disabled],
select[disabled],
textarea[disabled] {
    cursor: not-allowed !important;
}

/* Bloqueio de selecao e drag em galerias */
.gallery-grid,
.gallery-item {
    user-select: none;
    -webkit-user-select: none;
}

.gallery-item img {
    -webkit-user-drag: none;
    pointer-events: none;
}

/* Forçar herança de cursores em componentes complexos */
.vertentes-swiper *,
.partners-carousel *,
.timeline-wrapper *,
.feedbacks-carousel-wrapper *,
.gallery-grid *,
.cal-calendar-table td,
.cal-calendar-table th {
    cursor: inherit !important;
}

.cal-event {
    cursor: var(--cursor-pointer) !important;
}

.cal-event:hover {
    cursor: var(--cursor-pointer) !important;
}

/* Elementos dentro de desabilitados herdam o cursor */
[disabled] *,
.disabled * {
    cursor: inherit !important;
}