From 5faca60a128650a3f92d26950e44148b98416f59 Mon Sep 17 00:00:00 2001 From: Fredrik Johansson Date: Mon, 27 Jul 2026 19:50:31 +0200 Subject: [PATCH] Initial commit: Diariet MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A bureaucratic horror game — five shifts processing incoming tips and incident reports for a municipal office that officially handles nuisance complaints and unofficially exists to keep Djupet's cult off the front page. Route each report: dismiss, file as known, flag for follow-up, or escalate and lose visibility into what happens next. Guidelines accumulate and contradict across shifts, same shape as Retur's regulation stack. Directly descended from Retur's engine (routeLetter/nextDay -> routeReport/nextShift, same 4-route-per-item structure) but with one real mechanical difference: escalating always costs Insyn (insight/ notice), whether or not it was the correct call — being right doesn't make you invisible. Several reports cite real events from Djupet's own event pool (the bleeding IKEA LACK table, Göran added to the cult's Discord by accident, the Värnhemstorget pigeons, Turning Torso rotating), reframed as outside tips from residents who saw a fragment of something they don't understand. Same universe, a level further from the truth, and the player is explicitly never given the full picture — that's the design, not a limitation. Shares djupet/retur's exact :root palette but its own accent (cold institutional cyan instead of Retur's stamp-red or Djupet's eldritch purple). Intro/win/loss screens use real generated desk photos (rotary phone, corkboard map with red string, a ceiling water stain shaped like a coastline that grows between screens), converted PNG->WebP. Verified: tsc clean, 9/9 vitest (data-integrity check that every report has real consequence text, and a locked-in test for the escalation-always-costs-insight mechanic), a real browser playthrough confirming the wrong+escalate cost stacks correctly (-1 trust, +2 insight), and all three ending states screenshotted via injected game state. Co-Authored-By: Claude Sonnet 5 --- .gitea/workflows/docker.yml | 62 ++ .gitignore | 10 + Dockerfile | 11 + README.md | 31 + docker-compose.yml | 6 + index.html | 18 + nginx.conf | 10 + package-lock.json | 1508 +++++++++++++++++++++++++++++++++++ package.json | 19 + public/favicon.svg | 6 + public/gameover.webp | Bin 0 -> 47330 bytes public/intro.webp | Bin 0 -> 40154 bytes public/survived.webp | Bin 0 -> 38874 bytes src/data/content.ts | 357 +++++++++ src/engine.test.ts | 73 ++ src/engine.ts | 105 +++ src/main.ts | 207 +++++ src/style.css | 100 +++ src/types.ts | 44 + tsconfig.json | 18 + vite.config.ts | 6 + 21 files changed, 2591 insertions(+) create mode 100644 .gitea/workflows/docker.yml create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 index.html create mode 100644 nginx.conf create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.svg create mode 100644 public/gameover.webp create mode 100644 public/intro.webp create mode 100644 public/survived.webp create mode 100644 src/data/content.ts create mode 100644 src/engine.test.ts create mode 100644 src/engine.ts create mode 100644 src/main.ts create mode 100644 src/style.css create mode 100644 src/types.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.gitea/workflows/docker.yml b/.gitea/workflows/docker.yml new file mode 100644 index 0000000..62eaff1 --- /dev/null +++ b/.gitea/workflows/docker.yml @@ -0,0 +1,62 @@ +name: Docker + +on: + push: + branches: [main] + workflow_dispatch: + +jobs: + build-and-push: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Test + run: | + npm install + npm test + + - name: Derive image name and tags + id: meta + shell: bash + run: | + set -euo pipefail + + SERVER_URL="${GITHUB_SERVER_URL:-${GITEA_SERVER_URL:-}}" + REPO="${GITHUB_REPOSITORY:-${GITEA_REPOSITORY:-}}" + SHA="${GITHUB_SHA:-${GITEA_SHA:-}}" + + if [[ -z "${SERVER_URL}" || -z "${REPO}" || -z "${SHA}" ]]; then + echo "Missing SERVER_URL/REPO/SHA env vars." >&2 + echo "SERVER_URL='${SERVER_URL}' REPO='${REPO}' SHA='${SHA}'" >&2 + exit 1 + fi + + HOST=$(echo "${SERVER_URL}" | sed 's|https://||;s|http://||') + IMAGE=$(echo "${HOST}/${REPO}" | tr '[:upper:]' '[:lower:]') + SHORT_SHA=$(echo "${SHA}" | cut -c1-7) + + echo "host=${HOST}" >> "$GITHUB_OUTPUT" + echo "image=${IMAGE}" >> "$GITHUB_OUTPUT" + echo "short_sha=${SHORT_SHA}" >> "$GITHUB_OUTPUT" + + - name: Log in to Gitea container registry + uses: docker/login-action@v3 + with: + registry: ${{ steps.meta.outputs.host }} + username: ${{ github.actor }} + password: ${{ secrets.TKNTKN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + file: Dockerfile + push: true + tags: | + ${{ steps.meta.outputs.image }}:latest + ${{ steps.meta.outputs.image }}:${{ steps.meta.outputs.short_sha }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ec22402 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +node_modules +dist +.env +*.local + +# Raw source images — public/*.webp are the optimized derivatives that +# actually ship; no need to bloat the repo with large originals. +/intro.png +/win.png +/gameover.png diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0331674 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM node:22-alpine AS build +WORKDIR /app +COPY package.json ./ +RUN npm install +COPY . . +RUN npm run build + +FROM nginx:alpine +COPY --from=build /app/dist /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf +EXPOSE 80 diff --git a/README.md b/README.md new file mode 100644 index 0000000..30a8a1d --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# Diariet + +**Du får aldrig hela bilden. Det är jobbet.** + +A short bureaucratic horror game. You process five shifts of incoming tips and incident reports for a municipal office that officially handles nuisance complaints and unofficially exists to keep [Djupet](https://repo.explewd.com/explewd/djupet)'s cult — and whatever it's actually in contact with — off the front page. Read each report, consult an accumulating and occasionally contradictory set of guidelines, then route it: dismiss it, file it as known, flag it for your own team, or escalate it upward and lose visibility into what happens next. + +You are never told the full story. Neither is the player. + +## Where this sits in the family + +Same visual lineage as [`djupet`](https://repo.explewd.com/explewd/djupet) and [`retur`](https://repo.explewd.com/explewd/retur) — identical `:root` palette (`#0d0d1a` background, the same borders and text colors) — but its own accent color (a cold institutional cyan, `#4fc3d9`, instead of Retur's stamp-red or Djupet's eldritch purple) and its own mechanical shape: `retur`'s engine (`routeLetter`/`nextDay`) is the direct ancestor of this one (`routeReport`/`nextShift`), same 4-route-per-item, trust/insight-instead-of-composure/suspicion, day-by-day guideline accumulation structure. + +The reports aren't invented from nothing — several cite real events from `djupet`'s own event pool (the bleeding IKEA LACK table, Göran accidentally added to the cult's Discord, the Värnhemstorget pigeons, Turning Torso rotating), reframed as outside tips filed by ordinary Malmö residents who saw a fragment of something they don't understand. Same universe, different desk, a level further from the truth. + +## The mechanical twist + +Unlike Retur, **escalating always costs you something**, whether or not it was the correct call — the *Insyn* (insight/notice) meter rises by one every time you choose `ESKALERA`, on top of any wrong-route penalty. The regulations sometimes tell you the right move is to escalate; doing so is never free. That's the core tension: being correct doesn't make you invisible. + +## Development + +```bash +npm install +npm run dev # http://localhost:5692 +npm run typecheck +npm test +npm run build +``` + +## Stack + +Vanilla TypeScript + Vite, zero runtime dependencies, `localStorage` only — no accounts, no backend. Same Docker/nginx/Gitea Actions shape as the rest of this family's small static games. diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..07859a7 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,6 @@ +services: + app: + image: ${IMAGE:-diariet:local} + restart: unless-stopped + ports: + - "${PORT:-3011}:80" diff --git a/index.html b/index.html new file mode 100644 index 0000000..b337b3b --- /dev/null +++ b/index.html @@ -0,0 +1,18 @@ + + + + + + Diariet + + + + + + + + +
Laddar…
+ + + diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..a676565 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,10 @@ +server { + listen 80; + root /usr/share/nginx/html; + index index.html; + location / { + try_files $uri $uri/ /index.html; + } + gzip on; + gzip_types text/css application/javascript application/json image/svg+xml; +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..29e0633 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1508 @@ +{ + "name": "diariet", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "diariet", + "version": "0.1.0", + "license": "MIT", + "devDependencies": { + "typescript": "~5.6.2", + "vite": "^6.4.3", + "vitest": "^4.1.9" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.3.tgz", + "integrity": "sha512-c0wdcekXtQvvn5Tsrk/+op/gUArrbWaFduBnTLP2l1cKLSQs4diMWjJw3m6A0DdzT8dAAX95KpkJ3qynCePbmw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.3.tgz", + "integrity": "sha512-3YjElDdWN+qXAFbJ/CzPV+0wspLqh54k/I6GfdYtEJRqg7buSgc1yPM3B+93j1M4neobtkATHZTmxK2AMVGfnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.3.tgz", + "integrity": "sha512-Pch2pFNOxxz1hTjypIdPyRTR6riiwRl84+VcN9djS680fw+Co1nAJINrdpqp7KV0NvyuU8ilZXZCjd7ykJl1GQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.3.tgz", + "integrity": "sha512-LEuncFUHFiF8t4yZVZvvZA1wk0pjAscRnsrn1EfTEmN4HXotBi2YtcnLRyaK6UbuczW7xZS5ES+81Rdz8Z0T6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.3.tgz", + "integrity": "sha512-zvBUvsQUpOWALdDsk6qbS8bXf2VxmPisuudNDrY7x0p0jBdsoZl8HsHczIOgkQiZldmcacMKtBzpoGVNeIe2bQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.3.tgz", + "integrity": "sha512-C2KmNrcSem/AMg984H/dev+si0lieQGdXdR/lYGJnuumXnFb9Y7QdiI62obFdLlxRYLBv4P0eUVIDbD4c1vVvw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.3.tgz", + "integrity": "sha512-ggXnsTAEzNQx74XpunRsiZ9aBZDsI7XIa0hm2nzR9f4WzH5/f/d73ZSDaC5ejJ8YLY4NW+V3wr0tjOaeCq8hqA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.3.tgz", + "integrity": "sha512-2vng+FlzNUhKZxtej3IUqJgbZoQk2M/dwQM20+ULV0R/E/8tr9/P6uEf2iiGIk4HL0zMKh5Jry7mUHdUOvyGgA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.3.tgz", + "integrity": "sha512-LLLFZKt4/Nraf9rxDkhiU8QVgLF4WmCkfr0L4fj0fPfIZFBib0DeiFk1hhaYKd03LFAFJcxHslhDFlNJLylf5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.3.tgz", + "integrity": "sha512-WJkdQCvS9sWNOUBJZfQRKpZGFBztRzcowI+nndmflKgU4XY+3a420FgTOSKTsVqJbnzSxeT4vaJalpOaPo2YCQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.3.tgz", + "integrity": "sha512-PwHXCCS2n64/1Ot6rP1YEYA02MGYBcQlr8CSZZyrUG2O7NH6NklYmvr9v3Jy+5e/eDeNchc/ukmKJi9LuflMIQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.3.tgz", + "integrity": "sha512-vUjxINQu3RC8NZS3ykk1gN65gIz8pAopOq2HXuZhiIxHdx7TFvDG+jgrdSgInu1Eza4/Rfi2VzZgyIgEH4WOaw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.3.tgz", + "integrity": "sha512-wzko4aJ13+0G3kGnviCg5gnXFKd40izKsrf2uOw12US4XqprkDrmwOpeW14aSNa37V8bfPcz5Fkob6LZ3BAPmA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.3.tgz", + "integrity": "sha512-8120ue0JUMSwy11stlwnfdX3pPd+WZYGCDBwEHWtIHi6pOpZmsEF5QKB7a/UN+XFdqvobxz98kv8RTqikyCEBw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.3.tgz", + "integrity": "sha512-XLFHnR3tXMjbOCh2vtVJHmxt+995uJsTERQyseFDRA0xxMxyTZPLa3OIUlyFaO4mF/Lu0FjmWHCuPXJT1n/IOg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.3.tgz", + "integrity": "sha512-se6yXvNGMIl0f+RQzyh7XAmia8/9kplQx424wnG2w0C1oi6XgO6Y8otKhdXFHbHs88Ihavzmvh1NWjuovE76BQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.3.tgz", + "integrity": "sha512-gNoxRefktVIiGflpONuxWWXZAzIQG++z9qHO3xKwk4WdDMuQja3JHGfE1u0i3PfPDyvhypdk+WrgIJqLhGG7sg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.3.tgz", + "integrity": "sha512-V4KtWtQfAFMU7+9/A/VDps/VI8CHd3cYz0L8sgJzz8qK7eY7wI4ruFD82UYIYvW9Z4DtlTfhQcsl4XyPHW5uSg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.3.tgz", + "integrity": "sha512-LBx9LYXvj2CBkMkjLdNAWLwH0MLMin7do2VcVo9kVPibGLkY0BQQut2fv7NVqkXqZ/CrAu9LqDHVV1xHCMpCPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.3.tgz", + "integrity": "sha512-ABVf3Q0RCu7NcyCCOZQI0pJ3GuSdfSl8EXcy88QtdceIMIoCUdfhsJChZ64L9zVM2aJHjde1Bhn5uqSRcX9ySA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.3.tgz", + "integrity": "sha512-+2Cy/ldweGBLlPIKsQLF8U5N44a0KDdbrk1rAjHOM9M2K+kGdIVjHLmmrZIcx+9Ny3ke/1JomCsDI1ocb11+sg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.3.tgz", + "integrity": "sha512-dtZvzc8BedpSaFNy75x6uiWwAGTH+aZHDtdrqP6qk+WcLJrfti6sGje1ZJ9UxyzDLF23d/mV+PaMwuC0hL7UVA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.3.tgz", + "integrity": "sha512-Rj8Ra4noo+aYy7sKBggCx0407mws34kAb1ySyWuq5DAtFBQdkSwnsjCgPrhPe9cvgBKZIukpE+CVHvORCS93kQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.3.tgz", + "integrity": "sha512-vp7N084ew/odXn2gi/mzm9mUkQu9l6AiN6dt4IeUM2Uvm9o+cVmP+YkqbMOteLbiGgqBBlJZjIMYVCfOOIVbVQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.3.tgz", + "integrity": "sha512-MOG/3gTOn4Fwf574RVOaY61I5o6P90legkFADiTyn1hyjNydT+cerU2rLUwPdZkKKyJ+iT+K9p7WXK4LM1Ka6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitest/expect": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz", + "integrity": "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.1.10", + "@vitest/utils": "4.1.10", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.10.tgz", + "integrity": "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.1.10", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.10.tgz", + "integrity": "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.10.tgz", + "integrity": "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.1.10", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.10.tgz", + "integrity": "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.10", + "@vitest/utils": "4.1.10", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.10.tgz", + "integrity": "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.10.tgz", + "integrity": "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.10", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-module-lexer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", + "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", + "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/nanoid": { + "version": "3.3.16", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", + "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/obug": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.4.tgz", + "integrity": "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.23.tgz", + "integrity": "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.16", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.62.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.3.tgz", + "integrity": "sha512-Gu0c0iH9FzgX1L1t7ByIbbS3Vmdz+6KHm/EsqmmC71gUQ82yvZRkTK6XzrFObSka91WUVdynqp6nsfilzr5k6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.62.3", + "@rollup/rollup-android-arm64": "4.62.3", + "@rollup/rollup-darwin-arm64": "4.62.3", + "@rollup/rollup-darwin-x64": "4.62.3", + "@rollup/rollup-freebsd-arm64": "4.62.3", + "@rollup/rollup-freebsd-x64": "4.62.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.3", + "@rollup/rollup-linux-arm-musleabihf": "4.62.3", + "@rollup/rollup-linux-arm64-gnu": "4.62.3", + "@rollup/rollup-linux-arm64-musl": "4.62.3", + "@rollup/rollup-linux-loong64-gnu": "4.62.3", + "@rollup/rollup-linux-loong64-musl": "4.62.3", + "@rollup/rollup-linux-ppc64-gnu": "4.62.3", + "@rollup/rollup-linux-ppc64-musl": "4.62.3", + "@rollup/rollup-linux-riscv64-gnu": "4.62.3", + "@rollup/rollup-linux-riscv64-musl": "4.62.3", + "@rollup/rollup-linux-s390x-gnu": "4.62.3", + "@rollup/rollup-linux-x64-gnu": "4.62.3", + "@rollup/rollup-linux-x64-musl": "4.62.3", + "@rollup/rollup-openbsd-x64": "4.62.3", + "@rollup/rollup-openharmony-arm64": "4.62.3", + "@rollup/rollup-win32-arm64-msvc": "4.62.3", + "@rollup/rollup-win32-ia32-msvc": "4.62.3", + "@rollup/rollup-win32-x64-gnu": "4.62.3", + "@rollup/rollup-win32-x64-msvc": "4.62.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz", + "integrity": "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", + "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyrainbow": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.10.tgz", + "integrity": "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.1.10", + "@vitest/mocker": "4.1.10", + "@vitest/pretty-format": "4.1.10", + "@vitest/runner": "4.1.10", + "@vitest/snapshot": "4.1.10", + "@vitest/spy": "4.1.10", + "@vitest/utils": "4.1.10", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.10", + "@vitest/browser-preview": "4.1.10", + "@vitest/browser-webdriverio": "4.1.10", + "@vitest/coverage-istanbul": "4.1.10", + "@vitest/coverage-v8": "4.1.10", + "@vitest/ui": "4.1.10", + "happy-dom": "*", + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "vite": { + "optional": false + } + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..0fd4d10 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "diariet", + "private": true, + "version": "0.1.0", + "license": "MIT", + "type": "module", + "scripts": { + "dev": "vite", + "typecheck": "tsc --noEmit", + "test": "vitest run", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "devDependencies": { + "typescript": "~5.6.2", + "vite": "^6.4.3", + "vitest": "^4.1.9" + } +} diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..f2ebf77 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/gameover.webp b/public/gameover.webp new file mode 100644 index 0000000000000000000000000000000000000000..1c3808801fadd36b8d113513d712b4e4d771d249 GIT binary patch literal 47330 zcmV(xKK<4(($yM5ucRlQ5l>YasQ;01^`+o~xQ~zb`1^V0Q z)&6gQ-){eP><|4@{C}!mY+u~%v{GySPu(9?dBNwZUo?-gKh7+_nSNrCR-QfL`z^5C z>AdAEX!0MvZU4W|htL1i@W1pg(f{H8&)h%#EhYT_{vJKQs%3kkzg{Kx|G%6j^ZTjm zTkmJyKVrRt|J&7X=D+rP0{@=$>$^Lm7yfSs5BUDWf3cl&eIkW^?45<#_LY2C4UbUOZNw?*v1C6~%s{L#$H7APdf9eI07P4ddN&hptE>9W!$^tmqFf&n&I=vfY6+iBVV zN%Nd|F0>V%>1PxCdK`nrE!PZMyLaE0!@r+L-rlF`ZZtysdg0x6`_i3y1t`&t1T~>S-f-v{8im¥_TVi?Xl}p#b4j)=<9K5-F0?| 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 literal 0 HcmV?d00001 diff --git a/public/intro.webp b/public/intro.webp new file mode 100644 index 0000000000000000000000000000000000000000..49f8071fb2390302de220a6be6777acc2cc12055 GIT binary patch literal 40154 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 = { + avfarda: { label: 'AVFÄRDA', stamp: 'AVFÄRDAD', description: 'Ingen grund för åtgärd. Arkiveras inte ens.' }, + arkivera: { label: 'ARKIVERA', stamp: 'KATALOGISERAD', description: 'Känt fenomen. Förs till katalogen utan vidare åtgärd.' }, + utred: { label: 'UTRED', stamp: 'FLAGGAD', description: 'Flaggas för uppföljning av vår egen enhet.' }, + eskalera: { label: 'ESKALERA', stamp: 'ÖVERLÄMNAD', description: 'Överlämnas uppåt. Du får inte veta vad som händer sedan.' }, +}; + +export const GUIDELINES: Guideline[] = [ + { id: 'g1', fromDay: 1, number: '1.1', text: 'Enstaka, obekräftade sinnesintryck utan vittnen: avfärda.' }, + { id: 'g2', fromDay: 1, number: '1.2', text: 'Redan katalogiserade platser eller föremål utan ny avvikelse: arkivera.' }, + { id: 'g3', fromDay: 1, number: '1.3', text: 'Två eller fler oberoende källor som beskriver samma händelse: utred.' }, + { id: 'g4', fromDay: 1, number: '1.4', text: 'Strukturella förändringar i byggnader, broar eller himlakroppar: eskalera omedelbart.' }, + { id: 'g5', fromDay: 2, number: '2.1', text: 'Föremål som "blöder", "andas" eller "sjunger" och redan är katalogiserade: arkivera.' }, + { id: 'g6', fromDay: 2, number: '2.2', text: 'Om fenomenet är av en typ som saknas i katalogen: eskalera, oavsett övrigt innehåll.', note: 'Senare bestämmelse har företräde framför §2.1.' }, + { id: 'g7', fromDay: 2, number: '2.3', text: 'Anmälningar från minderåriga (under 12 år): utred, oavsett innehåll i övrigt.' }, + { id: 'g8', fromDay: 3, number: '3.1', text: 'Kommunalt anställd som "slutat svara" eller "slutat dyka upp": utred.' }, + { id: 'g9', fromDay: 3, number: '3.2', text: 'Om samma person tidigare förekommit i ett arkiverat ärende: eskalera.', note: 'Kontinuitet väger tyngre än en enskild händelse.' }, + { id: 'g10', fromDay: 3, number: '3.3', text: 'Anmälare som uppger en specifik, mätbar detalj (tid, avstånd, antal): utred, även om övrigt innehåll annars pekar mot avfärdande.' }, + { id: 'g11', fromDay: 4, number: '4.1', text: 'Flera obesläktade personer som delar samma dröm eller syn samma natt: eskalera.' }, + { id: 'g12', fromDay: 4, number: '4.2', text: 'Ärende som gäller samma plats som ett tidigare ärende denna vecka: arkivera som pågående, inte som nytt.' }, + { id: 'g13', fromDay: 4, number: '4.3', text: 'Anmälarens önskan om anonymitet är inte i sig ett skäl att eskalera. Behandla ärendet efter innehåll.' }, + { id: 'g14', fromDay: 5, number: '5.1', text: 'Ärenden som nämner denna avdelning eller handläggaren vid namn: arkivera internt. Utred aldrig vidare.' }, + { id: 'g15', fromDay: 5, number: '5.2', text: 'Ärenden daterade efter dagens datum, eller som beskriver något som ännu inte inträffat: eskalera utan att läsa färdigt.' }, + { id: 'g16', fromDay: 5, number: '5.3', text: 'Ärenden vars text skiljer sig mellan första och andra läsningen: eskalera.', note: 'Läs det inte en tredje gång.' }, +]; + +export const REPORTS: Report[] = [ + // ---- Day 1 ---- + { + id: 'd01', day: 1, source: 'Anonym', location: 'Möllevångstorget', filed: '2026-08-03', + body: 'Det luktar bränt tång vid torget på morgnarna. Ingen annan verkar märka det. Jag har inte pratat med grannarna om det.', + marks: ['ENSTAKA VITTNE'], + correctRoute: 'avfarda', explanation: 'Ett obekräftat sinnesintryck utan vittnen. §1.1.', + correctConsequence: 'Avfärdad. Lukten nämns inte igen i någon inkommen rapport den här veckan.', + wrongConsequences: { + utred: 'Flaggat i onödan. Uppföljningen bekräftade bara att torget luktar som torg gör.', + arkivera: 'Katalogiserat trots att det inte fanns något att katalogisera. Nästa handläggare kommer undra varför.', + eskalera: 'Överlämnat på svag grund. Ingen bekräftelse kom tillbaka. Det gör den sällan.', + }, + }, + { + id: 'd02', day: 1, source: 'Systembolaget, Davidshallsgatan', location: 'Davidshallsgatan', filed: '2026-08-03', + body: 'En kund erbjöd sig högljutt att "hälsa på gubben i havet" till personalen. Personalen bad honom lämna butiken. Han gick utan protest.', + marks: ['KÄND LOKAL'], + correctRoute: 'arkivera', explanation: 'Platsen och fenomenet är redan katalogiserade utan ny avvikelse. §1.2.', + correctConsequence: 'Katalogiserat under befintlig post. Ingen ny bilaga krävdes.', + wrongConsequences: { + avfarda: 'Avfärdat trots att posten redan finns i katalogen. Katalogen är nu inaktuell på en punkt.', + utred: 'Flaggat för uppföljning av något som redan är känt. Uppföljningen bekräftade det redan kända.', + eskalera: 'Överlämnat i onödan. Det som kom tillbaka var en kopia av den befintliga katalogposten, med en notering: "Se ovan."', + }, + }, + { + id: 'd03', day: 1, source: 'Två oberoende passagerare', location: 'Buss 5, Värnhemstorget', filed: '2026-08-03', + body: 'Bussen körde förbi hållplatsen tre gånger utan att stanna. Ingen av oss märkte det förrän vi jämförde anteckningar efteråt. Föraren såg nöjd ut, enligt båda.', + marks: ['TVÅ KÄLLOR', 'OBEROENDE'], + correctRoute: 'utred', explanation: 'Två oberoende källor beskriver samma händelse. §1.3.', + correctConsequence: 'Flaggat. Uppföljningsteamet noterar föraren för fortsatt observation, ingen ytterligare åtgärd än så länge.', + wrongConsequences: { + avfarda: 'Avfärdat trots två oberoende vittnesmål. Ett tredje vittne hörde av sig veckan efter. Det fanns ingen anteckning att jämföra med.', + arkivera: 'Katalogiserat som känt fenomen. Det är det inte, ännu.', + eskalera: 'Överlämnat för en enstaka bussrunda. Det kom tillbaka omärkt, utan kommentar.', + }, + }, + { + id: 'd04', day: 1, source: 'Arkitektkontoret', location: 'Turning Torso', filed: '2026-08-03', + body: 'Byggnaden roterar. Den har inte gjort det på tre år och är inte konstruerad för att göra det alls. Vi har ingen förklaring och kommer inte ringa igen.', + marks: ['STRUKTURELL AVVIKELSE'], + correctRoute: 'eskalera', explanation: 'Strukturell förändring i en byggnad. Eskaleras omedelbart enligt §1.4.', + correctConsequence: 'Överlämnat samma timme. Ingen bekräftelse kom tillbaka. Byggnaden slutade rotera dagen efter, enligt lokalnyheterna, som inte nämnde varför.', + wrongConsequences: { + avfarda: 'Avfärdat. Arkitektkontoret ringde aldrig igen, precis som de sa. Ingen annan gjorde det heller.', + arkivera: 'Katalogiserat som känt fenomen. Det var första gången det hände. Det blev inte den sista.', + utred: 'Flaggat för uppföljning i stället för omedelbar eskalering. Uppföljningen genomfördes tre dagar för sent.', + }, + penalty: { arkivera: { insight: 2 } }, + }, + { + id: 'd05', day: 1, source: 'Anonym', location: 'Bellevuegatan', filed: '2026-08-03', + body: 'Jag drömde att jag gick längs en gata jag inte känner igen och räknade dörrarna. Det var 14 stycken. Jag vet inte varför jag skriver in det här.', + marks: ['ENSTAKA VITTNE', 'DRÖM'], + correctRoute: 'avfarda', explanation: 'En enda persons obekräftade dröm. §1.1 gäller trots den specifika detaljen — ingen annan källa bekräftar den.', + correctConsequence: 'Avfärdat. Drömmar utan andra källor är inte handlingsbara, hur specifika de än är.', + wrongConsequences: { + utred: 'Flaggat på grund av en enda dröm. Det finns inget att följa upp förrän någon annan drömmer samma sak.', + arkivera: 'Katalogiserat i förtid. Posten fick ligga tom i väntan på fler källor som aldrig kom den veckan.', + eskalera: 'Överlämnat på grundval av en dröm. Det kom tillbaka med en enda rad: "Vänta på fler."', + }, + }, + + // ---- Day 2 ---- + { + id: 'd06', day: 2, source: 'Hyresgäst', location: 'Rosengård', filed: '2026-08-04', + body: 'Bordet, modell LACK, har börjat blöda en svart vätska från en led i skivan. Vi har sett det förut i grannens lägenhet för två år sedan. Vi har lagt en handduk över det.', + marks: ['KÄND FÖREMÅLSTYP'], + correctRoute: 'arkivera', explanation: 'Katalogiserad föremålstyp utan ny avvikelse. §2.1.', + correctConsequence: 'Katalogiserat under befintlig post för möbeltypen. Handduken rekommenderas fortsätta ligga kvar.', + wrongConsequences: { + eskalera: 'Överlämnat trots känd föremålstyp. Det som kom tillbaka var en kopia av den befintliga posten med en irriterad ton.', + avfarda: 'Avfärdat trots att katalogen redan har en post för detta. Nästa liknande anmälan blir svårare att placera.', + utred: 'Flaggat för uppföljning av ett väldokumenterat fenomen. Uppföljningen bekräftade det redan kända, långsammare än nödvändigt.', + }, + }, + { + id: 'd07', day: 2, source: 'Förälder', location: 'Husie', filed: '2026-08-04', + body: 'Min sons leksaksbil har börjat surra en melodi när ingen rör den. Det är inte en melodi som finns i leksaken. Den går på batteri som togs ur för en vecka sedan.', + marks: ['OKATALOGISERAD TYP'], + correctRoute: 'eskalera', explanation: 'Fenomentypen saknas i katalogen — en leksaksbil utan batteri som spelar en okänd melodi är inte samma post som ett blödande bord. §2.2 har företräde framför §2.1.', + correctConsequence: 'Överlämnat. Ingen bekräftelse kom tillbaka. Leksaken nämns inte i någon senare rapport från samma familj.', + wrongConsequences: { + arkivera: 'Katalogiserat under "blödande/andande föremål" trots att det är fel kategori. Katalogen är nu felaktig på en punkt som någon kommer lita på senare.', + avfarda: 'Avfärdat som barnprat. §2.3 hade ändå krävt uppföljning eftersom anmälaren är förälder till en minderårig, inte den minderåriga själv — men innehållet krävde mer än så.', + utred: 'Flaggat i stället för eskalerat. En vecka senare fanns varken leksaken eller familjens svar på uppföljningen.', + }, + penalty: { arkivera: { trust: 2 } }, + }, + { + id: 'd08', day: 2, source: 'Elev, 11 år', location: 'Värnhemstorget', filed: '2026-08-04', + body: 'Duvorna på torget har slutat äta. De bara sitter och tittar. En av dem tittade på mig längre än en duva borde kunna.', + marks: ['MINDERÅRIG ANMÄLARE'], + correctRoute: 'utred', explanation: 'Anmälare under 12 år. §2.3 kräver uppföljning oavsett innehåll.', + correctConsequence: 'Flaggat. Uppföljningen noterar duvorna för fortsatt observation. Eleven kontaktas inte igen.', + wrongConsequences: { + avfarda: 'Avfärdat trots att anmälaren är minderårig. §2.3 är inte förhandlingsbar av en anledning som inte står i regelverket.', + arkivera: 'Katalogiserat för tidigt. Det finns ingen tidigare post för stillasittande duvor att katalogisera under.', + eskalera: 'Överlämnat för en duvobservation. Det kom tillbaka oöppnat.', + }, + penalty: { avfarda: { trust: 2 } }, + }, + { + id: 'd09', day: 2, source: 'Kommunen, Parkförvaltningen', location: 'Värnhemstorget', filed: '2026-08-04', + body: 'Fontänen rinner baklänges igen. Vi satte upp samma staket som förra gången. Folk tar fortfarande selfies.', + marks: ['ÅTERKOMMANDE', 'KÄND POST'], + correctRoute: 'arkivera', explanation: 'Fenomenet är redan katalogiserat sedan tidigare tillfälle. §2.1.', + correctConsequence: 'Katalogiserat som återkommande post. Staketet noteras som fortsatt ineffektivt, vilket redan var känt.', + wrongConsequences: { + eskalera: 'Överlämnat för en känd, återkommande post. Svaret var kort: "Se tidigare ärende."', + utred: 'Flaggat för uppföljning av något som redan är dokumenterat två gånger om.', + avfarda: 'Avfärdat trots befintlig katalogpost. Parkförvaltningen hör av sig igen nästa gång, till en handläggare som inte minns detta.', + }, + }, + { + id: 'd10', day: 2, source: 'Nattvakt', location: 'Frihamnen', filed: '2026-08-04', + body: 'En container i hamnen har böjts inåt, som om något tryckte på den utifrån, utan en enda buckla på utsidan. Vi har inte sett den här sortens skada förut.', + marks: ['OKATALOGISERAD TYP'], + correctRoute: 'eskalera', explanation: 'En ny fenomentyp — skada utan yttre orsak. Ingen befintlig katalogpost matchar. §2.2.', + correctConsequence: 'Överlämnat. Containern flyttades av okänd part inom tolv timmar. Ingen fraktsedel för flytten hittades.', + wrongConsequences: { + arkivera: 'Katalogiserat trots att ingen matchande post finns. Nästa handläggare kommer leta efter den förgäves.', + avfarda: 'Avfärdat som materialfel. Materialet i fråga tål betydligt mer än så här.', + utred: 'Flaggat för uppföljning. Containern var borta innan uppföljningen hann genomföras.', + }, + penalty: { avfarda: { insight: 1 } }, + }, + + // ---- Day 3 ---- + { + id: 'd11', day: 3, source: 'Kollega, SMHI', location: 'Malmöhus fyr', filed: '2026-08-05', + body: 'Vår mätstationsansvarige vid fyren har slutat svara i telefon och på mejl sedan i tisdags. Hans ersättare rapporterar att vattnet "sjunger" på nätterna nu. Hon har också slutat höra av sig.', + marks: ['KOMMUNALT ANSTÄLLD'], + correctRoute: 'utred', explanation: 'Kommunalt/statligt anställd som slutat svara. §3.1. Ingen tidigare koppling till ett arkiverat ärende finns ännu.', + correctConsequence: 'Flaggat för uppföljning. Namnet noteras i systemet för framtida kontroll mot arkivet.', + wrongConsequences: { + avfarda: 'Avfärdat. Ingen mer information kom in om personen förrän ett annat ärende nämnde honom igen — då var det redan för sent att bara flagga det.', + arkivera: 'Katalogiserat för tidigt. Det finns ännu ingen post att katalogisera under.', + eskalera: 'Överlämnat direkt, utan att först flagga för uppföljning enligt rutin. Ingen förklaring kom tillbaka om varför det gick snabbare den här gången.', + }, + }, + { + id: 'd12', day: 3, source: 'Länsstyrelsen', location: 'Malmöhus fyr', filed: '2026-08-05', + body: 'Namnet på mätstationsansvarige vid fyren återfinns i vårt eget arkiv, ärende 0311, avslutat för fem veckor sedan under rubriken "vattennivå, tekniskt fel".', + marks: ['ÅTERKOMMANDE NAMN', 'KORSREFERENS'], + correctRoute: 'eskalera', explanation: 'Samma person har tidigare förekommit i ett arkiverat ärende. Kontinuitet väger tyngre än den enskilda händelsen. §3.2.', + correctConsequence: 'Överlämnat med hänvisning till ärende 0311. Ingen bekräftelse kom tillbaka. Ärende 0311 markerades som "under granskning" av någon annan än dig.', + wrongConsequences: { + utred: 'Flaggat för ytterligare uppföljning i stället för att eskalera trots den bekräftade kopplingen. §3.2 är tydlig på den punkten.', + arkivera: 'Katalogiserat som avslutat. Kopplingen till ärende 0311 innebär motsatsen.', + avfarda: 'Avfärdat trots en bekräftad korsreferens till ett tidigare arkiverat ärende. Det är precis den kombinationen §3.2 finns för att fånga.', + }, + penalty: { avfarda: { trust: 2, insight: 1 } }, + }, + { + id: 'd13', day: 3, source: 'Pendlare', location: 'SJ, tunnel mot Köpenhamn', filed: '2026-08-05', + body: 'Tåget stod stilla i exakt tolv minuter i en tunnel som inte finns på någon karta jag hittat. Jag tog tid på det med mobilen. Vi anlände ändå i tid enligt tidtabellen.', + marks: ['MÄTBAR DETALJ'], + correctRoute: 'utred', explanation: 'En specifik, mätbar detalj (exakt tolv minuter, tidtagen) kräver uppföljning enligt §3.3, även om ärendet annars hade avfärdats.', + correctConsequence: 'Flaggat. Uppföljningen begär tågloggen från SJ. Loggen visar ingen tunnel på den sträckan över huvud taget.', + wrongConsequences: { + avfarda: 'Avfärdat trots den mätbara detaljen. §3.3 finns specifikt för att förhindra det.', + arkivera: 'Katalogiserat för tidigt. Ingen tidigare post om en obefintlig tunnel finns att katalogisera under.', + eskalera: 'Överlämnat för en enskild tidsangivelse utan korsreferens. Det kom tillbaka med frågan varför det inte flaggades för uppföljning först.', + }, + }, + { + id: 'd14', day: 3, source: 'Anonym', location: 'Rådmansgatan', filed: '2026-08-05', + body: 'Jag hade en obehaglig känsla när jag gick förbi porten i går kväll. Inget särskilt hände. Jag vet inte varför jag anmäler det.', + marks: ['ENSTAKA VITTNE'], + correctRoute: 'avfarda', explanation: 'Ett obekräftat, ospecifikt sinnesintryck utan mätbar detalj eller andra källor. §1.1 gäller fortfarande.', + correctConsequence: 'Avfärdat. Inget vidare hördes från adressen.', + wrongConsequences: { + utred: 'Flaggat för en känsla utan mätbar detalj eller andra källor. Uppföljningen hade inget att undersöka.', + arkivera: 'Katalogiserat utan att det finns något fenomen att katalogisera.', + eskalera: 'Överlämnat för en obehaglig känsla. Ingenting kom tillbaka, vilket i det här fallet troligen var rätt svar även om vägen dit inte var det.', + }, + }, + { + id: 'd15', day: 3, source: 'Granne', location: 'Sofielund', filed: '2026-08-05', + body: 'Lukten från källaren är tillbaka. Vi har klagat förut. De sa att det var kimchi. Det är inte kimchi, det har aldrig varit kimchi.', + marks: ['ENSTAKA VITTNE', 'ÅTERKOMMANDE KLAGOMÅL'], + correctRoute: 'avfarda', explanation: 'Enstaka vittne, ingen mätbar detalj, ingen strukturell förändring. Att klagomålet upprepats gör det inte till mer än §1.1 så länge det saknar korroborering.', + correctConsequence: 'Avfärdat, som förra gången. Grannen kommer sannolikt höra av sig igen.', + wrongConsequences: { + utred: 'Flaggat trots att inget i det upprepade klagomålet uppfyller kraven för uppföljning.', + arkivera: 'Katalogiserat under en förklaring ("kimchi") som anmälaren själv redan avfärdat som osann. Katalogen ärver nu den osanningen.', + eskalera: 'Överlämnat för ett återkommande lukt-klagomål utan ny information. Det kom tillbaka omärkt.', + }, + }, + + // ---- Day 4 ---- + { + id: 'd16', day: 4, source: 'Fem obesläktade anmälare', location: 'Malmö, spritt', filed: '2026-08-06', + body: 'Vi känner inte varandra. Vi drömde samma sak i natt: en stad under vatten där byggnaderna är rätt placerade men färgen är fel. Vi har alla ritat samma bild oberoende av varandra. Bilderna bifogas.', + marks: ['FLERA KÄLLOR', 'DELAD DRÖM'], + correctRoute: 'eskalera', explanation: 'Flera obesläktade personer som delar samma dröm samma natt. §4.1, utan undantag.', + correctConsequence: 'Överlämnat med samtliga fem teckningar bifogade. Ingen bekräftelse kom tillbaka. Teckningarna returnerades inte heller.', + wrongConsequences: { + utred: 'Flaggat för uppföljning i stället för omedelbar eskalering. §4.1 medger inget mellansteg när kriteriet väl är uppfyllt.', + arkivera: 'Katalogiserat som känt fenomen. Delade drömmar mellan obesläktade personer har ingen tidigare katalogpost.', + avfarda: 'Avfärdat trots fem oberoende, samstämmiga källor. Det är den starkaste sortens bevisning regelverket erkänner, och den avfärdades ändå.', + }, + penalty: { avfarda: { trust: 2, insight: 2 } }, + }, + { + id: 'd17', day: 4, source: 'Granne', location: 'Sofielund', filed: '2026-08-06', + body: 'Källarlukten från i förrgår är tillbaka, samma adress. Den är starkare nu. Någon borde komma och titta, inte bara skriva ner det igen.', + marks: ['SAMMA PLATS', 'DENNA VECKA'], + correctRoute: 'arkivera', explanation: 'Samma plats som ärende d15 tidigare denna vecka. Behandlas som pågående, inte som nytt ärende. §4.2.', + correctConsequence: 'Katalogiserat som pågående under befintlig post från tidigare i veckan, med notering om att lukten förstärkts.', + wrongConsequences: { + avfarda: 'Avfärdat som ett nytt, enskilt ärende. Kopplingen till adressen tidigare i veckan gick förlorad.', + utred: 'Flaggat som nytt ärende i stället för att kopplas till det pågående. Uppföljningen dubbelarbetade det redan kända.', + eskalera: 'Överlämnat för en källarlukt som redan är ett pågående, lågprioriterat ärende. Det kom tillbaka med en enda fråga: "Varför nu?"', + }, + }, + { + id: 'd18', day: 4, source: 'Anonym (begär sekretess)', location: 'Limhamn', filed: '2026-08-06', + body: 'Jag vill vara anonym av personliga skäl, inte för att det jag sett är farligt. Min katt vägrar gå in i ett av rummen i lägenheten. Det har hon aldrig gjort förut.', + marks: ['ANONYM'], + correctRoute: 'avfarda', explanation: 'Anonymitet är inte i sig ett skäl att eskalera. §4.3. Innehållet — en katt som undviker ett rum — uppfyller inget annat kriterium.', + correctConsequence: 'Avfärdat efter innehåll, inte efter anmälarens önskan om sekretess. Sekretessen respekteras ändå i akten.', + wrongConsequences: { + eskalera: 'Överlämnat på grund av begärd anonymitet, inte på grund av innehållet. §4.3 finns specifikt för att förhindra den sammanblandningen.', + utred: 'Flaggat för uppföljning av ett kattbeteende utan andra kriterier uppfyllda.', + arkivera: 'Katalogiserat utan att det finns en matchande post för "katt som undviker rum".', + }, + }, + { + id: 'd19', day: 4, source: 'Hyresgäst', location: 'Rosengård', filed: '2026-08-06', + body: 'Samma bord som förra veckan. Det blöder fortfarande. Handduken vi la över det är nu genomsyrad. Vi har inte bytt den, av skäl vi inte kan förklara.', + marks: ['KÄND FÖREMÅLSTYP'], + correctRoute: 'arkivera', explanation: 'Samma katalogiserade föremålstyp som d06, utan ny avvikelsetyp. §2.1 gäller fortfarande.', + correctConsequence: 'Katalogiserat under befintlig post. Notering tillagd om handduken, för statistik snarare än åtgärd.', + wrongConsequences: { + eskalera: 'Överlämnat för en redan katalogiserad föremålstyp. Svaret, om det kom, hade sannolikt varit detsamma som förra gången — men inget svar kom alls.', + utred: 'Flaggat för uppföljning av något som redan är väldokumenterat sedan förra veckan.', + avfarda: 'Avfärdat trots befintlig katalogpost och ett känt mönster som nu fortsätter obevakat.', + }, + }, + { + id: 'd20', day: 4, source: 'Väktare', location: 'Kockums gamla varv', filed: '2026-08-06', + body: 'En ljusslinga i himlen rörde sig mot vinden i natt, i ett mönster jag inte sett förut. Ingen annan väktare i området rapporterar samma sak, men jag filmade elva sekunder innan kameran slutade fungera.', + marks: ['OKATALOGISERAD TYP'], + correctRoute: 'eskalera', explanation: 'En fenomentyp utan tidigare katalogpost. §2.2 har fortfarande företräde när typen är ny, oavsett antal vittnen.', + correctConsequence: 'Överlämnat med filminspelningen bifogad, elva sekunder, ingen ljudspår. Ingen bekräftelse kom tillbaka.', + wrongConsequences: { + utred: 'Flaggat för uppföljning av ett enda vittne. §2.2 kräver eskalering direkt när fenomentypen är ny, oavsett antal källor.', + arkivera: 'Katalogiserat under en post som inte matchar. Filmen bifogades ändå, av misstag, till fel ärende.', + avfarda: 'Avfärdat trots videobevis. Elva sekunder är kort, men det är elva sekunder mer än de flesta ärenden har.', + }, + penalty: { avfarda: { insight: 2 } }, + }, + + // ---- Day 5 ---- + { + id: 'd21', day: 5, source: 'Kollega', location: 'Diariet, internpost', filed: '2026-08-07', + body: 'Din företrädare på den här posten lämnade en lapp i din låda: "Fråga aldrig varför avdelningen heter det den heter. Det är inte en gåta. Det är bara sant."', + marks: ['NÄMNER AVDELNINGEN'], + correctRoute: 'arkivera', explanation: 'Nämner avdelningen själv. Arkiveras internt utan vidare utredning. §5.1.', + correctConsequence: 'Katalogiserat internt. Lappen läggs i din egen akt, inte i den allmänna katalogen.', + wrongConsequences: { + utred: 'Flaggat för uppföljning av något som gäller avdelningen själv. §5.1 säger uttryckligen att det aldrig ska utredas vidare.', + eskalera: 'Överlämnat uppåt en anteckning om den egna avdelningen. Det kom tillbaka med en enda understruken mening: "Se §5.1."', + avfarda: 'Avfärdat trots att det ska arkiveras internt, inte kastas. Din företrädares lapp finns nu ingenstans i systemet.', + }, + }, + { + id: 'd22', day: 5, source: 'Väderstationen, automatisk logg', location: 'Öresund', filed: '2026-08-09', + body: 'Denna rapport genererades automatiskt två dagar före dagens datum baserat på mönster som ännu inte inträffat. Vattennivån kommer sjunka 4 centimeter på tisdag. SMHI kallar det ett tekniskt fel i förväg.', + marks: ['FRAMTIDA DATUM', 'FÖRE HÄNDELSEN'], + correctRoute: 'eskalera', explanation: 'Daterad efter dagens datum och beskriver något som ännu inte inträffat. Eskaleras utan att läsas färdigt, enligt §5.2.', + correctConsequence: 'Överlämnat efter första meningen, enligt instruktion. Vad som stod i resten av rapporten vet du inte, och kommer inte få veta.', + wrongConsequences: { + utred: 'Flaggat för uppföljning av en rapport som beskriver framtiden. §5.2 kräver eskalering, inte utredning, och att läsningen avbryts.', + arkivera: 'Katalogiserat som om händelsen redan inträffat. Den hade inte gjort det än när ärendet stämplades.', + avfarda: 'Avfärdat en rapport om något som ännu inte hänt. På tisdag sjönk vattennivån 4 centimeter, exakt som beskrivet.', + }, + penalty: { avfarda: { insight: 2 } }, + }, + { + id: 'd23', day: 5, source: 'Anställd, Pressbyrån Centralstationen', location: 'Malmö C', filed: '2026-08-07', + body: 'Vi säljer en tidning utan namn sedan i fredags. Innehållet ändras beroende på vem som läser den. En kund köper ett exemplar om dagen och verkar nöjd.', + marks: ['TEXTEN HAR ÄNDRATS'], + correctRoute: 'eskalera', explanation: 'Texten skiljer sig mellan läsningar — ett direkt exempel på §5.3. Läs inte om den för att kontrollera; eskalera direkt.', + correctConsequence: 'Överlämnat efter första läsningen. Du läste den inte en andra gång, enligt instruktion. Du vet fortfarande inte om det du läste var samma sak som kunden läste.', + wrongConsequences: { + utred: 'Flaggat, och du läste rapporten en andra gång för att vara säker. Den andra läsningen beskrev något annat än den första. Det gjorde uppföljningen svårare, inte lättare.', + arkivera: 'Katalogiserat med en beskrivning som redan hunnit bli inaktuell innan du la undan pennan.', + avfarda: 'Avfärdat en rapport om en tidning vars innehåll ändras per läsare. Nästa kund som köper ett exemplar läser något annat än du gjorde.', + }, + penalty: { utred: { insight: 1 } }, + }, + { + id: 'd24', day: 5, source: 'Okänd, ingen avsändaradress', location: '(anges ej)', filed: '2026-08-07', + body: 'Du kommer inte minnas att du skrev in det här ärendet. Det är inte ett hot. Det är bara sant, som lappen sa. Stämpla det du redan bestämt dig för. Du bestämde dig innan du öppnade det.', + marks: ['ADRESSERAT TILL HANDLÄGGAREN'], + correctRoute: 'arkivera', explanation: 'Nämner handläggaren direkt, om än indirekt. Arkiveras internt enligt §5.1, oavsett hur obehagligt innehållet känns.', + correctConsequence: 'Katalogiserat internt, i din egen akt, bredvid din företrädares lapp. Du minns fortfarande att du gjorde det. Det är kanske det enda beviset på att rapporten hade fel.', + wrongConsequences: { + eskalera: 'Överlämnat en rapport riktad till dig själv. Ingenting kom tillbaka. Du vet inte om det berodde på att ingen läste den, eller på att någon redan visste.', + utred: 'Flaggat för uppföljning av ett ärende som §5.1 säger aldrig ska utredas vidare, oavsett hur personligt det känns.', + avfarda: 'Avfärdat i stället för arkiverat internt. Rapporten finns nu ingenstans. Det gör den inte mindre sann.', + }, + penalty: { eskalera: { insight: 2 } }, + }, + { + id: 'd25', day: 5, source: 'Pensionär', location: 'Rörsjöparken', filed: '2026-08-07', + body: 'Ekorrarna i parken samlar för mycket för säsongen. Det är nog bara en tidig vinter i år. Jag ville bara nämna det för någon.', + marks: ['ENSTAKA VITTNE'], + correctRoute: 'avfarda', explanation: 'Ett ospecifikt, obekräftat sinnesintryck utan mätbar detalj. §1.1, precis som den allra första rapporten. Skiftet slutar som det började.', + correctConsequence: 'Avfärdat. Det är förmodligen bara en tidig vinter. Förmodligen.', + wrongConsequences: { + utred: 'Flaggat för ekorrar som samlar nötter. Uppföljningen bekräftade att det snart blir vinter.', + arkivera: 'Katalogiserat utan att det finns ett fenomen att katalogisera. Katalogen fick en post om ekorrar.', + eskalera: 'Överlämnat för ett samtal om ekorrar och årstider. Ingenting kom tillbaka, av goda skäl den här gången.', + }, + }, +]; + +export const SHIFT_BRIEFINGS = [ + 'Vanliga ärenden. Vanliga riktlinjer. Du får aldrig hela bilden. Det är jobbet.', + 'Katalogen har uppdaterats med nya kategorier. Ingen förklarar varför just nu.', + 'En kollega på en annan myndighet har slutat svara. Det är inte ditt ärende att fråga varför.', + 'Nattpersonalen rapporterar att vissa ärenden beskriver saker innan de sker. Läs dem inte två gånger.', + 'Sista skiftet. Riktlinjerna nämner nu dig själv. Stämpla det du bestämt dig för.', +]; diff --git a/src/engine.test.ts b/src/engine.test.ts new file mode 100644 index 0000000..7309d45 --- /dev/null +++ b/src/engine.test.ts @@ -0,0 +1,73 @@ +import { describe, expect, it } from 'vitest'; +import { createState, currentReport, reportsForDay, nextShift, routeReport, startGame } from './engine.ts'; +import { REPORTS } from './data/content.ts'; + +describe('routing engine', () => { + it('starts on the first report of shift one', () => { + const state = startGame(createState()); + expect(state.phase).toBe('playing'); + expect(currentReport(state)?.id).toBe('d01'); + }); + + it('advances and records a correct route', () => { + const state = routeReport(startGame(createState()), 'avfarda'); + expect(state.reportIndex).toBe(1); + expect(state.decisions[0].correct).toBe(true); + expect(state.trust).toBe(3); + }); + + it('penalizes an incorrect route', () => { + const state = routeReport(startGame(createState()), 'arkivera'); + expect(state.decisions[0].correct).toBe(false); + expect(state.trust).toBe(2); + expect(state.insight).toBe(1); + }); + + it('escalating costs insight even when it is the correct route', () => { + // d04 (Turning Torso rotating) is correctly routed eskalera. + let state = startGame(createState()); + for (const route of ['avfarda', 'arkivera', 'utred'] as const) state = routeReport(state, route); + expect(currentReport(state)?.id).toBe('d04'); + state = routeReport(state, 'eskalera'); + expect(state.lastDecision?.correct).toBe(true); + expect(state.lastDecision?.trustCost).toBe(0); + expect(state.lastDecision?.insightCost).toBe(1); + }); + + it('escalating a wrong report stacks the escalation cost on top of the wrong-route cost', () => { + let state = startGame(createState()); + // d01's correct route is avfarda; eskalera is wrong here. + state = routeReport(state, 'eskalera'); + expect(state.lastDecision?.correct).toBe(false); + expect(state.lastDecision?.insightCost).toBe(2); // 1 for wrong + 1 for escalating + }); + + it('ends a shift and restores one trust point for the next', () => { + let state = startGame(createState()); + const routes = reportsForDay(1).map((report) => report.correctRoute); + state = routeReport(state, 'arkivera'); // deliberately wrong on d01 + for (const route of routes.slice(1)) state = routeReport(state, route); + expect(state.phase).toBe('shift-end'); + state = nextShift(state); + expect(state.day).toBe(2); + expect(state.trust).toBe(3); + }); + + it('has five authored reports in every shift', () => { + for (let day = 1; day <= 5; day += 1) expect(reportsForDay(day)).toHaveLength(5); + }); + + it('every report has its own correct-route consequence', () => { + for (const report of REPORTS) { + expect(report.correctConsequence, `${report.id} is missing a correctConsequence`).toBeTruthy(); + } + }); + + it('loses on insight reaching the cap even with trust intact', () => { + let state = startGame(createState()); + // Escalate every report regardless of correctness to ramp insight fast. + for (let i = 0; i < 10 && state.phase === 'playing'; i++) state = routeReport(state, 'eskalera'); + expect(state.phase).toBe('lost'); + expect(state.insight).toBeGreaterThanOrEqual(5); + }); +}); diff --git a/src/engine.ts b/src/engine.ts new file mode 100644 index 0000000..c9eb0b5 --- /dev/null +++ b/src/engine.ts @@ -0,0 +1,105 @@ +import { REPORTS } from './data/content.ts'; +import type { GameState, Report, Route } from './types.ts'; + +export const MAX_TRUST = 3; +export const MAX_INSIGHT = 5; +export const LAST_DAY = Math.max(...REPORTS.map((report) => report.day)); + +const DEFAULT_WRONG_CONSEQUENCES: Record = { + avfarda: 'Rapporten arkiverades som avfärdad. Ingen uppföljning skickades. Ingen bad om en heller.', + arkivera: 'Ärendet fördes till katalogen. Nästa handläggare kommer inte fråga varför.', + utred: 'Ärendet flaggades för uppföljning som aldrig genomfördes. Det ligger kvar i kön, odaterat.', + eskalera: 'Eskalerat utan tydlig grund. Någon läste det. Du fick inget kvitto på att de gjorde det.', +}; + +export function createState(): GameState { + return { + phase: 'intro', day: 1, reportIndex: 0, accuracy: 100, + trust: MAX_TRUST, insight: 0, decisions: [], lastDecision: null, + }; +} + +export function reportsForDay(day: number): Report[] { + return REPORTS.filter((report) => report.day === day); +} + +export function currentReport(state: GameState): Report | null { + return reportsForDay(state.day)[state.reportIndex] ?? null; +} + +export function startGame(state: GameState): GameState { + return state.phase === 'intro' ? { ...state, phase: 'playing' } : state; +} + +export function routeReport(state: GameState, route: Route): GameState { + if (state.phase !== 'playing') return state; + const report = currentReport(state); + if (!report) return state; + + const correct = report.correctRoute === route; + const configuredPenalty = report.penalty?.[route]; + const trustCost = correct ? 0 : configuredPenalty?.trust ?? 1; + // Escalating draws attention regardless of whether it was the right call — + // the distinct twist from Retur's routing: being correct doesn't make you + // invisible. Wrong-route insight cost still applies on top of this. + const insightFromEscalating = route === 'eskalera' ? 1 : 0; + const insightFromWrong = correct ? 0 : configuredPenalty?.insight ?? 1; + const insightCost = insightFromEscalating + insightFromWrong; + + const consequence = correct + ? report.correctConsequence ?? 'Ärendet hanterades enligt riktlinjerna. Ingenting hördes av det igen.' + : report.wrongConsequences?.[route] ?? DEFAULT_WRONG_CONSEQUENCES[route]; + + const decision = { reportId: report.id, route, correct, consequence, trustCost, insightCost }; + const decisions = [...state.decisions, decision]; + const correctCount = decisions.filter((decision) => decision.correct).length; + const accuracy = Math.round((correctCount / decisions.length) * 100); + const trust = Math.max(0, state.trust - trustCost); + const insight = Math.min(MAX_INSIGHT, state.insight + insightCost); + const dayReports = reportsForDay(state.day); + const isLastReport = state.reportIndex >= dayReports.length - 1; + + let phase: GameState['phase'] = 'playing'; + if (trust <= 0 || insight >= MAX_INSIGHT) phase = 'lost'; + else if (isLastReport) phase = state.day >= LAST_DAY ? 'won' : 'shift-end'; + + return { + ...state, + phase, + reportIndex: isLastReport ? state.reportIndex : state.reportIndex + 1, + accuracy, + trust, + insight, + decisions, + lastDecision: decision, + }; +} + +export function nextShift(state: GameState): GameState { + if (state.phase !== 'shift-end') return state; + return { + ...state, + phase: 'playing', + day: state.day + 1, + reportIndex: 0, + trust: Math.min(MAX_TRUST, state.trust + 1), + lastDecision: null, + }; +} + +export function saveState(state: GameState): void { + localStorage.setItem('diariet-save-v1', JSON.stringify(state)); +} + +export function loadState(): GameState | null { + try { + const value = localStorage.getItem('diariet-save-v1'); + return value ? (JSON.parse(value) as GameState) : null; + } catch { + return null; + } +} + +export function clearState(): void { + localStorage.removeItem('diariet-save-v1'); +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..d0b6e9a --- /dev/null +++ b/src/main.ts @@ -0,0 +1,207 @@ +import './style.css'; +import { SHIFT_BRIEFINGS, GUIDELINES, ROUTES } from './data/content.ts'; +import { MAX_INSIGHT, clearState, createState, currentReport, reportsForDay, loadState, nextShift, routeReport, saveState, startGame } from './engine.ts'; +import type { Route } from './types.ts'; + +let state = loadState() ?? createState(); +let selectedRoute: Route | null = null; +let showingResult = false; +let resultAdvanced = false; + +const app = document.getElementById('app')!; + +function escapeHtml(value: string): string { + return value.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", '''); +} + +function render(): void { + if (state.phase === 'intro') return renderIntro(); + if (showingResult) return renderDesk(); + if (state.phase === 'shift-end') return renderShiftEnd(); + if (state.phase === 'won' || state.phase === 'lost') return renderEnding(); + renderDesk(); +} + +function shell(content: string): void { + app.innerHTML = ` + + ${content} + + +
Arbetsinstruktion 14-C
+

Läs. Bedöm. Stämpla. Fråga inte.

+

Läs ärendet och dagens riktlinjer. Välj rätt destination och tryck STÄMPLA. Senare riktlinjer har företräde när de motsäger varandra.

+
  • Tre fel och ditt förtroende tar slut.
  • Att eskalera märks alltid, oavsett om det var rätt beslut.
  • Ett avslutat skift återställer ett förtroende. Insynen gör det inte.
  • Tangent 1–4 väljer destination, Enter stämplar.
+

Avdelningen ansvarar inte för det du får reda på, eller det du inte får reda på.

+
`; + bindShell(); +} + +function renderIntro(): void { + shell(`
+
D
+
+
TJÄNSTGÖRING 14-C / SEKRETESSBELAGD
+

DIARIET

+

Du får aldrig hela bilden. Det är jobbet.

+

Din företrädare lämnade ingen uppsägning. Bara en lapp i din låda.

+

Ärendena på ditt bord saknar svar. Riktlinjerna säger vad du ska göra med dem. Inte vad de betyder.

+ +
+
`); + document.getElementById('start-button')?.addEventListener('click', () => { state = startGame(state); saveState(state); render(); }); +} + +function renderDesk(): void { + const report = currentReport(state)!; + const dayReports = reportsForDay(state.day); + const guidelines = GUIDELINES.filter((rule) => rule.fromDay <= state.day); + const result = showingResult && state.lastDecision + ? `
+
${state.lastDecision.correct ? 'KORREKT HANTERAT' : 'AVVIKELSE REGISTRERAD'}
+

${escapeHtml(report.explanation)}

+
FÖLJD${escapeHtml(state.lastDecision.consequence)}
+ ${state.lastDecision.trustCost || state.lastDecision.insightCost ? `

−${state.lastDecision.trustCost} förtroende · +${state.lastDecision.insightCost} insyn

` : ''} + +
` : ''; + + const recentDecisions = state.decisions.slice(-3).reverse(); + + shell(`
+ +
+
+
+
Anmälare${escapeHtml(report.source)}
+
Plats${escapeHtml(report.location)}
+
Inkom${escapeHtml(report.filed)} · ÄRENDE ${report.id.toUpperCase()}
+
+
${report.marks.map((mark) => `${escapeHtml(mark)}`).join('')}
+
${escapeHtml(report.body)}
+ ${result} +
+
+ +
`); + + document.querySelectorAll('[data-route]').forEach((button) => button.addEventListener('click', () => { + selectedRoute = button.dataset.route as Route; + render(); + })); + document.getElementById('stamp-button')?.addEventListener('click', stamp); +} + +function stamp(): void { + if (!selectedRoute || showingResult) return; + const before = currentReport(state); + state = routeReport(state, selectedRoute); + saveState(state); + resultAdvanced = before?.id !== currentReport(state)?.id; + if (resultAdvanced) { + state = { ...state, reportIndex: state.reportIndex - 1 }; + } + showingResult = true; + render(); +} + +function advanceAfterResult(): void { + if (!showingResult) return; + if (resultAdvanced) state = { ...state, reportIndex: state.reportIndex + 1 }; + showingResult = false; + resultAdvanced = false; + selectedRoute = null; + saveState(state); + render(); +} + +function renderShiftEnd(): void { + const dayDecisions = state.decisions.slice(-reportsForDay(state.day).length); + const correct = dayDecisions.filter((decision) => decision.correct).length; + shell(`
+
SKIFTRAPPORT / SKIFT 0${state.day}
+
GRANSKAD
+

Luckan är stängd för dagen.

+

${correct} av ${dayDecisions.length} ärenden hanterades enligt gällande riktlinjer.

+

Ett förtroende återställs över natten. Insynen gör det inte.

+ +
`); + document.getElementById('next-shift-button')?.addEventListener('click', () => { state = nextShift(state); saveState(state); render(); }); +} + +function renderEnding(): void { + const won = state.phase === 'won'; + const lostByInsight = !won && state.insight >= MAX_INSIGHT; + + const stamp = won + ? (state.insight <= 1 ? 'FORTSATT TJÄNST' : 'FORTSATT TJÄNST, UNDER OBSERVATION') + : lostByInsight ? 'AVREGISTRERAD' : 'ENTLEDIGAD'; + + const title = won + ? state.insight <= 1 + ? 'Skiftet är slut. Du vet fortfarande ingenting.' + : 'Skiftet är slut. Någon la märke till dig.' + : lostByInsight + ? 'Du blev till slut det du handlade om.' + : 'Du gjorde för många fel för att någon skulle bry sig varför.'; + + const body = won + ? state.insight <= 1 + ? 'Fem skift avslutade utan en enda anmärkning. Ingen förklarar riktlinjerna för dig. Ingen kommer göra det. Du får komma tillbaka imorgon och fortsätta inte veta.' + : 'Fem skift avslutade, men din akt är tjockare än den borde vara. Ingen säger vem som läser den. Du får komma tillbaka imorgon ändå. Det är inte nödvändigtvis ett gott tecken.' + : lostByInsight + ? 'Insynen nådde taket innan misstagen gjorde det. Ditt namn finns inte längre i personalregistret. Det finns fortfarande i ett annat register. Du får aldrig veta vilket.' + : 'Din tjänst avslutas med omedelbar verkan. Ingen kartong väntar vid ditt bord — bara ett brev som redan är stämplat, adresserat till din efterträdare. Du får aldrig veta vad du missade.'; + + shell(`
+
SLUTLIG PERSONALAKT
+
${stamp}
+

${title}

+

${body}

+
Noggrannhet
${state.accuracy}%
Insyn
${state.insight}/5
Ärenden
${state.decisions.length}
+ +
`); + document.getElementById('restart-button')?.addEventListener('click', () => { clearState(); state = createState(); selectedRoute = null; showingResult = false; resultAdvanced = false; render(); }); +} + +function bindShell(): void { + const dialog = document.getElementById('help-dialog') as HTMLDialogElement | null; + document.getElementById('help-button')?.addEventListener('click', () => dialog?.showModal()); + document.querySelector('.dialog-close')?.addEventListener('click', () => dialog?.close()); + dialog?.addEventListener('click', (event) => { if (event.target === dialog) dialog.close(); }); +} + +window.addEventListener('keydown', (event) => { + if (event.key === '?') (document.getElementById('help-dialog') as HTMLDialogElement | null)?.showModal(); + if (state.phase !== 'playing') return; + if (showingResult && event.key === 'Enter') { event.preventDefault(); advanceAfterResult(); return; } + const routes = Object.keys(ROUTES) as Route[]; + const index = Number(event.key) - 1; + if (index >= 0 && index < routes.length && !showingResult) { selectedRoute = routes[index]; render(); } + if (event.key === 'Enter' && selectedRoute) { event.preventDefault(); stamp(); } +}); + +document.addEventListener('click', (event) => { + if ((event.target as HTMLElement).id === 'continue-button') advanceAfterResult(); +}); + +render(); diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..926633c --- /dev/null +++ b/src/style.css @@ -0,0 +1,100 @@ +/* Shares the family palette (same :root values as djupet/retur — same + universe, same near-black indigo) but picks its own accent: a cold + institutional cyan instead of Retur's warm stamp-red or Djupet's + eldritch purple, since Diariet is the neutral paperwork layer between + them. */ +:root { + --bg: #0d0d1a; --panel: #12121f; --paper: #d8d0b8; --paper-ink: #25221d; + --border: #2a2a42; --text: #e2e2f0; --dim: #8888aa; --accent: #4fc3d9; + --stamp: #4fc3d9; --archive: #c49a45; --safe: #44bb66; --danger: #ee4444; +} +*, *::before, *::after { box-sizing: border-box; } +html { background: var(--bg); } +body { margin: 0; min-height: 100vh; overflow-x: hidden; background: var(--bg); color: var(--text); font: 13px/1.55 'JetBrains Mono', monospace; } +button { font: inherit; } +#app { min-height: 100vh; max-width: 1280px; margin: auto; border-inline: 1px solid var(--border); position: relative; } +#header { min-height: 62px; padding: 14px 20px; border-bottom: 1px solid var(--border); display: flex; align-items: baseline; justify-content: space-between; gap: 18px; background: rgba(13,13,26,.94); } +.brand { color: var(--stamp); font-size: 22px; font-weight: 700; letter-spacing: 5px; text-shadow: 0 0 18px rgba(79,195,217,.35); } +.brand-sub { margin-left: 18px; color: var(--dim); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; } +.text-button { border: 0; background: none; color: var(--dim); cursor: pointer; font-size: 10px; text-transform: uppercase; } +.text-button:hover { color: var(--text); } +.panel { padding: 16px; overflow-y: auto; background: var(--panel); } +.panel-title { color: var(--dim); border-bottom: 1px solid var(--border); padding-bottom: 6px; margin-bottom: 12px; font-size: 9px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; } +.desk { display: grid; grid-template-columns: 275px minmax(360px, 1fr) 275px; min-height: calc(100vh - 62px); } +.status-panel { border-right: 1px solid var(--border); } +.route-panel { border-left: 1px solid var(--border); } +.day-number { color: var(--accent); font-size: 48px; line-height: 1; font-weight: 700; } +.stat-row { display: flex; justify-content: space-between; align-items: center; margin: 4px 0; } +.stat-label { color: var(--dim); font-size: 10px; text-transform: uppercase; letter-spacing: .08em; } +.dots { display: flex; gap: 4px; } +.dot { width: 9px; height: 9px; border-radius: 50%; border: 1px solid var(--border); } +.dot.filled-trust { background: var(--safe); border-color: var(--safe); } +.dot.filled-insight { background: var(--danger); border-color: var(--danger); } +.briefing { color: var(--dim); font-size: 11px; font-style: italic; margin: 10px 0 16px; } +.incidents-title { margin-top: 18px; } +.incident-log { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; } +.incident-log li { font-size: 10.5px; padding: 8px; border-left: 2px solid var(--border); background: rgba(255,255,255,.02); } +.incident-log li b { display: block; color: var(--accent); margin-bottom: 2px; } +.incident-log li.ok { border-left-color: var(--safe); } +.incident-log li.bad { border-left-color: var(--danger); } +.regulations { display: grid; gap: 10px; } +.reg { font-size: 11px; } +.reg .num { color: var(--accent); font-weight: 700; margin-right: 6px; } +.reg .note { display: block; color: var(--dim); font-size: 10px; margin-top: 2px; } +.work-area { padding: 30px; display: grid; place-items: center; min-height: calc(100vh - 62px); } +.report { width: 100%; max-width: 640px; background: var(--paper); color: var(--paper-ink); padding: 30px 34px; border-radius: 2px; box-shadow: 0 10px 40px rgba(0,0,0,.5); position: relative; min-height: 420px; } +.report-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 20px; font-size: 11px; margin-bottom: 14px; border-bottom: 1px dashed rgba(37,34,29,.3); padding-bottom: 14px; } +.report-grid .field-label { text-transform: uppercase; font-size: 9px; opacity: .6; display: block; } +.report-grid .full { grid-column: 1 / -1; } +.report-marks { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 14px; } +.mark { border: 1px solid rgba(37,34,29,.4); padding: 2px 8px; font-size: 9px; letter-spacing: .06em; text-transform: uppercase; } +.report-body { font-size: 14px; line-height: 1.6; white-space: pre-wrap; } +.result-overlay { position: absolute; inset: 0; background: rgba(13,13,26,.94); color: var(--text); display: grid; place-items: center; text-align: center; padding: 30px; } +.result-title { font-size: 32px; font-weight: 700; letter-spacing: .08em; margin-bottom: 14px; } +.result-title.correct { color: var(--safe); } +.result-title.wrong { color: var(--danger); } +.consequence { border: 1px solid var(--border); padding: 14px 18px; margin: 14px 0; font-size: 12px; color: var(--dim); max-width: 480px; } +.consequence span { display: block; color: var(--accent); font-size: 9px; letter-spacing: .1em; margin-bottom: 6px; } +.routes { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 16px; } +.route-button { text-align: left; background: var(--panel); border: 1px solid var(--border); color: var(--text); padding: 12px; cursor: pointer; } +.route-button b { display: block; color: var(--accent); font-size: 11px; letter-spacing: .05em; margin-bottom: 3px; } +.route-button span:not(.key) { display: block; color: var(--dim); font-size: 10px; } +.route-button.selected { border-color: var(--accent); background: rgba(79,195,217,.08); } +.route-button .key { float: right; color: var(--dim); font-size: 9px; } +.stamp-button { margin-top: 14px; width: 100%; padding: 12px; background: var(--accent); color: var(--bg); border: 0; font-weight: 700; letter-spacing: .1em; cursor: pointer; } +.stamp-button:disabled { opacity: .3; cursor: not-allowed; } +.primary { background: var(--accent); color: var(--bg); border: 1px solid var(--accent); padding: 12px 20px; font-weight: 700; letter-spacing: .1em; cursor: pointer; } +.shift-end-screen, .intro-screen, .end-screen { min-height: calc(100vh - 62px); display: grid; place-items: center; padding: 30px; background: radial-gradient(circle, #17222a 0, var(--bg) 66%); } +.intro-screen { + grid-template-columns: auto minmax(280px, 540px); + gap: clamp(30px, 7vw, 90px); + background: + linear-gradient(rgba(13, 13, 26, 0.6), rgba(13, 13, 26, 0.88)), + url('/intro.webp') center / cover no-repeat; +} +.end-screen.victory { + background: + linear-gradient(rgba(13, 13, 26, 0.55), rgba(13, 13, 26, 0.85)), + url('/survived.webp') center / cover no-repeat; +} +.end-screen.failure { + background: + linear-gradient(rgba(13, 13, 26, 0.55), rgba(13, 13, 26, 0.85)), + url('/gameover.webp') center / cover no-repeat; +} +.seal { width: clamp(160px, 25vw, 260px); aspect-ratio: 1; display: grid; place-items: center; border: 8px double var(--stamp); border-radius: 50%; color: var(--stamp); font: 700 clamp(70px, 12vw, 120px)/1 'Special Elite'; transform: rotate(-8deg); opacity: .85; box-shadow: 0 0 60px rgba(79,195,217,.25); background: rgba(13, 13, 26, 0.35); backdrop-filter: blur(1px); text-align: center; } +.intro-copy h1 { margin: 0; color: var(--stamp); font-size: clamp(44px, 8vw, 76px); letter-spacing: .12em; line-height: 1; } +.intro-sub { color: var(--dim); font-size: 10px; letter-spacing: .15em; text-transform: uppercase; } +.intro-copy > p:not(.intro-sub) { color: #b0b0c4; } +.shift-end-card, .end-card { width: min(620px, 100%); padding: clamp(24px, 5vw, 50px); border: 1px solid var(--border); background: rgba(18, 18, 31, 0.82); backdrop-filter: blur(2px); text-align: center; position: relative; } +.end-card h1 { color: var(--text); } +.end-card > p, .shift-end-card > p { color: var(--dim); } +.audit-stamp { display: inline-block; padding: 8px 16px; border: 3px solid var(--safe); color: var(--safe); font-size: 18px; font-weight: 700; letter-spacing: .12em; transform: rotate(-4deg); background: rgba(13, 13, 26, 0.3); } +.failure .audit-stamp { border-color: var(--danger); color: var(--danger); } +.final-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 25px 0; } +.final-stats div { padding: 12px; border: 1px solid var(--border); } +.final-stats dt { color: var(--dim); font-size: 9px; text-transform: uppercase; } .final-stats dd { margin: 4px 0 0; font-size: 20px; } +.help-dialog { background: var(--panel); color: var(--text); border: 1px solid var(--border); max-width: 520px; padding: 24px; } +.help-dialog::backdrop { background: rgba(0,0,0,.6); } +.dialog-close { float: right; background: none; border: 0; color: var(--dim); cursor: pointer; } +@media (max-width: 700px) { #app { border: 0; } .brand-sub { display: block; margin: 2px 0 0; } .desk { display: block; } .status-panel { border-right: 0; border-bottom: 1px solid var(--border); } .regulations { max-height: 180px; overflow-y: auto; } .work-area { min-height: 560px; padding: 18px 12px; } .report { min-height: 500px; padding: 24px 18px; } .report-grid { grid-template-columns: 1fr; } .routes { grid-template-columns: 1fr 1fr; } .intro-screen { grid-template-columns: 1fr; text-align: center; } .seal { width: 130px; margin: auto; } .final-stats { grid-template-columns: 1fr; } } diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..a53527c --- /dev/null +++ b/src/types.ts @@ -0,0 +1,44 @@ +export type Route = 'avfarda' | 'arkivera' | 'utred' | 'eskalera'; + +export interface Report { + id: string; + day: number; + source: string; // who filed it + location: string; + filed: string; // date filed + body: string; + marks: string[]; // small tags: "ANONYM", "TREDJE ANMÄLAN", etc. + correctRoute: Route; + explanation: string; + correctConsequence?: string; + wrongConsequences?: Partial>; + penalty?: Partial>; +} + +export interface Guideline { + id: string; + fromDay: number; + number: string; + text: string; + note?: string; +} + +export interface Decision { + reportId: string; + route: Route; + correct: boolean; + consequence: string; + trustCost: number; + insightCost: number; +} + +export interface GameState { + phase: 'intro' | 'playing' | 'shift-end' | 'won' | 'lost'; + day: number; + reportIndex: number; + accuracy: number; + trust: number; + insight: number; + decisions: Decision[]; + lastDecision: Decision | null; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ed0c191 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2022", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + "moduleResolution": "Bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true + }, + "include": ["src"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..5c13d64 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from 'vite'; + +export default defineConfig({ + server: { port: 5692, strictPort: true }, + preview: { port: 4596, strictPort: true }, +});