Academy v2: one trackable roasting lesson; every scene redesigned to layout discipline
Test and deploy / test-and-deploy (push) Successful in 1m2s
Test and deploy / test-and-deploy (push) Successful in 1m2s
- Roasting is now a single continuous 11-slide lesson ('The roast,
start to finish') merging the six lessons' content; brewing keeps its
four per-family lessons
- Progress tracking: resume-where-you-left-off per lesson, progress bar
and completed badge on the lesson cards (localStorage)
- Every scene rebuilt against a fixed safe area (nothing off-canvas),
with animations that depict the narrated mechanism: contained
thermometer fills, a drawn dip-and-turn for the turning point, chaff
drifting off the swelling Maillard bean, crash/flick/stall on one
annotated RoR chart, per-brewer water/grounds anchored to each
silhouette's actual bowl, gauge needle sweeps instead of spinning
clocks; multiline labels replace out-of-frame text
- 9 new narration clips generated, 23 orphaned ones removed (31 total)
Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Fable 5
parent
64c1b3605b
commit
9448712a8a
@@ -3236,3 +3236,37 @@ select.f {
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.academy-stage svg * { animation: none !important; }
|
||||
}
|
||||
|
||||
/* Academy v2: progress + refined scene animations */
|
||||
.academy-lesson-mid {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
.academy-lesson-num.done {
|
||||
background: var(--pass-bg);
|
||||
color: var(--pass);
|
||||
}
|
||||
.academy-progress {
|
||||
display: block;
|
||||
height: 4px;
|
||||
border-radius: 2px;
|
||||
background: var(--surface-sunken);
|
||||
overflow: hidden;
|
||||
}
|
||||
.academy-progress-fill {
|
||||
display: block;
|
||||
height: 100%;
|
||||
background: var(--ember);
|
||||
border-radius: 2px;
|
||||
}
|
||||
@keyframes ac-fill-up-kf { from { transform: scaleY(0.12); } to { transform: scaleY(0.86); } }
|
||||
.ac-fill-up { transform-box: fill-box; transform-origin: bottom; animation: ac-fill-up-kf 5s ease-out forwards; }
|
||||
@keyframes ac-dry-shift-kf { 0% { fill: #7a8c5e; } 100% { fill: #d9ba5a; } }
|
||||
.ac-dry-shift > ellipse:first-child { animation: ac-dry-shift-kf 6s ease-in-out infinite alternate; }
|
||||
@keyframes ac-needle-kf { 0%, 100% { transform: rotate(-52deg); } 50% { transform: rotate(52deg); } }
|
||||
.ac-needle { animation: ac-needle-kf 7s ease-in-out infinite; }
|
||||
@keyframes ac-pulse-soft-kf { 0%, 100% { opacity: 1; } 50% { opacity: 0.75; } }
|
||||
.ac-pulse-soft { animation: ac-pulse-soft-kf 2.4s ease-in-out infinite; }
|
||||
|
||||
Reference in New Issue
Block a user