<?php
/**
 * Template: Formulário de Envio (Site, Social, Candidatura a Vídeo)
 * Local: For Artists/templates/frontend/artist-upload-form.php
 */
if ( ! defined( 'ABSPATH' ) ) { exit; }

// Dados do Utilizador
$telemovel = rmbz_get_current_user_telemovel();
$saldo = rmbz_get_wallet_balance_by_phone($telemovel);
$tem_subscricao = rmbz_user_has_active_subscription($telemovel);
// [fix] get_option pode devolver '' (string vazia) se a opção existir vazia na
// BD — nesse caso o default não é usado. Forçar valor numérico para evitar
// fatal error no number_format() abaixo.
$custo = get_option('rmbz_sub_price', 1500);
$custo = is_numeric($custo) ? (float) $custo : 1500;
// Saldo também pode vir não-numérico em contas novas/sem carteira.
$saldo = is_numeric($saldo) ? (float) $saldo : 0;

global $wpdb;

// ==========================================================
// LÓGICA 1: VERIFICAR PERMISSÕES VIP E CASTIGOS DO UTILIZADOR
// ==========================================================
$table_wallets = $wpdb->prefix . 'rmbz_wallets';
$user_wallet = $wpdb->get_row($wpdb->prepare("SELECT extra_data FROM {$table_wallets} WHERE user_telemovel = %s", $telemovel));

$w_extra = !empty($user_wallet->extra_data) ? json_decode($user_wallet->extra_data, true) : [];

// 1.1 Permissões do plano VIP (Padrão)
$perms = $w_extra['vip_permissions'] ?? ['distribute' => 1, 'site' => 1, 'social' => 1, 'video' => 1];

// 1.2 Verificar Castigos aplicados pela administração
$admin_block_promo = !empty($w_extra['block_promotions']) ? true : false;
$admin_block_video = !empty($w_extra['block_video_applications']) ? true : false;

// [1.6.47] Bloqueios globais (toda a plataforma) — site e social separados
$global_block_site   = function_exists('rmbz_is_globally_blocked') ? rmbz_is_globally_blocked('site') : false;
$global_block_social = function_exists('rmbz_is_globally_blocked') ? rmbz_is_globally_blocked('social') : false;
$global_block_video  = function_exists('rmbz_is_globally_blocked') ? rmbz_is_globally_blocked('video') : false;

// Combinar per-user + global (per-user `block_promotions` cobre os dois)
$any_block_site   = $admin_block_promo || $global_block_site;
$any_block_social = $admin_block_promo || $global_block_social;
$any_block_video  = $admin_block_video || $global_block_video;

// 1.3 Regra Final
$perm_site   = !empty($perms['site'])   && !$any_block_site;
$perm_social = !empty($perms['social']) && !$any_block_social;
$perm_video  = !empty($perms['video'])  && !$any_block_video;

// 1.4 Motivos — distinguem entre per-user e global (plataforma)
if ( $global_block_site && !$admin_block_promo ) {
    $motivo_site = 'Suspenso (Plataforma)';
} else {
    $motivo_site = $admin_block_promo ? 'Bloqueado (Admin)' : 'Bloqueado (VIP)';
}
if ( $global_block_social && !$admin_block_promo ) {
    $motivo_social = 'Suspenso (Plataforma)';
} else {
    $motivo_social = $admin_block_promo ? 'Bloqueado (Admin)' : 'Bloqueado (VIP)';
}
if ( $global_block_video && !$admin_block_video ) {
    $motivo_video = 'Suspenso (Plataforma)';
} else {
    $motivo_video = $admin_block_video ? 'Bloqueado (Admin)' : 'Bloqueado (VIP)';
}

// ==========================================================
// LÓGICA 2: VERIFICAR SE HÁ ENVIOS PENDENTES
// ==========================================================
$pendente_tipo = '';

// A. Verificar Músicas (Site ou Social)
$table_submissions = $wpdb->prefix . 'rmbz_artist_submissions';
$submissao = $wpdb->get_row( $wpdb->prepare(
    "SELECT scenario_type FROM {$table_submissions} WHERE artist_telemovel = %s AND review_status = 'pendente' LIMIT 1",
    $telemovel
) );

if ( $submissao ) {
    $pendente_tipo = $submissao->scenario_type;
} else {
    // B. Verificar Projetos (Ganhar Vídeo)
    $table_projects = $wpdb->prefix . 'rmbz_artist_projects';
    $projeto = $wpdb->get_row( $wpdb->prepare(
        "SELECT scenario_type FROM {$table_projects} WHERE artist_telemovel = %s AND production_status = 'pending_review' LIMIT 1",
        $telemovel
    ) );
    
    if ( $projeto ) {
        $pendente_tipo = 'Candidatura a Videoclipe'; 
    }
}

// Prepara a classe CSS para desfocar o formulário se tiver pendentes
$classe_bloqueio = '';
if ( ! empty( $pendente_tipo ) ) {
    $classe_bloqueio = 'onemz-formulario-bloqueado';
}
?>

<?php
// [DS 1.5.68] Ícones SVG para o selector de tipo. Substituem emojis 🎵 🎬
// 🏆 🔒 ⏳ que mudavam de aspecto entre Apple/Google/Windows. SVG inline
// com currentColor herda da variante (--brand para activos, --muted para
// bloqueados). Padrão consistente com o resto do plugin.
$icon_back = '<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
           . '<path d="M12 5l-5 5 5 5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>'
           . '</svg>';
$icon_clock = '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
            . '<circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="1.8"/>'
            . '<path d="M12 7v5l3 2" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>'
            . '</svg>';
$icon_lock = '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
           . '<rect x="4" y="11" width="16" height="10" rx="1.5" stroke="currentColor" stroke-width="1.8"/>'
           . '<path d="M8 11V7.5a4 4 0 018 0V11" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>'
           . '<circle cx="12" cy="16" r="1.2" fill="currentColor"/>'
           . '</svg>';
// Nota musical (Site)
$icon_music_note = '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
                 . '<path d="M9 18V5l12-2v13M9 18a3 3 0 11-6 0 3 3 0 016 0zm12-2a3 3 0 11-6 0 3 3 0 016 0z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>'
                 . '</svg>';
// Câmara de filmar (Social)
$icon_video = '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
            . '<rect x="3" y="6" width="14" height="12" rx="2" stroke="currentColor" stroke-width="1.8"/>'
            . '<path d="M17 10l4-2v8l-4-2v-4z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>'
            . '</svg>';
// Troféu (Ganhar Vídeo)
$icon_trophy = '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
             . '<path d="M7 4h10v6a5 5 0 01-10 0V4z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>'
             . '<path d="M17 6h2.5a1.5 1.5 0 010 3H17M7 6H4.5a1.5 1.5 0 000 3H7M12 15v3M9 21h6" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>'
             . '</svg>';
?>

<div class="rmbz-artist-dashboard onemz-artist-dashboard">

    <header class="rmbz-artist-dashboard__header">
        <h2 class="rmbz-artist-dashboard__title"><?php esc_html_e( 'Painel de Envio', '1mz-for-artists' ); ?></h2>
        <a href="<?php echo esc_url( home_url('/minha-conta/') ); ?>"
           class="rmbz-btn rmbz-btn--ghost rmbz-btn--sm">
            <?php echo $icon_back; ?>
            <?php esc_html_e( 'Voltar', '1mz-for-artists' ); ?>
        </a>
    </header>

    <?php if ( isset($_GET['status']) ): ?>
        <div class="rmbz-notice <?php echo esc_attr($_GET['status'] === 'success' ? 'success' : 'error'); ?>">
            <?php echo isset($_GET['msg']) ? esc_html(urldecode($_GET['msg'])) : 'Processado.'; ?>
        </div>
    <?php endif; ?>

    <?php if ($tem_subscricao): ?>

        <?php if ( ! empty( $pendente_tipo ) ) : ?>
            <?php
            // [DS 1.5.68] Alerta de envio pendente — substitui o bloco legacy
            // .onemz-alerta-pendente com inline styles + emoji ⏳.
            // Usa componente .rmbz-feature-card--warning + SVG relógio.
            // .onemz-formulario-bloqueado continua a aplicar via classe legacy
            // (filter: blur) — mantido até refactor do formulário em si.
            ?>
            <style>
                /* [LEGACY 1.5.68] Esta classe continua até o form ser modernizado.
                 * Quando o utilizador tem submissão pendente, o form fica blur+desactivado.
                 * Aplicada no wrapper logo a seguir. */
                .onemz-formulario-bloqueado { filter: blur(6px) grayscale(50%); pointer-events: none; opacity: 0.4; user-select: none; transition: all 0.3s ease; }
            </style>

            <div class="rmbz-pending-alert">
                <div class="rmbz-pending-alert__icon"><?php echo $icon_clock; ?></div>
                <div class="rmbz-pending-alert__body">
                    <h3 class="rmbz-pending-alert__title"><?php esc_html_e( 'Aguarde a Validação', '1mz-for-artists' ); ?></h3>
                    <p class="rmbz-pending-alert__msg">
                        <?php
                        printf(
                            /* translators: %s = tipo de submissão pendente */
                            esc_html__( 'Já tem um formulário em análise do tipo: %s.', '1mz-for-artists' ),
                            '<strong>' . esc_html($pendente_tipo) . '</strong>'
                        );
                        ?>
                    </p>
                    <p class="rmbz-pending-alert__msg-aux">
                        <?php esc_html_e( 'Para evitar duplicações, por favor aguarde que a nossa equipa aprove ou rejeite o seu pedido atual antes de enviar uma nova obra.', '1mz-for-artists' ); ?>
                    </p>
                </div>
            </div>
        <?php endif; ?>

        <div class="<?php echo esc_attr($classe_bloqueio); ?>">

            <div class="rmbz-type-selector submission-type-selector">
                <h3 class="rmbz-type-selector__heading"><?php esc_html_e( 'Qual é o seu objetivo hoje?', '1mz-for-artists' ); ?></h3>

                <div class="rmbz-type-selector__grid type-buttons-grid">

                    <?php
                    // [DS 1.5.68] Helper inline para reduzir verbosidade — cada tipo
                    // tem activo + bloqueado, padrão repetitivo. Helper permite
                    // tabela de configuração + foreach.
                    $type_options = [
                        [
                            'key'      => 'audio_site',
                            'allowed'  => $perm_site,
                            'icon'     => $icon_music_note,
                            'title'    => __( 'Enviar para o Site', '1mz-for-artists' ),
                            'subtitle' => __( 'Publicar Música', '1mz-for-artists' ),
                            'reason'   => $motivo_site,
                            'special'  => false,
                        ],
                        [
                            'key'      => 'video_social',
                            'allowed'  => $perm_social,
                            'icon'     => $icon_video,
                            'title'    => __( 'Redes Sociais', '1mz-for-artists' ),
                            'subtitle' => __( 'Divulgar Vídeo', '1mz-for-artists' ),
                            'reason'   => $motivo_social,
                            'special'  => false,
                        ],
                        [
                            'key'      => 'win_video',
                            'allowed'  => $perm_video,
                            'icon'     => $icon_trophy,
                            'title'    => __( 'Ganhar Vídeo', '1mz-for-artists' ),
                            'subtitle' => __( 'Candidatar a Produção', '1mz-for-artists' ),
                            'reason'   => $motivo_video,
                            'special'  => true,
                        ],
                    ];
                    ?>

                    <?php foreach ( $type_options as $opt ): ?>
                        <?php if ( $opt['allowed'] ): ?>
                            <button type="button"
                                    class="rmbz-type-card type-option<?php echo $opt['special'] ? ' is-special special-option' : ''; ?>"
                                    data-type="<?php echo esc_attr($opt['key']); ?>"
                                    onclick="selectType('<?php echo esc_attr($opt['key']); ?>')">
                                <span class="rmbz-type-card__icon type-icon"><?php echo $opt['icon']; ?></span>
                                <strong class="rmbz-type-card__title"><?php echo esc_html($opt['title']); ?></strong>
                                <small class="rmbz-type-card__subtitle"><?php echo esc_html($opt['subtitle']); ?></small>
                            </button>
                        <?php else: ?>
                            <div class="rmbz-type-card rmbz-type-card--locked type-option locked"
                                 title="<?php esc_attr_e( 'Acesso Restrito', '1mz-for-artists' ); ?>"
                                 aria-disabled="true">
                                <span class="rmbz-type-card__icon rmbz-type-card__icon--locked type-icon"><?php echo $icon_lock; ?></span>
                                <strong class="rmbz-type-card__title"><?php echo esc_html($opt['title']); ?></strong>
                                <small class="rmbz-type-card__lock-reason"><?php echo esc_html($opt['reason']); ?></small>
                            </div>
                        <?php endif; ?>
                    <?php endforeach; ?>

                </div>
            </div>

            <div id="explanation-box" class="rmbz-notice info" style="display:none; margin-top:20px;">
                <span id="explanation-text"></span>
            </div>
            
            <form id="smart-submission-form" action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="post" enctype="multipart/form-data">
                
                <input type="hidden" name="action" value="rmbz_handle_frontend_upload">
                <?php wp_nonce_field('rmbz_frontend_upload_nonce'); ?>
                
                <input type="hidden" id="rmbz_audio_upload_nonce" value="<?php echo wp_create_nonce('rmbz_audio_upload_nonce'); ?>">
                <input type="hidden" name="submission_type" id="input_submission_type" value="">

                <div class="rmbz-form-body">
                    
                    <div id="fields-site" class="conditional-section" style="display:none;">
                        
                        <h4 class="section-title">1. Informações Básicas (Site)</h4>

                        <div class="rmbz-form-group" style="background:#252525; padding:15px; border-radius:6px; border:1px solid #f0b90b;">
                            <label class="check-label" style="margin:0; font-size:15px; font-weight:bold; color:#f0b90b;">
                                <input type="checkbox" name="is_album" id="is_album_checkbox" value="yes" onchange="toggleAlbumMode()" style="width:20px; height:20px;">
                                <span>💿 Isto é um Álbum ou EP? (Múltiplas faixas)</span>
                            </label>
                        </div>

                        <div class="rmbz-form-group"><label>Artista Principal *</label><input type="text" name="artist_name" placeholder="Nome artístico" class="rmbz-input"></div>
                        <div class="rmbz-form-group"><label id="label-music-title">Título da Música *</label><input type="text" name="music_title" placeholder="Nome da obra" class="rmbz-input"></div>

                        <div class="rmbz-form-group">
                            <label>Gênero Musical *</label>
                            <select name="music_genre" class="rmbz-select">
                                <option value="">Selecione...</option><option value="Hip-Hop">Hip-Hop</option><option value="Trap">Trap</option><option value="R&B">R&B</option><option value="Pandza">Pandza</option><option value="Kizomba">Kizomba</option><option value="Afro House">Afro House</option><option value="Amapiano">Amapiano</option><option value="Marrabenta">Marrabenta</option><option value="Gospel">Gospel</option><option value="Outro">Outro</option>
                            </select>
                        </div>

                        <div class="rmbz-form-group"><label>Tem Participação (Feat)?</label><div class="radio-group"><label><input type="radio" name="has_feat" value="no" checked onclick="toggleField('feat-box-site', false)"> Não</label><label><input type="radio" name="has_feat" value="yes" onclick="toggleField('feat-box-site', true)"> Sim</label></div></div>
                        <div id="feat-box-site" class="rmbz-form-group hidden-box"><label>Nome(s) da(s) Participação(ões):</label><input type="text" name="feat_name" placeholder="Ex: Artista A, Artista B" class="rmbz-input"></div>

                        <div class="rmbz-form-group"><label>Data Ideal de Publicação *</label><input type="date" name="release_date" class="rmbz-input" style="color-scheme:dark;"></div>

                        <h4 class="section-title">2. Ficheiros & Links</h4>

                        <div class="rmbz-upload-section">
                            <label>Capa do Áudio (Imagem Quadrada) *</label>
                            <div class="drop-zone js-drop-zone" data-target="file-cover">
                                <span class="drop-icon">🖼️</span><span class="drop-text">Carregar Capa (JPG/PNG)</span>
                                <input type="file" name="cover_image" id="file-cover" accept="image/*" style="display:none;" onchange="previewFile(this, 'preview-cover')">
                            </div>
                            <div id="preview-cover" class="file-preview" style="display:none;"></div>
                        </div>

                        <div id="single-audio-upload" class="rmbz-upload-section">
                            <label style="color:#f0b90b; font-weight:bold;">Upload do Áudio (MP3 ou WAV) *</label>
                            <div id="dropzone-site" class="modern-audio-dropzone" onclick="triggerAjaxUpload('dropzone-site', 'file-audio-site')">
                                <div class="upload-ui">
                                    <span style="font-size: 45px; display: block; margin-bottom: 10px;">🎵</span>
                                    <h4 style="color:#fff; margin:0 0 5px;">Clique para carregar a música</h4>
                                    <p style="color:#777; font-size:12px; margin:0;">Formato: .WAV ou .MP3 (Máx: 50MB)</p>
                                </div>
                                <input type="file" id="file-audio-site" accept=".mp3,.wav,audio/mpeg,audio/wav" style="display:none;" onchange="handleAjaxAudioUpload(this, 'dropzone-site', 'hidden-audio-url-site')">
                                <input type="hidden" name="audio_file_url" id="hidden-audio-url-site">
                                
                                <div class="progress-container" style="display:none; max-width:300px; margin:0 auto;">
                                    <p style="color:#ccc; font-size:13px; margin-bottom:10px;">A enviar... 🚀</p>
                                    <div style="background:#222; border-radius:20px; height:12px; border:1px solid #333;"><div class="progress-bar" style="height:100%; width:0%; background:linear-gradient(90deg, #f0b90b, #ffe270); transition:0.2s;"></div></div>
                                    <p class="progress-text" style="color:#f0b90b; font-size:14px; font-weight:bold; margin-top:10px;">0%</p>
                                </div>
                                <div class="success-ui" style="display:none;">
                                    <span style="font-size:40px; color:#2ecc71; display:block; margin-bottom:10px;">✅</span><h4 style="color:#2ecc71; margin:0 0 5px;">Upload Concluído!</h4><p class="success-filename" style="color:#aaa; font-size:12px; margin:0;"></p>
                                    <button type="button" onclick="resetAjaxUpload(event, 'dropzone-site', 'file-audio-site', 'hidden-audio-url-site')" style="background:none; border:1px solid #555; color:#ccc; padding:5px 15px; border-radius:4px; font-size:11px; margin-top:10px; cursor:pointer;">Mudar Música</button>
                                </div>
                            </div>
                        </div>

                        <div id="album-audio-upload" style="display:none; background:#1a1a1a; border:1px solid #444; border-radius:8px; padding:20px; margin-bottom:20px;">
                            <label style="color:#f0b90b; font-size:16px;">Faixas do Álbum / EP *</label>
                            <p style="font-size:12px; color:#aaa; margin-top:5px; margin-bottom:15px;">Adicione o título de cada música e carregue o ficheiro MP3 correspondente.</p>
                            <div id="album-tracks-container">
                                <div class="album-track-row" style="display:flex; gap:10px; margin-bottom:10px; align-items:center; background:#222; padding:10px; border-radius:6px;">
                                    <span style="font-weight:bold; color:#777; width:20px;">1.</span>
                                    <input type="text" name="album_track_titles[]" placeholder="Título da Faixa" class="rmbz-input" style="flex:1;">
                                    <input type="file" name="album_track_files[]" accept=".mp3,.wav" style="color:#ccc; font-size:12px; max-width:200px;">
                                </div>
                            </div>
                            <button type="button" class="rmbz-btn-secondary" onclick="addAlbumTrack()" style="margin-top:10px; font-size:12px; padding:8px 15px;">+ Adicionar Outra Faixa</button>
                        </div>

                        <div class="rmbz-form-group"><label>Tem Vídeo Clipe?</label><div class="radio-group"><label><input type="radio" name="has_video" value="no" checked onclick="toggleField('video-box-site', false)"> Não</label><label><input type="radio" name="has_video" value="yes" onclick="toggleField('video-box-site', true)"> Sim</label></div></div>
                        <div id="video-box-site" class="rmbz-form-group hidden-box"><label>Link do YouTube (Vídeo ou Áudio):</label><input type="url" name="youtube_link" placeholder="https://youtube.com/watch?v=..." class="rmbz-input"></div>

                        <div class="rmbz-form-group"><label>Disponível nas Plataformas Digitais?</label><div class="radio-group"><label><input type="radio" name="on_platforms" value="no" checked onclick="toggleField('platforms-box', false)"> Não</label><label><input type="radio" name="on_platforms" value="yes" onclick="toggleField('platforms-box', true)"> Sim</label></div></div>
                        <div id="platforms-box" class="hidden-box">
                            <div class="rmbz-form-group"><label>Link do Spotify:</label><input type="url" name="spotify_link" placeholder="Link Spotify" class="rmbz-input"></div>
                            <div class="rmbz-form-group"><label>Link do iTunes / Apple Music:</label><input type="url" name="apple_music_link" placeholder="Link Apple Music" class="rmbz-input"></div>
                        </div>

                        <h4 class="section-title">3. Detalhes Finais</h4>

                        <div class="rmbz-form-group"><label>Redes Sociais Oficiais *</label><input type="url" name="social_link" placeholder="Link do Instagram ou TikTok" class="rmbz-input"></div>
                        <div class="rmbz-form-group"><label>Descrição da Música *</label><textarea name="submission_concept" rows="4" class="rmbz-input" placeholder="Conte um pouco sobre a música, mensagem, produção..."></textarea></div>

                        <div class="rmbz-declaration">
                            <label class="check-label"><input type="checkbox" name="declaration_check_site" class="req-site"><span><strong>Declaração de Autoria:</strong> Declaro que possuo os direitos desta obra.</span></label>
                            <label class="check-label"><input type="checkbox" name="terms_check_site" class="req-site"><span><strong>Termos e Condições:</strong> Aceito os termos de publicação da 1MusicMoz.</span></label>
                        </div>
                        
                        <button type="submit" class="rmbz-btn-submit">PUBLICAR 🎵</button>
                    </div>

                    <div id="fields-social" class="conditional-section" style="display:none;">
                        
                        <h4 class="section-title">1. Detalhes da Obra (Vídeo)</h4>

                        <div class="rmbz-form-group"><label>Artista Principal *</label><input type="text" name="video_artist_name" placeholder="Nome artístico" class="rmbz-input"></div>
                        <div class="rmbz-form-group"><label>Título do Vídeo / Música *</label><input type="text" name="video_title" placeholder="Nome da obra" class="rmbz-input"></div>

                        <div class="rmbz-form-group">
                            <label>Canais de Divulgação *</label>
                            <div class="channel-selector">
                                <label class="channel-option"><input type="checkbox" name="dist_channels[]" value="Facebook" checked> 🔵 Facebook</label>
                                <label class="channel-option"><input type="checkbox" name="dist_channels[]" value="YouTube" checked> 🔴 YouTube</label>
                            </div>
                        </div>

                        <div class="rmbz-form-group">
                            <label>Link da Obra (Download do Vídeo HD/4K) *</label>
                            <input type="url" name="video_link_url" placeholder="Drive, Dropbox, WeTransfer..." class="rmbz-input">
                            <p style="font-size:11px; color:#aaa; margin-top:5px;">Cole o link para baixarmos o arquivo original com qualidade máxima.</p>
                        </div>

                        <div class="rmbz-upload-section">
                            <label>Capa do Vídeo (Thumbnail) *</label>
                            <div class="drop-zone js-drop-zone" data-target="file-video-thumb">
                                <span class="drop-icon">🖼️</span><span class="drop-text">Carregar Thumbnail (JPG/PNG)</span>
                                <input type="file" name="video_thumbnail" id="file-video-thumb" accept="image/*" style="display:none;" onchange="previewFile(this, 'preview-video-thumb')">
                            </div>
                            <div id="preview-video-thumb" class="file-preview" style="display:none;"></div>
                        </div>

                        <div class="rmbz-form-group">
                            <label>Gênero Musical *</label>
                            <select name="video_genre" class="rmbz-select">
                                <option value="">Selecione...</option><option value="Hip-Hop">Hip-Hop</option><option value="Trap">Trap</option><option value="Pandza">Pandza</option><option value="Kizomba">Kizomba</option><option value="Afro House">Afro House</option><option value="Amapiano">Amapiano</option><option value="Marrabenta">Marrabenta</option><option value="Gospel">Gospel</option><option value="Outro">Outro</option>
                            </select>
                        </div>

                        <div class="rmbz-form-group"><label>Tem Participação (Feat)?</label><div class="radio-group"><label><input type="radio" name="video_has_feat" value="no" checked onclick="toggleField('feat-box-social', false)"> Não</label><label><input type="radio" name="video_has_feat" value="yes" onclick="toggleField('feat-box-social', true)"> Sim</label></div></div>
                        <div id="feat-box-social" class="rmbz-form-group hidden-box"><label>Nome(s) da(s) Participação(ões):</label><input type="text" name="video_feat_name" placeholder="Ex: Artista A, Artista B" class="rmbz-input"></div>

                        <div class="rmbz-form-group"><label>Data Ideal de Publicação *</label><input type="date" name="video_release_date" class="rmbz-input" style="color-scheme:dark;"></div>

                        <h4 class="section-title">2. Conteúdo do Post</h4>

                        <div class="rmbz-form-group"><label>Legenda do Post / Descrição do Conteúdo *</label><textarea name="social_caption" rows="5" class="rmbz-input" placeholder="Escreva o texto que será publicado nas redes sociais..."></textarea></div>

                        <div class="rmbz-declaration">
                            <label class="check-label"><input type="checkbox" name="declaration_check_social" class="req-social"><span><strong>Declaração de Autoria:</strong> Confirmo que sou o detentor dos direitos deste vídeo.</span></label>
                            <label class="check-label"><input type="checkbox" name="terms_check_social" class="req-social"><span><strong>Termos e Condições:</strong> Aceito os termos de divulgação.</span></label>
                        </div>

                        <button type="submit" class="rmbz-btn-submit">ENVIAR VÍDEO 🎬</button>
                    </div>

                    <div id="fields-project" class="conditional-section" style="display:none;">
                        
                        <h4 class="section-title">1. Dados da Candidatura</h4>
                        <div style="display:flex; gap:12px; align-items:flex-start; background:var(--rmbz-warning-soft, rgba(245,158,11,0.12)); border:1px solid var(--rmbz-warning, #f59e0b); border-radius:var(--rmbz-radius-lg, 16px); padding:14px 16px; margin-bottom:20px;">
                            <span style="font-size:22px; line-height:1; flex-shrink:0;">⚠️</span>
                            <div style="font-size:13px; line-height:1.5; color:var(--rmbz-text-secondary, #ddd);">
                                <strong style="color:var(--rmbz-warning, #f59e0b); display:block; margin-bottom:2px;">Regra Principal</strong>
                                A música enviada <strong>não pode</strong> ter videoclipe oficial existente.
                            </div>
                        </div>

                        <div class="rmbz-form-group"><label>Nome do Artista *</label><input type="text" name="project_artist" class="rmbz-input" placeholder="Seu nome artístico"></div>
                        <div class="rmbz-form-group"><label>Título da Música *</label><input type="text" name="project_title" class="rmbz-input" placeholder="Nome da música"></div>
                        <div class="rmbz-form-group"><label>Nome do Produtor *</label><input type="text" name="music_producer" placeholder="Quem produziu o beat/captação" class="rmbz-input"></div>

                        <?php /* [1.5.398] Participação (feat). [1.5.401] Com conta 1MZ: verificação
                                 em tempo real ("artista válido") + o participante terá de ACEITAR
                                 o convite — se recusar, o projeto é cancelado. */ ?>
                        <div class="rmbz-form-group">
                            <label style="display:flex; gap:8px; align-items:center; cursor:pointer;">
                                <input type="checkbox" name="feat_enabled" value="1"
                                       onchange="document.getElementById('rmbz-feat-box').style.display = this.checked ? 'block' : 'none';">
                                🎤 A música tem participação (feat)?
                            </label>
                            <div id="rmbz-feat-box" style="display:none; margin-top:10px; background:rgba(240,185,11,0.06); border:1px solid rgba(240,185,11,0.25); border-radius:12px; padding:12px;">
                                <label>Nome do participante</label>
                                <input type="text" name="feat_name" class="rmbz-input" placeholder="Nome artístico do feat">
                                <label style="display:flex; gap:8px; align-items:center; margin-top:10px; cursor:pointer;">
                                    <input type="checkbox" id="rmbz-feat-has" name="feat_has_account" value="1"
                                           onchange="document.getElementById('rmbz-feat-tel-wrap').style.display = this.checked ? 'block' : 'none'; rmbzFeatCheckNow();">
                                    O participante tem conta 1MZ For Artists?
                                </label>
                                <div id="rmbz-feat-tel-wrap" style="display:none; margin-top:8px;">
                                    <input type="tel" id="rmbz-feat-tel" name="feat_tel" class="rmbz-input" placeholder="Número da conta dele" autocomplete="off">
                                    <div id="rmbz-feat-status" style="font-size:12px; font-weight:700; margin-top:6px; display:none;"></div>
                                    <p style="font-size:11px; opacity:.75; margin:8px 0 0;">⚠️ O participante vai receber um convite e tem de <strong>aceitar</strong> a participação. Se recusar, o projeto é cancelado automaticamente.</p>
                                </div>
                                <p style="font-size:11px; opacity:.7; margin:8px 0 0;">Sem conta 1MZ fica apenas para registo — não altera pagamentos, contrato nem a produção.</p>
                            </div>
                        </div>
                        <script>
                        /* [1.5.401] Verificação em tempo real da conta do participante. */
                        (function(){
                            var telInput = null, statusEl = null, timer = null;
                            var state = 'idle'; // idle | checking | valid | invalid
                            function els(){
                                telInput = telInput || document.getElementById('rmbz-feat-tel');
                                statusEl = statusEl || document.getElementById('rmbz-feat-status');
                                return telInput && statusEl;
                            }
                            function show(msg, color){
                                if (!els()) return;
                                statusEl.style.display = 'block';
                                statusEl.style.color = color;
                                statusEl.textContent = msg;
                            }
                            function doCheck(){
                                if (!els()) return;
                                var tel = (telInput.value || '').replace(/[^0-9+]/g, '');
                                if (tel.length < 7) { state = 'idle'; statusEl.style.display = 'none'; return; }
                                state = 'checking';
                                show('A verificar a conta…', '#b8b8c0');
                                var data = new URLSearchParams();
                                data.append('action', 'rmbz_feat_check_account');
                                data.append('tel', tel);
                                data.append('_wpnonce', '<?php echo esc_js( wp_create_nonce( 'rmbz_feat_check' ) ); ?>');
                                fetch('<?php echo esc_js( admin_url( 'admin-ajax.php' ) ); ?>', { method: 'POST', body: data, credentials: 'same-origin' })
                                    .then(function(r){ return r.json(); })
                                    .then(function(j){
                                        if (j && j.self) { state = 'invalid'; show('✕ Esse número é a tua própria conta — o participante tem de ser outro artista.', '#e05252'); }
                                        else if (j && j.exists) { state = 'valid'; show('✔ Artista válido — ' + (j.name || 'conta encontrada'), '#2ecc71'); }
                                        else { state = 'invalid'; show('✕ Conta não encontrada na plataforma. Confirma o número ou desmarca "tem conta 1MZ".', '#e05252'); }
                                    })
                                    .catch(function(){ state = 'idle'; show('Não foi possível verificar agora — tenta de novo.', '#f0b90b'); });
                            }
                            window.rmbzFeatCheckNow = function(){ clearTimeout(timer); timer = setTimeout(doCheck, 250); };
                            document.addEventListener('input', function(e){
                                if (e.target && e.target.id === 'rmbz-feat-tel') { clearTimeout(timer); timer = setTimeout(doCheck, 450); }
                            });
                            // Bloqueia a submissão enquanto a conta não for válida.
                            document.addEventListener('submit', function(e){
                                var form = e.target;
                                if (!form || !form.querySelector || !form.querySelector('#rmbz-feat-tel')) return;
                                var enabled = form.querySelector('input[name="feat_enabled"]');
                                var has = document.getElementById('rmbz-feat-has');
                                if (enabled && enabled.checked && has && has.checked && state !== 'valid') {
                                    e.preventDefault();
                                    doCheck();
                                    show(state === 'checking' ? 'A verificar a conta… aguarda um instante.' : '✕ Verifica a conta do participante antes de enviar (tem de aparecer "Artista válido").', '#e05252');
                                    if (els()) statusEl.scrollIntoView({ behavior: 'smooth', block: 'center' });
                                }
                            }, true);
                        })();
                        </script>

                        <div class="rmbz-form-group"><label>Link Opcional (Se já tiver no SoundCloud/Drive):</label><input type="url" name="project_link_opt" placeholder="https://..." class="rmbz-input"></div>

                        <div class="rmbz-upload-section">
                            <label style="color:#f0b90b; font-weight:bold;">MP3 da Música (Demo) *</label>
                            <div id="dropzone-project" class="modern-audio-dropzone" onclick="triggerAjaxUpload('dropzone-project', 'file-audio-project')">
                                <div class="upload-ui">
                                    <span style="font-size: 45px; display: block; margin-bottom: 10px;">💿</span>
                                    <h4 style="color:#fff; margin:0 0 5px;">Clique para carregar a Demo</h4>
                                    <p style="color:#777; font-size:12px; margin:0;">Formato: .WAV ou .MP3 (Máx: 50MB)</p>
                                </div>
                                <input type="file" id="file-audio-project" accept=".mp3,.wav,audio/mpeg,audio/wav" style="display:none;" onchange="handleAjaxAudioUpload(this, 'dropzone-project', 'hidden-audio-url-project')">
                                <input type="hidden" name="audio_file_project_url" id="hidden-audio-url-project">
                                
                                <div class="progress-container" style="display:none; max-width:300px; margin:0 auto;">
                                    <p style="color:#ccc; font-size:13px; margin-bottom:10px;">A enviar para avaliação... 🚀</p>
                                    <div style="background:#222; border-radius:20px; height:12px; border:1px solid #333;"><div class="progress-bar" style="height:100%; width:0%; background:linear-gradient(90deg, #f0b90b, #ffe270); transition:0.2s;"></div></div>
                                    <p class="progress-text" style="color:#f0b90b; font-size:14px; font-weight:bold; margin-top:10px;">0%</p>
                                </div>
                                <div class="success-ui" style="display:none;">
                                    <span style="font-size:40px; color:#2ecc71; display:block; margin-bottom:10px;">✅</span><h4 style="color:#2ecc71; margin:0 0 5px;">Demo Recebida!</h4><p class="success-filename" style="color:#aaa; font-size:12px; margin:0;"></p>
                                    <button type="button" onclick="resetAjaxUpload(event, 'dropzone-project', 'file-audio-project', 'hidden-audio-url-project')" style="background:none; border:1px solid #555; color:#ccc; padding:5px 15px; border-radius:4px; font-size:11px; margin-top:10px; cursor:pointer;">Mudar Demo</button>
                                </div>
                            </div>
                        </div>

                        <h4 class="section-title">2. Escolha o Cenário</h4>
                        <div class="scenario-grid">
                            <label class="scenario-card"><input type="radio" name="video_scenario" value="basic" checked onchange="updateScenarioInfo('basic')"><div class="sc-content"><span class="sc-icon">🎬</span><strong>Básico</strong><small>Produção Simples</small></div></label>
                            <label class="scenario-card"><input type="radio" name="video_scenario" value="professional" onchange="updateScenarioInfo('professional')"><div class="sc-content"><span class="sc-icon">🎥</span><strong>Profissional</strong><small>Produção Média</small></div></label>
                            <label class="scenario-card"><input type="radio" name="video_scenario" value="cinema" onchange="updateScenarioInfo('cinema')"><div class="sc-content"><span class="sc-icon">⭐️</span><strong>Cinema</strong><small>Alto Nível</small></div></label>
                        </div>

                        <div id="scenario-details" class="scenario-info-box"></div>

                        <h4 class="section-title">3. O Seu Conceito</h4>
                        <div class="rmbz-form-group"><label>Ideia do Videoclipe *</label><textarea name="project_pitch" rows="5" class="rmbz-input" placeholder="Descreva o conceito visual, estilo, ambiente..."></textarea></div>
                        
                        <h4 class="section-title">4. Confirmações Obrigatórias</h4>
                        <div class="rmbz-declaration">
                            <label class="check-label"><input type="checkbox" name="decl_auth_project" class="req-project"><span>Sou o autor legítimo desta música.</span></label>
                            <label class="check-label"><input type="checkbox" name="decl_novideo_project" class="req-project"><span>Confirmo que esta música <strong>NÃO</strong> possui videoclipe oficial.</span></label>
                            <label class="check-label"><input type="checkbox" name="decl_terms_project" class="req-project"><span>Aceito que a candidatura será avaliada pela equipe 1MZ.</span></label>
                        </div>

                        <button type="submit" class="rmbz-btn-submit">ENVIAR CANDIDATURA 🏆</button>
                    </div>

                </div>
            </form>

        </div> <?php else: ?>
        
        <div class="rmbz-lock-screen project-theme">
            <div class="lock-header">
                <div class="project-logo">⭐️</div>
                <h2>Projecto 1MZ For Artists</h2>
                <p class="subtitle">Ative a sua subscrição para desbloquear.</p>
            </div>
            <div class="price-tag">
                <span>Contribuição Mensal</span>
                <strong><?php echo number_format($custo, 2, ',', '.'); ?> MT</strong>
            </div>
            <?php if ($saldo >= $custo): ?>
                <form method="post" action="<?php echo esc_url( admin_url('admin-post.php') ); ?>">
                    <input type="hidden" name="action" value="rmbz_pay_subscription">
                    <?php wp_nonce_field('rmbz_pay_sub_nonce'); ?>
                    <button type="submit" class="rmbz-btn-primary pulsate">ATIVAR AGORA 🚀</button>
                </form>
            <?php else: ?>
                <div class="insufficient-funds">
                    <p style="color:#e74c3c;">Saldo Insuficiente</p>
                    <a href="<?php echo home_url('/minha-conta/'); ?>" class="rmbz-btn-secondary">Fazer Depósito →</a>
                </div>
            <?php endif; ?>
        </div>

    <?php endif; ?>
</div>

<script>
    // ==========================================================
    // JS DO NOVO UPLOAD AJAX
    // ==========================================================
    function triggerAjaxUpload(dropzoneId, fileInputId) {
        const urlInput = document.getElementById('hidden-audio-url-' + dropzoneId.split('-')[1]);
        if (!urlInput.value) document.getElementById(fileInputId).click();
    }

    function resetAjaxUpload(e, dropzoneId, fileInputId, hiddenUrlId) {
        if(e) e.stopPropagation();
        const dropzone = document.getElementById(dropzoneId);
        dropzone.querySelector('.upload-ui').style.display = 'block';
        dropzone.querySelector('.progress-container').style.display = 'none';
        dropzone.querySelector('.success-ui').style.display = 'none';
        document.getElementById(fileInputId).value = '';
        document.getElementById(hiddenUrlId).value = '';
        dropzone.style.borderColor = '#444';
        dropzone.style.cursor = 'pointer';
        toggleFormSubmitBtn(false);
    }

    function handleAjaxAudioUpload(input, dropzoneId, hiddenUrlId) {
        let file = input.files[0];
        if (!file) return;

        if (file.size > 50 * 1024 * 1024) { alert('Atenção: A música excede o limite de 50MB.'); input.value = ''; return; }

        let validTypes = ['audio/mpeg', 'audio/wav', 'audio/x-wav', 'audio/mp3'];
        let ext = file.name.split('.').pop().toLowerCase();
        if (!validTypes.includes(file.type) && ext !== 'mp3' && ext !== 'wav') { alert('Formato inválido. Apenas MP3 ou WAV.'); input.value = ''; return; }

        const dropzone = document.getElementById(dropzoneId);
        dropzone.querySelector('.upload-ui').style.display = 'none';
        dropzone.querySelector('.progress-container').style.display = 'block';
        dropzone.style.borderColor = '#f0b90b';
        dropzone.style.cursor = 'default';
        toggleFormSubmitBtn(true);

        let formData = new FormData();
        formData.append('action', 'rmbz_async_audio_upload');
        formData.append('security', document.getElementById('rmbz_audio_upload_nonce').value);
        formData.append('async_audio_file', file);

        let xhr = new XMLHttpRequest();
        xhr.open('POST', '<?php echo admin_url("admin-ajax.php"); ?>', true);

        xhr.upload.onprogress = function(e) {
            if (e.lengthComputable) {
                let p = Math.round((e.loaded / e.total) * 100);
                dropzone.querySelector('.progress-bar').style.width = p + '%';
                dropzone.querySelector('.progress-text').innerText = p + '%';
            }
        };

        xhr.onload = function() {
            if (xhr.status === 200) {
                try {
                    let res = JSON.parse(xhr.responseText);
                    if (res.success) {
                        dropzone.querySelector('.progress-text').innerText = '100% - Pronto!';
                        setTimeout(() => {
                            dropzone.querySelector('.progress-container').style.display = 'none';
                            dropzone.querySelector('.success-ui').style.display = 'block';
                            dropzone.querySelector('.success-filename').innerText = file.name;
                            document.getElementById(hiddenUrlId).value = res.data.url;
                            dropzone.style.borderColor = '#2ecc71';
                            toggleFormSubmitBtn(false);
                        }, 500);
                    } else { alert('Erro no Upload: ' + res.data.message); resetAjaxUpload(null, dropzoneId, input.id, hiddenUrlId); }
                } catch(e) { alert('Erro de Resposta do Servidor. O upload falhou.'); resetAjaxUpload(null, dropzoneId, input.id, hiddenUrlId); }
            } else { alert('Erro de Conexão. Código: ' + xhr.status); resetAjaxUpload(null, dropzoneId, input.id, hiddenUrlId); }
        };
        xhr.onerror = function() { alert('A ligação falhou completamente. Verifique a sua internet.'); resetAjaxUpload(null, dropzoneId, input.id, hiddenUrlId); };
        xhr.send(formData);
    }

    function toggleFormSubmitBtn(disable) {
        document.querySelectorAll('.rmbz-btn-submit').forEach(btn => {
            btn.disabled = disable;
            btn.style.opacity = disable ? '0.5' : '1';
            btn.style.cursor = disable ? 'not-allowed' : 'pointer';
            if(disable && !btn.dataset.ogText) btn.dataset.ogText = btn.innerHTML;
            btn.innerHTML = disable ? 'A Enviar Áudio... ⏳' : (btn.dataset.ogText || 'ENVIAR');
        });
    }

    // ==========================================================
    // JS DO FORMULÁRIO GERAL
    // ==========================================================
    let trackCount = 1;

    function toggleAlbumMode() {
        const isAlbum = document.getElementById('is_album_checkbox').checked;
        const singleUpload = document.getElementById('single-audio-upload');
        const albumUpload = document.getElementById('album-audio-upload');
        const titleLabel = document.getElementById('label-music-title');
        
        if(isAlbum) {
            titleLabel.innerText = "Título do Álbum / EP *";
            singleUpload.style.display = 'none';
            albumUpload.style.display = 'block';
        } else {
            titleLabel.innerText = "Título da Música *";
            singleUpload.style.display = 'block';
            albumUpload.style.display = 'none';
        }
    }

    function addAlbumTrack() {
        trackCount++;
        const container = document.getElementById('album-tracks-container');
        const row = document.createElement('div');
        row.className = 'album-track-row';
        row.style.cssText = 'display:flex; gap:10px; margin-bottom:10px; align-items:center; background:#222; padding:10px; border-radius:6px;';
        row.innerHTML = `
            <span style="font-weight:bold; color:#777; width:20px;">${trackCount}.</span>
            <input type="text" name="album_track_titles[]" placeholder="Título da Faixa" class="rmbz-input" style="flex:1;">
            <input type="file" name="album_track_files[]" accept=".mp3,.wav" style="color:#ccc; font-size:12px; max-width:200px;">
            <button type="button" onclick="this.parentElement.remove()" style="background:#e74c3c; border:none; color:#fff; border-radius:4px; cursor:pointer; padding:5px 10px;">X</button>
        `;
        container.appendChild(row);
    }

    const scenarios = {
        'basic': { desc: "Produção simples, 1 locação, sem atores profissionais.", cost: "Baixo", req: "Normal", chance: "Alta (Fácil Aprovação)", color: "#2ecc71" },
        'professional': { desc: "Produção média, múltiplas locações, modelos profissionais.", cost: "Médio", req: "Boa Qualidade Musical", chance: "Média", color: "#f0b90b" },
        'cinema': { desc: "Produção cinematográfica completa, atores avançados.", cost: "Alto", req: "Alta Qualidade e Potencial", chance: "Baixa (Exige Hit)", color: "#e74c3c" }
    };

    function updateScenarioInfo(key) {
        const info = scenarios[key];
        const box = document.getElementById('scenario-details');
        box.innerHTML = `<div style="border-left: 3px solid ${info.color}; padding-left: 15px;">
            <p style="margin: 0 0 10px 0; font-size: 14px; color: #fff;">${info.desc}</p>
            <div style="display:grid; grid-template-columns: 1fr 1fr; gap:10px; font-size:12px;">
                <div>💰 Custo: <strong style="color:${info.color}">${info.cost}</strong></div>
                <div>🎯 Chance: <strong style="color:${info.color}">${info.chance}</strong></div>
                <div style="grid-column: span 2;">⚠️ Exigência: ${info.req}</div>
            </div></div>`;
        document.querySelectorAll('.scenario-card').forEach(c => c.classList.remove('selected'));
        document.querySelector(`input[value="${key}"]`).closest('.scenario-card').classList.add('selected');
    }

    function selectType(type) {
        document.getElementById('input_submission_type').value = type;
        
        // Remove a classe 'active' de todos (inclusive os bloqueados, para evitar erros visuais)
        document.querySelectorAll('.type-option').forEach(el => el.classList.remove('active'));
        
        // Pinta apenas o selecionado (se existir e não estiver bloqueado)
        let activeBtn = document.querySelector(`.type-option[data-type="${type}"]`);
        if(activeBtn) activeBtn.classList.add('active');

        const sections = ['fields-site', 'fields-social', 'fields-project'];
        sections.forEach(id => document.getElementById(id).style.display = 'none');
        document.getElementById('explanation-box').style.display = 'none';
        document.getElementById('smart-submission-form').style.display = 'block';

        document.querySelectorAll('input, select, textarea').forEach(el => {
            if (el.type !== 'hidden' && el.type !== 'submit') { el.required = false; }
        });

        if (type === 'audio_site') {
            document.getElementById('fields-site').style.display = 'block';
            document.querySelectorAll('.req-site').forEach(el => el.required = true);
            document.querySelector('input[name="artist_name"]').required = true;
            document.querySelector('input[name="music_title"]').required = true;
            document.querySelector('select[name="music_genre"]').required = true;
            toggleAlbumMode();
            
        } else if (type === 'video_social') {
            document.getElementById('fields-social').style.display = 'block';
            document.querySelectorAll('.req-social').forEach(el => el.required = true);
            document.querySelector('input[name="video_artist_name"]').required = true;
            document.querySelector('input[name="video_title"]').required = true;
            document.querySelector('input[name="video_link_url"]').required = true;
            
        } else if (type === 'win_video') {
            document.getElementById('fields-project').style.display = 'block';
            document.querySelectorAll('.req-project').forEach(el => el.required = true);
            document.querySelector('input[name="project_artist"]').required = true;
            document.querySelector('input[name="project_title"]').required = true;
            document.querySelector('input[name="music_producer"]').required = true;
            document.querySelector('textarea[name="project_pitch"]').required = true;
            updateScenarioInfo('basic');
        }
    }

    function toggleField(boxId, show) {
        const box = document.getElementById(boxId);
        if (show) { box.classList.add('visible'); box.style.display = 'block'; } 
        else { box.classList.remove('visible'); box.style.display = 'none'; box.querySelectorAll('input').forEach(inp => inp.value = ''); }
    }

    document.querySelectorAll('.js-drop-zone').forEach(zone => {
        zone.addEventListener('click', function() { document.getElementById(this.getAttribute('data-target')).click(); });
    });

    function previewFile(input, previewId) {
        if (input.files && input.files[0]) {
            var file = input.files[0];
            var previewBox = document.getElementById(previewId);
            if(file.type.startsWith('image/')){
                var reader = new FileReader();
                reader.onload = function(e){
                    previewBox.innerHTML = '<img src="'+e.target.result+'" style="max-width:100px; max-height:100px; border-radius:5px; margin-top:10px;">';
                    previewBox.innerHTML += '<div style="color:#2ecc71; font-size:12px;">✅ '+file.name+'</div>';
                    previewBox.style.display = 'block';
                }
                reader.readAsDataURL(file);
            } else {
                previewBox.innerHTML = '<div style="color:#2ecc71; margin-top:10px;">✅ '+file.name+'</div>';
                previewBox.style.display = 'block';
            }
        }
    }

    // ==========================================================
    // AUTO-SELEÇÃO INTELIGENTE COM BASE NAS PERMISSÕES
    // ==========================================================
    window.addEventListener('DOMContentLoaded', () => { 
        // Array com os botões que o artista TEM permissão de clicar
        const availableTypes = [];
        <?php if($perm_site) echo "availableTypes.push('audio_site');\n"; ?>
        <?php if($perm_social) echo "availableTypes.push('video_social');\n"; ?>
        <?php if($perm_video) echo "availableTypes.push('win_video');\n"; ?>
        
        if (availableTypes.length > 0) {
            // Se tiver permissões, abre automaticamente a primeira disponível
            selectType(availableTypes[0]); 
        } else {
            // Se não tiver NENHUMA permissão para esta página (ex: só tem Distribuição)
            document.getElementById('smart-submission-form').style.display = 'none';
            document.getElementById('explanation-box').innerHTML = '<span style="color:#e74c3c;"><strong>Sem Permissões Ativas:</strong> O seu plano VIP atual não lhe permite enviar obras por esta página. Consulte o seu perfil para ver as suas permissões.</span>';
            document.getElementById('explanation-box').style.display = 'block';
        }
    });

    // ==========================================================
    // VALIDAÇÃO INTELIGENTE DE LINKS (FRONTEND)
    // ==========================================================
    function validarLink(url, plataforma) {
        if (!url || url.trim() === '') return true; 
        url = url.toLowerCase();
        if (plataforma === 'youtube') return url.includes('youtube.com') || url.includes('youtu.be');
        if (plataforma === 'spotify') return url.includes('spotify.com');
        if (plataforma === 'apple') return url.includes('apple.com') || url.includes('music.apple.com');
        if (plataforma === 'drive') return url.includes('drive.google.com') || url.includes('dropbox.com') || url.includes('wetransfer.com') || url.includes('1drv.ms') || url.includes('mega.nz');
        return true;
    }

    document.querySelectorAll('.rmbz-input').forEach(input => {
        input.addEventListener('input', function() {
            this.style.borderColor = '#444'; 
            this.style.boxShadow = 'none';
        });
    });

    document.getElementById('smart-submission-form').addEventListener('submit', function(e) {
        let type = document.getElementById('input_submission_type').value;
        let hasError = false;
        let errorMsg = '';

        function setLinkError(selector, msg) {
            let input = document.querySelector(selector);
            if(input) {
                input.style.borderColor = '#e74c3c'; 
                input.style.boxShadow = '0 0 0 3px rgba(231, 76, 60, 0.2)';
                if(!hasError) { hasError = true; errorMsg = msg; input.focus(); }
            }
        }

        if (type === 'audio_site') {
            let cover = document.getElementById('file-cover');
            if(!cover.value) { e.preventDefault(); alert('⚠️ Atenção: Por favor, faça o upload da Capa da Música.'); return; }

            let isAlbum = document.getElementById('is_album_checkbox').checked;
            if (!isAlbum) {
                let audioUrl = document.getElementById('hidden-audio-url-site').value;
                if(!audioUrl) { e.preventDefault(); alert('⚠️ Atenção: Por favor, faça o upload do Ficheiro de Áudio (MP3) e aguarde concluir.'); return; }
            }

            let yt = document.querySelector('input[name="youtube_link"]').value;
            let onPlat = document.querySelector('input[name="on_platforms"][value="yes"]').checked;
            let spot = document.querySelector('input[name="spotify_link"]').value;
            let apple = document.querySelector('input[name="apple_music_link"]').value;

            if (document.querySelector('input[name="has_video"][value="yes"]').checked && !validarLink(yt, 'youtube')) {
                setLinkError('input[name="youtube_link"]', 'O link do Videoclipe tem de ser oficial do YouTube.');
            }
            if (onPlat && spot && !validarLink(spot, 'spotify')) {
                setLinkError('input[name="spotify_link"]', 'O link inserido não pertence ao Spotify.');
            }
            if (onPlat && apple && !validarLink(apple, 'apple')) {
                setLinkError('input[name="apple_music_link"]', 'O link inserido não pertence à Apple Music.');
            }

        } else if (type === 'video_social') {
            let thumb = document.getElementById('file-video-thumb');
            if(!thumb.value) { e.preventDefault(); alert('⚠️ Atenção: Por favor, faça o upload da Capa do Vídeo (Thumbnail).'); return; }

            let driveLink = document.querySelector('input[name="video_link_url"]').value;
            if (!validarLink(driveLink, 'drive')) {
                setLinkError('input[name="video_link_url"]', 'O link do arquivo HD deve ser do Google Drive, Dropbox, WeTransfer ou Mega.');
            }

        } else if (type === 'win_video') {
            let audioUrlProj = document.getElementById('hidden-audio-url-project').value;
            if(!audioUrlProj) { e.preventDefault(); alert('⚠️ Atenção: Por favor, faça o upload do MP3 de demonstração e aguarde concluir.'); return; }

            let refLink = document.querySelector('input[name="project_link_opt"]').value;
            if (refLink && !validarLink(refLink, 'youtube')) {
                setLinkError('input[name="project_link_opt"]', 'O link de referência do vídeo tem de ser do YouTube.');
            }
        }

        if (hasError) {
            e.preventDefault();
            alert('❌ LINK INVÁLIDO:\n' + errorMsg);
            document.querySelectorAll('.rmbz-btn-submit').forEach(btn => {
                btn.disabled = false;
                btn.style.opacity = '1';
                btn.style.cursor = 'pointer';
                if(btn.dataset.ogText) btn.innerHTML = btn.dataset.ogText;
            });
            return false;
        }
    });
</script>

<style>
    /* [DS 1.5.68] Regras legacy do header/container REMOVIDAS — substituídas
     * por componentes do design system (.rmbz-artist-dashboard, .rmbz-pending-alert,
     * .rmbz-type-card etc. em assets/css/03-components.css §16). As regras
     * abaixo afectam APENAS o que ainda não foi modernizado: campos do form,
     * uploads, paywall. Serão refactorizadas em versões futuras. */
    .onemz-artist-dashboard a, .onemz-artist-dashboard button, .onemz-artist-dashboard .rmbz-btn-submit, .onemz-artist-dashboard .rmbz-btn-primary, .onemz-artist-dashboard .rmbz-btn-secondary, .onemz-artist-dashboard .rmbz-back-link { text-decoration: none !important; box-shadow: none !important; }
    .onemz-artist-dashboard a:hover, .onemz-artist-dashboard button:hover { text-decoration: none !important; }
    .modern-audio-dropzone { border: 2px dashed var(--rmbz-border-subtle, #444); border-radius: var(--rmbz-radius-lg, 12px); padding: 40px 20px; text-align: center; background: var(--rmbz-bg-elevated, #111); cursor: pointer; transition: 0.3s; position: relative; margin-bottom: 25px; }
    .modern-audio-dropzone:hover { border-color: var(--rmbz-brand, #f0b90b); background: var(--rmbz-bg-hover, #1a1a1a); }
    .onemz-artist-dashboard * { box-sizing: border-box; }
    .section-title { color: var(--rmbz-brand, #f0b90b); border-bottom: 1px solid rgba(255,255,255,0.08); padding-bottom: 10px; margin-top: 35px; margin-bottom: 20px; font-size: var(--rmbz-text-base, 16px); text-transform: uppercase; letter-spacing: 1px; font-weight: 800; word-wrap: break-word; }
    .type-option.active { border-color: var(--rmbz-brand, #f0b90b); background: rgba(240, 185, 11, 0.1); transform: translateY(-2px); }
    .type-option.special-option.active { border-color: #e67e22; background: rgba(230, 126, 34, 0.2); }

    /* ── Campos do formulário (mobile-first, cores do tema) ── */
    .rmbz-input, .rmbz-select, textarea.rmbz-input { width: 100% !important; max-width: 100% !important; display: block !important; padding: 14px 16px !important; background: var(--rmbz-bg-input, #111) !important; border: 1px solid rgba(255,255,255,0.1) !important; color: var(--rmbz-text-primary, #fff) !important; border-radius: var(--rmbz-radius-md, 12px) !important; font-size: 16px !important; transition: 0.2s; }
    .rmbz-input:focus, .rmbz-select:focus { border-color: var(--rmbz-brand, #f0b90b) !important; outline: none !important; background: var(--rmbz-bg-hover, #1a1a1a) !important; }
    .rmbz-input::placeholder { color: var(--rmbz-text-disabled, #666) !important; }
    .rmbz-form-group { margin-bottom: 20px; width: 100%; }
    .rmbz-form-group label { display: block; color: var(--rmbz-text-secondary, #ddd); margin-bottom: 8px; font-weight: 600; font-size: 14px; letter-spacing: 0.3px; word-wrap: break-word; }
    .hidden-box { display: none; padding: 16px; background: var(--rmbz-bg-elevated, #1a1a1a); border-left: 4px solid var(--rmbz-brand, #f0b90b); margin-top: 10px; border-radius: 0 var(--rmbz-radius-md,12px) var(--rmbz-radius-md,12px) 0; width: 100%; }
    .radio-group { display: flex; gap: 10px; flex-wrap: wrap; width: 100%; }
    /* [1.6.118.118] Sim/Não como BOTÕES pill (não bolinhas). Esconde o radio
       e estiliza o label como botão; o :has marca o seleccionado. O JS e os
       name/value mantêm-se — só muda a aparência. */
    .radio-group label {
        flex: 1 1 0;
        min-width: 90px;
        justify-content: center;
        cursor: pointer;
        display: flex;
        align-items: center;
        gap: 8px;
        color: var(--rmbz-text-secondary, #ddd);
        font-size: 15px;
        font-weight: 600;
        padding: 13px 16px;
        background: var(--rmbz-bg-elevated, #1a1a1a);
        border: 1.5px solid rgba(255,255,255,0.1);
        border-radius: var(--rmbz-radius-pill, 999px);
        transition: background .15s, border-color .15s, color .15s;
        min-height: 48px;
        box-sizing: border-box;
    }
    .radio-group input { position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none; }
    .radio-group label:has(input:checked) {
        background: var(--rmbz-brand-soft, rgba(240,185,11,0.15));
        border-color: var(--rmbz-brand, #f0b90b);
        color: var(--rmbz-brand, #f0b90b);
    }
    .radio-group label:active { transform: scale(0.98); }
    /* Fallback: se :has() não for suportado, mostra a bolinha do radio
       (degrada para o aspecto antigo, mas continua usável). */
    @supports not selector(:has(*)) {
        .radio-group input { position: static; opacity: 1; width: 20px; height: 20px; accent-color: var(--rmbz-brand, #f0b90b); }
        .radio-group label { background: transparent; border: none; padding: 10px 0; border-radius: 0; }
    }

    /* ── Cards de cenário (Básico/Profissional/Cinema) ── */
    .scenario-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 20px; width: 100%; }
    .scenario-card { background: var(--rmbz-bg-surface, #252525); border: 2px solid rgba(255,255,255,0.08); border-radius: var(--rmbz-radius-lg, 16px); padding: 16px 10px; cursor: pointer; text-align: center; transition: 0.2s; width: 100%; max-width: 100%; box-sizing: border-box; }
    .scenario-card input { display: none; }
    .scenario-card.selected { border-color: var(--rmbz-brand, #f0b90b); background: rgba(240, 185, 11, 0.1); }
    .sc-icon { font-size: 28px; display: block; margin-bottom: 8px; }
    .sc-content strong { display: block; color: var(--rmbz-text-primary, #fff); font-size: 14px; margin-bottom: 4px; }
    .sc-content small { display: block; color: var(--rmbz-text-muted, #aaa); font-size: 11px; }
    .scenario-info-box { background: var(--rmbz-bg-elevated, #111); padding: 18px; border-radius: var(--rmbz-radius-lg, 16px); margin-bottom: 20px; border: 1px solid rgba(255,255,255,0.06); width: 100%; word-wrap: break-word; }
    /* [1.6.118.118] Confirmações como CARDS: cada checkbox é um card que
       fica dourado quando marcado. Mais visível e fácil de tocar. */
    .check-label {
        display: flex; align-items: flex-start; gap: 14px; cursor: pointer;
        margin-bottom: 10px; font-size: 14px;
        color: var(--rmbz-text-secondary, #ddd); line-height: 1.5; width: 100%;
        background: var(--rmbz-bg-elevated, #1a1a1a);
        border: 1.5px solid rgba(255,255,255,0.1);
        border-radius: var(--rmbz-radius-md, 12px);
        padding: 14px 16px; box-sizing: border-box;
        transition: background .15s, border-color .15s;
    }
    .check-label input { accent-color: var(--rmbz-brand, #f0b90b); margin: 1px 14px 0 0 !important; width: 22px; height: 22px; flex: 0 0 22px; cursor: pointer; }
    .check-label span { flex: 1 1 auto; min-width: 0; text-transform: none; letter-spacing: normal; font-weight: 400; }
    .check-label:has(input:checked) {
        background: var(--rmbz-brand-soft, rgba(240,185,11,0.12));
        border-color: var(--rmbz-brand, #f0b90b);
    }
    .check-label:active { transform: scale(0.995); }

    /* ── Canais de distribuição ── */
    .channel-selector { display: flex; gap: 10px; flex-wrap: wrap; width: 100%; }
    .channel-option { background: var(--rmbz-bg-elevated, #111); padding: 14px; border-radius: var(--rmbz-radius-md, 12px); border: 1px solid rgba(255,255,255,0.1); color: var(--rmbz-text-primary, #fff); display: flex; align-items: center; gap: 10px; cursor: pointer; flex: 1; min-width: calc(50% - 10px); justify-content: center; font-weight: 600; box-sizing: border-box; }
    .channel-option input { accent-color: var(--rmbz-brand, #f0b90b); width: 20px; height: 20px; flex-shrink: 0; }

    .drop-zone { border: 2px dashed var(--rmbz-border-subtle, #555); padding: 30px 15px; text-align: center; border-radius: var(--rmbz-radius-lg, 16px); cursor: pointer; background: var(--rmbz-bg-elevated, #111); transition: 0.3s; width: 100%; word-wrap: break-word; }
    .drop-zone:hover { border-color: var(--rmbz-brand, #f0b90b); background: var(--rmbz-bg-hover, #1a1a1a); }

    /* ── Botão de submeter (pill M3) ── */
    .rmbz-btn-submit { background: var(--rmbz-brand, #f0b90b); color: var(--rmbz-text-on-brand, #000); width: 100% !important; display: flex; align-items: center; justify-content: center; min-height: 52px; padding: 16px; border: none; border-radius: var(--rmbz-radius-pill, 999px); font-weight: 700; cursor: pointer; font-size: 16px; margin-top: 28px; letter-spacing: 0.5px; transition: filter 0.15s, transform 0.1s; white-space: normal; }
    .rmbz-btn-submit:hover { filter: brightness(1.05); }
    .rmbz-btn-submit:active { transform: scale(0.99); }

    .rmbz-lock-screen { text-align: center; max-width: 500px; width: 100%; margin: 40px auto; background: var(--rmbz-bg-elevated, #111); padding: 40px 20px; border-radius: var(--rmbz-radius-xl, 24px); border: 1px solid rgba(255,255,255,0.06); }
    .price-tag { background: var(--rmbz-bg-surface, #1e1e1e); padding: 15px; border-radius: var(--rmbz-radius-md, 12px); border: 1px solid rgba(255,255,255,0.08); margin: 20px 0; width: 100%; }
    .price-tag strong { display: block; font-size: 26px; color: var(--rmbz-brand, #f0b90b); margin-top: 5px; }

    @media(max-width: 768px) {
        .scenario-grid { grid-template-columns: 1fr; gap: 10px; width: 100%; }
        .scenario-card { display: flex; align-items: center; text-align: left; padding: 14px; gap: 14px; width: 100%; }
        .sc-icon { font-size: 28px; margin: 0; flex-shrink: 0; }
        .sc-content { min-width: 0; }
        .channel-selector { flex-direction: column; gap: 10px; width: 100%; }
        .channel-option { justify-content: flex-start; padding: 15px; font-size: 16px; width: 100%; min-width: 0; }
    }
</style>