{(set:
$last to "",
$day to 1,
$energy to 10,
$fatigue to 0,
$shadow to 0,
$processDone to 0,
$taskComplete to 0,
$processTotal to 44,
$overdriveDebt to 0,
$overdriveAvailToday to 0,
$overdriveDebtIncToday to 0,
$overdriveUsedToday to 0,
$announceMsg to "",
$lastAnnounced to "",
$dodo to 0,
$mirrorEngage to 0,
$shadowLand to 0,
$screenComplete to 0)
<!--/* Game state */--!>\
(set:
$sequenceProcess to (a:),
$taskExCount to (a:))\
(set: $checklistSubId to "1A")\
(set: $dayTier2Pending to (a:))\
(set: $extUsed to (a:))
(set: $main to "", $delta to "")
<!--/* SUBTASK CATALOG: subtaskId → label, delta, value */--!>\
(set: $required_subs to (a:
"1A","1B","1C","1D","1E",
"2A","2B","2C",
"3A","3B","3C",
"4A","4B","4C",
"5A",
"6A","6B","6C","6D","6E",
"7A","7B","7C",
"8A",
"9A","9B","9C",
"10A",
"11A",
"12A","12B",
"13A",
"14A","14B","14C","14D","14E",
"15A",
"16A",
"17A",
"18A","18B","18C",
"19A","20A","21A","22A","23A","24A"
))
(set: $subs to (dm:
"1A", (dm: "label","Experiment with lightsource: flashlight",
"short","flashlight",
"delta","The Artist sets a flashlight on the table and traces its beam across to the wall where they tape up a piece of paper. They sketch the shifting rings of light and note where brightness pools and fades. Switching between battery and USB lights, they compare the warmth and strength of each glow, measuring how far the beam holds before it diffuses. The glare stings their eyes; they blink away the afterimage and continue. They mark the experiment as complete on their checklist.
",
"value",0.2),
"1B", (dm: "label","Experiment with lightsource: lamp",
"short","lamp",
"delta","The Artist experiments with a lamp, sketching the shapes and edges of light but quickly abandoning precision for movement. Warm, cool, and colour-shifting bulbs change the mood of the shadows. The lamp is dragged from wall to tabletop to floor as the Artist chases a clearer line. Twice they snag a cord and catch themselves, laughing in the dark. They mark it as complete on their checklist.
",
"value",0.2),
"1C", (dm: "label","Experiment with lightsource: candle",
"short","candle",
"delta","The Artist experiments with candlelight. Small flames flicker as they move slowly, sometimes snuffing out by accident. Wax drips across the page as they take notes. They write a few final lines, then mark the task complete. Relief shows in their posture as they switch on the studio’s overhead light.
",
"value",0.2),
"1D", (dm: "label","Experiment with lightsource: sun",
"short","sunlight",
"delta","The Artist experiments with sunlight, shifting objects near the window and studying how shadows thicken and fade. Outside, they use chalk to trace objects and their own bending form, the outlines uneven but alive. When trees sway, the shifting light overlaps their marks in ways that make them smile. They photograph the drawings, then return to the studio, quietly pleased. They mark it as complete on their checklist.
",
"value",0.2),
"1E", (dm: "label","Experiment with lightsource: projector",
"short","projector",
"delta","The Artist experiments with a projector, testing different surfaces until settling on the ceiling. They layer transparencies drawn in dry-erase, wet-erase, and ink, then add small objects: a ruler, a rock, a glass mug, iridescent earrings, and a diamond. Each alters the light differently: glass blurs, metal sharpens, and along the edges, faint blue and yellow bands appear when examined up close. They record the results in their notebook and mark the experiment complete.
",
"value",0.2),
"2A",(dm:"label","Experiment with shapes: geometric forms",
"short","geometric forms",
"delta","The Artist cuts paper and cardboard into circles, triangles, and squares. They compare machine-cut precision to the soft irregularity of shapes made by hand. Using flashlight and projector, they test how thickness and gesture alter the edges of each shadow, then layer the pieces to form new, intersecting silhouettes. They record their findings and mark the task complete.
",
"value",0.33),
"2B",(dm:"label","Experiment with shapes: animals",
"short","animal forms",
"delta","The Artist traces silhouettes of a dog, a bird in flight and at rest, a fish, and Dodo the cat. They test each under light, moving them to mimic natural motion. Flatness resists realism; exaggerated gestures work better. They spend more time cutting and refining the shapes than playing with the shadows themselves. They mark it complete on their checklist.
",
"value",0.33),
"2C",(dm:"label","Experiment with shapes: hands",
"short","handshape",
"delta","Standing between a light panel and wall, the Artist shapes letters from the ASL alphabet, then attempts rabbits, wolves, and birds from an old Shadowgraph Show manual. Coordination falters and their joints occassionally lock; their hands forget how to move as soon as they turn to watch the projection. They laugh, adjust, and try again. They mark it complete on their checklist.
",
"value",0.34),
"3A",(dm:"label","Explore layering: shadows",
"short","shadows",
"delta","Against drawn curtains, the Artist arranges paper, lenses, containers, and sculptures before a light panel. Each added layer and object changes how shadows meet with some merging while others blur apart. The longer they spend time adjusting, they more they blink, their eyes aching from darkness and glare. They snap a few poor photos and mark the task complete.
",
"value",0.33),
"3B",(dm:"label","Explore layering: gels",
"short","layered gels",
"delta","The Artist tests two dusty photo gels, red and blue. Overlapping, the colours turn into a nearly opaque plum. Dissatisfied, the Artist wipes them clean and tapes the red gel to a flashlight. This is also removed. As they clear the table, a stray beam catches the gel’s surface, and they are distracted. They watch the reflected images shimmering faintly on its surface. They note the discovery, wondering if reflections count as shadow play, then mark the task complete.
",
"value",0.33),
"3C",(dm:"label","Explore layering: transparencies",
"short","transparencies",
"delta","On clear sheets, the Artist tests orange materials—wax crayons, markers, inks, and paint. Window crayon lays down thick and reads as near-black. Mr. Sketch markers carry bright colour; the felt tip leaves visible terminals and strokes. A highlighter barely registers with thin translucent spines down each line. Watercolour crayon is faint when dry; with water it smears to a dull grey. Brush-applied watercolour reads cleaner, liquid paste carrying more colour than dry. They note which materials and mark-making techniques preserve gesture and which collapse into blot, then mark it complete.
",
"value",0.34),
"4A",(dm:"label","Experiment with distance: object to light",
"short","object to light",
"delta","[](screen| The Artist turns on the projector and places a red stapler on its glass. They slide it forward and back, watching the shadow expand and blur, a halo forming around its edges. At one-third of the distance the shape sharpens. Closer still, the glow fades until the silhouette appears almost real. Switching tools, the Artist tests a Luma pad and an LED flashlight. The pad diffuses light gently but dulls the contrast; the flashlight throws crisp shadows that wash out with any stray light. They jot distances and notes in their sketchbook, blinking against the brightness. They mark the experiment as complete on their checklist.
",
"value",0.33),
"4B",(dm:"label","Experiment with distance: object to screen",
"short","object to screen",
"delta","[](screen| The Artist studies how movement changes a shadow’s size and rhythm. Candlelight allows mistakes; harsh light demands control. They prefer precision but begin sketching scenes where the light, not figure, carries focus. In these tests, as the distance between the object and screen shrinks, it leaves less room for the performer's body. After a few test, they stand and return to their sketchbook. They confess in their notes that their body wants less contortion this year and stretch for an extended period before cleaning up. They mark it complete on their checklist.
",
"value",0.33),
"4C",(dm:"label","Experiment with distance: light to screen",
"short","light to screen",
"delta","Testing multiple light sources, the Artist finds clarity in simplicity: one bright lamp defines shapes, shadow and tone, but many cause shadows to split and blur. They blink against the glare and experiment with closely placed candles, but blow them out as anxiety clouds their face. Repositioning their flashlight, they become distracted by the shadows they cast with a front-lit projection, and spend some time writing notes about the pros and cons of a backlit screen in favour of a front lit one. They mark the task complete on their checklist.
",
"value",0.34),
"5A",(dm:"label","Document experiments so far",
"short","journal",
"delta","[A stretched screen now lines the studio doorway, and the Artist ducks beneath it to refill their tea before reviewing their notes. ](screen|They copy pages from their sketchbook, transcribe voice recordings, and rewrite key observations in a lined notebook. A note to their future self reads: It’s easy to give up when things are difficult. Try first before you abandon the experiment.
They mark phase-one journaling as complete on their checklist.
",
"value",2),
"6A",(dm:"label","Shadow material trials: copy paper",
"short","copy paper",
"delta","The Artist tests white, orange, and fluorescent copy paper; cheap and plentiful. Held near the light, the sheets diffuse illumination so strongly that only nearby shapes appear, soft and blurred on the screen. They press the paper close to the screen, then pull it back, noting how light bleeds through easily through the lightweight paper. Coloured paper shifts the tone faintly, almost imperceptibly. They experiment with supports: folded feet, floral wire, bits of putty, even taping masks to the back of the screen. They mark it as complete on their checklist.
",
"value",0.2),
"6B",(dm:"label","Shadow material trials: cardstock",
"short","cardstock",
"delta","The Artist cuts abstract and figurative forms from heavy cardstock. The thicker paper casts opaque, crisp shadows but creases stubbornly. Colour makes no difference—white and black appear the same. For prototyping, they still prefer copy paper for speed and cost, but note that successful designs could be traced into cardstock later. They note their irritation at smudged fingerprints and laugh at caring about neatness for work meant to stay unseen. They mark it as complete on their checklist.
",
"value",0.2),
"6C",(dm:"label","Shadow material trials: acetate",
"short","acetate",
"delta","The Artist paints and draws directly on acetate atop the projector. They spray water droplets which scatter light into rounded puddles. Pastels create semi-opaque lines and gouache brushstrokes block the light. Thinned acrylic paints glow in projection, their tones altered by light but mostly effective. Acrylic inks surprise them the most; their colours shifting wildly when wet, only partly returning to true colours as they dry. Blinking through a headache, the Artist photographs the projected results and compares them to flashlight and light-pad tests, noting how colour becomes uniform shadow until the sheet nearly touches the screen. They mark it as complete on their checklist.
",
"value",0.2),
"6D",(dm:"label","Shadow material trials: wire",
"short","wire",
"delta","The Artist marks their sketchbook in large, enthusiastic letters: “Wire drawing on the projector is unexpectedly satisfying!” Sixteen-gauge rebar wire forms clear, steady lines; thinner galvanized and copper wires bend or lift, leaving crisp but fragile marks. Floral wire, reused from earlier prototypes, supports light paper shapes yet warps quickly. When taped to the screen’s edge, the wires create a fine filigree that still lets other shadows pass through. They mark it as complete on their checklist.
",
"value",0.2),
"6E",(dm:"label","Shadow material trials: fabric",
"short","fabric",
"delta","The Artist tests a tablecloth, lace, cotton rags, and a polyester shirt under every light: projector, flashlight, pad, even a cautious candle. Most fabrics block light entirely; only lace casting a visible texture. Stretched cotton, however, proves lively: when pulled, it mimics movement. Lace layered on the projector becomes a ornate frame, curtains, or clouds as their position and movement is varied. The rest of the test feel dull, but the Artist sets the cotton and lace aside in the “interesting” pile before cleaning up. They mark it as complete on their checklist.
",
"value",0.2),
"7A",(dm:"label","Experiment with articulation: brads",
"short","brads as articulation",
"delta","The Artist tries making handmade paper brads but their hands do not cooperate. A trip to the craft store yields proper brads, though they quickly regret not buying a hole punch. Pencil-pierced joints snag or tear, so they sand edges smooth. Brads hold best in cardstock but restrict motion to flat rotation unless pressed against a surface. Using a template of an old woman puppet[ from the library book //Me and My Shadow//](library|, the Artist joints its jaw and shoulder. The mouth opens, the arm tosses something in. The movement is clean against the projector glass. They mark it as complete on their checklist.
",
"value",0.33),
"7B",(dm:"label","Experiment with articulation: thread",
"short","thread as articulation",
"delta","Inspired by [the library book, ](library|//The Shadow-Puppet Book//, the Artist threads joints through a paper ballerina. Finding the right tension between freedom and recoil takes several attempts; transparent thread complicates things for tired eyes. When using a flashlight, their own hands eclipse the figure, so they lay it flat on the overhead projector. The puppet moves stiffly, limbs jerking at odd angles, yet the motion hints at future refinement. The Artist sets the ballerina aside, planning to revisit it once rods enter their toolkit. They mark it as complete on their checklist.
",
"value",0.33),
"7C",(dm:"label","Experiment with articulation: tape",
"short","tape as articulaton",
"delta","The Artist cuts rough figures and hinges the limbs with tape. Movements prove erratic—limbs blur or vanish—but surprises emerge. A taped-on tail flicks believably; a hidden box drops from behind a torso with a satisfying reveal. Transparent tape adds colour and translucence, joining two clouds with a painted rainbow that trembles as one shifts. The irregular drag between layers creates a stuttering, organic rhythm that pleases them. They mark it as complete on their checklist.
",
"value",0.34),
"8A",(dm:"label","Experiment with silhouettes",
"short","silhouettes",
"delta","The Artist hangs a white sheet across the studio doorway and sets a flashlight on the floor. Sitting at different distances, they watch how angle and height change the sharpness of their silhouette. A tilted light doubles the outline with a faint echo behind it. Turning their head smooths away small features, yet the shape still reads unmistakably as a face. Even when the arms are hidden, a head and torso are enough to mark a body.
Raising the flashlight onto a stool, the Artist tests small papier-mâché trees and a wooden hand near the screen. The trees, far from the light, blur into distant shapes; the hand, close to the fabric, is crisp and immediate. Moving the light around shifts the image but never disguises the form. They note how much they prefer directing light to moving puppets. When the studio lights come back on, the cat darts in under the curtain. They mark it as complete on their checklist.
",
"value",1),
"9A",(dm:"label","Experiment with manipulation: rod",
"short","rod as manipulator",
"delta","The Artist gathers chopsticks, paper rods, and bamboo skewers to test as manipulators. Chopsticks handle easily but cast strong secondary shadows. Skewers are lighter and more discreet, though harder to glue at right angles. Paper rods surprise them most: when attached to puppets, their shadows blend seamlessly, and the rods bend without breaking.
They swap a chopstick on the brad-jointed old woman puppet for floral wire. The joints move smoothly, and the wire nearly disappears in projection. The Artist keeps two paper-rod dogs assembled for later reference and stores the rest of the parts away. They mark it as complete on their checklist.
",
"value",0.33),
"9B",(dm:"label","Experiment with manipulation: string",
"short","string as manipulator",
"delta","The Artist threads cotton string through earlier paper cutouts, hoping to suspend and control them. The lighter shapes jump and spin; kinks in the thread make the movements jitter. They try again, tying three triangles together with brads and strings, fixing one to a stool near the screen. It's clumsy and overworked.
On the projector, the strings drag visibly across the glass unless pulled tight, breaking the illusion. Moving back to the screen, the Artist adds small gem stickers to both sides of a circle and hangs it from the frame. When it spins, flashes of colour scatter across the surface, unpredictable but briefly beautiful. They coil the string for reuse and clean their table. They mark it as complete on their checklist.
",
"value",0.33),
"9C",(dm:"label","Experiment with manipulation: hand",
"short","hand as manipulator",
"delta","The Artist sits before the screen, a flashlight aimed past their shoulder. They raise a triangle cutout, their hand visible in its shadow. Lowering and lifting the piece again, they give it a small dance that makes them laugh. It feels right that the performer’s hand remains part of the act, not hidden away.
They test other props: a plaster skull with a spring jaw, the wooden hand model, then paper templates[ from the book, //Making a Shadowgraph Show//. A grandmotherly wolf in a nightcap takes shape through bent fingers; a horse gallops clumsily with alternating squeezes and flicks](library|. Each pose demands strength and patience. The Artist stretches their hands between takes, amused by the parallels to signing or delicate toolwork. They set the pieces aside and record a final note before resting their fingers. They mark it as complete on their checklist.
",
"value",0.34),
"10A",(dm:"label","Experiment with hand gestures",
"short","hand gestures",
"delta","The Artist reviews their earlier notes on hand shapes and expands it by exploring gestures familiar to most western audiences. A thumbs-up, then down. Pointing, finger guns, and a square frame that shifts into a heart. Crossed fingers for luck. Peace signs. Quotation marks. A high five.
They film the session and notice how their body naturally reacts to each shape—the tilt of the head, a shrug, a lean forward. With the body included, the gestures carry tone and feeling. With only the hands, they become clean, iconic symbols. Both versions have meaning. They nod at the screen and mark the task complete.
",
"value",1),
"11A",(dm:"label","Document experiments so far (2)",
"short","journal",
"delta","The Artist compiles their notes, adding labels in pencil to prototype puppets and sketches beside reorganized observations in a lined notebook. They pause over an earlier affirmation: keep trying when things are hard. Closing the book, they smile—many tests failed or led somewhere unexpected, but all offered something to record. They mark phase-two journaling as complete on their checklist.
",
"value",2),
"12A",(dm:"label","Experiment with scenes: foreground",
"short","scenes with foreground",
"delta","The Artist quickly and roughly rips forms from kraft paper. They tape paper mountains to the lower edge of the screen and branches to the corners. In the darkened studio, they crouch behind the screen, moving puppets along the base. Depth proves tricky; the flashlight’s beam erases the forms on the other side. A copy-paper bird lands between the mountains, then takes flight with their hand forming wings.
They repeat the test with the mountains taped to the back of the screen. Now all shadows share the same tone, losing colour differences but gaining clarity. They notice the copy-paper bird lightens when pressed against the screen, darkening again when pulled back. They make a note: distance controls tone as much as thickness. The Artist sketches ideas for layering scenes with multiple surfaces and smiles at the possibilities. They mark it as complete on their checklist.
",
"value",0.5),
"12B",(dm:"label","Experiment with scenes: background",
"short","scenes with background",
"delta","Revisiting notes on silhouettes, the Artist recalls how small sculptures near the flashlight blurred or blocked the beam. This time, they tape kraft paper branches to the projector glass. Large tree shadows stretch across the screen; clear but softer than foreground shapes. They quickly tear smaller versions of the branches and replace them which add depth and form a quiet forest.
They attempt to mask the flashlight directly, layering cardstock and acetate, but the light is too strong. Hanging a mask between the light and screen works better, though it’s difficult to keep their body out of view. In their notebook, they sketch a long, layered corridor lit from behind—a shadow box in miniature. Laughing, they realize they’ve come full circle to an artform they already love. The lights go off. They mark the experiment complete.
",
"value",0.5),
"13A",(dm:"label","Experiment with screens",
"short","screens",
"delta","The Artist assembles a wooden frame from lumber they cut in the building's workshop and stretches leftover vinyl mesh across it. They hang it in their studio's doorway with a laundry line and compare it to surfaces previously used.
The ceiling is smooth but strains the neck when used for long sessions. The loose tablecloth sheet softens shadows yet lets bright projector light bleed through. Their red curtains add drama but only with harsh lights and opaque masks. The new vinyl screen is smooth, bright, and easy on the eyes. It holds clean shadows without glare and hangs comfortably at face height. The Artist records their comparisons and decides this will be their primary surface. They mark it as complete on their checklist.
",
"value",1),
"14A",(dm:"label","Explore special effects: fabric",
"short","fabric special effects",
"delta","The Artist begins by clipping a neon T-shirt beside their screen, angled until its reflected colour washes the stage without blocking movement. A scrap of chiffon is pressed to the screen: bunched it reads as cloud or ice, but near the projector it’s slippery, skittering in the fan. The Artist tosses it aside with disgust. Tulle behaves better — the netting flutters and, when fanned, shifts like wind-bent grass or seaweed.
They set a nylon photo reflector under the screen. In darkness, a single overhead flashlight turns the studio starkly bright; lifting the nylon to a peak collapses the light to a column. The effect is dramatic but touchy at the edges. The Artist texts their mother who is an accomplished tailor to plan more future fabric trials, then tidies for the next task.
",
"value",0.2),
"14B",(dm:"label","Explore special effects: smoke",
"short","smoke special effects",
"delta","The Artist boils water, sets a diffuser, and darkens the room. Steam reads best when lit from below with a strong beam but through a screen, boiled water is faint. The diffuser forms a solid column; back-lighting it works until disturbed, then the effect reads front-of-screen only.
Paper smoke is immediate and dramatic with candle or flashlight, but the Artist quenches it in water within seconds. Incense is gentler, still visible, but introduces scent barriers and safety concerns. A brief DIY search confirms the preference and they add a note: use water and props to simulate smoke rather than introduce flame or heavy vapor. They mark the experiment complete.
",
"value",0.2),
"14C",(dm:"label","Explore special effects: water",
"short","water special effects",
"delta","The Artist sprays water beads directly onto the screen. Back lit, water applied to the front read as dark domes as if hoarding shadow; on the back side they glow, backlit like rain on a window at night.
On the projector, water on acetate quivers when the sheet is tapped, forms ridges when curled, and pools into sharp-edged shapes as it settles. In a small plastic cup, the base circle is perfectly crisp; overlapping walls bloom into pale blue and yellow bands.
An ice cube on acetate first reads as a blunt stone, then reveals internal cells and trapped bubbles as it melts — jellylike, then opal-like. Even when fully melted, the edge stays sharp, the center hazy. They log the sequence and clean up.
",
"value",0.2),
"14D",(dm:"label","Explore special effects: moving colour",
"short","moving colour special effects",
"delta","The Artist visits their kitchen and returns with a box of food colouring. At first, it is underwhelming. Red and blue puddles gather their neighbours and then still. Slow tilts yield some mixing, but a more aggressive shake muddies it dull red, then to purple after still more agitation. Edges stay lighter than earlier bead tests with just water. The Artist wicks one side with paper towel and watches as the colouring is removed but the water remains. Dabbing, the puddle breaks into uneven spots and thin coloured residue.
On silica-coated inkjet transparency, guided water behaves more like paint: sprays, strokes, and gradients hold their shape. The Artist creates a gradient where blue meets yellow, then leaves it to dry into layered bands.
With a flashlight, they slide colour gels into and out of frame to simulate wipes and splits. Left versus right layers split up an argument. Visual time is represented by top and bottom layers as they moves from sunset to dusk. On the projector, the dried transparency is set to spins into a dizzying tunnel of colour. The Artist marks the experiment complete.
",
"value",0.2),
"14E",(dm:"label","Explore special effects: spinning",
"short","spinning special effects",
"delta","The Artist reviews their moving colour tests where a spin would simulate a fall. Now, layered acetate and a brad combine to create a simple dial: an arrow extending from the centre spins to become a clock, and layered spirals rotate and counter-rotate to pull the eye inward. In a third trial, a three-layer scene madeup of a park a sun/moon sky, and a dark cross-hatch pattern, spins to transform day to night as lines move over the park's sky.
They fumble with a quick neon paper pinwheel. It is opaque on the projector, but motion sells it. The spinning on glass is wildly distracting. Held at the screen edge and blown, a line of pinwheels reads as moving blades and with figurative fins it implies an crowds or a herd of animals. They mark it as complete on their checklist.
",
"value",0.2),
"15A",(dm:"label","Create a still",
"short","still creation",
"delta","At their drafting table, the Artist lays a flashlight flat and arranges torn pieces of copy paper in its beam. Rough masks are repositioned and pierced. Satisfied, the Artist moves to another table and cuts sturdier forms from cardstock. Trees and bushes stand upright—some with L-shaped bases, others built as hollow tubes capped by flat, slotted canopies.
On their computer, they draw a running child in bright colours, then pare the palette down until only the outlines remain. The image becomes a silhouette, transferred to their die-cut program and cut from cereal-box cardboard. Back at the scene, they adjust distances, tape a green-and-blue gel in front of the light, and set a marble to roll past the child as the camera’s flash captures the motion.
After a few more passes and small corrections, the Artist tidies the table and marks the experiment complete on their checklist.
",
"value",1),
"16A",(dm:"label","Play with colourfields",
"short","colourfields",
"delta","The Artist approaches this experiment with confident energy. Without hesitation, they squeeze blue and green acrylics directly onto a sheet of Graffix film. Snapping on gloves, they mist the surface with water and press their palms flat into the paint. From the shoulders down, motion becomes mark and smears, and arcs are carefully intentional so that green remains distinct inside the sea of blue.
They set the sheet aside and begin another, this time with white. Blue-streaked gloves blend the colours into swirls and drifts, leaving areas of clear white, deep blue, and soft gradients between.
Cleaning their tools, the Artist lays the drying colourfields beside earlier experiments—food colouring, ink, and red gel—and leaves them to rest. An hour later, they return to test the new sheets on the projector. Blue and white glow against the screen; layered gels shift tone but never feel right. The Artist ends by taping the green and blue film to the studio window, sunlight filling the composition. They mark the experiment complete on their checklist.
",
"value",1),
"17A",(dm:"label","Document experiments so far (3)",
"short","journal",
"delta","The Artist compiles their notes, and adds colour swatches next to reorganized observations in a lined notebook. They flip back and count their reflections from the first and second phases, and then measure their total against robust entries from this most recent round of experiments. They mark phase-three journaling as complete on their checklist.
",
"value",2),
"18A",(dm:"label","Make concept sketches: familiar story",
"short","story concept sketch",
"delta","The Artist opens a large sketchbook and grids a page into storyboard panels, writing Alice in Wonderland across the top. Beneath each frame they note a beat: Alice falls, peers through a keyhole, drinks a potion, drinks tea, plays croquet. In each square, a stick figure enacts the scene.
When the page is filled, they tear it out and start again, redrawing the sequence with arrows for motion and notations for light and material. The new sheet grows dense with technical marks and reminders for future shadow work. They mark it as complete on their checklist.
",
"value",0.33),
"18B",(dm:"label","Make concept sketches: silence",
"short","silence concept sketch",
"delta","Using the same storyboard template, the Artist hesitates—there is no story this time. On a loose sheet, they write words tied to silence: peaceful, still, uncertain. A line divides a second list drawn from Deaf and deaf experience: essential, empowering, othering. Below, a third cluster emerges: no speech, no sound, no movement, sunsets, space, a stone through time.
Returning to the storyboard, they anchor each frame around a small opaque figure and explore silence as both burden and power: social, natural, and elemental. Stretching, they glance between this page and the earlier Alice sequence, then check the experiment off with a decisive tick.
",
"value",0.33),
"18C",(dm:"label","Make concept sketches: abstract",
"short","abstract concept sketch",
"delta","The Artist drafts another grid, then sets it aside for warm-up drawings. Eight one-minute sketches fill a stack of quartered copy paper with automatic marks, and quick gestures. Spread out in two rows, they select recurring shapes, redrawing and cutting them into isolated pieces.
Back at the grid, each frame receives one fragment, the form rotated and considered within the rectangle before being pasted into place. Some are extended with new lines moving in and around the frame, and others are layered with faint watercolour washes for depth. As they dry, arrows and letters point to notes below. The Artist studies the growing composition, then marks the task complete on their checklist.
",
"value",0.34),
"19A",(dm:"label","Prototype a scene",
"short","scene prototype",
"delta","The Artist traces John Tenniel’s //Alice in Wonderland// illustrations on their computer and cuts the outlines with a die-cut machine. Alice falling, teacups, cards, a tophat, these are taped to acetate. The Artist purses their lips and then handdraws and cuts a flamingo and rabbit and adds it to the chaos. Alice alone hangs free, a string tied to one leg.
Layering the food-colouring gradient and the swirling acetate on the projector, the Artist films as the pieces move. Alice turns one way while the background twists the other, colours spiraling into motion. Dissatisfied, they replace the string with floral wire for better control, moving Alice nearer to the screen. They continue testing distance, order, and light until the fall feels convincingly dizzy. The Artist cleans up and marks the experiment complete on their checklist.
",
"value",1),
"20A",(dm:"label","Create a concept puppet",
"short","concept puppet",
"delta","The Artist removes the Alice silhouette from the acetate of the previous experiement and tears it apart. Arms, legs, head, and dress; the new pieces are used to test joint motion with a pencil as a temporary fastener. Satisfied, they cut dozens of the same silhouette on their die-cutter, trimming and joining limbs with metal brads for the major joints and thread for the minor ones.
The bisected dress proves trickier. After several attempts, they sew layered panels that flare at the sides without collapsing into the torso. Alice is reassembled on acetate: limbs wired, the body is ready to twist and flail. When lit, she finally falls as intended. She is wild, weightless, and alive. The Artist puts the puppet aside and marks the experiment complete on their checklist.
",
"value",1),
"21A",(dm:"label","Explore silence and shadow",
"short","silence and shadow",
"delta","The Artist sits before the screen, studying their shadow. Small motions swell into bigger gestures. They stand up.
With the flashlight, they isolate their hands, tracing simple finger movements first that echo signed storytelling, and then two facing digits trying to speak without limbs. They turn the beam on studio objects, and tools, observing how light pools and texture endures. Their cat interrupts with a meow, breaking the silence. After a quick cuddle, they reflect in writing:
...silence, like shadow, depends on others not to break it.
They save the file and mark the experiment complete on their checklist.
",
"value",1),
"22A",(dm:"label","Write a short sequence",
"short","short sequence",
"delta","The Artist arranges prototypes and scenes across the table, revisiting patterns from earlier experiments. Choosing the yellow-green acetate and an articulated old woman puppet, they add new creatures cut from black cardstock and wired for motion.
Within a projection, the woman swallows each puppet in turn—fly, spider, bird, cat, dog, horse—her belly crowded with silhouettes. When the Artist tilts her head back, the puppets burst upward in an explosion of escape. Laughing, they right her jaw. After a pause, they move the fly into her hand, and as she raises her arm slowly, they turn off the projector. The Artist applauds and marks the task complete on their checklist.
",
"value",1),
"23A",(dm:"label","Document experiments so far (4)",
"short","journal",
"delta","The Artist stands at their computer and opens a blank document. Words spill quickly detailing notes on the past few experiments, thoughts on story and composition, and their quiet pride that these tests came after so much material play. They pause, reread, and nod, recognizing how fewer expectations had made space for surprise.
Closing the file, they return to the table, sorting finished pieces into a neat stack. Technical notes and observations are transferred into a lined notebook. They mark phase-four journaling as complete on their checklist.
",
"value",2),
"24A",(dm:"label","Document thoughts from the month",
"short","final journal",
"delta","The Artist tidies their studio, stacking prototypes and sorting loose materials. Surfaces are wiped, floors swept, and photos taken of the well-used space. On a clean table, they lay out objects from each phase, photographing and labeling them before linking images to notes in their notebook.
Several hours and many cups of tea later, materials are divided into keep, store, and discard. Tools are put away, and a manila envelope labeled October 2025 – Prototypes joins others in a bin. The Artist looks deeply satisfied.
",
"value",3),
"CELEBRATE",(dm:"label","Rest and recover",
"short","celebration",
"delta","Against all odds, against time and fatigue working against them, the Artist somehow completes their task list before the month concludes. They spend an hour playing with their puppets, and adding notes to lined notebook. Many more cups of tea are drunk.
",
"value",1)
))\
<!--/* TASKS LIST: each task groups subtasks and defines its week/unlock */--!>\
(set: $tasksList to (a:
(dm:"id","T1","title","Experiment with lightsource","week",1,"subs",(a:"1A","1B","1C", "1D", "1E"),"collapse", false),
(dm:"id","T2","title","Cut simple shapes","week",1,"subs",(a:"2A","2B","2C"),"collapse", false),
(dm:"id","T3","title","Explore layering","week",1,"subs",(a:"3A","3B","3C"),"collapse", false),
(dm:"id","T4","title","Experiment with distance","week",1,"subs",(a:"4A","4B","4C"),"collapse", false),
(dm:"id","T5","title","Document experiments so far","week",1,"subs",(a:"5A"),"collapse", true),
(dm:"id","T6","title","Shadow material trials","week",2,"subs",(a:"6A","6B","6C","6D","6E"),"collapse", false),
(dm:"id","T7","title","Experiment with articulation","week",2,"subs",(a:"7A","7B","7C"),"collapse", false),
(dm:"id","T8","title","Experiment with silhouettes","week",2,"subs",(a:"8A"),"collapse", true),
(dm:"id","T9","title","Experiment with manipulation","week",2,"subs",(a:"9A","9B","9C"),"collapse", false),
(dm:"id","T10","title","Experiment with hand gestures","week",2,"subs",(a:"10A"),"collapse", true),
(dm:"id","T11","title","Document experiments so far (2) ","week",2,"unlockDay",14,"subs",(a:"11A"),"collapse", true),
(dm:"id","T12","title","Experiment with scenes","week",3,"subs",(a:"12A","12B"),"collapse", false),
(dm:"id","T13","title","Experiment with screens ","week",3,"subs",(a:"13A"),"collapse", true),
(dm:"id","T14","title","Explore special effects","week",3,"subs",(a:"14A","14B","14C","14D","14E"),"collapse", false),
(dm:"id","T15","title","Create a still ","week",3,"subs",(a:"15A"),"collapse", true),
(dm:"id","T16","title","Play with colourfields ","week",3,"subs",(a:"16A"),"collapse", true),
(dm:"id","T17","title","Document experiments so far (3) ","week",3,"unlockDay",20,"subs",(a:"17A"),"collapse", true),
(dm:"id","T18","title","Make concept sketches","week",4,"subs",(a:"18A","18B","18C"),"collapse", false),
(dm:"id","T19","title","Prototype a scene ","week",4,"subs",(a:"19A"),"collapse", true),
(dm:"id","T20","title","Create a concept puppet ","week",4,"subs",(a:"20A"),"collapse", true),
(dm:"id","T21","title","Explore silence and shadow ","week",4,"subs",(a:"21A"),"collapse", true),
(dm:"id","T22","title","Write a short sequence ","week",4,"subs",(a:"22A"),"collapse", true),
(dm:"id","T23","title","Document experiments so far (4) ","week",4,"subs",(a:"23A"),"collapse", true),
(dm:"id","T24","title","Document thoughts from the month ","week",4,"subs",(a:"24A"),"collapse", true)
))
\
<!-- Weather
=== Weather codes ===
1=sun, 2=var. s→r, 3=var. o→s, 4=overcast, 5=drizzle/showers, 6=rain, 7=freezing rain, 8=snow
--!>\
(set:
$weatherByDay to (dm:
1,5, 2,3, 3,4, 4,4, 5,1, 6,1, 7,4, 8,4, 9,4, 10,6,
11,6, 12,4, 13,1, 14,1, 15,1, 16,4, 17,1, 18,6, 19,3, 20,6,
21,3, 22,6, 23,5, 24,6, 25,5, 26,5, 27,4, 28,6, 29,4, 30,3, 31,6
)
)\
(set: $overdriveUsedToday to 1)\
<!--/* Daily Task catalog */--!>\
(set:
$dailyCatIds to (a: "clouds","hydrate","tidy", "socialize", "readPleasure", "readResearch", "sketch", "journalMood"),
$dailyCat to (dm:
"clouds",(dm:"label","Watch the clouds",
"tiers",(a: "The Artist settles by the studio window and watches the clouds. (if: $weatherByDay's $day > 1)[Heavy shapes drift like dirty cotton and distressed snow.](else:)[Thin wisps glow, lit from within.] After a few quiet minutes, they jot down words in a nearby sketchbook and step away.
","The Artist returns to the window with their sketchbook, rereading past notes. They add new words for the shifting shapes and shadows (if:$weatherByDay's $day < 5)[and light of the sun and](else:)[of the] clouds. After a short while, they close the book and step back from the window.
","The Artist studies pages filled with earlier cloud observations; quick sketches of shadow, texture, and time. They add a few more notes, then let the book fall shut to simply watch. (if: $weatherByDay's $day >4)[The rain clings to the window, distorting the view into blurry patterns.] They take a deep, cleansing breath before stepping back from the window.
", "The Artist pauses at the window to add a few more notes and doodles to their cloud observations. Flipping back through their notes, they smile and then return to their drafting table.
"),
"process",(a: 0.25, 0.25, 0.5, 0),
"shadowDown",(a: 0.5,0.5,1,1),
"energyRestoreChance",(a: 0,5,5,5),
"count", 0
),
"hydrate",(dm:"label","Hydrate",
"tiers",(a: "The Artist fills their water bottle and takes a long drink before returning to the drafting table.
","The Artist refills their bottle, adds a splash of lemon, and drinks deeply. They set it in the centre of the drafting table, sipping through the day.
","The Artist rinses and scrubs their bottle clean, then fills it to the brim. Back at the table, they set it down and immediately lift it again for another gulp before working on.
", "The Artist drinks from their bottle without thinking. Hydration has become a cue to pause, to stand back, to empty; stepping away from and returning to the studio in rhythm.
"),
"process",(a: 0.125, 0.375, 0.5, 0),
"shadowDown",(a: 0.25,0.5,1,2),
"energyRestoreChance",(a: 5,10,10,20),
"count", 0
),
"tidy",(dm:"label","Tidy the studio",
"tiers",(a: "The Artist attends to piles of paper and a few stray tools. They hang the tools back on the pegboard, but after a quick restacking, they leave the papers where they are and return to the drafting table.
","The Artist brings a stack of papers to the drafting board and begins sorting. Blank sheets go to storage, letters to a file drawer, and half-finished sketches back to their pile. The desk looks no cleaner, but the clutter has a rhythm now.
","The Artist faces the last unruly pile. They sift slowly. Forms, letters, and scraps. Reusable papers join the art supply bins; forms leave the studio; scraps are recycled. What remains is restacked neatly on the desk before they return to work.
", "The studio is mostly in order now. Only a few in-progress works lie open across the tables. The Artist addresses a page in the remaining writing desk pile, then leaves the rest to return to the drafting table.
"),
"process",(a: 0.125, 0.375, 0.5, 0),
"shadowDown",(a: 0.25,0.5,0.5,1),
"energyRestoreChance",(a: 0,5,10,5),
"count", 0
),
"socialize",(dm:"label","Check messages",
"tiers",(a: "The Artist steps back from their work bench and picks up their phone. They scroll through contacts, pausing over a few names. After a minute, they shake their head, set the phone face down and return to the drafting table.
","The Artist opens their messages with a grimace. A few friends wait in the queue. They choose the shortest thread, type a reply, and add an emoji before putting the phone away.
","The Artist opens their inbox. Lines of bounceback notices from their out-of-office reply caught in a loop with do-not-reply addresses flood the screen. It repeats like static until one name breaks the pattern: Dad. They open the message, write back a short note, and sign it with a small smile. Then they close the window and return to the drafting table.
", "The Artist replies to a pending message, calm and unhurried. Conversation feels lighter now, less like work. They glance at a few names with unread counts climbing into the tens, then flip the phone over with a soft snap.
"),
"process",(a: 0.125, 0.125, 0.75, 0),
"shadowDown",(a: 0.5,0.5,1,0.5),
"energyRestoreChance",(a: 0,5,10,0),
"count", 0
),
"readPleasure",(dm:"label","Read fiction",
"tiers",(a: "The Artist leaves the studio for the bedroom. A stack of books waits; the top most is dusty. They wipe the cover clean, set a timer, and begin to read...hitting snooze twice before closing the book with reluctance. They place the book on the couch near their studio before returning to their workbench.
","The Artist picks up their book from the couch and sinks into it. Minutes stretch; the timer buzzes unheard. They hit snooze three times to finish the chapter, smirking each time.
","The Artist finishes their book with a sigh and checks the clock. The hours have slipped away, this time not bound by a timer. They shelve the book, take another from the bedside table, and carry it toward the studio, leaving it closed on the couch.
", "The Artist sets their timer for 1 hour, and picks up the closed book on the nearby couch. As their alarm flashes, they put the book down within a few snoozes and then step back into their studio.
"),
"process",(a: 0.125, 0.375, 0.5, 0),
"shadowDown",(a: 0.25,0.5,1,0.5),
"energyRestoreChance",(a: 0,5,5,0),
"count", 0
),
"readResearch",(dm:"label","Read non-fiction",
"tiers",(a: "The Artist pulls on a jacket and heads to the library. (unless: $sequenceProgress < 40)[They chuckle at how late in their process it is, but smile encouragingly as they make the field trip. ]They pull books on shadow puppets, object theatre, and staging from the shelves. They take notes on recurring names and terms. With a half-dozen volumes stacked in their arms, they return to the studio and place them on the writing desk before resuming work.
","The Artist chooses a book on object theatre and begins to read. They learn about the difference between props and objects. They note down a few ways that objects could still be identified as such in a shadow performance, while also taking on a role or object for a scene. After a productive hour of notes and sketches, they close the book and return to the drafting table.
","The Artist studies a book of projector templates made for classrooms. Each design asks for a different number of hands and gestures. They jot notes beside “experiment with projector” on their task list and set the book aside.
", "The Artist opens a volume on shadow plays across cultures, comparing variations in technique, structure, gesture, and form. Their large lettered notes fill page after page of their rule lined notebook.
"),
"process",(a: 0.5, 0.25, 0.25, 0),
"shadowDown",(a: 1,1,1,0.5),
"energyRestoreChance",(a: 0,10,5,5),
"count", 0
),
"sketch",(dm:"label","Engage in automatic gesture exercise",
"tiers",(a: "The Artist cuts a few pages of copy paper into quarters and takes out sticks of compressed charcoal. Setting a one-minute timer, they begin to draw. The first marks are hesitant, but soon the page fills with quicker, more assured gestures. As the timer sounds, another sheet replaces the last. Sixteen quick studies follow before they shift to four small drawings—a sailboat, a cat, clouds and rain, a window set for tea. The twenty sheets are stacked, wrapped in a spare page, dated, and set aside.
","The Artist divides new sheets and sets the timer. The charcoal moves easily now; each page fills before the minute ends. Sixteen studies of motion and weight, then four figures—a sword-leafed plant, a glowing bulb, rough waves with a distant mountain line, and another cloud-filled sky. The stack joins the first.
","Paper quarters, timer, charcoal. The Artist's hand knows the rhythm before the countdown begins. Each page gathers deliberate marks; swift, clear, and familiar. Near the end come another four figures: clouds, hammer, stage curtains, and a bookshelf. The gestures are confident, recognizably their own. The new series, stacked and dated, joins the other two.
", "The Artist moves through twenty small sheets in a steady rhythm; breath, timer, charcoal, breath, turn, repeat. No figures now, only automatic gesture. When finished, they rest their hand, and look at completed quarters. Smiling, they stack the work, date it, and add it to the building pile of uniquely produced marks produced during this residency.
"),
"process",(a: 0.25, 0.25, 0.5, 0),
"shadowDown",(a: 0.25,0.25,0.5,0.25),
"energyRestoreChance",(a: 10,5,5,5),
"count", 0
),
"journalMood",(dm:"label","Journal mood",
"tiers",(a: "The Artist opens a sketchbook to a random page and writes the first words that come to mind. (if: $shadow >15)[anxious, pressure, proof, fraud. They frown and write “no” beside the last.](else-if: $shadow >10)[slow, stress, failure, shadow. Their pencil hovers at failure before adding not bad with a small heart.](else-if: $shadow >5)[enough, not enough, judgement, expectation. They draw a cloudy bubble around expectation and decorate its base with diagonal rain.](else:)[Artist, goals, light, sick. They pause, serifing the leg of the k in a dark loop.] They add arrows and shapes linking words, close the sketchbook, and return to the drafting table.
","The Artist opens the same sketchbook but lets the page choose itself. They draw shapes instead of words; triangles with a rounded corner, loose ovals, spirals. Shading stretches into long shadows that pass below adjacent forms and across the page to its edge. They close the book and return to their work.
","The Artist opens a note on their computer and closes their eyes. They type words, fragments, nonsense; until they abruptly stop and open their eyes. They type a single word: chew. They stare in confusion, then laugh, saving the file as journal-exercise before turning back to the table.
", "The Artist flips through an old sketchbook, jotting a word or thought in the corners of filled pages. At the end, they close the book and slide it back onto the shelf. The practice is small but steady, a record of returning and acknowledging the now.
"),
"process",(a: 0.33, 0.33, 0.34, 0),
"shadowDown",(a: 0.25,0.25,0.25,0.25),
"energyRestoreChance",(a: 10,5,5,5),
"count", 0
),
))\
<!--/* Shadow Talk */--!>\
(set:
$shadowEngage to 0,
$shadowProcessPerWeek to 0,
$shadowTalk to (dm:
1, (dm:
"delta", (a: "...this is so self indulgent, taking a month off on a hobby. I don't sell my work. I don't exhibit my work. Let's face it - I'm a fraud...", "negative productivity/meritocracy reflection", "mechanical typing — skips, resumes"),
"light", (a: "...this month is mine to shape. Making time for creativity is powerful...", "focus / intension affirmation", "The Artist focuses on a point past their nose, then breathes and blinks slowly."),
"weather1", (a: "...this weather sucks. I'll bet it's going to be wet throughout the month. I'm gonna have to put off going for a walk today and I am going to be fat forever...", "negative body-based shame reflection", "very low bass hum — rumbling"),
"weather2", (a: "...first day of my residency and it's crappy outside. Good omen...", "sarcasm and negative hopelessness/fatalism reflection", "hiss of air escaping tire"),
),
2, (dm:
"delta", (a: "...wow - day two and I'm already goofing off. Lying to my employer about professional development. Lying to myself. I'm not an Artist. I'm just a wannabe...", "negative self-doubt reflection", "feedback hum — low and percussive"),
"light", (a: "...starting late still means I’ve started. Momentum will follow as I keep going...", "resilience affirmation", "The Artist stands a little straighter."),
"weather1", (a: "...I'm totally going to get a migraine and it's going to last three days and I won't get anything done. “Good thing” I took time off work...", "sarcasm and negative catastrophizing reflection", "clock ticks — tempo builds"),
"weather2", (a: "...when it's nice outside later, I should go for a walk, but I'm probably not going to, right?...", "negative avoidance reflection", "refrigerator rattle from another room"),
),
3, (dm:
"delta", (a: "...I should contact the building manager and tell them about the neighbour who keeps letting their dog shit in the alley. I'd be doing a service to the community...", "negative procrastination/avoidance reflection", "refrigerator rattle from another room"),
"light", (a: "...observing the world outside is an important part of my practice. I’m lucky to have such a view...", "curiousity affirmation", "The Artist's eyes track the light shifting across the glass."),
"weather1", (a: "...huh. Remember when I liked the fall, dressing in scarves and fun boots? Too bad my clothes don't fit anymore...", "negative body-based shame reflection", "very low bass hum — rumbling"),
"weather2", (a: "..too bad it isn't sunny out so I can't experiment with sunshine — you know — ACTUAL light...", "sarcasm and negative productivity reflection", "mechanical typing — skips, resumes"),
),
4, (dm:
"delta", (a: "...soon, construction will start over there and it's going to be awful in here. Three years of never ending noise and vibration and then no more view of the mountains...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
"light", (a: "...every day before construction begins is an extra day with this view...", "acceptance affirmation", "The Artist pauses to close their eyes; a quiet nod follows."),
"weather1", (a: "...even when I can barely see the mountains, better take in that view while I still can. Soon, all I'll be able to see is into another apartment building...", "negative hopelessness reflection", "hiss of air escaping tire"),
"weather2", (a: "..when the construction cranes are loaded into the alley way, I'm going to lose all the light in here. Even crappy diffused light on crappy days like today...", "negative frustration reflection", "heartbeat — racing tempo"),
),
5, (dm:
"delta", (a: "...pervert. Stop looking at people's bodies. I'm disgusting...", "negative body-based shame reflection", "very low bass hum — rumbling"),
"light", (a: "...curiosity and noticing are their own kind of art. I wonder how many pairs of shorts I’ll count today...", "curiosity affirmation", "The Artist's eyes track the light shifting across the glass."),
"weather1", (a: "...if I regularly went outside for a walk, I could be someone who wears those shorts. But not now. I'd look so gross in shorts...", "negative body-based shame reflection", "very low bass hum — rumbling"),
"weather2", (a: "..going outside means people would see me — and I am gross. Don't do that. Stay inside. I'm supposed to be working anyways. Don't fail twice...", "negative body-based shame reflection", "very low bass hum — rumbling"),
),
6, (dm:
"delta", (a: "...I'm a slob. Good thing I never have anyone over or I'd have to face what a slob I am...", "negative frustration reflection", "heartbeat — racing tempo"),
"light", (a: "...I love my drafting table. It reminds me of my dad. Tidying my space feels good...", "grounding affirmation", "The Artist smiles, and their shoulders drop."),
"weather1", (a: "...wow, in this sunshine, I can really see the wrinkles on my face...", "negative body-based shame reflection", "very low bass hum — rumbling"),
"weather2", (a: "...I should really be outside in this sunshine and not inside, pretending to be an Artist. At least going for a walk would be good for me...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
),
7, (dm:
"delta", (a: "...I shouldn't have sent that application for my film. What if someone sees it and I fuck them up? What if someone sees it who is //actually// like truely sick sick and they call you out on my weak bullshit. I'm such an attention whore...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
"light", (a: "...sharing work is practicing self care. By letting others see it, I open the chance for connection. That’s an act of bravery...", "connection / caring affirmation", "The Artist's eyes soften, as they catch the cat’s reflection. He stretches flickering at the edge of the mirror and then resettles outside the frame."),
"weather1", (a: "...ugh, those lights are so bright — they really show off my double chin...", "negative body-based shame reflection", "very low bass hum — rumbling"),
"weather2", (a: "...it's probably going to rain any moment. I should definitely stay inside...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
),
8, (dm:
"delta", (a: "...day eight. That means twenty three days left. What if the doctor tells me to stop working at my appointment? Better get cracking because soon I won't be able to be an Artist any more...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
"light", (a: "...Three and a half weeks to go. I'm gonna call it four weeks. That makes me feel less stressed out...", "recognition / pride affirmation", "The Artist's chin lifts slightly, their eyes steady."),
"weather1", (a: "...this weather makes me look so tired...", "negative body-based shame reflection", "very low bass hum — rumbling"),
"weather2", (a: "...why am I even doing this project? At least with past years I was getting something done every day. I need to accept that this series has run its course and I'm too old for this now...", "negative hopelessness reflection", "hiss of air escaping tire"),
),
9, (dm:
"delta", (a: "...they didn't give me access to the workshop before because they don't want me to have access. It's probably a mistake and tomorrow, when they realize it, they'll change the entry code so I can't get in...", "negative catastrophizing reflection", "muffled voices — overlapping"),
"light", (a: "...respecting my identity isn’t selfish or harmful. Investing in myself helps me care for others...", "acceptance / kindness affirmation", "The Artist pauses to close their eyes; a quiet nod follows."),
"weather1", (a: "...it looks really wet out. I better not go outside or I'll have to wear my jacket and... my jacket barely fits anymore, doesn't it?...", "negative body-based shame reflection", "very low bass hum — rumbling"),
"weather2", (a: "...I wish I could wear fall colours. They look so good on other people...", "negative comparison reflection", "two tones — slightly out of tune"),
),
10, (dm:
"delta", (a: "...I should never have changed my name. Why can't I just accept my birth name as the gift it was — I'm such a dissapointment to my family. And I'm just made it harder for everyone around me. I make everything difficult...", "negative identity-shame reflection", "clock ticks — tempo builds"),
"light", (a: "...it feels good to finally have access to the workshop—and to find a spray booth there...", "focus / intnesion affirmation", "The Artist focuses on a point past their nose, then breathes and blinks slowly."),
"weather1", (a: "...it's so gross out. It will probably rain if I went out and started walking...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
"weather2", (a: "...I want to go back to bed...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
),
11, (dm:
"delta", (a: "...why am I even doing this project? At least in past years I was getting something done every day. Just accept that this series has run its course and I'm too old for this now...", "negative hopelessness reflection", "hiss of air escaping tire"),
"light", (a: "...I loved the rain as a kid. When I didn't need to go out, it was safe and still by the window. I will let myself feel that way again today...", "relief affirmation", "The Artist relaxes their jaw and rolls their neck once."),
"weather1", (a: "...it's so wet outside. I told myself I should go for a walk today, but now I'm going to put it off and tomorrow, I am going to feel like shit. I can't escape...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
"weather2", (a: "...it used to be so easy to go out in the rain — it's only water. Why is it so hard to take a break and go for a small walk in the rain these days? Why am I so lazy?...", "negative body-based shame and procrastination reflections", "very low bass hum — rumbling"),
),
12, (dm:
"delta", (a: "...it never used to be so easy to tell the seasons on this coast. The world is burning and there is nothing I can do about it. But I better enjoy these trees while they last — next year the fires will be here...", "negative catastrophizing and eco-anxiety reflections", "clock ticks — tempo builds"),
"light", (a: "...the trees are beautiful today. Can I describe them without using visual words? Or maybe I could use their colours in one of my light experiments...", "curiosity affirmation", "The Artist's eyes track the light shifting across the glass."),
"weather1", (a: "...if I had gotten a real job, I could travel somewhere. Other Artists travel. Not that I want to do that. I hate travelling...", "negative comparison reflection", "two tones — slightly out of tune"),
"weather2", (a: "...it's not raining...but I haven't gotten enough done in the studio. I can't go outside...", "negative productivity / meritocracy reflections", "mechanical typing — skips, resumes"),
),
13, (dm:
"delta", (a: "...why am I applying for these residencies? It's fine when I work with other people, but on my own, I'm just stealing the chance from other people...", "negative comparison reflection", "two tones — slightly out of tune"),
"light", (a: "...applying for residencies feels easier now than it did even a year ago. I know what I want, and I’ve earned the right to ask for it...", "recognition / pride affirmation", "The Artist's chin lifts slightly, their eyes steady."),
"weather1", (a: "...don't go outside for a walk — I'm so far behind already...", "negative body-based shame reflection", "very low bass hum — rumbling"),
"weather2", (a: "...the lines in my forehead are really visible today. I got the frown lines my mother warned me about. They are so ugly. I am so ugly....", "negative body-based shame reflections", "very low bass hum — rumbling"),
),
14, (dm:
"delta", (a: "...it's my fault that the tub is plugged. I probably dropped something down the drain and it's messed up the plumbing for the whole building. They are going to kick me out...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
"light", (a: "...the tub clog isn’t a big deal. The building handles these things all the time. I still have water; I’m fine...", "acceptance / kindness affirmation", "The Artist pauses to close their eyes; a quiet nod follows."),
"weather1", (a: "...it's nice out but it's so cold. I don't want to go outside and be cold...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
"weather2", (a: "...if it wasn't so cold outside, I would go for a walk.....", "negative frustration reflections", "heartbeat — racing tempo"),
),
15, (dm:
"delta", (a: "...the Northern residency is a long shot, but why the fuck would anyone on the East Coast want to host you?...", "negative comparison reflection", "two tones hum — out of tune"),
"light", (a: "I’ve worked hard. When I apply for new opportunities, I can write with confidence, and that feels good.", "recognition / pride affirmation", "The Artist's chin lifts slightly, their eyes steady."),
"weather1", (a: "...it's halfway through the month, I barely have anything done, and I'm staring at myself in the mirror. It's even nice outside but am I outside walking? No. I'm in here like a lazy loser and I'm not even working on my art...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
"weather2", (a: "...it's nice outside, but...the sun doesn't give me vitamin D in the fall right? Did I take my vitamins this morning? What if I did and I forgot?...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
),
16, (dm:
"delta", (a: "...why couldn't the doctor tell me anything? Is he telling me everything? Is this all a conspiracy and I don't get to find out what's actually wrong with me until it's too late? Is he sending me for more tests just to get rid of me? Or...am I making it all up?...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
"light", (a: "...it’s okay to feel disappointed by the doctor’s news and still feel relief. Both can exist. Also, my piercings look awesome...", "grounding affirmation", "The Artist smiles, and their shoulders drop."),
"weather1", (a: "...it's probably going to rain any moment. I should definitely stay inside...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
"weather2", (a: "...It's not raining but it looks windy outside. My hair would get in my face and I need to wash my hair. Maybe I'll have a shower later and walk tomorrow...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
),
17, (dm:
"delta", (a: "...I can't believe I tried to plan a trip. I suck on boats. And I would get there and feel like a fool in these galleries with real Artists. And it is going to rain all weekend anyways...", "negative fustration reflection", "heartbeat — racing tempo"),
"light", (a: "...i’m glad my insurance covered my lenses and they fit my old frames. I like how I look in these glasses...", "recognition / pride affirmation", "The Artist's chin lifts slightly, their eyes steady."),
"weather1", (a: "...there are only a few days left of sun before winter. Where did the time go?...", "negative hopelessnes and eco-anxiety reflections", "hiss of air escaping tire"),
"weather2", (a: "...if I wasn't so lazy, I would leave right now and take my trip, and then it wouldn't matter what the weather was like later. But...it's too late in the day...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
),
18, (dm:
"delta", (a: "...I am such a loser, watching a TV show and wasting time...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
"light", (a: "...resting is hard for me, but I’m practicing. I can feel frustrated and still be kind to myself...", "acceptance / kindness affirmation", "The Artist pauses to close their eyes; a quiet nod follows."),
"weather1", (a: "...I want to go back to bed...", "negative procrastination reflection", "refrigerator rattle from another room"),
"weather2", (a: "...I am going to look back on this month and be so disappointed with myself for wasting so much time...", "negative catastrophizing reflection", "mechanical typing — skips, resumes"),
),
19, (dm:
"delta", (a: "...what if I don't hear the plumber knocking tomorrow. If I don't wake up in time, I am going to get in trouble. What if he talks to me and I can't hear him? Or what if I answer something that doesn't match what he asks me? He's going to think I'm so stupid...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
"light", (a: "...I’m stressed about tomorrow’s plumber appointment, but that’s okay. I’ll let myself feel anxious for five minutes, then do something else...", "relief affirmation", "The Artist relaxes their jaw and rolls their neck once."),
"weather1", (a: "...if I get a migraine today, it's going to be bad like last time, and then I am going to be hung over and then I am going to lose more days. And if I keep worrying about it, I am going to feel worse, but how do I stop worrying when I know it's going to happen?...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
"weather2", (a: "...if I go for a walk now, it might reduce the chance of migraine later, but then I would have to shower, and then my hair would be wet and I would feel cold, so I better not...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
),
20, (dm:
"delta", (a: "...it's good that the plumber didn't talk to me, but why didn't he talk to me? Did someone tell him not to talk to me?...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
"light", (a: "...That was quick and easy. I’m glad the plumber fixed it. I’ll take a shower to celebrate...", "relief affirmation", "The Artist relaxes their jaw and rolls their neck once."),
"weather1", (a: "...I thought I was going to be so productive this month. Why am I sure when I don't have any time I will be so productive when I do — it's such a lie. What is going to happen when I am forced to retire? Am I going to turn into a vegetable?...", "negative productvity and catastrophizing reflections", "mechanical typing — skips, resumes"),
"weather2", (a: "...it's so wet out. I was going to exercise today, and now it's too wet...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
),
21, (dm:
"delta", (a: "...I'm going to get a migraine today. I didn't get one last time it was overcast so I'm due. I better not eat anything today. Or drink any caffeine. Or maybe I should drink caffeine because sometimes it helps?...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
"light", (a: "...stress can trigger a migraine as easily as weather. I’ve got my meds ready and now I’ll make some tea because that feels good...", "resilience affirmation", "The Artist stands a little straighter."),
"weather1", (a: "...if it's nice later, I might get a migraine. It's so stupid that I don't want it to get nice out because I don't want to maybe have a migraine...", "negative hopelessness reflection", "hiss of air escaping tire"),
"weather2", (a: "...if I was at work, I could be getting some things done outside. It's supposed to be nice this afternoon, but instead I'm being a slacker Artist and “working” on my art work....", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
),
22, (dm:
"delta", (a: "...what if the article is about how much I suck? Or what if it's a report that I hurt someone? Or what if someone reads it and gets the article retracted because they report how bad of an Artist I am? Or that I don't have the necessary education and training?...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
"light", (a: "...what matters most is that I got something out of my work; but it feels good that someone else did too...", "recognition / pride affirmation", "The Artist's chin lifts slightly, their eyes steady."),
"weather1", (a: "...I didn't exercise yesterday when it was nice out, and now it's raining. Way to go...", "negative body-based shame reflection", "very low bass hum — rumbling"),
"weather2", (a: "...I could go out and visit a gallery or take a walk, but it's raining, so I won't...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
),
23, (dm:
"delta", (a: "...I am never going to sort out this business with the government. I am going to eventually have someone show up at my door and tell me they are taking me to the police and they will charge me for being queer...", "negative identity shame reflection", "muffled voices — overlapping"),
"light", (a: "...bureaucracy can’t erase identity. The systems are flawed, not me....", "resilience affirmation", "The Artist stands a little straighter."),
"weather1", (a: "...if I go outside it might rain...an excuse I use all of the time which is why I am fat and gross now...", "negative body-based shame and procrastination reflections", "very low bass hum — rumbling"),
"weather2", (a: "...if I go outside, I'll get wet and feel gross. If I stay inside, I'll feel stiff and gross. Can't win....", "negative body-based shame and hopelessness reflections", "very low bass hum — rumbling"),
),
24, (dm:
"delta", (a: "...sitting around makes my joints feel worse. But I sat around anyways and now I feel worse. Might as well sit around for the rest of the day. The day is a write off anyways....", "negative hopelessness reflection", "hiss of air escaping tire"),
"light", (a: "...I expected to feel rough after this food test, and I do. But understanding my body is progress. I’ll be kind to myself today...", "acceptance / kindness affirmation", "The Artist pauses to close their eyes; a quiet nod follows."),
"weather1", (a: "...I could go out and visit a gallery or take a walk, but it's raining, so I won't...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
"weather2", (a: "...I want to go back to bed...", "negative procrastination / avoidance reflection", "refrigerator rattle from another room"),
),
25, (dm:
"delta", (a: "...Is it my responsibility to talk to the gallery about how disrespectful they are being? If the community Artists don't know they are being insulted, is it even my business? If I just do. better when I'm in charge, is that enough or am I part of the problem?...", "negative frustration reflection", "heartbeat — racing tempo"),
"light", (a: "...I can’t fix everything, but I can learn. I’ll act with care, not impulse, and join only where I’m needed. When I'm not sure, I can ask, or wait to be asked....", "focus and intension affirmation", "The Artist focuses on a point past their nose, then breathes and blinks slowly."),
"weather1", (a: "...this kind of weather always makes me feel unsettled. Raining on and off like it can't decide. Just pick one!...", "negative frustration reflection", "heartbeat — racing tempo"),
"weather2", (a: "...it's raining so hard now, but it's supposed to stop raining later. I should go back out...but I already went out today. I need to focus....", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
),
26, (dm:
"delta", (a: "...it's the last Sunday of my residency. What have I even got to show for a month of “work”?...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
"light", (a: "...the last week of my residencies can be stressful, but I’ve done this before. This residency isn’t about production. So whether or not I have produced anything to share: good job, me...", "resilience affirmation", "The Artist stands a little straighter"),
"weather1", (a: "...I used to go out walking in this weather. Why don't I do it an more? If it isn't raining tomorrow, I will go for a walk...", "negative frustration reflection", "heartbeat — racing tempo"),
"weather2", (a: "...if I go outside, I'm just going to get more tired and it's already so hard to focus....", "negative body-based shame and procrastination reflections", "very low bass hum — rumbling"),
),
27, (dm:
"delta", (a: "...why did I say I would go out tonight? I am so fat and so embarassed about how I look. My friend is going to be disgusted with me...", "negative body-based shame and self-doubt reflections", "very low bass hum — rumbling"),
"light", (a: "...socializing is hard, but I trust my friend. I can enjoy myself and struggle. Showing up is enough...", "connection affirmation", "The Artist's eyes soften, as they catch the cat’s reflection. He stretches flickering at the edge of the mirror and then resettles outside the frame."),
"weather1", (a: "...I want to get some more milk for my tea, but it's too wet out. I'll...just drink it without. It's...fine...", "negative procrastination reflection", "refrigerator rattle from another room"),
"weather2", (a: "...There are only four days left in the month — is it going to rain the whole time?...", "negative hopelessness reflection", "hiss of air escaping tire"),
),
28, (dm:
"delta", (a: "...it's the last Tuesday of my residency. I haven't gotten enough done — and it's not like four days is going to make a difference...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
"light", (a: "...I took a chance yesterday and had fun. It’s never too late to try. Today I’ll focus on what’s in front of me...", "recognition / pride affirmation", "The Artist's chin lifts slightly, their eyes steady."),
"weather1", (a: "...I look so gross and tired...", "negative body-based shame reflection", "very low bass hum — rumbling"),
"weather2", (a: "...did I remember to take my medicine yesterday? When was the last time I took them? Was it raining? Oh glob, why can't I remember?...", "negative catastrophizing reflection", "clock ticks — tempo builds"),
),
29, (dm:
"delta", (a: "...it's the last Wednesday of my residency. I haven't gotten enough done — and it's not like three days is going to make a difference...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
"light", (a: "...I’m looking forward to three more days to focus on my art, but I’m also ready for a break. Later I’ll make a list of restful things to enjoy afterward, something to look forward to if stress creeps in...", "acceptance / kindness affirmation", "TThe Artist pauses to close their eyes; a quiet nod follows."),
"weather1", (a: "...it's so wet outside. I told myself I should go for a walk today, but now I'm going to put it off and tomorrow, I am going to feel like shit and then suddenly it's the end of the month. I can't escape...", "negative procrastination reflection", "refrigerator rattle from another room"),
"weather2", (a: "...there are only two days left — focus. FOCUS. Stop looking in the mirror, and stop looking out the window. It's raining — it's not like I want to go outside and get cold and wet, and then come in and have another excuse not to work...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
),
30, (dm:
"delta", (a: "...It's the last Thursday - no the second last DAY - of my residency. I haven't gotten enough done — and it's not like two days is going to make a difference....", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
"light", (a: "...I’m feeling mixed emotions about the end of my residency, and that’s ok. I’m proud of what I’ve learned, and it’s ok to feel sad when something ends. I’ll let myself feel it for five minutes, then go from there....", "acceptance / kindness affirmation", "The Artist pauses to close their eyes; a quiet nod follows."),
"weather1", (a: "...where did you leave your umbrella? If I had an umbrella, I could go outside... Why am I always losing things?...", "negative frustration reflection", "heartbeat — racing tempo"),
"weather2", (a: "...The sky is so grey. No wonder it's so easy to feel sad in October. I guess it's inevitable living on this coast....", "negative hopelessness reflection", "hiss of air escaping tire"),
),
31, (dm:
"delta", (a: "...I feel awful. Why did I get a flu shot before my residency was over? I’m not going to get anything done. I’ve stolen a day from myself....", "negative frustration and productivity reflections", "heartbeat — racing tempo"),
"light", (a: "...Oof, I feel rough after yesterday’s flu shot, but I’m glad it’s done, especially since I’m visiting my dad today and before his surgery next week!...", "resilience affirmation", "The Artist stands a little straighter."),
"weather1", (a: "...of course it's raining on the last day of my residency. Is this pathetic fallacy or what?...", "sarcasm and negative hopelessness reflection", "hiss of air escaping tire"),
"weather2", (a: "...the rain makes me want to curl up in bed, but if I don't squeeze out the last millilitre of production out of this month, I will regret it later...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
),
"shame2", (a:
"...I am already behind. I should have at least gotten seven tasks complete by now...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
"shame3", (a:
"...I am so behind. I should have at least gotten at least fourteen tasks complete by now...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
"shame4", (a:
"...I am never going to catch up. I should have at least gotten at least twenty tasks complete by now if I planned to get through the list by the end of the month...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
"shame5", (a:
"...only a few days left and there is no way I'm going to complete enough of my checklist to feel good about this month...", "negative productivity / meritocracy reflection", "mechanical typing — skips, resumes"),
)
)
}(if: (passage:)'s tags contains "daily")[<hr style="border: 0; border-top: 3px double #9b2721;" />]\
(if: (passage:)'s tags contains "checklist")[<hr style="border: 0; border-top: 3px double #7ada6f;" />]\
(if: (passage:)'s tags contains "mirror")[<hr style="border: 0; border-top: 3px double #6f84da;" />]\
(if: (passage:)'s tags contains "cat")[<hr style="border: 0; border-top: 3px double #da9f6f;" />]\
(if: (passage:)'s tags contains "rorrim")[<hr style="border: 0; border-top: 3px double #907b25;" />]\
(unless: (passage:)'s name is "Shadow Work")[[<h1 id="page-title">[(print: (passage:)'s name)]</h1>]<title|]\
(unless: (passage:)'s tags contains "admin")[{\
(if: (track: 'dayend', 'isplaying'))[(track: 'dayend', 'fadeout', 1)]\
<a class="skip-link" href="#main">Skip to story</a>
<a class="skip-link" href="#status">Skip to status</a>
<a class="skip-link" href="#choices">Skip to choices</a>
}]\
<!-- Screen reader live region for “what changed” -->\
<div class="sr-only">\
<div id="sr-updates" role="status" aria-live="polite" class="sr-only">[]<srupdates|</div>\
<div id="sr-inline" role="alert">|srinline>[ ]</div>\
</div>\
<span id="content-start">(masteraudio: 'stopall')(track: 'twinkle', 'play')\
{(set: $main to "For this year’s residency, the Artist decided to explore shadows, light, and non-verbal performance. They’d done an annual month-long residency for nearly a decade, each with a new focus, but in the weeks leading up to this one, panic set in.
Some of it was familiar, the kind triggered when people asked if they were excited, as though expectation was enthusiasm. The residency had become a known thing now, its value often cited by the Artist as essential professional development and self-advocacy. And they //were// excited, but as awareness grew, so did pressure: to share, to archive, to produce.
")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[]<mainNew|</span>\
</div>
<div id="choices" aria-live="polite">\
<hr style="border: 0; border-bottom:1px dotted #9b2721;">\
(link: "Continue")[(track: 'woosh', 'play')\
(set: $delta to "Earlier years had been easier. Visual projects lent themselves to quick image production, sequentially produced through daily creative prompts with tangible outcomes. But after six years, their focus had shifted. Silence and access work in their professional life demanded more attention and energy, and while silence in public could be rewarding, it also required a discipline that left little room for uninterrupted focus. The Artist felt the pull between needing to connect and wanting to retreat.
")\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to it + "\n" + $delta)\
(link: "Continue")[\
(masteraudio: 'stopall')(track: 'woosh', 'play')\
(replace: ?main)[$main]\
(set: $delta to "Another kind of panic came from their body. Fatigue, nausea, and memory loss had become recent, insistent companions. Tests and medication trials had led to follow-ups inconveniently scheduled mid-residency. Late nights spent doom-searching symptoms only added shame to worry; hypochondria had haunted their grandfather, and the Artist recognized the inheritance.
")\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to it + "\n" + $delta)\
(link: "Continue")[\
(masteraudio: 'stopall')(track: 'woosh', 'play')\
(replace: ?main)[$main]\
(set: $delta to "What if fatigue kept them from working? What if their mind kept them from exploring? The residency had always been a source of pride, but it was also precariously balanced against guilt and the sharp eye of meritocracy.
")\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to it + " " + $delta)\
<!--[[The day before October first|Before]]--!>\
(link: "The day before October first")[(masteraudio: 'stopall')(track: 'woosh', 'play')(go-to: "Before")]\
]\
]\
]
(link: "Skip intro")[(masteraudio: 'stopall')(track: 'woosh', 'play')(go-to: "Quick Start - Introduction")]</div>{(set: _pct to $processDone / $processTotal*100)}\
{<div id="status" class="status-bar" role="status" aria-live="polite" aria-atomic="false">
<div class="status-col status-left">
<span class="sr-only">Day: </span>$day / 31
</div>
<div class="status-col status-center">
<!-- Screen-reader summary stays readable -->
<span class="sr-only" id="metre-desc">
Fatigue: $fatigue. Energy: $energy.
</span>
<!-- Visual metre only; hidden from AT -->
<span class="metre-wrap" aria-hidden="true">
[(display: "metre")]<metre|
</span>
</div>
<div class="status-col status-right">
<span class="sr-only">Process: </span>$taskComplete of 57 — (round:_pct)%
</div>
</div>\
}//Shadow Work// was developed during Kay Slater’s independent October residency (2025), part of an ongoing annual practice exploring expectation, permission, and process. Unlike previous site-based games, this project took place in Kay’s home studio; a familiar space turned into experimental ground for reflection and play.
In //Shadow Work//, the player takes on the role of **the Artist**, navigating 31 days of studio experiments that balance curiosity and exhaustion. The game’s invisible antagonists are mental illness, time, and capitalism; all forces that distort self-perception and measure worth by productivity. The player collects shadow, both as a resource and as a byproduct of the Artist’s internal landscape. Each choice shapes tone and reflection rather than outcome. The game doesn't seek to punish; it simply continues.
Like Kay’s previous works, //Shadow Work// centres intangible conflicts and emotional currencies. In The Haunted Island (2024), the player helps a ghost remember. In The Cycling Winds (2025), generosity becomes both resource and debt. Here, the focus is the mirror; a symbol of introspection and distortion. The reflection of self is never quite right, yet it remains familiar enough to question where the truth lies.
At its heart, //Shadow Work// is a meditation on permission: to pause, to experiment, and to forgive oneself for imperfection. It invites players to sit in discomfort and curiosity alike but wills players to notice and then name when the light shifts and when the shadow follows.
"You may not finish everything. That’s all right.
Your practice can begin again at any time." - Kay.
<span id="footerCredits">[(link: "Return to Menu")[(track: 'back', 'play')(go-to: "Shadow Work")]]</span>For those with misophonia, tinnitus or who are triggered by sound, visiting the mirror may be uncomfortable or disruptive. Sound controls are in the upper left corner or can be accessed through the keyboard (tab).
This work includes themes of mental illness, fatigue, self-criticism, and recovery.
Many passages feature negative reflections or ruminations voiced through the mirror mechanic. These statements represent intrusive thoughts, perfectionism, and self-doubt; <strong>not truths</strong>. Players can choose whether or not to engage with the mirror - take care of yourself.
Other content considerations:
* Mentions of medical testing, insurance, and bodily discomfort.
* References to grief, anxiety, and self-image, including moments of body-based shame.
* Brief mentions of money, frustration with productivity, and capitalist pressure.
* Optional passages include ableist and audist comments voiced as examples of internalized harm.
* Mentions of fatigue, migraine, and social overwhelm.
There are no depictions of violence, police, or sexual content.
The work prioritizes introspection and emotional safety, but some language may echo real mental-health struggles. Need help? 9-8-8 (Call or text) for trained responders for emotional distress of thoughts of suicide. You deserve help.
Otherwise, there is nothing else that //Kay// has identified as a trigger; however, they will acknowledge that they are a white settler, with European ancestry, currently working on the ancestral and unceded homelands of the <span aria-hidden="true">hən̓q̓əmin̓əm̓ and Sḵwx̱wú7mesh Sníchim</span><span class="sr-only">Hunquminum and Squamish Language</span> speaking peoples. Kay does not pretend to speak for or understand every lived experience. Take care of yourself!
This game takes place on land that has been named public by colonial law, but this has not always been the case. If you have capacity, please consider donating to the Indigenous Residential School Survivors and learn more about their history. By learning and respecting history, especially ones that benefit us now that came at the expense of others in the past, we do a *tiny* repair to build better futures together.
Thank you.
If you do find something in this work that you consider a harmful trigger, please get in contact at kay at kdot dot ca. Please note that being challenged or offended is not the same as being harmed, but again, take care of *yourself*.
<span id="footerCredits">[(link: "Return to Menu")[(track: 'back', 'play')(go-to: "Shadow Work")]]</span><a href="#thanks" class="skip-link" aria-label="Skip to Thank You">Skip to Thank You</a><a href="#bibliography" class="skip-link" aria-label="Skip to Book References">Skip to Book References</a><a href="#audio" class="skip-link" aria-label="Skip to Audio Credits">Skip to Audio Credits</a><a href="#footerCredits" class="skip-link" aria-label="Skip to Footer">Skip to Footer</a>\
<a href="https://kdot.ca/sick-and-residency/">Shadow Work</a> © 2025 by <a href="https://kdot.ca/">Kay Slater</a> is licensed under <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA 4.0</a><img src="https://mirrors.creativecommons.org/presskit/icons/cc.svg" alt="" style="max-width: 1em;max-height:1em;margin-left: .2em;"><img src="https://mirrors.creativecommons.org/presskit/icons/by.svg" alt="" style="max-width: 1em;max-height:1em;margin-left: .2em;"><img src="https://mirrors.creativecommons.org/presskit/icons/nc.svg" alt="" style="max-width: 1em;max-height:1em;margin-left: .2em;"><img src="https://mirrors.creativecommons.org/presskit/icons/sa.svg" alt="" style="max-width: 1em;max-height:1em;margin-left: .2em;">
Concept, writing and development: Kay Slater.
It is possible for me to make the things I make because I am loved and cared for by my partner, friends and co-workers. In otherwords, this labour of love was fuelled by love. I am very lucky indeed.
Share love, care, and hope by donating to the <a href="https://www.irsss.ca/donate">IRSSS (Indigenous Residential School Survivors)</a> if you can. If not, spend and give freely to those in your community. Give more than you take, but demand the same from others. Mutual aid and community codependency are the way. //Rest. Love. Repeat//
This story and game was created during Slater's ninth annual Professional Development residency in their studio situated within colonially named Vancouver, BC, on the unceeded and ancestral lands of the <span aria-hidden="true">hən̓q̓əmin̓əm̓ and Sḵwx̱wú7mesh Sníchim</span><span class="sr-only">Hunquminum and Squamish Language</span> speaking peoples.
###Technology
The story was created using Twine, an interactive fiction tool created and maintained by Chris Klimas, using the story format Harlowe, created and maintained by Leon Arnott. Twine is a registered trademark of the
(link: "Interactive Technology Foundation (opens new tab)")[(open-url: "https://iftechfoundation.org/")]. Sound has been added through the use of HAL, the (link: "Harlowe Audio Library (opens new tab)")[(open-url: "https://twinelab.net/harlowe-audio/#/")] with thanks to Chapel.
I use Antidote 12 for my grammar and spelling.
I used Adobe Illustrator 2025 to create my title image.
I used chatGTP 5 to assist with the javascript for screen readers and trim/edit suggestions for longer passages.
A full list of audio credits for the sound is listed at the bottom of this page.
<span id="thanks">[\
##Thank you
Thank you to my partner Chris.
Thank you to Gagan "Harjinder" Saran who encouraged me, asked to sing in the car one time, and asked to play my game before it was finished; to Adrian Chow, who checked in on me softly every day even when I couldn't and didn't respond; and to Carson Upton who continues to support me after twenty-five years of friendship. Thank you to other friends who dropped me a line during this month but to whom I had limited capacity to respond.
To my mom who spent a morning, pulling out her fabrics and sending my dad to fetch her more swatches, as we played with light and recorded our experiments together, thank you for being my creative rolemodel. You may have never described yourself as an Artist, but I know my love of discovery, making, problem solving, and production comes from you.
To Kevin MacLeod for releasing his music for creative commons use. I bought an inventory of his free music tracks a few years ago when I started working with a Blind friend who expressed how boring text can be without sound. For me, sound can be a nuissance, a trigger, and altogether inaccessible; however, now I try to straddle the line in my creative practice to push my own limits and see what is possible when multiple access needs insect or conflict. Without use of this library, there would likely be a lot more foley sounds from me which might not be bad, but not really where I want to spend my time. With that, I want to thank Kevin and others who make content available for share-alike, and encourage other Artists to do the same. In that vein, my games are atribution share-alike, just like Kevin's inventory on incompetech. If you want to build from my framework, I encourage you to do so.
During this residency, I was dealing with multiple health issues that slowed my progress and messed with my mind. Knowing that much of this was internally and didn't reflect my worth externally is an important thing for anyone dealing with hard times to remember. We are not our illness, we are not our struggles. We are humans worthy of love, even when we struggle to love ourselves.
]</span>
<span id="bibliography">[\
##Book References:
Artist's note - please note many of these books have not aged well and include language that is dated, racist and reflects the power dynamics of the time. Please take care as you access these resources. Please note - clicking these links will navigate you away from the game.
* Lynch-Watson, Janet (1980). <i>The Shadow-Puppet Book</i>, Sterling Publishing. <a href="https://vpl.bibliocommons.com/v2/record/S38C131487">VPL Listing</a>
* Hawksworth, Eric (1969). <i>Making a Shadowgraph Show</i>, Faber and Faber Limited. <a href="https://vpl.bibliocommons.com/v2/record/S38C1869322">VPL Listing</a>
* Currell, David (2007). <i>Shadow Puppets & Shadow Play</i>, The Crowood Press. <a href="https://vpl.bibliocommons.com/v2/record/S38C1677555">VPL Listing</a>
* Hope, Joyce (1981). <i>Me and My Shadows</i>, Joy-co Press. <a href="https://vpl.bibliocommons.com/v2/record/S38C325779">VPL Listing</a>
* Buchwald, Claire (1990). <i>The Puppet Book</i>, Play, inc. <a href="https://vpl.bibliocommons.com/v2/record/S38C678298">VPL Listing</a>
* Reiniger, Lotte (1970). <i>Shadow Theatres and Shadow Films</i>, B.T. Batsford. <a href="https://vpl.bibliocommons.com/v2/record/S38C936551">VPL Listing</a>
* Blackham, Olive (1960). <i>Shadow Puppets</i>, Barrie and Rockliff. <a href="https://vpl.bibliocommons.com/v2/record/S38C2930031">VPL Listing</a>
* Bicât, Tina (2007). <i>Puppets and Performing Objects</i>, The Crowood Press. <a href="https://vpl.bibliocommons.com/v2/record/S38C131487">VPL Listing</a>
* My further reading on the top of ethics of presenting mental illness in storytelling
** <a href="https://medium.com/read-or-die/feeding-the-monster-bfbd6d945e4f">Feeding the Monster, Jason Gosseck, 2024 (external link)</a>
** <a href="https://www.psychologytoday.com/ca/blog/stress-fracture/202002/the-monster-within-how-we-feed-the-appetite-anxiety">The Monster Within: How We Feed the Appetite of Anxiety, Jamie Cannon, 2020"</a>
** <a href="https://www.diplomaticourier.com/posts/mental-health-stigma-ethical-recovery-storytelling">Tackling Mental Health Stigma Through Ethical Recovery Storytelling</a>]</span>
<span id="audio">[\
##Audio Credits and Track List
* Jersey Girl, Tom Waits, (1980) Heartattack and Vine - in the style of Holly Cole fromher 1995 album Temptation, tiny clip performed by Kay Slater.
Royalty-free music and sound effects used in The Shadow Work. Please note - clicking these links will navigate you away from the game.
* Blue Feather Kevin MacLeod (incompetech.com), Licensed under Creative Commons: By Attribution 3.0 <a href="http://creativecommons.org/licenses/by/3.0/">License</a>
* Mirage Kevin MacLeod (incompetech.com), Licensed under Creative Commons: By Attribution 3.0 License
* Drone in D Kevin MacLeod (incompetech.com), Licensed under Creative Commons: By Attribution 3.0 License
* //woosh// Sound Effect generated by AI, credited to <a href="https://pixabay.com/users/ribhavagrawal-39286533/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=230554">Ribhav Agrawal</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=230554">Pixabay</a>
* //charming twinkle sound for fantasy and magic// Sound Effect by <a href="https://pixabay.com/users/universfield-28281460/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=250240">UNIVERSFIELD</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=250240">Pixabay</a>
* //UI back sound// Sound Effect from <a href="https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=100590">Pixabay</a>
* //energy up sound effecitl// Sound Effect by <a href="https://pixabay.com/users/ribhavagrawal-39286533/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=230472">Ribhav Agrawal</a>
* //Positive 5// and //Negative 8// by <a href="https://pixabay.com/users/floraphonic-38928062/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=224402">floraphonic</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=224402">Pixabay</a>
* //Short Break// by <a href="https://pixabay.com/users/stu9-50616646/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=363190">P F</a> from <a href="https://pixabay.com/sound-effects//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=363190">Pixabay</a>
* //Gross Slimy Goo Foley 2// by Sound Effect by <a href="https://pixabay.com/users/floraphonic-38928062/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=164295">floraphonic</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=164295">Pixabay</a>
* //Tiny Splash// by Sound Effect by <a href= "https://pixabay.com/users/freesound_community-46691455/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=83778">`freesound_community`</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=83778">Pixabay</a>
* //Brush teeth field recording// by Sound Effect by <a href="https://pixabay.com/users/freesound_community-46691455/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=22405">`freesound_community`</a> from <a href="https://pixabay.com/sound-effects//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=22405">Pixabay</a>
* //Light Switch Off// Sound Effect by <a href="https://pixabay.com/users/freesound_community-46691455/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=86314">`freesound_community`</a> from <a href="https://pixabay.com/sound-effects//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=86314">Pixabay</a>
* //Snoring Sound effect// Sound Effect by <a href="https://pixabay.com/users/freesound_community-46691455/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=55854">`freesound_community`</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=55854">Pixabay</a>
* //Car Acceleration// Sound Effect by <a href="https://pixabay.com/users/freesound_community-46691455/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=26997">`freesound_community`</a> from <a href="https://pixabay.com/sound-effects//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=26997">Pixabay</a>
* //Running Stairs// Sound Effect by <a href="https://pixabay.com/users/freesound_community-46691455/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=82097">`freesound_community`</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=82097">Pixabay</a>
* //Walking in Heels// Sound Effect by <a href="https://pixabay.com/users/freesoundsxx-47251115/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=268481">FreeSoundsxx</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=268481">Pixabay</a>
* //Small group of kids saying trick or treat// Sound Effect by <a href="https://pixabay.com/users/freesound_community-46691455/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=46693">`freesound_community`</a> from <a href="https://pixabay.com/sound-effects//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=46693">Pixabay</a>
* //Heavy Rain in the car// Sound Effect by <a href="https://pixabay.com/users/freesound_community-46691455/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=23182">freesound_community</a> from <a href="https://pixabay.com/sound-effects//?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=23182">Pixabay</a>
* //Kid Trick or Treat Sound effect// from quicksounds dot com
]</span>
<span id="footerCredits">[(link: "Return to Menu")[(track: 'back', 'play')(go-to: "Shadow Work")]]</span>woosh: ./audio/woosh.mp3, ./audio/woosh.ogg
twinkle: ./audio/twinkle.mp3, ./audio/twinkle.ogg
back: ./audio/back.mp3, ./audio/back.ogg
confirm: ./audio/confirm.mp3, ./audio/confirm.ogg
positive: ./audio/positive.mp3, ./audio/positive.ogg
negative: ./audio/negative.mp3, ./audio/negative.ogg
slurp: ./audio/slurp.mp3, ./audio/slurp.ogg
splashbreak: ./audio/splashbreak.mp3, ./audio/splashbreak.ogg
overdrive: ./audio/overdrive.mp3, ./audio/overdrive.ogg
bobo: ./audio/bobo.mp3, ./audio/bobo.ogg
dayend: ./audio/dayend.mp3, ./audio/dayend.ogg
halloween: ./audio/halloween.mp3, ./audio/halloween.ogg
kaysings: ./audio/kaysings.mp3, ./audio/kaysings.ogg
dayendphantom: ./audio/dayendphantom.mp3, ./audio/dayendphantom.ogg
rainwindow: ./audio/rainwindow.mp3, ./audio/rainwindow.ogg
airrelease: ./audio/airrelease.mp3, ./audio/airrelease.ogg
typing: ./audio/typing.mp3, ./audio/typing.ogg
egarim: ./audio/egarim.mp3, ./audio/egarim.ogg
mirage: ./audio/mirage.mp3, ./audio/mirage.ogg
refrigerator: ./audio/refrigerator.mp3, ./audio/refrigerator.ogg
tones: ./audio/tones.mp3, ./audio/tones.ogg
muffled: ./audio/muffled.mp3, ./audio/muffled.ogg
heartbeat: ./audio/heartbeat.mp3, ./audio/heartbeat.ogg
ticking: ./audio/ticking.mp3, ./audio/ticking.ogg
feedback: ./audio/feedback.mp3, ./audio/feedback.ogg
deephum: ./audio/deephum.mp3, ./audio/deephum.ogg
menu: ./audio/menu.mp3, ./audio/menu.ogg(if: (passage:)'s tags contains "admin")[(unless: (track: 'menu', 'isplaying'))[(track: 'menu', 'loop', true)(track: 'menu', 'play')]](else-if: (passage:)'s tags contains "noFooter")[](else:)[ [</span>\
<hr>\
<span id="footer">\
(text-color:purple)[(link: "Return to menu")[(set: $last to (passage:)'s name)(masteraudio: 'stopall')(track: 'back', 'play')(go-to: "Shadow Work")]]]<footer|]
(if: (passage:)'s tags contains "daily")[<hr style="border: 0; border-top: 3px double #9b2721;" />](if: (passage:)'s tags contains "checklist")[<hr style="border: 0; border-top: 3px double #7ada6f;" />](if: (passage:)'s tags contains "mirror")[<hr style="border: 0; border-top: 3px double #6f84da;" />](if: (passage:)'s tags contains "cat")[<hr style="border: 0; border-top: 3px double #da9f6f;" />](if: (passage:)'s tags contains "rorrim")[<hr style="border: 0; border-top: 3px double #907b25;" />]\
{=(if: $shadowLand is 1)[\
(enchant: ?passage, (text-style: "mirror"))
(enchant: ?otherside, (text-style: "mirror"))
(hide: ?dailyChoice)
(hide: ?sequenceChoice)
(hide: ?dodo)
(hide: ?exercise)
(show: ?other)(hide: ?rightside)
](else:)[(enchant: ?mirror, (text-style: "mirror"))]
(if: $screenComplete is 1)[(show: ?screen)]{(if: visits is 1)[(set:
$main to "The sky outside the studio was grey, the rain intermittent. The Artist turned on the overhead lights, and stood at their drafting table.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]
(if: (history:)'s last is "The Mirror")[(show: ?last)]
(if: (history:)'s last is "The Mirror (otherside)")[(show: ?last)]
(if: (history:)'s last is "The otherside")[(show: ?last)](if: $energy - $fatigue <1)[\
(if: visits is 1)[\
(set: $delta to "
...but the Artist struggles to find energy. "
)(display: "timePasses")\
]\
(else:)[\
(set: $delta to "
The Artist sits down and looks out the window. They struggle to find energy to get going.
")
(display: "tomorrow")\
]\
]
<!--/* if energy remains */--!>\
(else:)[\
<!--/* choices that require energy */--!>\
[\
(if: $shadowLand is 1)[ [(link: "Escape
")[(track: 'positive', 'play')(go-to: "The Mirror (otherside)")]]<otherside|
]\
(else-if: $mirrorEngage >=2)[]\
(else:)[\
(link: "Look in mirror
")[\
(masteraudio: 'stopall')(track: 'woosh', 'play')(track: 'mirage', 'play')
(set: $last to (passage:)'s name)(go-to: "The Mirror")\
]\
]\
](loudShadow|\
|dailyChoice>[\
(display: "dailyChoice")]\
[\
(if: $day >=9 and $sequenceProcess does not contain "13A")[(link: $subs's "13A"'s "label")[\
(track: 'confirm', 'play')\
(set: $checklistSubId to "13A", $taskCount to it +1, $screenComplete to 1)\
(display: "sequenceChoice")]
]\
(else-if: $checklistSubId is "Complete")[]\
(else:)[(link: $subs's $checklistSubId's "label")[\
(set: $taskCount to it +1)(track: 'confirm', 'play')(display: "sequenceChoice")]
]\
]<sequenceChoice|\
[<!-- /* ---------- Overdrive (borrow from tomorrow) ---------- */ --!>\
(display: "overdriveOption")\
]<overdrive|\
<!--/* Exercise */--!>\
[(if: (not $exToday) and ($fatigue < 5 or $exercise >= $day))[\
(link: "Go for a walk
")[(track: 'confirm', 'play')\
(replace: ?main)[(print: $main)]\
{(set:
$delta to "The Artist goes for a walk. $exWeather They are a little out of breath when they return, but colour has come back to their face.
",
$fatigue to $fatigue + (random:1,4))\
(if: $fatigue > 10)[(set: $fatigue to 10)]\
(set:
$energy to $energy + (random:1,3),
$exercise to $exercise + 1)\
(set: $shadow to it - 0.5)\
(if: $shadow <0)[(set: $shadow to 0)]\
<!--/* Week 1 bonus */--!>\
(if: ($day >= 1) and ($day <= 7))[\
(if: $exercise + 1 >= $day)[\
(set: $energy to $energy + 1)\
]\
]\
<!--/* Week 2 bonus */--!>\
(if: ($day >= 8) and ($day <= 14))[\
(if: $exercise is $day)[\
(set:
$energy to $energy + 2,
$delta to $delta + " As the Artist keeps up a near-daily walk, they move with more energy around the studio.
")\
]\
(else-if: $exercise + 2 >= $day)[\
(set: $energy to $energy + 1)\
]\
]\
<!--/* Week 3 bonus */--!>\
(if: ($day >= 15) and ($day <= 21))[\
(if: $exercise is $day)[\
(set:
$energy to $energy + 3,
$delta to $delta + " Entering week three, steady movement lifts stamina and focus.
")\
]\
(else-if: $exercise + 3 >= $day)[\
(set: $energy to $energy + 1)\
]\
]\
<!--/* Week 4 bonus */--!>\
(if: ($day >= 22) and ($day <= 28))[\
(if: $exercise is $day)[\
(set:
$energy to $energy + 4,
$delta to $delta + " In week four, the routine feels owned; the Artist moves with ease.
")\
]\
(else-if: $exercise + 4 >= $day)[\
(set: $energy to $energy + 1)\
]\
]\
<!--/* Final days bonus */--!>\
(if: ($day >= 29) and ($day <= 31))[\
(if: $exercise is $day)[\
(set: $energy to $energy + 4, $delta to $delta + " Through the final days of the residency, the body remembers the rhythm.
")\
]\
(else-if: $exercise + 5 >= $day)[\
(set: $energy to $energy + 1)\
]\
]\
<!--/* clamp after bonuses */--!>\
(if: $energy > 10)[(set: $energy to 10)]\
<!--/* once per day */--!>\
(set: $exToday to true)}\
<!--/* narrate + status -- check if is end the day, else print */--!>\
(if: $fatigue >= $energy)[\
(if: $day is 27)[\
(set: $fatigue to it - 1, $delta to $delta + "
The alarm clock sounds. It's time to head to the theatre.
")\
]\
(else-if: $day is 31)[\
(set: $fatigue to it - 1, $delta to $delta + "
The alarm clock sounds. It's time to head out and hand out some candy.
")\
]\
(else:)[\
(set: $delta to $delta + "
...but then, the Artist runs out of energy. ")]\
(display: "tomorrow")\
]\
(else:)[\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to $main + "\n" + $delta)\
(replace: ?status)[(display: "statusBar")]\
(replace: ?overdrive)[(display: "overdriveOption")]\
(if: $shadow <5)[(show: ?quietShadow)](else:)[(show: ?loudShadow)]\
<!--/* announce politely for SR users */--!>\
(set: $announceMsg to "Movement logged; energy and fatigue updated.")\
(display: "announcePolite")\
]\
]\
]\
]<exercise|\
[\
(if: $shadowLand is 1)[ [(link: "Escape
")[(track: 'positive', 'play')(go-to: "The Mirror (otherside)")]]<otherside|
]\
(else-if: $mirrorEngage >=2)[]\
(else:)[\
(link: "Look in mirror
")[\
(masteraudio: 'stopall')(track: 'woosh', 'play')(track: 'mirage', 'play')
(set: $last to (passage:)'s name)(go-to: "The Mirror")\
]\
]\
](quietShadow|\
[\
(link: "Pet the cat")[\
(track: 'bobo', 'play')(set: $last to (passage:)'s name)
(set: $dodo to it +1)(go-to: "Doh-doh the cat")
]
]<dodo|\
(link: "Take a nap")[\
(replace: ?main)[(print: $main)]
(if: $day is 27)[\
(set: $fatigue to it - 1, $delta to "The Artist decides to chance it, getting in a nap before what will likely. be a later night than usual. They sleep and then the alarm clock sounds. It's time to head to the theatre.
")\
]\
(else-if: $day is 31)[\
(set: $fatigue to it - 1, $delta to "The Artist decides to chance it, getting in a nap before what will likely. be a later night than usual. They sleep and then the alarm clock sounds. It's time to head out and hand out some candy.
")\
]\
(else:)[(set: $delta to "The Artist's nap turns into a series, interrupted by soft dozing periods where they spy at their phone, and then go back to sleep.
Suddenly, the sun has set and it's time for dinner.
")
(set: $fatigue to it - (random: 1,6))]\
(replace: ?status)[(display: "statusBar")]\
(display: "tomorrow")\
]
(link: "End the day early")[(track: 'confirm', 'play')\
(replace: ?main)[(print: $main)]
(if: $day is 27)[\
(set: $fatigue to it - 1, $delta to "The Artist shuts down their studio and starts working on their costume. As they comb their hair into place, the alarm clock sounds. It's time to head to the theatre.
")\
]\
(else-if: $day is 31)[\
(set: $fatigue to it - 1, $delta to "The Artist decides to call it a day. They putter about until the alarm clock sounds. It's time to head out and hand out some candy.
")\
]\
(else:)[(set: $delta to "The Artist decides they are done in the studio for the day.
")]\
(display: "tomorrow")\
]
(link: "Review checklist")[(track: 'woosh', 'play')(set: $last to (passage:)'s name)(go-to: "checklist")]
]\
{=
(if: $shadow <5)[(show: ?quietShadow)](else:)[(show: ?loudShadow)](replace: ?status)[(display: "statusBar")]\
(hide: ?footer)\
(if: $day is 27)[\
(masteraudio: 'stopall')(track: 'dayendphantom', 'play')\
(set: $delta to it + "\n" + "The Artist gets into their costume, hops on a bike and heads to meet their friend. 2 hours later, they decide to walk home, enjoying the clear night and tolerable early Autumn temperatures.
Arriving home, they nurse some new blisters from costume shoes and a 5k stroll, (if: $shadow <10)[but they are smiling as ]they disrobe, brush their teeth, and get into the bed.
")]\
(else-if: $day is 31)[\
(track: 'halloween', 'play')\
(set: $delta to it + "\n" + "They take a slow drive out to the country and spend a lovely evening with their parents. They play //Kill Doctor Lucky//, a variation on Clue and each of them takes a turn answering the door. The rain calms as the evening goes on and more trick or treaters show up and the candy dish empties before the hours is considered very late.
Driving home, they reflect on their evening, the month and their time in studio. A song bubbles up into their mind(if: $shadow <10)[ and they let it out through their mouth. The permission to sing at the top of their lungs as they speed down the highway heralds the ending of this latest challenge and is a both an act of acceptance and release.
They arrive home, begin their nightly regimen, and are asleep within moments of hitting the pillow.](else:)[ and they clamp it down hard, forcing the melody from their thoughts and working to overwrite the impulse with the need to remain silent until midnight. Thoughts forced back into static, they concentrate on driving, their foot heavy on the petal and pushing beyond a safe 10 km over the limit.
They arrive home and drop their bags, games and shoes in the middle of the hallway. They skip the night routine and flop into bed, changing into their pijamas while already under the covers.]
")(click: "act of acceptance and release")[(masteraudio: 'stopall')(track: 'kaysings', 'play')(click: "act of acceptance and release")[(masteraudio: 'stopall')]]\
]\
(else:)[\
(track: 'dayend', 'play')\
(set: $delta to it + "\n" + "The Artist turns out the lights in their studio, brushes their teeth, and gets into the bed.
")]\
(unless: $taskCount >=1)[(set: $shadow to it +1)]\
(if: $shadow >15)[\
(if: $day is 31)[\
(set: $negativeThoughts to (either: "...my time is up...", "...why did you waste time playing games and not working on the last day...", "...what a waste of time...", "...I hope no one asks me what I did this month..."))]\
(else:)[\
(set: $negativeThoughts to (either: "...better do better tomorrow...time is running out...", "...I'm going to run out of time...", "...if this is all I'm going to get done this month, do I deserve to call this a residency?...", "...I should be doing something more productive with my life and for society..."))]\
(set: $nightDo to (either: "go to the washroom", "get a drink of water", "to feed their cat", "to take some ibuprofen"))\
(set: $delta to it + "\n" + "During the night, the Artist gets up to $nightDo, and catches their shadowy reflection in the mirror.
$negativeThoughts
The Artist scowls at their reflection and heads back to bed.
")]\
{(if: $day >=16)[\
<!--/* decay overdriveDebt every 2 days */--!>\
(if: ($day % 2) is 0)[\
(set: $overdriveDebt to $overdriveDebt - 1)
(if: $overdriveDebt < 0)[(set: $overdriveDebt to 0)]
]\
]\
}\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to it + $delta)\
(replace: ?choices)[
(link: "Continue")[(set: $day to it + 1)(track: 'woosh', 'play')\
(if: (track: 'rainwindow', 'isplaying'))[(track: 'rainwindow', 'fadeout', 2)]
(if: $day >31)[(go-to: "November 1")]\
(else:)[(set: $energy to 10, $fatigue to (random: 1,6), $mirrorEngage to 0, $main to "", $delta to "")(go-to: (str: "day ", $day))]]]{(if: visits is 1)[(set:
$main to "The day began sunny, but clouds had started to gather. The [other ](other|Artist was late to start, distracted by a new game released the week before. Tea steamed beside them on the drafting table.
[Another interruption. Their phone buzzed with an invitation from the host of their previous residency to join for a retrospective celebration in November. They jotted down a few notes on what they could share, nodded to themselves, and then sent a quick note back confirming their attendance. Pushing their phone aside on the drafting table’s mat, they ran their fingers over the cool surface and took a steadying, focusing breath. Ready.]<rightSide|
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]
(if: (history:)'s last is "The Mirror")[(show: ?last)]
(if: (history:)'s last is "The Mirror (otherside)")[(show: ?last)]
(if: (history:)'s last is "The otherside")[(show: ?last)](if: $announceMsg is not $lastAnnounced)[\
(set: $lastAnnounced to $announceMsg)\
(replace: ?srupdates)[(print: $announceMsg)]](if: $announceMsg is not $lastAnnounced)[\
(set: $lastAnnounced to $announceMsg)\
(replace: ?srinline)[(print: $announceMsg)]](replace: ?main)[(print: $main)]\
<!--/* Use current id to fetch the delta; mark completion; nudge progress */--!>\
{
(set: _wx to $weatherByDay's $day)
(if: $checklistSubId is "1D" and _wx is not 1)[
(display: "nextTask")
(stop:) <!-- prevent stale 1D UI from rendering -->
]
(else-if: (a:"4B","4C", "13A") contains $checklistSubId and $day < 9)[
(display: "nextTask")
(stop:) <!-- prevent task from rendering before day 9 -->
]
(if: not ($subs contains $checklistSubId))[
(display: "nextTask")
]
}\
(set: _id to $checklistSubId)
(set: $delta to $subs's _id's "delta")
(set: $sequenceProcess to it + (a: _id))
(set: $processDone to it + $subs's _id's "value")\
{<!--If we just served 14A, force the Tier2 candidate to 6E once--!>
(if: $checklistSubId is "14A")[
(set: $dailyTier2Pending to "14A")
]}\
(else:)[(set: $dailyTier2Pending to _id)]
<!--/* Your existing energy/fatigue + narrative pattern */--!>\
(display: "sequenceAction")\
(display: "nextTask")\
(replace: ?sequenceChoice)[\
(link: $subs's $checklistSubId's "label")[(track: 'confirm', 'play')(display: "sequenceChoice")]
]\
(replace: ?overdrive)[(display: "overdriveOption")]<div id="mainChecklist" role="list">\
{\
<!--/* find the highest week unlocked (by $day) */--!>\
(set: _maxWeek to 0)\
(for: each _t, ...$tasksList)[\
(set:_maxWeek to _t's "week")\
]\
<!--/* render weeks 1.._maxWeek */--!>\
(for: each _w, ...(range:1, _maxWeek))[\
<hr />\
<h2>Week (print:_w) Tasks</h2>
{\
<!--/* tasks in this week */--!>\
(for: each _t, ...$tasksList)[\
(if: _t's "week" is _w)[\
(set:_subs to _t's "subs")\
(set:_isCollapsed to (_t contains "collapse") and _t's "collapse" and (_subs's length is 1))\
<!--/* header checkbox: complete if all subs are in $sequenceProcess */--!>\
(set:_allDone to true)\
(for: each _sid, ..._t's "subs")[\
(if: not ($sequenceProcess contains _sid))[(set:_allDone to false)]\
]\
(if: _isCollapsed)[\
<!--/* COLLAPSED: title line acts as the item */--!>\
<h3>(if: _allDone)[☑<span class="sr-only"> completed</span> ]\
(else:)[☐ ]\
(set:_sid to _subs's 1)\
(set:_isCurrent to ($checklistSubId is _sid))\
(if: _allDone)[\
(print:_t's "title")\
]\
(else:)[\
(link: _t's "title")[\
(set: $checklistSubId to _sid) /* ONLY one in-progress */
(set: $announceMsg to "Checklist task changed")
(display: "announcePolite")
(go-to: (passage:)'s name)
]\
(if: _isCurrent)[ (print:" — In progress") ]\
]</h3>\
]\
(else:)[\
<!--/* NORMAL (not collapsed): title + subtask rows */--!>\
<h3>\
(if: _allDone)[☑<span class="sr-only"> completed</span> ]\
(else:)[☐ ](print:_t's "title")</h3>\
(for: each _sid, ..._subs)[\
(set:_done to ($sequenceProcess contains _sid))\
(set:_isCurrent to ($checklistSubId is _sid))\
(if: _done)[\
☑<span class="sr-only"> completed</span> (print:$subs's _sid's "short")\
]\
(else:)[\
☐ (link: $subs's _sid's "short")[\
(set: $checklistSubId to _sid)\
<!--/* ONLY one in-progress */--!>\
(set: $announceMsg to "Checklist task changed")\
(display: "announcePolite")\
(go-to: (passage:)'s name)\
]\
(if: _isCurrent)[ (print:" — In progress") ]\
]\
(print:"\n")\
]\
\
]\
]\
]}\
]\
}\
*Stretch goal - if all items are complete before October 31st, revisit and expand across all items! //Best to do this throughout the month.//
</div>\
<div id="choices" aria-live="polite">\
<hr style="border: 0; border-bottom:1px dotted #7ada6f;">\
(link: "Leave checklist")[(if: (history:)'s last is "The Studio")[(masteraudio: 'stopall')(track: 'woosh', 'play')(go-to: "day 1")](else:)[(masteraudio: 'stopall')(track: 'back', 'play')(go-to: $last)]]
</div>{(for: each _i, ...(range: 1, 10))[\
(set:_class to "none")\
(if: _i <= $energy)[(set:_class to "energy")]\
(if: _i <= $fatigue)[(set:_class to "fatigue")]\
(print:"<span class='cell " + _class + "'>Ξ</span>")\
]}{(if: visits is 1)[(set:
$main to "The east-facing window framed a sky bright with dense clouds. The [other ](other|Artist stood at their drafting table, frowning at the alley below where neighbours smoked and watered their dogs.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[$delta]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]
(if: (history:)'s last is "The Mirror")[(show: ?last)]
(if: (history:)'s last is "The Mirror (otherside)")[(show: ?last)]
(if: (history:)'s last is "The otherside")[(show: ?last)](set: $delta to it + "
The hours pass. Not much is accomplished. ")
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to it + $delta)\
(hide: ?dailyChoices)(hide: ?sequenceChoice){<!-- IN CASE task 1D/sun shows up before a weather=1 sunny day -->\
(set: _wx to $weatherByDay's $day)
(if: $checklistSubId is "1D" and _wx is not 1)[
(set: $delta to "The sun isn’t out today; this experiment will have to wait.")
(replace: ?mainNew)[<span aria-hidden="true" title="new text">⊕ </span> $delta]
(set: $main to $main + "\n" + $delta)
(display: "nextTask")
(stop:)
]
<!--End Sunny Safeguard--!>}\
]\
{(set: $energy to it - 1)(set: _fatiguePrev to $fatigue)(set: $fatigue to it + (random: 1,6))}\
(if: _fatiguePrev is not $fatigue)[\
(set: $announceMsg to "Fatigue + progress changed")(display: "announcePolite")\
]\
(else: )[(set: $announceMsg to "Progress count updated")(display: "announcePolite")]\
(if: $fatigue >= $energy)[\
(if: $day is 27)[\
(set: $fatigue to it - 1, $delta to $delta + "
The Artist decides to call the day there - not wanting to be exhausted during their evening. They close down the studio and start to get ready.
As they run a final comb through their hair, the alarm clock sounds. It's time to head to the theatre.
")\
]\
(else-if: $day is 31)[\
(set: $fatigue to it - 1, $delta to $delta + "
The alarm clock sounds. It's time to head out and hand out some candy.
")\
]\
(else:)[(set: $delta to it + "\n\n...but then, the Artist runs out of energy.
")]\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to it + "\n" + $delta)\
(display: "tomorrow")\
]\
(else:)[\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to $main + "\n" + $delta)\
]\
(if: $checklistSubId is "4A" and $day < 9)[(replace: ?screen)[The Artist strings a laundry line across the studio doorway and clips a white tablecloth in place. It hangs loose but works for today's tests.]]\
{(set: $taskComplete to it +1)
(if: $taskExCount contains "readResearch")[(show: ?library)]
(replace: ?status)[(display: "statusBar")]}{\
(set: _candidate to "")\
(set: _researchCandidate to "")
(set: _sunCandidate to "")\
(set: _wx to $weatherByDay's $day)\
(set: _allSubs to (a:))
(for: each _t, ...$tasksList)[
(set: _allSubs to _allSubs + _t's "subs")
(for: each _sid, ..._t's "subs")[
(if: not ($sequenceProcess contains _sid))[
(if: _sid is "1D")[
/* prefer 1D only when sunny */
(if: _wx is 1 and _sunCandidate is "")[(set: _sunCandidate to _sid)]
]
(else-if: _sid is "2C")[
/* prefer 2C only after at least 1 research item exists */
(if: $dailyCat's "readResearch"'s count >= 1 and _researchCandidate is "")[
(set: _researchCandidate to _sid)
]
]
(else-if: _candidate is "")[
(set: _candidate to _sid)
]
]
]
]
<!--/* choose sunCandidate on sunny days; only choose 2C is dailyCat's readResearch >1; otherwise normal candidate; else celebrate */--!>\
(if: _sunCandidate is not "")[\
(set: $checklistSubId to _sunCandidate)\
]\
(else-if: _researchCandidate is not "")[\
(set: $checklistSubId to _researchCandidate)\
]\
(else-if: _candidate is not "")[\
(set: $checklistSubId to _candidate)\
]\
(else:)[\
(if: $sequenceProcess does not contain "CELEBRATE")[
(set: $checklistSubId to "CELEBRATE")
]
(else:)[
(set: $checklistSubId to "Complete")
]
]\
<!--/* refresh the menu link that points at sequenceChoice */--!\
}{
(set: _wxBase to (dm:
1, (dm:
"label","sun",
"ex","Clear sun makes the walk inviting and warmth takes the edge off.",
"window","Sunlight catches the edges of slow clouds. The contrast is crisp."
),
2, (dm:
"label","var. sun→rain",
"ex","Skies swing from bright to wet throughout the day so the Artist plans a short loop.",
"window","Shifting light across the window pane; shadows sharpen, then soften."
),
3, (dm:
"label","var. overcast→sun",
"ex","Dull morning drizzles breaks in spots and becomes sun. The Artist debates going out, then acts.",
"window","Grey lifts in places; a few bright seams stitch the clouds together."
),
4, (dm:
"label","overcast",
"ex","The flat grey weather throughout thel day with steady, cool air keeps their pace measured and enjoyable.",
"window","The light is even and the clouds' edges blur slightly across the sky."
),
5, (dm:
"label","drizzle/showers",
"ex","Off-and-on rain means hood up, but a brisk, fifteen-minute loop feels doable.",
"window","A fine mist that hovers but the glass stays clear while distant hills hide."
),
6, (dm:
"label","rain",
"ex","Rain demands resolve. The Artist shortens the route, their steps steady.",
"window","Rain threads the view; textures smear into soft, glowing bands of light."
),
7, (dm:
"label","freezing rain",
"ex","Icy wet rain makes the path slick. Their caution trims the outing.",
"window","Beads of ice stipple the pane; movement outside slows in contrast to the constant percussion against the glass."
),
8, (dm:
"label","snow",
"ex","The unseasonable but light snow is marked by footprints revealing the wet sidewalk and announcing it's incipient departure.",
"window","The sun catches the light dusting of snow on the trees and bushes where it has not yet melted. The wet concrete road glistens in dark contrast."
)
))
<!--/* Overrides. */--!>\
(set: _wxOverrides to (dm:
17, (dm:
"ex","The Artist repeatedly brushes hair from their face as the wind churns the air, causing gold and brown leaves to skitter past on the ground.",
"window","The trees in the nearby courtyard bow and shutter; bright yellow leaves reflect the sun."
),
18, (dm:
"ex","The Artist steps outside and then returns immediately to grab a warmer coat. Their nose quickly turns red as they round the block.",
"window","A brief trail of fog marks the passage of people walking the alley below."
)
))
(set: _code to $weatherByDay's $day)\
(if: _wxOverrides contains $day)[\
(set: $exWeather to _wxOverrides's $day's "ex",
$windowWeather to _wxOverrides's $day's "window")\
]\
(else:)[\
(set: $exWeather to _wxBase's _code's "ex",
$windowWeather to _wxBase's _code's "window")\
]}
(if: $weatherByDay's $day >=6)[(track: 'rainwindow', 'loop', true)(track: 'rainwindow', 'play')]<div id="main" role="document" aria-live="polite" aria-atomic="false">[\
And then it was the first of November.
[The Artist wakes up on November 1st, and shuffles into the kitchen. They make a cup of black tea. Finishing up, they run their tongue over a cakey mouth and roll their eyes. They move into the washroom with purpose.
(if: $overdriveDebt <= 1)[In the mirror, their face looks rested enough—soft shadows under the eye. They are careful not to make eye contact with their reflection, focused on getting ready for the day.
]\
(else-if: $overdriveDebt < 3)[The mirror shows a trace of the month: faint bags, a touch of puffiness, a careful roll of the shoulders before they straighten. They are careful not to make eye contact with their reflection, focused on getting ready for the day.
]\
(else-if: $overdriveDebt < 5)[The month has left marks: deeper crescents beneath the eyes, a stiffness at the neck; they massage their jaw and breathe. They grimace as they brush their neglected teeth, the past few days more focused on finishing than self-care. They are careful not to make eye contact with their reflection, focused on getting ready for the day.
]\
(else:)[The reflection tells the truth—heavy eyebags, swollen lids, a body learning again how to unbrace. They keep their head bowed throughout their dental care, grimacing as they brush their neglected teeth, and sigh heavily before slapping off the light.
]
(link: "Leave the washroom")[Leaving the washroom, they move to get dressed. After placing their tea mug in the dishwasher, they head to the front door. They move their hands over their various seams and pockets and slow as they find the hand-written check-list they used throughout the month in their back pocket. They stop before the front hall mirror, and place it on the table below.
(set: _pct to 100 * $processDone / $processTotal)\
(if: _pct >50)[They had completed around (print: _pct)% of the tasks they had set out to accomplish(if: $shadow <10)[, and they had added to the list throughout the month.]]\
(else:)[Going over the to-do list, the Artist writes the number (round: _pct)% on the page.]\
Looking into the mirror, and past their shoulder (if: $exercise >20)[their eyes rest on their running shoes. They grin, ](if: $exercise <5)[their eyes spot and then dart away from their running shoes. They roll their shoulder uncomfortably, ](else:)[their eyes come to rest on their running shoes. They smile softly,] and their gaze moves up to study the face in the reflection. The overhead light casts deep shadows onto the face reflected in the mirror(cond:
$shadow < 5,
[, but there’s colour in the cheeks, a faint curve at the mouth. The smile causes them to chuckle.
The reflection says: //...I did enough...//
The Artist nods, then turns away from their shadowy reflection towards the front door.],
$shadow < 15,
[. The reflection studies them back — tired, but alert.
Dark circles, but clear eyes.
The reflection says: //...I made it through...//
The Artist turns away from their reflection towards the front door, but the shadows do not quite vanish; however, they go quiet.],
true,
[. For a moment, the Artist looks puzzled as if they don’t recognize the face. The reflection stares back.
The reflection says: //...I listened too much...//
The Artist swallows hard, and the scowls. A cat meows from the hallway — small, insistent, alive.
The Artist reaches down to pet the insistent cat who has been a quiet observer through the month, happy to have someone home each day.
As if answering both, the Artist says, "Not today..."
They cough, their voice raw from a month of silence, and turn back to the kitchen to grab their water bottle. They return to the front door.]
)
(link: "Leave")[
(if: $exercise >20)[They pull on their running shoes. The habit embraced through their residency proves that a gentle walk is worth it.](else-if: $exercise >10)[They pat their running shoes playfully before pulling down their leather, ankle boots.](else:)[They push the running shoes back a bit as they grab their leather, ankle boots.]
They turn off the lights to their apartment and studio, and step outside into the cool day. Light filters through grey Autumn clouds and naked dying trees. Shadows fill in the cool spaces below frosty puddles and deep door steps. Time has dressed itself in fall colours, always fashionable for whatever is and will come.
(link: "November 2nd and beyond (a note from Kay)")[\
<hr style="border: 0; border-top: 3px double #9b2721;" />\
"Thank you for playing Shadow Work. October 2025 is done, but Time goes on and our task list is perpetually unfinished.
The unfinished always has the chance to be finished, and the finished is really only a milestone in our ongoing work in progress. But we are more than our work. We are more than the dark voices - internal or external. We are more than what we accomplish. When we measure ourselves against ever expanding Time or against our unchangable past, there is always the possibility to perceive our returns as dimishing. Less and more are relative terms. Today, I am grateful for your gift of time.
In this moment, in text, in time, I encourage us both to measure ourselves not in what we will, should or could do and what we should have or could have done. Consider instead what we are //doing//. Exist despite all.
With love,
Kay Slater.(if: $dodo >10)[
PS: Dodo, the cat - being a cat - would never say this outright, but he appreciated the pets.]"
<hr style="border: 0; border-top: 3px double #9b2721;" />]
(link: "Return to Main Menu (the end)")[(restart:)(go-to:"Shadow Work")(set: $last to "")]
]]]<notSick|\
[\
The Artist wakes with a heavy head and a sore throat. The cough that began as a tickle yesterday has deepened overnight.
Even the thought of tea feels distant. They stare at the ceiling, breathing slowly.
The start of the next month requires them to return to tasks paused for the sake of their residency, but the body refuses.
The cat climbs onto their chest, a small, vibrating weight, demanding stillness.
They close their eyes, one hand finding soft fur.
The world continues without them, but for now — and maybe this is the lesson — they let it.
(link: "Rest (a note from kay)")[\
<hr style="border: 0; border-top: 3px double #9b2721;" />\
"Thank you for playing *Shadow Work.* October 2025 ends here.
Steal from the rich, steal from Time - but don't steal from yourself.
*achoo*
With love,
Kay Slater."(if: $dodo >10)[
PS: Dodo, the cat - being a cat - would never say this outright, but he appreciated the pets. I also think he would appreciate it if we slowed down and let him sit in our lap more often. ]"
<hr style="border: 0; border-top: 3px double #9b2721;" />]
(link: "Return to Main Menu (the end)")[(restart:)(go-to:"Shadow Work")(set: $last to "")]
](sick|]\
(if: $overdriveDebt >2 or $shadow >15)[(show: ?sick)(hide: ?notSick)]{<!-- /* introduce overdrive debt functionality on day 16
overdriveAvailToday - how many pushes available today
overdriveUsedToday - how many taken today
overdriveDebtIncToday - how much debt each push adds today
*/--!>\
}\
{(if: visits is 1)[(set:
$main to "The morning of the [other ](other|Artist’s doctor appointment, the weather turned cloudy. The long drive out, an emotional visit, and the drive back into the city left them restless and unsatisfied. They had planned to donate blood that day if the appointment confirmed certain health thresholds, but the clinic had already closed by the time they returned to town.
The Artist headed to their local piercing shop. A regular there, they could request services non-verbally, and[ with familiar ease,]<rightside| they walked out with two new barbells decorating previously unmarked skin. [Buzzing from adrenaline and the sharp sense of control, they returned to the studio.]<rightside| They[ bounced on their toes, contemplating their next action, stealing]<rightside|[](other| micro-glances toward the studio mirror but snapping back quickly as they caught themselves turning.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{\
<!-- /* reset today’s counters */ --!>\
(set: $overdriveUsedToday to 0, $overdriveAvailToday to 0, $overdriveDebtIncToday to 1)
<!-- /* thresholds + availability */ --!>\
(if: $day >= 16 and $day <= 22)[
(set: $overdriveAvailToday to 1)
(if: $day is 16)[(if: $visits is 1)[(set: $main to $main + " The Artist moves with a little more urgency today, calendar open, task list re-checked.
")]\
]]
(else-if: $day >= 23 and $day <= 28)[
(if: $overdriveDebt > 2)[
(set: $overdriveAvailToday to 1)
]
(else:)[
(set: $overdriveAvailToday to 2)
]
(if: $day is 23)[(if: $visits is 1)[(set: $main to $main + " Stepping into the studio, they glance at the calendar again and take a steadying breath before diving in.
")]\
]]
(else-if: $day >= 29 and $day <= 31)[
<!-- /* final stretch; bigger borrow */ --!>\
(if: $overdriveDebt > 2)[
(set: $overdriveAvailToday to 1)
]
(else:)[
(set: $overdriveAvailToday to 3)
]
(if: $day is 29)[(if: $visits is 1)[(set: $overdriveDebtIncToday to 1.5, $main to $main + " At the door, they hold up three fingers in the mirror—counting the days left—and inhale slowly before returning to the work.
")]
]]
<!-- /* pulse lines on the “edge” days if debt is showing */ --!>\
(if: ($day is 22 or $day is 28) and $overdriveDebt >= 2)[
(if: $visits is 1)[(set: $main to $main + " Pushing has started to show: shoulders hold a touch of stiffness, and focus slips more easily.
")]
]
}{(if: visits is 1)[(set:
$main to "The sky had copied the weather from the day before, a ceiling of bright white clouds with no breaks. From the studio window, the [other ](other|Artist watched traffic along the main road, visible across the alley and through the empty facing lot between buildings where construction had yet to begin.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "Sunlight filled the studio. The alley outside was busy with weekend walkers, smokers, and pet owners in light jackets, some still in shorts. The [other ](other|Artist’s gaze followed the passing bare legs until they disappeared from view.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The sunshine continued for a second day. The cat sat looking out, unbothered by the precarious spill of his body over the thin windowsill. The [other ](other|Artist wiped down their cutting mat, the sun revealing shiny rings of dried tea once hidden by shadow.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The sunshine was gone, replaced by an overcast sky of bright cloud. The studio was well lit by the diffused light, but the [other ](other|Artist still flipped on the overhead work lamps. They checked their email and found an unexpected message: an invitation to submit an older film to a festival overseas. Pride mixed with unease. [Pushing past the resistance, they submitted the film and shut down their email. Ready.]<rightside|
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The second week of October began much like the first: overcast but dry, the studio quiet except for the old cat dozing at the window. The [other ](other|Artist watched the fur of his coat rise and fall, noting how the pattern shifted with each breath.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)
(if: $sequenceProcess's length <14)[(set: $shadow to it +1)]]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The [other ](other|Artist woke to an email from their building managers: after two years, they finally had permission to access the shared workshop, a request long ignored since move-in. [Patience paid off.]<rightside| The [other ](other|Artist carried a bundle of 2×2s and an antique backsaw down to meet the manager. After a brief tour of the space, they cut the lengths for a frame and returned to the studio, laying the pieces on the workbench. Outside, the sky hung heavy and grey, the earlier brightness deepening into clouds swollen with rain.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "[Again, the Artist woke to an email that demanded attention. A local arts festival was calling for proposals from past participants. Over morning tea, the Artist drafted an idea for a silent art walk. They reviewed the draft and hesitated before copying it into their email reply. The risk of misreading was real; silence might again be mistaken for mindfulness or accessibility theatre. After another hour of careful writing and rewrites, they submitted the proposal and shut down their email.
]<rightside|Hands hovering at the monitor, they noticed a[nother]<rightside| waiting message in their texts. A friend was inviting them abroad for a project they’d encouraged them to go for. They [smiled, then]<rightside| frowned. They were still fighting to get their name change recognized across government agencies, and as such, their passport was out of date. They declined[, but introduced them to another colleague better set-up to go]<rightside|. The disappointment [became fuel to once again]<rightside|[pushed them to try again to](other| sort out their paperwork, and they sent an email to the ministry of health to move the process ahead. Outside, yesterday’s clouds had broken, and rain poured down the window, each drop racing another while the cat’s head twitched in active spectation.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "Outside, the rain continued to pour. The [other ](other|Artist pulled on a hooded sweatshirt before returning to their drafting table.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "After three days of rain, the trees visible from the [other ](other|Artist’s studio looked a [little thinner]<rightside|[deader](other|. The clouds were high and tight, diffusing light across the blue, distant mountains of the North Shore and making the yellow and orange leaves still clinging to the dark, wet branches stand out in sharp contrast. [The Artist watched the gentle sway of the canopies, a quiet counterpoint to the busy traffic below.]<rightside|
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "As mid-October approached, the [other ](other|Artist paused to review deadlines and draft applications for residencies and grants.[ They made good progress, saving their files with a final, satisfied clack of the keyboard before refilling on black tea to fuel more studio time.]<rightside| Sunlight poured through the large window, and the cat slept deeply in the warmth.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "While brushing their teeth, the [other ](other|Artist noticed the tub was not empty.[ Curious, having finished their shower more than an hour earlier, they worked at the drain with baking soda and vinegar, and finally the plunger.]<rightside| Admitting defeat, they wrote a polite but urgent email to their building manager and hoped for a quick reply. Pushing aside the morning’s unexpected labour, they shuffled into the studio, checking their inbox every few minutes. [They slapped their phone face-down onto the cutting mat and closed their eyes, feeling the sunshine on their face as they took a few steadying breaths. When they opened them, they pushed the phone further aside and centred themselves at the work table.]<rightside|
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "[The weather was gorgeous, the sky the confident blue of new crayons, and the trees a fiesta of citrus. ]<rightside|The thermometer showed a slight improvement over yesterday’s cold, sunny weather, but the red line still hovered around seven degrees. The [other ](other|Artist worked impatiently at their computer on two long-shot residency applications, stealing glances at their workbench. Doubt darkened their face; both residencies were on the opposite side of the country, and in places the [other ](other|Artist had yet to visit.[ Still, they hit submit, received confirmation emails, and then switched off their monitors, cutting the doubt away through the physical action.]<rightside| The cat turned to watch them, yawned, and resettled on the windowsill.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$shadowProcessPerWeek to 0,
$taskCount to 0)
(if: $sequenceProcess's length <28)[(set: $shadow to it +2)]]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The [other ](other|Artist[ enjoyed a sunny morning]<rightside| walk[ed](other| to the optometrist. They[ had scheduled back-to-back appointments to better focus on studio work for the rest of the month, but even so, they]<rightside| buzzed with anxious energy when they stepped inside.[ Putting that energy to work,]<rightside|[Once home,](other| the [other ](other|Artist began to plan a ferry escape to Vancouver Island. They created a spreadsheet of current shows and galleries they had been wanting to visit. But as they reviewed the forecast, and tallied travel, hotel stays, premium costs for weekend travel, and food, the plan collapsed under the weight of forthcoming storms and spiraling costs. They closed the browser and sat very still.[ The cat, responding to their restlessness, jumped down and wove between their legs, meowing and gesturing toward the food dish. The Artist moved to satisfy at least one of them, and then returned to their workspace. Shortly thereafter, and with little chewing, the cat also resumed his place at the windowsill.]<rightside|
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The morning rain kept the [other ](other|Artist in bed until well after noon. They silenced their wrist alarm when it buzzed at sunrise and stayed put, scrolling through emails and office updates. The cat settled[ approvingly]<rightside| atop their chest. They selected a random Korean drama, sped it to three times playback, and watched in silence until their alarm sounded again for morning meds. After taking them, they pulled the duvet closer and resumed watching[ as characters in bright hanbok prepared a feast for a fussy Joseon king]<rightside|. Their watch, set to buzz after too much inactivity, started going off at regular intervals. With a sigh, the Artist abandoned the show and their warm bed, dislodged their feline heat pad, and changed into jeans and a smock. [Finally, the cat and Artist made their way into the studio and took their places.]<rightside|
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The [other ](other|Artist added a note to their calendar: a plumber was scheduled to check the drain in the morning. Frowning, they left their phone in the sitting room and stepped into the studio. They stared out the window at the overcast sky, their expression fixed. In places the clouds were thinner, but the sky remained a uniform white.[ Shaking the frown from their face, the Artist stepped up to the drafting table and placed a hand on its edge. They took a deep breath and let it out so deeply that the cat yowled. The breath ended in a wet sound, turning into a chuckle. One less dramatic breath, then a shake of the shoulders, and the Artist straighted before their work table.]<rightside|
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The [other ](other|Artist woke five minutes before the plumber was due. Shaking their phone in one hand while pulling up their pants with the other, the cat watched as they fumbled both. Tossing the phone down, they finished dressing and headed to the kitchen just as the door opened. The plumber, an older man familiar from past visits, waved as he passed into the washroom. The Artist lingered in the kitchen, making tea but leaving it to cool while they strained to hear any noise from the other room. A sudden door slam startled them[. After inspecting the washroom and hall, they found ]<rightside|[; ](other|the plumber[ was](other| gone.[ Testing the tub, they smiled. Problem solved. After sending a quick thank-you to the building manager, they entered the studio.]<rightside| The dark, heavy rain outside was a study in contrast to their light steps and satisfied smile.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The [other ](other|Artist placed a pair of ibuprofen and an acetaminophen on their drafting table beside their morning tea. They rubbed at their temple and opened a weather app to check the barometric pressure. The sky was overcast, and they moved with the anticipatory slowness of someone expecting pain. They paused at their computer[, their watch buzzing a calendar reminder,]<rightside| and submitted another residency application for next fall. This time, further north than they had ever been along this coast.[ The accomplishment of completing a task seemed to clear the fear of pain from the Artist’s eyes and they stepped up to their work table with increased vigor.]<rightside|
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "Yesterday’s late-afternoon sun had turned to rain overnight. The [other ](other|Artist and cat watched as the window filled with diagonal streaks of water.[ Cars sent up waves along the poorly paved alley, and the Artist grimaced as one narrowly avoided soaking a puppy and its owner out for a quick smoke and bathroom break.]<rightside| They grabbed a hooded sweatshirt, zipped it up, and pulled their smock over their head. Just as they stepped up to their work table, their phone buzzed with a message. They had received an invitation to submit a photo related to their practice to accompany an article discussing their work.[ Smothering an insistent grin, t]<rightside|[T](other|hey scrolled through photos taken at previous residencies, sent a selection with descriptions, and returned to their workbench[, their spine straighter and their eyes bright]<rightside|.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$shadowProcessPerWeek to 0,
$taskCount to 0)
(if: $sequenceProcess's length <39)[(set: $shadow to it +2)]]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The [other ](other|Artist stared at the calendar on their phone, counting and then counting again. The days remaining now numbered fewer than those already gone. It reminded them to check on the status of paperwork submitted with the ministry of health more than a week ago. Checking spam, they found that an email had come in the day before. Regrettably, it listed a bureaucratic loop denying the form for the same reason it was filed.
They laughed once, without humour, and closed their email.[ They reviewed their checklist, refocusing on their own Artistic progress. The cat meowed in protest, //or hunger//, and the Artist met his gaze. The meow deepened to a growl, and they remembered to blink slowly, then look away. The cat flopped onto their feet, belly up, and the Artist sighed, running a hand along the exposed downy fur. After a few indulgent rubs, the cat rose in one fluid motion and returned to the windowsill.]<rightside| Outside, drizzle marked the air and wet the pavement[, but the studio window stayed dry and clear]<rightside|.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The [other ](other|Artist avoided their studio for most of the day. They had been eating foods normally avoided at their doctor’s suggestion so that a blood test could confirm intolerances and guide a new medication. Puffy and bloated, their joints visibly swollen, they never made it past the couch. Hours slipped by in a roguelike video game.[ The cat tried to settle on their lap but was pushed off during moments of frantic play.]<rightside| One session became four, and the day’s mouse-grey light faded to coal before they finally powered down and slumped into the studio.[ In a final attempt to balance procrastination with action, they booked their flu and COVID shots for the following week. Closing their device, t]<rightside|[T](other|hey stood in the dark studio, lights from the other room causing the window’s raindrops to [go crystal bright]<rightside|[appear](other| against the backdrop of the stormy twilight beyond.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "Early morning rain fell hard enough that the [other ](other|Artist considered skipping an art opening they had RSVPed to earlier in the month.[ They cancelled plans with friends to carve pumpkins, still feeling bloated and anxious from their diet test, but the opening felt important to attend. The exhibiting Artists had already been slighted by the gallery’s lack of advertising and staff support, and the Artist pushed through the weather to show up]<rightside|. The effort proved disheartening; the work had been tucked into a corner, overshadowed by better-funded projects. They left upset and disappointed, but walked home under a dry sky.[ Back at the studio, the cat headbutted their calf on his way to the window, jostling them out of their thoughts and back into the present. ]<rightside|
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "Even though there have been no “weekends” for the [other ](other|Artist as they push through their residency production, on the final Sunday of the month, the Artist moved around with a solemnity that marked each action like a farewell.[ There was a sadness but also desperation as they tidied, studied works-in-progress, and collected their library books for return. The cat moved with his normal slow grace, and the bright white sky with high clouds shifted in slow motion towards what promised to be a clear afternoon sky. It matched the mood as the Artist collected memories on their fleeting time in studio.]<rightside| When they paused at the work station, there was a hum of tension in their shoulders.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The Artist set out their suit vest and dress pants, and went looking for their pocket watch. The evening plans involved a costume, specifically one from the 1920s. Once their outfit was ready, they set a timer to ensure their experiments did not extend past their departure time.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "They hobble into the studio, nursing their blisters and puffy ankles. Outside it poured, the rain dashed about by a fickle wind. The Artist dragged a balance board near their drafting table, sighing with relief as they massaged their soles against its nobbled face.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The Artist detoured onto their couch and invested a few hours in trying out a new narrative game. They set a timer, and when it sounded, they shut down their computer and screen with easy movements and an air of satisfaction. In their studio, they cleared some clutter from their workspace and then took position at their drafting table.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$shadowProcessPerWeek to 0,
$taskCount to 0)
(if: $sequenceProcess's length <46)[(set: $shadow to it +2)]]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The day began with a video call to the doctor, a new round of prescriptions, and a trip to the pharmacy for annual flu and COVID shots. When the Artist positioned themselves in front of their drafting table, they looked tired but content.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(if: visits is 1)[(set:
$main to "The day began at 3 AM. The Artist woke from bad dreams, arm aching. Unable to return to sleep and anxious about the day ahead, they tried reading in bed. The cat, intent on comfort, refused to move even as they shifted. When the alarm buzzed, they groaned, swallowed painkillers with water, and reset it three hours later.
By midday they shuffled into the studio, stiff but alert. Afternoon plans were to visit their parents, hand out candy, maybe play a board game or two. Rain pounded the window, and they pitied the children whose costumes would not survive the storm. Alarm reset for mid-afternoon, they took their place at the drafting table.
",
$dailyDoneToday to 0,
$dailyTaskId to (either: ...$dailyCatIds),
$exToday to false,
$taskCount to 0)]
(unless: (history:)'s last is "The Mirror (otherside)")[(if: $shadowLand is 1)[(set: $main to "[The Artist [is](is|[was](was| trapped behind the mirror. ]<otherside|" + "\n" + $main)]]\
(display: "weatherCheck")
(display: "overdriveInit")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[[$delta](last|]<mainNew|</span>\
</div>
<div id="status" role="status" aria-live="polite" aria-atomic="false">\
|status>[(display: "statusBar")]\
</div>\
<div id="choices" aria-live="polite">\
|choices>[(display: "choices")]</div>
{=
(if: $shadowLand is 1)[(show: ?is)](else:)[(show: ?was)]{(set: _picker to (a:))}\
(if: $dailyDoneToday is 1 and $sequenceProcess's length >0)[\
{(if: $checklistSubId is "Complete")[\
(set: _picker to $sequenceProcess-$extUsed)
(set: $dailyTier2Pending to _picker's 1st)
]}\
(if: $dailyTier2Pending is "14A")[
(link: "Extend fabric tests with Mom")[
(track:'confirm','play')
(set: $dailyDoneToday to it + 1)
(unless: _picker's length is 0)[(set: $taskCount to it +1)]\
(set: $extUsed to it + (a:"14A"))
(replace:?main)[(print:$main)]
(set: $delta to "The Artist receives a text from their Mom. They set up a facetime call and spend an hour experimenting with different fabrics from her studio with the Artist taking frantic notes.
* Chiffon shows crisp edges and wandering weft; colour passes but other shadows are still clearly read.
* Open-weave canvas makes a bright, speckled grid; shadows still show clearly against the wall.
* Red denim surprises—light barely passes, but as a surface it kicks an intense reflected wash. Where it does it looks like a sunspot.
* Corduroy blocks hard light, but where it passes it is soft like a sunset.
* Upholstery fabric is a perfect mask; its edge carries a thin halo of colour.
* Cork on canvas is pliant and also an unexpected option: as a surface it becomes a gradient of light to dark and where light passes through its fibers, it adds sparkling texture on the wall.
* Polyester felt is tested in different colours. Beige diffuses lightly with a faint shimmer; dark brown mostly blocks it while still tinting the hotspot; bright green glows and diffuses without a hotspot. Meanwhile, cotton felt has no sheen and diffuses heavily.
* Tartan wool diffuses richly and as a filter, it creates a pattern, the different colour threads recede and advance in the light.
* A knit wool sweater throws star-like points where stitch openings allow, but the dense threads effectively block light.
* Flannel is lackluster both as a surface and as a filter, absorbing the light as a surface and passing a harsh hotspot as a filter.
* Satin is brilliant at the hotspot with a pearly corona, and passes clean light.
* Silk spreads light to a soft sheen; as a filter it passes delicate colour, pattern implied more than drawn.
Embroidered organza steals the show: the organza allows light to cleanly pass but the silk embroidery casts crisp, floating linework.
The Artist and their mother laugh and play until they have exhausted their energy and share I love yous before signing off.
")\
(set: $dailyTier2Pending to "")
(set:
$processDone to $processDone + 0.2,
$shadow to $shadow - 1)\
(if: $shadow < 0)[(set: $shadow to 0)]\
(if: (random:1,100) <= 5)[\
(set: $energy to $energy + 1)\
(if: $energy > 10)[(set: $energy to 10)]\
]\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to $main + "\n" + $delta)\
(replace: ?status)[(display: "statusBar")]\
(replace: ?dailyChoice)[(display: "dailyChoice")]
]
]\
(else:)[(link: "Extend " + $subs's $dailyTier2Pending's "short" + " study")[\
(track: 'confirm', 'play')\
(set: $dailyDoneToday to it + 1)
(unless: _picker's length is 0)[(set: $taskCount to it +1)]\
(set: $extUsed to it + (a: $dailyTier2Pending))
(replace: ?main)[(print: $main)]\
(if: $subs's $dailyTier2Pending's short is "journal" or "final journal")[(set: $delta to "The Artist revisits their " + $subs's $dailyTier2Pending's "short" + " reflections, refining language and adding sketches. They consult references and add complete for books and websites in their notebook.",)]
(else:)[(set: $delta to "The Artist revisits the " + $subs's $dailyTier2Pending's "short" + " experiment, refining method and language. The expanded time spent reviewing makes them feel more confident and they trace the checkmark next to the task in their to-do list.
",)]
(set:
$processDone to $processDone + 0.1,
$shadow to $shadow - 1)\
(if: $shadow < 0)[(set: $shadow to 0)]\
(if: (random:1,100) <= 5)[\
(set: $energy to $energy + 1)\
(if: $energy > 10)[(set: $energy to 10)]\
]\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to $main + "\n" + $delta)\
(replace: ?status)[(display: "statusBar")]\
(replace: ?dailyChoice)[(display: "dailyChoice")]
]
]\
]\
(else-if: $dailyDoneToday is 0)[\
(link: $dailyCat's $dailyTaskId's "label")[\
(track: 'confirm', 'play')\
(set: $dailyDoneToday to it +1)\
(replace: ?main)[(print: $main)]\
(unless: $dailyCat's $dailyTaskId's count is >=4)[\
(set: $dailyCat's $dailyTaskId's count to it +1)\
]\
<!-- Mastered task - repetition for rest of game --!>\
(if: $dailyCat's $dailyTaskId's count >=4)[\
(set: $processDone to it + $dailyCat's $dailyTaskId's process's 4th)
(set: $shadow to it - $dailyCat's $dailyTaskId's shadowDown's 4th)
(set: _chance to $dailyCat's $dailyTaskId's energyRestoreChance's 4th)
(if: (random:1,100) <= _chance)[\
(set: $energy to $energy + 1)
(if: $energy > 10)[(set: $energy to 10)]\
]\
(unless: $taskExCount contains $dailyTaskId)[\
(set: $taskExCount to it + $dailyTaskId, $taskComplete to it +1)\
(set: $announceMsg to "Progress count updated")(display: "announcePolite")\
]\
(set: $delta to $dailyCat's $dailyTaskId's "tiers"'s 4th)
]\
<!-- Third time getting this daily task --!>\
(else-if: $dailyCat's $dailyTaskId's count is 3)[\
(set: $processDone to it + $dailyCat's $dailyTaskId's process's 3rd)
(set: $shadow to it - $dailyCat's $dailyTaskId's shadowDown's 3rd)
(set: _chance to $dailyCat's $dailyTaskId's energyRestoreChance's 3rd)
(if: (random:1,100) <= _chance)[\
(set: $energy to $energy + 1)
(if: $energy > 10)[(set: $energy to 10)]\
]\
(set: $delta to $dailyCat's $dailyTaskId's "tiers"'s 3rd)
]\
<!-- Second time getting this daily task --!>\
(else-if: $dailyCat's $dailyTaskId's count is 2)[\
(set: $processDone to it + $dailyCat's $dailyTaskId's process's 2nd)
(set: $shadow to it - $dailyCat's $dailyTaskId's shadowDown's 2nd)
(set: _chance to $dailyCat's $dailyTaskId's energyRestoreChance's 2nd)
(if: (random:1,100) <= _chance)[\
(set: $energy to $energy + 1)
(if: $energy > 10)[(set: $energy to 10)]\
]\
(set: $delta to $dailyCat's $dailyTaskId's "tiers"'s 2nd)
]\
<!-- First time getting this daily task --!>\
(else:)[\
(set: $processDone to it + $dailyCat's $dailyTaskId's process's 1st)
(set: $shadow to it - $dailyCat's $dailyTaskId's shadowDown's 1st)
(set: _chance to $dailyCat's $dailyTaskId's energyRestoreChance's 1st)
(if: (random:1,100) <= _chance)[\
(set: $energy to $energy + 1)
(if: $energy > 10)[(set: $energy to 10)]\
]\
(set: $delta to $dailyCat's $dailyTaskId's "tiers"'s 1st)
]\
(if: $shadow <0)[(set: $shadow to 0)]\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to $main + "\n" + $delta)\
(replace: ?status)[(display: "statusBar")]\
(replace: ?dailyChoice)[(display: "dailyChoice")]
]
]\
(else:)[](set: $day to 15, $last to (passage: "day 15"))
[[day 15]]
(link: "testMirror 1")[(set: $shadow to 1)(go-to: "testMirror")]
(link: "testMirror 5")[(set: $shadow to 5)(go-to: "testMirror")]
(link: "testMirror 10")[(set: $shadow to 10)(go-to: "testMirror")]
(link: "testMirror 15")[(set: $shadow to 15)(go-to: "testMirror")]
(if: $energy <10)[\
(if: $overdriveUsedToday < $overdriveAvailToday)[\
(link: "Push into overdrive (+1 energy; increases debt)")[\
(track: 'overdrive', 'play')\
(replace: ?main)[(print: $main)]\
{(set:
$delta to "The Artist digs deeper, borrowing from tomorrow to carry today.
",
$overdriveUsedToday to $overdriveUsedToday + 1,
$energy to $energy + 1)\
(if: $energy > 10)[(set: $energy to 10)]\
(set: $overdriveDebt to $overdriveDebt + $overdriveDebtIncToday)}\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to $main + " " + $delta)\
(replace: ?status)[(display: "statusBar")]\
(set: $announceMsg to "Overdrive used; energy updated.")\
(display: "announcePolite")\
]
]\
]{\
(set: _shadowChoice to "", _lightChoice to "", _main to "", _caption to "", _cw to "", _reflection to "", _notice to "", _week to 1, _key to "")
(if: $day > 28)[(set: _week to 5)]
(else-if: $day > 21)[(set: _week to 4)]
(else-if: $day > 14)[(set: _week to 3)]
(else-if: $day > 7)[(set: _week to 2)]
(set: _thresholds to (a: 0, 14, 28, 39, 46))
(set: _threshold to _thresholds's _week)
(set: _chosen to (a:))
(if: $shadow <=5)[\
(set:
_shadowChoice to "distant sound",
_lightChoice to "interesting light"
)
(enchant: ?shadow, (opacity: 0.25)+(text-style: "smear")+(text-color:#8c8c8c))\
(enchant: ?light, (text-color: white))\
]\
(else-if: $shadow <= 10)[\
(set:
_shadowChoice to "sound",
_lightChoice to "light"
)
(enchant: ?shadow, (opacity: 0.4)+(text-color:#8c8c8c))\
(enchant: ?light, (opacity: 0.6)+(text-color: white))\
]\
(else-if: $shadow <=14)[\
(set:
_shadowChoice to "sound",
_lightChoice to "flickering light"
)
(enchant: ?shadow, (opacity: 0.6)+(text-color:#8c8c8c))\
(enchant: ?light, (opacity: 0.4)+(text-color: white))\
]\
(else:)[\
(set:
_shadowChoice to "aggressive sound",
_lightChoice to "soft light"
)
(enchant: ?shadow, (text-color:#8c8c8c))\
(enchant: ?light, (opacity: 0.25)+(text-color: white))\
]\
(set: $mirrorEngage to it + 1, _main to "The Artist steps up to the large mirror installed near their writing desk.")(if: visits is 1)[(set: _main to _main + "\n" + "The light casts dramatic shadows across the reflected studio. The Artist tilts their head, as if listening, then their attention catches on a glint behind them. They lean closer.")](else:)[(set: _main to _main + "\n" + "Again, the Artist feels a pull toward the glass, one hand resting on its surface as their eyes flick between their own face and the space behind them.")]
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[_main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[]<mainNew|</span>\
</div>\
<div id="choices" aria-live="polite">\
<hr style="border: 0; border-bottom:1px dotted #6f84da;">\
[\
<!--TIER 1-------------------------------------------------------------------------------------------------------------------!>\
(if: $shadow >=15)[\
[\
(link: "[Focus on the _shadowChoice]<mirror|")[\
(track: 'negative', 'play')\
{(hide: ?light)
<!--week 1--!>
(set: _dayTalk to $shadowTalk's $day)
(if: _week is 1)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
(else:)[
(if: $shadowProcessPerWeek is 0)[
(set: $shadowProcessPerWeek to 1)
(if: $sequenceProcess < _threshold)[
(set: _shKey to (cond:
_week is 2, "shame2",
_week is 3, "shame3",
_week is 4, "shame4",
true, "shame5"
))
(set: _chosen to $shadowTalk's _shKey)
]
(else:)[
(set: _chosen to _dayTalk's "l̲delta")
]
]
(else:)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
]
<!-- /* Unpack the chosen triple */ --!>\
(set: _reflection to _chosen's 1st)
(set: _cw to _chosen's 2nd)
(set: _caption to _chosen's 3rd)
<!-- /* Set the sound */ --!>\
(if: _caption contains "mechanical typing — skips, resumes")[(click: _caption)[(track: 'typing', 'loop', 'true')(track: 'typing', 'play')]]
(if: _caption contains "very low bass hum — rumbling")[(click: _caption)[(track: 'deephum', 'loop', 'true')(track: 'deephum', 'play')]]
(if: _caption contains "hiss of air escaping tire")[(click: _caption)[(track: 'airrelease', 'loop', 'true')(track: 'airrelease', 'play')]]
(if: _caption contains "feedback hum — low and percussive")[(click: _caption)[(track: 'feedback', 'loop', 'true')(track: 'feedback', 'play')]]
(if: _caption contains "clock ticks — tempo builds")[(click: _caption)[(track: 'ticking', 'loop', 'true')(track: 'ticking', 'play')]]
(if: _caption contains "refrigerator rattle from another room")[(click: _caption)[(track: 'refrigerator', 'loop', 'true')(track: 'refrigerator', 'play')]]
(if: _caption contains "heartbeat — racing tempo")[(click: _caption)[(track: 'heartbeat', 'loop', 'true')(track: 'heartbeat', 'play')]]
(if: _caption contains "muffled voices — overlapping")[(click: _caption)[(track: 'muffled', 'loop', 'true')(track: 'muffled', 'play')]]
(if: _caption contains "two tones — slightly out of tune")[(click: _caption)[(track: 'tones', 'loop', 'true')(track: 'tones', 'play')]]
<!-- /* Shadow tick */ --!>\
(set: $shadow to it +2)
}\
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist gives their full attention to the _shadowChoice...
[(print:_caption)]<captions|
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]<mirror|
As they listen, the Artist’s hand and forearm sink into the mirror before their eyes sharpen with realization. The pull slows. From the warped, flipped reflection, the other Artist’s arm reaches back, palm open, beckoning them in.
]\
(set: _main to it + "The Artist listens to the sounds of a ghostly [_cw], their hand on the glass. They sink to the elbow before they fully register what’s happening.")
(replace:?choices)[\
(link: "Ignore the urge, fight the pull")[\
(track: 'positive', 'play')\
(set: $shadow to it -1)\
{(set: _dice to (random: 1,20), _diceEx to 0, _diceExN to 0, _diceEn to 0, _diceEnN to 0, _diceFa to 0, _diceFaN to 0, _diceDe to 0, _diceDeN to 0, _dicePr to 0, _dicePrN to 0,)\
(if: $exToday is true)[(set: _diceEx to 1)]
(else-if: $exercise +2 >= $day)[(set: _diceEx to 1)]
(else:)[(set: _diceExN to 1)]
(if:$energy > 5)[(set: _diceEn to 1)]
(else:)[(set: _diceEnN to 1)]
(if: $fatigue < 5)[(set: _diceFa to 1)]
(else:)[(set: _diceFaN to 1)]
(if:$overdriveDebt < 2)[(set: _diceDe to 1)]
(else:)[(set: _diceDe to - 1)]
(if: _threshold < $sequenceProcess's length)[(set: _dicePr to 1)]
(else:)[(set: _dicePr to - 1)]
(set: _positive to _diceEx + _diceEn + _diceFa +_diceDe + _dicePr)(set: _negative to _diceExN + _diceEnN +_diceFaN + _diceDeN + _dicePrN)}\
(replace: ?main)[_main The Artist fights to escape.]
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> ( ⚅ : (print: _dice) (if: _positive >0)[(+ _positive) ](if: _negative >0)[(- _negative)] /(print: $shadow) - ([success) The Artist's mouth presses into a bloodless line and the veins in their neck strain as they attempt to wrench their arm clear. They catch themselves before they place a hand against the glass to brace themselves, and instead lock their unbound hand at their elbow and pull. The fight centimetre by centimetre to extract themselves from the glass. With only their fingers locked in the glass, they pause, panting. Their hand slides away from their arm leaving white finger marks from their desperate grip.
On the other side of the glass, the skewed reflection seems to grow, the shadows beyond it flickering in agitated motion, as if a restless crowd was looming outside the edges of the glass. The Artist closed their eyes and resumed their struggle, now breathing in with each pull, and out to a small break.
When the fingers pulled free, the Artist let out a silent whimper coloured with hollow triumpf. Tears marked the corner of their eyes and they slumped against their writing desk, holding themselves upright by locking the elbows against the antique wood surface.
The sounds of [_caption]<captions| crescendo painfully and then abruptly snuff out.](success|[fail) - They brace their body against their trapped arm and pull, but the montion unbalances them and they trip forward and through the glass...](fail|]\
(if: _dice + _positive + _negative > $shadow)[\
(show: ?success)\
(display: "sfxStop")\
(replace:?choices)[(display:"leaveMirror")]]\
(else:)[\
(show: ?fail)\
(track: 'negative', 'play')\
(replace: ?choices)[(link: "Continue")[(track: 'slurp', 'play')(track: 'mirage', 'stop')(track: 'egarim', 'loop', true)(track: 'egarim', 'play')(go-to: "The otherside")]]\
]\
]
(link: "Sink into the mirror")[\
(track: 'negative', 'play')\
(set: $shadow to it +2)\
(replace: ?mainNew)[
The Artist limply falls forward. There is a folding of mass and a flattening of light as the Artist is drawn fully through.]
(replace: ?choices)[(link: "Continue")[(track: 'slurp', 'play')(track: 'mirage', 'stop')(track: 'egarim', 'loop', true)(track: 'egarim', 'play')(display: "sfxStop")(go-to: "The otherside")]]\
]
]\
]\
]<shadow|\
[\
(link: "Focus on the _lightChoice")[\
(track: 'positive', 'play')\
{\
(hide: ?shadow)
<!-- /* Unpack the chosen triple */ --!>\
(set:
_reflection to $shadowTalk's $day's "light"'s 1st,
_cw to $shadowTalk's $day's "light"'s 2nd,
_notice to $shadowTalk's $day's "light"'s 3rd,
$mirrorEngage to 3,
$shadow to it - 2
)\
(if: $shadow <1)[(set: $shadow to 1)]\
}\
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist strains to make out the _lightChoice...
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]
(print: _notice)
As they listen, another voice tries for a stage whisper, but the words are muffled. Searching the glass, the Artist doesn’t notice their arm slipping in until hand and forearm are already through. The pull eases. Within the warped, flipped reflection, another arm pushes out, its impatient finger curling to beckon them closer.
]\
(set: _main to it + "The Artist listens to the sounds of a ghostly [_cw], …its words straining against another, barely audible voice. Distracted, they miss the moment their arm slides into the glass and their warped reflection starts to push free.")
(replace:?choices)[\
[\
(link: "Fight the pull")[\
(track: 'positive', 'play')
{
(set:
$shadow to it -1,
_dice to (random: 1,20), _diceEx to 0, _diceExN to 0, _diceEn to 0, _diceEnN to 0, _diceFa to 0, _diceFaN to 0, _diceDe to 0, _diceDeN to 0, _dicePr to 0, _dicePrN to 0
)\
(if: $exToday is true)[(set: _diceEx to 1)]
(else-if: $exercise +2 >= $day)[(set: _diceEx to 1)]
(else:)[(set: _diceExN to 1)]
(if:$energy > 5)[(set: _diceEn to 1)]
(else:)[(set: _diceEnN to 1)]
(if: $fatigue < 5)[(set: _diceFa to 1)]
(else:)[(set: _diceFaN to 1)]
(if:$overdriveDebt < 2)[(set: _diceDe to 1)]
(else:)[(set: _diceDe to - 1)]
(if: _threshold < $sequenceProcess's length)[(set: _dicePr to 1)]
(else:)[(set: _dicePr to - 1)]
(set:
_positive to _diceEx + _diceEn + _diceFa +_diceDe + _dicePr +1,
_negative to _diceExN + _diceEnN +_diceFaN + _diceDeN + _dicePrN
)
}\
(replace: ?main)[_main The Artist fights to escape.]
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> ( ⚅ : (print: _dice) (if: _positive >0)[(+ _positive) ](if: _negative >0)[(- _negative)] /(print: $shadow) - ([success) The Artist holds the recent affirmation at the forefront of their mind like a physical shield, and turning their face away, they lean their body from the mirror. A foot pressed up against the wall, they form a triangle, their body the hypotenuse and their shoulder shivering from the strain. They fight centimetre by centimetre to extract themselves from the glass. With only their fingers locked in the glass, they pause, panting and stepping back into a standing position.
On the other side of the glass, the skewed reflection splits, as if the glass has shattered with reflections of the Artist jeering and howling in frustration. The Artist's shoulder rise and curl inward in a protective stance and their eyebrows knit as they watch the figures boil and split beyond the glass.
With renewed force, the Artist pulls at their trapped fingers, their free hand pulling at their wrist. They focus on their own body, the feel of their fingers firm against their skin. They look up and lock eyes with the most central form in the mirror, and with a wide grin, exposing crooked, tea stained teeth, they wrenched their fingers clear. The glass wavered like a rock dropped into a pond and then settled into the still and familiar visage of the Artist in their studio.](success|[fail) - They brace their body against their trapped arm and bring the _cw to mind to bolster their strength and confidence. However, as a kernel of doubt flickers behind their eyes, the reflection lurches forward and takes hold of their smock, hauling them through the glass...](fail|\
]\
(if: _dice + _positive + _negative > $shadow)[\
(live: 1.5s)[(show: ?success)(stop:)]\
(replace:?choices)[(display:"leaveMirror")]\
]\
(else:)[\
(show: ?fail)\
(live: 1.5s)[(track: 'negative', 'play')(stop:)]\
(replace: ?choices)[\
(link: "Continue")[(track: 'slurp', 'play')(track: 'mirage', 'stop')(track: 'egarim', 'loop', true)(track: 'egarim', 'play')(display: "sfxStop")(go-to: "The otherside")]\
]\
]\
]
]<attempt|\
[\
(link: "Consider giving in")[\
(track: 'negative', 'play')
(set: $shadow to it +1)\
(replace: ?mainNew)[
The Artist watches the disembodied hand reaching from the glass and does not move until it is within centimetres reach. It pulls back slowly but enough so that the grasping fingers do not find purchase. The face beyond the glass twists with anger and then splits, a second face now visible within the distorted glass. This one takes in the Artist with an expression between a sneer and a smile, before also splitting into another face whose head is thrown back in a sarcasstic squeal of laughter.
The laughter is loud enough to knock the recent affirmation from the Artist's eyes and they flinch. The other arm continues to reach out from the glass towards them.]
(link: "Give into the pull")[\
(track: 'negative', 'play')
(replace: ?main)[_main The Artist considers the figure in the mirror, unwilling to be caught. In response, the figure behind the glass splits. A chorus of beings with the Artist's face jeer, sneer, and scream at their defiance.]
(set: $shadow to it +2)\
(replace: ?mainNew)[
The sparkle of defiance in the Artist's eyes fade as they allow themselves to be grabbed by the seeking hand. It locks onto a fistful of smock and drags them forward. As the fabric of the smock touches the glass, there is a folding of mass and a flattening of light as the Artist is drawn fully through.]
(replace: ?choices)[\
(link: "Continue")[(track: 'slurp', 'play')(track: 'mirage', 'stop')(track: 'egarim', 'loop', true)(track: 'egarim', 'play')(display: "sfxStop")(go-to: "The otherside")]\
]\
]\
]\
]<temptation|\
]\
]\
]<light|
]\
<!--TIER 2-------------------------------------------------------------------------------------------------------------------!>\
(else-if: $shadow >=10)[\
[\
(link: "[Focus on the _shadowChoice]<mirror|")[\
(track: 'negative', 'play')
{
(hide: ?light)
<!--week 1--!>
(set: _dayTalk to $shadowTalk's $day)
(if: _week is 1)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
(else:)[
(if: $shadowProcessPerWeek is 0)[
(set: $shadowProcessPerWeek to 1)
(if: $sequenceProcess < _threshold)[
(set: _shKey to (cond:
_week is 2, "shame2",
_week is 3, "shame3",
_week is 4, "shame4",
true, "shame5"
))
(set: _chosen to $shadowTalk's _shKey)
]
(else:)[
(set: _chosen to _dayTalk's "l̲delta")
]
]
(else:)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
]
<!-- /* Unpack the chosen triple */ --!>\
(set:
_reflection to _chosen's 1st,
_cw to _chosen's 2nd,
_caption to _chosen's 3rd,
$shadow to it +2)
<!-- /* Set the sound */ --!>\
(if: _caption contains "mechanical typing — skips, resumes")[(click: _caption)[(track: 'typing', 'loop', 'true')(track: 'typing', 'play')]]
(if: _caption contains "very low bass hum — rumbling")[(click: _caption)[(track: 'deephum', 'loop', 'true')(track: 'deephum', 'play')]]
(if: _caption contains "hiss of air escaping tire")[(click: _caption)[(track: 'airrelease', 'loop', 'true')(track: 'airrelease', 'play')]]
(if: _caption contains "feedback hum — low and percussive")[(click: _caption)[(track: 'feedback', 'loop', 'true')(track: 'feedback', 'play')]]
(if: _caption contains "clock ticks — tempo builds")[(click: _caption)[(track: 'ticking', 'loop', 'true')(track: 'ticking', 'play')]]
(if: _caption contains "refrigerator rattle from another room")[(click: _caption)[(track: 'refrigerator', 'loop', 'true')(track: 'refrigerator', 'play')]]
(if: _caption contains "heartbeat — racing tempo")[(click: _caption)[(track: 'heartbeat', 'loop', 'true')(track: 'heartbeat', 'play')]]
(if: _caption contains "muffled voices — overlapping")[(click: _caption)[(track: 'muffled', 'loop', 'true')(track: 'muffled', 'play')]]
(if: _caption contains "two tones — slightly out of tune")[(click: _caption)[(track: 'tones', 'loop', 'true')(track: 'tones', 'play')]]
}\
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist works to hear the _shadowChoice...
[(print:_caption)]<captions|
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]<mirror|
The Artist tries to pull back and freezes: their wrist is buried in the rippling glass, their hand visible only from within the reflection. They twist and pull; the surface holds. A second hand, matching their own, pushes out and catches their smock, tugging them toward the wavering surface.
]\
(set: _main to it + "The Artist listens to the sounds of _cw. They place a hand on the glass; their reflection closes over it and does not let go.")
(replace:?choices)[\
(link: "Release the smock, fight the pull")[\
(track: 'positive', 'play')
(set: $shadow to it -1)(if: $shadow <0)[(set: $shadow to 0)]\
{(set: _dice to (random: 1,20), _diceEx to 0, _diceExN to 0, _diceEn to 0, _diceEnN to 0, _diceFa to 0, _diceFaN to 0, _diceDe to 0, _diceDeN to 0, _dicePr to 0, _dicePrN to 0,)\
(if: $exToday is true)[(set: _diceEx to 1)]
(else-if: $exercise +2 >= $day)[(set: _diceEx to 1)]
(else:)[(set: _diceExN to 1)]
(if:$energy > 5)[(set: _diceEn to 1)]
(else:)[(set: _diceEnN to 1)]
(if: $fatigue < 5)[(set: _diceFa to 1)]
(else:)[(set: _diceFaN to 1)]
(if:$overdriveDebt < 2)[(set: _diceDe to 1)]
(else:)[(set: _diceDe to - 1)]
(if: _threshold < $sequenceProcess's length)[(set: _dicePr to 1)]
(else:)[(set: _dicePr to - 1)]
(set: _positive to _diceEx + _diceEn + _diceFa +_diceDe + _dicePr)(set: _negative to _diceExN + _diceEnN +_diceFaN + _diceDeN + _dicePrN)}\
(replace: ?main)[_main The Artist fights to escape.]
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> ( ⚅ : (print: _dice) (if: _positive >0)[(+ _positive) ](if: _negative >0)[(- _negative)] /(print: $shadow) - ([success) They release the grab motion with their trapped hand, and then pull back, attempting to wrench their arm free. Their face is determined and strained as they fight centimetre by centimetre to extract themselves from the glass. Finally, sweating, they succeed at pulling back until their hand is level with the glass. One final pull lurches them back, and a transluscent greasy handprint is left behind.](success|[fail) - They release the grab motion with their trapped hand, but the extended hand does not mirror the action. The hand wrenches the fabric back and the Artist falls into the glass...](fail|]\
(if: _dice + _positive + _negative > $shadow)[\
(live: 1.5s)[(show: ?success)(stop:)]\
(display: "sfxStop")\
(replace:?choices)[(display:"leaveMirror")]]\
(else:)[\
(show: ?fail)\
(live: 1.5s)[(track: 'negative', 'play')(stop:)]\
(replace: ?choices)[(link: "Continue")[(track: 'slurp', 'play')(track: 'mirage', 'stop')(track: 'egarim', 'loop', true)(track: 'egarim', 'play')(display: "sfxStop")(go-to: "The otherside")]]\
]\
]
(link: "Give into the pull")[\
(track: 'negative', 'play')
(set: $shadow to it +2)\
(set: $energy to it -1)(if: $energy <1)[(set: $energy to 1)]\
(replace: ?mainNew)[
The Artist allows themselves to be pulled forward. As the fabric of the smock touches the glass, there is a folding of mass and a flattening of light as the Artist is drawn fully through.]
(replace: ?choices)[(link: "Continue")[(track: 'slurp', 'play')(track: 'mirage', 'stop')(track: 'egarim', 'loop', true)(track: 'egarim', 'play')(display: "sfxStop")(go-to: "The otherside")]]\
]\
]\
]\
]<shadow|\
[\
(link: "Focus on the _lightChoice")[\
(track: 'positive', 'play')
{\
(hide: ?shadow)
<!-- /* Unpack the chosen triple */ --!>\
(set: _reflection to $shadowTalk's $day's "light"'s 1st)
(set: _cw to $shadowTalk's $day's "light"'s 2nd)
(set: _notice to $shadowTalk's $day's "light"'s 3rd)
(set: $mirrorEngage to 3)
(set:
$shadow to it -1
)\
(if: $shadow <1)[\
(set: $shadow to 1)
]\
}\
(replace: ?mainNew)[\
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist focuses on the _lightChoice...
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]
(print: _notice)
Below their hand, the glass ripples. As they start to pull back, their hand sinks deeper, disturbing the surface like water. The image distorts; from the flipped reflection, fingers reach out. The other Aritst smirks and lunges. The Artist arches away, but the hand hooks their smock pocket and drags them closer.]\
(set: _main to it + " The Artist listens to the sounds of a ghostly [_cw], its positive words at odds with another, insistent but quieter voice. The glass ripples and they sink into the glass. An arm reaches out from the mirror and snatches the Artist's smock.")\
(replace:?choices)[\
(link: "[Struggle and fight]<struggle|[Pull free `(+1)`](refocused|")[\
(track: 'positive', 'play')
(replace: ?main)[_main]\
{(hide: ?refocus)\
(set:
$shadow to it -0.5,
_dice to (random: 1,5),
_total to $shadow +10)}\
(replace: ?mainNew)[\
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> [( ⚅ : (print: _total - _dice)/_total - success)]<struggle|[( ⚅ : (print: _total - _dice) (+ 🐱 )/_total - success)](refocused| [The Artist uses the weight of their body to both pull their arm and smock free. They grimace as the skin pulls where it is caught by the mirror, the area white with reduced circulation as if pinched by a tourniquet. The other Artist's smirks in response, their lip corners up in contrast to the Artist's strained frown. Painfully, and slowly, the Artist extracts themselves to their fingertips, the distance of their body now out of reach of the extended hand, and the smock is released causing the Artist to rag doll back.](struggle|[ Using their free hand, the Artist wrenches the pocket from the other Artist's grip and causes a small button to fly off and clatter to the ground. The cat pounces and then jumps back. Both the mirror images pause to watch him stalk the metal pin. Grinning up at their reflection, the Artist pulls their hand clear to their fingers with sudden ease.](refocused| The sudden motion stirs the surface of the mirror, and as the Artist's fingers pop free, the ripples fade away to a resolved and true reflection.\
]
(replace:?choices)[(display:"leaveMirror")]\
]
[\
(link: "Refocus")[\
(track: 'positive', 'play')
(replace: ?main)[_main]\
(set: $shadow to it -0.5)(if: $shadow <0)[(set: $shadow to 0)]\
(hide: ?struggle)(show: ?refocus)\
(replace: ?mainNew)[\
They step back to the edge of the reach and then close their eyes. They focus their breathing, rotate their shoulders and the slowly open their eyes specifically looking at objects not caught within the mirror. Their eyes rest on their dozing cat, out of reach and unaffected by the nearby battle. The Artist kicks at the wall below the windowsill and the cat stirs. He yawns and then slowly stands to stretch before hopping down and flopping onto the Artist's feet. A cat at their feet and the affirmation still echoing in their mind, they returned to face the mirror.
]\
(set: _main to it + " The Artist takes an important moment to refocus. Their cat responds and flops to their feet.")\
]\
]<refocus|\
]\
]\
]<light|\
]\
<!--TIER 3-------------------------------------------------------------------------------------------------------------------!>\
(else-if: $shadow >=5)[\
[\
(link: "Focus on the _lightChoice")[\
(track: 'positive', 'play')
{\
(hide: ?shadow)
<!-- /* Unpack the chosen triple */ --!>\
(set: _reflection to $shadowTalk's $day's "light"'s 1st)
(set: _cw to $shadowTalk's $day's "light"'s 2nd)
(set: _notice to $shadowTalk's $day's "light"'s 3rd)
(set: $mirrorEngage to 3)
(set:
$shadow to it -0.5
)\
(if: $shadow <1)[\
(set: $shadow to 1)
]\
}\
(replace: ?mainNew)[\
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span>The Artist works to focus on the _lightChoice...
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]
(print: _notice)
The Artist attempts to pulls their hand back from the mirror and struggles. The glass pulls at the skin, it's surface holding on like sticky tape. Getting up close, the Artist sees their skin pulling but not releasing, their hand sunken into the mirror a few centimetres deep. They close their eyes and concentrate, but the hand does not pull free.]\
(set: _main to it + " The Artist listens to the sounds of [_caption]<caption| mixed over a ghostly [_cw]<cw|, it's positive words at odds with another, competing voice screaming for attention. Distracted they fail to notice their hand sinking into the glass.")\
(replace:?choices)[\
(link: "[Struggle and fight]<1|[Pull free `(+1)`](2|")[\
(track: 'positive', 'play')
(replace: ?main)[_main]\
(set: $shadow to it -0.5)(if: $shadow <0)[(set: $shadow to 0)]\
(set: _dice to (random: 51,100))\
(replace: ?mainNew)[\
[( ⚅ : (print: _dice)/100 - success)]<1| They twist at the wrist, attempting to wiggle free. Their face is determined and after several harm pulls, they succeed at pulling back until their hand is level with the glass. One final pull lurches them back, and a transluscent greasy handprint is left behind.]
(replace:?choices)[(display:"leaveMirror")]\
]\
(link: "Refocus")[\
(track: 'positive', 'play')
(replace: ?main)[_main]\
(set: _main to it + " The Artist takes a valuable moment to refocus.")\
(set: $shadow to it -0.5)(if: $shadow <0)[(set: $shadow to 0)]\
(hide: ?1)(show: ?2)\
(replace: ?mainNew)[\
They stop struggling and close their eyes. A few deep breaths later, they open them and focus on the light, the affirmation from earlier shining in their eyes.
]\
]\
]\
]\
]<light|\
[\
(link: "[Focus on the _shadowChoice]<mirror|")[\
(track: 'negative', 'play')
{(hide: ?light)
<!--week 1--!>
(set: _dayTalk to $shadowTalk's $day)
(if: _week is 1)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
(else:)[
(if: $shadowProcessPerWeek is 0)[
(set: $shadowProcessPerWeek to 1)
(if: $sequenceProcess < _threshold)[
(set: _shKey to (cond:
_week is 2, "shame2",
_week is 3, "shame3",
_week is 4, "shame4",
true, "shame5"
))
(set: _chosen to $shadowTalk's _shKey)
]
(else:)[
(set: _chosen to _dayTalk's "l̲delta")
]
]
(else:)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
]
<!-- /* Unpack the chosen triple */ --!>\
(set: _reflection to _chosen's 1st)
(set: _cw to _chosen's 2nd)
(set: _caption to _chosen's 3rd)
<!-- /* Shadow tick */ --!>\
(set: $shadow to it +2)
<!-- /* Set the sound */ --!>\
(if: _caption contains "mechanical typing — skips, resumes")[(click: _caption)[(track: 'typing', 'loop', 'true')(track: 'typing', 'play')]]
(if: _caption contains "very low bass hum — rumbling")[(click: _caption)[(track: 'deephum', 'loop', 'true')(track: 'deephum', 'play')]]
(if: _caption contains "hiss of air escaping tire")[(click: _caption)[(track: 'airrelease', 'loop', 'true')(track: 'airrelease', 'play')]]
(if: _caption contains "feedback hum — low and percussive")[(click: _caption)[(track: 'feedback', 'loop', 'true')(track: 'feedback', 'play')]]
(if: _caption contains "clock ticks — tempo builds")[(click: _caption)[(track: 'ticking', 'loop', 'true')(track: 'ticking', 'play')]]
(if: _caption contains "refrigerator rattle from another room")[(click: _caption)[(track: 'refrigerator', 'loop', 'true')(track: 'refrigerator', 'play')]]
(if: _caption contains "heartbeat — racing tempo")[(click: _caption)[(track: 'heartbeat', 'loop', 'true')(track: 'heartbeat', 'play')]]
(if: _caption contains "muffled voices — overlapping")[(click: _caption)[(track: 'muffled', 'loop', 'true')(track: 'muffled', 'play')]]
(if: _caption contains "two tones — slightly out of tune")[(click: _caption)[(track: 'tones', 'loop', 'true')(track: 'tones', 'play')]]
}\
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist strains to listen to the _shadowChoice...
(bg:white)+(text-color:black)[(print:_caption)]
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]<mirror|
The Artist tries to pull their hand back and struggles. The glass clings like tape. They watch their skin stretch, held a few centimetres deep in the surface. They close their eyes and concentrate, but the hand does not pull free.]\
(set: _main to it + " The Artist listens to the sounds of a ghostly [_cw]. Distracted they fail to notice their hand sinking into the glass.")\
(replace:?choices)[\
[\
(link: "Struggle and fight")[\
(track: 'positive', 'play')
(replace: ?main)[_main]\
(set: $shadow to it -1)\
(hide: ?giveUp)\
(replace: ?mainNew)[
They twist at the wrist, attempting to wiggle free. Their face is determined and after several harm pulls, they succeed at pulling back until their hand is level with the glass. One final pull lurches them back, and a transluscent greasy handprint is left behind.]
(display: "sfxStop")\
(replace:?choices)[(display:"leaveMirror")]\
]
]<fight|\
[\
(link: "Give up")[\
(track: 'negative', 'play')
(replace: ?main)[_main]\
(set: $shadow to it +2)\
(set: $energy to it -1)(if: $energy <1)[(set: $energy to 1)]\
(hide: ?fight)\
(replace: ?mainNew)[
The Artist stands there with their hand through the glass, stuck like leg in the mud. They sag, wrist bent, and slide down to the floor. Their head rests against the wall and they stare at the corner where wall meets ground. Occasionally they shift their legs. Time passes.
(align:"=><=")[⛭ ⛭ ⛭]
They gasp as their hand slides down to flop into their lap. Their arm lays limp until the Artist tenses and then rubs the prickling sensation away as the blood resumes its natural flow through the limb.]
(replace:?choices)[(display: "sfxStop")(display:"leaveMirror")]\
]\
]<giveUp|
]\
]\
]<shadow|\
]\
<!--TIER 4-------------------------------------------------------------------------------------------------------------------!>\
(else:)[\
[\
(link: "Focus on the _lightChoice")[\
(track: 'positive', 'play')
{\
(hide: ?shadow)
<!-- /* Unpack the chosen triple */ --!>\
(set: _reflection to $shadowTalk's $day's "light"'s 1st)
(set: _cw to $shadowTalk's $day's "light"'s 2nd)
(set: _notice to $shadowTalk's $day's "light"'s 3rd)
(set: $mirrorEngage to 3)
(set:
$shadow to it -0.5
)\
(if: $shadow <1)[\
(set: $shadow to 1)
]\
}\
(replace: ?mainNew)[\
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist gives their full attention to the _lightChoice...
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]
(print: _notice)
They pull their hand back from the mirror(if: $shadow <=2)[. It leaves a handprint that is slow to fade.](else-if: $shadow is 3)[ with a little suction and a pop that causes the mirror to rattle before settling.](else-if: $shadow is 4)[ but the glass resists, sticking to their palm. They apply a bit more force before it releases and the mirror shudders before it settles back against the wall.](else:)[ and struggles. The glass pulls at the skin, it's surface holding on like sticky tape. Getting up close, the Artist sees their skin slowly pulling loose by millimetres. Their hand has sunken into the mirror, like semi-dried mud, and as they pull their hand free, they examine the glass. But for a slowly fading hand print, the glass is flat. The Artist shivers.]
]\
(replace:?choices)[(display:"leaveMirror")]\
]\
]<light|\
[\
(link: "[Focus on the_shadowChoice]<mirror|")[\
(track: 'negative', 'play')
{
(hide: ?light)
<!--week 1--!>
(set: _dayTalk to $shadowTalk's $day)
(if: _week is 1)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
(else:)[
(if: $shadowProcessPerWeek is 0)[
(set: $shadowProcessPerWeek to 1)
(if: $sequenceProcess < _threshold)[
(set: _shKey to (cond:
_week is 2, "shame2",
_week is 3, "shame3",
_week is 4, "shame4",
true, "shame5"
))
(set: _chosen to $shadowTalk's _shKey)
]
(else:)[
(set: _chosen to _dayTalk's "l̲delta")
]
]
(else:)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
]
<!-- /* Unpack the chosen triple */ --!>\
(set:
_reflection to _chosen's 1st,
_cw to _chosen's 2nd,
_caption to _chosen's 3rd,
$shadow to it +2)
<!-- /* Set the sound */ --!>\
(if: _caption contains "mechanical typing — skips, resumes")[(click: _caption)[(track: 'typing', 'loop', 'true')(track: 'typing', 'play')]]
(if: _caption contains "very low bass hum — rumbling")[(click: _caption)[(track: 'deephum', 'loop', 'true')(track: 'deephum', 'play')]]
(if: _caption contains "hiss of air escaping tire")[(click: _caption)[(track: 'airrelease', 'loop', 'true')(track: 'airrelease', 'play')]]
(if: _caption contains "feedback hum — low and percussive")[(click: _caption)[(track: 'feedback', 'loop', 'true')(track: 'feedback', 'play')]]
(if: _caption contains "clock ticks — tempo builds")[(click: _caption)[(track: 'ticking', 'loop', 'true')(track: 'ticking', 'play')]]
(if: _caption contains "refrigerator rattle from another room")[(click: _caption)[(track: 'refrigerator', 'loop', 'true')(track: 'refrigerator', 'play')]]
(if: _caption contains "heartbeat — racing tempo")[(click: _caption)[(track: 'heartbeat', 'loop', 'true')(track: 'heartbeat', 'play')]]
(if: _caption contains "muffled voices — overlapping")[(click: _caption)[(track: 'muffled', 'loop', 'true')(track: 'muffled', 'play')]]
(if: _caption contains "two tones — slightly out of tune")[(click: _caption)[(track: 'tones', 'loop', 'true')(track: 'tones', 'play')]]}\
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist strains to listen to the _shadowChoice...
(bg:white)+(text-color:black)[(print:_caption)]
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]<mirror|
The Artist pulls their hand back from the mirror(if: $shadow <=2)[. It leaves a handprint that is slow to fade.](else-if: $shadow is 3)[ with a little suction and a pop that causes the mirror to rattle before settling.](else-if: $shadow is 4)[ but the glass resists, sticking to their palm. They apply a bit more force before it releases and the mirror shudders before it settles back against the wall.](else:)[ and struggles. The glass pulls at the skin, it's surface holding on like sticky tape. Getting up close, the Artist sees their skin slowly pulling loose by millimetres. Their hand has sunken into the mirror, like semi-dried mud, and as they pull their hand free, they examine the glass. But for a slowly fading hand print, the glass is flat. The Artist shivers.]
]\
(replace:?choices)[(display: "sfxStop")(display:"leaveMirror")]\
]
]<shadow|\
]\
]<choices|</div>\
{=
(enchant: ?cw, (text-style: "italic"))
(enchant: ?captions, (bg:white)+(text-colour: black)){(set: $main to "On the last day of September, the Artist worked eighteen hours straight, tying off projects and leaving the office steady in their absence. They fell into bed fully dressed, socks and all. Their cat, unbothered, settled on their chest, purring them to sleep.
")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[]<mainNew|</span>\
</div>
<div id="choices" aria-live="polite">\
<hr style="border: 0; border-bottom:1px dotted #9b2721;">\
(link: "Continue")[(masteraudio: 'stopall')(track: 'woosh', 'play')\
(set: $delta to "##October 1st (pre-studio)
The Artist woke before the alarm. The cat had gone. Outside, the sky was dense with dark clouds and the street gleamed wet under the yet unextinguished street light. They had a few final things to do at work (small and unseen tasks) and wanted to slip in before anyone else arrived.
")\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to it + "\n" + $delta)\
(link: "Continue")[\
(masteraudio: 'stopall')(track: 'woosh', 'play')\
(replace: ?main)[$main]\
(set: $delta to "Clean shirt, new underwear, same socks. The walk through cold morning air woke them fully, and enough so that they regretted not grabbing a tea before they left. At the office they straightened cables, printed notes, tucked away the ladder and packed up their tools. When the lights went off behind them, the month had begun—for real.
")\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to it + " " + $delta)\
(link: "Continue")[\
(masteraudio: 'stopall')(track: 'woosh', 'play')\
(replace: ?main)[$main]\
(set: $delta to "Back at the studio, they set down their bags at the front door, and dodged the insistent cat, winding about their legs.
")\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> $delta]\
(set: $main to it + " " + $delta)\
<!--[[The Studio]]--!>\
(link: "Enter the studio")[(masteraudio: 'stopall')(track: 'woosh', 'play')(go-to: "The Studio")]\
]\
]\
]
(link: "Skip intro")[(masteraudio: 'stopall')(track: 'woosh', 'play')(go-to: "Quick Start - Introduction")]</div>{(set: $main to "A small sound started in the corner near the window.
The Artist stepped over and looked down at the alley below. The street was empty, the main road beyond still quiet before the early morning rush. Tilting their head, they tried to place the sound, but what caught their attention instead was their reflection in the studio mirror.
The mirror had been hung for reference work. It helped them study light and gesture—how shadows formed and gathered, how faces or figures could change with a tilt of a bulb. The studio lights were still arranged for that purpose, to exaggerate contrast and throw strong edges across whatever what reflected within.
")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[$main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[]<mainNew|</span>\
</div>
<div id="choices" aria-live="polite">\
<hr style="border: 0; border-bottom:1px dotted #9b2721;">\
(link: "Continue")[\
(masteraudio: 'stopall')(track: 'negative', 'play')\
(set: $delta to "The mouth in the mirror twitched.
[//......I'm ridiculous...//]<mirror|
The Artist froze.
")\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span>The mouth in the mirror twitched.
[amplified squeal, a clipped whisper]<captions|
A voice whispers [`(`an imposter / self-doubt reflection`)`]<cw|
(align:"=><=")[[...I'm ridiculous...]<mirror|]
The Artist froze. ]\
{<!-- /* Set the sound */ --!>\
(click: "amplified squeal, a clipped whisper")[(track: 'typing', 'loop', 'true')(track: 'feedback', 'play')]}\
(set: $main to it + "\n" + $delta)\
(link: "Continue")[\
(masteraudio: 'stopall')(track: 'negative', 'play')\
(replace: ?main)[$main]\
(set: $delta to "The reflection’s gaze was steady, less startled than their own. The shadows filled the tired folds beneath their eyes, dark circles pressed like bruises against pale skin. Wrinkles at the corners of their eyes and mouth collected the excess, small troughs of darkness hoarding what light remained.
[//..this used to be a good idea, but now I'm just putting off real work. I'm too old to waste these years on selfish pursuits...//]<mirror|
They sighed. The voice was familiar. It always there, even in silence.
")\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The reflection’s gaze was steady, less startled than their own. The shadows filled the tired folds beneath their eyes, dark circles pressed like bruises against pale skin. Wrinkles at the corners of their eyes and mouth collected the excess, small troughs of darkness hoarding what light remained.
[amplified squeal, a clipped whisper]<captions|
A voice whispers [`(`an imposter / self-doubt reflection)`)`]<cw|
(align: "=><=")[ [...this used to be a good idea, but now I'm just putting off real work. I'm too old to waste these years on selfish pursuits...]<mirror| ]
They sighed. The voice was familiar. It always there, even in silence.]\
{<!-- /* Set the sound */ --!>\
(click: "amplified squeal, a clipped whisper")[(track: 'typing', 'loop', 'true')(track: 'feedback', 'play')]}\
(set: $main to it + "\n" + $delta)\
(link: "Continue")[\
(masteraudio: 'stopall')(track: 'negative', 'play')\
(replace: ?main)[$main]\
(set: $delta to "The Artist inhaled, chest rising, breath audible against the hum of tinnitus. They counted patterns in the static until thought thinned. A final whisper:
[//...fine. ignore the truth. It will be hard to ignore by the sixteenth...//]<mirror|
The Artist closed their eyes and took a long, slow breath, their chest rising and falling in measured beats. They focused on the movement until the words in their head began to blur into everpresent tinnitus, exhausting but familiar. The sound became a thin wall of static behind their eyes. They let their mind wander, tracing faint shapes and imagined patterns in the noise. When the tension in their jaw eased, they opened their eyes, careful not to look at the mirror. Stepping back, they faced the drafting table instead. The false start was over.
")\
(replace: ?mainNew)[<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist inhaled, chest rising, breath audible against the hum of tinnitus. They counted patterns in the static until thought thinned. A final whisper:
[clock ticks — tempo builds]<captions|
A voice whispers [`(`a fatalist / catastrophizing reflection)`)`]<cw|
(align:"=><=")[[...fine. ignore the truth. It will be hard to ignore by the sixteenth...]<mirror|]
The Artist closed their eyes and took a long, slow breath, their chest rising and falling in measured beats. They focused on the movement until the words in their head began to blur into their everpresent tinnitus, exhausting but familiar. The sound became a thin wall of static behind their eyes. They let their mind wander, tracing faint shapes and imagined patterns in the noise. When the tension in their jaw eased, they opened their eyes, careful not to look at the mirror. Stepping back, they faced the drafting table instead. The false start was over.]\
{<!-- /* Set the sound */ --!>\
(click: "clock ticks — tempo builds")[(masteraudio: 'stopall')(track: 'ticking', 'play')]}\
(set: $main to " ", $delta to "")\
<!--[[checklist]]--!>\
(link: "Begin")[(masteraudio: 'stopall')(track: 'woosh', 'play')(go-to: "day 1")]
]\
]\
]</div>\
{=(enchant: ?cw, (text-style: "italic"))
(enchant: ?captions, (bg:white)+(text-colour: black))(masteraudio: 'stopall')(track: 'woosh', 'play')\
{(set: $delta to "")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[The Artist begins another October residency.
The cat stretches on the nearby couch; the sky outside is grey again. They’ve done this before — the quiet start, the small panic, the promise of focus. A checklist waits on the drafting table, scribbled and built up over the previous year in anticipation of this daily practice.
They catch their reflection in the mirror and look away before it speaks. It will, eventually, but for now, they exhale, step up to their drafting table, and begin.]<main|
</div>
<div id="choices" aria-live="polite">\
<hr style="border: 0; border-bottom:1px dotted #9b2721;">\
<!--[[day 1]]--!>\
(link: "day 1")[(masteraudio: 'stopall')(track: 'woosh', 'play')(go-to: "day 1")]\
</div>{(set:
_dodo to (either: "The Artist goes over to the cat and gives his head a stroke. The vibrations of his contentment reverberate up through the Artist's arm and into their heart.
", "The Artist pets the cat. The cat accepts a few strokes and then jumps down to sit on a piece of paper on the floor, facing away from the Artist. When the Artist returns to their drafting table, the cat hops back up onto the windowsill.
", "The Artist goes to pet the cat, and he rears back, sniffing their fingers. Frozen in this position for a few seconds, the Artist again moves their hand to pet the cat. They are permitted a few pets and then the cat stands to stretch. The Artist moves back and the cat resettles on the windowsill.
", "The Artist pets the cat. The cat tolerates it.
", "The Artist approaches the cat, and he stands and begins to meow. The Artist holds out their hand, and the cat bumps it with his head, but after that initial contact, he jumps down and then runs across the length of the studio, out into the sitting room, through the entry hall and into the front door. The Artist moves to check on him, but he is already skating across the painted concrete floor, retracing his steps and ending with another slam into the wall below the window. Both the cat and Artist still for a moment, and then the cat shakes off the last few seconds with a long stretch before jumping up to resettle on the windowsill.
", "The Artist goes to pet the cat, but he stands and faces them at their approach. He sits up, the width of his body well past fitting on the windowsill, and shifts from paw to paw to balance, never taking his eyes off the Artist. The Artist lifts their brows and then blinks slowly. The cat continues to stare. The Artist repeats the slow blink. The cat stares and then slowly mirrors the gesture. The Artist reaches out a hand and the cat pushes against each stroke with rumbling affection.
", "The Artist steps over to the cat who ignores them. The Artist gives him a few long strokes from head to lower back. The cat shifts and resettles, but doesn't rise. After one more firm pass, the Artist steps back to their drafting table.
", "The Artist approaches the cat, but he stands and arches his back in an exaggerated bow, followed by a yawn. The Artist pauses and the cat jumps down. Tail quivering, he stands just out of reach. They wait. After a few still moments, the cat bends, his front paws moving while his back legs remain in place, and yowls. The Artist steps forward and the cat does too, now barely in reach; the Artist gives him a back scratch. Losing balance, the Artist steps forward, and the cat allows them to close the distance. He meows his satisfaction, flicks his tail once more, and then returns to the window.
", "The Artist approaches the cat who watches the alley below. When the Artist gives him a pet, the cat startles slightly, still distracted by the figures outside, but allows himself to be stroked. The Artist steps back and the cat turns to watch them.
"), $shadow to it - (either: 0.125, 0.075))(if: $shadow <0)[(set: $shadow to 0)]}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[_dodo]<main|</div>
<div id="choices" aria-live="polite">\
<hr style="border: 0; border-bottom:1px dotted #da9f6f;">\
(link: "Ignore the cat")[(set: $main to it + "\n" + _dodo)(set: $delta to "")(masteraudio: 'stopall')(track: 'back', 'play')(go-to: $last)]</div>{
(set: _shadowChoice to "", _lightChoice to "")
<!--set links--!>\
(if: $shadow <=5)[\
(set:
_shadowChoice to "distant sound",
_lightChoice to "interesting light"
)
(enchant: ?shadow, (opacity: 0.25)+(text-style: "smear")+(text-color:#8c8c8c))\
(enchant: ?light, (text-color: white))\
]\
(else-if: $shadow <= 10)[\
(set:
_shadowChoice to "sound",
_lightChoice to "light"
)
(enchant: ?shadow, (opacity: 0.4)+(text-color:#8c8c8c))\
(enchant: ?light, (opacity: 0.6)+(text-color: white))\
]\
(else-if: $shadow <=14)[\
(set:
_shadowChoice to "sound",
_lightChoice to "flickering light"
)
(enchant: ?shadow, (opacity: 0.6)+(text-color:#8c8c8c))\
(enchant: ?light, (opacity: 0.4)+(text-color: white))\
]\
(else:)[\
(set:
_shadowChoice to "aggressive sound",
_lightChoice to "soft light"
)
(enchant: ?shadow, (text-color:#8c8c8c))\
(enchant: ?light, (opacity: 0.25)+(text-color: white))\
]\
(set: $mirrorEngage to it + 1, _main to "The Artist steps up to the large mirror installed near their writing desk. (if: visits is 1)[The light has been set-up to cast a dramatic shadow on objects reflected here. Although the Artist does not speak, they tilt their head to the side as if listening to a distant voice. Then, their attention is pulled to twinkle of light in the reflection of the studio behind them...
They press closer to their reflection, studying the reflection.](else:)[Again, the Artist feels a pull towards the glass, a hand placed against its surface as they examine their reflection. Their eyes dart searchingly from their face, to the spaces behind them... ]")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[_main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[]<mainNew|</span>\
</div>
<div id="choices" aria-live="polite">\
<hr style="border: 0; border-bottom:1px dotted #6f84da;">\
|choices>[
(if: $shadow >=15)[\
[\
(link: "[Focus on the_shadowChoice]<mirror|")[\
(set: $delta to "shade 15 text text")\
(replace: ?mainNew)[$delta]
(set:
$main to it + "/n" + $delta,
$shadow to it +0.5
)\
(go-to: "shadowLand")\
]
]<shadow|\
[\
(link: "Focus on the _lightChoice")[\
(set: $delta to "glow light 15 text text", $mirrorEngage to 3)
(replace: ?mainNew)[$delta]
(set:
$main to it + "/n" + $delta,
$shadow to it -2
)\
(if: $shadow <1)[\
(set: $shadow to 1)\
]\
]\
]<light|
]\
(else-if: $shadow >=10)[\
[\
(link: "[Focus on the_shadowChoice]<mirror|")[\
(set: $delta to "shade 10 text text")\
(replace: ?mainNew)[$delta]
(set:
$main to it + "/n" + $delta,
$shadow to it +1
)\
(go-to: "shadowLand")\
]
]<shadow|\
[\
(link: "Focus on the _lightChoice")[\
(set: $delta to "glow light 10 text text", $mirrorEngage to 3)
(replace: ?mainNew)[$delta]
(set:
$main to it + "/n" + $delta,
$shadow to it -1
)\
(if: $shadow <1)[\
(set: $shadow to 1)\
]\
]\
]<light|
]\
(else-if: $shadow >=5)[\
[\
(link: "Focus on the _lightChoice")[\
(set: $delta to "glow light 5 text text", $mirrorEngage to 3)
(replace: ?mainNew)[$delta]
(set:
$main to it + "/n" + $delta,
$shadow to it -1
)\
(if: $shadow <1)[\
(set: $shadow to 1)\
]\
]\
]<light|\
[\
(link: "[Focus on the_shadowChoice]<mirror|")[\
(set: $delta to "shade 5 text text")\
(replace: ?mainNew)[$delta]
(set:
$main to it + "/n" + $delta,
$shadow to it +1
)\
(go-to: "shadowLand")\
]\
]<shadow|\
]\
(else:)[\
[\
(link: "Focus on the _lightChoice")[\
{\
(set: $delta to $shadowTalk's $day's "light"'s 1st, $mirrorEngage to 3)
(replace: ?mainNew)[(print: $delta)]\
(set:
$main to it + "/n" + $delta,
$shadow to it -0.5
)\
(if: $shadow <1)[\
(set: $shadow to 1)
]\
}\
]\
]<light|\
[\
(link: "[Focus on the_shadowChoice]<mirror|")[\
(hide: ?light)\
(set:
_cw to $shadowTalk's $day's "delta"'s 2nd,
_caption to $shadowTalk's $day's "delta"'s 3rd,
)\
(replace: ?mainNew)[
The Artist strains to listen to the _shadowChoice...
(bg: white)+(text-color: black)[(print: _caption)]
A voice whispers [`(`a (print: _cw) `)`]<cw|
[(align: "=><=")[_(print: $shadowTalk's $day's "delta"'s 1st)_]]<mirror|
]\
(set:
$shadow to it -0.5
)\
(if: $shadow <1)[\
(set: $shadow to 1)
]\
(replace: ?choices)[(display: "leaveMirror")]
]\
]<shadow|
]
]</div>
{=
(enchant: ?mirror, (text-style: "mirror"))
(enchant: ?cw, (text-style: "italic")){\
(set: _shadowChoice to "", _lightChoice to "", _main to "", _caption to "", _cw to "", _reflection to "", _notice to "", _week to 1, _key to "", $shadowLand to 0)
(if: $day > 28)[(set: _week to 5)]
(else-if: $day > 21)[(set: _week to 4)]
(else-if: $day > 14)[(set: _week to 3)]
(else-if: $day > 7)[(set: _week to 2)]
(set: _thresholds to (a: 0, 14, 28, 39, 46))
(set: _threshold to _thresholds's _week)
(set: _chosen to (a:))
(if: $shadow <=5)[\
(set:
_shadowChoice to "distant sound",
_lightChoice to "interesting light"
)
(enchant: ?shadow, (opacity: 0.25)+(text-style: "smear")+(text-color:#8c8c8c))\
(enchant: ?light, (text-color: white))\
]\
(else-if: $shadow <= 10)[\
(set:
_shadowChoice to "sound",
_lightChoice to "light"
)
(enchant: ?shadow, (opacity: 0.4)+(text-color:#8c8c8c))\
(enchant: ?light, (opacity: 0.6)+(text-color: white))\
]\
(else-if: $shadow <=14)[\
(set:
_shadowChoice to "sound",
_lightChoice to "flickering light"
)
(enchant: ?shadow, (opacity: 0.6)+(text-color:#8c8c8c))\
(enchant: ?light, (opacity: 0.4)+(text-color: white))\
]\
(else:)[\
(set:
_shadowChoice to "aggressive sound",
_lightChoice to "soft light"
)
(enchant: ?shadow, (text-color:#8c8c8c))\
(enchant: ?light, (opacity: 0.25)+(text-color: white))\
]\
(set: $mirrorEngage to it + 1, _main to "The other Artist steps up to the large mirror installed near their writing desk. ")
}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[The Artist watches their reflection repeat familiar motions, shadows deepening with each gesture.
[_main]<mirror|]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[]<mainNew|</span>\
</div>\
<div id="choices" aria-live="polite">\
<hr style="border: 0; border-bottom:1px dotted #6f84da;">\
[\
<!--TIER 1-------------------------------------------------------------------------------------------------------------------!>\
(if: $shadow >=15)[\
[\
(link: "Focus on the _shadowChoice")[\
(track: 'negative', 'play')\
{(hide: ?light)
<!--week 1--!>
(set: _dayTalk to $shadowTalk's $day)
(if: _week is 1)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
(else:)[
(if: $shadowProcessPerWeek is 0)[
(set: $shadowProcessPerWeek to 1)
(if: $sequenceProcess < _threshold)[
(set: _shKey to (cond:
_week is 2, "shame2",
_week is 3, "shame3",
_week is 4, "shame4",
true, "shame5"
))
(set: _chosen to $shadowTalk's _shKey)
]
(else:)[
(set: _chosen to _dayTalk's "l̲delta")
]
]
(else:)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
]
<!-- /* Unpack the chosen triple */ --!>\
(set: _reflection to _chosen's 1st)
(set: _cw to _chosen's 2nd)
(set: _caption to _chosen's 3rd)
<!-- /* Set the sound */ --!>\
(if: _caption contains "mechanical typing — skips, resumes")[(click: _caption)[(track: 'typing', 'loop', 'true')(track: 'typing', 'play')]]
(if: _caption contains "very low bass hum — rumbling")[(click: _caption)[(track: 'deephum', 'loop', 'true')(track: 'deephum', 'play')]]
(if: _caption contains "hiss of air escaping tire")[(click: _caption)[(track: 'airrelease', 'loop', 'true')(track: 'airrelease', 'play')]]
(if: _caption contains "feedback hum — low and percussive")[(click: _caption)[(track: 'feedback', 'loop', 'true')(track: 'feedback', 'play')]]
(if: _caption contains "clock ticks — tempo builds")[(click: _caption)[(track: 'ticking', 'loop', 'true')(track: 'ticking', 'play')]]
(if: _caption contains "refrigerator rattle from another room")[(click: _caption)[(track: 'refrigerator', 'loop', 'true')(track: 'refrigerator', 'play')]]
(if: _caption contains "heartbeat — racing tempo")[(click: _caption)[(track: 'heartbeat', 'loop', 'true')(track: 'heartbeat', 'play')]]
(if: _caption contains "muffled voices — overlapping")[(click: _caption)[(track: 'muffled', 'loop', 'true')(track: 'muffled', 'play')]]
(if: _caption contains "two tones — slightly out of tune")[(click: _caption)[(track: 'tones', 'loop', 'true')(track: 'tones', 'play')]]
<!-- /* Shadow tick */ --!>\
(set: $shadow to it +2)
}\
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist gives their full attention to the _shadowChoice...
[(print:_caption)]<captions|
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]<mirror|
The other Artist's face twists into a grin.
]\
(replace:?choices)[\
(link: "Turn away from the mirror")[\
(track: 'negative', 'play')\
(set: $shadow to it +2)\
(set: $shadowLand to 1)\
(set: $delta to "The Artist faces the mirror and refuses to struggle. The other Artist returns to their drafting table.")\
(display: "sfxStop")(go-to: $last)\
]\
]\
]\
]<shadow|\
[\
(link: "Focus on the _lightChoice")[\
(track: 'positive', 'play')\
{\
(hide: ?shadow)
<!-- /* Unpack the chosen triple */ --!>\
(set:
_reflection to $shadowTalk's $day's "light"'s 1st,
_cw to $shadowTalk's $day's "light"'s 2nd,
_notice to $shadowTalk's $day's "light"'s 3rd,
$mirrorEngage to 3,
$shadow to it - 2
)\
(if: $shadow <1)[(set: $shadow to 1)]\
}\
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist strains to make out the _lightChoice...
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]
(print: _notice)
As they listen, the other Artist flails. An arm catches and begins to sink into the mirror, the hand vanishing before they can resist. The other Artist sneers, still warped and flipped in an incongruent reflection. The Artist pushes their arm further into the glass.
]\
(set: _main to it + "The other Artist is pulled into the glass and the Artist presses their advantage...")
(replace:?choices)[\
[\
(link: "Push through")[\
(track: 'confirm', 'play')(track: 'egarim', 'fadeout',3)
{
(set:
$shadow to it -1,
_dice to (random: 1,20), _diceEx to 0, _diceExN to 0, _diceEn to 0, _diceEnN to 0, _diceFa to 0, _diceFaN to 0, _diceDe to 0, _diceDeN to 0, _dicePr to 0, _dicePrN to 0
)\
(if: $exToday is true)[(set: _diceEx to 1)]
(else-if: $exercise +2 >= $day)[(set: _diceEx to 1)]
(else:)[(set: _diceExN to 1)]
(if:$energy > 5)[(set: _diceEn to 1)]
(else:)[(set: _diceEnN to 1)]
(if: $fatigue < 5)[(set: _diceFa to 1)]
(else:)[(set: _diceFaN to 1)]
(if:$overdriveDebt < 2)[(set: _diceDe to 1)]
(else:)[(set: _diceDe to - 1)]
(if: _threshold < $sequenceProcess's length)[(set: _dicePr to 1)]
(else:)[(set: _dicePr to - 1)]
(set:
_positive to _diceEx + _diceEn + _diceFa +_diceDe + _dicePr +1,
_negative to _diceExN + _diceEnN +_diceFaN + _diceDeN + _dicePrN
)
}\
(replace: ?main)[_main
The Artist fights to escape.]
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> ( ⚅ : (print: _dice) (if: _positive >0)[(+ _positive) ](if: _negative >0)[(- _negative)] /(print: $shadow) - ([success) - The Artist holds the affirmation in mind, its weight giving them mass as they push forward. The other Artist struggles, losing balance and slapping their free hand against the glass.
The glass splinters. The other Artist howls. The Artist plunges both hands in and focuses past them, toward the studio beyond. The mirror ripples, then stills. Only the Artist remains, their reflection’s mouth twitching as they turn away.](success|[fail) - They push forward but meet resistance. The other Artist smiles, mouthing words that sting; untrue, but easier to accept. The other Artist pulls back, their arm sliding free easily now. The affirmation begins to fade but still echoes softly as the other Artist turns from the glass.](fail|\
]\
(if: _dice + _positive + _negative > $shadow)[\
(show: ?success)\
(live: 1.5s)[(track: 'positive', 'play')(stop:)]\
(replace:?choices)[(set: $shadowLand to 0)(display:"leaveMirror")]\
]\
(else:)[\
(show: ?fail)\
(live: 1.5s)[(track: 'negative', 'play')(stop:)]\
(replace: ?choices)[\
(link: "Continue")[(track: 'egarim', 'fadein',2)(set: $shadowLand to 1)(display: "sfxStop")(go-to: $last)]\
]\
]\
]
]<attempt|\
]\
]\
]<light|
]\
<!--TIER 2-------------------------------------------------------------------------------------------------------------------!>\
(else-if: $shadow >=10)[\
[\
(link: "Focus on the _shadowChoice")[\
(track: 'negative', 'play')
{
(hide: ?light)
<!--week 1--!>
(set: _dayTalk to $shadowTalk's $day)
(if: _week is 1)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
(else:)[
(if: $shadowProcessPerWeek is 0)[
(set: $shadowProcessPerWeek to 1)
(if: $sequenceProcess < _threshold)[
(set: _shKey to (cond:
_week is 2, "shame2",
_week is 3, "shame3",
_week is 4, "shame4",
true, "shame5"
))
(set: _chosen to $shadowTalk's _shKey)
]
(else:)[
(set: _chosen to _dayTalk's "l̲delta")
]
]
(else:)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
]
<!-- /* Unpack the chosen triple */ --!>\
(set:
_reflection to _chosen's 1st,
_cw to _chosen's 2nd,
_caption to _chosen's 3rd,
$shadow to it +2)
<!-- /* Set the sound */ --!>\
(if: _caption contains "mechanical typing — skips, resumes")[(click: _caption)[(track: 'typing', 'loop', 'true')(track: 'typing', 'play')]]
(if: _caption contains "very low bass hum — rumbling")[(click: _caption)[(track: 'deephum', 'loop', 'true')(track: 'deephum', 'play')]]
(if: _caption contains "hiss of air escaping tire")[(click: _caption)[(track: 'airrelease', 'loop', 'true')(track: 'airrelease', 'play')]]
(if: _caption contains "feedback hum — low and percussive")[(click: _caption)[(track: 'feedback', 'loop', 'true')(track: 'feedback', 'play')]]
(if: _caption contains "clock ticks — tempo builds")[(click: _caption)[(track: 'ticking', 'loop', 'true')(track: 'ticking', 'play')]]
(if: _caption contains "refrigerator rattle from another room")[(click: _caption)[(track: 'refrigerator', 'loop', 'true')(track: 'refrigerator', 'play')]]
(if: _caption contains "heartbeat — racing tempo")[(click: _caption)[(track: 'heartbeat', 'loop', 'true')(track: 'heartbeat', 'play')]]
(if: _caption contains "muffled voices — overlapping")[(click: _caption)[(track: 'muffled', 'loop', 'true')(track: 'muffled', 'play')]]
(if: _caption contains "two tones — slightly out of tune")[(click: _caption)[(track: 'tones', 'loop', 'true')(track: 'tones', 'play')]]
}\
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist listens to the _shadowChoice...
[(print:_caption)]<captions|
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]]
(replace:?choices)[\
(link: "Turn away from the mirror")[\
(track: 'negative', 'play')\
(set: $shadow to it +2)\
(set: $shadowLand to 1)\
(set: $delta to "The Artist faces the mirror and refuses to struggle. The other Artist returns to their drafting table.")\
(display: "sfxStop")(go-to: $last)]\
]\
]\
]<shadow|\
[\
(link: "Focus on the _lightChoice")[\
(track: 'positive', 'play')
{\
(hide: ?shadow)
<!-- /* Unpack the chosen triple */ --!>\
(set: _reflection to $shadowTalk's $day's "light"'s 1st)
(set: _cw to $shadowTalk's $day's "light"'s 2nd)
(set: _notice to $shadowTalk's $day's "light"'s 3rd)
(set: $mirrorEngage to 3)
(set:
$shadow to it -1
)\
(if: $shadow <1)[\
(set: $shadow to 1)
]\
}\
(replace: ?mainNew)[\
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist focuses on the _lightChoice...
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]
(print: _notice)
As they listen, the other Artist waves their hand, as if dispelling the positive words. The Artist's eyes shine with hope, startling the other Artist who motions aggressively. Their fingers graze the glass and stick, sinking into the mirror. Their hand and forearm are fully submerged beyond the glass before they are able to slow its pull. The other Artist sneers - still warped and flipped in an incongruent reflection. The Artist pushes their arm through the glass, mirroring their reflection's position. They reach out, grabbing at the other Artist.
The other Artist bows their back as they dodge a swipe from the arm, but Artist manages to catch the pocket of their smock and pulls them nearer to the glass.]\
(set: _main to it + " The Artist listens. The [_cw]'s words clash with another, quieter insistence. The other Artist is pulled into the glass, and the Artist reaches in parallel to snatch at the other Artist's smock.")\
(replace:?choices)[\
(link: "[Struggle and fight]<struggle|[Pull free `(+1)`](refocused|")[\
(track: 'positive', 'play')(track: 'egarim', 'fadeout',3)
(replace: ?main)[_main]\
{(hide: ?refocus)\
(set:
$shadow to it -0.5,
_dice to (random: 1,5),
_total to $shadow +10)}\
(replace: ?mainNew)[\
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> [( ⚅ : (print: _total - _dice)/_total - success)]<struggle|[( ⚅ : (print: _total - _dice) (+ 🐱 )/_total - success)](refocused| [The Artist uses the weight of their body to plunge forward while wrenching back their arm. They lead with their forehead, closing their eyes and expecting resistance but rewarded with a refreshing coolness as they push their face through. Eyes open, they face the studio mirror, their own smock clenched in their hand. The other Artist looks down at their own hand and recoils. The Artist turns away quickly, bumping into their drafting table as they reposition themselves before it.](struggle|[ Using their free hand, the Artist grabs their own pocket and plunges forward. Their reflection mirrors the motion and both brace for impact. The Artist grins, eyes squeezed shut, and steps through. They steady themselves on the right side before turning to pet their purring cat.](refocused|
]
(replace:?choices)[(set: $shadowLand to 0)(display:"leaveMirror")]\
]
[\
(link: "Refocus")[\
(track: 'positive', 'play')
(replace: ?main)[_main "\n"]\
(set: $shadow to it -0.5)(if: $shadow <0)[(set: $shadow to 0)]\
(hide: ?struggle)(show: ?refocused)\
(replace: ?mainNew)[\
The Artist begins to mouth the affirmation, forcing the other Artist's mouth to copy. The other Artist's nose curls in disgust. As they continue to repeat the words, the Artist looks through at their cat, watching with curious eyes. Beyond that, a stray sunbeam catches the window and warms the surface of their drafting table beyond. Other objects in their study becon them forward and with the affirmation still echoing in their mind, they face the mirror with increased resolve.
]\
(set: _main to it + "\n" + " The Artist takes an important moment to refocus.
")\
]\
]<refocus|\
]\
]\
]<light|\
]\
<!--TIER 3-------------------------------------------------------------------------------------------------------------------!>\
(else-if: $shadow >=5)[\
[\
(link: "Focus on the _lightChoice")[\
(track: 'positive', 'play')(track: 'egarim', 'fadeout', 3)
{\
(hide: ?shadow)
<!-- /* Unpack the chosen triple */ --!>\
(set: _reflection to $shadowTalk's $day's "light"'s 1st)
(set: _cw to $shadowTalk's $day's "light"'s 2nd)
(set: _notice to $shadowTalk's $day's "light"'s 3rd)
(set: $mirrorEngage to 3)
(set:
$shadow to it -0.5
)\
(if: $shadow <1)[\
(set: $shadow to 1)
]\
}\
(replace: ?mainNew)[\
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span>The Artist works to focus on the _lightChoice...
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]
(print: _notice)
The Artist watches their reflection, looking back slightly skewed. ]\
(set: _main to it + " The Artist listens. The [_cw]'s words clash with another, quieter insistence.")\
(replace:?choices)[\
(link: "[Struggle and fight]<1|[Pull free `(+1)`](2|")[\
(track: 'positive', 'play')(track: 'mirage', 'fadein', 3)
(replace: ?main)[_main]\
(set: $shadow to it -0.5)(if: $shadow <0)[(set: $shadow to 0)]\
(set: _dice to (random: 51,100))\
(replace: ?mainNew)[\
[( ⚅ : (print: _dice)/100 - success)]<1| The other Artist's smile is slight but crooked, and as the Artist feels their own mouth turn upward, they plunge their hands into the mirror. Their reflection is forced to copy the action and with parallel momentum, the two pass through the shared pane of glass until the Artist stands on the right side.
They close their eyes and take a few cleansing breaths. Then, with eyes softly lowered, they spin away from the mirror and return to their drafting table.]
(replace:?choices)[(set: $shadowLand to 0)(display:"leaveMirror")]\
]\
(link: "Refocus")[\
(track: 'positive', 'play')
(replace: ?main)[_main]\
(set: _main to it + " The Artist takes a valuable moment to refocus.")\
(set: $shadow to it -0.5)(if: $shadow <0)[(set: $shadow to 0)]\
(hide: ?1)(show: ?2)\
(replace: ?mainNew)[\
The Artist closes their eyes. A few deep breaths later, they open them and focus on the light, the affirmation from earlier shining in their eyes. They return their gaze to their reflection, also caught in the glass.
]\
]\
]\
]\
]<light|\
[\
(link: "Focus on the _shadowChoice")[\
(track: 'negative', 'play')
{(hide: ?light)
<!--week 1--!>
(set: _dayTalk to $shadowTalk's $day)
(if: _week is 1)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
(else:)[
(if: $shadowProcessPerWeek is 0)[
(set: $shadowProcessPerWeek to 1)
(if: $sequenceProcess < _threshold)[
(set: _shKey to (cond:
_week is 2, "shame2",
_week is 3, "shame3",
_week is 4, "shame4",
true, "shame5"
))
(set: _chosen to $shadowTalk's _shKey)
]
(else:)[
(set: _chosen to _dayTalk's "l̲delta")
]
]
(else:)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
]
<!-- /* Unpack the chosen triple */ --!>\
(set: _reflection to _chosen's 1st)
(set: _cw to _chosen's 2nd)
(set: _caption to _chosen's 3rd)
<!-- /* Shadow tick */ --!>\
(set: $shadow to it +2)
<!-- /* Set the sound */ --!>\
(if: _caption contains "mechanical typing — skips, resumes")[(click: _caption)[(track: 'typing', 'loop', 'true')(track: 'typing', 'play')]]
(if: _caption contains "very low bass hum — rumbling")[(click: _caption)[(track: 'deephum', 'loop', 'true')(track: 'deephum', 'play')]]
(if: _caption contains "hiss of air escaping tire")[(click: _caption)[(track: 'airrelease', 'loop', 'true')(track: 'airrelease', 'play')]]
(if: _caption contains "feedback hum — low and percussive")[(click: _caption)[(track: 'feedback', 'loop', 'true')(track: 'feedback', 'play')]]
(if: _caption contains "clock ticks — tempo builds")[(click: _caption)[(track: 'ticking', 'loop', 'true')(track: 'ticking', 'play')]]
(if: _caption contains "refrigerator rattle from another room")[(click: _caption)[(track: 'refrigerator', 'loop', 'true')(track: 'refrigerator', 'play')]]
(if: _caption contains "heartbeat — racing tempo")[(click: _caption)[(track: 'heartbeat', 'loop', 'true')(track: 'heartbeat', 'play')]]
(if: _caption contains "muffled voices — overlapping")[(click: _caption)[(track: 'muffled', 'loop', 'true')(track: 'muffled', 'play')]]
(if: _caption contains "two tones — slightly out of tune")[(click: _caption)[(track: 'tones', 'loop', 'true')(track: 'tones', 'play')]]
}\
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist listens to the _shadowChoice...
(bg:white)+(text-color:black)[(print:_caption)]
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]<mirror|
The Artist looks at their reflection. The other Artist gives them a disgusted look, but in so doing shows the strain on their shared face. They are both tired, and they are both ready to be free.]\
(set: _main to it + " The Artist listens to the sounds of _cw, it's negative words at odds with their will to escape.")\
(replace:?choices)[\
[\
(link: "Struggle and fight")[\
(track: 'positive', 'play')(track: 'egarim', 'fadeout', 3)(track: 'mirage', 'fadein', 3)
(replace: ?main)[_main]\
(set: $shadow to it -1)\
(hide: ?giveUp)\
(replace: ?mainNew)[
The Artist places a hand on the glass and it sinks through. The other Artist follows reluctantly, drawn in inch by inch as the Artist presses forward. As their neck reaches the glass, they strain and close their eyes, both reflections forced to grimace as their faces touch the glass...
The Artist stares at themselves in the mirror. A bead of sweat runs down their temple and they swat it away with annoyance. They spin and return to their drafting table.]
(display: "sfxStop")\
(replace:?choices)[(set: $shadowLand to 0)(display:"leaveMirror")]\
]
]<fight|\
[\
(link: "Give up")[\
(track: 'negative', 'play')
(replace: ?main)[_main]\
(set: $shadow to it +2)\
(set: $energy to it -1)(if: $energy <1)[(set: $energy to 1)]\
(hide: ?fight)\
(replace: ?mainNew)[
The Artist waits and the moment passes. The other Artist shrugs and then turns away from the mirror.]
(replace:?choices)[(link: "Continue")[(set: $shadowLand to 1)(display: "sfxStop")(go-to: $last)]]\
]\
]<giveUp|
]\
]\
]<shadow|\
]\
<!--TIER 4-------------------------------------------------------------------------------------------------------------------!>\
(else:)[\
[\
(link: "Focus on the _lightChoice")[\
(track: 'positive', 'play')(track: 'egarim', 'fadeout', 2)(track: 'mirage', 'fadein', 2)\
{\
(hide: ?shadow)
<!-- /* Unpack the chosen triple */ --!>\
(set: _reflection to $shadowTalk's $day's "light"'s 1st)
(set: _cw to $shadowTalk's $day's "light"'s 2nd)
(set: _notice to $shadowTalk's $day's "light"'s 3rd)
(set: $mirrorEngage to 3)
(set:
$shadow to it -0.5
)\
(if: $shadow <1)[\
(set: $shadow to 1)
]\
}\
(replace: ?mainNew)[\
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist gives their full attention to the _lightChoice...
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]
(print: _notice)
They look up and study their reflection. The glass appears thinner than before, as if it was no longer there, and in testing, the Artist finds that they pass through easily, their reflection pulled towards them. They blink and find themself on the correct side, their shoulders a little straighter than before. They nod and their reflection nods back, and they return to their drafting table in a few confident strides.]\
(replace:?choices)[(set: $shadowLand to 0)(display:"leaveMirror")]\
]\
]<light|\
[\
(link: "Focus on the_shadowChoice")[\
(track: 'negative', 'play')\
{
(hide: ?light)
<!--week 1--!>
(set: _dayTalk to $shadowTalk's $day)
(if: _week is 1)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
(else:)[
(if: $shadowProcessPerWeek is 0)[
(set: $shadowProcessPerWeek to 1)
(if: $sequenceProcess < _threshold)[
(set: _shKey to (cond:
_week is 2, "shame2",
_week is 3, "shame3",
_week is 4, "shame4",
true, "shame5"
))
(set: _chosen to $shadowTalk's _shKey)
]
(else:)[
(set: _chosen to _dayTalk's "l̲delta")
]
]
(else:)[
(if: $mirrorEngage > 1)[
(set: _key to (either: "weather1","weather2"))
(set: _chosen to _dayTalk's _key)
]
(else:)[
(set: _chosen to _dayTalk's "delta")
]
]
]
<!-- /* Unpack the chosen triple */ --!>\
(set:
_reflection to _chosen's 1st,
_cw to _chosen's 2nd,
_caption to _chosen's 3rd,
$shadow to it +2)
<!-- /* Set the sound */ --!>\
(if: _caption contains "mechanical typing — skips, resumes")[(click: _caption)[(track: 'typing', 'loop', 'true')(track: 'typing', 'play')]]
(if: _caption contains "very low bass hum — rumbling")[(click: _caption)[(track: 'deephum', 'loop', 'true')(track: 'deephum', 'play')]]
(if: _caption contains "hiss of air escaping tire")[(click: _caption)[(track: 'airrelease', 'loop', 'true')(track: 'airrelease', 'play')]]
(if: _caption contains "feedback hum — low and percussive")[(click: _caption)[(track: 'feedback', 'loop', 'true')(track: 'feedback', 'play')]]
(if: _caption contains "clock ticks — tempo builds")[(click: _caption)[(track: 'ticking', 'loop', 'true')(track: 'ticking', 'play')]]
(if: _caption contains "refrigerator rattle from another room")[(click: _caption)[(track: 'refrigerator', 'loop', 'true')(track: 'refrigerator', 'play')]]
(if: _caption contains "heartbeat — racing tempo")[(click: _caption)[(track: 'heartbeat', 'loop', 'true')(track: 'heartbeat', 'play')]]
(if: _caption contains "muffled voices — overlapping")[(click: _caption)[(track: 'muffled', 'loop', 'true')(track: 'muffled', 'play')]]
(if: _caption contains "two tones — slightly out of tune")[(click: _caption)[(track: 'tones', 'loop', 'true')(track: 'tones', 'play')]]}\
(replace: ?mainNew)[
<span aria-hidden="true" title="new text" style="color:#9b2721;">⊕ </span> The Artist strains to listen to the _shadowChoice...
(bg:white)+(text-color:black)[(print:_caption)]
A voice whispers [`(`a (print:_cw)`)`]<cw|
(align:"=><=")[(print:_reflection)]<mirror|
The Artist looks at their reflection and laughs; the other Artist joins in. The whispered words are absurd and too general ito wound. But as the laughter fades, the barrier remains, thin yet unbroken. They study its thickness with scrutiny but are pulled away as the other Artist steps back and returns to their drafting table.
]\
(replace:?choices)[(link: "Continue")[(set: $shadowLand to 1)(display: "sfxStop")(go-to: $last)]\
]\
]\
]<shadow|\
]\
]<choices|</div>\
{=
(enchant: ?cw, (text-style: "italic"))
(enchant: ?captions, (bg:white)+(text-colour: black))(link: "Look away from mirror")[(display: "sfxStop")(track: 'mirage', 'fadeout',5)(track: 'back', 'play')\
(if: $mirrorEngage is 3)[\
(if: $shadow >15)[\
(set: $delta to "The Artist reviews at their reflection, but the study becomes a stare. [Caught up in negative thoughts, they engage in an internal battle of dark versus light. They eventually get free.](otherside| Minutes pass before they turn away, changed—and following a hard struggle—for the better.
")]\
(else-if: $shadow >10)[\
(set: $delta to "The Artist inspects their reflection in the studio mirror. [Distracted by negative thoughts, they are briefly distracted, but they eventually get free.](otherside| When they return to the drafting table, their movements are light, their focus keen.
")]\
(else-if: $shadow >5)[\
(set: $delta to "The Artist lingers before the mirror, then turns away. The shadows beneath their eyes are a little less deep than before.
")]\
(else:)[\
(set: $delta to "The Artist studies their reflection, and the light in the room seems brighter when they look away.
")]]\
(else:)[
(if: $shadow >15)[\
(set: $delta to "The Artist (if: $mirrorEngage is 2)[again ]peeks at their reflection, but the glance becomes a stare. Minutes pass before they turn away, changed—and not for the better.
")]\
(else-if: $shadow >10)[\
(set: $delta to "The Artist (if: $mirrorEngage is 2)[again ]inspects their reflection in the studio mirror. When they return to the drafting table, their movements are slow, their focus scattered.
")]\
(else-if: $shadow >5)[\
(set: $delta to "The Artist (if: $mirrorEngage is 2)[again ]lingers before the mirror, then turns away. The shadows beneath their eyes are deeper than before.
")]\
(else:)[\
(set: $delta to "The Artist (if: $mirrorEngage is 2)[again ]studies their reflection for too long, and the light in the room seems dimmer when they look away.
")]]\
(go-to: $last)\
]
{=
(if: (history:)'s last is "The otherside")[(show: ?otherside)]don't wanna loose it - original Mirror
<div id="main" role="document" aria-live="polite" aria-atomic="false">\
<!-- TRAPPED IN THE MIRROR --!>\
(if: $shadowLand is 1)[]
<!-- IN THE REAL --!>\
(else:)[\
{(set: $mirrorEngage to it + 1)}\
The Artist steps up to the large mirror installed near their writing desk. (if: visits is 1)[The light has been set-up to cast a dramatic shadow on objects reflected here. Although the Artist does not speak, they tilt their head to the side as if listening to a distant voice. Then, their attention is pulled to twinkle of light in the reflection of the studio behind them...
They press closer to their reflection, studying the reflection.](else:)[Again, the Artist feels a pull towards the glass, a hand placed against its surface as they examine their reflection. Their eyes dart searchingly from their face, to the spaces behind them... ]
{_(if: $day <8)[\
(if: $weatherByDay's $day >1)[\
(set: _weatherTalk to (either: $shadowTalk's $day's "weather1", $shadowTalk's $day's "weather2"))\
(print: _weatherTalk)]
(else:)[(print: $shadowTalk's $day's "delta")]
]
<!--all other weeks--!>
(else:)[\
<!-- Check $sequenceProcess --!>\
(if: $shadowProcessPerWeek is 0)[\
<!-- has it been served this week? no - carry on --!>\
(set: $shadowProcessPerWeek to 1)\
(set: $shadowProcess to it +1)\
(if: $day >= 8 and <=14)[
<!--WEEK TWO - how much did you get done so far, huh??? --!>\
(if: $sequenceProcess <14)[
<!-- \\\\\\\\\ oh, not that much - wow...--!>
Unique week 2 Shame message.
]\
(else:)[\
<!--\\\\\\\\\ oh, ok - you got a bunch done - how else can we make you feel bad?--!>
(print: $shadowTalk's $day's "delta")
<!--\\\\\\\\\ this is from the $shadowTalk 31 day datamap--!>
]\
]\
(else-if: $day >= 15 and <=21)[\
<!--WEEK THREE - how much did you get done so far, huh??? --!>\
(if: $sequenceProcess <28)[
<!--\\\\\\\\\ oh, not that much - wow...--!>
Unique week 3 Shame message. (if: $shadowProcess >1)[Extra shame for being behind 2 weeks in a row.]
]\
(else:)[\
<!--\\\\\\\\\ oh, ok - you got a bunch done - how else can we make you feel bad?--!>
(print: $shadowTalk's $day's "delta")
<!--\\\\\\\\\ this is from the $shadowTalk 31 day datamap--!>
]\
]\
(else-if: $day >= 22 and <=28)[\
<!--WEEK FOUR - how much did you get done so far, huh??? --!>\
(if: $sequenceProcess <39)[
<!--\\\\\\\\\ oh, not that much - wow...--!>
Unique week 4 Shame message. (if: $shadowProcess >2)[Extra shame for being behind 3 weeks in a row.](else-if: $shadowProcess >1)[Soft shame for being behind 2/3 weeks.]
]\
(else:)[\
<!--\\\\\\\\\ oh, ok - you got a bunch done - how else can we make you feel bad?--!>
(print: $shadowTalk's $day's "delta")
<!--\\\\\\\\\ this is from the $shadowTalk 31 day datamap--!>
]\
]\
(else:)[\
<!--WEEK FIVE - how much did you get done so far, huh??? --!>\
(if: $sequenceProcess <46)[
<!--\\\\\\\\\ oh, not that much - wow...--!>
Unique week 5 Shame message. (if: $shadowProcess >3)[Extra shame for being behind 4 weeks in a row.](else-if: $shadowProcess >2)[Soft shame for being behind 3/4 weeks.](else-if: $shadowProcess >1)[Soft shame for being behind 2/4 weeks.]
]\
(else:)[\
<!--\\\\\\\\\ oh, ok - you got a bunch done - how else can we make you feel bad?--!>
(print: $shadowTalk's $day's "delta")
<!--\\\\\\\\\ this is from the $shadowTalk 31 day datamap--!>
]\
]\
]\
<!-- It's not week 1, and you've already served your progress shadow talk --!>\
(else-if: $weatherByDay's $day >1)[(print: (either: $shadowTalk's $day's "weather1", $shadowTalk's $day's "weather2"))]\
(else:)[(print: $shadowTalk's $day's "delta")]\
]_}\
<!REVAMP!>
(if: $shadow >15)[\
The Artist swallows heavily, their eyebrows drawn together causing the lines on their forehead to bunch and cluster in puffy lines. They turn away slowly, shuffling back to their drafting table.]\
(else-if: $shadow >10)[\
The Artist sighs, shaking their head. They drop their gaze but remain facing the mirror for a moment longer. Head still bowed, they step back and return to their drafting table.]\
(else-if: $shadow >5)[\
The Artist frowns, their mouth pursed in sour response. They spin away from the mirror and step back heavily to face their drafting table.]\
(else:)[\
The Artist blinks and then stares directly into their reflection's eyes. They keep contact as they step back from the mirror, only to break the stare as they return to their drafting table.]\
</div>\
<div id="choices" aria-live="polite">\
<hr style="border: 0; border-bottom:1px dotted #6f84da;">\
(link: "Look away from mirror")[(set: $shadow to 1,
$energy to $energy - (random:1,3),
)(if: $energy <0)[(set: $energy to 0)\
(if: $shadow >15)[\
(set: $delta to "The Artist peeks at their reflection, but the glance becomes a stare. Minutes pass before they turn away, changed—and not for the better. ")]\
(else-if: $shadow >10)[\
(set: $delta to "The Artist inspects their reflection in the studio mirror. When they return to the drafting table, their movements are slow, their focus scattered. ")]\
(else-if: $shadow >5)[\
(set: $delta to "The Artist lingers before the mirror, then turns away. The shadows beneath their eyes are deeper than before. ")]\
(else:)[\
(set: $delta to "The Artist studies their reflection for too long, and the light in the room seems dimmer when they look away. ")]\
(go-to: $last)]\
]
</div>[<hr style="border: 0; border-top: 3px double #9b2721;" />]\
|=
[Shadow Work]<Left|\
=|
(align: "===>")[v2.0]<Right|\
|=|
[<hr style="border: 0; border-top: 3px double #9b2721;" />]\
[Thank you for playing Shadow Work.
[[<img src="https://kdot.ca/images/shadow/shadowWork-title-KaySlater-2025.png" alt="Reaching through the glass, a figure and their flipped reflection grab each other by the chin, bookended by laughing and grimacing shadowy copies." aria-label="Click for longer image description" width="100%" />|Title image description]]
This game was developed in October 2025 during Slater's ninth annual residency series.
Note: The game uses javascript to incorporate audio cues and link focus for screen readers but can be played without. The game's main character is a sighted, middle-aged ambulatory, white Artist living in Vancouver. Other content warnings and context can be found in the links below. Enjoy!]
<hr />\
<!--[[introduction]]--!>\
(bg: white)[(link: "New Game")[(track: 'menu', 'fadeout', 3)(display: "cleanStart")(go-to: "introduction")]]
(bg: white)[(link: "New Game - Quick Start (no intro)")[(track: 'menu', 'fadeout', 3)(display: "cleanStart")(go-to: "Quick Start - Introduction")]]
(if: $last is not "")[(link: "Return to Game")[(set: $delta to "")(track: 'menu', 'fadeout', 3)(track: 'back', 'play')(go-to: $last)]
]\
<hr />\
<!--[[Summary]]--!>\
(link: "Summary")[(go-to: "Summary")]
<!--[[Content Warnings]]--!>\
(link: "Content warnings")[(go-to: "Content Warnings")]
<!--[[Title image description]]--!>\
(link: "Expanded visual description of title image")[(go-to: "Title image description")]
<!--[[Creation diary and Log]]--!>\
(link: "Creation diary and log")[(go-to: "Creation diary and Log")]
<!--[[Credits]]--!>\
(link: "Credits")[(go-to: "Credits")]
<hr style="border: 0; border-top: 1px dotted #9b2721;"/>\
(link-repeat: "Play Haunted Island - FLEET Oct 2024")[(open-url:"https://kdot.ca/haunted-island/")]
(link-repeat: "Play The Cycling Winds - FLEET February 2025")[(open-url:"https://kdot.ca/cycling-winds/")]
<hr style="border: 0; border-top: 3px double #9b2721;" />{
(set: _week to 1)
(if: $day > 28)[(set: _week to 5)]
(else-if: $day > 21)[(set: _week to 4)]
(else-if: $day > 14)[(set: _week to 3)]
(else-if: $day > 7)[(set: _week to 2)]
(set:
_thresholds to (a: 0, 14, 28, 39, 46),
_threshold to _thresholds's _week,
_chosen to (a:),
_main to "[The Artist is pulled through the otherside.]<mirror|
(if: visits is 1)[The Artist turns and looks back through the quivering glass. Their reflection resolves, but from the decor on the walls and the pile of books on the writing desk before them, it is clear that something is wrong.
Their arm strains as they attempt to raise it back to the glass, but the quivers as the other Artist smirks and subtly shakes their head. The Artist's head moves to echo the gentle shake and the faces show assymetrical expressions. The glass surface smoothes and the other Artist begins to step back from the glass.](else:)[The Artist finds themselves, once again, beyond the reflective surface, no longer in full control.]")}\
<div id="main" role="document" aria-live="polite" aria-atomic="false">[_main]<main|
<span id="main-new" aria-live="polite" aria-atomic="true">[]<mainNew|</span>\
</div>\
<div id="choices" aria-live="polite">\
<hr style="border: 0; border-bottom:1px dotted #907b25;">\
[\
(link: "Attempt to regain control
")[\
{
(hide: ?next)
(set: $shadow to it -1, _dice to (random: 1,20), _diceEx to 0, _diceExN to 0, _diceEn to 0, _diceEnN to 0, _diceFa to 0, _diceFaN to 0, _diceDe to 0, _diceDeN to 0, _dicePr to 0, _dicePrN to 0,)\
(if: $exToday is true)[(set: _diceEx to 1)]
(else-if: $exercise +2 >= $day)[(set: _diceEx to 1)]
(else:)[(set: _diceExN to 1)]
(if:$energy > 5)[(set: _diceEn to 1)]
(else:)[(set: _diceEnN to 1)]
(if: $fatigue < 5)[(set: _diceFa to 1)]
(else:)[(set: _diceFaN to 1)]
(if:$overdriveDebt < 2)[(set: _diceDe to 1)]
(else:)[(set: _diceDe to - 1)]
(if: _threshold < $sequenceProcess's length)[(set: _dicePr to 1)]
(else:)[(set: _dicePr to - 1)]
(set: _positive to _diceEx + _diceEn + _diceFa +_diceDe + _dicePr)(set: _negative to _diceExN + _diceEnN +_diceFaN + _diceDeN + _dicePrN)
(if: $shadow <0)[(set: $shadow to 0)]\
}\
(replace: ?mainNew)[
The Artist fights to escape.
( (print: _dice) (if: _positive >0)[(+ _positive) ](if: _negative >0)[(- _negative)] /20 - ([success) The Artist stands tall and still, their shoulders back, the feet apart. Their reflection mirrors the pose. Staring into each set of eyes, the edges of the mirror fog and darken until the reflected gazes begin to water and strain. They blind in syncronous motion, and the Artist is back on the other side.](success|[fail) - The two images stand still, neither moving, neither following. The Artist's face breaks the reflection with a scowl and the other Artist responds with a grin. The other Artist steps away from the glass and the Artist lurches behind by a few microseconds until they both step beyond the reflection's frame.](fail|\
]\
(if: _dice + _positive + _negative > $shadow)[\
(track: 'splashbreak', 'play')(track: 'egarim', 'stop')(track: 'mirage', 'play')
(show: ?success)\
(set: $mirrorEngage to 3)\
(replace: ?choices)[(display:"leaveMirror")]\
]\
(else:)[\
(track: 'negative', 'play')
(show: ?fail)\
(show: ?next)\
]
]\
[\
[\
(link: "Continue")[\
(track: 'woosh', 'play')
(set: $delta to "[The Artist falls victim to negative thinking and finds themselves trapped. Their reflection takes control.]<otherside|", $shadowLand to 1)\
(go-to: $last)\
]\
]<mirror|\
]<next|\
]<choices|</div>\
{=(enchant: ?title, (text-style: "mirror"))<a href="#letter" class="skip-link" aria-label="Skip to letter from creator">Skip to Letter from the Creator</a><a href="#log" class="skip-link" aria-label="Skip tolog">Skip to Log</a><a href="#prealpha" class="skip-link" aria-label="Skip to project recovery">Skip to Project Recovery</a><a href="#alpha" class="skip-link" aria-label="Skip to closed development">Skip to Closed Development</a><a href="#beta" class="skip-link" aria-label="Skip to Playable Demo Release">Skip to Playable Demo Releases</a><a href="#footer" class="skip-link" aria-label="Skip to Footer">Skip to Footer</a>\
<span id="letter">\
##Letter from Kay
When I started this year’s residency, I told myself I wasn’t going to make another game.
I wanted to be in the studio again—just making things, for myself, without pressure.
But when October came, I was tired. I felt slow, foggy, and guilty for not doing more.
Every small task felt like a push uphill, through the mud. And instead of resting, I kept forcing myself forward, doing half-hearted experiments just to feel as if I was “accomplishing” something. And sometimes that's important. I know that when my mood shifts below zero, sometimes just brushing my teeth is the most I can do and I have learned to take heart from that.
But I also wouldn’t let myself wander. I didn’t give myself permission to go off course, even though I knew from experience that detours can be where great ideas live. Early on, it became clear that I wasn’t actually interested in theatre or performance the way I thought I was. I love play, and I love puppets, but not as a director. Not as a storyteller. What I wanted was to make scenes with light. To draw with it. To study how small gestures and materials could shape what we see.
When I finally allowed myself to make //Shadow Work//, I stopped fighting it. I started writing about the things I was feeling; my frustration, the fatigue, and the guilt. I used **the Artist**, this barely abstracted version of myself, to move through it. And somewhere in the middle of the month, I realized I was having fun again.
After making more than a dozen games in the past five years, I can honestly say that I love this medium. I love how games let me experiment with ideas about process, care, and value. And I love that I can build spaces where players are invited to reflect within the privacy of their own digital space and not necessarily in public in formal exhibition spaces that carry their own pressure to perform or react.
This game, like my previous residency games, explores intangible antagonists and challenging currencies. In //The Haunted Island// (2024), the player is haunted by a spirit but not a malicious one. In fact, nothing in the game compels you to stay except for the desire to explore and help the ghost. But the game doesn't solve anything, and the antagonist is just one of many ghosts who are struggling to put sensory experiences into words. In //The Cycling Winds// (2025), the antagonist is the wind. And the wind is neither sentient nor malicious, and yet it is so easy to personify and blame when we struggle because of it. The currency is generosity and it explores debt not as an opposite to greed but a factor in it. That we do not accrue generosity by saving or hoarding, but that we also do not practise generosity when we can't be generous with ourselves.
For //Shadow Work//, the intangible antagonist is mental illness but it manifests as a twisted or incorrect reflection. It's not groundbreaking or unique, but the more I think about it, I really do resonate with the imagery of looking into a mirror and seeing a version of myself. And until the reflection reaches out and grabs me, I don't realize that it's somehow flipped and is not accurately reflecting who I am or what I am doing. For the currency, the player collects shadow, but they do it both actively and as a side effect of the game’s second antagonist; Time. Regardless of what the player gets done, even if fatigue or shadow (negative thoughts) is kept low, there is only so much time, and the player character has a list of actions to complete. It doesn't matter that the Artist (and we) appreciate and value process, we are still under pressure of the third, ubiquitous villain, capitalism. If we're not producing all the time, we are not valued. This is the lie that the third villain is constantly whispering to our shadow selves, and we can't escape it. It requires constant effort. And that is exhausting.
While it was a departure for me to insert myself as a player character in this game, all of my games are place-based. This was part of why I had originally decided not to develop a game this October, since I was back in my own studio this year. I didn't think there was a story to be told here, but it turned out to be the perfect setting to ask the question common to all my residencies and public workshops:
"What if the act of trying - with permission to fail - is enough?"
I plan to keep making games. I’ve applied for several offsite residencies next year, which will mark my tenth October spent in self-directed practice. I’m proud of that. I’m proud that I stopped waiting for someone else to tell me it was okay to make space for myself and my art.
There’s joy in this game, even with all its shadows. If you play it and find hope, know that it is real. And if you don’t, if it feels heavy or unfinished, remember: try again. The only permission you need to try is your own.
With love,
Kay
</span>
<hr />
<span id="log">\
##Log
Entries are shown in chronological order (earliest first).
</span>\
<span id="prealpha">\
###Pre-Alpha - Project Recovery
* October 14 2025 - Project recovery and planning. After struggling through the first two weeks and not feeling as if I was making any progress, I have taken my notes so far and decided to try to create another game, building on the series that I had done in previous residencies, and to embrace the struggles of fatigue and self-worth as content for the month.</span>
<span id="alpha">
###Alpha - Closed Development (Residency)
* <strong>Version 0.1.0-alpha </strong> - October 15 2025 - System initialization: Layout and prototype.
** I planned the Core Mechanics Framework, focusing on Time, Fatigue, Process, and Willpower. Each would constrain the player and give a sense of urgency and hopefully still convey the goals of my practice to celebrate and elevate process, even (or perhaps most importantly) when faced with scarcity. Variables designed and a daily passage series, day 1 - day 31 is created.
* <strong>Version 0.2.0 </strong> - October 16 2025 - Data structure creation.
** Developed a framework for checklist mechanic based on the real checklist of experiments I am using in studio. The Daily Task list is served sequentially each day.
* <strong>Version 0.3.0 </strong> - October 17 2025 - Progression system: Sequence Choice.
** Rather than have each day only have one checklist item served, players can access as many of them as they have energy for. Implemented an "experiment picker" and big data map.
* <strong>Version 0.4.0 </strong> - October 19 2025 - Resource system: Daily Task.
** Because players can now go through checklist faster than the days progress, a daily task is available, but doesn't require energy. Implemented an "announcement" system for screen readers so that when text is updated, before the DOM order is lengthened, the player is informed and can skip through to updates. Minor content updates, daily task data map development. Main and new text updates are dynamically updated as players choose different things.
* <strong>Version 0.5.0</strong> - October 21 2025 - New Passage: The Mirror
** Passage "The Mirror" is now available. Captions associated with the shadow talk are styled like audio captions. Light talk are physical descriptions allowing player character to feel the positive effects of the affirmations.
** Placeholder text loaded throughout.
* October 20 2025 - Ethics: Shadow talk, Narrative balance: Light talk
** Building out the text, now delivered through the mirror, required me to write a bunch of statements that my brain will spout as I work, and I started to get worried that I was going to trigger or harm audiences. I was also worried that the statements would seem punitive rather than a function of wellness and societal pressure (especially those of capitalism and meritocracy). After drafting the negative or shadow talk statements, I learned that, in psychological horror games, that it is important to frame that the statement is not true of intention. Even though I am not writing psychological horror, negative thoughts can have horrific effects.
** While the mirror creates abstraction from the character, shadow talk is delivered with sound captions and sound effects, as well as labelling - echoing CBT (cognitive behavioural therapy and medication) tactics of naming thinking - to further identify that thoughts are not necessarily true and that they are harmful. As such, the mirror interaction is gated to limit if the player chooses negative thoughts or actions. I received lovely feedback from my partner, who suggested I imagine that I was extracting the thoughts from my mind as I wrote (advice he had received when studying writing) so as to help me not be weighed down as I composed.
** I also read that counterbalance is also my ethical responsibility, showing that recovery or hope is possible. As anyone with mood or psychological disorder (or challenges) knows, even when we do all the right things, there are still setbacks and a relapse is always looming. I don't need to reinforce that. But it's the hope piece that is so important. I added light talk content for the mirror to this purpose and added another positive currency delivery system.
* Version 0.5.1 - October 22 2025 - Variable management.
** Updates to mirror mechanics with formal hierarchy now connecting shadow count versus mirror visit counts
** Minor behind the scenes updates to create more dynamic, simplified and streamlined code. Bugs squashed.
** Update recent weather conditions
* Version 0.5.2 - October 23 2025 - Minor update
** Daily choice bug fixes (added expand subtask explorations).
** Update recent weather conditions
* October 24 2025 - Minimal content and maximum effort
** I have included a log entry for this day to remind myself that not all days are going to be generative and that is literally part of what I am trying to incorporate in my artwork. Feeling bad about having low productivity days is hard to avoid when we are grinding for our rent, or told we should be. A wiser Artist than me once said that thinking and existing are part of an Artist's process. I know this to be true, but knowing the importance of and practising rest are two different things.
* Version 0.5.3 - October 25 2025 - Major content update
** Intros for each day passage uploaded.
** Daily Talk content uploaded.
** Weather updates, shadow talk updates
* Version 0.5.4 - October 26 2025 - Minor update
** Added styles to Mirror and The Otherside (able to escape)
** Day 26 intro uploaded
** Shadow talk and weather content updated
** Weather updates, shadow talk updates
* <strong>Version 0.6.0</strong> - October 27 2025 - Title page image</b>
** I wanted to draw today, and so I did. Actually, I wanted to draw yesterday but I kept mentally slapping my own wrist for having the desire, as if drawing was a distraction. I wanted to log this challenge. It's a little ridiculous, but it shows how much expectation can get in our own way. I am allowed to explore different ways of making during my residency. However, since I had momentum and a goal of finishing this game, I told myself that drawing was going off track. I am glad I listened, and it was great to draw something for my own personal project after a long break.
** Day 27 intro uploaded
* Version 0.6.1 - October 28 2025 - Minor content updates
** Weather and daily intro updates
** Minor edit to title-page image (added red tones)
* Version 0.6.2- October 30 2025 - Minor content updates
** Tasklist experiment results 1A-4C uploaded
** Weather and daily intro updates
** Dodo passage linking correctly
** Sound effects for page navigation uploaded and tested
* Version 0.6.3 - October 31 2025 - Minor content updates
** I got my COVID and flu shot yesterday and woof what a night. I am slow to do updates and I can feel the impulse to panic. The content for the task lists is not complete, but the game is playing OK. After a rough morning, and with forthcoming plans to visit my parents for Halloween, I have made some minor updates, but I am going to see what I can do before midnight. If anything, I am logging this to show the benefits of building this game, practising labelling when I get in my own way, and to be pretty darn proud of what I have gotten accomplished.
** Task list experiment results 5A-6E
</span>
<span id="beta">\
###Beta - Playable Demo Release
* <strong>Version 1.0-beta</strong> - November 1 2025 - Playable release
** Published on my website, with a note that I'm still making content updates.
** Task list experiment results 7A-13A
** Long visual description of title image
** Credits page updated
** Creative Commons License applied
** Content warnings updated
* Version 1.0.1-beta - November 2 2025 - Content updates
** Task list experiment results 14A-19A
* Version 1.0.2-beta - November 3 2025 - Minor updates
** Fixes when completing all tasks prior to day 31
** Added intros to day 27-31
** Bug fixes and spacing error cleanup
* Version 1.0.3-beta - November 4 2025 - Minor updates
** Fixed when all sequence tasks (checklist) are served before day 31 so that extend tasks can still be accessed (and provide daily task marker to maintain shadow)
* Version 1.0.4-beta - November 5 2025 - Minor updates
** More spacing fixes, elimination of redundant variables
* Version 1.0.5-beta - November 7 2025 - Minor updates
** Audio effect updates
* Version 1.0.6-beta - November 8 2025 - Minor updates
** Audio effect updates and content warning
</span>
<span id="beta">\
###Full Release
* <strong>Version 2.0</strong> - November 10 2025 - Playable release
** It's gotta be finished sometime! Proofread on most content complete, and all game stopping bugs squashed.
** Sounds are updated and compressed. Looping now fixed.
</span>
<span id="footer">[(link: "Return to Menu")[(track: 'back', 'play')(go-to: "Shadow Work")]]</span>{(track: 'menu', 'fadeout', 2)
(track: 'mirage', 'fadein', 2)}\
[<img src="https://kdot.ca/images/shadow/shadowWork-title-KaySlater-2025.png" alt=""width="100%" />]
In an Artist’s studio, a white adult stands facing a mirror, their back to the viewer. Their reflection is flipped, not symmetrical, as if rotated instead of mirrored. Both figures reach through the glass and grasp each other by the chin.
Around them, faint shadowy copies appear inside the mirror. One tilts its head back in laughter; another turns aside with a grimace, palm raised as if blocking light. These translucent doubles echo the central figures like theatre masks of comedy and tragedy.
The person and their reflection wear a red T-shirt, a black apron with a large pocket, and blue jeans. Their hair is shoulder-length and braided, with bright white strands woven through. The shadowy copies behind the glass are unclothed from the shoulders up, their long braids drifting outward beyond the mirror’s edge.
Behind the figures, a pegboard of hand tools hangs on the wall beneath a single shop light. To one side, a metal shelf holds paper and art supplies; to the other, a large window reveals a pale tree. The image primarily uses complementary red and cyan tones which creates a strong contrast.
In the lower left corner, blue text reads Shadow Work, the word Work flattened like a ground shadow. Above the mirror’s corner, the Artist’s name, Kay Slater, appears in bright cyan. The composition is horizontal, wider than it is tall.
<span id="footerCredits">[(link: "Return to Menu")[(track: 'back', 'play'){(track: 'mirage', 'fadeout', 2)}(go-to: "Shadow Work")]]</span>(forget-visits: -1)
(display: "startup"){<!--SFX Check--!>\
(if: (track: 'typing', 'isplaying'))[(track: 'typing', 'stop')]
(if: (track: 'deephum', 'isplaying'))[(track: 'deephum', 'stop')]
(if: (track: 'airrelease', 'isplaying'))[(track: 'airrelease', 'stop')]
(if: (track: 'feedback', 'isplaying'))[(track: 'feedback', 'stop')]
(if: (track: 'ticking', 'isplaying'))[(track: 'ticking', 'stop')]
(if: (track: 'refrigerator', 'isplaying'))[(track: 'refrigerator', 'stop')]
(if: (track: 'heartbeat', 'isplaying'))[(track: 'heartbeat', 'stop')]
(if: (track: 'muffled', 'isplaying'))[(track: 'muffled', 'stop')]
(if: (track: 'tones', 'isplaying'))[(track: 'tones', 'stop')]}