← 作品 · 第 04 / 04 · 香水新品發表
回眸
習慣憑感覺買香水的人,捲動著一場聞不到的新品發表,看著一只瓶子在燭光下轉過身來,一個調性接著一個調性,決定先試戴三天再說。



放映
下方是正在執行的現場版,可以直接捲動。
導演筆記(treatment.md)
這是 agent 在製作過程中寫下的工作筆記,維持原文(英文)未經修飾,供想看細節的人參考。
展開全文
ISOLA 島調香所(fictional house)launches its first fragrance, 回眸 Retour. Demo site, zh-TW, one of three parallel Cinematic UI test demos. This is the scroll test: a long scroll film.
1. Development
Product truth (all fictional, stated in the footer). One Eau de Parfum, 50 ml, NT$ 4,800. Notes as time on skin: top 海鹽 sel marin · 佛手柑 bergamote (first ~30 min) → heart 蜂蠟 cire d'abeille · 鳶尾 iris (to ~3 h) → base 雪松煙 fumée de cèdre · 安息香 benjoin (to ~8 h). Offer: a sample set, 3 × 2 ml, NT$ 450 incl. shipping, fully credited to a 50 ml bottle; ships from 20 Nov; reserving costs nothing now.
The one action: 預約試香組 (reserve the sample set). Email only.
Logline. Someone who buys perfume by feel, scrolling a launch they cannot smell, watches one bottle turn round in candlelight, note by note — and decides to wear it for three days before deciding anything.
Audience arc. Arrives: "a perfume page is pictures and adjectives; I can't smell a screen." Leaves: "I know how it changes on skin hour by hour, and trying it costs me nothing I can't get back."
Controlling idea. A scent is not seen all at once; it is revealed by degrees, and only on you.
2. Casting session
Dramatic problem: intimacy with something invisible — make a smell felt as time and warmth, without pictures of people (no assets of faces, and none should be invented).
| Candidate | Mechanism that solves it | Signature shot | Risk | Wrong for |
|---|---|---|---|---|
| Céline Sciamma — Portrait of a Lady on Fire (2019, Claire Mathon) | The sitter is revealed by degrees — first from behind, then in profile, then the face — and the look itself is the subject; candle and firelight are the only light; frames held almost without score | The bottle seen only as a backlit edge, the flame behind it glowing through the liquid | Can drift into "period costume" (dresses, oils, cliffs) | Fast, loud, many-product pages |
| Wong Kar-wai — In the Mood for Love (Doyle, Lee Ping-bin) | Frames within frames, the subject glimpsed through gaps; repetition with variation; step-printed smear | The bottle seen through a door gap, three times, each time one thing changed | The obvious pick for scent / night / longing; red-and-green costume | A product that should feel calm and honest |
| Ridley Scott — Blade Runner (Cronenweth) | Smoke and backlight, shafts through blinds, layered lived-in set | Vapour lit by a raking shaft across the bottle | Reads as sci-fi noir; smoke as wallpaper, no arc | Anything intimate |
Kept: Sciamma. Her reveal-by-degrees maps one-to-one onto how a perfume actually behaves (top → heart → base), and her single-flame interiors give one light logic for the whole film. Wong Kar-wai set aside: the first name every model reaches for on perfume, and his glimpse-through-frames hides the product the page must show. Ridley Scott set aside: his smoke is atmosphere around a city, not a subject that changes. Competitor test: another perfume could not use this unchanged, because the reveal is tied to this scent's three stages and its name (回眸, a look back) is the lead's verb.
Mechanisms (each visible on screen).
- Revealed by degrees: back, profile, face → the bottle is shown from behind (scene 2), in profile (3), and only turns its face to camera at the turn (4); each pose is one note stage.
- The look is the subject; light is a gaze that travels → the camera barely moves; the candle is carried round the bottle and its light does the revealing (relight instead of fade).
- Firelight as the only source → one flame practical lights wall, table, liquid and vapour; nothing else glows; the page ground is the room's dark (#0b0806).
- Painterly stillness, almost no score → long held frames, lock-offs and slow push-ins only; silent site (no sound toggle).
- The final held close-up → the dry-down is one long close shot of the liquid's meniscus and the cap, held while the hours run; nothing else moves.
- The ghost in the dark corridor (afterimage) → in the final image the bottle is gone and its silhouette stays, made of vapour: what a scent leaves behind.
Filmography check (last three: Bresson / von Trier / Antonioni). Differs on director, medium (live 3D + shader vapour vs. print, SVG line, archival photographs), form (long scroll film vs. short / document / click-driven hybrid), skeleton, type (Cactus Classical Serif + Bodoni Moda italic + Chocolate Classical Sans, none used before), lead (a glass bottle and its vapour), interaction (press-and-hold warmth), ending (afterimage), instruments (blotter strip + skin clock).
3. Medium
Constructed: photoreal 3D glass, lit by one flame, with the scent as procedural vapour. The film's mechanism is light revealing a subject by degrees in a dark room, so the picture must be made of real light on real material — a lit, refracting object that can turn and be relit — and the scent, which has no image, becomes vapour that carries the note's colour. Format: 1.85:1-ish desktop frames, warm black, firelight only, grain 0.03, light bloom on the flame only. Why 3D: the reveal needs one object to be relit from behind, the side and the front and to turn; a photograph cannot be relit, and a bottle photo of a fictional product would have to be generated (ruled out). Shift: none. Supporting medium: paper (the blotter strip) in the DOM — the offer document is printed on blotter paper.
4. Lead, location, asset call
Lead: the bottle of 回眸 and the vapour that comes off it (one subject: the fragrance). Its verb is the product's: it opens in warmth and turns (回眸 = a look back). States: ① a flame alone, the bottle an unlit edge → ② back, backlit, sea-grey vapour → ③ profile, honey light, vapour rising from the neck → ④ face, turned to camera, ember vapour (the turn) → ⑤ close: the meniscus, ember glow fading (dry-down) → ⑥ on the visitor's blotter, at the hour they chose → ⑦ gone; its silhouette held in vapour. Supporting cast: a short candle (carried round, the gaze), the blotter strip (the visitor's). Location: one dark room: a lacquered table that mirrors the flame, a plaster wall the flame warms.
Asset call (answered in the brief: no paid generation). Bottle, liquid, candle, flame, vapour, wall,
table: procedural (Three.js + shaders, kit/stage.js, kit/props.js). Type: Google Fonts (OFL). No
photographs or footage: none would be the product, and library smoke would be someone else's light.
Casting test: dailies/cast/sheet.jpg — back, profile, face, close and ghost rendered before the shot list;
the close (label + meniscus) survives, so the dry-down may go close; nothing goes macro on the cap.
5. CRO notes (cro-master)
- Focus contract. Surface: launch landing page, pre-launch stage. Audience: niche-perfume buyers arriving from social (solution-aware: they know samples exist). Promise: you can try it on your own skin before you buy. Brand cue: ISOLA / 回眸 / the bottle. Mechanism: the note timeline + a sample set credited to the bottle. Proof: concrete facts (notes and hours, size, price, credit, ship date, no charge now). Action: 預約試香組. Secondary paths: none.
- Objections → answers placed next to the action. "I can't smell a screen" → the whole film is the notes as hours; the offer is three days on skin. "Is it worth NT$ 4,800?" → the sample set's full price is credited to the bottle. "What does reserving commit me to?" → no payment now; we email before shipping. "When?" → ships from 20 Nov. "Shipping cost?" → included.
- No fabricated proof. No testimonials, ratings, scarcity or countdowns (the brand is new; there is nothing honest to show). Proof is specificity and risk reversal.
- Friction. One field (email). Label visible, inline error, no account. Taiwan default would add LINE; kept out to stay at one field — noted as a test idea, not built.
- CTA wording and placement. 「預約試香組」 everywhere, never a second verb. Persistent in the top-right chrome from the first frame (also during the loader), inside the offer, and in the final image.
- Trade-offs, resolved for the product. Cinema wants a first frame with no words and a long pinned film; CRO wants the offer early. Resolution: the first frame has no headline in the picture, but the chrome CTA is there from frame one and jumps straight to the offer; the offer itself is a flow scene on paper, plainly lit, nothing animated over price or the form. The interaction is never required.
6. Award pass
WORLD OBJECT the perfumer's blotter strip (試香紙 / mouillette): loader (it wicks up as the page loads),
progress (a strip down the right edge soaking note by note), the CTA (a strip with a soaked tip),
the visitor's part (hold the strip), the offer's paper ground, the footer (a dried strip with notes)
LEAD STATES flame alone → back/backlit (sea) → profile (wax) → face/turned (ember) → close meniscus, dry-down
→ on your strip at your hour → gone, silhouette of vapour
LOADER a blotter strip dipped in the dark; amber wicks up it with real load progress; when full its tip
catches and becomes the flame of shot one (match on the flame)
CUT MATERIAL the scent: vapour thickens across the lens and clears on the next pose (back→, face→close);
between back and profile the light itself travels (the candle is carried, no cut);
exception: one hard cut to paper for the offer, and back to the dark for the final image
ACCENT flame orange #ff7a2e — "warmth: where it touches you, act here" — flame core, the CTA's soaked
tip, the clock's current hour; under 3 % of any frame
TYPE display: Cactus Classical Serif (zh) + Bodoni Moda (Latin); text: Chocolate Classical Sans.
Switch: each material named twice, the Latin in Bodoni italic beside the Chinese (海鹽 *sel marin*).
Display deliberately small (≤ 4 vw; h1 3.4 vw): the bottle carries the scale, as a held portrait does
INSTRUMENTS ISOLA wordmark (top-left) · 預約試香組 strip (top-right) · blotter progress strip soaking
sea→wax→ember (right edge) · skin clock 「肌膚上 0:00 → 8:00」 (bottom-left), the film's time is skin time
VERB press and hold the blotter: your warmth runs the eight hours; let go and it stays at that hour,
and that hour is written on your reservation
RHYTHM set pieces: light, back, profile, the turn, dry-down, try, final. Calm document: the offer on paper.
Phone: same film re-blocked portrait — bottle in the upper 60 %, copy in the lower third, ~65 % lengths
7. Production design
Grid: one vertical axis through the bottle; copy hangs in the left third (desktop) at reading size, never over the bottle. Density: one subject per frame. Depth: wall, bottle, vapour plane, veil. Edges: generous margins, nothing cropped except the close. Texture: film grain on canvas; DOM paper has its own fibre. Colour script: near-black + sea grey (2) → honey (3) → ember (4–5) → paper white (offer) → black + ember vapour (final). Restrained: one accent.
8. Shot list
Desktop lengths (vh). Mobile ≈ 65 %.
| # · slug | Beat | Copy | Shot | Camera | Blocking | Light / colour | Build | Cut out | Len | E | Money frame | Mobile |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 · LOADER | Shot one | — | — | — | Blotter strip wicks with load progress; tip catches | One flame | DOM strip + CSS flame | Match on the flame | intro | 1 | Strip full, tip alight | Same, centred |
| 1 · INT. ROOM — ONE FLAME | Cold open; title on the second beat | 回眸 / Retour / 一支香水,在你身上轉身三次。 | WS, eye level, 22 mm-equiv fov 22 | Slow push 11 → 9.4 | Flame behind the bottle; bottle a dark edge; title resolves | Flame only; wall pool warms as light rises | stage, set | Veil of vapour (sea) | 230 | 2 | Title sharp, bottle edge lit (0.75) | Bottle upper, title lower third |
| 2 · BACK — SEA | Top note: it begins far away | 前調 · 最初半小時 / 先是海風 / 海鹽 sel marin、佛手柑 bergamote | MS, frontal, fov 22 | Lock-off, slight rise | Bottle shows its back; flame behind glows through the liquid; sea vapour crosses | Backlight; grey-blue vapour | — | Light travels (candle carried right) | 260 | 4 | Hot core through amber, words cut on | Same pose, closer |
| 3 · PROFILE — WAX | Heart: it comes closer | 中調 · 到第三小時 / 然後是燭火 / 蜂蠟 cire d'abeille、鳶尾 iris | MS, camera arcs 25° right | Arc + push | Bottle in profile; candle at its side; vapour rises from the neck | Side key, honey | — | Continuous into the turn | 260 | 5 | Profile edge-lit, plume rising | Bottle centred |
| 4 · THE TURN — EMBER | Midpoint / climax: it looks back | 後調 · 到第八小時 / 它回頭了 / 雪松煙 fumée de cèdre、安息香 benjoin | MS → MCU frontal | Push-in as it turns 90° → 0° | The bottle turns to face us; candle comes to the front; ember vapour; label read for the first time | Frontal firelight; ember | label texture | Vapour veil thickens → clears close | 360 | 8 | Face frontal, label legible, ember plume (0.7) | Push less, label centred |
| 5 · CLOSE — DRY-DOWN | Quiet scene: what lasts | 第八小時 / 只剩一點暖,貼著皮膚。 | CU of meniscus + shoulder, fov 18 | Very slow push, held | Nothing moves but the ember dimming; clock runs to 8:00 | Low firelight, ember fading | — | Pull back (move) | 220 | 3 | Meniscus line, read-fill complete | CU, copy under |
| 6 · TRY — YOUR STRIP | The visitor's part | 按住試香紙 / 用你的體溫,把八小時走一遍。 / live: 第 0:00 · 海鹽、佛手柑 | WS, bottle small at right, strip in front-left (DOM) | Lock-off | Hold the strip → hours run, strip soaks, vapour changes note; release → it stays; that hour is written on the reservation. Keyboard: hold Space/Enter on the strip; touch: long-press | Firelight; vapour in the chosen note | DOM strip + canvas | Hard cut to paper | 240 | 6 | Strip half-soaked at 3:40 | Strip centred, bottle above |
| 7 · PAPER — THE OFFER | Resolution: the deal, plainly lit | 先試三天 + facts + form | Flow, eye level | — | Paper ground, ink type; form; "your hour" line if set | High key paper | DOM | Push back to the dark | flow | 3 | — | Single column |
| 8 · AFTERIMAGE | Final image: what it leaves | 香還在 / 預約試香組 / 11 月 20 日起寄出 | WS as scene 1 | Lock-off | Bottle gone; its silhouette stands in ember vapour; the candle where it began | Flame + vapour only | ghost shader | — | 200 | 5 | Silhouette + CTA (0.7) | Same, CTA lower third |
| 9 · CREDITS | End credits | fictional notice, credits | Flow | — | A dried strip with pencil notes | Paper on dark | DOM | — | flow | 1 | — | — |
Sequence reasons. 1 and 8 share the frame on purpose (rhyme: the bottle arrives out of the dark, then leaves its shape in it). 2→3→4 keep the camera nearly still while the light travels and the bottle turns — the reveal is the light's, not the camera's. 5 is the only close shot, earned by the casting test. 6 pulls back so the visitor's strip has room. 7 is the one change of ground. Energy 2 4 5 8 3 6 3 5: a slow rise to a middle peak, a long dry-down — the shape of a fragrance on skin. Continuity sheet. Type entrances: blur-resolve (1, 4, 8 — the signature: the scent coming into focus); read-fill (5, once); hard cut-on of note labels (2, 3, 4 — Sciamma's cuts are clean). Light events: flame lights (1), travels (2→3→4), dims (5), follows your hold (6). Camera: push (1), lock (2), arc (3), push (4), creep (5), lock (6, 8). Skeleton. Energy: slow rise, one middle peak, long decay · turn at ~45 % (the face) · opens on an empty set (one flame) · ends on an afterimage (the lead absent, its trace held).
Audience's part. Action: press and hold the blotter strip. Response: the skin clock runs (8 h in ~7 s), the strip soaks upward, the vapour behind changes sea → wax → ember, the current notes are named. Consequence: on release it stays at that hour; the offer prints 「你停在第 3:40,蜂蠟、鳶尾」 on the reservation and the right-edge strip keeps that soak. Equivalent: focus the strip and hold Space or Enter; long-press on touch. Never required.
Short laptop (1366 × 640): copy scales by svh; the bottle pose is unchanged (the stage widens by height); the try strip shortens to 46 svh. Ultrawide: the room extends (wall and table are 60+ units wide); copy block caps at 30 em and moves outward with the frame.
9. Copy as shipped (after talking-master)
Visible copy ≈ 221 CJK characters including chrome, legal/footer excluded (scripts/check.py: 通過;
copy-check.mjs: 13/13 lines present with JS on and off).
| Where | Copy |
|---|---|
| Chrome | ISOLA 島調香所 · 預約試香組 · 肌膚上 0:00 · 前調 中調 後調 |
| 1 | 回眸 Retour / 一支香水,在你身上轉身三次。 |
| 2 | 前調 · 最初半小時 / 先是海風 / 海鹽 sel marin、佛手柑 bergamote |
| 3 | 中調 · 到第三小時 / 然後是燭火 / 蜂蠟 cire d’abeille、鳶尾 iris |
| 4 | 後調 · 到第八小時 / 它回頭了 / 雪松煙 fumée de cèdre、安息香 benjoin |
| 5 | 第八小時 / 只剩一點暖,貼著皮膚。 |
| 6 | 按住試香紙 / 用你的體溫,把八小時走一遍。 / live: 0:00 · 海鹽、佛手柑 |
| 7 | 試香組 · 3 × 2 ml / 先試三天 / 三支 2 ml,一天一支。在自己身上穿過,再決定要不要整瓶。 / 價格 NT$ 450,含運 / 折抵 全額折抵 50 ml 正裝(NT$ 4,800) / 寄出 11 月 20 日起,依預約順序 / 付款 現在不用付款,寄出前會先寫信跟你確認 / 預約試香組 / [你在試香紙上停在第 4:51:雪松煙、安息香。] / Email / 預約試香組 / 只用來通知寄送。 |
| 7 states | 請留一個 Email,寄出前我們會用它跟你確認。 · Email 好像少了一部分,請再看一下,例如 name@example.com。 · 收到了。11 月 20 日寄出前,我們會先寫信到 … 跟你確認。(這是示範頁,不會真的寄信。) |
| 8 | 香還在 / 預約試香組 / 11 月 20 日起寄出 |
| Credits | fictional-brand notice; procedural-assets note; fonts (OFL); method credit to Sciamma |
talking-master changes from the draft: 「現在不用付。寄出前,我們會寫信跟你確認」 → 「現在不用付款,寄出前會先寫信跟你確認」 (one sentence, clearer word); error messages say what is missing and why the email is needed instead of "invalid input"; nothing narrates strategy ("為了讓你…" style lines were never drafted); no em dashes.
10. CRO self-audit of the built page (cro-master, heuristic: no traffic data — demo)
| Check | Verdict | Evidence |
|---|---|---|
| One primary action, one verb | keep | 預約試香組 ×4 (chrome, form title, submit, final), no competing CTA |
| CTA reachable from frame one | keep | chrome strip visible above the loader and on every frame; skip link 跳到預約 |
| Offer specific | keep | 3 × 2 ml, NT$ 450 incl. shipping, credited in full, ships 20 Nov, no charge now |
| Main objection answered next to the action | keep | "can't smell a screen" → 3 days on skin; price → credit; commitment → no payment now |
| Proof | gap, accepted | pre-launch fictional brand: no reviews exist, none invented. A real launch should add perfumer + batch facts, then early-sample reviews after shipping |
| Friction | keep | one field, visible label, inline error that keeps input, confirmation states next step |
| Distance to offer | constraint | desktop ≈ 25 screens of film before the offer by scroll; mitigated by the persistent CTA + skip link, but a cold visitor who never clicks the chrome meets the price late. Test idea: a 1-line price under the title (「試香組 NT$ 450,可全額折抵」) vs. none |
| Taiwan channel | test idea | add LINE as an alternative to email (cro-master 11): not built, to keep one field |
| Compliance notes | flagged | real launch needs 化粧品 labelling/登錄, 7-day 鑑賞期 wording for distance sales, 個資 consent line beside the field |
11. Screening record
Dailies: screening/contact-{desktop,laptop,mobile}.jpg (+ --cuts), contact-*-reduced.jpg,
screening/act/contact-{desktop,mobile}.jpg (CTA hover, hold, release, keyboard hold, the hour printed on
the reservation, empty / partial / valid form), screening/range/contact-{ultrawide,tablet,landscape}.jpg.
Zero console errors, zero mechanical flags on the final pass.
Reshoots (named corrections):
- Casting: liquid invisible inside transmissive glass → opaque juice with faked translucency; flame made opaque so the glass refracts it.
- All scenes, reduced cut: canvas blank → the stage skipped draws when only the cast's pose changed; force a draw when
actchanges. - Cuts 1→2, 4→5: veil read as a flat grey / brown frame (test screening called them blank) → structured smoke capped at 0.8 so the shot stays behind it.
- Final image: silhouette read as a glowing UI card, then as a blob figure → SDF of body + neck + cap, denser at the walls, fraying as it rises.
- Type: blur-resolve titles fell back to the kit's sans →
font: 'inherit'; turn and final titles showed before their entrance → keyp = 0from clip start. - Turn: candle flame sat behind the copy → candle moved to front-right; push-in deepened, bloom flare raised (test screener did not name the turn as climax).
- Close: copy over the glass and the clock over the label → camera re-aimed.
- Offer: fact numerals inherited the label style (selector bug); instruments over paper; wordmark invisible on paper → instruments hide on paper, chrome gets a paper ground.
- Landscape phone: strip over the bottle → re-blocked.
Test screening (fresh agent, sheets only): named the product, the action (reserve sample set by email) and the lead (the bottle's glow, ending as a ghost) correctly; it read the close-up / try as the climax rather than the turn. Remaining weakness, see delivery.
WebGL note: frames were rendered by headless Chrome (SwiftShader software GL). Look is judged from them; smoothness on real GPUs and phones was not measured.
Revision 2 — trigger variety and the type department
Same director, same film. Kept unchanged: Sciamma / Portrait of a Lady on Fire, the logline, the lead (bottle + vapour) and its seven states, the world object (blotter strip), the medium, the shot list and its scroll lengths, every line of visible copy, and the CRO decisions (one action 預約試香組, nothing animated over the price or the form field). What the revision answers: the skill's new rules that scroll is one trigger among at least four (this film had almost every performance scrubbed), and that a film keeps a type department around its signature move.
R2.1 What changed
- Kit refreshed from the skill:
reel.js,stage.js,props.jswere already current;reel.css(data-cut click-through,html, body { overflow-x: clip }) andtype-fx.js(rebuild keeps colours, blur-resolve inherits the font by default) replaced. Nothing broke (all passes below). - The gaze leans the flame (scenes 1–2): pointer / tap / ←→ carry the candle sideways behind the bottle, and the
hot core travels through the liquid. A separate pose value (
act.lean) is added to the scrubbed candle position, so scroll and pointer never fight. - Stillness steadies the flame: 2.6 s without scroll, pointer or key and the flame stops swaying, stands taller,
and the firelight stops flickering (
act.calm). Any input wakes it. - Choose a note (scene 6): three strip-tabs 前調 / 中調 / 後調 beside the readout. A click runs (or rewinds) the strip to 0:15 / 1:45 / 5:30; vapour, soak and readout follow; the hour is committed to the reservation exactly as a hold is. The hold stays the primary verb.
- The readout became type performances: the hour is an
odometerbound to the strip's hour; the note name is aslit-scanswitch. A separate visually hidden live region (#try-say) announces the committed hour once, so the effects' duplicate texts are never read aloud. - An untouched strip invites when the visitor has been still in scene 6: its tip glows like a wick about to take.
- 它回頭了 and 香還在 are entry-played, no longer scrubbed: they wait for their moment (turn main ≥ 0.5; final main) and resolve at their own tempo (1.1 s / 1.6 s); they re-arm when the visitor scrolls back before them.
- The CTA strips soak by tween on hover / focus (the old CSS
transition: --wis gone); the submit strip's tip takes more warmth as the email becomes a whole address (input). - The reassurance is marked: the first time the visitor turns to the form (pointer or focus enters it),
highlighterdraws behind 現在不用付款 and stays. - The notes left behind: a slow
vertical-counterof the six materials drifts in the afterimage's left margin, faint, masked top and bottom, aria-hidden. - Reduced motion: stage time frozen at one composed moment (in R1 the flame still flickered), flame steady (calm = 1), state-bound effects set instantly to the chosen state, entrances at rest.
- Bug found while screening, fixed in the project: the reel measured scroll before its lengths applied and Lenis
kept the short page's scroll limit, because this module awaits the fonts before
reel.start()(the kit'sfonts.ready/loadre-measures can both have fired already). On a warm cacheseekScene('try')landed on the turn and Lenis clamped scrolling near 6600 px. Fix:requestAnimationFrame(() => { lenis?.resize(); reel.measure(); })right after start.
New words (talking-master; scripts/check.py: 通過). Visible: 前調 / 中調 / 後調 on the tabs (already the film's own
words). Screen-reader only: 直接選一段香調; 前調:海鹽、佛手柑 (and the other two); 第 4:51,雪松煙、安息香. No other copy
changed. CRO: the tabs are muted translucent slips, never paper-white with the orange tip, so 預約試香組 remains the only
primary-looking control; price and form field still never move (the highlighter marks a phrase and leaves the words
still).
R2.2 Award pass, revised lines
TRIGGERS scrubbed: camera moves, the turn, the vapour cuts, the dry-down read-fill, the skin clock.
entry-played: 它回頭了, 香還在. autoplay: loader + title, flame and vapour, the notes' drift.
click: choose a note. hover/focus: the gaze leans the flame; CTA soak; the reassurance marked.
hold: the blotter strip. input: the email soaks the submit tip. idle: the flame steadies; the strip invites.
TYPE CAST signature blur-resolve (title → turn → final) + read-fill, slit-scan, odometer, highlighter, vertical-counter
R2.3 Trigger table
18 rows of performances, 8 trigger kinds; scroll scrub drives 5 of them (about 28 %).
| Beat | Performance | Trigger | Keyboard / touch path | Reduced-motion state |
|---|---|---|---|---|
| 0 Loader | strip wicks with load, tip catches and becomes shot one's flame; 回眸 / Retour blur-resolve | autoplay (intro, real load progress) | none needed | intro run to its end first; titles at rest |
| 1–5 | camera push / lock / arc / push / creep | scroll scrub | keyboard scroll, touch scroll | camera cuts to each scene's still pose |
| 4 The turn | bottle turns 90° → 0°, bloom flare | scroll scrub | same | turned, label legible |
| 1→2, 4→5 | vapour veil cuts | scroll scrub | same | hard cut |
| 5 Close | 只剩一點暖,貼著皮膚。 read-fill | scroll scrub | same | fully lit |
| all | skin clock + right-edge gauge follow the film | scroll scrub (onFrame) | same | instruments hidden (chrome scrolls away) |
| 4 The turn | 它回頭了 resolves from blur | scroll entry, then plays (1.1 s) once the bottle has turned | keyboard scrolling fires it the same way | sharp, at rest |
| 8 Afterimage | 香還在 resolves from blur | scroll entry, then plays (1.6 s) | same | at rest |
| 1–2 | the candle leans where the visitor looks; the hot core travels through the liquid | hover / pointer move | ←/→ nudge it (0.35 per press); a tap on touch puts it under the finger | off (lean 0) |
| all | flame and vapour live | autoplay (stage time) | — | frozen at one composed moment |
| 8 Afterimage | the six materials drift in vertical columns | autoplay loop, fed only while the scene is on stage | — | frozen at t = 0 |
| all (seen in 8) | flame steadies, stands taller, firelight stops flickering | idle 2.6 s | any key / touch wakes it | steady (calm = 1) |
| 6 Try | the untouched strip's tip glows, breathing | idle in scene 6, until the strip is used | — | tip shown at 0.6, still |
| 6 Try | hours run, strip soaks, vapour changes note, odometer rolls, name switches; release keeps the hour and prints it on the reservation | hold (pointer) | focus the strip, hold Space / Enter; long-press on touch | works; effects set instantly |
| 6 Try | strip runs or rewinds to the chosen note; name rolls; hour rolls; committed to the reservation | click / tap 前調 中調 後調 | real buttons: Tab + Enter / Space; aria-pressed |
jumps to the note, effects set instantly |
| chrome, final, form | the CTA strip's soaked tip widens 0.22 → 0.66 | hover / focus | focus-visible gives the same answer | set instantly |
| 7 Offer | 現在不用付款 marked | hover / focus on the form (first time), stays | focusing the email field draws it; a tap focuses it | marked from the start |
| 7 Offer | submit tip soaks to 0.5 when the address is whole | input | typing | set instantly |
R2.4 Type cast
| Effect | Job | Trigger | Where |
|---|---|---|---|
blur-resolve (signature) |
the scent coming into focus: opening, the turn, the afterimage | autoplay (intro) · scroll entry, then play (turn, final) | 回眸 / Retour, 它回頭了, 香還在 |
read-fill (kept) |
the dry-down, read as it fades | scroll scrub | 只剩一點暖,貼著皮膚。 |
slit-scan |
the note changes like a reel, by the visitor's hand | click (note tab) · hold (crossing 0:30 / 3:00); state-bound | the note name under the hour, scene 6 |
odometer |
time on skin as a counter: rolls while held, rolls to the chosen hour on click, stops exact | hold (bound per frame) · click (rolled by the strip's tween); state-bound | the hour readout h:mm, scene 6 (hour + minutes odometers) |
highlighter |
point at the risk reversal at the moment of decision | hover / focus on the form, once | 現在不用付款, offer facts |
vertical-counter |
set dressing: the notes left behind, drifting like vapour | autoplay loop | left margin of the afterimage, aria-hidden |
Legibility held: per-character motion only on the 2–3-character titles; the price, facts and form never move; the
odometer and slit-scan are at rest whenever nothing is changing; the drift is faint, masked and outside the copy's
column. Faces checked with Chrome's platform-font report on desktop and phone: every effect was painted only by its
intended face (Cactus Classical Serif, Bodoni Moda, Chocolate Classical Sans), no fallback; zero negative tracking on
any effect node. Two CSS adjustments to kit output, both in style.css: the odometer's leading-zero dimming is
overridden (on a clock the 0 in 4:05 is part of the time), and the slit-scan line hangs left with the hour.
R2.5 Screening record
Served on port 5762 (node static server). screening/contact-{desktop,laptop,mobile}.jpg with --cuts,
screening/contact-*-reduced.jpg, screening/act/contact-{desktop,mobile}.jpg (every non-scroll trigger mid-flight
and at rest), real-size crops in screening/act/crops/ (+ *-faces.json). Zero console errors and page errors on
every pass. One mechanical flag, explained: cut-text on final — the vertical-counter's marquee copies are taller than
their own box by design and are clipped (and masked) by it; the script measures the unclipped spans. Nothing visible
is sliced. copy-check.mjs not run: the project has no copy file.
Reshoots: note tabs wrapped to two lines (前/調) → flex: none; white-space: nowrap. Drift columns too large and too
bright beside 香還在 → box 13 → 9 vw, opacity .9 → .55. Idle steadying first staged on the close shot, where the
flame is out of frame → screened on the afterimage, where the candle stands in frame. Note-name switch lagged the hour
→ 0.75 → 0.55 s.
Review note (coordinator): mid-roll, the hour odometer's neighbouring digits spilled above and below 「h:mm」 into the
note name, and the slit-scan's copies rose into the hour / hung below the line mid-switch. Causes, both in kit
geometry (not in page CSS): each odometer window is one full 1.1em line box with overflow: hidden, much taller than
the digits' ink, so the outgoing and incoming digits show in the slack and the box touches the next line; slit-scan's
outer slits are open-ended (top band from −40 %, bottom band to 140 % of the line), so the rolling copies are visible
outside the line. Fixed in style.css: windows clipped to the ink band (clip-path: inset(.1em -.05em .13em -.05em)),
the slit-scan stage clipped to its own line (clip-path: inset(0 -.3em)). Verified with exact p poses through a
?screen-only hook (window.__fx) at 2× on desktop and phone, and by re-shooting the act's hold / note frames.
Weaknesses: the steadied flame is subtle (upright and taller, no sway) — right for Sciamma, easy to miss; mid-hold the minute wheel spins too fast to read (by design, exact at rest); the lean is pointer-first, its touch path (tap) is less discoverable; autoplay ambient has no play control in the reduced cut (it is frozen, not paused behind a button).
本站所有作品都是虛構品牌;成品是真的,全部由 agent 使用這個 skill 做出來。