@charset "UTF-8";

/*!
Theme Name: Cocoon Child
Description: Cocoon専用の子テーマ
Theme URI: https://wp-cocoon.com/
Author: わいひら
Author URI: https://nelog.jp/
Template:   cocoon-master
Version:    1.1.3
*/

/************************************
** 子テーマ用のスタイルを書く
************************************/
/*必要ならばここにコードを書く*/

/************************************
** レスポンシブデザイン用のメディアクエリ
************************************/
/*1023px以下*/
@media screen and (max-width: 1023px){
  /*必要ならばここにコードを書く*/
}

/*834px以下*/
@media screen and (max-width: 834px){
  /*必要ならばここにコードを書く*/
}

/*480px以下*/
@media screen and (max-width: 480px){
  /*必要ならばここにコードを書く*/
}

/* =========================================
 * Splash.Labo 回遊ブロック
 * works 詳細ページの下部におすすめ作品を表示
 * 使用ACF:
 * - squirt_score
 * - ai_squirt_volume
 * - ai_squirt_frequency
 * - ai_squirt_intensity
 * - image_url
 * - actress
 * - release_date
 * ========================================= */

/**
 * 数値ACFを安全に float 化
 */
function splab_get_acf_number($field_name, $post_id = null, $default = 0) {
    $value = get_field($field_name, $post_id);
    if ($value === '' || $value === null || $value === false) {
        return $default;
    }
    return floatval($value);
}

/**
 * 作品カード1件表示
 */
function splab_render_recommend_card($post_id) {
    $title        = get_the_title($post_id);
    $link         = get_permalink($post_id);
    $image_url    = get_field('image_url', $post_id);
    $score        = splab_get_acf_number('squirt_score', $post_id, 0);
    $volume       = splab_get_acf_number('ai_squirt_volume', $post_id, 0);
    $frequency    = splab_get_acf_number('ai_squirt_frequency', $post_id, 0);
    $intensity    = splab_get_acf_number('ai_squirt_intensity', $post_id, 0);
    $actress      = get_field('actress', $post_id);
    $release_date = get_field('release_date', $post_id);

    echo '<a class="splab-rec-card" href="' . esc_url($link) . '">';

    if ($image_url) {
        echo '<div class="splab-rec-card-thumb">';
        echo '<img src="' . esc_url($image_url) . '" alt="' . esc_attr($title) . '">';
        echo '</div>';
    }

    echo '<div class="splab-rec-card-body">';
    echo '<div class="splab-rec-card-title">' . esc_html($title) . '</div>';

    echo '<div class="splab-rec-card-meta">';
    if ($actress) {
        echo '<span class="splab-rec-card-meta-item">女優: ' . esc_html($actress) . '</span>';
    }
    if ($release_date) {
        echo '<span class="splab-rec-card-meta-item">発売日: ' . esc_html($release_date) . '</span>';
    }
    echo '</div>';

    echo '<div class="splab-rec-card-scores">';
    echo '<span class="splab-rec-badge splab-rec-badge-total">総合 ' . esc_html(number_format($score, 1)) . '</span>';
    echo '<span class="splab-rec-badge">量 ' . esc_html(rtrim(rtrim(number_format($volume, 1), '0'), '.')) . '</span>';
    echo '<span class="splab-rec-badge">頻度 ' . esc_html(rtrim(rtrim(number_format($frequency, 1), '0'), '.')) . '</span>';
    echo '<span class="splab-rec-badge">強度 ' . esc_html(rtrim(rtrim(number_format($intensity, 1), '0'), '.')) . '</span>';
    echo '</div>';

    echo '</div>';
    echo '</a>';
}

/**
 * セクション共通描画
 */
function splab_render_recommend_section($title, $query_args) {
    $q = new WP_Query($query_args);

    if (!$q->have_posts()) {
        wp_reset_postdata();
        return;
    }

    echo '<section class="splab-rec-section">';
    echo '<h2 class="splab-rec-section-title">' . esc_html($title) . '</h2>';
    echo '<div class="splab-rec-list">';

    while ($q->have_posts()) {
        $q->the_post();
        splab_render_recommend_card(get_the_ID());
    }

    echo '</div>';
    echo '</section>';

    wp_reset_postdata();
}

/**
 * 詳細ページ下部の回遊ブロック本体
 */
function splab_render_recommend_blocks($post_id = null) {
    if (!$post_id) {
        $post_id = get_the_ID();
    }

    if (!$post_id || get_post_type($post_id) !== 'works') {
        return;
    }

    $current_score     = splab_get_acf_number('squirt_score', $post_id, 0);
    $current_volume    = splab_get_acf_number('ai_squirt_volume', $post_id, 0);
    $current_frequency = splab_get_acf_number('ai_squirt_frequency', $post_id, 0);
    $current_intensity = splab_get_acf_number('ai_squirt_intensity', $post_id, 0);

    echo '<div class="splab-rec-wrap">';

    /**
     * 1. 総合評価が近い作品
     * ±0.5 で3件
     */
    if ($current_score > 0) {
        $min_score = max(0, $current_score - 0.5);
        $max_score = $current_score + 0.5;

        splab_render_recommend_section(
            'この作品に近い総合評価の作品',
            array(
                'post_type'      => 'works',
                'posts_per_page' => 3,
                'post__not_in'   => array($post_id),
                'meta_key'       => 'squirt_score',
                'orderby'        => 'meta_value_num',
                'order'          => 'DESC',
                'meta_query'     => array(
                    array(
                        'key'     => 'squirt_score',
                        'value'   => array($min_score, $max_score),
                        'compare' => 'BETWEEN',
                        'type'    => 'NUMERIC',
                    ),
                ),
            )
        );
    }

    /**
     * 2. 潮吹き量が多い作品
     * 現在作品より高いものを優先、なければ全体上位を拾う
     */
    splab_render_recommend_section(
        '潮吹き量が多い作品',
        array(
            'post_type'      => 'works',
            'posts_per_page' => 3,
            'post__not_in'   => array($post_id),
            'meta_key'       => 'ai_squirt_volume',
            'orderby'        => 'meta_value_num',
            'order'          => 'DESC',
            'meta_query'     => array(
                array(
                    'key'     => 'ai_squirt_volume',
                    'value'   => max(1, $current_volume),
                    'compare' => '>=',
                    'type'    => 'NUMERIC',
                ),
            ),
        )
    );

    /**
     * 3. 潮吹き頻度が高い作品
     */
    splab_render_recommend_section(
        '潮吹き頻度が高い作品',
        array(
            'post_type'      => 'works',
            'posts_per_page' => 3,
            'post__not_in'   => array($post_id),
            'meta_key'       => 'ai_squirt_frequency',
            'orderby'        => 'meta_value_num',
            'order'          => 'DESC',
            'meta_query'     => array(
                array(
                    'key'     => 'ai_squirt_frequency',
                    'value'   => max(1, $current_frequency),
                    'compare' => '>=',
                    'type'    => 'NUMERIC',
                ),
            ),
        )
    );

    /**
     * 4. 潮吹き強度が高い作品
     */
    splab_render_recommend_section(
        '潮吹き強度が高い作品',
        array(
            'post_type'      => 'works',
            'posts_per_page' => 3,
            'post__not_in'   => array($post_id),
            'meta_key'       => 'ai_squirt_intensity',
            'orderby'        => 'meta_value_num',
            'order'          => 'DESC',
            'meta_query'     => array(
                array(
                    'key'     => 'ai_squirt_intensity',
                    'value'   => max(1, $current_intensity),
                    'compare' => '>=',
                    'type'    => 'NUMERIC',
                ),
            ),
        )
    );

    /**
     * 5. その他おすすめ（ランダム）
     */
    splab_render_recommend_section(
        'その他のおすすめ作品',
        array(
            'post_type'      => 'works',
            'posts_per_page' => 3,
            'post__not_in'   => array($post_id),
            'orderby'        => 'rand',
        )
    );

    echo '</div>';
}