# -*- coding: utf-8 -*-
"""全部ログに残す（ショート専用・舞台型・2026-11-06）
エイイチの言葉: 記事は最初ブログ記事のつもりで書いていた。途中から全量ログに（overview）／全記録を残すことで、AIに読み込ませてそのまま使える（2026-10-20）／AIにしっかり読まれていることは確認できた（2026-11-05）"""
from butai_parts import *

NAME, VER = "全部ログに残す", 2
HEAD = "毎日の作業<br>なぜ全部残す？"
T_ON = (0, 1.2)


def doc(left, top, w, n, t, label, step=0.08, hl=False):
    ln = "".join(f'<div class="line" style="left:{left + 28}px;top:{top + 62 + k * 30}px;height:12px;width:{w - 56 - (k * 37) % 90}px;transform-origin:left;transform:scaleX(0);'
                 f'animation:{a("grow", t + k * step, .25)}"></div>' for k in range(n))
    return f'<div class="card" style="left:{left}px;top:{top}px;width:{w}px;height:{80 + n * 30}px;justify-content:flex-start;padding-top:18px"><small>{label}</small></div>' + ln


def scene(T, S):
    h = CSS
    # 0: 毎日の作業、全部ログに（記録が積み重なる）
    t0 = T(0, 1.2)
    stack = "".join(f'<div class="card" style="left:{230 + k * 18}px;top:{380 - k * 34}px;width:420px;height:120px;font-size:30px;justify-content:center;opacity:0;'
                    f'animation:{a("up", t0 + k * 0.18, .25)}{";background:" + ORANGE + ";color:#fff" if k == 7 else ""}">{"LOG" if k == 7 else ""}</div>' for k in range(8))
    h += win(t0, T(1, 0), kick("毎日の作業") + stack)
    # 1: 最初はブログ記事のつもり（短い記事）
    t1 = T(1, 0)
    h += win(t1, T(2, 0), kick("最初は") + doc(250, 140, 400, 5, t1 + 0.3, "ブログ記事"))
    # 2: 途中から全部を書き起こすログに（長くなる）
    t2, s2 = T(2, 0), S(2)
    h += win(t2, T(3, 0), kick("途中から") + doc(48, 120, 330, 5, t2 - 5, "ブログ記事")
             + f'<div class="arrowR" style="left:400px;top:250px"></div>'
             + doc(450, 40, 402, 16, t2 + 0.4, "全部のログ", step=(s2 - 0.8) / 16))
    # 3: 全部残せば、AIに読ませて、そのまま使える（行を順に読んでいく）
    t3, s3 = T(3, 0), S(3)
    scan = "<style>@keyframes rd { from { top:100px; } to { top:520px; } }</style>" + \
        f'<div style="position:absolute;left:236px;width:428px;height:34px;border-radius:6px;background:{ORANGE};opacity:.55;top:100px;animation:rd {s3:.2f}s linear {t3 + 0.2:.3f}s forwards"></div>'
    h += win(t3, T(4, 0), kick("全部残せば") + doc(250, 40, 400, 16, t3 - 5, "全部のログ") + scan
             + f'<div class="card or" style="left:690px;top:240px;width:160px;height:110px;font-size:46px;align-items:center;opacity:0;animation:{a("pop", t3 + 0.4)}">AI</div>')
    # 4: サイトは AI にしっかり読まれている（AI がサイトに来る）
    t4 = T(4, 0)
    ai = "".join(f'<div class="card" style="left:48px;top:{140 + k * 120}px;width:200px;height:96px;font-size:34px;align-items:center;opacity:0;animation:{a("inR", t4 + 0.3 + k * 0.3)}">AI</div>'
                 f'<div style="position:absolute;left:262px;top:{184 + k * 120}px;height:10px;width:250px;border-radius:5px;background:{ORANGE};transform-origin:left;transform:scaleX(0);animation:{a("grow", t4 + 0.6 + k * 0.3, .4)}"></div>'
                 for k in range(3))
    h += win(t4, T(5, 0), kick("いま") + ai
             + f'<div class="card" style="left:530px;top:180px;width:322px;height:240px;font-size:40px;align-items:center"><small>読まれている</small>サイト</div>')
    # 5: 記録は pixelstomotors.com で毎日公開
    t5 = T(5, 0)
    h += win(t5, None,
             f'<div class="msg" style="top:220px;text-align:center;font-size:74px;opacity:0;animation:{a("pop", t5 + 0.3, .4)}">pixelstomotors<span style="color:{ORANGE}">.com</span></div>'
             f'<div class="msg" style="top:340px;text-align:center;font-size:36px;color:{DIM};opacity:0;animation:{a("up", t5 + 1.0)}">研究の記録を、毎日公開</div>')
    return h


def OVER(T):
    return stage_fx(T, fx=[dict(kind="rise", t=T(3, 0.3), d=T(5, 0.0) - T(3, 0.3)), dict(kind="rays", t=T(5, 0.3), d=3.4)])


FACE = [(-1, 0.0, 1.0, "smile"), (1, 0.0, 2.6, "smile"), (2, 0.0, 3.0, "base"), (4, 0.0, 3.4, "joy"), (5, 0.0, 4.2, "smile"), ("end", 0.0, 3.0, "joy")]
POSE = [(-1, 0.0, 2), (1, 0.0, 1), (3, 0.0, 2), (4, 0.4, 3), (5, 0.3, 4)]
LEAN = []
INTRO = "dash"
MOVES = [(1, 0.3, "turn", 1.4), (2, 0.4, "hop", 1.2), (4, 0.4, "jump", 1.0), (5, 0.4, "bow", 1.2)]
SE = [(-1, 0.0, "se_whoosh", -9), (0, 1.2, "se_boot", -12)] + [(0, 1.2 + k * 0.18, "se_tick", -16) for k in range(8)] + [
      (1, 0.0, "se_whoosh", -12), (2, 0.0, "se_whoosh", -12), (3, 0.0, "se_whoosh", -12), (3, 0.4, "se_pop", -10),
      (4, 0.0, "se_whoosh", -12), (4, 0.6, "se_ding", -12), (5, 0.3, "se_chapter_glock", -10)]
ENDING = dict(kind="jump", at=(5, 0.3))
