# -*- coding: utf-8 -*-
"""手順をスキルにする（ショート専用・舞台型・2026-11-07）
エイイチの言葉: 自分で試してみた回の型を持ち、ネタをはめ込んで作れるようにしておきたい（2026-10-15）
事実: 解説動画づくり（p2m-explainer-video）・ロボット動画の運用分析（robot-video-ops-analysis）・事実確認（fact-checker）は Claude のスキルとして登録して使っている。舞台型は video_rules.md の12節"""
from butai_parts import *
OUTRO_K = 5

NAME, VER = "手順をスキルにする", 3
HEAD = "動画づくり<br>毎回ゼロから？"
T_ON = (0, 0.6)


def scene(T, S):
    h = CSS
    # 0: 毎回ゼロから？
    t0 = T(*T_ON)
    h += win(t0, T(1, 0), kick("動画づくり")
             + f'<div class="hero" style="left:0;right:0;text-align:center;top:100px;font-size:400px;opacity:0;animation:{a("slam", t0 + 0.8, .3)}">0<span>から？</span></div>')
    # 1: 手順はスキルにして残してある（札が1枚ずつ重なって束になる）
    t1, s1 = T(1, 0), S(1)
    stack = "".join(f'<div class="card" style="left:{230 + k * 18}px;top:{170 + k * 18}px;width:440px;height:300px;opacity:0;animation:{a("up", t1 + 0.3 + k * 0.25)}"></div>' for k in range(4))
    h += win(t1, T(2, 0), kick("残してあるもの") + stack
             + f'<div class="card or" style="left:284px;top:242px;width:440px;height:300px;align-items:center;padding:0;font-size:80px;opacity:0;animation:{a("pop", t1 + s1 - 1.3, .35)}"><small>Claude の</small>スキル</div>')
    # 2: 解説動画・ロボット動画の分析・事実確認（話している1つだけオレンジ）
    t2, s2 = T(2, 0), S(2)
    names = ["解説動画", "ロボット動画<br>の分析", "事実確認"]
    st = [0.1, s2 * 0.3, s2 * 0.72]
    cc = ""
    for k, nm in enumerate(names):
        an = a("up", t2 + st[k]) + ", " + a("on", t2 + st[k], .2)
        if k < 2:
            an += f", off{k} .2s linear {t2 + st[k + 1]:.3f}s forwards"
        cc += (f'<div class="card" style="left:{48 + k * 276}px;top:180px;width:252px;height:260px;align-items:center;text-align:center;padding:0;font-size:40px;line-height:1.25;'
               f'opacity:0;animation:{an}">{nm}</div>')
    h += win(t2, T(3, 0), f'<style>@keyframes off0 {{ to {{ background:{FACE_C}; color:{INK}; }} }} @keyframes off1 {{ to {{ background:{FACE_C}; color:{INK}; }} }}</style>'
             + kick("いま使っているスキル") + cc)
    # 3: 型を持って、はめ込んで作る（型の空いた所に、ネタがはまる）
    t3, s3 = T(3, 0), S(3)
    h += win(t3, T(4, 0), kick("エイイチの考え")
             + f'<div class="card" style="left:48px;top:150px;width:804px;height:330px;justify-content:flex-start;padding-top:24px"><small>型</small></div>'
             + "".join(f'<div style="position:absolute;left:{90 + k * 250}px;top:250px;width:220px;height:180px;border-radius:12px;background:#121925"></div>' for k in range(3))
             + "".join(f'<div class="card or" style="left:{90 + k * 250}px;top:250px;width:220px;height:180px;align-items:center;padding:0;font-size:46px;'
                       f'opacity:0;animation:{a("pop", t3 + 0.6 + k * (s3 - 1.0) / 3, .3)}">ネタ</div>' for k in range(3)))
    # 4: この舞台も、型のひとつ（モニターの中に、この舞台の小さな絵）
    t4 = T(4, 0)
    mini = (f'<div class="card" style="left:270px;top:150px;width:360px;height:400px;padding:0;overflow:hidden;opacity:0;animation:{a("pop", t4 + 0.2, .35)}">'
            f'<div style="position:absolute;left:30px;top:24px;width:300px;height:130px;border-radius:8px;background:{FACE_2}"></div>'
            f'<div style="position:absolute;left:60px;top:300px;width:240px;height:60px;border-radius:50%;border:6px dashed {ORANGE};box-sizing:border-box"></div>'
            f'<div style="position:absolute;left:105px;top:225px;width:46px;height:100px;border-radius:20px;background:#57B5F8"></div>'
            f'<div style="position:absolute;left:200px;top:195px;width:52px;height:130px;border-radius:20px;background:{INK}"></div></div>')
    h += win(t4, None, kick("この舞台も") + mini
             + f'<div class="stamp" style="left:48px;top:440px;font-size:56px;animation:{a("slam", t4 + 1.0, .35)}">型のひとつ</div>')
    h += outro(T, OUTRO_K)
    return h


def OVER(T):
    return stage_fx(T, shakes=[(T(0, 1.4), 0.4)], fx=[dict(kind="stars", t=T(3, 0.0), d=2.9), dict(kind="rays", t=T(4, 1.0), d=2.2)])


FACE = [(-1, 0.0, 1.0, "smile"), (1, 0.0, 3.3, "joy"), (2, 0.0, 3.9, "smile"), (3, 0.0, 2.9, "think"), (4, 0.0, 2.1, "joy"), ("end", 0.0, 3.0, "smile")]
POSE = [(-1, 0.0, 1), (0, 0.0, 3), (1, 0.0, 1), (3, 0.0, 2), (4, 0.8, 4)]
LEAN = []
INTRO = "hop"
MOVES = [(1, 0.2, "dash", 1.0), (2, 0.2, "tilt", 1.0), (4, 0.2, "jump", 1.0)]
SE = [(-1, 0.0, "se_whoosh", -9), (0, 0.6, "se_boot", -12), (0, 1.4, "se_pechin", -9),
      (1, 0.3, "se_pop", -14), (1, 0.55, "se_pop", -14), (1, 0.8, "se_pop", -14), (1, 1.05, "se_pop", -14), (1, 2.0, "se_ding", -11),
      (2, 0.1, "se_tick", -12), (2, 1.15, "se_tick", -12), (2, 2.8, "se_tick", -12),
      (3, 0.6, "se_pop", -12), (3, 1.25, "se_pop", -12), (3, 1.9, "se_pop", -12), (4, 1.0, "se_jaran", -10)]
ENDING = dict(kind="jump", at=(4, 1.0))
