<p class="portfolio-colophon">This is a free portfolio piece—original prose, structure, and UI—offered as a love letter to fairy tales in the commons and to the <i>Fables</i> line of stories that shaped its tone. It is not official, endorsed, or affiliated with DC Comics, Vertigo, Telltale, or any rights holder; no infringement is intended.</p><<set $player to {
name: "Prince Charming",
influence: 42,
scandal: 18,
glamour: 68,
stress: 22,
gold: 55
}>>
<<set $skills to {
charm: 2,
grit: 2,
insight: 2
}>>
<<set $rel to {
bigby: 12,
snow: 14,
beast: 10,
briar: 6,
flycatcher: 8
}>>
<<set $quests to {
wolfCase: "open",
crookedLane: "open",
ledgerAudit: "open"
}>>
<<set $flags to {
openedWithBigby: false,
bigbyHistoryTalked: false,
bigbySnowTalked: false,
bigbyDealTalked: false,
bigbyBarRevisited: false,
bigbyAlleyRevisited: false,
bigbySynthDone: false,
bigbySoftRunDone: false,
bigbyHardRunDone: false,
bigbyPhoneDone: false,
openedWithBeast: false,
beastOpeningDone: false,
beastCrookedHad: false,
beastBeautyHad: false,
beastDealHad: false,
briarTenantLead: false,
tenantHallwayDone: false,
tenantFollowThroughLost: false,
snowBeastSynthDone: false,
beastDealPromiseKept: false,
openedWithSnow: false,
snowPersonalTalked: false,
snowWorkMapped: false,
snowTeaTaken: false,
snowSynthesisDone: false,
snowLastLedgerChoice: "",
bigbyCoffeeTaken: false,
beastAfterOrderSeen: false,
beastAfterCouncilSeen: false,
beastAfterHomeSeen: false,
snowResolvedKidsSeen: false,
snowResolvedTrustSeen: false,
snowResolvedSmallSeen: false,
openedWithBriar: false,
briarRumorHeard: false,
visitedMirrorParlor: false,
parlorBreathTaken: false,
metPhotographer: false,
hasBlackmailLedger: false,
hasPhotoNegative: false,
publicSpeechGiven: false,
charityGalabooked: false,
skillDraftStarted: false,
skillsAllocated: false,
confessedDebt: false,
forgedReceipt: false,
exposedBroker: false,
finaleBigbySeen: false,
finaleSnowSeen: false,
finaleBeastSeen: false,
finaleBriarSeen: false,
finaleReporterSeen: false,
finaleDebtorSeen: false,
playerGuideUnlocked: false
}>>
<<set $resources to {
favors: 2,
dirt: 0,
promises: 1,
goodwill: 1
}>>
<<set $clocks to {
wolfCase: 0,
housing: 0,
ledger: 0
}>>
<<set $city to {
hour: "Late Morning",
rumorHeat: 18,
unrest: 24
}>>
<<set $meta to {
scenes: 0,
completedArcs: 0,
dayDone: false
}>>
<<set $identity to {
reformer: 0,
operator: 0,
penitent: 0,
opportunist: 0,
romantic: 0,
scar: 0
}>>
<<set $pressure to {
wolfCase: 0,
housing: 0,
ledger: 0,
briar: 0
}>>
<<set $pressureApplied to {
wolfCase: 0,
housing: 0,
ledger: 0,
briar: 0
}>>
<<set $truth to {
public: 0,
private: 0,
spin: 0,
exposed: 0
}>>
<<set $axis to {
integrity: 0,
leverage: 0
}>>
<<set $failures to {
public: 0,
wolfCase: 0,
housing: 0,
ledger: 0
}>>
<<set $debt to {
promiseHeat: 0,
collectors: 0
}>>
<<set $finch to {
heat: 0,
retaliation: 0,
witnessesBought: 0
}>>
<<set $conv to {
bigbyHistory: "",
bigbySnow: "",
bigbyDeal: "",
snowPersonal: "",
snowWork: "",
barApproach: "",
alleyApproach: "",
brokerPrep: "",
beastOpen: "",
beastTactic: "",
ledgerFrame: "",
snowPersonalBeat: "",
snowTeaBeat: "",
snowSynthPitch: "",
snowWorkRevisit: "",
snowBeastSynth: "",
snowChoiceDebriefed: "",
tenantPitch: "",
finaleVow: "",
lastInterlude: ""
}>><<set _housingPressure to setup.applyCrisisPressure("housing")>>\
<<if _housingPressure neq "">>\
<<print _housingPressure>>
<</if>>\
<<if $quests.crookedLane is "resolved">>\
Beast's office is quieter when the worst signatures are done for the week.
The housing file is resolved for now. Beast looks exhausted, but grateful.
<<if $quests.ledgerAudit is "resolved" and not $flags.snowBeastSynthDone>>\
[[Sit the joint session with Snow and Beast.|Snow Beast Synthesis]]
<</if>>\
[[Ask how the order landed.|Beast Aftermath]]
[[Step back into the street.|Fabletown Artery]]
<<else>>\
Beast's office looks staged for a siege where the ammunition is forms, signatures, and who can wait another week.
<<if not $flags.openedWithBeast>>\
The man behind the desk barely fits the chair. Broad chest. Thick forearms. Receding hair that ages him faster than his voice does. Fur shows at his open collar, trimmed close for committee rooms. His hand dwarfs the pen. One knuckle never healed straight.
"Crooked Lane is collapsing," Beast says, voice rough at the edges, soft in the middle, loud enough for a ballroom or a docket without effort. "If I move too slow, families suffer. If I move too fast, families suffer louder. Give me a third option."
The crown vocabulary buys you a hearing in this room. Heat bills still arrive in numbers.
<<set $flags.openedWithBeast to true>>\
<<if not $flags.beastOpeningDone>>\
How do you answer him?
[[Answer as the politician - optics and coalitions.|Beast Open Political]]
[[Answer as the neighbor - names and faces first.|Beast Open Human]]
[[Answer as the prince - duty, shame, crowns.|Beast Open Crown]]
<<else>>\
[[Get to business.|Beast Hub Menu]]
<</if>>\
<<else>>\
Beast has another stack of tenant petitions and another migraine.
[[Get to business.|Beast Hub Menu]]
<</if>>\
<</if>>\You don't flinch. "Third option is a headline we can survive and tenants who can eat. That means donors, signatures, and someone taking the heat when council panics."
Beast's eyes narrow, not angry, measuring. The pupils pin a little, animal instinct checking whether you're prey or partner.
"Cynical in the direction I need, which is the only kind that keeps tenants indoors." He pauses. "I hate agreeing with you. Keep talking before this turns personal. Personal gets people hurt in this building."
<<set $flags.beastOpeningDone to true>>\
<<set $conv.beastOpen to "political">>\
<<run setup.bumpRel("beast", 3)>>\
<<run setup.bumpPlayer("influence", 2, 0, 100)>>\
[[Turn to the housing file.|Beast Hub Menu]]You keep your voice low. "Third option is kids not standing in the cold while we argue procedure."
Beast exhales, a sound halfway to a growl, halfway to prayer. His hands spread on the desk, big enough to cover whole neighborhoods on paper.
"Right answer," he says. "Expensive answer." His eyes shine at the rims and he ignores it. "Say it again tomorrow when council trims my budget and tabloids call me a monster. If you still mean it, we can work. If you don't, you'll hear my other voice."
<<set $flags.beastOpeningDone to true>>\
<<set $conv.beastOpen to "human">>\
<<run setup.bumpRel("beast", 5)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<run setup.bumpIdentity("romantic", 1)>>\
<<run setup.bumpIdentity("reformer", 1)>>\
[[Turn to the housing file.|Beast Hub Menu]]You hate that the word still fits. "Third option is that we don't let the story turn into monsters versus victims on page six. We carry the shame quietly and fund the fix loudly."
The line is easy to say. You still feel the spend when it leaves your mouth.
Beast looks at you a long beat. The weight of what he sees in the mirror when he shaves settles between you.
"Pretty," he says. "Make it true." He leans forward; wood creaks. "Pretty without money is another story that gets people hurt slower. Bring numbers next, Prince. Crowns don't heat apartments."
<<set $flags.beastOpeningDone to true>>\
<<set $conv.beastOpen to "crown">>\
<<run setup.bumpRel("beast", 4)>>\
<<run setup.bumpPlayer("glamour", 2, 0, 100)>>\
[[Turn to the housing file.|Beast Hub Menu]]<<if $quests.crookedLane is "resolved">>\
The housing file is resolved for this week. Beast looks exhausted, but grateful.
[[Step back into the street.|Fabletown Artery]]
<<else>>\
Housing pressure: $clocks.housing / 3
<<if $conv.beastOpen is "human">>\
Beast keeps a tenant letter on the corner of the desk where a prop would go. He treats it like mail.
<<elseif $conv.beastOpen is "political">>\
A draft press line sits in his trash. He pulled it back out twice.
<<elseif $conv.beastOpen is "crown">>\
His hand rests on a seal he hasn't used yet today.
<</if>>\
[[Talk - Crooked Lane on the ground.|Beast Talk Crooked]]
[[Talk - Beauty and the glass you live under.|Beast Talk Beauty]]
[[Talk - what he needs from you, not your title.|Beast Talk Deal]]
<<if $flags.briarTenantLead and not $flags.tenantHallwayDone>>\
[[Tess - Briar's organizer, in the hallway now.|Tenant Meet Beast]]
<</if>>\
<<if not $flags.charityGalabooked>>\
<<choiceRow "Housing Gala" "Book a donor gala at the Slipper." "Influence · Promises Owed">>
<</if>>\
<<if not $flags.publicSpeechGiven>>\
[[Give a public speech and collect signatures.|Housing Petition]]
<</if>>\
[[Cut a backroom zoning deal.|Housing Backroom]]
<<if $clocks.housing gte 2>>\
[[Present Beast a complete package to stop emergency evictions.|Housing Finalize]]
<</if>>\
[[Return to the artery.|Fabletown Artery]]
<</if>>\<<if not $flags.beastCrookedHad>>\
You walk him through it without flourish: cracked risers, doubled families, inspectors calling mold character to dodge a violation write-up. Damp plaster and boiled dinners hang in the air between you.
Beast leans in, forearms on wood, claws trimmed blunt for paperwork. He doesn't flinch at ugly numbers, which is rarer than courage.
"The lane isn't failing because people are messy," he says. "It fails because the city likes stories where monsters deserve drafty rooms."
"Then we stop telling that story."
"Talk's cheap." He plants a palm on the stack, no tap, a claim. "Signatures aren't."
<<set $flags.beastCrookedHad to true>>\
<<run setup.bumpRel("beast", 4)>>\
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
He slides a fresh photo across the desk: buckled plaster, a child's backpack hung on a doorknob where any family would hang one.
"Same war," he says. "Different week."
<<if $conv.beastOpen is "human">>\
You ask who slept there last night. He answers with three first names. No metaphors.
<<elseif $conv.beastOpen is "political">>\
You ask what council will pay for if cameras are pointed the right way. His laugh is tired. "Narrative rent," he says. "Doesn't keep heat on."
<<else>>\
You ask what the crown is supposed to do when the castle's full of forms. He looks at you. "Exactly what you're doing now, badly, then better."
<</if>>\
<<run setup.bumpRel("beast", 2)>>\
<<run setup.advanceScene("quiet")>>\
<</if>>\
[[Return to Beast's desk.|Beast Hub Menu]]<<if not $flags.beastBeautyHad>>\
Beauty isn't in the office. School board meeting, wrong camera angle, predictable headline risk. On Beast's desk, a framed photo sits turned slightly away from visitors: two clasped hands, one unmistakably hers.
"The tabloids want us as tragedy or punchline," Beast says. "They don't want us as a budget line."
He says it flat and protective. His knuckles still whiten.
"If I bring her into this room as a prop," he adds, "I'm the monster they already think I am."
You keep your voice steady. "Then don't. Tell me what you need without putting her name on a placard."
His shoulders drop a fraction. "I need time. I need the lane stable enough that my marriage stops being a weather report."
<<set $flags.beastBeautyHad to true>>\
<<run setup.bumpRel("beast", 5)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
"She asked if you're actually going to show up," Beast says, "or just send roses through aides."
<<if $conv.beastOpen is "crown">>\
You wince, fair hit. "Tell her I'm done borrowing royalty for cover."
<<elseif $conv.beastOpen is "political">>\
You answer with schedule, not sentiment. Beast listens, then says: "She didn't ask for your calendar. She asked if you'd show."
<<else>>\
You tell him to tell her you'll show up ugly and useful. Beast's mouth twitches. He kills it.
<</if>>\
<<run setup.bumpRel("beast", 2)>>\
<<run setup.advanceScene("quiet")>>\
<</if>>\
[[Return to Beast's desk.|Beast Hub Menu]]<<if not $flags.beastDealHad>>\
You set charm aside and leave it there.
"What do you need from me," you ask, "not from my letterhead?"
Beast meets your eyes, steady in the way restraint makes a person steady. "Show up when organizers call. Spend influence where it hurts, not where it photographs. When council turns tenants into villains, use your mouth like you mean it."
"That's a lot of verbs."
"I'm tired of nouns." He almost smiles and drops it. "Verbs cost. Nouns sit on posters."
<<if $flags.briarTenantLead>>\
Briar's napkin is still folded in your pocket, a name, a stair, a time. You don't play it yet. Verbs first.
<</if>>\
<<set $flags.beastDealHad to true>>\
<<run setup.bumpRel("beast", 6)>>\
<<run setup.bumpPlayer("influence", 2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
<<if $flags.tenantHallwayDone>>\
"You brought Tess to my hallway," Beast says. "That's the verb I meant."
<<elseif $flags.tenantFollowThroughLost>>\
"Briar gave you a name," he says quietly. "You didn't bring her before the file closed. Don't make that habit."
<<else>>\
"Still waiting," Beast says, "on half the promises everyone makes in this building."
<<if $conv.beastTactic is "petition">>\
"The steps helped," he allows. "Noise buys hours."
<<elseif $conv.beastTactic is "gala">>\
"The gala bought breathing room. It also bought me guilt I can invoice."
<<elseif $conv.beastTactic is "backroom">>\
"The zoning patch worked. Don't ask me to love how it smells."
<<else>>\
"But you're still here asking. That counts."
<</if>>\
<</if>>\
<<run setup.bumpRel("beast", 2)>>\
<<run setup.advanceScene("quiet")>>\
<</if>>\
[[Return to Beast's desk.|Beast Hub Menu]]<<set $conv.beastTactic to "gala">>\
<<if $conv.beastOpen is "human">>\
Beast looks physically pained by the chandelier sketch, but he nods anyway, because the tenants' letters are heavier than his pride.
<<elseif $conv.beastOpen is "political">>\
He asks what headline you want out of the night. You give him one that sounds like mercy and still reads like power.
<<else>>\
You promise the gala won't be a coronation. Beast snorts. "Around here, everything turns into a coronation when the cameras show up hungry."
<</if>>\
The gala list writes itself: old money, new guilt, cameras, chandeliers.
Beast hates all of it. He signs the booking anyway.
<<set $flags.charityGalabooked to true>>\
<<run setup.bumpPlayer("influence", 15, 0, 100)>>\
<<run setup.bumpPlayer("scandal", 4, 0, 100)>>\
<<run setup.bumpResource("promises", 2, 0, 8)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<run setup.bumpRel("beast", 5)>>\
<<run setup.bumpIdentity("opportunist", 2)>>\
<<run setup.bumpIdentity("scar", 1)>>\
<<run setup.bumpTruth("spin", 2)>>\
<<run setup.bumpAxis("leverage", 1)>>\
<<run setup.clockArc("housing", 1)>>\
<<if $quests.crookedLane is "resolved" and $flags.briarTenantLead and not $flags.tenantHallwayDone>>\
<<set $flags.tenantFollowThroughLost to true>>\
<</if>>\
<<run setup.advanceScene("loud")>>\
[[Return to City Hall.|City Hall Chamber]]<<set $conv.beastTactic to "petition">>\
<<if $conv.beastOpen is "human">>\
Beast watches from the doors, not behind you, beside you, like he's proving he won't hide from the people he's meant to serve.
<<elseif $conv.beastOpen is "political">>\
You trade lines with him on the margin of the page: what plays on the steps, what plays in committee later.
<<else>>\
You let the speech carry shame without turning tenants into props. Beast's nod is small. Real.
<</if>>\
You stand on the City Hall steps and give the speech you wrote to be quoted cleanly: short sentences, tenant names where you could have used slogans, one line about rent that will survive the clip jobs.
The crowd is mixed: tenant mothers, old soldiers, one bored troll, two reporters pretending they are off-duty.
<<set _petitionSkill to setup.skillCheck("charm", 5)>>\
<<skillCheckReceipt _petitionSkill>>\
<<if _petitionSkill.passed>>\
The steps quiet at the right lines. Even people who came to heckle end up signing.
<<run setup.bumpSkill("charm", 1)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<else>>\
The speech still lands, but two quotes get clipped online into something meaner than you intended.
<<run setup.bumpCity("rumorHeat", 3, 0, 100)>>\
<<run setup.recordFailure("housing", 1)>>\
<</if>>\
<<set $flags.publicSpeechGiven to true>>\
<<run setup.bumpPlayer("influence", 10, 0, 100)>>\
<<run setup.bumpResource("goodwill", 2, 0, 6)>>\
<<run setup.bumpCity("unrest", -8, 0, 100)>>\
<<run setup.bumpRel("beast", 8)>>\
<<run setup.bumpIdentity("reformer", 3)>>\
<<run setup.bumpIdentity("scar", 1)>>\
<<run setup.bumpTruth("public", 2)>>\
<<run setup.bumpAxis("integrity", 2)>>\
<<run setup.clockArc("housing", 1)>>\
<<if $quests.crookedLane is "resolved" and $flags.briarTenantLead and not $flags.tenantHallwayDone>>\
<<set $flags.tenantFollowThroughLost to true>>\
<</if>>\
<<run setup.advanceScene("quiet")>>\
[[Return to City Hall.|City Hall Chamber]]<<set $conv.beastTactic to "backroom">>\
<<if $conv.beastOpen is "political">>\
Beast doesn't pretend the whiskey's innocent, but he does pretend the outcome will look accidental to anyone who wasn't in the room.
<<elseif $conv.beastOpen is "human">>\
You make the attorney say the tenant protections out loud twice. Beast mouths the words with you like prayer.
<<else>>\
The seal in your head still wants ceremony. The room offers only initials and leverage.
<</if>>\
You meet a zoning attorney in a room with no windows and very expensive whiskey.
The agreement saves units now and sells air rights later. Nobody is clean. Everybody is relieved.
<<set _backroomSkill to setup.skillCheck("insight", 4)>>\
<<skillCheckReceipt _backroomSkill>>\
<<if _backroomSkill.passed>>\
You catch a buried clause before signatures and force a cleaner carveout for tenant protections.
<<run setup.bumpSkill("insight", 1)>>\
<<run setup.bumpRel("beast", 1)>>\
<<else>>\
You miss a legal hook until after initials dry. The deal holds, but Beast knows it cost more than it should.
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<<run setup.recordFailure("housing", 1)>>\
<</if>>\
<<silently>>\
<<run setup.bumpPlayer("influence", 7, 0, 100)>>\
<<run setup.bumpPlayer("scandal", 8, 0, 100)>>\
<<run setup.bumpResource("promises", 2, 0, 8)>>\
<<run setup.bumpRel("beast", 2)>>\
<<run setup.bumpIdentity("operator", 2)>>\
<<run setup.bumpIdentity("opportunist", 1)>>\
<<run setup.bumpIdentity("scar", 2)>>\
<<run setup.bumpTruth("private", 1)>>\
<<run setup.bumpAxis("leverage", 2)>>\
<<run setup.clockArc("housing", 1)>>\
<<if $quests.crookedLane is "resolved" and $flags.briarTenantLead and not $flags.tenantHallwayDone>>\
<<set $flags.tenantFollowThroughLost to true>>\
<</if>>\
<<run setup.advanceScene("dirty")>>\
<</silently>>\
[[Return to City Hall.|City Hall Chamber]]Beast signs a temporary stabilization order with tenant protections and a review board.
<<if $conv.beastTactic is "gala">>\
Glitter from the gala clings to the margins: money that bought hours, guilt that bought cover. The order pins both down with language boring enough to survive a judge.
<<elseif $conv.beastTactic is "petition">>\
City Hall steps ring in his ears when the pen moves: your voice, theirs. Paper feels thin after that. He signs anyway.
<<elseif $conv.beastTactic is "backroom">>\
The backroom's fingerprints are in the footnotes. The order makes them look almost legal. Fabletown rarely gets more than almost.
<<else>>\
The folder doesn't care how you got here, only that the signatures land.
<</if>>\
<<if $conv.beastOpen is "human">>\
"It buys families a few months with the door shut," Beast says. "Not a fairytale. Months."
<<elseif $conv.beastOpen is "political">>\
"It buys us language we can defend in committee," he says. "Don't waste it on a photo op."
<<elseif $conv.beastOpen is "crown">>\
"It buys breathing room," he says. "In this building mercy arrives with interest attached."
<<else>>\
"It buys time," he says. "Call it mercy if you need the word."
<</if>>\
<<run setup.bumpRel("beast", 10)>>\
<<if $conv.beastTactic is "gala">>\
<<run setup.bumpPlayer("gold", -15, 0, 200)>>\
<</if>>\
<<if $conv.beastTactic is "petition">>\
<<run setup.bumpIdentity("reformer", 1)>>\
<<elseif $conv.beastTactic is "backroom">>\
<<run setup.bumpIdentity("operator", 1)>>\
<<else>>\
<<run setup.bumpIdentity("opportunist", 1)>>\
<</if>>\
<<run setup.bumpIdentity("scar", 1)>>\
<<run setup.clockArc("housing", 1)>>\
<<if $quests.crookedLane is "resolved" and $flags.briarTenantLead and not $flags.tenantHallwayDone>>\
<<set $flags.tenantFollowThroughLost to true>>\
<</if>>\
<<stamp "Stabilization Order" "filed">>
<<scorecard "Crooked Lane · Stabilized" "Tenant protections in ink. Review board seated. Money buys a season - not amnesia.">>
[[Step back into the street.|Fabletown Artery]]The phones are quieter. The worst signatures are done. Beast has the drained look of someone who staunched something and won't discuss blood in the hallway.
What do you ask?
[[The order - is it already fraying.|Beast After Order]]
[[Council - who's carving at it first.|Beast After Council]]
[[Home - does he get to go home tonight.|Beast After Home]]
[[Step outside.|Fabletown Artery]]<<if $conv.beastTactic is "petition">>\
"Fraying's the job," Beast says. "Tenants will test every comma. Landlords will too. We hold the line in hearings, not headlines."
<<elseif $conv.beastTactic is "gala">>\
"The money makes people brave," he says. "Brave people file appeals. We answer them until the money runs out."
<<else>>\
"It'll fray the second someone smells profit," he says. "We documented the patch. That's the shield."
<</if>>\
<<if not $flags.beastAfterOrderSeen>>\
<<set $flags.beastAfterOrderSeen to true>>\
<<run setup.bumpRel("beast", 2)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
The answer has not changed. The commas still need guarding.
<</if>>\
[[Return to Beast.|Beast Aftermath]]"Council wants a villain," Beast says. "If they can't find one, they'll manufacture one out of a budget line."
<<if $conv.beastOpen is "political">>\
You ask who buys the first knife. He names two chairs and a committee date. No romance.
<<else>>\
You ask how he sleeps. He doesn't answer with sleep, only schedules.
<</if>>\
<<if not $flags.beastAfterCouncilSeen>>\
<<set $flags.beastAfterCouncilSeen to true>>\
<<run setup.bumpRel("beast", 1)>>\
<<run setup.bumpPlayer("stress", 1, 0, 100)>>\
<<else>>\
Council is still council. Beast has no kinder translation.
<</if>>\
[[Return to Beast.|Beast Aftermath]]"Home is a door that closes," Beast says. "Tonight it might."
<<if $flags.tenantHallwayDone>>\
"Tess asked if you'd still show up after the cameras left," he adds. "I told her you already did."
<<elseif $flags.beastBeautyHad>>\
He doesn't say her name because he doesn't have to.
<<else>>\
He rubs his jaw. "If you're asking whether Beauty got the best of me - she got the honest version. That's harder."
<</if>>\
<<if not $flags.beastAfterHomeSeen>>\
<<set $flags.beastAfterHomeSeen to true>>\
<<run setup.bumpRel("beast", 3)>>\
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
<<else>>\
He has said what home can bear tonight.
<</if>>\
[[Return to Beast.|Beast Aftermath]]<<if $quests.crookedLane is "resolved">>\
The hallway's already gone quiet. Tess went home with the week's apologies and the next week's fear. You missed the window Briar opened.
<<run setup.bumpPlayer("stress", 3, 0, 100)>>\
[[Return to City Hall.|City Hall Chamber]]
<<else>>\
Tess waits with her coat still on, wool worn at the cuffs, scarf knotted like she learned knots from boats or fights, you're not sure which. She's compact, dark-haired, tired eyes with a rim of red she doesn't bother hiding. Not petitioner posture. Plaintiff posture. When she shifts her weight, you hear a keyring, too many keys for one woman who trusts the system.
Beast meets you in the hall because his office can't hold her anger and his calendar at once. He fills half the corridor just standing there; Tess doesn't give him an inch of deference. Respect, yes. Fear, no.
<<if $conv.tenantPitch is "direct">>\
"You're the one Briar threatened on my behalf," she says to you. "Talk fast."
<<elseif $conv.tenantPitch is "earnest">>\
She watches your hands for a crown ring. She doesn't find one. Her shoulders drop a fraction, not trust, a decision to stop waiting for you to disappoint her on aesthetics.
<<else>>\
"I expected taller," she tells Beast. Then, to you: "Taller theater."
<</if>>\
What's your play?
[[Stand with Tess - make Beast answer her numbers first.|Tess Meet Stand]]
[[Translate - turn heat into language the building can sign.|Tess Meet Bridge]]
[[Public letter - your name on a risky line.|Tess Meet Letter]]
<</if>>\You step to Tess's shoulder, not behind her, not in front.
"Tell him what broke first," you say. "Not metaphor. First leak."
She does. Beast listens like it's a deposition he's willing to lose.
<<set $flags.tenantHallwayDone to true>>\
<<set $flags.beastDealPromiseKept to true>>\
[[Close the hallway.|Tenant Meet Merge]]You lift a hand, traffic cop in a suit. "Heat on one side, policy on the other. We translate or we lose the week."
You name three steps: intake memo, emergency patch, witness list. Tess adds a fourth Beast doesn't like, and he writes it anyway.
<<set $flags.tenantHallwayDone to true>>\
<<set $flags.beastDealPromiseKept to true>>\
[[Close the hallway.|Tenant Meet Merge]]"If we're doing this," you say, "my name rides on the letter, not as hero, as guarantor."
Tess's eyes widen. Beast swears under his breath, then drafts the line so it survives counsel.
<<set $flags.tenantHallwayDone to true>>\
<<set $flags.beastDealPromiseKept to true>>\
<<run setup.bumpPlayer("scandal", 4, 0, 100)>>\
<<run setup.bumpPlayer("influence", 3, 0, 100)>>\
[[Close the hallway.|Tenant Meet Merge]]<<if $conv.tenantPitch is "direct">>\
Tess walks away with a copy folded small, proof, not performance.
<<elseif $conv.tenantPitch is "earnest">>\
She tells you Thursday is still real, even if cameras never are.
<<else>>\
She folds Briar's napkin creases flat into her pocket. "Don't make me regret the theater."
<</if>>\
Beast catches your eye. "That's what I meant by showing up."
<<run setup.bumpRel("beast", 7)>>\
<<run setup.bumpRel("briar", 2)>>\
<<run setup.bumpResource("goodwill", 2, 0, 6)>>\
<<run setup.bumpCity("unrest", -4, 0, 100)>>\
<<run setup.advanceScene("loud")>>\
<<stamp "Tenant Witnessed" "filed">>
[[Return to Beast's desk.|Beast Hub Menu]]The precinct stairwell smells of burnt coffee and cheap cleaner, plus whatever Bigby dragged in this week. Someone taped a cartoon wolf to the bulletin board: DO NOT FEED. Nobody laughs. Nobody removes it.
You know this hallway. You've walked it in a good suit and a bad mood more times than you'd like to count.
The precinct will shake your hand in the lobby. It finishes arguments in paperwork.
<<set _sh to setup.sheriffLanding()>>\
<<if _sh neq "">>\
<<print _sh>>
<</if>>\
<<set _wolfPressure to setup.applyCrisisPressure("wolfCase")>>\
<<if _wolfPressure neq "">>\
<<print _wolfPressure>>
<</if>>\
<<if $quests.wolfCase is "resolved">>\
The leak case is closed on paper. Bigby's door stays open a crack if you need him, which in his language is practically a hug.
[[Step back into the street.|Fabletown Artery]]
<<else>>\
[[Push into Bigby's office.|Bigby Office Hub]]
<</if>>\<<if not $flags.openedWithBigby>>\
Bigby's office hasn't changed since the last crisis. Paper stacks, coffee rings, and the stubborn idea that filing order can slow a city bent on eating itself.
He's too big for the chair they issued him, shoulders built for doors and chase work, not hearings. He makes it fit anyway. Elbows tight. Jaw set. Shirt one shade off-white, always. His knuckles carry old cuts. One thumbnail is chewed down to the quick.
He's at the desk with a folder open, photo strips fanned in a losing-hand arc. The wall clock says you've missed the polite margin by eleven minutes. He doesn't look up when you come in.
You close the door. The latch clicks; you don't get to rewrite that sound.
"Photos don't wait," he says. Inventory, not accusation.
He slides a strip toward you with two fingers, not a tap, a verdict. Mundie faces in doorways, Fabletown glamour bleeding at the edges where the lens caught too much. Snow leaving a building. Beast in a hallway. Briar in daylight, looking tired in a way the tabloids will eat alive if it prints.
"Charming," he adds. The name lands clinical.
"Someone's selling negatives," Bigby says. "I want the broker before Snow has to explain my department to a committee that thinks 'classified' is a flavor of ice cream."
You pick up one photo and set it down again. You've seen worse. You've done worse. That doesn't make the paper less dangerous.
"Why me?"
"Because you can walk into a room and get mouths moving without flashing a badge." He finally looks at you. Flat assessment, then fatigue under it. "If this blows up, half the people in those frames go through glass. People at my kitchen table included."
Kitchen table hangs between you. Bigby doesn't do speeches, he works perimeter.
Under the reflex, you register what he's buying: a chain that holds on Monday. Not a performance that evaporates by dinner.
"I need a name," he says. "Quiet if you can manage it. Loud if you can't. But I need it today."
You open your mouth. Charm arrives a half-beat before intent; he cuts you off with a lifted palm. "Not a speech. A name path. Go."
<<set $flags.openedWithBigby to true>>\
<<run setup.bumpRel("bigby", 2)>>\
<<run setup.advanceScene("quiet")>>\
<<elseif $quests.wolfCase is "resolved">>\
The desk is neater than it was this morning, which means Bigby's already moved three new problems underneath whatever he just finished.
He glances up. "We're done with that file unless it comes back to bite us."
<<set _bw to setup.bigbyAfterWolfClosed()>>\
<<if _bw neq "">>\
<<print _bw>>
<</if>>\
[[Head back to the street.|Fabletown Artery]]
<<else>>\
Fluorescent light. Paper. The faint smell of smoke from the alley where deputies take breaks they pretend aren't breaks.
Whatever you sold him last time, this room stores it as paper, not atmosphere.
<<if $clocks.wolfCase is 0>>\
Bigby's still on the leak. His jaw's tight in that specific way that means he hasn't slept and won't admit it.
"Tell me you've got something," he says.
<<elseif $clocks.wolfCase is 1>>\
He's got a fresh printout from Records in one hand and a cold cup in the other. He juggles both the way people do when knives arrive by mail.
"You're still in it," he says. "Good. Don't get cute."
<<else>>\
He's pacing now, two steps to the window, two steps back. The case has weight; the room carries it.
"We're close," he says. "Or we're about to step on a landmine. Maybe both."
<</if>>\
<<set _bx to setup.bigbyCrossPulse()>>\
<<if _bx neq "">>\
<<print _bx>>
<</if>>\
<</if>>\
<<if $quests.wolfCase isnot "resolved">>\
Case pressure (wolf): $clocks.wolfCase / 3
<<if not $flags.bigbySoftRunDone>>\
[[Work the Trip Trap angle - drinks and patience.|Wolf Quiet Lead]]
<<else>>\
[[Go back to the Trip Trap - different approach.|Wolf Bar Revisit]]
<</if>>\
<<if not $flags.bigbyHardRunDone>>\
[[Lean on the network hard - fear and reputation.|Wolf Hard Lead]]
<<else>>\
[[Hit the alleys again - more pressure.|Wolf Alley Revisit]]
<</if>>\
<<if not $flags.bigbyHistoryTalked>>\
[[Ask Bigby what this reminds him of.|Bigby Talk History]]
<<else>>\
[[Circle back on old wars and old cities.|Bigby Talk History Revisit]]
<</if>>\
<<if not $flags.bigbySnowTalked>>\
[[Talk about Snow and what you're walking into.|Bigby Talk Snow]]
<<else>>\
[[Say her name again - second pass.|Bigby Talk Snow Revisit]]
<</if>>\
<<if not $flags.bigbyDealTalked>>\
[[Clarify what he needs from you, plain.|Bigby Talk Deal]]
<<else>>\
[[Press him on the deal - what happens if you fail.|Bigby Talk Deal Revisit]]
<</if>>\
<<if $flags.bigbyHistoryTalked and $flags.bigbySnowTalked and $flags.bigbyDealTalked and not $flags.bigbySynthDone and $clocks.wolfCase lt 3>>\
[[Stand in the doorway and say what you haven't said.|Bigby Synth Scene]]
<</if>>\
[[Grab terrible coffee from the precinct urn.|Bigby Coffee Beat]]
<<if $clocks.wolfCase gte 1>>\
[[Follow what you've got toward the broker.|Wolf Followup]]
<</if>>\
[[Step outside for a moment.|Fabletown Artery]]
<</if>>\You lean on the doorframe so it reads casual instead of braced.
"We've both seen leaks before," you say. "Homelands or here, somebody always thinks a photo is a weapon."
Bigby exhales through his nose. "A picture is a weapon. The question's who gets cut."
How do you steer this?
[[Stay on the chain - photographer, broker, money.|Bigby Hist Chain]]
[[Bring up the Homelands - rumor and the right ear.|Bigby Hist Homeland]]
[[Push his cynicism - say he's scared of headlines.|Bigby Hist Cynic]]<<set $conv.bigbyHistory to "chain">>\
You keep your voice level. "Skip philosophy. Tell me how you want the damage documented."
Bigby taps the desk once. "Photographer to broker to money. If you bring me drama, wrap it around that chain or don't bring it."
You dip your chin. Agreement doesn't need a slogan.
"I need dates that hold," he says. "Initials that match bank stubs. I don't need a speech about reform."
Survival, not performance. You built a career on crowns, ballots, and poster versions of yourself. Today he wants footnotes.
[[Let the history settle.|Bigby Hist Wrap]]<<set $conv.bigbyHistory to "homeland">>\
"In the Homelands," you say, "a rumor could kill faster than a sword if it hit the right ear."
Bigby's mouth tightens. "Don't quote my life back to me."
"I'm not. I'm saying I know how this spreads when people stop trusting the room."
He looks away at the window, then back. "Here, Mundies don't have to believe magic. They believe money. Same damage, different grammar."
"Then we follow the money."
He nods once, impatient approval. "Good. Keep it there. Leave the poetry in the Homelands."
[[Let the history settle.|Bigby Hist Wrap]]<<set $conv.bigbyHistory to "cynic">>\
"You act like you don't care who gets embarrassed," you say, "as long as your file stays neat."
Bigby's eyes cool. "I care plenty. I just don't confuse caring with performance."
You let the barb hang. "People will still call it fear of headlines."
He leans forward. "People call a lot of things. I call a leak a leak. Names first. Cameras after, if there's an after."
The room's smaller suddenly. You don't apologize. You nod once, concession, not surrender.
[[Let the history settle.|Bigby Hist Wrap]]<<set $flags.bigbyHistoryTalked to true>>\
<<if $conv.bigbyHistory is "chain">>\
<<run setup.bumpRel("bigby", 5)>>\
<<run setup.bumpPlayer("stress", -3, 0, 100)>>\
The fluorescent light doesn't get friendlier, but the map in your head does: chain first, drama second.
<<elseif $conv.bigbyHistory is "homeland">>\
<<run setup.bumpRel("bigby", 4)>>\
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
<<run setup.bumpCity("rumorHeat", -2, 0, 100)>>\
Something unhooks in his shoulders, half an inch. That's Bigby admitting you're in the same war.
<<else>>\
<<run setup.bumpRel("bigby", 2)>>\
<<run setup.bumpPlayer("scandal", 2, 0, 100)>>\
<<run setup.bumpCity("rumorHeat", 3, 0, 100)>>\
He doesn't thank you for the poke and files it instead, which still counts as contact.
<</if>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]"You already heard my history lesson," Bigby says.
<<if $conv.bigbyHistory is "chain">>\
"Yeah," you reply. "Paper first. I'm still holding to that."
"Good. Don't get creative."
[[Ask if the chain's enough without witnesses.|Bigby Hist Rev Witness]]
[[Press him - who's buried over smaller paper than this.|Bigby Hist Rev Buried]]
<<elseif $conv.bigbyHistory is "homeland">>\
"You brought up the Homelands last time," he says. "Don't romanticize it. We lost people because someone whispered the wrong name at a banquet."
"I remember."
"Then act like it."
[[Ask what he'd do if rumor beat money tomorrow.|Bigby Hist Rev Rumor]]
[[Drop it - say you're on the money trail.|Bigby Hist Rev Drop]]
<<else>>\
"You called me scared of headlines," Bigby says. "I'm scared of kids reading lies about their mother. There's a difference."
<<run setup.bumpRel("bigby", 2)>>\
<<run setup.bumpPlayer("stress", -1, 0, 100)>>\
[[Push anyway - say fear still shapes what he prints.|Bigby Hist Rev Push]]
[[Back off - ask what he needs next.|Bigby Hist Rev Need]]
<</if>>\"Witnesses lie," Bigby says. "Paper corroborates. Get me both if you can. If you can't, get me paper strong enough a liar doesn't matter."
<<run setup.bumpRel("bigby", 2)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]He goes still. "Friends. Over less than this."
You don't fill the silence. He doesn't want comfort.
<<run setup.bumpRel("bigby", 3)>>\
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]"If rumor beats money," he says, "we're already dead. Rumor is money here. You know that."
<<run setup.bumpCity("rumorHeat", 2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]"Fine," Bigby says. "Go."
<<run setup.bumpRel("bigby", 1)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]"Fear shapes everybody," Bigby says. "Difference is I admit it. You sell yours as strategy."
<<run setup.bumpRel("bigby", -1)>>\
<<run setup.bumpPlayer("stress", 3, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]"I need Finch," he says. "I need him tied to money before dinner. After that, we can argue philosophy."
<<run setup.bumpRel("bigby", 2)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]You say her name directly. Anything else would be theater.
"If this gets ugly," you say, "Snow is the one who has to hold the city steady while everyone else spins."
Bigby's eyes flick to you, sharp.
What's your angle?
[[Stay practical - ask what he needs so she doesn't clean up your mess.|Bigby Snow Practical]]
[[Push back - say you're not trading on her.|Bigby Snow Push]]
[[Acknowledge the kids - ask what the boys might see.|Bigby Snow Kids]]<<set $conv.bigbySnow to "practical">>\
"Don't use her as your conscience," Bigby says. "She's not your excuse."
"I'm not asking for her patience," you say. "I'm asking what you need so she doesn't mop up my mess."
He studies you like the sentence was sensible enough to be suspicious.
Silence. Then Bigby sits back, chair creaking.
"Honesty would be useful," he says. "For once." A beat. "Do not read softness into that. If you make her cry on my watch, we skip committee and go to cleanup."
The line lands crooked on purpose. Threat first, concern tucked under it.
<<run setup.bumpRel("bigby", 6)>>\
<<run setup.bumpRel("snow", 2)>>\
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
[[Close the Snow thread.|Bigby Snow Wrap]]<<set $conv.bigbySnow to "push">>\
"I know your play," he says, voice low. "You walk into rooms where her name buys patience."
You start to deny it. He doesn't wait for the performance.
"Don't sell me denials," he says. "Sell me behavior. Her name doesn't belong in your mouth when you're cornered."
Heat climbs your neck. You want to argue. You bite the inside of your cheek instead.
"Fair." The word comes out smaller than you meant.
He watches you take it clean. What shows on his face is relief, not victory.
<<run setup.bumpRel("bigby", 3)>>\
<<run setup.bumpPlayer("stress", 5, 0, 100)>>\
<<run setup.bumpCity("rumorHeat", 2, 0, 100)>>\
[[Close the Snow thread.|Bigby Snow Wrap]]<<set $conv.bigbySnow to "kids">>\
He points at the photos without looking down. "She's in there. So are school plays and homework and the thousand stupid things that can end up on page six because some bastard wanted rent money."
You swallow. The instinct is to promise distance. The desk doesn't leave room for clean promises.
"It's already in my house," he says. "That's the point."
<<run setup.bumpRel("bigby", 5)>>\
<<run setup.bumpRel("snow", 1)>>\
<<run setup.bumpPlayer("stress", 4, 0, 100)>>\
[[Close the Snow thread.|Bigby Snow Wrap]]<<set $flags.bigbySnowTalked to true>>\
"If you burn this town for a headline," Bigby says, "I don't care how pretty your speech is. I'll still come for you."
The line should play as theater. It doesn't. He names a boundary he already measured.
He slides the folder shut, jaw-sound final. "Keep it quiet. Clean is a luxury and I'm out."
He doesn't wait for you to agree. He's already reaching for the next sheet, like agreement costs him air.
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]"You already asked about Snow," Bigby says.
<<if $conv.bigbySnow is "practical">>\
Last time you stayed practical. He's not softer now, just quicker.
"She's handling three crises that aren't this one," he says. "Don't become a fourth."
[[Ask what a fourth would look like.|Bigby Snow Rev Fourth]]
[[Say you've got it - move on.|Bigby Snow Rev Done]]
<<elseif $conv.bigbySnow is "push">>\
"You pushed," he says. "Fine. Push in the field, not in my office when I'm tired."
<<run setup.bumpRel("bigby", 1)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]
<<elseif $conv.bigbySnow is "kids">>\
"The boys don't need your guilt," he says. "They need fewer cameras pointed at their mother."
<<run setup.bumpRel("bigby", 2)>>\
<<run setup.bumpRel("snow", 1)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]
<<else>>\
"Then don't make me repeat myself." He rubs the bridge of his nose.
<<run setup.bumpRel("bigby", 1)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]
<</if>>\"Fourth is a headline that makes her explain my department before breakfast," Bigby says. "You want that on your conscience, be my guest."
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]"Good," Bigby says. "Now go work."
<<run setup.bumpRel("bigby", 1)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]You keep your voice level and strip out campaign polish.
"Say it straight. What do you need besides charm?"
How hard do you push?
[[Take the card and the rules - no argument.|Bigby Deal Yes]]
[[Negotiate - ask what failure costs you.|Bigby Deal Fail]]
[[Flirt with the edge - ask if he'd really arrest you.|Bigby Deal Edge]]<<set $conv.bigbyDeal to "yes">>\
Bigby looks at you like you've finally asked a real question, and like he's not sure he likes the answer he'll have to live with.
"Names," he says. "Paper that holds. No rumor storms so you look like the hero." He slides a card across the desk: address, time, Mundie bar. "Soft starts there. Hard: you call me before you put my name in anybody's mouth."
"I can do that."
He holds your eyes a beat longer than necessary. "Saying yes is easy. Carrying it is what makes people ugly." Then, softer: "Come back when you screw up. Don't send flowers. Tell me what broke."
<<run setup.bumpRel("bigby", 4)>>\
<<run setup.bumpPlayer("influence", 3, 0, 100)>>\
[[Shake on it.|Bigby Deal Wrap]]<<set $conv.bigbyDeal to "fail">>\
"What happens if I don't deliver?" you ask.
His stare doesn't waver. "Then I use you as a lesson. Publicly if I have to." He pauses. "Private first. Always private first."
"Comforting."
"It's honest."
<<run setup.bumpRel("bigby", 2)>>\
<<run setup.bumpPlayer("stress", 4, 0, 100)>>\
[[Shake on it.|Bigby Deal Wrap]]<<set $conv.bigbyDeal to "edge">>\
"You'd really arrest me," you say, half joke, half test.
"If you earn it." No smile. "Don't earn it."
<<run setup.bumpRel("bigby", 2)>>\
<<run setup.bumpPlayer("scandal", 2, 0, 100)>>\
[[Shake on it.|Bigby Deal Wrap]]<<set $flags.bigbyDealTalked to true>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]"We covered the deal," Bigby says.
<<if $conv.bigbyDeal is "yes">>\
You played it straight last time. He's not reopening terms.
[[Ask for one extra guarantee - Snow stays out of the leak headlines.|Bigby Deal Rev Snow]]
[[Leave it - nod and go.|Bigby Deal Rev Go]]
<<elseif $conv.bigbyDeal is "fail">>\
"You asked about failure," he says. "You still breathing? Then we're not there yet."
<<run setup.bumpRel("bigby", 1)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]
<<elseif $conv.bigbyDeal is "edge">>\
"You tested me," Bigby says. "Don't do it twice."
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]
<<else>>\
"Names. Paper. No theater."
<<run setup.bumpRel("bigby", 1)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]
<</if>>\"I'll do what I can," Bigby says. "That's the only guarantee in this building."
<<run setup.bumpRel("bigby", 2)>>\
<<run setup.bumpRel("snow", 1)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]"Good," Bigby says.
<<run setup.bumpRel("bigby", 1)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Bigby's desk.|Bigby Office Hub]]The urn's been sitting since dawn. The liquid inside isn't quite coffee, just civic punishment that builds character.
You pour two cups without asking. Bigby takes his black. You take yours with shame and sugar.
"Tastes like a lawsuit," you mutter.
"Tastes like staying awake." He drinks anyway. "If you're going to soft-talk a Mundie photographer, you'll need your patience. If you're going to hard-talk a broker, you'll need your spine."
<<set _cf to setup.coffeeWithBigby()>>\
<<if _cf neq "">>\
<<print _cf>>
<</if>>\
<<if not $flags.bigbyCoffeeTaken>>\
<<set $flags.bigbyCoffeeTaken to true>>\
<<run setup.bumpPlayer("stress", -3, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
The second cup has nothing left to teach you except regret.
<</if>>\
[[Return to Bigby's desk.|Bigby Office Hub]]You stay in the doorway until Bigby looks up, irritated.
"What?" he asks.
"You've got Snow at home and a folder on your desk with her face in it," you say. "That's not lost on me. I've got ex-wives, enemies, and a campaign that eats honesty for breakfast. It spits out whatever polls well. I'm not asking for forgiveness. I'm asking if we're doing this the same way."
Bigby is quiet a beat. Then: "We're doing it the way that keeps people alive."
You nod. The reflex is wrong, too agreeable, and the only one that fits the size of what he's naming.
He stands, comes around the desk, and stops at arm's length. "Charming. I don't like you half the time. I still need you to be good at this because the alternative is worse."
"Noted."
"Don't make me regret saying that out loud." His mouth twitches. "Now go get me a name."
<<set $flags.bigbySynthDone to true>>\
<<run setup.bumpRel("bigby", 8)>>\
<<run setup.bumpPlayer("stress", -4, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
<<stamp "Off the Record" "filed">>
[[Return to Bigby's desk.|Bigby Office Hub]]The Trip Trap's annex is darker than the main room, all wood and smoke and the sound of people pretending they're not listening.
Fairy tales end at the first yes. Bigby's file starts where you stay in the chair until the truth gets bored enough to show up.
You buy a drink you don't want and settle where you can see the door. The photographer comes in like he always does, jacket too new, eyes too jumpy, the look of a man who's been paid well enough to feel guilty about it.
<<if not $flags.bigbySoftRunDone>>\
This is the first pass: patience, warmth, no teeth.
[[Let him sit. Buy another round. Learn his name.|Wolf Bar Beat A]]
<<else>>\
You've already shaken this tree once. Second pass is shorter and meaner in the margins.
[[Push him again - different tack.|Wolf Bar Revisit]]
<</if>>\His name is Kessler. Mundie. Narrow build, cheap jacket with a good lens bag, fingernails rimmed with something chemical that doesn't wash out in one shower. Two kids, a wife who thinks he shoots weddings upstate, a landlord who doesn't ask questions when the rent clears early.
You don't lead with Bigby. You don't lead with Fabletown. You lead with him: the way his hands shake when he checks his phone, the way he flinches when someone laughs too loud behind him, the way his eyes keep darting to the door like exits are the only honest architecture left.
"You look like you're waiting on a shoe to drop," you say.
He tries a smile. "I'm fine."
"You're not. That's okay. I'm not either."
That gets a real laugh, bitter and small.
You buy time. You buy rounds. You let him talk about film stock and light meters until his shoulders drop half an inch.
How do you bring up Finch?
[[Stay gentle - empathy first, names second.|Wolf Bar Soft]]
[[Turn sharp - homework, no guesses.|Wolf Bar Sharp]]
[[Slide cash across the table - pay for the truth.|Wolf Bar Cash]]<<set $conv.barApproach to "soft">>\
You lean in without crowding him.
"Someone's shopping pictures that aren't yours to sell," you say softly. "I'm not a cop. I'm the guy who can help you get out clean if you stop lying about who paid for the last roll."
He goes still.
"I don't know what you're..."
"Kessler." Gentle, still. "I'm not threatening you. I'm negotiating."
His eyes shine. Fear and relief mixed wrong.
"The broker," he whispers. "Calls himself Finch on the phone. Drops cash at a PO box in Brooklyn. I never met him face to face."
<<skillAttemptLink "charm" 4 "Take what you got." "Wolf Bar Outcome">><<set $conv.barApproach to "sharp">>\
You lean in. Different temperature.
"I know the school your daughter goes to," you say. "I know your wife's name is Anne. I'm not guessing. I've done the homework. So when you say you don't know what I'm talking about, we'll both pretend that's true for about five more seconds."
His face goes gray.
"Finch," he blurts. "Calls himself Finch. PO box in Brooklyn. Please. I didn't want..."
You lift a hand. "Address. Schedule. What he asked for."
He tells you. It's uglier than the soft version. It works.
<<skillAttemptLink "charm" 4 "Take what you got." "Wolf Bar Outcome">><<set $conv.barApproach to "cash">>\
<<if $player.gold gte 15>>\
You fold fifteen in tens and fives, enough to look like help, not enough to look like a bribe unless someone's looking for one.
"That's for your tab," you say. "The next part's for your memory."
Kessler stares at the money like it bites.
"I can't..."
"You can," you say. "Finch. How he pays you. What he asked for last."
He swallows. The name comes out like something he's been holding in his teeth.
<<set $player.gold to $player.gold - 15>>\
<<skillAttemptLink "charm" 4 "Take what you got." "Wolf Bar Outcome">>
<<else>>\
You reach for cash you don't have. Kessler's eyes go hard.
"I can't help you," he says, and slides out of the booth.
<<run setup.bumpPlayer("stress", 5, 0, 100)>>\
<<run setup.bumpCity("rumorHeat", 3, 0, 100)>>\
[[Try a softer angle - start the approach over.|Wolf Bar Beat A]]
[[Leave him alone - try the hard lead instead.|Wolf Hard Lead]]
<</if>>\<<set _barSkill to setup.consumeSkillCheckBridge()>>\
<<if not _barSkill>>\
<<set _barSkill to setup.skillCheck("charm", 4)>>\
<</if>>\
<<if _barSkill.passed>>\
You flatten your palms on the table, steady, not threatening. "Address. Schedule. What he asked for specifically."
He tells you. It isn't pretty, but it's usable.
<<else>>\
You reach for the same finish you always sell: palms open, voice low, charm traded for threat. Kessler's eyes keep flicking to the door; he hears the strain you can't quite file smooth.
He still gives you Finch: address, cadence, what was asked for last. The facts are true enough. The aftertaste is you leaning on a talent you don't quite own tonight.
<</if>>\
<<skillCheckReceipt _barSkill>>\
<<if _barSkill.passed>>\
Your tone lands clean. Even scared, Kessler feels handled instead of cornered.
<<run setup.bumpSkill("charm", 1)>>\
<<run setup.bumpRel("bigby", 1)>>\
<<else>>\
The booth doesn't forgive the reach. You have the lead, but one sentence lands wrong: small, sour, memorable to anyone scared enough to file it.
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<<run setup.recordFailure("wolfCase", 1)>>\
<</if>>\
<<set $flags.metPhotographer to true>>\
<<set $flags.hasPhotoNegative to true>>\
<<set $flags.bigbySoftRunDone to true>>\
<<if $conv.barApproach is "soft">>\
<<run setup.bumpPlayer("influence", 8, 0, 100)>>\
<<run setup.bumpPlayer("scandal", 3, 0, 100)>>\
<<run setup.bumpRel("bigby", 6)>>\
<<run setup.bumpIdentity("reformer", 2)>>\
<<run setup.bumpIdentity("scar", 1)>>\
<<run setup.bumpTruth("private", 1)>>\
<<run setup.bumpAxis("integrity", 1)>>\
<<elseif $conv.barApproach is "sharp">>\
<<run setup.bumpPlayer("influence", 6, 0, 100)>>\
<<run setup.bumpPlayer("scandal", 6, 0, 100)>>\
<<run setup.bumpPlayer("stress", 4, 0, 100)>>\
<<run setup.bumpRel("bigby", 5)>>\
<<run setup.bumpCity("rumorHeat", 4, 0, 100)>>\
<<run setup.bumpIdentity("operator", 2)>>\
<<run setup.bumpIdentity("scar", 2)>>\
<<run setup.bumpAxis("leverage", 2)>>\
<<run setup.bumpFinch("retaliation", 1)>>\
<<else>>\
<<run setup.bumpPlayer("influence", 9, 0, 100)>>\
<<run setup.bumpPlayer("scandal", 5, 0, 100)>>\
<<run setup.bumpRel("bigby", 5)>>\
<<run setup.bumpIdentity("opportunist", 2)>>\
<<run setup.bumpIdentity("scar", 1)>>\
<<run setup.bumpTruth("spin", 1)>>\
<<run setup.bumpAxis("leverage", 1)>>\
<</if>>\
<<run setup.bumpResource("dirt", 1, 0, 6)>>\
<<run setup.clockArc("wolfCase", 1)>>\
<<run setup.advanceScene("quiet")>>\
[[Turn toward the broker.|Wolf Followup]]<<if $conv.barApproach is "sharp">>\
Last time you leaned on him hard. The room remembers.
<<elseif $conv.barApproach is "soft">>\
Last time you were gentle. He's waiting for the other shoe, your shoe, to drop.
<<elseif $conv.barApproach is "cash">>\
Last time you bought him. He's ashamed of that. Shame makes people loud or quiet. You're hoping for quiet.
<</if>>\
<<if $flags.bigbyBarRevisited>>\
Kessler won't meet your eyes this time. "I told you what I know."
You lean on the bar anyway. "Finch changed drop times, didn't he?"
His jaw works. "...Yeah. Thursdays now. He said if I breathe wrong, my wife gets a package."
So someone's squeezing him harder because you got close. That's useful. That's also dangerous.
<<run setup.bumpResource("dirt", 1, 0, 6)>>\
<<run setup.bumpPlayer("stress", 4, 0, 100)>>\
<<run setup.bumpCity("rumorHeat", 4, 0, 100)>>\
<<run setup.bumpFinch("retaliation", 1)>>\
<<run setup.advanceScene("dirty")>>\
[[Return to Finch's trail.|Wolf Followup]]
<<else>>\
You find Kessler in the same booth, cigarette half-forgotten, staring at a glass like it owes him money.
"You came back," he says.
"I don't like loose ends."
He swallows. "Finch moved the drop. Thursdays. Different box."
You write it down. "Anything else?"
"He asked for more angles on the Mayor's office." Kessler's voice cracks. "I said no. He said fine, he'll find someone hungrier."
<<set $flags.bigbyBarRevisited to true>>\
<<run setup.bumpRel("bigby", 3)>>\
<<run setup.bumpPlayer("influence", 3, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Finch's trail.|Wolf Followup]]
<</if>>\You don't start in a bar. You start in a parking garage where the light buzzes and the cameras are broken on purpose.
<<if not $flags.bigbyHardRunDone>>\
A man with a security jacket that doesn't fit tries to walk past you. You step in front of him anyway.
"I need Finch's runner," you say. "I'm not asking nice."
The man looks at your face, then past you, then at something over your shoulder that isn't there, the shape of a reputation Bigby's spent years sharpening.
"You're gonna get somebody hurt," the man mutters.
"Somebody's already hurt," you reply. "I'm trying to keep it from being a whole city."
[[Push harder - alley door.|Wolf Alley Beat A]]
<<else>>\
The garage smells like oil and rain. You already bloodied this trail once.
[[Go back down - more muscle.|Wolf Alley Revisit]]
<</if>>\The runner's young, hungry, stupid in the way young runners are, which means he'll talk if you scare him right and stop before he breaks wrong.
You don't touch him. Not yet.
How hard do you lean?
[[Let Bigby's name do the work - no blood, all implication.|Wolf Alley Wolf]]
[[Stay cold - money and PO box, nothing else.|Wolf Alley Cold]]
[[Offer a way out - runner flips, you shield him from Finch.|Wolf Alley Shield]]<<set $conv.alleyApproach to "wolf">>\
You let him see what Bigby's name means in a concrete box with no witnesses.
"Finch," you say. "PO box. Who collects."
The kid spills. Names, times, a second drop under a newsstand near the bridge. Apologies like pennies.
When you step back into damp air, your hands are steady. Your stomach isn't.
<<silently>>\
<<set $flags.metPhotographer to true>>\
<<set $flags.bigbyHardRunDone to true>>\
<<run setup.bumpPlayer("influence", 4, 0, 100)>>\
<<run setup.bumpPlayer("scandal", 14, 0, 100)>>\
<<run setup.bumpPlayer("stress", 6, 0, 100)>>\
<<run setup.bumpRel("bigby", 3)>>\
<<run setup.bumpCity("rumorHeat", 10, 0, 100)>>\
<<run setup.bumpIdentity("operator", 2)>>\
<<run setup.bumpIdentity("scar", 2)>>\
<<run setup.bumpAxis("leverage", 2)>>\
<<run setup.bumpFinch("heat", 2)>>\
<<run setup.bumpFinch("retaliation", 1)>>\
<<run setup.clockArc("wolfCase", 1)>>\
<<run setup.advanceScene("dirty")>>\
<</silently>>\
[[Follow the money toward Finch.|Wolf Followup]]<<set $conv.alleyApproach to "cold">>\
No wolf stories. Just the chain.
"Money in. Pictures out," you say. "Finch. Box. Schedule."
The kid talks fast, scared of you in a different register, like you're a creditor.
<<silently>>\
<<set $flags.metPhotographer to true>>\
<<set $flags.bigbyHardRunDone to true>>\
<<run setup.bumpPlayer("influence", 5, 0, 100)>>\
<<run setup.bumpPlayer("scandal", 10, 0, 100)>>\
<<run setup.bumpPlayer("stress", 5, 0, 100)>>\
<<run setup.bumpRel("bigby", 4)>>\
<<run setup.bumpCity("rumorHeat", 7, 0, 100)>>\
<<run setup.bumpIdentity("operator", 1)>>\
<<run setup.bumpIdentity("opportunist", 1)>>\
<<run setup.bumpIdentity("scar", 2)>>\
<<run setup.bumpTruth("private", 1)>>\
<<run setup.bumpAxis("leverage", 1)>>\
<<run setup.bumpFinch("heat", 1)>>\
<<run setup.bumpFinch("retaliation", 1)>>\
<<run setup.clockArc("wolfCase", 1)>>\
<<run setup.advanceScene("dirty")>>\
<</silently>>\
[[Follow the money toward Finch.|Wolf Followup]]<<set $conv.alleyApproach to "shield">>\
"You can give me Finch," you say, "or you can give Finch you. Third option: you talk to me, I keep your name out of the first filing."
The kid blinks. Calculates.
"You're lying."
"Probably," you admit. "But I'm your best bad option."
He talks. Softer rumor heat. You bought discretion with promises you'll have to keep.
<<set _shieldSkill to setup.skillCheck("grit", 3)>>\
<<skillCheckReceipt _shieldSkill>>\
<<if _shieldSkill.passed>>\
You keep your breathing flat and your ask precise; the kid trusts the narrow path you offer.
<<run setup.bumpSkill("grit", 1)>>\
<<run setup.bumpPlayer("stress", -1, 0, 100)>>\
<<else>>\
Your voice shakes once. He still talks, but only after making you promise more than you wanted.
<<run setup.bumpResource("promises", 1, 0, 8)>>\
<</if>>\
<<silently>>\
<<set $flags.metPhotographer to true>>\
<<set $flags.bigbyHardRunDone to true>>\
<<run setup.bumpResource("promises", 1, 0, 8)>>\
<<run setup.bumpPlayer("influence", 6, 0, 100)>>\
<<run setup.bumpPlayer("scandal", 8, 0, 100)>>\
<<run setup.bumpRel("bigby", 5)>>\
<<run setup.bumpCity("rumorHeat", 5, 0, 100)>>\
<<run setup.bumpIdentity("reformer", 1)>>\
<<run setup.bumpIdentity("penitent", 1)>>\
<<run setup.bumpIdentity("romantic", 1)>>\
<<run setup.bumpIdentity("scar", 1)>>\
<<run setup.bumpTruth("private", 2)>>\
<<run setup.bumpAxis("integrity", 1)>>\
<<run setup.bumpFinch("retaliation", 1)>>\
<<run setup.clockArc("wolfCase", 1)>>\
<<run setup.advanceScene("quiet")>>\
<</silently>>\
[[Follow the money toward Finch.|Wolf Followup]]<<if $flags.bigbyAlleyRevisited>>\
The runner's gone, replaced by a mouthpiece who only says, "Lawyer."
Bigby warned you about that. Hard leads buy speed and pay in paperwork.
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Finch's trail.|Wolf Followup]]
<<else>>\
You corner the same kid near the newsstand. He's got a bruise he didn't have yesterday, which means Finch is tightening screws.
"Thursdays," the kid hisses. "PO box changed. He said if I talk again, my mother..."
You lift a hand. "Stop. Don't tell me her name. Tell me Finch's next move."
He swallows. "He's meeting a buyer tonight. Slipper back room. Not the main floor. Private."
Your pulse ticks. Of course it's the Slipper. Where else do people sell each other around here?
<<set $flags.bigbyAlleyRevisited to true>>\
<<run setup.bumpResource("dirt", 2, 0, 6)>>\
<<run setup.bumpCity("rumorHeat", 6, 0, 100)>>\
<<run setup.bumpFinch("retaliation", 1)>>\
<<run setup.advanceScene("loud")>>\
[[Return to Finch's trail.|Wolf Followup]]
<</if>>\<<if $clocks.wolfCase is 0>>\
You're still building the chain. Photographer or runner, soft or hard, Bigby needs something solid before you start spending favors.
[[Return to Bigby's office.|Bigby Office Hub]]
<<else>>\
The trail points at Finch. Broker, blackmail, cash in a box: ugly machinery, familiar shape.
<<if $clocks.wolfCase gte 1 and not $flags.bigbyPhoneDone>>\
Before you spend favors or set fires, you could align with the Sheriff's office or go lone wolf.
[[Call Bigby - ask how loud tomorrow can get.|Bigby Phone Beat]]
[[Skip the call - keep him out of the next move.|Wolf Followup Skip Call]]
<</if>>\
<<if not $flags.hasBlackmailLedger>>\
<<choiceRow "Wolf Broker Buy" "Buy a ledger off a scared clerk." "1 Favor">>
<</if>>\
<<if not $flags.exposedBroker>>\
[[Burn Finch in public and force testimony.|Wolf Broker Burn]]
<</if>>\
<<if $clocks.wolfCase gte 2>>\
[[Bring Bigby everything - close the file.|Wolf Final Report]]
<</if>>\
[[Return to Bigby's office.|Bigby Office Hub]]
[[Step outside for air.|Fabletown Artery]]
<</if>>\Sometimes the cleanest move is the one you don't telegraph.
<<set $flags.bigbyPhoneDone to true>>\
<<run setup.bumpPlayer("stress", 1, 0, 100)>>\
You pocket the phone. Bigby'll find out when he finds out, or when the city does.
[[Return to Finch's trail.|Wolf Followup]]You step into the stairwell and dial. Two rings, Bigby answers like sleep is a rumor.
"Talk," he says.
<<if $conv.barApproach is "">>\
You give him the shape of it: Finch, boxes, money moving.
"Hm," he says. "Don't be clever alone."
<<elseif $conv.barApproach is "sharp">>\
"You already shook the photographer hard," he says when you've told him the shape of it. "Don't hit him twice unless you want Finch running."
<<elseif $conv.barApproach is "soft">>\
"Soft's good," he grunts. "Don't confuse it with slow."
<<else>>\
"Cash buys talk," he says. "It doesn't buy loyalty. Get paper."
<</if>>\
<<if $conv.alleyApproach is "shield">>\
"You promised the runner cover?" A pause. "Fine. I'll hold you to it."
<<elseif $conv.alleyApproach is "wolf">>\
"You used my name." Not angry, inventory. "Make it worth the noise."
<</if>>\
"Buy the ledger if you can," he says finally. "Burn him only if you can stomach the heat. And Charming, don't be clever alone."
<<set $flags.bigbyPhoneDone to true>>\
<<run setup.bumpRel("bigby", 2)>>\
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Finch's trail.|Wolf Followup]]<<if $resources.favors gte 1>>\
The clerk meets you in a copy shop that smells like toner and bad decisions. He slides a ledger across the laminate counter like he's passing you a live wire.
"Finch's handwriting," he whispers. "Don't say my name. Don't come back."
You flip pages. Dates. Initials. Payments that line up with council favors and campaign dinners and one line that makes your mouth go dry because you recognize the signature style.
You close the book.
"Got it," you say, and you pay his fear with your favor token.
<<set $flags.hasBlackmailLedger to true>>\
<<run setup.bumpResource("favors", -1, 0, 6)>>\
<<run setup.bumpResource("dirt", 1, 0, 6)>>\
<<run setup.bumpPlayer("influence", 6, 0, 100)>>\
<<run setup.bumpCity("rumorHeat", -2, 0, 100)>>\
<<run setup.bumpFinch("retaliation", 1)>>\
<<run setup.clockArc("wolfCase", 1)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Finch's trail.|Wolf Followup]]
<<else>>\
You reach for a favor you don't have. The clerk looks past you at the door.
"Then I can't help you," he says. Not mean. Just final.
<<run setup.bumpPlayer("stress", 4, 0, 100)>>\
[[Return to Finch's trail.|Wolf Followup]]
<</if>>\You leak exactly enough, a name, a time, a hint of a buyer, to force a hearing without putting Snow on the front page yet.
The town does what it always does: it runs.
By noon, Finch is lawyered up and two council aides are sweating through their collars. Bigby texts you one word: Loud.
<<set $flags.exposedBroker to true>>\
<<run setup.bumpPlayer("influence", 12, 0, 100)>>\
<<run setup.bumpPlayer("scandal", 9, 0, 100)>>\
<<run setup.bumpCity("rumorHeat", 14, 0, 100)>>\
<<run setup.bumpResource("goodwill", -1, 0, 6)>>\
<<run setup.bumpFinch("retaliation", 2)>>\
<<run setup.clockArc("wolfCase", 1)>>\
<<run setup.advanceScene("loud")>>\
[[Return to Finch's trail.|Wolf Followup]]You come back to Bigby's office with the folder squared and your story straight.
He's alone. Lamp on. City outside the window doing what cities do, pretending nothing's on fire as long as the trains run.
You lay out the chain: photographer, runner, PO box, ledger lines, Finch's buyers, the Slipper rumor if you chased it hard enough.
Bigby listens without interrupting, jaw working once, twice, like he's chewing glass. When you're done, he reads the ledger page by page, lips moving slightly on the numbers like he's tasting poison.
"This'll do," he says finally. "Ugly. Usable."
"High praise."
"It's accurate." He pins one line with his thumb. "This signature. I know her handwriting. She's been playing games in procurement for years. If we move, we move careful, or half the department gets spooked and starts shredding."
"Then we move careful."
He looks at you, long enough to show the man who buys cereal for kids. Then the wolf who files warrants takes the face back.
"You did good on the soft pass. If you did the hard pass too, I don't want to know the details unless I have to."
"You just did."
"Fair." A grunt that might be laughter in a kinder life. He feeds one photocopy into the tray and strikes a match. Flame eats the edge. Not destruction, ritual. Control.
"We'll seal the rest," he says. "Snow doesn't need to read every line tonight; she'll read enough tomorrow."
<<if $quests.ledgerAudit is "resolved">>\
You've already bled in Snow's drawer. Tonight's burn reads small on the page until you remember footnotes carry weight.
<<elseif $clocks.ledger gte 1>>\
Somewhere Records is sharpening a pen for you. Bigby's fire won't stop that appointment.
<</if>>\
There's a beat where you could joke. You don't.
"Thanks," you say instead.
"Don't thank me. Thank the fact you didn't make me arrest you." He slides an envelope across the desk, expense money, or what passes for it in this office. "Go buy yourself a better tie."
<<run setup.bumpRel("bigby", 8)>>\
<<run setup.bumpPlayer("gold", 20, 0, 200)>>\
<<run setup.bumpFinch("retaliation", 1)>>\
<<run setup.clockArc("wolfCase", 1)>>\
<<stamp "Case Sealed" "archive">>
<<scorecard "Wolf Case · Closed" "Leak chain documented. Photographer protected. Bigby owes you a clean drink, not a clean conscience.">>
[[Step back into the street.|Fabletown Artery]]Briar Rose sits on a water-tower rail with diner coffee and zero interest in gravity. Weak sun catches her hair: copper where honest, darker where strategic. Shoes off by the ladder like she owns the roof lease. Torn stockings. Coat too expensive for tar and gravel. She looks dressed for bad news and already late for the next one.
<<if not $flags.openedWithBriar>>\
"You perform every room you enter," she says, still facing the skyline. "Try walking into one as yourself before the rooms run out."
You let the wind take the first answer. She's naming a habit you've mistaken for survival.
<<set $flags.openedWithBriar to true>>\
<<else>>\
"Still standing?" She tips the cup toward you without spilling. "Then you're ahead of schedule, which usually means the landing will be worse."
<</if>>\
<<set _br to setup.briarRoofBeat()>>\
<<if _br neq "">>\
<<print _br>>
<</if>>\
<<set _briarPressure to setup.applyCrisisPressure("briar")>>\
<<if _briarPressure neq "">>\
<<print _briarPressure>>
<</if>>\
[[Crooked Lane - who holds the clipboard besides landlords.|Briar Tenant Hook]]
[[Ask her for a rumor that actually matters.|Briar Rumor]]
<<choiceRow "Briar Unions" "Ask her to float your name with old unions." "1 Favor">>
[[Ask what the informal city wants from you.|Briar Old Debts]]
[[Climb back down to the street.|Fabletown Artery]]<<if not $flags.briarRumorHeard>>\
She gives you three names and one warning: "If you use all three tonight, someone important will bleed."
<<set $flags.briarRumorHeard to true>>\
<<set $pressure.briar to setup.cap($pressure.briar + 1, 0, 6)>>\
<<run setup.bumpResource("dirt", 1, 0, 6)>>\
<<run setup.bumpRel("briar", 7)>>\
<<run setup.bumpPlayer("stress", -3, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
"I gave you the good names," Briar says. "Anything else is gossip with shoes."
<</if>>\
[[Return to the rail.|Rooftop with Briar]]<<if $resources.favors gte 1>>\
Briar takes your favor marker, bites it like coin, and pockets it.
"Fine. I will put your name in the right mouths."
<<run setup.bumpResource("favors", -1, 0, 6)>>\
<<run setup.bumpResource("goodwill", 2, 0, 6)>>\
<<run setup.bumpPlayer("influence", 6, 0, 100)>>\
<<run setup.bumpRel("briar", 10)>>\
<<run setup.bumpIdentity("operator", 1)>>\
<<set $pressure.briar to setup.cap($pressure.briar + 1, 0, 6)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
"You're out of favors," Briar says. "Luck might still take your call. I wouldn't bet rent on it."
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<</if>>\
[[Return to the rail.|Rooftop with Briar]]Briar points down through the roof like the building has veins.
"City Hall has departments," she says. "The real city has babysitters, bartenders, union cousins, exes, drivers, clerks, and women who remember which prince never came back with the paperwork."
Informal pressure: $pressure.briar / 6
<<if $resources.favors gte 1>>\
[[Spend a favor marker to quiet union mouths.|Briar Debt Favor]]
<</if>>\
[[Promise public backing later to buy tenant patience.|Briar Debt Promise]]
<<if $resources.dirt gte 1>>\
[[Trade one useful secret and aim gossip at Finch.|Briar Debt Dirt]]
<</if>>\
[[Refuse the ledger she keeps in people's heads.|Briar Debt Refuse]]
[[Return to the rail.|Rooftop with Briar]]Briar takes the marker without smiling.
"This buys you forty-eight hours of people pretending not to know your mistakes," she says. "Use them better than your ancestors used kingdoms."
<<run setup.bumpResource("favors", -1, 0, 6)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<set $pressure.housing to setup.cap($pressure.housing - 1, 0, 6)>>\
<<set $pressure.briar to setup.cap($pressure.briar - 1, 0, 6)>>\
<<run setup.bumpIdentity("operator", 1)>>\
[[Return to the rail.|Rooftop with Briar]]"Careful," Briar says. "Promises are just debt with better posture."
You promise a public line when Tess needs cover, not when it polls well.
<<run setup.bumpResource("promises", 2, 0, 8)>>\
<<run setup.bumpRel("briar", 3)>>\
<<set $pressure.housing to setup.cap($pressure.housing - 2, 0, 6)>>\
<<set $pressure.ledger to setup.cap($pressure.ledger + 1, 0, 6)>>\
<<run setup.bumpIdentity("reformer", 1)>>\
<<run setup.bumpIdentity("romantic", 1)>>\
<<run setup.bumpIdentity("scar", 1)>>\
[[Return to the rail.|Rooftop with Briar]]You give her a name that can survive daylight and still ruin Finch's breakfast.
Briar folds it away. "Good. Gossip with a target is almost governance."
<<run setup.bumpResource("dirt", -1, 0, 6)>>\
<<run setup.bumpCity("rumorHeat", 2, 0, 100)>>\
<<set $pressure.wolfCase to setup.cap($pressure.wolfCase - 1, 0, 6)>>\
<<set $pressure.briar to setup.cap($pressure.briar + 1, 0, 6)>>\
<<run setup.bumpIdentity("operator", 1)>>\
[[Return to the rail.|Rooftop with Briar]]"That's allowed," Briar says. "So is remembering."
The wind lifts the edge of her napkin. Names show through the paper.
<<set $pressure.briar to setup.cap($pressure.briar + 1, 0, 6)>>\
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<<run setup.bumpIdentity("scar", 1)>>\
[[Return to the rail.|Rooftop with Briar]]<<if not $flags.briarTenantLead>>\
Briar listens to the wind worry the tower's joints.
"Crooked Lane isn't a headline," she says. "It's a schedule. Landlords learn it. Tenants survive it. If you're going to speak for them, know who actually holds the clipboard."
How do you ask for the door?
[[Straight - name someone who'll talk to Beast without vanishing.|Briar Tenant Direct]]
[[Soft - say you want to show up, not harvest pain.|Briar Tenant Earnest]]
[[Sharp - say you need a lever, not a lecture.|Briar Tenant Edge]]
<<else>>\
"Tess still asks if you're real," Briar says. "I told her you're real enough to annoy."
[[Remind me the stair.|Briar Tenant Remind]]
<</if>>\
[[Return to the rail.|Rooftop with Briar]]<<set $conv.tenantPitch to "direct">>\
You don't flinch. "Name me someone the lane trusts with a pen. Someone Beast can't file under miscellaneous."
Briar's smile is thin. "Tess. She's rude in the right registers."
[[Accept the lead.|Briar Tenant Land]]<<set $conv.tenantPitch to "earnest">>\
You keep your voice low. "I don't want a pull quote. I want the stairwell where tenants reheat dinner off a hot plate and pretend the smell is normal."
Briar studies you. "Then show up Thursday. Don't bring a crown."
[[Accept the lead.|Briar Tenant Land]]<<set $conv.tenantPitch to "edge">>\
You lean in. "Give me a lever you actually bet on, or admit you like watching princes fall downstairs."
She exhales. "Tess. Community room under the stair. Try not to perform salvation."
[[Accept the lead.|Briar Tenant Land]]<<set $flags.briarTenantLead to true>>\
<<set $pressure.briar to setup.cap($pressure.briar + 1, 0, 6)>>\
<<run setup.bumpRel("briar", 5)>>\
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
She tears a napkin, writes in sharp ink:
Tess - Crooked Lane community stair - Thursdays after five - say Briar sent someone annoying.
"If you make her a photo op, I will make you a lesson."
[[Return to the rail.|Rooftop with Briar]]The stair. Thursday after five. Tess. Briar's ink leans aggressive on the napkin.
[[Return to the rail.|Rooftop with Briar]]Velvet curtains, cracked silver. Behind frosted glass a receptionist files her elven ears blunt for Mundie clients; her lipstick reads as stop. She does not ask legal questions. She asks for names the way bouncers ask for IDs.
<<if not $flags.visitedMirrorParlor>>\
You can buy a cleaner face for the evening. The tab for the rest of you stays open.
<<set $flags.visitedMirrorParlor to true>>\
<</if>>\
<<set _mp to setup.mirrorParlorAmbient()>>\
<<if _mp neq "">>\
<<print _mp>>
<</if>>\
<<choiceRow "Parlor Polish" "Polish your glamour." "10 Gold · −5 Scandal · +15 Glamour">>
<<choiceRow "Parlor Intel" "Buy whispered intel from mirror traffic." "1 Favor · +2 Dirt · Rumor Heat Rises">>
[[Just breathe and reset your nerves.|Parlor Breathe]]
[[Leave.|Fabletown Artery]]<<if $player.gold gte 10>>\
A glamour artist dusts your shoulders with powdered moonstone. Your reflection comes back smoother, sharper at the eyes, ready for the room you are about to enter.
<<run setup.bumpPlayer("gold", -10, 0, 200)>>\
<<run setup.bumpPlayer("glamour", 15, 0, 100)>>\
<<run setup.bumpPlayer("scandal", -5, 0, 100)>>\
<<run setup.bumpTruth("spin", 1)>>\
<<run setup.bumpAxis("leverage", 1)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
The receptionist glances at your wallet and offers you water instead.
<</if>>\
[[Return to the parlor.|Mirror Parlor]]<<if $resources.favors gte 1>>\
You trade one favor token for one mirrored transcript of who met whom in which hallway.
<<run setup.bumpResource("favors", -1, 0, 6)>>\
<<run setup.bumpResource("dirt", 2, 0, 6)>>\
<<run setup.bumpPlayer("influence", 4, 0, 100)>>\
<<run setup.bumpCity("rumorHeat", 5, 0, 100)>>\
<<run setup.advanceScene("loud")>>\
<<else>>\
No favor marker, no transcript.
<</if>>\
[[Return to the parlor.|Mirror Parlor]]You sit in front of a covered mirror and count to forty while the city keeps scheming without you.
<<if not $flags.parlorBreathTaken>>\
For a minute, your shoulders unclench. The covered mirror takes a layer of polish you did not know you were wearing.
<<set $flags.parlorBreathTaken to true>>\
<<run setup.bumpPlayer("stress", -10, 0, 100)>>\
<<run setup.bumpPlayer("glamour", -40, 0, 100)>>\
<<run setup.bumpCity("rumorHeat", -3, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
The quiet helps. It does not fix you.
<</if>>\
[[Step back into the street.|Fabletown Artery]]<<stamp "Closing Time" "archive">>
Velvet gloom, brass railings, perfume over sweat. Old money rubs elbows with new hunger; Fabletown glamour fits tight enough to leave marks.
A gloved doorman takes your coat the way clerks take evidence bags. Inside, bodies press close: horns, wings folded under cloth, a troll laughing loud enough to claim he bought the room's permission to be ugly.
You step inside. Your name arrives before you do.
<<set _sm to setup.slipperMood()>>\
<<if _sm neq "">>\
<<print _sm>>
<</if>>\
<<set _slipperCoda to "">>\
<<if $skills.charm gte 4 and $conv.barApproach is "soft" and $conv.beastTactic is "petition">>\
<<set _slipperCoda to "silver_tongue_civic_steps">>\
<<elseif $skills.insight gte 4 and $conv.ledgerFrame is "duty" and $flags.exposedBroker>>\
<<set _slipperCoda to "ledger_surgeon">>\
<<elseif $conv.bigbySnow is "kids" and $conv.snowPersonal is "kids" and $conv.barApproach is "soft">>\
<<set _slipperCoda to "triptych_kitchen">>\
<<elseif $conv.bigbySnow is "practical" and $conv.snowPersonal is "money" and $conv.barApproach is "cash">>\
<<set _slipperCoda to "cash_practical_money">>\
<<elseif $conv.bigbySnow is "push" and $conv.snowPersonal is "own" and $conv.barApproach is "sharp">>\
<<set _slipperCoda to "push_own_sharp">>\
<<elseif $conv.bigbySnow is "practical" and $conv.snowPersonal is "money" and $conv.snowWork is "sign">>\
<<set _slipperCoda to "paper_loyal">>\
<<elseif $conv.bigbyDeal is "yes" and $conv.ledgerFrame is "duty" and $flags.confessedDebt>>\
<<set _slipperCoda to "duty_debt">>\
<<elseif $conv.bigbyHistory is "chain" and $conv.snowWork is "push" and $conv.alleyApproach is "wolf">>\
<<set _slipperCoda to "chain_push_wolf">>\
<<elseif $conv.snowPersonal is "own" and $conv.ledgerFrame is "knife" and $flags.forgedReceipt>>\
<<set _slipperCoda to "own_knife_forge">>\
<<elseif $flags.snowBeastSynthDone and $conv.snowBeastSynth is "speed" and $conv.beastTactic is "petition">>\
<<set _slipperCoda to "synth_speed_petition">>\
<<elseif $flags.tenantHallwayDone and $conv.beastOpen is "human" and $conv.bigbySnow is "kids">>\
<<set _slipperCoda to "tenant_human_bigby_kids">>\
<<elseif $conv.beastOpen is "human" and $conv.beastTactic is "petition" and $conv.snowWork is "sign">>\
<<set _slipperCoda to "human_petition_paper">>\
<<elseif $conv.beastOpen is "political" and $conv.beastTactic is "gala" and $conv.bigbyDeal is "yes">>\
<<set _slipperCoda to "political_gala_bigby">>\
<<elseif $conv.beastOpen is "crown" and $conv.beastTactic is "backroom" and $conv.bigbyHistory is "chain">>\
<<set _slipperCoda to "crown_backroom_chain">>\
<</if>>\
<<if _slipperCoda is "silver_tongue_civic_steps">>\
Trip Trap soft talk, City Hall sharp. You spent words where they bought motion, not applause. People move when you pass; you do not wait to see if they clap.
<<elseif _slipperCoda is "ledger_surgeon">>\
Duty frame, broker named, cuts kept small. The mirrors here return a face trained on paperwork as discipline, not theater.
<<elseif _slipperCoda is "triptych_kitchen">>\
Bigby's kitchen table. Snow's boys two boroughs away, asleep if the city allows it. Kessler's hands steadier because you did not break him wrong. Three threads that rarely share a night; tonight they share you.
<<elseif _slipperCoda is "cash_practical_money">>\
Beer on the floor, bills counted twice. Bigby got practicality, Snow got blunt talk about money, the bar got your cash in exchange for quiet. The room bets you know the sound tens make when they settle a debt.
<<elseif _slipperCoda is "push_own_sharp">>\
Brass cuts your face into strips of light. Snow heard the push about spectacle; her office heard the worst you own; the broker's bar heard your sharp edge. The band is loud enough to excuse staring.
<<elseif _slipperCoda is "paper_loyal">>\
Ink on triplicate, money confessed where it hurt, questions asked without romance. You treated paper as loyalty. This crowd usually rewards a performance; tonight it gets receipts.
<<elseif _slipperCoda is "duty_debt">>\
Bigby's deal stayed closed. Snow's ledger met your signature in daylight. The coat feels heavier walking in; the weight is specific, not symbolic.
<<elseif _slipperCoda is "chain_push_wolf">>\
Chain-of-custody with Bigby, spectacle with Snow, teeth in the alley. Titles mismatch the work. The night fits anyway.
<<elseif _slipperCoda is "own_knife_forge">>\
Burnt paper you authored. Snow heard the worst; the ledger heard a knife metaphor; you forged anyway. Few rooms let that stack sit open. This one does, until someone files.
<<elseif _slipperCoda is "synth_speed_petition">>\
Toner on your tongue, rain in your hair. Vouchers matched restitution faster than gossip could pivot. City Hall steps replay in your ears. Tess laughed once in a hall that punishes theater.
<<elseif _slipperCoda is "tenant_human_bigby_kids">>\
Tess in the hall. Beast ran numbers the way a parent runs a budget. Bigby warned about kids, cameras, leverage. Three protections aimed the same direction; you do not get to unlearn that.
<<elseif _slipperCoda is "human_petition_paper">>\
Forms signed dry; you can still hear the crowd off the City Hall steps. Beast got the human frame, Snow the honest signature, you the petition heat. A second showing costs paperwork; you brought it.
<<elseif _slipperCoda is "political_gala_bigby">>\
Gala sold, Bigby's rules kept, politics bought hours. Chandelier light on guilt. You spent a favor with intent; the mirror shows someone who meant the spend.
<<elseif _slipperCoda is "crown_backroom_chain">>\
Crown talk with Beast, air rights in a backroom, chain-of-custody with Bigby rattling behind your molars. Velvet holds the triangle. It does not sanitize it.
<</if>>\
The room has opinions. Perfume on some. Paper on others.
<<print setup.identityLine()>>
Campaign shape logged: <<= setup.identityLabel() >>
[[Work the room before the final answer.|Glass Slipper Floor]]You are not alone long. The floor runs like committee under chandeliers: each table keeps a witness, each witness a bill, carbon copies hunting your initials.
Bigby holds the bar mirror's line of sight. Snow took the table with clean sightlines to the doors. Beast camps by the coats; tenants keep cornering him mid-sentence. Briar's in the corner booth, fingertips off the upholstery like it could charge rent. A reporter studies her lemon twist. Near the service hall, a clerk you almost know checks whether you have clocked him yet.
<<set _finaleTalks to 0>>\
<<if $flags.finaleBigbySeen>><<set _finaleTalks += 1>><</if>>\
<<if $flags.finaleSnowSeen>><<set _finaleTalks += 1>><</if>>\
<<if $flags.finaleBeastSeen>><<set _finaleTalks += 1>><</if>>\
<<if $flags.finaleBriarSeen>><<set _finaleTalks += 1>><</if>>\
<<if $flags.finaleReporterSeen>><<set _finaleTalks += 1>><</if>>\
<<if $flags.finaleDebtorSeen>><<set _finaleTalks += 1>><</if>>\
You have faced <<= _finaleTalks >> of the room's six honest witnesses.
Pressure on the floor:
- Public Heat: $city.rumorHeat
- Scandal: $player.scandal
- Promises Owed: $resources.promises
- Promise Collectors: $debt.collectors
- Truth Posture: <<= setup.truthLabel() >>
- Method: <<= setup.axisLabel() >>
- Scars Carried: $identity.scar
- Informal City Pressure: $pressure.briar / 6
- Campaign Shape: <<= setup.identityLabel() >>
<<if $quests.wolfCase isnot "resolved">>The leak still moves through the room in glances and unfinished introductions.<</if>>\
<<if $quests.crookedLane isnot "resolved">>Crooked Lane has sent coats instead of people: wet cuffs, cheap wool, committee dust.<</if>>\
<<if $quests.ledgerAudit isnot "resolved">>Snow's unopened drawer follows you from across the room.<</if>>\
<<if $debt.collectors gt 0>>Someone near the coat room is here to collect a promise you made when the day was younger.<</if>>\
<<if $finch.retaliation gte 3>>Finch is not in the room. His work is.<</if>>\
<<if not $flags.finaleBigbySeen>>\
[[Take Bigby's measure at the bar.|Slipper Bigby Reckoning]]
<</if>>\
<<if not $flags.finaleSnowSeen>>\
[[Sit with Snow where the music thins.|Slipper Snow Reckoning]]
<</if>>\
<<if not $flags.finaleBeastSeen>>\
[[Meet Beast by the coat room.|Slipper Beast Reckoning]]
<</if>>\
<<if not $flags.finaleBriarSeen>>\
[[Let Briar name the cost from her booth.|Slipper Briar Reckoning]]
<</if>>\
<<if not $flags.finaleReporterSeen>>\
[[Give the reporter one answer she can print.|Slipper Reporter Reckoning]]
<</if>>\
<<if not $flags.finaleDebtorSeen>>\
[[Face the clerk by the service hall.|Slipper Debtor Reckoning]]
<</if>>\
<<if $conv.finaleVow is "">>\
[[Step onto the balcony and choose the promise you can survive.|Slipper Balcony Vow]]
<<else>>\
Balcony vow: $conv.finaleVow
<</if>>\
<<if _finaleTalks gte 3 and $conv.finaleVow isnot "">>\
[[Choose what kind of prince leaves tonight.|Glass Slipper Reckoning]]
<<elseif _finaleTalks lt 3>>\
Face at least three witnesses before you let the room decide.
<<else>>\
Choose a balcony vow before you let the room decide.
<</if>>\Bigby does not turn when you reach the bar.
<<if $quests.wolfCase is "resolved">>\
"You closed my leak," he says. "Doesn't make the people in those photos safer tomorrow. Makes tomorrow possible."
<<else>>\
"Your leak is still breathing," he says. "Somebody pays for that. Usually somebody smaller than us."
<<run setup.bumpIdentity("scar", 1)>>\
<</if>>\
<<if $conv.alleyApproach is "wolf">>\
"You borrowed my shadow," he adds. "Return it cleaner than you found it."
<<elseif $conv.alleyApproach is "shield">>\
"The runner's alive because you left him a door. Don't make me regret liking that."
<<else>>\
"You like clean chains. Chains still bruise."
<</if>>\
What do you give him?
[[A restraint pledge - no more borrowed wolves tonight.|Slipper Bigby Restraint]]
[[A hard promise - if Finch resurfaces, you help bury the network.|Slipper Bigby Teeth]]
[[A human promise - protect the people in the photos first.|Slipper Bigby Door]]"No more using your name as weather," you say. "If I need force, I ask. If I need fear, I own it."
Bigby studies you in the mirror. "Put that in writing and I'll hate it less."
<<set $flags.finaleBigbySeen to true>>\
<<run setup.bumpRel("bigby", 2)>>\
<<run setup.bumpIdentity("operator", 1)>>\
<<run setup.bumpIdentity("scar", 1)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"If Finch comes back," you say, "I help you take the network, not just the man."
"Careful," Bigby says. "Networks have people in them. Some guilty. Some just scared."
You hear the correction for what it is. Cynicism would be faster. He gave you a map.
"Then we sort them before the room sorts us."
<<set $flags.finaleBigbySeen to true>>\
<<run setup.bumpRel("bigby", 3)>>\
<<run setup.bumpIdentity("operator", 2)>>\
<<run setup.bumpIdentity("scar", 1)>>\
<<run setup.bumpResource("promises", 1, 0, 8)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"The people in the photos come first," you say. "Snow, Beast, Briar, Kessler's wife, the runner's mother. The case serves them or it becomes another appetite."
Bigby finally looks at you directly. "That sounded like you meant it."
You don't thank him. Thanks would shrink it. You let the mirror hold both of you, then you look away first.
<<set $flags.finaleBigbySeen to true>>\
<<run setup.bumpRel("bigby", 4)>>\
<<run setup.bumpIdentity("reformer", 1)>>\
<<run setup.bumpIdentity("romantic", 2)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]Snow has a glass of water, untouched, centered on a coaster as if it might be entered into evidence later.
<<if $flags.confessedDebt>>\
"You chose the expensive truth," she says. "Good. Do not turn it into branding."
<<elseif $flags.forgedReceipt>>\
"You chose paper that lied well enough to insult everyone who reads for a living."
<<run setup.bumpIdentity("scar", 1)>>\
<<elseif $flags.exposedBroker>>\
"You chose containment," she says. "That is rarely clean. It is sometimes adult."
<<else>>\
"Your file remains open," she says. "Open files breed."
<<run setup.bumpIdentity("scar", 1)>>\
<</if>>\
<<if setup.leadingIdentity() is "penitent">>\
"If repentance is real," she says, "it keeps appointments."
<<elseif setup.leadingIdentity() is "romantic">>\
"Survival is not weakness," she says. "Performing it as romance usually is. Learn the difference."
<<elseif setup.leadingIdentity() is "opportunist">>\
"If survival is your only principle, it will eventually ask you to survive alone."
<<else>>\
"You are learning the difference between a room won and a city held."
<</if>>\
She slides a folded place card toward you. Your name is written without title.
What do you let her record?
[[A public correction - your campaign eats the embarrassment.|Slipper Snow Correction]]
[[A sealed settlement - less theater, more compliance.|Slipper Snow Seal]]
[[A private apology - no filing, no audience.|Slipper Snow Apology]]"Make it public," you say. "Structured, accurate, ugly enough to work."
Snow's pen appears from nowhere. "Ugly enough to work is the first useful slogan your campaign has produced."
<<set $flags.finaleSnowSeen to true>>\
<<run setup.bumpRel("snow", 4)>>\
<<run setup.bumpPlayer("scandal", 3, 0, 100)>>\
<<run setup.bumpIdentity("penitent", 2)>>\
<<run setup.bumpIdentity("reformer", 1)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"Seal the worst of it," you say. "Audit the rest. I will sign compliance before morning."
"Compliance is not contrition," Snow says.
"No. It is behavior. I am starting there."
<<set $flags.finaleSnowSeen to true>>\
<<run setup.bumpRel("snow", 2)>>\
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<<run setup.bumpIdentity("operator", 2)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"I am sorry," you say. "No rider. No joke. No witness."
For once, Snow does not rescue either of you with procedure.
"Then remember what silence costs me," she says.
<<set $flags.finaleSnowSeen to true>>\
<<run setup.bumpRel("snow", 5)>>\
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
<<run setup.bumpIdentity("penitent", 1)>>\
<<run setup.bumpIdentity("romantic", 2)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]Beast looks half relieved, half drafted into another war.
<<if $quests.crookedLane is "resolved">>\
"Families sleep inside tonight," he says. "For now. That is the honest unit of victory."
<<else>>\
"Crooked Lane still has cold rooms," he says. "Remember that when people praise your suit."
<<run setup.bumpIdentity("scar", 1)>>\
<</if>>\
<<if $conv.beastTactic is "petition">>\
"The steps mattered. The paperwork has to matter tomorrow."
<<elseif $conv.beastTactic is "gala">>\
"The money helped. The donors will want names on the mercy."
<<else>>\
"The backroom held. Backrooms always send bills later."
<</if>>\
What do you put behind the order?
[[Budget cover - protect the boring money.|Slipper Beast Budget]]
[[Public witness - stand where tenants can see you.|Slipper Beast Witness]]
[[Donor discipline - make the gala money behave.|Slipper Beast Donors]]"I will protect the budget line," you say. "Not the headline. The line."
Beast's shoulders drop half an inch. Around him, that counts as weather changing.
<<set $flags.finaleBeastSeen to true>>\
<<run setup.bumpRel("beast", 4)>>\
<<run setup.bumpResource("promises", 1, 0, 8)>>\
<<run setup.bumpIdentity("operator", 1)>>\
<<run setup.bumpIdentity("reformer", 1)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"If Tess calls," you say, "I show up before cameras. If no cameras come, I still show up."
Beast nods once. "That is the sentence I needed. The one you now have to survive."
<<set $flags.finaleBeastSeen to true>>\
<<run setup.bumpRel("beast", 5)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<run setup.bumpIdentity("reformer", 2)>>\
<<run setup.bumpIdentity("romantic", 1)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"Give me the donor list," you say. "I will make generosity enforceable."
"Generosity hates paperwork," Beast says.
"Then it should not have entered government."
<<set $flags.finaleBeastSeen to true>>\
<<run setup.bumpRel("beast", 3)>>\
<<run setup.bumpPlayer("influence", 4, 0, 100)>>\
<<run setup.bumpIdentity("operator", 2)>>\
<<run setup.bumpIdentity("opportunist", 1)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]Briar has two cherries in a napkin with no drink in front of her.
"Rooms like this love a man who can mistake applause for absolution," she says.
<<if $flags.tenantHallwayDone>>\
"Tess thinks you might show up again. That's dangerous. Hope is a debt with witnesses."
<<elseif $flags.tenantFollowThroughLost>>\
"You let the hallway close. It happens. It also counts."
<<run setup.bumpIdentity("scar", 1)>>\
<<else>>\
"You never met Tess. Maybe that saved her a disappointment. Maybe it cost her a door."
<<run setup.bumpIdentity("scar", 1)>>\
<</if>>\
<<if setup.leadingIdentity() is "reformer">>\
"Reformer, then. Fine. Reform has hands. Keep yours where people can see them."
<<elseif setup.leadingIdentity() is "operator">>\
"Operator. Useful word. Sounds cleaner than fixer."
<<elseif setup.leadingIdentity() is "penitent">>\
"Penitent looks good in candlelight. Less good on a budget line."
<<elseif setup.leadingIdentity() is "romantic">>\
"Romantic survivor," she says. "Dangerous breed. You keep believing people are worth the bill."
<<else>>\
"Opportunist. At least that suit fits without tailoring."
<</if>>\
She flicks one cherry stem into an ashtray. "What do you want the informal city to remember?"
[[Remember that I paid my old debts tonight.|Slipper Briar Debts]]
[[Remember who helped when offices stalled.|Slipper Briar Names]]
[[Remember nothing. Let the work speak or fail.|Slipper Briar Silence]]"Tell them I know the ledger is not only paper," you say. "Tell them I pay people, not optics."
"Big sentence," Briar says. "Small world. It will find you."
<<set $flags.finaleBriarSeen to true>>\
<<run setup.bumpRel("briar", 5)>>\
<<run setup.bumpResource("promises", 1, 0, 8)>>\
<<run setup.bumpIdentity("penitent", 1)>>\
<<run setup.bumpIdentity("romantic", 1)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"Tell them who moved," you say. "Tess. Beast. Snow. Kessler if he survives his own fear. Put names where slogans usually go."
Briar smiles without softness. "Careful. Names can sue. Names can also vote."
<<set $flags.finaleBriarSeen to true>>\
<<run setup.bumpRel("briar", 4)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<run setup.bumpIdentity("reformer", 2)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"Nothing," you say. "If the work holds, people will know. If it fails, they should not have to applaud wreckage."
Briar studies you. "That is either wisdom or exhaustion. Lucky for you, both photograph badly."
<<set $flags.finaleBriarSeen to true>>\
<<run setup.bumpRel("briar", 2)>>\
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
<<run setup.bumpIdentity("operator", 1)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]The reporter is named Vale, according to the place card she stole from someone else's table. She has a pencil, a clean cuff, and patience that outlasts careers.
"One quote," she says. "No speech. What did today prove?"
Behind her, two donors pretend not to listen. A waiter slows down. Somewhere near the band, your name changes shape in someone else's mouth.
[[Tell the public truth - the city was held together by people it ignores.|Slipper Reporter Truth]]
[[Control the frame - reform worked because leadership made it work.|Slipper Reporter Frame]]
[[Refuse performance - no quote while people are still paying.|Slipper Reporter Refuse]]"It proved the city survives because ignored people keep records, heat, children, and promises alive," you say. "Print their names before mine."
Vale writes fast. "That will anger donors."
"Good. They can afford an emotion."
<<set $flags.finaleReporterSeen to true>>\
<<run setup.bumpPlayer("scandal", 2, 0, 100)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<run setup.bumpIdentity("reformer", 2)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"It proved leadership still matters," you say. "Not crowns. Not nostalgia. Decisions under pressure."
Vale's pencil pauses. "That sounds expensive."
"Most true things are."
<<set $flags.finaleReporterSeen to true>>\
<<run setup.bumpPlayer("influence", 5, 0, 100)>>\
<<run setup.bumpCity("rumorHeat", 2, 0, 100)>>\
<<run setup.bumpIdentity("opportunist", 1)>>\
<<run setup.bumpIdentity("operator", 1)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"No quote," you say. "People are still paying for my better lines."
Vale blinks, disappointed, then interested despite herself. "Silence is a quote if I frame it right."
"Then frame it as late."
<<set $flags.finaleReporterSeen to true>>\
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
<<run setup.bumpIdentity("penitent", 1)>>\
<<run setup.bumpIdentity("romantic", 1)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]The clerk by the service hall is named Alder. You remember after he tells you, which is worse than forgetting.
"You signed my transfer during the old administration," he says. "Wrong office. Wrong supervisor. Six months of salary lost in appeal. I kept the letter. Everybody keeps one letter."
He is not loud. The room does not need him to be.
[[Pay him tonight and put the correction in writing.|Slipper Debtor Pay]]
[[Offer him a position in the campaign audit.|Slipper Debtor Hire]]
[[Admit it and refuse to buy absolution at a party.|Slipper Debtor Admit]]You write the number on a napkin, then add the date, witness, and your signature.
Alder reads it twice. "This does not fix the year."
"No. It fixes tonight's lie that I forgot it."
<<set $flags.finaleDebtorSeen to true>>\
<<run setup.bumpPlayer("gold", -15, 0, 200)>>\
<<run setup.bumpPlayer("scandal", -2, 0, 100)>>\
<<run setup.bumpIdentity("penitent", 2)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"Join the audit," you say. "Paid. Public. Authority to find every letter like yours."
Alder's face closes, then reopens by a fraction. "That is a job and a threat."
"Most useful jobs are."
<<set $flags.finaleDebtorSeen to true>>\
<<run setup.bumpPlayer("influence", 2, 0, 100)>>\
<<run setup.bumpResource("promises", 1, 0, 8)>>\
<<run setup.bumpIdentity("operator", 1)>>\
<<run setup.bumpIdentity("reformer", 1)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]"I did it," you say. "Or I signed what did it. I will not buy forgiveness between songs."
Alder folds the old letter back into his coat. "Then remember my face after the room stops looking."
<<set $flags.finaleDebtorSeen to true>>\
<<run setup.bumpPlayer("stress", 3, 0, 100)>>\
<<run setup.bumpIdentity("penitent", 1)>>\
<<run setup.bumpIdentity("scar", 1)>>\
[[Return to the Slipper floor.|Glass Slipper Floor]]The balcony door sticks before it opens. Outside, rain threads the alley behind the Slipper and turns cigarette ash into paste.
For one minute, the room cannot see you. That makes the choice less theatrical and more dangerous.
What promise can you keep after the music ends?
<<tag "Public" "public">> [[Repair in public - budgets, names, hearings, ugly daylight.|Slipper Vow Repair]]
<<tag "Sealed" "private">> [[Contain the damage - quiet files, clean exits, fewer bodies in the blast.|Slipper Vow Contain]]
<<tag "Faces" "calm">> [[Pay the personal debts - apologies first, politics second.|Slipper Vow Personal]]
<<tag "Edge" "risk">> [[Keep the leverage - survive long enough to choose later.|Slipper Vow Leverage]]You choose daylight, which means every mistake gets a witness and every fix gets a line item.
The rain does not applaud. Good.
<<set $conv.finaleVow to "repair">>\
<<run setup.bumpIdentity("reformer", 3)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<run setup.bumpResource("promises", 1, 0, 8)>>\
<<stamp "Vow Logged · Repair" "archive">>
[[Return to the Slipper floor.|Glass Slipper Floor]]You choose containment: sealed testimony, disciplined favors, fewer people fed to the room for moral theater.
It is not pretty. Pretty has a body count tonight.
<<set $conv.finaleVow to "contain">>\
<<run setup.bumpIdentity("operator", 3)>>\
<<run setup.bumpCity("rumorHeat", -4, 0, 100)>>\
<<run setup.bumpPlayer("stress", 3, 0, 100)>>\
<<stamp "Vow Logged · Contain" "sealed">>
[[Return to the Slipper floor.|Glass Slipper Floor]]You choose the faces: Snow's water glass, Bigby's empty hand over an empty drink, Beast by the coats, Briar's napkin, Alder's letter.
The city can wait one breath while you stop pretending it is abstract.
<<set $conv.finaleVow to "personal">>\
<<run setup.bumpIdentity("romantic", 3)>>\
<<run setup.bumpIdentity("penitent", 1)>>\
<<run setup.bumpPlayer("stress", -3, 0, 100)>>\
<<run setup.bumpResource("promises", 1, 0, 8)>>\
<<stamp "Vow Logged · Personal" "filed">>
[[Return to the Slipper floor.|Glass Slipper Floor]]You choose leverage because tomorrow will not care how clean tonight felt.
Names. Favors. Debt. Timing. The old tools still fit your hand.
<<set $conv.finaleVow to "leverage">>\
<<run setup.bumpIdentity("opportunist", 3)>>\
<<run setup.bumpResource("dirt", 1, 0, 6)>>\
<<run setup.bumpPlayer("influence", 3, 0, 100)>>\
<<run setup.bumpIdentity("scar", 1)>>\
<<stamp "Vow Logged · Leverage" "warning">>
[[Return to the Slipper floor.|Glass Slipper Floor]]<<set _endingScore to setup.scoreEnding()>>\
<<set _resolvedAll to $meta.completedArcs gte 3>>\
The band starts something slow enough to sound like judgment.
<<if $quests.wolfCase is "resolved">><<print setup.moralMirrorLine("wolfCase")>><</if>>\
<<if $quests.crookedLane is "resolved">><<print setup.moralMirrorLine("housing")>><</if>>\
<<if $quests.ledgerAudit is "resolved">><<print setup.moralMirrorLine("ledger")>><</if>>\
<<if $conv.finaleVow is "repair">>\
You chose daylight. Now every person who believed you gets to see whether you meant it.
<<elseif $conv.finaleVow is "contain">>\
You chose containment. The room will call it caution if you win and cowardice if you lose.
<<elseif $conv.finaleVow is "personal">>\
You chose the faces over the frame. Fabletown has ruined men for less sentimental math.
<<else>>\
You chose leverage. It answers quickly, then sends invoices for years.
<</if>>\
<<print setup.identityLine()>>
<<if $player.scandal gte 70 or $city.rumorHeat gte 75 or $identity.scar gte 9>>\
The room welcomes you with polite smiles and closed circles. You are famous and somehow absent.
[[Let the polite circle close around you.|Ending Burn Notice]]
<<elseif $truth.public gte 5 and $axis.integrity gte 7 and $identity.reformer gte 6>>\
The room expected a prince. It gets minutes, names, line items, and witnesses.
[[Publish the ugly daylight.|Ending Public Reformer]]
<<elseif $axis.leverage gte 8 and $truth.spin gte 5 and $identity.opportunist gte 5>>\
Every useful secret in the room has found your pocket.
[[Let the room come to your table.|Ending Velvet Knife]]
<<elseif $debt.promiseHeat gte 8 or $debt.collectors gte 2>>\
Promises arrive before dawn wearing other people's coats.
[[Answer the collectors.|Ending Promises Due]]
<<elseif $finch.retaliation gte 5 and $resources.dirt gte 2>>\
Finch's network is wounded enough to scream and alive enough to bite.
[[Walk into the counter-leak.|Ending Finch Countermove]]
<<elseif $player.glamour lte 45 and $resources.goodwill gte 4 and $axis.integrity gte 4>>\
The room sees the tired man under the polish and does not look away.
[[Leave without the crownlight.|Ending Crownless Prince]]
<<elseif $conv.finaleVow is "repair" and _endingScore gte 78 and $resources.goodwill gte 2>>\
Tonight your enemies look expensive and uncertain.
[[Take your corner of the room.|Ending Velvet Crown]]
<<elseif $flags.confessedDebt and $rel.snow gte 24 and ($identity.penitent gte 3 or $conv.finaleVow is "personal")>>\
Snow finds you before the first song ends.
[[Let her find you at the bar.|Ending Honest Debt]]
<<elseif $conv.finaleVow is "leverage" and $resources.dirt gte 3 and $resources.promises gte 3>>\
You have enough leverage to move the room without raising your voice.
[[Sit at the table and wait.|Ending Knife Smile]]
<<elseif $identity.romantic gte 4 and $identity.scar lt 9>>\
You kept choosing the person inside the problem. The city noticed, then charged admission.
[[Leave before the room can make it pretty.|Ending Romantic Survivor]]
<<elseif _resolvedAll>>\
You kept every plate spinning, but your hands are cut.
[[Walk the long corridor home.|Ending Long Corridor]]
<<else>>\
You survive the night. In Fabletown, that counts.
[[Step out under the awning.|Ending Rain Prince]]
<</if>>\<<endingCard "Velvet Crown" "Filed under: power, paid for in private">>
By closing time, three crises are contained, two alliances are stronger, and one newspaper editor is suddenly very interested in your reform package.
Bigby gives you a nod from the bar mirror. Beast actually laughs once. Snow doesn't smile or look away.
You leave with wet streets under your shoes.
Fin
[[Play again.|StoryReset]]<<endingCard "Honest Debt" "Filed under: truth before it was useful">>
Snow waits for you on the sidewalk after midnight.
"You finally told the truth before it was useful," she says. "Keep doing that and you might become dangerous in a way this city understands."
No crowns. No speeches. Just a narrow truce that feels almost like grace.
Fin
[[Play again.|StoryReset]]<<endingCard "Knife Smile" "Filed under: leverage held without spending">>
At your corner table, people come to you one at a time, each with a request and a weakness.
You collect both. You spend neither tonight.
When dawn threatens the windows, beloved is off the table.
Fin
[[Play again.|StoryReset]]<<endingCard "Public Reformer" "Filed under: ugly daylight, kept ugly">>
By morning, the first memo is ugly enough to be believed.
Names stay attached to the work. Tess gets a line. Alder gets a correction. Snow gets records that do not make her carry your sins alone. Bigby hates the headline and reads every word.
The city does not forgive you. It starts measuring you in deliverables.
Fin
[[Play again.|StoryReset]]<<endingCard "Velvet Knife" "Filed under: charm, sharpened, drawered">>
The Slipper comes to your table in single file.
Requests first. Weakness second. Money third. By dawn, Finch's people are selling each other for quieter exits, and half the room has mistaken fear for respect.
You do not wear the crown. You keep it sharpened in a drawer.
Fin
[[Play again.|StoryReset]]<<endingCard "Promises Due" "Filed under: every word, with witnesses">>
The collectors find you before the rain stops.
Union cousins, clerks, tenant mothers, two donors, one old lover's attorney. Everyone has your exact words. Everyone brought a witness.
You survive the night by promising less. It feels like learning a new language under glass.
Fin
[[Play again.|StoryReset]]<<endingCard "Finch Countermove" "Filed under: paper warfare, return fire">>
Finch does not need to enter the Slipper to cut you.
By dawn, a packet lands at three offices: true things arranged like lies, lies notarized by frightened people, one photograph cropped with surgical malice. You keep dirt. He keeps reach.
The next war starts in paper.
Fin
[[Play again.|StoryReset]]<<endingCard "Crownless Prince" "Filed under: absence of spectacle">>
No one photographs you on the way out.
The glamour has thinned. Your tie is wrong. Your shoes are wet. For once, the absence of spectacle feels like evidence.
Somewhere behind you, a tenant laughs at something Beast said. Snow locks a drawer. Bigby lets a cigarette burn unsmoked. You walk home without crownlight and do not vanish.
Fin
[[Play again.|StoryReset]]<<endingCard "Romantic Survivor" "Filed under: the human answer, paid in full">>
Outside, the Slipper's music turns soft behind glass.
You have lost arguments, money, posture, and several clean exits. People look for you when the room gets cold anyway.
That is not a crown. It might be better.
Fin
[[Play again.|StoryReset]]<<endingCard "Long Corridor" "Filed under: competent, with cuts">>
You solved everything that could be solved in one day. The rest waits in folders, in mirrors, in men with soft hands and hard money.
Victory in Fabletown looks competent.
Fin
[[Play again.|StoryReset]]<<endingCard "Burn Notice" "Filed under: smile, recognized by another name">>
The tabloids never print your real name, but they don't need to.
By morning, your allies are taking calls they wish they were not taking, and your enemies are suddenly very generous with advice.
You still have your smile.
Fin
[[Play again.|StoryReset]]<<endingCard "Rain Prince" "Filed under: not finished, not punished">>
Rain needles the avenue outside the Slipper. You stand under the awning, tie loose, phone full of maybe.
You're not finished.
Fabletown calls that a decent night.
Fin
[[Play again.|StoryReset]]<<run Engine.restart()>>\The records annex hums under fluorescent tubes. The clerks have patience you do not: they have watched kingdoms become file numbers.
Snow's window is still lit. Her coat hangs on the chair behind her, sleeves rolled to the elbow, fountain pen moving in quick precise strokes.
<<set _ledgerPressure to setup.applyCrisisPressure("ledger")>>\
<<if _ledgerPressure neq "">>\
<<print _ledgerPressure>>
<</if>>\
<<if not $flags.openedWithSnow>>\
She looks up and takes you in for one measured second.
Snow White, older than the storybooks sold, pins her hair so light won't catch wrong. A few pale strands escaped anyway. Plain watch, no other jewelry, faint ring line she no longer fills. Shoulders squared, spine straight, breath counted.
"If you came to charm me, save it. If you came to settle your file, sit down. I have twenty minutes before budget committee."
You pull out the chair anyway. The legs scrape, too loud. She doesn't wince. The silence after the scrape is worse.
You came ready to steer her reaction. She called you here to steer ink.
"I knew you'd keep this office exactly this cold," you say.
"Cold keeps people honest before they start negotiating with their nerves." She caps the pen with a click that lands like punctuation. "You included."
You glance at the folder under her hand. Your name is written across the tab in her narrow script.
"You reopened everything."
"I reopened what was never closed." She slides the folder toward the glass. A line, not a present. "Debts from the old administration. Campaign liabilities from your deputy years. Private loans crossing Bigby's blackmail mess. You get one chance to handle this like an adult."
Snow's expression softens at the corners, then locks back into place, like she heard a camera shutter in another room.
"You did not survive the Homelands by confusing sentiment with policy. Neither did I. Sit down, Charming."
<<set $flags.openedWithSnow to true>>\
<<run setup.bumpRel("snow", 2)>>\
<<run setup.advanceScene("quiet")>>\
[[Sit and hear her out.|Snow Session Desk]]
<<else>>\
<<set _rs to setup.recordsRevisitOpen()>>\
<<if _rs neq "">>\
<<print _rs>>
<<else>>\
Snow turns a page, marks a margin in red ink, and finally meets your eyes.
<</if>>\
"Tell me what kind of day this is," she says, "because I can process damage control, honesty, or ambition. I don't have time for all three."
[[Honesty - no polish, just the file.|Snow Reentry Honest]]
[[Damage control - help me bury the noise.|Snow Reentry Damage]]
[[Ambition - I'm still running.|Snow Reentry Ambition]]
<</if>>\"Honesty," you say. "Ugly, if it has to be."
Snow's pen stops. "Then don't decorate it."
<<run setup.bumpRel("snow", 2)>>\
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
[[Sit with her.|Snow Session Desk]]"Damage control," you say. "The city doesn't need another story about us and needs fewer splinters."
Snow exhales. "Control is steering the hit. Erasure is lying about the bruise."
<<run setup.bumpRel("snow", 1)>>\
<<run setup.bumpCity("rumorHeat", -2, 0, 100)>>\
[[Sit with her.|Snow Session Desk]]"Ambition," you admit. "I'm not pretending I'm above wanting something."
You leave the sentence unpolished on purpose. Her clock eats performances.
Snow studies you. "Wanting isn't the sin. Pretending you don't is."
<<run setup.bumpPlayer("influence", 2, 0, 100)>>\
[[Sit with her.|Snow Session Desk]]<<if $quests.ledgerAudit is "resolved">>\
The ledger file is sealed and stamped under revised terms. Snow has tucked it into a locked drawer that probably contains every argument the two of you ever lost.
"Don't make me reopen it next quarter," she says.
<<if $quests.crookedLane is "resolved" and not $flags.snowBeastSynthDone>>\
[[Cross-file with Beast - vouchers, ledger restitution, Crooked money.|Snow Beast Synthesis]]
<</if>>\
[[Talk about the boys - off the record.|Snow Resolved Kids]]
[[Ask if she trusts you more or less than yesterday.|Snow Resolved Trust]]
[[Leave the file alone - small talk only.|Snow Resolved Small]]
[[Step back into the street.|Fabletown Artery]]
<<else>>\
Ledger pressure: $clocks.ledger / 3
Snow fans three clipped tabs with the edge of her hand: click, click, click.
"These are your lanes," she says. "Operational cleanup, personal disclosure, legal disposition. Pick an order. Pick carefully." Her eyes flick to the clock. "Do not confuse slowness with mercy. I can be slow and still ruin you."
The tabs resemble a printed choice menu. Behind them sit consecutive Tuesdays nobody glamorizes.
<<if not $flags.snowWorkMapped>>\
[[Map the operational chain with her.|Snow Workroom Strategy]]
<<else>>\
[[Re-open the operational chain with fresh pressure.|Snow Workroom Revisit]]
<</if>>\
<<if not $flags.snowPersonalTalked>>\
[[Talk about history before terms.|Snow Personal Thread]]
<<else>>\
[[Revisit what she said about choices and reputation.|Snow Personal Revisit]]
<</if>>\
<<if not $flags.snowTeaTaken>>\
[[Take a coffee break across the glass.|Snow Tea Break]]
<<else>>\
[[Take a second break and test the truce.|Snow Tea Revisit]]
<</if>>\
<<if $flags.snowWorkMapped and $flags.snowPersonalTalked and $flags.snowTeaTaken and not $flags.snowSynthesisDone>>\
[[Thread all three conversations into one agreement.|Snow Synthesis Scene]]
<</if>>\
[[Choose a hard settlement move.|Ledger Decision Desk]]
[[Return to the artery.|Fabletown Artery]]
<</if>>"They're fine," she says before you can ask. "Tired. Loud. Mine."
You hold her gaze a half-second too long, then look away first, like you learned something.
"Good."
"Don't perform concern," Snow says. "Just show up when you say you will."
<<if $conv.bigbySnow is "kids">>\
Neither of you says Bigby's name. The kitchen table doesn't need a third chair in this sentence.
<</if>>\
<<if not $flags.snowResolvedKidsSeen>>\
<<set $flags.snowResolvedKidsSeen to true>>\
<<run setup.bumpRel("snow", 3)>>\
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
<<run setup.bumpIdentity("romantic", 2)>>\
<<else>>\
Snow has already given you the part of that answer she can afford.
<</if>>\
[[Return to Snow's desk.|Snow Session Desk]]Snow answers before you've finished shaping the question into something safer. "Less, if you lie. More, if you don't." She says it the way she'd read a statute aloud: no flourish, no invitation to be clever back.
You wait for the soften. It doesn't come.
"If you want romance," she adds, quieter, "go polish your glamour downstairs. If you want this relationship to survive the quarter, live in that sentence."
<<if not $flags.snowResolvedTrustSeen>>\
<<set $flags.snowResolvedTrustSeen to true>>\
<<run setup.bumpRel("snow", 2)>>\
<<run setup.bumpPlayer("stress", 1, 0, 100)>>\
<<else>>\
The window stays narrow. Asking again does not widen it.
<</if>>\
[[Return to Snow's desk.|Snow Session Desk]]You talk about weather, committee, and coffee, nothing that can subpoena either of you.
Snow's shoulders drop a fraction, then remember who she is in this building.
<<if not $flags.snowResolvedSmallSeen>>\
<<set $flags.snowResolvedSmallSeen to true>>\
<<run setup.bumpPlayer("stress", -3, 0, 100)>>\
<<else>>\
Small talk stays small. That is the mercy of it.
<</if>>\
[[Return to Snow's desk.|Snow Session Desk]]You lean in while Snow rotates the ledger so both of you read the same columns.
Charm earned you the chair. The initials want your knuckle to stay on the line.
"These initials," you say, tracing one line with a knuckle. "Same broker Bigby flagged."
"I know." Her pen stills. "He stitched three agencies together through shell vendors and hid it inside your campaign reimbursements. Elegant fraud if you grade craftsmanship."
"And ugly politics if you're grading consequences."
"Politics is consequences. Craft is what people say when they don't want to say harm." One controlled breath. "Do not look at me like I enjoy this. I'm good at it. That's the problem."
She pulls another file, this one thicker, with hearing transcripts clipped along the side.
"If we prosecute publicly, council fractures before winter appropriations. If we bury it, the broker keeps leverage on half this building. If we narrow the charge and seal testimony, the city stays upright and spectacle dies."
"You already decided."
"I chose the route that keeps school lunches funded and heat running in January." She looks straight at you. "I asked you here because you still know how to read a room full of liars. Prove me right once. Please."
The please lands like a clerical error she cannot retract.
You sit back.
"There it is. A compliment filed as civic necessity."
Snow's mouth begins to curve, then hardens when she remembers compliments are currency.
"Take it before I rescind it."
How do you answer her?
[[Sign the memo - no speech, just ink.|Snow Work Sign]]
[[Push - who eats the spectacle if you narrow the charge.|Snow Work Push]]
[[Deflect - break the tension before it turns cruel.|Snow Work Joke]]<<set $conv.snowWork to "sign">>\
You pick up the pen and sign without performing relief. The line holds.
Snow watches the ink dry like it's a vital sign.
"Good." She says it flat, then softer without meaning to. "First honest move you've made in this office today. Don't make me regret saying that out loud."
<<if not $flags.snowWorkMapped>>\
<<set $flags.snowWorkMapped to true>>\
<<run setup.bumpRel("snow", 7)>>\
<<run setup.bumpPlayer("influence", 4, 0, 100)>>\
<<run setup.bumpResource("dirt", 1, 0, 6)>>\
<<run setup.clockArc("ledger", 1)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
Snow hands you a duplicate memo and circles one line.
"I still need witness priority. Same stakes. Fewer speeches."
<<run setup.bumpPlayer("stress", -3, 0, 100)>>\
<</if>>\
[[Return to Snow's desk.|Snow Session Desk]]<<set $conv.snowWork to "push">>\
"The city's going to call it a cover-up if we seal it," you say. "Who eats that story? You? Beast? Bigby when someone files a complaint?"
Snow doesn't flinch. "We eat it in committee, not in the tabloids. That's the job."
"That's a lot of appetite."
"Then chew carefully." She slides the memo. "Sign. Or don't. But don't pretend spectacle is worse than families freezing."
You sign. Your hand's steady. Hers is too.
<<if not $flags.snowWorkMapped>>\
<<set $flags.snowWorkMapped to true>>\
<<run setup.bumpRel("snow", 5)>>\
<<run setup.bumpPlayer("influence", 6, 0, 100)>>\
<<run setup.bumpPlayer("stress", 3, 0, 100)>>\
<<run setup.bumpResource("dirt", 1, 0, 6)>>\
<<run setup.clockArc("ledger", 1)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
She taps the memo. "Again. The broker moved a date."
<<run setup.bumpRel("snow", 2)>>\
<<run setup.advanceScene("quiet")>>\
<</if>>\
[[Return to Snow's desk.|Snow Session Desk]]<<set $conv.snowWork to "joke">>\
"If I sign this," you say, "do I get a sticker? Gold star? Tiny crown?"
Snow's mouth twitches: part smile, part weapon, neither committed.
"You get to keep your office out of my inbox for another week. That's the sticker."
"Romantic."
"Functional." She pushes the pen toward you.
You sign. The joke lands because you didn't use it to hide the hand shaking.
<<if not $flags.snowWorkMapped>>\
<<set $flags.snowWorkMapped to true>>\
<<run setup.bumpRel("snow", 6)>>\
<<run setup.bumpPlayer("glamour", 3, 0, 100)>>\
<<run setup.bumpPlayer("scandal", 1, 0, 100)>>\
<<run setup.bumpResource("dirt", 1, 0, 6)>>\
<<run setup.clockArc("ledger", 1)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
"Still funny?" she asks. "Sign again."
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
<</if>>\
[[Return to Snow's desk.|Snow Session Desk]]Snow has already stacked the files in the order you argued for earlier.
"I knew you'd come back," she says. "You run to mechanics when feelings get expensive."
<<if $conv.snowWork is "sign">>\
Last time you signed fast. She expects that discipline again.
<<elseif $conv.snowWork is "push">>\
Last time you pushed on spectacle. She's ready for it. Calm in the way that means she's tired.
<<else>>\
Last time you joked to survive the room. You earned a flicker she would not repeat.
<</if>>\
You tap the procurement rider. "This is the part that keeps roofs legal."
Snow follows your finger. "It's also the part that shows up in audits when someone decides charm is a line item." She taps emergency spend. "If we tighten it, you lose flexibility in your campaign spending."
How do you answer this pass?
[[Ink first - sign the tightened rider before you argue.|Snow Work Rev Sign]]
[[Push - who eats the council squeal if procurement goes rigid.|Snow Work Rev Push]]
[[Deflect - break the tension before it turns cruel.|Snow Work Rev Joke]]<<set $conv.snowWorkRevisit to "sign">>\
You reach for the pen before any speech can form.
<<if $conv.snowWork is "sign">>\
A second signature lands clean. Snow exhales through her nose, recognition more than relief. "Habit," she says. "The dangerous kind. The one that keeps people housed."
<<elseif $conv.snowWork is "push">>\
Last time you wanted names for the spectacle; this time you let the paper talk. She studies the wet ink. "Quiet suits you when the paper does the arguing. Don't waste it on the next room."
<<else>>\
Last time you joked; this time you choose ink. Snow doesn't praise you.
<</if>>\
[[Close the revision.|Snow Workroom Rev Merge]]<<set $conv.snowWorkRevisit to "push">>\
"Then tighten it," you say, "and tell me which council seat screams first when pet line items get audited."
Snow's smile is thin. "Mine, then yours, then every donor lunch that thought charm could substitute for receipts."
<<if $conv.snowWork is "push">>\
You asked that question once already. This time she answers with numbers: who loses a headline, who loses a donor lunch.
<<elseif $conv.snowWork is "sign">>\
You stayed quiet last time; now you want the blade named. She gives you three names and the order they'll yell.
<<else>>\
Last time you deflected with a joke. Now you ask for blood on the spreadsheet. She doesn't flinch as she maps it.
<</if>>\
[[Close the revision.|Snow Workroom Rev Merge]]<<set $conv.snowWorkRevisit to "joke">>\
"If we tighten it," you say, "can we at least pretend the borough chairs won't treat this like a personal insult?"
Snow snorts - actual sound, quickly killed. "We can pretend. They'll still call."
<<if $conv.snowWork is "joke">>\
Second pass, same survival tactic. She's not fooled. She's used to you.
<<elseif $conv.snowWork is "sign">>\
Last time you were all ink; this time you let the room breathe. She starts to thank you and stops, like thanks would commit her to more than she meant.
<<else>>\
Last time you pushed; this time you let the pressure leak as humor. She rolls her eyes and writes a margin note: stop flirting with collapse.
<</if>>\
[[Close the revision.|Snow Workroom Rev Merge]]Snow caps her pen.
<<if $conv.snowWorkRevisit is "sign">>\
"Procurement's tighter," she says. "Your campaign flexibility isn't. Live with it."
<<elseif $conv.snowWorkRevisit is "push">>\
"Spectacle's priced," she says. "You asked for the receipt."
<<else>>\
"Laugh if you need to," she says. "The leak still hears you. So do I."
<</if>>\
<<run setup.bumpRel("snow", 3)>>\
<<run setup.bumpPlayer("influence", 2, 0, 100)>>\
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Snow's desk.|Snow Session Desk]]You let the files sit for a minute. Outside the glass, a clerk coughs. Inside, it is you, her, and a fan humming overhead.
"Do you ever get tired," you ask, "of us speaking money like it was our only language?"
Snow rests her wrist on the folder edge. Tendons sharp. Nails short. No polish. The look she gives you is old and steady, a look that once decided crowns and cells.
"No. I get tired of pretending money wasn't part of it." She does not soften it.
What's your move?
[[Agree - then say what else you shared besides money.|SnowPer Money]]
[[Steer toward the boys - what they might read tomorrow.|SnowPer Kids]]
[[Own the past - vows, slogans, and how you left.|SnowPer Own]]<<set $conv.snowPersonal to "money">>\
"That's fair."
"It's accurate." She folds her hands. "When we were married in the Homelands, you treated vows like campaign slogans, useful in public, negotiable in private. I learned that lesson once. I didn't repeat it."
You don't interrupt, not yet.
[[Let her finish - silence as respect.|SnowPer Money Listen]]
[[Interrupt - say you know you failed her.|SnowPer Money Fail]]<<set $conv.snowPersonal to "kids">>\
"I'm not here to litigate our marriage," you say. "I'm asking what happens when the paper prints my name next to yours in the same sentence as fraud."
Snow's jaw tightens on a beat nobody else would clock.
"Then you shouldn't have handed them the sentence." Her voice stays level. "The boys don't need our history lesson. They need fewer headlines that sound like gunshots."
"Do they ask about me?"
"Sometimes." She doesn't look away. "I answer what I can. I don't perform grief for your campaign."
[[Press - ask what you'd tell them about you now.|SnowPer Kids Press]]
[[Back off - respect the boundary.|SnowPer Kids Bound]]<<set $conv.snowPersonal to "own">>\
"I deserved worse than the way you left," you say.
Snow doesn't soften, and she shouldn't.
"You did," she says quietly, "and I didn't have time to give it to you. There was a kingdom burning and seven men arguing over procedure."
You laugh under your breath, not because it's funny.
"You always knew how to place me in a room."
"I placed everyone in rooms. That was the job. Then the Adversary came and every room turned into triage."
[[Stay raw - no polish.|SnowPer Own Raw]]
[[Defend the man you were - pride as shield.|SnowPer Own Pride]]<<set $conv.snowPersonalBeat to "listen">>\
You let her finish. The room doesn't deserve a clever answer yet.
[[Let it land.|Snow Personal Merge]]<<set $conv.snowPersonalBeat to "fail">>\
"I failed you," you say, plain, ugly, no microphone.
Snow's throat moves. "Yes. You did."
[[Let it land.|Snow Personal Merge]]<<set $conv.snowPersonalBeat to "press">>\
"What would you tell them about me now?" you ask.
Snow's voice goes precise. "That you're trying. That trying doesn't make you safe to bet a childhood on."
[[Let it land.|Snow Personal Merge]]<<set $conv.snowPersonalBeat to "bound">>\
You lift your hands slightly, surrender without theater.
Snow exhales. "Good."
[[Let it land.|Snow Personal Merge]]<<set $conv.snowPersonalBeat to "raw">>\
"I don't have a pretty version of this," you say.
Snow nods once, impatient with herself for needing the ugly one. "Then give me the version that doesn't polish itself for an audience."
[[Let it land.|Snow Personal Merge]]<<set $conv.snowPersonalBeat to "pride">>\
"I was surviving the same war you were," you say.
Snow doesn't blink. "A lot of people survive the night and still vanish from the life they promised."
[[Let it land.|Snow Personal Merge]]Her fingers drift to the spine of another folder marked EDUCATION ALLOTMENTS.
<<if $conv.snowPersonal is "money">>\
<<if $conv.snowPersonalBeat is "fail">>\
The silence after your confession isn't kind, only true.
<<elseif $conv.snowPersonalBeat is "listen">>\
You waited. That matters more than another speech.
<<else>>\
You stare at the dust line where the morning sun reaches the tile.
"I deserved worse than the way you left," you add, because you owe the sentence even if it costs.
"You did," she says, same as always, not cruel, just true.
<</if>>\
<<elseif $conv.snowPersonal is "kids">>\
<<if $conv.snowPersonalBeat is "press">>\
You hold her answer like a bruise. Trying isn't safe. Fine. Neither is your name in print next to hers.
<<elseif $conv.snowPersonalBeat is "bound">>\
You don't push. The line she drew stays up. That costs you something. Good.
<<else>>\
"I'll keep the fraud work clean. That's what I can offer." You say it to her eyes, not the folder.
"Offer it to the ledger," she says. "Not to me." She still doesn't look away, not yet.
<</if>>\
<<else>>\
<<if $conv.snowPersonalBeat is "raw">>\
The silence after your admission isn't comfortable, but it's workable.
<<elseif $conv.snowPersonalBeat is "pride">>\
Pride still bleeds through your teeth. She notices. She doesn't reward it, but she doesn't walk out.
<<else>>\
You let the silence hold. Sometimes that's the only apology you've got left.
<</if>>\
<</if>>\
"Now I go home to children who ask why the city paper thinks leadership is a contact sport." Her eyes lift again. "They're old enough to read headlines, Charming. They're old enough to recognize your name."
<<if $conv.snowPersonal isnot "kids">>\
"Do they ask about me?"
Snow doesn't answer at once.
"They ask about choices. I answer that choices are louder than reputations."
You swallow. "Then let mine be loud in the right direction, or quiet enough to stop hurting them."
Snow's mouth twitches, not quite a smile, not quite pity.
<</if>>\
<<if $conv.snowPersonal is "kids">>\
"They ask about choices," she says finally. "So do I."
<<run setup.bumpRel("snow", 1)>>\
<</if>>\
<<if not $flags.snowPersonalTalked>>\
<<set $flags.snowPersonalTalked to true>>\
<<run setup.bumpRel("snow", 8)>>\
<<run setup.bumpPlayer("stress", -6, 0, 100)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
Snow exhales, calmer now.
"Thanks for staying in the room this time," she says.
<<run setup.bumpRel("snow", 2)>>\
<</if>>\
[[Return to Snow's desk.|Snow Session Desk]]Snow closes the active folder and gives you the look she uses when she's deciding whether to reward honesty or punish performance.
<<if $conv.snowPersonal is "money">>\
Last time you let the marriage talk land. She's not softer now, only more precise.
<<elseif $conv.snowPersonal is "kids">>\
Last time you steered toward the boys. She hasn't forgotten. She doesn't forgive cheaply.
<<elseif $conv.snowPersonal is "own">>\
Last time you owned the worst of it. That buys you a second hearing, not a pardon.
<</if>>\
"Earlier you asked whether the boys ask about you," she says. "You didn't ask out of curiosity. You asked to see whether your absence still has a shape in this house."
How do you answer?
[[Admit it - you wanted a shape to exist.|Snow Rev Admit]]
[[Deny it - say you needed operational truth.|Snow Rev Deny]]
[[Deflect - ask what shape would even look like now.|Snow Rev Deflect]]You nod once. No flourish. "You read it right."
Her voice softens a fraction. "Absence has a shape. So does showing up. Choose which one you're practicing."
<<run setup.bumpRel("snow", 5)>>\
<<run setup.bumpPlayer("stress", -4, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Land the exchange.|Snow Rev Merge]]"I needed to know what the paper could do to you," you say. "That's operational."
Snow's mouth tightens. "Operational. Fine. Then treat your life like an operation - stop improvising feelings in my office."
<<run setup.bumpRel("snow", 2)>>\
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Land the exchange.|Snow Rev Merge]]"What shape would it even be now?" you ask. "A hole? A headline? A kid asking why Dad's name sounds like a joke?"
Snow exhales. "Don't perform grief."
"I'm not..."
"Aren't you?" She taps the desk. "Then stop auditioning."
<<run setup.bumpRel("snow", 3)>>\
<<run setup.bumpPlayer("scandal", 1, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Land the exchange.|Snow Rev Merge]]You rest your hands on the edge of the desk.
"I'm tired of being remembered as the man I was when every room had an audience."
Snow's expression shifts.
"You're still very aware of the audience."
"Yes."
"Good. Keep that awareness. Lose the vanity."
You laugh once.
"That sounds like a path forward."
"It's a condition," she says. "Not a promise."
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
[[Return to Snow's desk.|Snow Session Desk]]Snow stands, disappears into the tiny office kitchenette, and returns with two chipped mugs that read FABLETOWN PROCUREMENT.
"If this is poisoned," you say, "it's bureaucratically consistent."
"Budget poison only. Drink."
You do. The coffee is terrible in an admirably democratic way.
"Do you remember the farm census winter?" Snow asks. "You arrived in a white coat and tried to charm six hundred angry tenants into filling forms."
"It worked."
"It worked because Flycatcher had already spent three days apologizing to everyone door to door."
"I'm choosing to hear that as teamwork."
Snow finally laughs, the sound brief and unguarded.
"You can hear it however you like as long as you stop rewriting every victory as a solo performance."
You raise the mug in surrender.
"Fair."
How do you land the moment?
[[Warmth - admit you missed this.|Snow Tea Warm]]
[[Needle - say she still rewrites your victories.|Snow Tea Needle]]
[[Truce - no fight, just the cup.|Snow Tea Truce]]<<set $conv.snowTeaBeat to "warm">>\
"I missed this," you say - the cheap mugs, the terrible coffee, the way she looks at you like you're a problem worth solving.
Snow's eyes narrow. "Don't get sentimental. Get consistent."
<<if not $flags.snowTeaTaken>>\
<<set $flags.snowTeaTaken to true>>\
<<run setup.bumpRel("snow", 6)>>\
<<run setup.bumpPlayer("stress", -9, 0, 100)>>\
<<run setup.bumpPlayer("glamour", 4, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
<<run setup.bumpRel("snow", 2)>>\
<<run setup.bumpPlayer("stress", -4, 0, 100)>>\
<</if>>\
[[Return to Snow's desk.|Snow Session Desk]]<<set $conv.snowTeaBeat to "needle">>\
"You still rewrite my victories as solo acts," you say.
Snow snorts. "You still take credit for teamwork until someone hands you a receipt."
<<if not $flags.snowTeaTaken>>\
<<set $flags.snowTeaTaken to true>>\
<<run setup.bumpRel("snow", 4)>>\
<<run setup.bumpPlayer("stress", -6, 0, 100)>>\
<<run setup.bumpPlayer("influence", 2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
<<run setup.bumpRel("snow", 1)>>\
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
<</if>>\
[[Return to Snow's desk.|Snow Session Desk]]<<set $conv.snowTeaBeat to "truce">>\
"No fight," you say. "Just coffee."
Snow nods once. "I'll take rare. This building runs on fights with better vocabulary."
<<if not $flags.snowTeaTaken>>\
<<set $flags.snowTeaTaken to true>>\
<<run setup.bumpRel("snow", 5)>>\
<<run setup.bumpPlayer("stress", -8, 0, 100)>>\
<<run setup.bumpPlayer("glamour", 3, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
<<else>>\
<<run setup.bumpPlayer("stress", -3, 0, 100)>>\
<</if>>\
[[Return to Snow's desk.|Snow Session Desk]]Snow slides the mug over before you ask.
"You're predictable," she says.
"I thought consistency was the point of trusting someone."
"It is." She doesn't quite soften. "It still exhausts me before noon."
You drink. The coffee remains in active rebellion against taste.
What do you chase in the pause?
[[The past - old court, obvious villains.|Snow Tea Rev Past]]
[[The present - vouchers, routes, fraud.|Snow Tea Rev Present]]
[[Her - ask what she needs from you today.|Snow Tea Rev Her]]"Do you ever miss it?" you ask. "The old court. The obvious villains."
"No," Snow says at once. "I miss scale. In the Homelands, you could end a war and know it mattered."
<<if $conv.snowTeaBeat is "warm">>\
Last time you admitted you missed this - the mug, the room. She's listening closer now.
<<elseif $conv.snowTeaBeat is "needle">>\
Last time you needled her. She's still got the mark.
<<else>>\
Last time you called a truce. She's testing if it held.
<</if>>\
<<run setup.bumpRel("snow", 2)>>\
<<run setup.bumpPlayer("stress", -3, 0, 100)>>\
[[Finish the cup.|Snow Tea Rev Merge]]"Here we fight over housing vouchers and bus routes and procurement fraud," you say. "Then I remember those vouchers keep kids alive."
Snow taps your cup. "That's the job. Romanticizing it wastes heat."
<<run setup.bumpRel("snow", 3)>>\
<<run setup.bumpPlayer("influence", 2, 0, 100)>>\
[[Finish the cup.|Snow Tea Rev Merge]]"What do you need from me today?" you ask.
Snow studies you. "Accuracy. Patience. Fewer speeches about redemption."
<<run setup.bumpRel("snow", 4)>>\
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
[[Finish the cup.|Snow Tea Rev Merge]]She taps your cup with one finger - porcelain clicks, small violence.
"This city is where stories go when they stop pretending destiny'll do the work for them."
You breathe out through your teeth. The line is cleaner than you want to admit you like.
"If you're going to borrow my phrasing," she says, "use it on someone who needs the bruise."
<<run setup.bumpPlayer("glamour", 2, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Snow's desk.|Snow Session Desk]]Snow spreads three pages across the desk: broker flowchart, debt schedule, and a handwritten note from housing intake about a family facing eviction before Friday.
"This is the knot," she says. "Leverage. Liability. Lives."
You look from one page to the next.
"I know."
"Do you?" Her tone stays even. "First time all day you've sat here without trying to win one page and postpone the other two."
How do you sell the three-in-one?
[[As reform - optics intact, pain distributed.|Snow Synth Reform]]
[[As emergency - moral alarm, budgets move.|Snow Synth Emergency]]
[[As penance - you eat the cost in public.|Snow Synth Penance]]<<set $conv.snowSynthPitch to "reform">>\
You rest your palm on the debt schedule.
"Then we do all three in one motion: disclosure where it educates, seal where it protects, money where it keeps people housed without turning Beast into a prop."
Snow waits.
"That sentence has three budgets in it," she says. "Tell me which one you starve first if we only get two."
"Ribbon-cutting," you say. "Starve gala optics. Feed the seal and the tenants. Give Bigby a transcript that won't crumble."
"I take the disclosure hit publicly. We narrow-charge the broker under seal. We route gala money through tenant legal aid instead of campaign optics. You get compliance. Beast gets breathing room. Bigby gets testimony that holds up."
[[Let her rule on it.|Snow Synth Resolve]]<<set $conv.snowSynthPitch to "emergency">>\
You tap the eviction note first.
"Emergency," you say. "No performance. Move money tonight, seal the broker before he runs, and I'll take the scandal hit so council doesn't freeze."
Snow's eyes flash - not approval, recognition.
"Tonight means clerks in their coats at odd hours," she says. "Mistakes mean headlines. You sure you want speed more than polish?"
"Speed is the only mercy an eviction notice understands."
[[Let her rule on it.|Snow Synth Resolve]]<<set $conv.snowSynthPitch to "penance">>\
"I eat the public hit," you say. "No spin. Broker sealed. Tenants funded. If my campaign dies in the process, it dies."
Snow goes very still.
"That's either brave or stupid," she says.
You don't reach for the quip. "Then make the file dull enough that nobody needs a sermon to understand it."
[[Let her rule on it.|Snow Synth Resolve]]She blinks, surprised despite herself.
You don't let the silence turn into a speech. "You lose maneuvering room. I keep a story that survives a clerk asking rude questions at nine in the morning."
Snow's mouth tightens, not quite disagreement. "Then we both eat the parts we don't like in public."
<<if $conv.snowSynthPitch is "penance">>\
"You'll lose more than room to spin," she says quietly. "You'll lose deniability."
<<elseif $conv.snowSynthPitch is "emergency">>\
"Fast creates mistakes," she says. "We'll mitigate."
<<else>>\
"Reform's a speech," she says. "Execution's a habit."
<</if>>\
Silence hangs. Annex lights. Copier down the hall.
Snow exhales through her nose, then closes her eyes for half a second, like she's counting to ten in a language only she speaks.
Her eyes open. Appraisal, not applause. "No performance in that sentence. Don't spoil it with the next one."
You can't help smiling - wrong reflex. Her eyebrow cocks; you swallow the smile halfway.
"Frame it."
"Don't push your luck." She marks three action items hard enough to emboss the next page. "But yes. Workable." Under her breath, almost too quiet: "God help us."
<<set $flags.snowSynthesisDone to true>>\
<<run setup.bumpRel("snow", 9)>>\
<<run setup.bumpPlayer("influence", 7, 0, 100)>>\
<<run setup.bumpPlayer("scandal", -4, 0, 100)>>\
<<run setup.bumpResource("goodwill", 2, 0, 6)>>\
<<run setup.advanceScene("quiet")>>\
[[Return to Snow's desk.|Snow Session Desk]]Snow flips the folder open to the disposition page and places the pen between you - parallel to your hands, like she's offering you a weapon and daring you to choose the grip.
Her eyes are bloodshot at the corners. She'll never admit she's been here since dawn.
You can still sell a room a polished version of yourself. The disposition page only cares which version survives a photocopier.
"There are three legal routes," she says. "Confession and restructuring, forged paper and denial, or broker exposure with collateral impact." She doesn't smile. "Pick wrong and I stop being the villain in your head. I become the law in real life."
<<if $conv.ledgerFrame is "">>\
"Before you pick one," she adds, "tell me how you're framing it. The route changes tone as much as paperwork."
How do you frame disposal - in your gut - before you commit?
[[Duty - I want this defensible when my name is spoken aloud.|Ledger Frame Duty]]
[[Theater - I need a story I can survive in public.|Ledger Frame Theater]]
[[Knife - I want leverage clean enough to cut with.|Ledger Frame Knife]]
<<else>>\
<<if $conv.ledgerFrame is "duty">>\
She taps the margin. "Duty plays slow. It ages better than charm."
<<elseif $conv.ledgerFrame is "theater">>\
"Fine," she says. "Theater buys time. Don't confuse applause with absolution."
<<else>>\
"Knife," she says evenly. "Then don't flinch when blood hits your shoes - yours or someone else's."
<</if>>\
Now pick the move that matches that stomach. Not the one that matches your panic.
<<if not $flags.confessedDebt>>\
<<if $conv.ledgerFrame is "duty">>\
[[Confess - pay in public, line by line.|Ledger Confess]]
<<elseif $conv.ledgerFrame is "theater">>\
[[Confess - make the performance look like reform.|Ledger Confess]]
<<else>>\
[[Confess - pay and keep the receipt like a weapon.|Ledger Confess]]
<</if>>\
<</if>>\
<<if not $flags.forgedReceipt>>\
<<if $conv.ledgerFrame is "duty">>\
[[Forge - bury the ugly line items.|Ledger Forge]]
<<elseif $conv.ledgerFrame is "theater">>\
[[Forge - stage a clean paper trail.|Ledger Forge]]
<<else>>\
[[Forge - forge fast and hope nobody opens the drawer.|Ledger Forge]]
<</if>>\
<</if>>\
<<if not $flags.exposedBroker>>\
<<if $conv.ledgerFrame is "duty">>\
[[Expose the broker - narrow, sealed, by the book.|Ledger Expose]]
<<elseif $conv.ledgerFrame is "theater">>\
[[Expose the broker - let the room feel justice.|Ledger Expose]]
<<else>>\
[[Expose the broker - cut his network out from under him.|Ledger Expose]]
<</if>>\
<</if>>\
<<if $clocks.ledger gte 2>>\
[[Ask Snow to close the file under revised terms.|Ledger Finalize]]
<</if>>\
<<if $flags.confessedDebt or $flags.forgedReceipt or $flags.exposedBroker>>\
[[Ask Snow what she really thinks of your legal choices.|Snow Choice Debrief]]
<</if>>\
[[Change how you're framing this.|Ledger Frame Reset]]
[[Return to Snow's desk.|Snow Session Desk]]
<</if>>\<<set $conv.ledgerFrame to "duty">>\
You choose words like you're writing them in ink - slow, permanent, embarrassing in the right way.
[[Return to the disposition.|Ledger Decision Desk]]<<set $conv.ledgerFrame to "theater">>\
You think in headlines - what survives a week of gossip and still sounds like leadership.
[[Return to the disposition.|Ledger Decision Desk]]<<set $conv.ledgerFrame to "knife">>\
You think in openings - who bleeds first if this goes wrong, and how you keep it from being Snow.
[[Return to the disposition.|Ledger Decision Desk]]<<set $conv.ledgerFrame to "">>\
Snow lifts an eyebrow. "Changing your mind before the ink is honest. Changing it after is something else."
[[Return to the disposition.|Ledger Decision Desk]]<<if $conv.ledgerFrame is "duty">>\
You're choosing the route that hurts your campaign calendar and keeps your spine straight - the one where you can look clerks in the eye.
<<elseif $conv.ledgerFrame is "theater">>\
You're choosing confession as stagecraft - painful enough to read as sincerity, structured enough to survive a photo op.
<<else>>\
You're choosing confession as a move - pay now, buy silence later, keep something sharp in your pocket for whoever tries to use the file against you.
<</if>>\
You sign the confession sheet, then pull your wallet, then stop when the gesture starts to look performative.
"I can move twenty now," you say. "The rest goes on a structured plan, transparent, indexed, and public."
Snow watches you for a long moment, then nods to the clerk station down the hall.
"Rita will notarize it and post the schedule before close of business." She lowers her voice. "You know what this does to your next campaign cycle."
"It gives people less to discover later."
"It gives people a reason to call you reckless."
"They already do."
Snow signs beneath your name, firm and neat.
"Then let them do it while reading accurate paperwork."
You hand over the first payment. She takes the envelope without fanfare, which in this office is a form of mercy.
"Thank you," she says, and the words land heavier than applause.
<<set _confessSkill to setup.skillCheck("grit", 4)>>\
<<skillCheckReceipt _confessSkill>>\
<<if _confessSkill.passed>>\
You hold eye contact through the whole exchange and don't reach for charm as cover.
<<run setup.bumpSkill("grit", 1)>>\
<<run setup.bumpRel("snow", 2)>>\
<<else>>\
You own it, but your hands shake when you sign. Snow notices; she says nothing.
<<run setup.bumpPlayer("stress", 2, 0, 100)>>\
<<run setup.recordFailure("ledger", 1)>>\
<</if>>\
<<set $flags.confessedDebt to true>>\
<<set $flags.snowLastLedgerChoice to "confess">>\
<<run setup.bumpPlayer("gold", -20, 0, 200)>>\
<<run setup.bumpPlayer("scandal", -8, 0, 100)>>\
<<run setup.bumpPlayer("stress", -5, 0, 100)>>\
<<run setup.bumpRel("snow", 15)>>\
<<run setup.bumpResource("goodwill", 2, 0, 6)>>\
<<run setup.bumpIdentity("penitent", 3)>>\
<<run setup.bumpIdentity("scar", 1)>>\
<<run setup.bumpTruth("public", 3)>>\
<<run setup.bumpAxis("integrity", 3)>>\
<<run setup.clockArc("ledger", 1)>>\
<<run setup.advanceScene("quiet")>>\
<<stamp "Confession Filed" "filed">>
[[Return to the disposition.|Ledger Decision Desk]]<<if $conv.ledgerFrame is "duty">>\
You hate that you're even holding forged paper - but you're telling yourself it's a bandage, not a lifestyle.
<<elseif $conv.ledgerFrame is "theater">>\
You produce fiction that looks like bureaucracy - columns, stamps, the smell of procedure.
<<else>>\
You produce fiction like a weapon - minimal pages, maximum plausible deniability, enough truth in the margins to confuse a lazy audit.
<</if>>\
You slide the revised receipts and memo trail across, polished to perfection.
Snow scans page one, then page two, then circles a timestamp that could only exist if two clerks had signed the same form in different buildings at the same minute.
"You spent real talent on this," she says softly.
"I spent it buying time."
"You spent it asking me to certify a lie."
The room goes still. Down the hall, someone wheels a cart of archived maps past the door.
"Sign it and I walk," you say, immediately hating the sentence as it leaves your mouth.
Snow closes the file with both hands.
"Do not threaten me with your absence. We have tested that theory already."
She pushes the forged packet back through the glass slot.
"You can file this through another office if you want. If you do, I open a fraud review and subpoena your campaign in forty-eight hours."
You collect the papers in silence.
"Understood."
"Good." Her voice remains controlled, almost gentle. "Bring me something true next time."
<<set _forgeSkill to setup.skillCheck("insight", 5)>>\
<<skillCheckReceipt _forgeSkill>>\
<<if _forgeSkill.passed>>\
At least your paperwork is coherent. The lie is still a lie, but harder to weaponize immediately.
<<run setup.bumpSkill("insight", 1)>>\
<<run setup.bumpPlayer("scandal", -3, 0, 100)>>\
<<else>>\
The weak joins show. You leave with a folder that already feels like evidence.
<<run setup.bumpPlayer("scandal", 4, 0, 100)>>\
<<run setup.bumpCity("rumorHeat", 2, 0, 100)>>\
<<run setup.recordFailure("ledger", 2)>>\
<</if>>\
<<set $flags.forgedReceipt to true>>\
<<set $flags.snowLastLedgerChoice to "forge">>\
<<run setup.bumpPlayer("influence", 4, 0, 100)>>\
<<run setup.bumpPlayer("scandal", 14, 0, 100)>>\
<<run setup.bumpRel("snow", -16)>>\
<<run setup.bumpResource("dirt", 1, 0, 6)>>\
<<run setup.bumpIdentity("opportunist", 3)>>\
<<run setup.bumpIdentity("scar", 3)>>\
<<run setup.bumpTruth("spin", 3)>>\
<<run setup.bumpAxis("leverage", 3)>>\
<<run setup.clockArc("ledger", 1)>>\
<<run setup.advanceScene("dirty")>>\
<<stamp "Forgery Returned" "warning">>
[[Return to the disposition.|Ledger Decision Desk]]<<if $conv.ledgerFrame is "duty">>\
You slide evidence across the glass like you're handing in homework, every page numbered, every chain documented.
<<elseif $conv.ledgerFrame is "theater">>\
You slide the broker's throat to the public stage, carefully, enough theater to win the room, enough seal to keep children out of the footnotes.
<<else>>\
You slide names like knives, witness index, shell IDs, emergency contacts, the minimum viable ruin.
<</if>>\
You slide over a witness index, two shell-company IDs, and the broker's emergency contact list.
"If this sees daylight," Snow says, reading fast, "we take three council offices with him."
"If it stays buried, he keeps leverage on payroll, procurement, and Bigby's staff."
Snow stands and locks the annex door, then returns with a stamped evidence envelope.
"We do this under seal. I move the paperwork through internal review. You keep your name out of the first filing and testify only if he contests."
"That keeps the city stable."
"That keeps school buses running," she replies, "which is usually a better benchmark."
She seals the packet and signs across the flap.
"I will need you to hold the line when your allies panic."
"I can do that."
"Can you?" Snow asks, and the question carries years of data.
You hold her gaze.
"Yes."
She nods once.
"Then we move."
<<set _exposeSkill to setup.skillCheck("insight", 4)>>\
<<skillCheckReceipt _exposeSkill>>\
<<if _exposeSkill.passed>>\
You sequence names and dates in the order prosecutors need, not the order your ego wants.
<<run setup.bumpSkill("insight", 1)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<else>>\
The case still moves, but Snow has to rebuild your filing logic with a red pen and no patience.
<<run setup.bumpRel("snow", -2)>>\
<<run setup.recordFailure("ledger", 1)>>\
<</if>>\
<<set $flags.exposedBroker to true>>\
<<set $flags.snowLastLedgerChoice to "expose">>\
<<run setup.bumpPlayer("influence", 10, 0, 100)>>\
<<run setup.bumpRel("snow", 9)>>\
<<run setup.bumpResource("dirt", 1, 0, 6)>>\
<<run setup.bumpIdentity("operator", 2)>>\
<<run setup.bumpIdentity("reformer", 1)>>\
<<run setup.bumpIdentity("scar", 1)>>\
<<run setup.bumpTruth("private", 2)>>\
<<run setup.bumpAxis("integrity", 1)>>\
<<run setup.bumpAxis("leverage", 1)>>\
<<run setup.clockArc("ledger", 1)>>\
<<run setup.advanceScene("loud")>>\
<<stamp "Sealed Indictment" "sealed">>
[[Return to the disposition.|Ledger Decision Desk]]Snow reviews the final stack with a ruler-straight focus, signs the revision order, and stamps the front sheet: RESTRUCTURED UNDER REVIEW.
"This is the part where you ask if we're all right," she says without looking up.
"Are we?"
She places the stamp down carefully.
"We're not a story that resolves in one conversation, Charming. We're colleagues with history, obligations, and a city that keeps catching fire. On good days, that's enough. On rare days, it's almost kind."
You let that settle.
"I can work with almost kind."
"Good." She slides your copy through the slot. "Take this to your campaign treasurer, your attorney, and whoever handles your tendency to improvise."
"That role has been unfilled for decades."
Her mouth finally breaks into a tired, genuine smile.
"I noticed."
She stands and gathers her coat.
"I have to get home before the boys decide dinner is optional and Bigby decides paperwork is beneath him. Try not to start a constitutional crisis before morning."
"I make no promises."
"You make too many promises." Snow reaches for the light switch, then pauses. "Keep this one anyway: come back to this office before things explode next time."
"I will."
"Good night, Charming."
<<run setup.bumpRel("snow", 11)>>\
<<run setup.bumpResource("goodwill", 1, 0, 6)>>\
<<run setup.clockArc("ledger", 1)>>\
<<run setup.advanceScene("quiet")>>\
<<stamp "Restructured Under Review" "archive">>
<<scorecard "Ledger Audit · Closed" "Schedule indexed. Records logged. The drawer is heavier. So is your name on the cover.">>
[[Step back into the street.|Fabletown Artery]]Snow folds her hands over the file and studies you with a gaze that feels less like judgment and more like calibration.
<<if $conv.snowChoiceDebriefed is $flags.snowLastLedgerChoice>>\
"We already covered that choice," she says. "Repetition is not revision."
<<set $conv.snowChoiceDebriefed to $flags.snowLastLedgerChoice>>\
[[Return to the disposition.|Ledger Decision Desk]]
<</if>>\
<<else>>\
<<if $flags.snowLastLedgerChoice is "confess">>\
"You chose confession," she says. "It cost you money and narrative control, which is precisely why it mattered. People can survive scandal. They rarely survive discovery after denial."
<<if $conv.ledgerFrame is "duty">>\
"And you framed it as duty," she adds. "That's consistent. I can work with consistent."
<<elseif $conv.ledgerFrame is "theater">>\
"You framed it as theater," she says. "Fine. Make sure the next act isn't a lie wearing a bow tie."
<<else>>\
"You framed it as a knife," she says. "Confession isn't a blade, it's surrender. Don't confuse them."
<</if>>\
"You sound close to approving."
"I'm approving your method, not absolving your past."
<<run setup.bumpRel("snow", 3)>>\
<<run setup.bumpPlayer("stress", -2, 0, 100)>>\
<<elseif $flags.snowLastLedgerChoice is "forge">>\
"You chose forgery," she says, voice flat but not raised. "You aimed for short-term stability and nearly forced me to prosecute someone I still have to work with tomorrow."
<<if $conv.ledgerFrame is "duty">>\
"You even framed it as duty," she says. "That's the part that insults me."
<<elseif $conv.ledgerFrame is "theater">>\
"At least you didn't pretend it was heroism, just stagecraft."
<<else>>\
"You framed it like a knife fight," she says. "Forgery's not precision. It's panic in nice font."
<</if>>\
"You still have to work with me either way."
"Yes," she says. "That's exactly the problem I keep solving."
<<run setup.bumpRel("snow", -4)>>\
<<run setup.bumpPlayer("stress", 3, 0, 100)>>\
<<else>>\
"You chose exposure under seal," Snow says. "That was the least theatrical way to handle a dangerous truth. It'll still hurt people, but it gives us a chance to contain the blast radius."
<<if $conv.ledgerFrame is "duty">>\
"You framed it clean," she says. "Exposure matched duty. That's rare enough to note."
<<elseif $conv.ledgerFrame is "theater">>\
"You wanted theater," she says. "Seal is the opposite. You picked right anyway."
<<else>>\
"You wanted a knife," she says. "Seal keeps blood off the sidewalk. Good."
<</if>>\
"You taught me blast radius."
"I taught you to read maps. You're finally using one."
<<run setup.bumpRel("snow", 4)>>\
<<run setup.bumpPlayer("influence", 2, 0, 100)>>\
<</if>>\
[[Return to the disposition.|Ledger Decision Desk]]Snow has the annex table covered in spreadsheets, corners weighted with cold mugs and a paperclip chain she fidgeted into existence while waiting.
Beast fills the doorway before he fills the room: shoulders first, then a binder held to his chest like armor. Not because he's scared of paper. Because paper is what hits people when it's late. His tie is loose, fur visible at his throat. Floorboards complain when he steps in.
"Records has restitution," Snow says, voice dry, eyes sharp. "Housing has vouchers. Crooked Lane has families who don't care which column saves them. They care whether dinner is hot."
Beast sets the binder down with a thump that makes Snow's pen jump. "We align columns or we align blame. Pick a third option, Charming. You've been selling those all week." He shows teeth. Habit, not smile.
What kind of bridge are you building?
[[Compliance first - vouchers certified, then ledger money moves clean.|Snow Beast Synth Duty]]
[[Speed first - pool restitution into intake tonight, paper catches up.|Snow Beast Synth Speed]]
[[Dual track - public ribbon for housing, sealed lines for the rest.|Snow Beast Synth Press]]
[[Step away - align it after you've slept.|Fabletown Artery]]<<set $conv.snowBeastSynth to "duty">>\
<<set $flags.snowBeastSynthDone to true>>\
You keep your voice level. "Auditable first. Tenant ID matched to voucher, restitution tagged to line items, no victory lap until the first week's disbursements clear."
Snow taps a cell. "That's my language."
Beast exhales. "It's two weeks slower than the lane deserves."
"Then we front-load emergency aid from the stabilization pool," you say, "and let restitution refill the pool behind the curtain, transparent enough for Snow, loud enough for you."
Beast looks at Snow. Snow nods once, permission and warning in the same gesture.
[[Lock the alignment in.|Snow Beast Synth Merge]]<<set $conv.snowBeastSynth to "speed">>\
<<set $flags.snowBeastSynthDone to true>>\
You flatten your hand on the binder. "Move pooled money into legal aid and intake tonight. Snow backfills the memorandum before council pretends it was always shocked."
Beast's eyes flick to Snow. "I'll eat heat if this looks like slush."
Snow already has the pen. "It'll read disaster response, not campaign candy. Sign here, Beast. Initial here, Charming. Don't make me chase your handwriting."
You don't.
[[Lock the alignment in.|Snow Beast Synth Merge]]<<set $conv.snowBeastSynth to "press">>\
<<set $flags.snowBeastSynthDone to true>>\
"You want a story that doesn't turn tenants into props," you say to Beast. "Give the Slipper a housing win on the marquee, ribbon-cutting energy, and keep ledger routing boring enough that lawyers nod off page three."
Beast grimaces. "I hate split narratives."
"You lived one for twenty years," Snow says, not cruel, exact.
He nods once. "Fine. Dual track. I get the cameras; you get the vault."
[[Lock the alignment in.|Snow Beast Synth Merge]]<<if $conv.snowBeastSynth is "duty">>\
Snow and Beast draw parallel lines until they intersect, vouchers here, restitution there, a single footer that reads like a promise: paid in service of occupancy.
<<elseif $conv.snowBeastSynth is "speed">>\
By the time the copier warms up, Beast has already messaged intake. Snow initials the cover sheet, small and final, a sword drawn in ink.
<<else>>\
The press paragraph goes to Beast's comms draft; the sealed appendix goes to Snow's vault. Same money. Two temperatures. You stand between them and translate heat into procedure.
<</if>>\
Three people who used to win arguments separately now share one ugly, workable map.
<<set $flags.snowBeastSynthDone to true>>\
<<run setup.bumpRel("snow", 6)>>\
<<run setup.bumpRel("beast", 6)>>\
<<run setup.bumpResource("goodwill", 2, 0, 6)>>\
<<run setup.bumpPlayer("influence", 5, 0, 100)>>\
<<run setup.bumpCity("unrest", -5, 0, 100)>>\
<<run setup.advanceScene("quiet")>>\
<<stamp "Cross-Filed" "archive">>
[[Step back into the street.|Fabletown Artery]]Fabletown hits your nose with wet brick first. Perfume and old magic pile in after, too much for the square footage.
You stand at your mirror with your tie half-done. Prince Charming: the name works like a stock photo until the city decides you liked the flash too much.
You have always been good at opening doors. Fabletown charges rent on what happens after: initials in margins, hearings that start on time, and the work of keeping yesterday's smile from hardening into tomorrow's alibi. Wolves, accountants, and stories that refuse to stay buried do not applaud the entrance. They read the follow-up.
Three fires are already burning:
- Bigby has a blackmail leak.
- Beast is drowning in housing hearings.
- Snow has reopened your debt file.
Posture gets you through the door. Timing decides whether you walk out.
[[Step into the day.|Dossier Briefing]]Before you move, read the board:
- Influence helps you move rooms.
- Scandal and Rumor Heat make every move costlier.
- Stress is personal wear and tear; high stress hurts late outcomes.
- Favors, Dirt, Promises, Goodwill are your political currency.
- Charm, Grit, Insight shape how you solve problems:
- Charm = opening leverage: first hearings, public persuasion, speed to a provisional yes (keeping it still costs paper, nerve, or both).
- Grit = holding the line after the charm curve flattens.
- Insight = reading systems, paper trails, and motives - where the clerk stops pretending your smile is a substitute for a file.
In Fabletown, charm gets you in. Paper, pressure, and promises decide whether you stay believable on the way out.
[[Set your edge first.|Skill Allocation]]<<if not $flags.skillDraftStarted>>\
<<set $buildCharm to 0>>\
<<set $buildGrit to 0>>\
<<set $buildInsight to 0>>\
<<set $buildPoints to 3>>\
<<set $flags.skillDraftStarted to true>>\
<</if>>\
<<set _chV to 2 + $buildCharm>>\
<<set _grV to 2 + $buildGrit>>\
<<set _inV to 2 + $buildInsight>>\
<div class="skill-alloc">
<div class="skill-alloc-hero">
<p class="skill-alloc-kicker">Tradecraft draft</p>
<h2 class="skill-alloc-title">Your opening edge</h2>
<p class="skill-alloc-lede">Base <strong>2</strong> in each stat (cap <strong>5</strong>); <strong>3</strong> points to split any way. Pips match the sidebar.</p>
<ul class="skill-alloc-rules">
<li>Hidden difficulties on major beats; pass for cleaner outcomes.</li>
<li>Skills nudge ending score.</li>
</ul>
</div>
<div class="skill-alloc-pool" aria-label="Unspent points">
<span class="skill-alloc-pool-label">Pool</span>
<div class="skill-pips">
<<if $buildPoints gte 1>><span class="pip lit"></span><<else>><span class="pip"></span><</if>>
<<if $buildPoints gte 2>><span class="pip lit"></span><<else>><span class="pip"></span><</if>>
<<if $buildPoints gte 3>><span class="pip lit"></span><<else>><span class="pip"></span><</if>>
</div>
<span class="skill-alloc-pool-count"><<= $buildPoints>> left</span>
</div>
<div class="skill-alloc-grid">
<div class="skill-row" style="--row-i: 0;">
<div class="skill-row-labels">
<span class="skill-name">Charm</span>
<span class="skill-fraction"><<= _chV>> / 5</span>
</div>
<<hudDotRow _chV 0 5 "meter-skill">>
<p class="skill-blurb">First hearings, public persuasion, provisional yeses.</p>
<div class="skill-row-actions">
<<if $buildCharm lt 3 and $buildPoints gt 0>>\
<<link "+ Raise">><<set $buildCharm += 1>><<set $buildPoints -= 1>><<goto "Skill Allocation">><</link>>\
<<else>>\
<span class="skill-btn ghost" aria-disabled="true">+ Raise</span>\
<</if>>
<<if $buildCharm gt 0>>\
<<link "− Refund">><<set $buildCharm -= 1>><<set $buildPoints += 1>><<goto "Skill Allocation">><</link>>\
<<else>>\
<span class="skill-btn ghost" aria-disabled="true">− Refund</span>\
<</if>>
</div>
</div>
<div class="skill-row" style="--row-i: 1;">
<div class="skill-row-labels">
<span class="skill-name">Grit</span>
<span class="skill-fraction"><<= _grV>> / 5</span>
</div>
<<hudDotRow _grV 0 5 "meter-skill">>
<p class="skill-blurb">When the smile thins: jaw, tie, staying in the room.</p>
<div class="skill-row-actions">
<<if $buildGrit lt 3 and $buildPoints gt 0>>\
<<link "+ Raise">><<set $buildGrit += 1>><<set $buildPoints -= 1>><<goto "Skill Allocation">><</link>>\
<<else>>\
<span class="skill-btn ghost" aria-disabled="true">+ Raise</span>\
<</if>>
<<if $buildGrit gt 0>>\
<<link "− Refund">><<set $buildGrit -= 1>><<set $buildPoints += 1>><<goto "Skill Allocation">><</link>>\
<<else>>\
<span class="skill-btn ghost" aria-disabled="true">− Refund</span>\
<</if>>
</div>
</div>
<div class="skill-row" style="--row-i: 2;">
<div class="skill-row-labels">
<span class="skill-name">Insight</span>
<span class="skill-fraction"><<= _inV>> / 5</span>
</div>
<<hudDotRow _inV 0 5 "meter-skill">>
<p class="skill-blurb">Paper trails, motives, where the stamp actually lands.</p>
<div class="skill-row-actions">
<<if $buildInsight lt 3 and $buildPoints gt 0>>\
<<link "+ Raise">><<set $buildInsight += 1>><<set $buildPoints -= 1>><<goto "Skill Allocation">><</link>>\
<<else>>\
<span class="skill-btn ghost" aria-disabled="true">+ Raise</span>\
<</if>>
<<if $buildInsight gt 0>>\
<<link "− Refund">><<set $buildInsight -= 1>><<set $buildPoints += 1>><<goto "Skill Allocation">><</link>>\
<<else>>\
<span class="skill-btn ghost" aria-disabled="true">− Refund</span>\
<</if>>
</div>
</div>
</div>
<<if $buildPoints is 0>>\
<div class="skill-alloc-commit">\
<<link "Lock build and step into the day">>
<<set $skills.charm to 2 + $buildCharm>>\
<<set $skills.grit to 2 + $buildGrit>>\
<<set $skills.insight to 2 + $buildInsight>>\
<<if $skills.charm gt $skills.grit and $skills.charm gt $skills.insight>>\
<<set $introBuildLine to "You still know how to earn the first five minutes of forgiveness in any room.">>\
<<elseif $skills.grit gt $skills.charm and $skills.grit gt $skills.insight>>\
<<set $introBuildLine to "When the performance thins, you stay standing anyway: jaw set, tie straight enough to lie.">>\
<<elseif $skills.insight gt $skills.charm and $skills.insight gt $skills.grit>>\
<<set $introBuildLine to "You learned the filing system because charm stops where the clerk's stamp starts.">>\
<<else>>\
<<set $introBuildLine to "You rotate openings, endurance, and cold reading. Never all three loud at once; never none when it counts.">>\
<</if>>\
<<set $flags.skillsAllocated to true>>\
<<set $flags.skillDraftStarted to false>>\
<<unset $buildCharm>>\
<<unset $buildGrit>>\
<<unset $buildInsight>>\
<<unset $buildPoints>>\
<<goto "Penthouse Landing">>
<</link>>\
</div>
<<else>>\
<p class="skill-alloc-hint">Spend every point in the pool to seal the draft.</p>
<</if>>\
</div><<set $flags.playerGuideUnlocked to true>>\
Your campaign drafts are spread across the hall table in tidy stacks:
UNITY, REFORM, ACCOUNTABILITY.
Three words, three definitions per borough, six invoices by Friday.
In the mirror by the door, you catch yourself: tie crooked, eyes too bright from another night of treating the story as real while the room withholds the clapping. The glamour holds. Underneath is bone, nerve, and the habit of mistaking applause for proof.
You pocket a silver cufflink that used to be part of a crown.
<<if $flags.skillsAllocated and $introBuildLine>>\
<<print $introBuildLine>>
<<unset $introBuildLine>>\
<</if>>\
Today runs on three clocks. Witnesses fill the room you have not entered yet.
<<run setup.advanceScene("quiet")>>\
[[Take the stairwell down to the street.|Fabletown Artery]]Crowds tangle under weak daylight and louder gossip. Mundies drift through the glamours and see old brick, bad rent, nothing else.
Under that sits the real city: favors in hallways, promises in triplicate, threats with good manners.
On the sidewalk your name moves faster than your signature. Some hours you treat that as weather. Some hours you treat it as a bill.
<<set _sw to setup.streetWhisper()>>\
<<if _sw neq "">>\
<<print _sw>>
<</if>>\
<<set _ci to setup.cityInterlude()>>\
<<if _ci neq "">>\
<<headline _ci "Evening Wire">>
<</if>>\
<<if $meta.scenes gte 6 and not $meta.dayDone>>\
<<set $meta.dayDone to true>>\
The city clock catches up with you. Night has arrived whether you are ready or not.
<</if>>\
<<if $meta.completedArcs gte 2 or $meta.dayDone>>\
The Glass Slipper is already filling with witnesses and opportunists.
[[Close the day at the Slipper.|Glass Slipper Night]]
<</if>>\
[[Go to the Sheriff's office.|Sheriff Desk]]
[[Take Beast's meeting at City Hall.|City Hall Chamber]]
[[Face Snow in Records.|Records Annex]]
[[Cut across rooftops to Briar Rose.|Rooftop with Briar]]
[[Visit the Mirror Parlor.|Mirror Parlor]]<div class="hud-shell">
<div class="hud-title">FABLETOWN DOSSIER</div>
<div class="hud-sub">$city.hour | Scene $meta.scenes</div>
<div class="hud-block">
<div class="hud-block-title">Prince Charming</div>
<<hudMeter "Influence" $player.influence 0 100 "influence" "meter-influence">>
<<set _scHeat to ($player.scandal gte 60) ? "hot" : (($player.scandal gte 30) ? "warm" : "cool")>>\
<<hudMeter "Scandal" $player.scandal 0 100 "scandal" "meter-scandal" _scHeat>>
<<hudMeter "Glamour" $player.glamour 0 100 "glamour" "meter-glamour">>
<<set _stHeat to ($player.stress gte 60) ? "hot" : (($player.stress gte 30) ? "warm" : "cool")>>\
<<hudMeter "Stress" $player.stress 0 100 "stress" "meter-stress" _stHeat>>
<<hudMeter "Gold" $player.gold 0 200 "gold" "meter-gold">>
</div>
<<if $meta.scenes lt 1>>
<div class="hud-block">
<div class="hud-block-title">Quick Read</div>
<div class="hud-fire">Open rooms fast; clocks, clauses, and scandal decide if you keep them.</div>
<div class="hud-fire">Pips fill by degree. High Scandal and Stress tint warm, then hot.</div>
<div class="hud-fire">Charm, Grit, and Insight gate cleaner options in key scenes.</div>
<div class="hud-fire">Favors, Dirt, Promises, and Goodwill use their own pip strips.</div>
</div>
<<else>>
<div class="hud-block">
<div class="hud-block-title">City Pulse</div>
<<set _rhHeat to ($city.rumorHeat gte 65) ? "hot" : (($city.rumorHeat gte 35) ? "warm" : "cool")>>\
<<hudMeter "Rumor Heat" $city.rumorHeat 0 100 "rumor" "meter-rumor" _rhHeat>>
<<hudMeter "Unrest" $city.unrest 0 100 "unrest" "meter-unrest">>
</div>
<div class="hud-block">
<div class="hud-block-title">Leverage</div>
<<hudMeter "Favors" $resources.favors 0 6 "favors" "meter-favors">>
<<hudMeter "Dirt" $resources.dirt 0 6 "dirt" "meter-dirt">>
<<hudMeter "Promises" $resources.promises 0 8 "promises" "meter-promises">>
<<hudMeter "Goodwill" $resources.goodwill 0 6 "goodwill" "meter-goodwill">>
</div>
<div class="hud-block">
<div class="hud-block-title">Tradecraft</div>
<<hudMeter "Charm" $skills.charm 0 5 "" "meter-skill">>
<<hudMeter "Grit" $skills.grit 0 5 "" "meter-skill">>
<<hudMeter "Insight" $skills.insight 0 5 "" "meter-skill">>
</div>
<div class="hud-block">
<div class="hud-block-title">Campaign Shape</div>
<div class="hud-row hud-row-dossier"><span>Identity</span><span class="hud-dossier-val"><<= setup.identityLabel()>></span></div>
<div class="hud-row hud-row-dossier"><span>Method</span><span class="hud-dossier-val"><<= setup.axisLabel()>></span></div>
<div class="hud-row hud-row-dossier"><span>Story</span><span class="hud-dossier-val"><<= setup.truthLabel()>></span></div>
<<hudMeter "Scars" $identity.scar 0 20 "scar" "meter-scars">>
</div>
<div class="hud-block">
<div class="hud-block-title">Active Fires</div>
<<hudSeg3 "Wolf" $clocks.wolfCase>>
<<hudSeg3 "Lane" $clocks.housing>>
<<hudSeg3 "Ledger" $clocks.ledger>>
<<hudMeter "Informal" $pressure.briar 0 6 "" "meter-briar">>
<<hudMeter "Promise Heat" $debt.promiseHeat 0 12 "" "meter-promiseheat">>
<<hudMeter "Finch Heat" $finch.retaliation 0 12 "" "meter-finch">>
<div class="hud-row hud-row-compact"><span>Arcs done</span><span class="hud-num hud-num-plain">$meta.completedArcs / 3</span></div>
</div>
<div class="hud-block">
<div class="hud-block-title">Relationships</div>
<<hudMeter "Bigby" $rel.bigby -30 100 "rel-bigby" "meter-rel">>
<<hudMeter "Snow" $rel.snow -30 100 "rel-snow" "meter-rel">>
<<hudMeter "Beast" $rel.beast -30 100 "rel-beast" "meter-rel">>
<<hudMeter "Briar" $rel.briar -30 100 "rel-briar" "meter-rel">>
</div>
<</if>>
</div><<link "Caseboard">><<run setup.openPassageDialog("Caseboard", "Caseboard Panel")>><</link>>
|
<<link "Journal">><<run setup.openPassageDialog("Journal", "Journal Panel")>><</link>>
<<if $flags.playerGuideUnlocked>>\
|
<<link "Player guide">><<run setup.openPassageDialog("Player guide", "Player Guide Panel")>><</link>>\
<</if>>\
|
<<link "Ambient music">><<run setup.toggleAmbientMute()>><</link>>
|
<<link "Music volume">><<run setup.openAmbientVolumeDialog()>><</link>>
|
<<link "Colophon">><<run setup.openPassageDialog("Colophon", "Colophon Panel")>><</link>><p class="notes-lede">Prince Charming under pressure: the first move is fast; everything after gets graded. Routes spend the day differently and price your name accordingly.</p>
<ul class="notes-list">
<li><b>Wolf Case:</b> Resolve the leak - soft bar, hard alley, broker buy or burn. Choices are remembered (Bigby phone, revisits).</li>
<li><b>Crooked Lane:</b> Beast - opening frame (political / human / crown), talk threads (lane, Beauty, what he needs), tactics (gala / petition / backroom) remembered for finalize & revisits; aftermath menu after the arc resolves.</li>
<li><b>Ledger Audit:</b> Snow - operational, personal, legal lanes; <b>ledger frame</b> (duty / theater / knife) before confess / forge / expose; revisits and debriefs reference the frame.</li>
<li><b>Cross-file:</b> When <b>both</b> Crooked Lane and the ledger arc are resolved, meet Snow + Beast to route vouchers and restitution (duty / speed / dual press). Briar can introduce tenant organizer Tess - follow through in Beast’s hallway or lose it when the housing clock completes.</li>
</ul>
<p><b>Skill checks:</b> Tags such as <b>[Charm 4]</b> stay clickable below the number. Passing reads cleaner; failing still advances with its own cost.</p>
<p><b>Conversation memory:</b> <code>$conv</code> tracks Bigby, Snow, bar, alley, Beast (<code>beastOpen</code>, <code>beastTactic</code>, Snow-Beast voucher routing), Briar’s tenant pitch, tea beats, synthesis, ledger frame. Slipper <b>codas</b> can fire on aligned triples (e.g. Beast human + petition + Snow sign; political + gala + Bigby deal yes).</p>
<p><b>Reactive prose:</b> the street, Slipper, Records revisit, Bigby’s office, the sheriff hall, Briar’s roof, mirrors, and coffee beats pull extra lines from quest pressure, flags, and stats - same routes, different weather.</p>
<p>Night opens at the Slipper once you complete at least two arcs, or once time runs out.</p>
<p class="notes-tip">Reader tip: the sidebar history arrows step backward or forward through recent passages if you want to reconsider a choice (saves still live under the menu). Use <b>Journal</b> for live arc status. Use <b>Player guide</b> (after the penthouse intro) for how scoring and endings lean. Ambient tracks loop (see <b>Music volume</b>); sound starts after your first click or tap; <b>Ambient music</b> mutes or restores.</p><p class="notes-lede">Spoiler-light tips once you are past the opening draft. Play boldly; the sidebar and Journal carry the numbers.</p>
<h3 class="journal-h">Doing well</h3>
<ul class="journal-list">
<li><b>Stability:</b> High <b>Scandal</b> and <b>Rumor Heat</b> tax your options. Cool the street when you can (parlor breathe, careful bar choices, sealed Snow routes).</li>
<li><b>Currency:</b> <b>Favors</b> and <b>Dirt</b> buy shortcuts. <b>Promises Owed</b> help until they stack; <b>Promise Heat</b> can corner you at the Slipper.</li>
<li><b>Skills:</b> <b>Charm</b>, <b>Grit</b>, and <b>Insight</b> unlock cleaner branches on major beats. Tagged checks stay clickable below the listed number; failing still advances with a different cost.</li>
<li><b>Arcs:</b> Wolf (Bigby), Crooked Lane (Beast), Ledger (Snow) each move clocks toward resolution. Two arcs closed <i>or</i> the day clocking out opens the Slipper.</li>
<li><b>Night:</b> On the Slipper floor, talk to three witnesses, take a balcony vow, then choose your reckoning. Vow and stats decide which ending fires first.</li>
</ul>
<h3 class="journal-h">Ending score (general)</h3>
<ul class="journal-list">
<li><b>Helps the score:</b> Influence, Bigby / Snow / Beast trust, Goodwill, skills, Integrity-leaning play, lower Stress when you can.</li>
<li><b>Hurts the score:</b> Scandal, Rumor Heat, stacked Promises, Finch pressure, debt collectors, heavy scars or spin if you are aiming for a “clean” crown ending.</li>
<li><b>Special endings:</b> Confession, leverage-heavy nights, public meltdown thresholds, and Finch heat can override a middling score. Experiment; the Caseboard lists route levers without spoiling branches.</li>
</ul>
<p class="notes-tip">For route detail (Wolf / Lane / Ledger / cross-file), open <b>Caseboard</b> in this menu. For live status, open <b>Journal</b>.</p><p class="notes-lede">Spoiler-light status sheet. Hidden difficulties stay off this page; when a major check fires, a receipt line appears in the passage.</p>
<h3 class="journal-h">Arcs</h3>
<ul class="journal-list">
<li><b>Wolf case:</b> <<= $quests.wolfCase>></li>
<li><b>Crooked Lane:</b> <<= $quests.crookedLane>></li>
<li><b>Ledger audit:</b> <<= $quests.ledgerAudit>></li>
</ul>
<h3 class="journal-h">Clocks (0–3)</h3>
<ul class="journal-list">
<li><b>Wolf:</b> <<= $clocks.wolfCase>></li>
<li><b>Housing / Lane:</b> <<= $clocks.housing>></li>
<li><b>Ledger:</b> <<= $clocks.ledger>></li>
</ul>
<h3 class="journal-h">Day</h3>
<p class="journal-hint journal-day"><b><<= $city.hour>></b> · scene <<=$meta.scenes>> · arcs filed <<= $meta.completedArcs>> / 3.</p>
<h3 class="journal-h">Suggested focus</h3>
<p class="journal-hint"><<if $quests.wolfCase isnot "resolved">><b>Wolf:</b> Sheriff's office and street threads (Bigby, bar, alley).<br><</if>><<if $quests.crookedLane isnot "resolved">><b>Lane:</b> Beast and City Hall; follow Briar's tenant hallway if that lead fired.<br><</if>><<if $quests.ledgerAudit isnot "resolved">><b>Ledger:</b> Snow and the annex; map lanes before the final disposition.<br><</if>><<if $quests.wolfCase is "resolved" and $quests.crookedLane is "resolved" and $quests.ledgerAudit is "resolved">>All three arcs are resolved: cross-file synthesis, revisits, and the Slipper when night opens.<</if>></p><<widget "skillCheckReceipt">>
<<set _scr to _args[0]>>
<<if _scr and _scr.skill>>
<div class="skill-check-receipt" role="status" aria-live="polite">
<span class="scr-skill"><<print setup.skillLabel(_scr.skill)>></span>
<span class="scr-val"><<= _scr.value>></span>
<span class="scr-vs"> vs </span>
<span class="scr-dn"><<= _scr.difficulty>></span>
<span class="scr-sep"> — </span>
<<if _scr.passed>>
<span class="scr-out ok">Clear</span>
<<else>>
<span class="scr-out miss">Short</span>
<</if>>
<<if _scr.margin neq 0>>
<span class="scr-margin">(<<if _scr.margin gt 0>>+<</if>><<= _scr.margin>>)</span>
<</if>>
</div>
<</if>>
<</widget>>
/*
* Fallout-style skill attempt: link always shown; tag is [Charm 4] etc.
* On click, runs skillCheck and stores result in $skillCheckBridge for the destination passage.
* Destination: <<set _r to setup.consumeSkillCheckBridge()>> then <<if not _r>> fallback <<set _r to setup.skillCheck(...)>>
* Args: skill id, difficulty (number), link label, destination passage name.
*/
<<widget "skillAttemptLink">>
<<set _salSkill to _args[0]>>
<<set _salDiff to Number(_args[1])>>
<<set _salText to _args[2]>>
<<set _salDest to _args[3]>>
<<capture _salSkill,_salDiff,_salText,_salDest>>
<<set _salLab to _salText + " " + setup.skillGateTag(_salSkill, _salDiff)>>
<<link _salLab _salDest>><<set $skillCheckBridge to setup.skillCheck(_salSkill, _salDiff)>><</link>>
<</capture>>
<</widget>>
<<widget "hudDotRow">>
<<set _drVal to _args[0]>>
<<set _drMin to _args[1]>>
<<set _drMax to _args[2]>>
<<set _drCls to _args[3]>>
<<set _dc to setup.hudDotCount(_drMin, _drMax)>>
<<set _drowCls to "hud-dot-row meter-dots " + _drCls>>
<div @class="_drowCls" aria-hidden="true">
<<if _dc gte 1>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 1, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
<<if _dc gte 2>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 2, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
<<if _dc gte 3>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 3, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
<<if _dc gte 4>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 4, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
<<if _dc gte 5>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 5, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
<<if _dc gte 6>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 6, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
<<if _dc gte 7>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 7, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
<<if _dc gte 8>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 8, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
<<if _dc gte 9>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 9, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
<<if _dc gte 10>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 10, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
<<if _dc gte 11>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 11, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
<<if _dc gte 12>><span @class="(setup.hudDotLit(_drVal, _drMin, _drMax, 12, _dc) ? 'hud-dot on' : 'hud-dot')"></span><</if>>
</div>
<</widget>>
<<widget "hudMeter">>
<<set _hmLbl to _args[0]>>
<<set _hmVal to _args[1]>>
<<set _hmMin to _args[2]>>
<<set _hmMax to _args[3]>>
<<set _hmPulse to _args[4]>>
<<set _hmCls to _args[5]>>
<<set _hmHeat to "">>
<<if _args.length gt 6>>
<<set _hmHeat to _args[6]>>
<</if>>
<<set _hmFill to _hmCls + (_hmHeat neq "" ? " " + _hmHeat : "")>>
<<set _hmShowRatio to (_hmMin gte 0 and (_hmMax - _hmMin) lte 20)>>
<<set _hmDisp to _hmShowRatio ? (_hmVal + " / " + _hmMax) : _hmVal>>
<div class="hud-meter">
<div class="hud-meter-top">
<span class="hud-meter-name"><<print _hmLbl>></span>
<<if _hmPulse neq "">>
<span class="hud-meter-val hud-num" @data-pulse="'' + _hmPulse"><<= _hmDisp>></span>
<<else>>
<span class="hud-meter-val hud-num hud-num-plain"><<= _hmDisp>></span>
<</if>>
</div>
<<hudDotRow _hmVal _hmMin _hmMax _hmFill>>
</div>
<</widget>>
<<widget "hudSeg3">>
<<set _hsLbl to _args[0]>>
<<set _hsN to _args[1]>>
<div class="hud-seg-row">
<span class="hud-seg-name"><<print _hsLbl>></span>
<div class="hud-seg-track seg-3">
<span @class="(_hsN gte 1) ? 'seg on' : 'seg'"></span>
<span @class="(_hsN gte 2) ? 'seg on' : 'seg'"></span>
<span @class="(_hsN gte 3) ? 'seg on' : 'seg'"></span>
</div>
</div>
<</widget>>
<<widget "choiceRow">>
<<set _crDest to _args[0]>>
<<set _crTxt to _args[1]>>
<<set _crMeta to "">>
<<if _args.length gt 2>>
<<set _crMeta to _args[2]>>
<</if>>
<div class="choice-row-wrap">
<<link _crTxt _crDest>>
<</link>>
<<if _crMeta neq "">>
<div class="choice-meta-line"><<print _crMeta>></div>
<</if>>
</div>
<</widget>>
<<widget "stamp">>\
<<set _stampKind to (_args[1] ? _args[1] : "filed")>>\
<span @class="'stamp ' + _stampKind"><<print _args[0]>></span>\
<</widget>>
<<widget "tag">>\
<<set _tagKind to (_args[1] ? _args[1] : "calm")>>\
<span @class="'tag ' + _tagKind"><<print _args[0]>></span>\
<</widget>>
<<widget "headline">>\
<div class="headline"><<print _args[0]>><<if _args[1]>><span class="source"><<print _args[1]>></span><</if>></div>\
<</widget>>
<<widget "scorecard">>\
<div class="scorecard"><div class="scorecard-title"><<print _args[0]>></div><<if _args[1]>><div class="scorecard-meta"><<print _args[1]>></div><</if>></div>\
<</widget>>
<<widget "endingCard">>\
<div class="ending-card"><span class="label">Filed</span><span class="title"><<print _args[0]>></span><<if _args[1]>><span class="meta"><<print _args[1]>></span><</if>></div>\
<</widget>>