{
  "version": "v2.18",
  "officialDeckUrl": "https://stepawaycards.com",
  "communityEndpoint": "api.php?endpoint=community",
  "reportEndpoint": "api.php?endpoint=report",
  "safety": {
    "emergency": "999",
    "support": "Samaritans 116 123",
    "note": "If life is at risk in real life, stop playing and get real help."
  },
  "playerScaling": {
    "1": {
      "hand": 7,
      "timer": 90
    },
    "2": {
      "hand": 6,
      "timer": 120
    },
    "3": {
      "hand": 5,
      "timer": 180
    },
    "4": {
      "hand": 4,
      "timer": 240
    }
  },
  "crisisTargets": {
    "low": 8,
    "serious": 10,
    "critical": 12
  },
  "communityMilestones": [
    {
      "at": 10,
      "title": "First Archive Opened",
      "reward": "Unlock a designer note and a new starter case slot.",
      "scope": "local_and_community"
    },
    {
      "at": 25,
      "title": "Night Watch",
      "reward": "Unlock a hard wrinkle pack.",
      "scope": "local_and_community"
    },
    {
      "at": 50,
      "title": "Case File Drop",
      "reward": "Unlock the first community case pack slot.",
      "scope": "local_and_community"
    },
    {
      "at": 100,
      "title": "The Room Stayed",
      "reward": "Unlock a community recap card.",
      "scope": "local_and_community"
    }
  ],
  "rulesSummary": "Live DIG, hidden check-ins, Presence, Receptivity and ideal VALUE ranges. The app reads the case; the deck remains table skill.",
  "shareEndpoint": "api.php?endpoint=share",
  "outcomeEndpoint": "api.php?endpoint=outcome",
  "sharePage": "share.php",
  "shareSummary": "Finished cases can be published as public story pages, so a result becomes a short readable case archive with a link back to the game.",
  "profileEndpoint": "api.php?endpoint=profile",
  "profileSummary": "Each browser creates an anonymous table profile. Local archive stays on device; hosted PHP records community totals, public story shares and lightly de-duplicates repeated results.",
  "communitySummary": "Local milestones unlock on this device. Community milestones use hosted shared/reported outcomes across all tables.",
  "communityCounterMode": "sharedAndReported",
  "shareSchema": "stepaway-outcome-v3-narrative",
  "storyEngine": "case-novella-v1",
  "contentEndpoint": "api.php?endpoint=content",
  "packManager": "Admin Pack Manager supports self-contained case packs, validation and import without regenerating the app.",
  "finalDeployNote": "v2.9.1 fixes Weaved Moment timing order: WEAVE ONLY bonus window now opens before More Time on both button and timer expiry, with no untimed planning popup.",
  "appVersion": "2.18-soul",
  "access": {
    "mode": "paypal_entitlement_unlock",
    "demoCaseLimit": 1,
    "fullAccessName": "Step Away Purchase Access",
    "demoCopy": "Poker-deck demo includes one case. A PayPal transaction ID from an official deck or app-access purchase unlocks the full system.",
    "maxProfilesPerDeckPurchase": 3,
    "maxProfilesPerAppOnlyPurchase": 1,
    "creditRule": "If an app-access-only profile later activates an official deck transaction, the profile receives one future pack credit.",
    "offlineCheckDays": 30,
    "offlineDismissDays": 7
  },
  "soulSystem": {
    "meterVisibility": "Progress, Pressure, Presence and Receptivity are hidden during a Moment unless a WEAVE ONLY breakthrough reveals them.",
    "idealRange": "Each suit has a changing ideal VALUE range. Under-reaching can miss the person. Over-helping can overwhelm them.",
    "checkIn": "End of Moment reveals the meters and teaches what changed before the next Moment starts.",
    "durations": "Core release uses 3 authored Moments. 5 and 7 Moment cases should be authored as future case packs, not padded automatically."
  }
}