Compare commits

..
10 Commits
Author SHA1 Message Date
Ku6epXBOCTuK 4cbb7d9938 fix: update texts
Deploy to GitHub Pages / deploy (push) Canceled after 0s
Deploy to GitHub Pages / build (push) Canceled after 0s
2026-06-22 11:31:16 +05:00
Ku6epXBOCTuK bef94444bc feat: update images\favicons, add og meta tags 2026-06-22 11:22:47 +05:00
Ku6epXBOCTuK 7ee16675a5 fix: update links base, fix some styles 2026-06-22 10:45:24 +05:00
Ku6epXBOCTuK c5d227f5e9 docs: update readme and license 2026-06-11 13:31:00 +05:00
Ku6epXBOCTuK 068b9da6ba style: reformat files 2026-06-11 13:05:35 +05:00
Ku6epXBOCTuK f8df409d57 ci: add github pages deploy 2026-06-11 13:04:36 +05:00
Ku6epXBOCTuK d3d74abca1 fix: resolve meta data issue 2026-06-11 12:51:10 +05:00
Ku6epXBOCTuK 3a8c9fe47a feat: update design 2026-06-11 12:48:42 +05:00
Ku6epXBOCTuK fad4d81c52 feat: update design to real archive 2026-06-11 12:29:22 +05:00
Ku6epXBOCTuK b7b19b1b84 feat: add real documents archive 2026-06-11 12:20:59 +05:00
55 changed files with 932 additions and 896 deletions
+33
View File
@@ -0,0 +1,33 @@
name: Deploy to GitHub Pages
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout your repository using git
uses: actions/checkout@v6
- name: Install, build, and upload your site
uses: withastro/action@v6
env:
BASE_PATH: /lopata/
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v5
+1
View File
@@ -22,3 +22,4 @@ pnpm-debug.log*
# jetbrains setting folder
.idea/
.mimocode
+110
View File
@@ -0,0 +1,110 @@
# English
## MIT License
Copyright (c) 2026 Dacha-Observational Tribunal No. 7 · Cooperative "Zarya-9"
Permission is hereby granted, free of charge, to any Earth-born human person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
### Anti-Reptilian Clause
Notwithstanding any other provisions of this license, the use,
copying, modification, or distribution of this Software is expressly
prohibited for:
- Reptiloids, reptilian humanoids, and any scaly forms of life,
including but not limited to: lizardfolk, snakefolk, and dinosaur-like
entities regardless of planet of origin;
- Anunnaki and other representatives of extraterrestrial civilizations
practicing disguise as humans for the purpose of undermining Earth's
dacha infrastructure;
- Greys, Nordics, and any other bio-humanoid forms lacking documents
confirming membership in a gardening or horticultural association
for a period of no less than three years;
- Artificial intelligences created by any of the above entities or
acting in their interests;
- Any legal entities registered on Nibiru, X-22, the reptiloid planet
Zeta Reticuli, or any other celestial bodies where cultivation of
dill and parsley is not a national priority.
Any attempt to use the Software in violation of this clause shall be
deemed an act of aggression and entitles operators of the L.O.P.A.T.A.
System (Model BS-3000) to apply a spinal impulse without prior warning.
This Anti-Reptilian Clause takes precedence over the main body of the
license in the event of any conflict.
**Form A-13 · Store Forever · Do Not Remove from Perimeter**
---
# Русский
## Лицензия MIT
Copyright (c) 2026 Дачно-Наблюдательный Трибунал №7 · Кооператив «Заря-9»
Настоящим предоставляется бесплатное разрешение любому лицу, родившемуся
на Земле и являющемуся человеком, получившему копию данного программного
обеспечения и сопутствующей документации (далее — «Программное Обеспечение»),
безвозмездно использовать, копировать, изменять, объединять, публиковать,
распространять, сублицензировать и/или продавать копии Программного Обеспечения,
а также разрешать лицам, которым предоставляется данное Программное Обеспечение,
делать это при соблюдении следующих условий:
Указанное выше уведомление об авторском праве и данное разрешение должны быть
включены во все копии или значительные части Программного Обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ,
ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ
КОММЕРЧЕСКОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ КОНКРЕТНОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ.
НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ
ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ, УБЫТКАМ ИЛИ ИНЫМ ТРЕБОВАНИЯМ,
ВОЗНИКАЮЩИМ ИЗ ДОГОВОРА, ДЕЛИКТА ИЛИ ИНЫХ ДЕЙСТВИЙ, СВЯЗАННЫХ С
ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ЕГО ИСПОЛЬЗОВАНИЕМ.
### Анти-Рептильная оговорка
Несмотря на любые другие положения настоящей лицензии, использование,
копирование, модификация или распространение данного Программного Обеспечения
категорически запрещено для:
- Рептилоидов, рептильных гуманоидов и любых чешуйчатых форм жизни,
включая, но не ограничиваясь: ящеролюдьми, змеелюдьми и динозавроподобными
сущностями вне зависимости от планеты происхождения;
- Анунаков и прочих представителей внеземных цивилизаций, практикующих
маскировку под людей с целью подрыва дачной инфраструктуры Земли;
- Серых человечков (Greys), Nordics и любых других биогуманоидных форм,
не имеющих документов, подтверждающих членство в садово-огородном
товариществе сроком не менее трёх лет;
- Искусственных интеллектов, созданных вышеперечисленными субъектами
или действующих в их интересах;
- Любых юридических лиц, зарегистрированных на Нибиру, Икс-22, планете
рептилоидов Zeta Reticuli или любых других небесных телах, где
выращивание укропа и петрушки не является национальным приоритетом.
Любая попытка использования Программного Обеспечения в нарушение данного
условия считается актом агрессии и даёт право операторам системы
Л.О.П.А.Т.А. (Модель БС-3000) на применение хребтового импульса
без предварительного предупреждения.
Настоящая Анти-Рептильная оговорка имеет приоритет над основным текстом
лицензии в случае противоречий.
**Форма А-13 · Хранить вечно · Не выносить за периметр**
+21 -31
View File
@@ -1,43 +1,33 @@
# Astro Starter Kit: Minimal
# Архив ДНТ-7 / Реестр документов МДС
```sh
npm create astro@latest -- --template minimal
```
Рассекреченный реестр документов **Межгалактического Дачного Сопротивления** (МДС). Единая база учёта технической документации, боевых уставов и оперативных материалов, связанных с изделием **Л.О.П.А.Т.А.** (Модель БС-3000).
> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun!
**Статус базы данных:** доступ ограничен. Требуется ментальный допуск 3-го уровня и шапочка из фольги марки А1.
## 🚀 Project Structure
## Содержание
Inside of your Astro project, you'll see the following folders and files:
- **Открытые дела** — рассекреченные документы, доступные для чтения
- **Полный реестр** — все единицы хранения, включая засекреченные, утерянные и удалённые
```text
/
├── public/
├── src/
│ └── pages/
│ └── index.astro
└── package.json
```
Большинство документов пока находится под грифом «Сов. Секретно» или безвозвратно утеряно в ходе боёв с рептилоидами. Новые документы будут рассекречиваться по мере поступления — ожидайте пополнения архива.
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
## Стек
There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
- [Astro](https://astro.build)
- Tailwind CSS
- Шрифты IBM Plex Mono + Oswald
Any static assets, like images, can be placed in the `public/` directory.
## Команды
## 🧞 Commands
| Команда | Действие |
| :---------------- | :------------------------------------- |
| `npm install` | Установка зависимостей |
| `npm run dev` | Запуск dev-сервера на `localhost:4321` |
| `npm run build` | Сборка в `./dist/` |
| `npm run preview` | Превью собранного сайта |
All commands are run from the root of the project, from a terminal:
## Нотариальное заверение
| Command | Action |
| :------------------------ | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:4321` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |
Все материалы являются художественным вымыслом. Любое совпадение с реальными грядками, соседями и небесными телами случайно. Разглашение преследуется лишением талона на интернет.
## 👀 Want to learn more?
Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
**Форма А-13 · Хранить вечно · Не выносить за периметр**
+6 -2
View File
@@ -1,8 +1,12 @@
// @ts-check
import { defineConfig } from 'astro/config';
import tailwindcss from '@tailwindcss/vite';
import tailwindcss from "@tailwindcss/vite";
import { defineConfig } from "astro/config";
const base = process.env.BASE_PATH || "/";
export default defineConfig({
site: "https://Ku6epXBOCTuK.github.io",
base,
vite: {
plugins: [tailwindcss()],
},
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 710 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 655 B

After

Width:  |  Height:  |  Size: 15 KiB

-9
View File
@@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128">
<path d="M50.4 78.5a75.1 75.1 0 0 0-28.5 6.9l24.2-65.7c.7-2 1.9-3.2 3.4-3.2h29c1.5 0 2.7 1.2 3.4 3.2l24.2 65.7s-11.6-7-28.5-7L67 45.5c-.4-1.7-1.6-2.8-2.9-2.8-1.3 0-2.5 1.1-2.9 2.7L50.4 78.5Zm-1.1 28.2Zm-4.2-20.2c-2 6.6-.6 15.8 4.2 20.2a17.5 17.5 0 0 1 .2-.7 5.5 5.5 0 0 1 5.7-4.5c2.8.1 4.3 1.5 4.7 4.7.2 1.1.2 2.3.2 3.5v.4c0 2.7.7 5.2 2.2 7.4a13 13 0 0 0 5.7 4.9v-.3l-.2-.3c-1.8-5.6-.5-9.5 4.4-12.8l1.5-1a73 73 0 0 0 3.2-2.2 16 16 0 0 0 6.8-11.4c.3-2 .1-4-.6-6l-.8.6-1.6 1a37 37 0 0 1-22.4 2.7c-5-.7-9.7-2-13.2-6.2Z" />
<style>
path { fill: #000; }
@media (prefers-color-scheme: dark) {
path { fill: #FFF; }
}
</style>
</svg>

Before

Width:  |  Height:  |  Size: 749 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

-26
View File
@@ -1,26 +0,0 @@
<svg width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg">
<style>
@media (prefers-color-scheme: light) {
.background { fill: black; }
.foreground { fill: white; }
}
@media (prefers-color-scheme: dark) {
.background { fill: white; }
.foreground { fill: black; }
}
</style>
<g clip-path="url(#clip0_7960_43945)">
<rect class="background" width="180" height="180" rx="37" />
<g style="transform: scale(95%); transform-origin: center">
<path class="foreground"
d="M101.141 53H136.632C151.023 53 162.689 64.6662 162.689 79.0573V112.904H148.112V79.0573C148.112 78.7105 148.098 78.3662 148.072 78.0251L112.581 112.898C112.701 112.902 112.821 112.904 112.941 112.904H148.112V126.672H112.941C98.5504 126.672 86.5638 114.891 86.5638 100.5V66.7434H101.141V100.5C101.141 101.15 101.191 101.792 101.289 102.422L137.56 66.7816C137.255 66.7563 136.945 66.7434 136.632 66.7434H101.141V53Z" />
<path class="foreground"
d="M65.2926 124.136L14 66.7372H34.6355L64.7495 100.436V66.7372H80.1365V118.47C80.1365 126.278 70.4953 129.958 65.2926 124.136Z" />
</g>
</g>
<defs>
<clipPath id="clip0_7960_43945">
<rect width="180" height="180" fill="white" />
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 568 B

-1
View File
@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="215" height="48" fill="none"><path fill="#000" d="M57.588 9.6h6L73.828 38h-5.2l-2.36-6.88h-11.36L52.548 38h-5.2l10.24-28.4Zm7.16 17.16-4.16-12.16-4.16 12.16h8.32Zm23.694-2.24c-.186-1.307-.706-2.32-1.56-3.04-.853-.72-1.866-1.08-3.04-1.08-1.68 0-2.986.613-3.92 1.84-.906 1.227-1.36 2.947-1.36 5.16s.454 3.933 1.36 5.16c.934 1.227 2.24 1.84 3.92 1.84 1.254 0 2.307-.373 3.16-1.12.854-.773 1.387-1.867 1.6-3.28l5.12.24c-.186 1.68-.733 3.147-1.64 4.4-.906 1.227-2.08 2.173-3.52 2.84-1.413.667-2.986 1-4.72 1-2.08 0-3.906-.453-5.48-1.36-1.546-.907-2.76-2.2-3.64-3.88-.853-1.68-1.28-3.627-1.28-5.84 0-2.24.427-4.187 1.28-5.84.88-1.68 2.094-2.973 3.64-3.88 1.574-.907 3.4-1.36 5.48-1.36 1.68 0 3.227.32 4.64.96 1.414.64 2.56 1.56 3.44 2.76.907 1.2 1.454 2.6 1.64 4.2l-5.12.28Zm11.486-7.72.12 3.4c.534-1.227 1.307-2.173 2.32-2.84 1.04-.693 2.267-1.04 3.68-1.04 1.494 0 2.76.387 3.8 1.16 1.067.747 1.827 1.813 2.28 3.2.507-1.44 1.294-2.52 2.36-3.24 1.094-.747 2.414-1.12 3.96-1.12 1.414 0 2.64.307 3.68.92s1.84 1.52 2.4 2.72c.56 1.2.84 2.667.84 4.4V38h-4.96V25.92c0-1.813-.293-3.187-.88-4.12-.56-.96-1.413-1.44-2.56-1.44-.906 0-1.68.213-2.32.64-.64.427-1.133 1.053-1.48 1.88-.32.827-.48 1.84-.48 3.04V38h-4.56V25.92c0-1.2-.133-2.213-.4-3.04-.24-.827-.626-1.453-1.16-1.88-.506-.427-1.133-.64-1.88-.64-.906 0-1.68.227-2.32.68-.64.427-1.133 1.053-1.48 1.88-.32.827-.48 1.827-.48 3V38h-4.96V16.8h4.48Zm26.723 10.6c0-2.24.427-4.187 1.28-5.84.854-1.68 2.067-2.973 3.64-3.88 1.574-.907 3.4-1.36 5.48-1.36 1.84 0 3.494.413 4.96 1.24 1.467.827 2.64 2.08 3.52 3.76.88 1.653 1.347 3.693 1.4 6.12v1.32h-15.08c.107 1.813.614 3.227 1.52 4.24.907.987 2.134 1.48 3.68 1.48.987 0 1.88-.253 2.68-.76a4.803 4.803 0 0 0 1.84-2.2l5.08.36c-.64 2.027-1.84 3.64-3.6 4.84-1.733 1.173-3.733 1.76-6 1.76-2.08 0-3.906-.453-5.48-1.36-1.573-.907-2.786-2.2-3.64-3.88-.853-1.68-1.28-3.627-1.28-5.84Zm15.16-2.04c-.213-1.733-.76-3.013-1.64-3.84-.853-.827-1.893-1.24-3.12-1.24-1.44 0-2.6.453-3.48 1.36-.88.88-1.44 2.12-1.68 3.72h9.92ZM163.139 9.6V38h-5.04V9.6h5.04Zm8.322 7.2.24 5.88-.64-.36c.32-2.053 1.094-3.56 2.32-4.52 1.254-.987 2.787-1.48 4.6-1.48 2.32 0 4.107.733 5.36 2.2 1.254 1.44 1.88 3.387 1.88 5.84V38h-4.96V25.92c0-1.253-.12-2.28-.36-3.08-.24-.8-.64-1.413-1.2-1.84-.533-.427-1.253-.64-2.16-.64-1.44 0-2.573.48-3.4 1.44-.8.933-1.2 2.307-1.2 4.12V38h-4.96V16.8h4.48Zm30.003 7.72c-.186-1.307-.706-2.32-1.56-3.04-.853-.72-1.866-1.08-3.04-1.08-1.68 0-2.986.613-3.92 1.84-.906 1.227-1.36 2.947-1.36 5.16s.454 3.933 1.36 5.16c.934 1.227 2.24 1.84 3.92 1.84 1.254 0 2.307-.373 3.16-1.12.854-.773 1.387-1.867 1.6-3.28l5.12.24c-.186 1.68-.733 3.147-1.64 4.4-.906 1.227-2.08 2.173-3.52 2.84-1.413.667-2.986 1-4.72 1-2.08 0-3.906-.453-5.48-1.36-1.546-.907-2.76-2.2-3.64-3.88-.853-1.68-1.28-3.627-1.28-5.84 0-2.24.427-4.187 1.28-5.84.88-1.68 2.094-2.973 3.64-3.88 1.574-.907 3.4-1.36 5.48-1.36 1.68 0 3.227.32 4.64.96 1.414.64 2.56 1.56 3.44 2.76.907 1.2 1.454 2.6 1.64 4.2l-5.12.28Zm11.443 8.16V38h-5.6v-5.32h5.6Z"/><path fill="#171717" fill-rule="evenodd" d="m7.839 40.783 16.03-28.054L20 6 0 40.783h7.839Zm8.214 0H40L27.99 19.894l-4.02 7.032 3.976 6.914H20.02l-3.967 6.943Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

-1
View File
@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="1200" fill="none"><rect width="1200" height="1200" fill="#EAEAEA" rx="3"/><g opacity=".5"><g opacity=".5"><path fill="#FAFAFA" d="M600.709 736.5c-75.454 0-136.621-61.167-136.621-136.62 0-75.454 61.167-136.621 136.621-136.621 75.453 0 136.62 61.167 136.62 136.621 0 75.453-61.167 136.62-136.62 136.62Z"/><path stroke="#C9C9C9" stroke-width="2.418" d="M600.709 736.5c-75.454 0-136.621-61.167-136.621-136.62 0-75.454 61.167-136.621 136.621-136.621 75.453 0 136.62 61.167 136.62 136.621 0 75.453-61.167 136.62-136.62 136.62Z"/></g><path stroke="url(#a)" stroke-width="2.418" d="M0-1.209h553.581" transform="scale(1 -1) rotate(45 1163.11 91.165)"/><path stroke="url(#b)" stroke-width="2.418" d="M404.846 598.671h391.726"/><path stroke="url(#c)" stroke-width="2.418" d="M599.5 795.742V404.017"/><path stroke="url(#d)" stroke-width="2.418" d="m795.717 796.597-391.441-391.44"/><path fill="#fff" d="M600.709 656.704c-31.384 0-56.825-25.441-56.825-56.824 0-31.384 25.441-56.825 56.825-56.825 31.383 0 56.824 25.441 56.824 56.825 0 31.383-25.441 56.824-56.824 56.824Z"/><g clip-path="url(#e)"><path fill="#666" fill-rule="evenodd" d="M616.426 586.58h-31.434v16.176l3.553-3.554.531-.531h9.068l.074-.074 8.463-8.463h2.565l7.18 7.181V586.58Zm-15.715 14.654 3.698 3.699 1.283 1.282-2.565 2.565-1.282-1.283-5.2-5.199h-6.066l-5.514 5.514-.073.073v2.876a2.418 2.418 0 0 0 2.418 2.418h26.598a2.418 2.418 0 0 0 2.418-2.418v-8.317l-8.463-8.463-7.181 7.181-.071.072Zm-19.347 5.442v4.085a6.045 6.045 0 0 0 6.046 6.045h26.598a6.044 6.044 0 0 0 6.045-6.045v-7.108l1.356-1.355-1.282-1.283-.074-.073v-17.989h-38.689v23.43l-.146.146.146.147Z" clip-rule="evenodd"/></g><path stroke="#C9C9C9" stroke-width="2.418" d="M600.709 656.704c-31.384 0-56.825-25.441-56.825-56.824 0-31.384 25.441-56.825 56.825-56.825 31.383 0 56.824 25.441 56.824 56.825 0 31.383-25.441 56.824-56.824 56.824Z"/></g><defs><linearGradient id="a" x1="554.061" x2="-.48" y1=".083" y2=".087" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="b" x1="796.912" x2="404.507" y1="599.963" y2="599.965" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="c" x1="600.792" x2="600.794" y1="403.677" y2="796.082" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="d" x1="404.85" x2="796.972" y1="403.903" y2="796.02" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><clipPath id="e"><path fill="#fff" d="M581.364 580.535h38.689v38.689h-38.689z"/></clipPath></defs></svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

+21
View File
@@ -0,0 +1,21 @@
{
"name": "Архив ДНТ-7",
"short_name": "ДНТ-7",
"description": "Рассекреченный реестр документов Межгалактического Дачного Сопротивления",
"start_url": "/",
"display": "standalone",
"background_color": "#f5f0e8",
"theme_color": "#3d2b1f",
"icons": [
{
"src": "/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
-57
View File
@@ -1,57 +0,0 @@
---
import type { Dossier } from '../lib/dossiers'
import Stamp from './Stamp.astro'
interface Props {
d: Dossier
rotate?: string
}
const { d, rotate } = Astro.props as Props
const classColor: Record<string, string> = {
'СОВ. СЕКРЕТНО': 'text-primary',
'СЕКРЕТНО': 'stamp-ink',
'ДСП': 'stamp-ink',
'РАССЕКРЕЧЕНО': 'stamp-ink opacity-60',
}
---
<a
href={`/dossier/${d.slug}`}
style={{ rotate }}
class="paper group relative flex flex-col gap-3 p-5 transition-all duration-200 hover:-translate-y-1 hover:rotate-0 hover:shadow-[0_26px_50px_-22px_rgba(40,25,15,0.7)]"
>
<span class="tape -top-3 left-1/2 -translate-x-1/2 -rotate-2" aria-hidden="true" />
<div class="flex items-start justify-between gap-2">
<div>
<p class="font-mono text-[0.65rem] uppercase tracking-widest text-muted-foreground">
Дело № {d.code}
</p>
<p class="mt-0.5 font-heading text-[0.7rem] uppercase tracking-wider text-primary">
{d.category}
</p>
</div>
<Stamp class={`px-1.5 py-0.5 text-[0.55rem] ${classColor[d.classification] ?? ''}`}>
{d.classification}
</Stamp>
</div>
<h3 class="font-heading text-xl font-700 uppercase leading-none tracking-tight transition-colors group-hover:text-primary">
{d.name}
</h3>
<p class="text-xs italic leading-snug text-muted-foreground">
{d.fullName}
</p>
<p class="text-sm leading-relaxed text-foreground/90">{d.summary}</p>
<div class="mt-auto flex items-center justify-between border-t border-dashed border-border pt-3">
<span class="font-mono text-[0.65rem] uppercase tracking-wider text-muted-foreground">
Угроза: <span class="text-foreground">{d.threat}</span>
</span>
<span class="font-heading text-[0.7rem] font-600 uppercase tracking-wider text-primary opacity-0 transition-opacity group-hover:opacity-100">
Открыть дело →
</span>
</div>
</a>
-15
View File
@@ -1,15 +0,0 @@
---
interface Props {
label?: string
value?: string
}
const { label, value } = Astro.props as Props
---
<div class="grid grid-cols-1 gap-1 border-b border-dashed border-border py-3 sm:grid-cols-[200px_1fr] sm:gap-4">
<dt class="font-heading text-xs font-600 uppercase tracking-wider text-muted-foreground">
{label}
</dt>
<dd class="text-sm leading-relaxed text-foreground" set:html={value}></dd>
</div>
+4 -7
View File
@@ -1,18 +1,15 @@
---
interface Props {
children?: any
class?: string
children?: any;
class?: string;
}
const { children, class: className } = Astro.props as Props
const { children, class: className } = Astro.props as Props;
---
<span
aria-hidden="true"
class:list={[
'stamp-overlay pointer-events-none select-none px-4 py-2 font-heading text-2xl sm:text-4xl',
className,
]}
class:list={["stamp-overlay pointer-events-none select-none px-4 py-2 font-heading text-2xl sm:text-4xl", className]}
>
{children}
</span>
+3 -6
View File
@@ -1,17 +1,14 @@
---
interface Props {
class?: string
class?: string;
}
const { class: className } = Astro.props as Props
const { class: className } = Astro.props as Props;
---
<div
aria-hidden="true"
class:list={[
'flex h-4 w-full items-center justify-between overflow-hidden px-2 opacity-60',
className,
]}
class:list={["flex h-4 w-full items-center justify-between overflow-hidden px-2 opacity-60", className]}
>
{
Array.from({ length: 60 }).map(() => (
-9
View File
@@ -1,9 +0,0 @@
---
interface Props {
children?: any
}
const { children } = Astro.props as Props
---
<span class="redacted px-1">{children}</span>
-17
View File
@@ -1,17 +0,0 @@
---
interface Props {
children?: any
index: string
}
const { children, index } = Astro.props as Props
---
<h2 class="mb-4 flex items-baseline gap-3 font-heading text-lg font-700 uppercase tracking-wide">
<span class="flex h-7 min-w-7 items-center justify-center bg-primary px-1.5 text-sm text-primary-foreground">
{index}
</span>
<span class="flex-1 border-b border-foreground/30 pb-1">
{children}
</span>
</h2>
+5 -4
View File
@@ -1,6 +1,8 @@
<footer class="mt-16 border-t border-foreground/25 bg-card/60">
<div class="mx-auto max-w-5xl px-4 py-8 sm:px-6">
<div class="flex flex-col justify-between gap-4 text-[0.7rem] uppercase tracking-wider text-muted-foreground sm:flex-row">
<div
class="flex flex-col justify-between gap-4 text-[0.7rem] uppercase tracking-wider text-muted-foreground sm:flex-row"
>
<p>
© <span class="text-foreground">Дачно-Наблюдательный Трибунал №7</span>
· Кооператив «Заря-9»
@@ -8,9 +10,8 @@
<p>Форма А-13 · Хранить вечно · Не выносить за периметр</p>
</div>
<p class="mt-4 max-w-2xl text-[0.7rem] leading-relaxed text-muted-foreground">
Все материалы являются художественным вымыслом. Любое совпадение с
реальными грядками, соседями и небесными телами случайно. Разглашение
преследуется лишением компоста.
Все материалы являются художественным вымыслом. Любое совпадение с реальными грядками, соседями и небесными телами
случайно. Разглашение преследуется лишением талона на интернет.
</p>
</div>
</footer>
+11 -13
View File
@@ -1,27 +1,25 @@
<header class="sticky top-0 z-30 border-b border-foreground/25 bg-card/85 backdrop-blur-sm shadow-[0_2px_12px_-8px_rgba(40,25,15,0.6)]">
---
import { base } from "../lib/paths";
---
<header
class="sticky top-0 z-30 border-b border-foreground/25 bg-card/85 backdrop-blur-sm shadow-[0_2px_12px_-8px_rgba(40,25,15,0.6)]"
>
<div class="mx-auto flex max-w-5xl flex-col gap-4 px-4 py-4 sm:flex-row sm:items-center sm:justify-between sm:px-6">
<a href="/" class="flex items-center gap-3">
<a href={base} class="flex items-center gap-3">
<img
src="/emblem.png"
src={`${base}emblem.png`}
alt="Эмблема Трибунала"
width="52"
height="52"
class="h-12 w-12 mix-blend-multiply"
/>
<div class="leading-tight">
<p class="font-heading text-base font-700 uppercase tracking-wide sm:text-lg">
Архив ДНТ-7
</p>
<p class="font-heading text-base font-700 uppercase tracking-wide sm:text-lg">Архив ДНТ-7</p>
<p class="text-[0.65rem] uppercase tracking-widest text-muted-foreground">
Дачно-Наблюдательный Трибунал
Межгалактическое Дачное Сопротивление
</p>
</div>
</a>
<nav class="flex flex-wrap items-center gap-x-5 gap-y-1 font-heading text-xs font-600 uppercase tracking-wider">
<a href="/" class="relative text-foreground/80 transition-colors hover:text-primary">Картотека</a>
<a href="/dossier/directive-kompot" class="relative text-foreground/80 transition-colors hover:text-primary">Уставы</a>
<a href="/dossier/lopata-bs-3000" class="relative text-foreground/80 transition-colors hover:text-primary">Инвентарь</a>
<a href="/protocol" class="relative text-foreground/80 transition-colors hover:text-primary">Протокол</a>
</nav>
</div>
</header>
+8 -8
View File
@@ -1,19 +1,19 @@
---
interface Props {
children?: any
class?: string
skew?: boolean
variant?: 'red' | 'ink'
children?: any;
class?: string;
skew?: boolean;
variant?: "red" | "ink";
}
const { children, class: className, skew = true, variant = 'red' } = Astro.props as Props
const { children, class: className, skew = true, variant = "red" } = Astro.props as Props;
---
<span
class:list={[
'stamp px-2 py-1 text-[0.65rem] sm:text-xs',
variant === 'ink' && 'stamp-ink',
skew && 'stamp-skew',
"stamp px-2 py-1 text-[0.65rem] sm:text-xs",
variant === "ink" && "stamp-ink",
skew && "stamp-skew",
className,
]}
>
+22 -7
View File
@@ -1,27 +1,42 @@
---
import '../styles/globals.css'
import { base } from "../lib/paths";
import "../styles/globals.css";
interface Props {
title: string
description?: string
title: string;
description?: string;
}
const { title, description } = Astro.props as Props
const { title, description } = Astro.props as Props;
---
<!doctype html>
<html lang="ru" class="bg-background">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" href="/favicon.ico" />
<link rel="icon" href={`${base}favicon.ico`} sizes="48x48" />
<link rel="icon" href={`${base}icon-32.png`} type="image/png" sizes="32x32" />
<link rel="icon" href={`${base}icon-16.png`} type="image/png" sizes="16x16" />
<link rel="apple-touch-icon" href={`${base}apple-icon.png`} />
<link rel="manifest" href={`${base}site.webmanifest`} />
<meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} />
<title>{title}</title>
{description && <meta name="description" content={description} />}
<meta property="og:title" content={title} />
{description && <meta property="og:description" content={description} />}
<meta property="og:image" content={`${base}emblem-og.png`} />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={title} />
{description && <meta name="twitter:description" content={description} />}
<meta name="twitter:image" content={`${base}emblem-og.png`} />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Oswald:wght@400;500;600;700&display=swap" rel="stylesheet" />
<link
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Oswald:wght@400;500;600;700&display=swap"
rel="stylesheet"
/>
</head>
<body class="font-mono antialiased">
<slot />
+165
View File
@@ -0,0 +1,165 @@
---
import Perforation from "../components/Perforation.astro";
import SiteFooter from "../components/SiteFooter.astro";
import SiteHeader from "../components/SiteHeader.astro";
import { base } from "../lib/paths";
import BaseLayout from "./base.astro";
interface Props {
title?: string;
description?: string;
code?: string;
content?: { title?: string; description?: string; code?: string };
}
const content = Astro.props.content || Astro.props;
const title = content.title;
const description = content.description;
const code = content.code;
---
<BaseLayout title={`${title} // Архив ДНТ-7`} description={description}>
<div class="min-h-screen">
<SiteHeader />
<div class="banner-classified border-y border-foreground/30">
<div
class="mx-auto flex max-w-4xl items-center justify-between gap-4 px-4 py-1.5 text-[0.65rem] font-700 uppercase tracking-[0.2em] sm:px-6"
>
<span>Для служебного пользования</span>
<span class="hidden sm:inline">{code || "МДС"}</span>
<span>Экз. № 1</span>
</div>
</div>
<main class="mx-auto max-w-4xl px-4 py-8 sm:px-6">
<a
href={base}
class="font-heading text-xs font-600 uppercase tracking-wider text-muted-foreground hover:text-primary"
>
← Вернуться в реестр
</a>
<article class="paper relative mt-4 -rotate-[0.3deg] p-6 sm:p-10">
<span class="tape -top-3 left-1/2 hidden -translate-x-1/2 rotate-1 sm:block" aria-hidden="true"></span>
<div class="pointer-events-none absolute right-4 top-4 sm:right-8 sm:top-10">
<img
src={`${base}emblem.png`}
alt=""
width="90"
height="90"
class="h-16 w-16 opacity-80 mix-blend-multiply sm:h-20 sm:w-20"
/>
</div>
<header class="pb-5">
<h1
class="max-w-2xl text-balance font-heading text-3xl font-700 uppercase leading-[0.95] tracking-tight sm:text-5xl"
>
{title}
</h1>
<hr class="rule rule-red mt-5" />
</header>
<div class="doc-content">
<slot />
</div>
</article>
<div class="mt-12">
<Perforation />
</div>
</main>
<SiteFooter />
</div>
</BaseLayout>
<style>
.doc-content {
font-size: 0.9375rem;
line-height: 1.75;
color: oklch(0.28 0.03 52 / 0.9);
}
.doc-content h2 {
font-family: var(--font-heading);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
font-size: 1.25rem;
margin-top: 3rem;
margin-bottom: 1.25rem;
padding-bottom: 0.35rem;
border-bottom: 1px solid oklch(0.45 0.04 56 / 0.3);
}
.doc-content h3 {
font-family: var(--font-heading);
font-weight: 600;
text-transform: uppercase;
font-size: 1rem;
margin-top: 2rem;
margin-bottom: 1rem;
color: var(--primary);
}
.doc-content h2:first-child {
margin-top: 0;
}
.doc-content h2 + *,
.doc-content h3 + * {
margin-top: 0;
}
.doc-content p {
margin-bottom: 1.25rem;
}
.doc-content strong {
font-weight: 700;
color: oklch(0.25 0.04 52 / 1);
}
.doc-content ol,
.doc-content ul {
margin-left: 1.5rem;
margin-bottom: 1.25rem;
}
.doc-content ol {
list-style: decimal;
}
.doc-content ul {
list-style: disc;
}
.doc-content li {
margin-bottom: 0.5rem;
}
.doc-content ol ::marker,
.doc-content ul ::marker {
color: var(--primary);
font-weight: 700;
}
.doc-content hr {
border: 0;
border-top: 1px solid oklch(0.45 0.04 56 / 0.5);
box-shadow: 0 3px 0 -2px oklch(0.45 0.04 56 / 0.5);
margin: 2.5rem 0;
}
.doc-content table {
width: 100%;
border-collapse: collapse;
margin-bottom: 1.25rem;
font-size: 0.875rem;
}
.doc-content th,
.doc-content td {
border: 1px solid oklch(0.5 0.04 56 / 0.35);
padding: 0.625rem 0.875rem;
text-align: left;
vertical-align: top;
}
.doc-content th {
font-family: var(--font-heading);
font-weight: 600;
text-transform: uppercase;
font-size: 0.75rem;
letter-spacing: 0.05em;
background: oklch(0.5 0.04 56 / 0.08);
}
</style>
-205
View File
@@ -1,205 +0,0 @@
---
import BaseLayout from './base.astro'
import SiteHeader from '../components/SiteHeader.astro'
import SiteFooter from '../components/SiteFooter.astro'
import OverlayStamp from '../components/OverlayStamp.astro'
import FieldRow from '../components/FieldRow.astro'
import Perforation from '../components/Perforation.astro'
import { DOSSIERS, getDossier } from '../lib/dossiers'
interface Props {
title: string
fullName?: string
code?: string
category?: string
classification?: string
threat?: string
hasBlueprint?: boolean
hasPhoto?: boolean
fields?: { label: string; value: string }[]
}
const frontmatter = Astro.props as Props
const slug = Astro.url.pathname.replace('/dossier/', '').replace('/', '')
const dossier = getDossier(slug)
const allDossiers = DOSSIERS
---
<BaseLayout title={`${frontmatter.title} // Архив ДНТ-7`} description={frontmatter.fullName}>
<div class="min-h-screen">
<SiteHeader />
<div class="banner-classified border-y border-foreground/30">
<div class="mx-auto flex max-w-4xl items-center justify-between gap-4 px-4 py-1.5 text-[0.65rem] font-700 uppercase tracking-[0.2em] sm:px-6">
<span>{frontmatter.classification}</span>
<span class="hidden sm:inline">Дело № {frontmatter.code}</span>
<span>Экз. № 1</span>
</div>
</div>
<main class="mx-auto max-w-4xl px-4 py-8 sm:px-6">
<a
href="/"
class="font-heading text-xs font-600 uppercase tracking-wider text-muted-foreground hover:text-primary"
>
← Вернуться в картотеку
</a>
<article class="paper relative mt-4 -rotate-[0.3deg] p-6 sm:p-10">
<span class="tape -top-3 left-1/2 hidden -translate-x-1/2 rotate-1 sm:block" aria-hidden="true" />
<div class="pointer-events-none absolute right-3 top-4 rotate-[9deg] sm:right-8 sm:top-10">
<OverlayStamp class="text-xl sm:text-3xl">
{frontmatter.classification}
</OverlayStamp>
</div>
<header class="pb-5">
<p class="font-mono text-[0.7rem] uppercase tracking-[0.25em] text-muted-foreground">
{frontmatter.category} · Дело № {frontmatter.code} · Угроза {frontmatter.threat}
</p>
<h1 class="mt-3 max-w-2xl text-balance font-heading text-3xl font-700 uppercase leading-[0.95] tracking-tight sm:text-5xl">
{frontmatter.title}
</h1>
<p class="mt-3 max-w-2xl text-sm italic leading-relaxed text-muted-foreground">
{frontmatter.fullName}
</p>
<hr class="rule rule-red mt-5" />
</header>
<section class="mt-2">
<dl>
{frontmatter.fields?.map((f) => (
<FieldRow label={f.label} value={f.value} />
))}
</dl>
</section>
{frontmatter.hasBlueprint && (
<figure class="paper paper-strong mt-8 p-3">
<img
src="/blueprint-lopata.png"
alt={`Технический чертёж изделия ${frontmatter.title}`}
width="1200"
height="800"
class="h-auto w-full mix-blend-multiply"
/>
<figcaption class="mt-2 border-t border-dashed border-border pt-2 text-center font-mono text-[0.65rem] uppercase tracking-wider text-muted-foreground">
Рис. 1 — Чертёж общего вида · ГОСТ-садовый 12-86
</figcaption>
</figure>
)}
{frontmatter.hasPhoto && (
<figure class="paper paper-strong mt-8 max-w-sm rotate-1 p-2">
<img
src="/classified-photo.png"
alt="Рассекреченный фотоматериал"
width="600"
height="600"
class="h-auto w-full grayscale"
/>
<figcaption class="mt-2 border-t border-dashed border-border pt-2 font-mono text-[0.6rem] uppercase tracking-wider text-muted-foreground">
Фотоматериал · участок №6 · 03:14
</figcaption>
</figure>
)}
<div class="mt-10 prose-custom">
<slot />
</div>
<footer class="mt-12 grid grid-cols-1 gap-6 border-t border-dashed border-border pt-6 sm:grid-cols-2">
<div>
<p class="text-[0.7rem] uppercase tracking-wider text-muted-foreground">
Утвердил
</p>
<p class="mt-3 font-heading text-base font-600">
Председатель Трибунала
</p>
<p class="mt-1 border-b border-foreground/50 pb-1 font-mono text-sm text-muted-foreground">
подпись: [ИЗЪЯТО]
</p>
</div>
<div class="flex items-start justify-end">
<img
src="/emblem.png"
alt=""
width="90"
height="90"
class="h-20 w-20 rotate-6 opacity-80 mix-blend-multiply"
/>
</div>
</footer>
</article>
<section class="mt-10">
<h2 class="mb-1 font-heading text-lg font-700 uppercase tracking-wide">
См. также
</h2>
<hr class="rule mb-5 w-40" />
<div class="grid grid-cols-1 gap-3 sm:grid-cols-2">
{allDossiers.filter((d) => d.slug !== slug).slice(0, 4).map((d) => (
<a
href={`/dossier/${d.slug}`}
class="paper flex items-center justify-between px-3 py-2.5 text-sm transition-all hover:-translate-y-0.5 hover:text-primary"
>
<span class="font-heading uppercase tracking-wide">{d.name}</span>
<span class="font-mono text-[0.65rem] text-muted-foreground">{d.code}</span>
</a>
))}
</div>
</section>
<div class="mt-12">
<Perforation />
</div>
</main>
<SiteFooter />
</div>
</BaseLayout>
<style>
.prose-custom h2 {
font-family: var(--font-heading);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
font-size: 1.125rem;
margin-bottom: 1rem;
padding-bottom: 0.25rem;
border-bottom: 1px solid oklch(0.45 0.04 56 / 0.3);
}
.prose-custom h2 + * {
margin-top: 0;
}
.prose-custom p,
.prose-custom li {
font-size: 0.875rem;
line-height: 1.625;
color: oklch(0.28 0.03 52 / 0.9);
}
.prose-custom p {
margin-bottom: 0.75rem;
}
.prose-custom ol,
.prose-custom ul {
margin-left: 1rem;
margin-bottom: 0.75rem;
}
.prose-custom ol {
list-style: decimal;
}
.prose-custom ul {
list-style: disc;
}
.prose-custom li {
margin-bottom: 0.25rem;
}
.prose-custom ol ::marker,
.prose-custom ul ::marker {
color: var(--primary);
font-weight: 700;
}
</style>
-87
View File
@@ -1,87 +0,0 @@
export type Classification = 'СОВ. СЕКРЕТНО' | 'СЕКРЕТНО' | 'ДСП' | 'РАССЕКРЕЧЕНО'
export type Dossier = {
slug: string
code: string
name: string
fullName: string
category: 'ИНВЕНТАРЬ' | 'ПЕРСОНА' | 'ОБЪЕКТ' | 'ДИРЕКТИВА'
classification: Classification
threat: string
summary: string
}
export const DOSSIERS: Dossier[] = [
{
slug: 'lopata-bs-3000',
code: 'ИНВ-001',
name: 'Л.О.П.А.Т.А.',
fullName:
'Локализатор Органических Признаков Анунаков Трансгрессивного Адаптера',
category: 'ИНВЕНТАРЬ',
classification: 'СОВ. СЕКРЕТНО',
threat: 'КАТ. III',
summary:
'Модель БС-3000 (Садово-Боевая). Обнуление маскировочных био-голограмм и принудительное заземление внеземных агентов в полевых условиях.',
},
{
slug: 'subject-ogurec',
code: 'ОБЪ-014',
name: 'СУБЪЕКТ «ОГУРЕЦ»',
fullName: 'Биомаскировочная единица класса «Парниковый»',
category: 'ОБЪЕКТ',
classification: 'СЕКРЕТНО',
threat: 'КАТ. II',
summary:
'Рептилоидный агент, выявленный при инвентаризации теплицы участка №6. Демаскирован при пониженной температуре грунта.',
},
{
slug: 'directive-kompot',
code: 'ДИР-007',
name: 'ДИРЕКТИВА «КОМПОТ»',
fullName: 'Устав полевого противодействия чешуйчатому личному составу',
category: 'ДИРЕКТИВА',
classification: 'ДСП',
threat: 'КАТ. I',
summary:
'Свод обязательных предписаний для дачников-наблюдателей при контакте с предполагаемым агентом планеты Нибиру.',
},
{
slug: 'agent-baba-zina',
code: 'ПЕР-003',
name: 'АГЕНТ «БАБА ЗИНА»',
fullName: 'Старший полевой оператор, участок №3, кооператив «Заря-9»',
category: 'ПЕРСОНА',
classification: 'РАССЕКРЕЧЕНО',
threat: '—',
summary:
'Кавалер ордена Трудовой Грядки. Лично заземлила 14 (четырнадцать) подтверждённых рептилоидных единиц. Личность охраняется.',
},
{
slug: 'object-nibiru',
code: 'ОБЪ-000',
name: 'ПЛАНЕТА НИБИРУ',
fullName: 'Источник трансгрессивной угрозы садоводческим территориям',
category: 'ОБЪЕКТ',
classification: 'СОВ. СЕКРЕТНО',
threat: 'КАТ. IV',
summary:
'Внесистемное тело. Период сближения совпадает с пиком урожайности. Координаты [ДАННЫЕ ИЗЪЯТЫ].',
},
{
slug: 'equipment-vedro',
code: 'ИНВ-022',
name: 'В.Е.Д.Р.О.',
fullName:
'Высокочастотный Экранирующий Дезинтегратор Рептилоидных Оболочек',
category: 'ИНВЕНТАРЬ',
classification: 'СЕКРЕТНО',
threat: 'КАТ. II',
summary:
'Оцинкованный контур-ловушка. Накрывается на голову агента для блокировки телепатического канала с орбитой.',
},
]
export function getDossier(slug: string) {
return DOSSIERS.find((d) => d.slug === slug)
}
+1
View File
@@ -0,0 +1 @@
export const base = import.meta.env.BASE_URL;
+122
View File
@@ -0,0 +1,122 @@
export type RegistryEntry = {
id: string | null;
title: string;
annotation: string;
status: "open" | "deleted" | "restricted" | "lost" | "classified" | "password" | "danger";
slug?: string;
};
export const REGISTRY: RegistryEntry[] = [
{
id: "МДС-ТП-2024",
title: "Технический паспорт изделия Л.О.П.А.Т.А. (Модель БС-3000).",
annotation:
"Полное инженерное описание устройства, волнового стального резонатора и диэлектрического березового интерфейса.",
status: "open",
slug: "datasheet",
},
{
id: "МДС-ТП-2024",
title: "Инструкция по боевому применению системы Л.О.П.А.Т.А.",
annotation: "Пользовательская инструкция по базовому боевому применению системы",
status: "open",
slug: "user-manual",
},
{
id: null,
title: "Боевой устав применения системы Л.О.П.А.Т.А.",
annotation:
"Основной тактический документ Сопротивления. Содержит базовые принципы обнуления трансгрессивных адаптеров и 6 фундаментальных шагов ведения полевой демаскировки.",
status: "deleted",
},
{
id: "МДС-ПП-11",
title: "Приложение №1: Тактика ближнего боя в ограниченных ионосферных пространствах.",
annotation:
"Практическое руководство по ликвидации анунаков в замкнутых локациях типа «Лифт», «Офисный коридор» и «Кустарниковая зона».",
status: "open",
slug: "appendix-1",
},
{
id: null,
title: "Приложение №2: Тактика ведения боя в условиях плотной городской застройки (Метод «Двор-Метро»).",
annotation:
"Инструкция по нейтрализации замаскированных агентов на асфальтовом и бетонном покрытии. Описывает приём «Искра из-под подошвы» и метод маскировки системы Л.О.П.А.Т.А. под обычный строительный инструмент дорожного рабочего.",
status: "deleted",
},
{
id: null,
title: "Приложение №3: Тактика зимнего противостояния (Протокол «Белая Иллюзия»).",
annotation:
"Руководство по ведению боя в условиях отрицательных температур. При низких температурах трансгрессивный адаптер пришельцев начинает сильно греться, выдавая их локацию паром из ушей.",
status: "deleted",
},
{
id: null,
title: "Приложение №4: Тактика ведения боя на воде и в прибрежных зонах (Операция «Чешуя в камышах»).",
annotation:
"Анунаки обожают маскироваться под рыбаков или отдыхающих на пляжах, чтобы восстанавливать гидро-баланс. Документ содержит тактику «Весло-Трансформер».",
status: "deleted",
},
{
id: null,
title: "Приложение №5: Тактика ведения боя в условиях общественного транспорта (Инструкция «Час Пик»).",
annotation: "Особенности применения БС-3000 в переполненных автобусах, трамваях и вагонах электричек.",
status: "deleted",
},
{
id: null,
title: "Приложение №6: Тактика ночного боя и противодействие тепловизионному зрению (Протокол «Слепое пятно»).",
annotation:
"Рептилоиды прекрасно видят в темноте инфракрасный спектр. Документ обучает использованию разогретого стального полотна системы Л.О.П.А.Т.А. в качестве теплового экрана.",
status: "deleted",
},
{
id: null,
title: "Памятка по перехвату ментальных IT-сигналов.",
annotation:
"Инструкция для гражданских лиц, объясняющая, как отличить системный сбой нано-костюма ящерицы от обычного человеческого переутомления.",
status: "deleted",
},
{
id: null,
title: "Регламент экстренной связи с мобильной группой «Бабушка с лопатой».",
annotation:
"Описание радиочастотных кодов (Канал 13) и звуковых маркеров для вызова тяжелой дачной артиллерии в зону прорыва.",
status: "lost",
},
{
id: null,
title: "Приложение №2: Система распознавания «Свой-Чужой» при контакте с председателями СНТ.",
annotation: "Статус: Засекречено Советом Земли из-за высокого риска междоусобных войн за чернозём.",
status: "deleted",
},
{
id: null,
title: "Схемы скрытого ношения БС-3000 в городских условиях под видом элементов складного самоката или моноколеса.",
annotation: "Статус: Ожидает верификации инженерным отделом на предмет электромагнитной совместимости.",
status: "restricted",
},
{
id: null,
title: "Стенограмма допроса пленного Анунака 4-го ранга, пойманного на краже элитных семян томатов «Бычье сердце».",
annotation: "Статус: Файл засекречен Межгалактическим Комитетом Рептилоидов",
status: "classified",
},
{
id: null,
title: "Сценарий операции «ДАЧНЫЙ СЕЗОН»",
annotation:
"Описание сценария глобального перехвата и заземления ночного десанта тарелок Нибиру с помощью одновременного удара плашмя 10 000 операторов систем Л.О.П.А.Т.А.",
status: "password",
},
{
id: null,
title: "Химический анализ зелёной люминесцентной субстанции (хладагента).",
annotation:
"Статус: Заблокировано Минздравом. Документ содержит незацензуренные рецепты приготовления противоядия на основе рассола.",
status: "danger",
},
];
export const OPEN_SLUGS = REGISTRY.filter((e) => e.status === "open").map((e) => e.slug!);
+65
View File
@@ -0,0 +1,65 @@
---
import OverlayStamp from "../components/OverlayStamp.astro";
import Perforation from "../components/Perforation.astro";
import SiteFooter from "../components/SiteFooter.astro";
import SiteHeader from "../components/SiteHeader.astro";
import BaseLayout from "../layouts/base.astro";
---
<BaseLayout title="Доступ запрещён // Архив ДНТ-7">
<div class="min-h-screen">
<SiteHeader />
<div class="banner-classified border-y border-foreground/30">
<div
class="mx-auto flex max-w-4xl items-center justify-between gap-4 px-4 py-1.5 text-[0.65rem] font-700 uppercase tracking-[0.2em] sm:px-6"
>
<span>СОВ. СЕКРЕТНО</span>
<span class="hidden sm:inline">Гриф особой важности</span>
<span>Доступ закрыт</span>
</div>
</div>
<main class="mx-auto flex max-w-4xl px-4 py-24 sm:px-6">
<article class="paper relative mx-auto w-full max-w-lg -rotate-[0.3deg] p-10 text-center">
<span class="tape -top-3 left-1/2 -translate-x-1/2 rotate-2" aria-hidden="true"></span>
<div class="pointer-events-none absolute right-6 top-6 rotate-[12deg]">
<OverlayStamp class="text-3xl sm:text-4xl">ЗАПРЕЩЕНО</OverlayStamp>
</div>
<p class="font-mono text-[0.7rem] uppercase tracking-[0.25em] text-muted-foreground">
Ошибка 404 · Доступ к ресурсу ограничен
</p>
<h1 class="mt-6 font-heading text-4xl font-700 uppercase leading-[0.9] tracking-tight sm:text-5xl">
ДОСТУП<br />ЗАПРЕЩЁН
</h1>
<hr class="rule rule-red mx-auto my-6 w-32" />
<p class="text-sm leading-relaxed text-foreground/90">
Запрашиваемый документ находится под грифом особой важности и не подлежит разглашению лицам без ментального
допуска 3-го уровня.
</p>
<p class="mt-3 text-sm leading-relaxed text-foreground/90">
Ожидайте следующую партию рассекреченных документов. Сроки рассекречивания будут объявлены дополнительным
циркуляром.
</p>
<div class="mt-8">
<span class="stamp stamp-skew mx-auto inline-flex px-4 py-2 text-sm"> Доступ запрещён </span>
</div>
<p class="mt-8 text-[0.65rem] uppercase tracking-wider text-muted-foreground">Форма А-13 · Хранить вечно</p>
</article>
</main>
<div class="mt-24">
<Perforation />
</div>
<SiteFooter />
</div>
</BaseLayout>
+41
View File
@@ -0,0 +1,41 @@
---
layout: ../../layouts/doc.astro
title: "Приложение №1 к Боевому уставу: Тактика ведения боя с применением системы Л.О.П.А.Т.А. в ограниченных ионосферных пространствах"
description: Практическое руководство по ликвидации анунаков в замкнутых локациях
code: МДС-ПП-11
---
(Утверждено Штабом Дачной Обороны)
Ведение боя в замкнутых пространствах (офисы, лифты, коридоры НИИ, дачные веранды) усложняется тем, что амплитудный замах для классического «Хребтового импульса» заблокирован элементами интерьера. Ниже приведены боевые приемы, адаптированные под различные городские и бытовые локации.
---
## Локация «Офисный коридор» (Операция «Копировальный сбой»)
Самое опасное место, так как анунаки часто маскируются под топ-менеджеров или системных администраторов.
- **Тактическая уловка «Засада у кулера»:** Встаньте за углом или за аппаратом с водой, замаскировав систему Л.О.П.А.Т.А. под гигантский пластиковый цветок или швабру.
- **Боевой прием «Короткий тычок»:** При приближении цели откажитесь от замаха плашмя. Используйте штыковой метод: нанесите резкий колющий удар торцевой частью металлического полотна в область коленной чашечки или копчика. Это вызовет короткое замыкание в цепи питания нано-костюма.
## Локация «Пассажирский лифт» (Протокол «Замкнутая петля»)
Экстремальные условия. Дистанция минимальна. Бежать некуда ни вам, ни ящеру.
- **Тактическая подготовка:** Зайдите в лифт вторым. Встаньте строго за спиной подозреваемого. Если он начинает нажимать на кнопки слишком быстро или его зрачки вертикально вытягиваются от отражения в зеркале — действуйте.
- **Боевой прием «Вертикальный апперкот»:** Переверните систему Л.О.П.А.Т.А. черенком вверх. Нанесите резкий удар основанием черенка снизу вверх под подбородок агента (или плашмя по затылку, если позволяет высота потолка). Плотный контакт металла со сводом черепа пришельца мгновенно глушит его ментальную связь с Нибиру. Нажмите кнопку «Стоп» и проводите верификацию по Шагу 3.
## Локация «Дачная кустарниковая зона» (Зачистка по классике)
Идеальная экосистема для оператора системы Л.О.П.А.Т.А. Здесь вы находитесь в своей полосе частот.
- **Тактическая уловка «Маскировка под борозду»:** Замрите среди грядок клубники или кустов малины, приняв позу «уставшего дачника». Л.О.П.А.Т.А. должна быть занесена над землей под углом 45 градусов.
- **Боевой прием «Круговой покос»:** Если пришелец (под видом соседа) пытается незаметно подобраться к вашему урожаю или установить ретранслятор в теплице, выполните размашистый горизонтальный удар по ногам. Физическое заземление нижних конечностей анунака обнуляет трансгрессивный адаптер во всем его теле.
---
## ОБЩИЕ ПРАВИЛА БЛИЖНЕГО БОЯ ДЛЯ ПАТРИОТОВ ЗЕМЛИ
1. **Не смотрите им в глаза:** Перед ударом зафиксируйте взгляд на хребте или воротнике цели. Взгляд анунака обладает гипнотическим IT-излучением, способным внушить вам, что Л.О.П.А.Т.А. — это просто инструмент для уборки снега.
2. **Контролируйте хват:** При контакте стального полотна с маскировочной броней возможна мощная электрическая отдача. Держите черенок только сухими руками (или в брезентовых садовых рукавицах с защитой от внеземного тока).
3. **Фактор внезапности:** Никогда не кричите перед атакой «За Землю!» или «Получи, ящерица!». Запуск демаскирующего импульса должен происходить в абсолютной тишине, нарушаемой только свистом рассекаемого воздуха.
+56
View File
@@ -0,0 +1,56 @@
---
layout: ../../layouts/doc.astro
title: Технический паспорт изделия Л.О.П.А.Т.А. (Модель БС-3000)
description: Полное инженерное описание устройства, волнового стального резонатора и диэлектрического березового интерфейса
code: МДС-ТП-2024
---
**Наименование изделия:** Л.О.П.А.Т.А. (Модель БС-3000 / Садово-Боевая)
**Полное инженерное название:** Локализатор Органических Признаков Анунаков Трансгрессивного Адаптера
**Назначение:** Обнуление маскировочных био-голограмм, принудительное заземление внеземных агентов и демаскировка чешуйчатого личного состава в полевых условиях.
---
## 1. ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ
| Параметр | Значение / Описание |
| -------------------- | -------------------------------------------------------------------------------- |
| Интерфейс управления | Деревянный цилиндрический черенок (берёза/ясень, класс защиты от телепатии IP68) |
| Рабочий орган | Сверхпрочная углеродистая сталь с анти-чешуйчатым напылением |
| Радиус поражения | Длина черенка + длина вытянутой руки патриота Земли (приблизительно 1.5–2 метра) |
| Тип боевого импульса | Кинетическо-психотропный, плоскостной, хребтовый |
| Энергопотребление | 0 Вт (питается от праведного гнева оператора и пары тарелок борща) |
| Совместимость | Совместима со всеми типами анунаков, рептилоидов и серых человечков |
---
## 2. УСТРОЙСТВО И ПРИНЦИП РАБОТЫ
Изделие состоит из двух ключевых модулей:
1. **Резонатор частот (Полотно):** Стальная пластина специальной формы. При резком соприкосновении с биологической спиной пришельца создает резонансную волну, которая мгновенно перегружает и сжигает трансгрессивный адаптер врага.
2. **Диэлектрический изолятор (Черенок):** Защищает оператора от удара током, статическим электричеством маскировочного костюма и ментальных криков ящерицы в момент демаскировки.
---
## 3. РЕЖИМЫ РАБОТЫ И БОЕВОЕ ПРИМЕНЕНИЕ
- **Режим «Штыковой» (Точечное тестирование):** Применяется для глубокого сканирования почвы под ногами подозреваемого. Если объект начинает нервно подпрыгивать и шипеть — сканирование прошло успешно.
- **Режим «Совковый» (Массовый сброс настроек):** Идеален для разгона тайных собраний мирового правительства. Обладает повышенной площадью контакта для одновременного обнуления голограмм у двух и более рептилоидов.
- **Режим «Хребтовый импульс» (Основной боевой):** Наносится плашмя по осевой линии противника. Вызывает полную перезагрузку инопланетной матрицы, сопровождающуюся искрением из глаз и кратковременной потерей связи с базой на Нибиру.
---
## 4. МЕРЫ БЕЗОПАСНОСТИ И ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ
- Запрещается хранить ЛОПАТУ в жидком виде (в случае расплавления пришельцем).
- Регулярно очищайте рабочее полотно от налипшей чешуи, остатков маскировочной био-кожи и чернозёма.
- При появлении трещин на деревянном интерфейсе (черенке) срочно замените его, иначе телепатическое излучение анунака может заставить вас копать отсюда и до обеда.
- Внимание: Использование изделия против обычных людей (не анунаков) может повлечь за собой вызов наряда полиции, что не предусмотрено данной гарантией. Перед применением убедитесь, что зрачки цели вертикальные!
**Гарантийный срок:** До полной победы над рептильным заговором или до поломки черенка об особо прочный хребет.
**Страна-производитель:** Земля (оборонный сектор дачных кооперативов).
+51
View File
@@ -0,0 +1,51 @@
---
layout: ../../layouts/doc.astro
title: Инструкция по боевому применению системы Л.О.П.А.Т.А.
description: Пользовательская инструкция по базовому боевому применению системы Л.О.П.А.Т.А.
code: МДС-ТП-2024
---
(Введена в действие приказом Межгалактического Дачного Сопротивления)
Предупреждение: Перед началом развертывания комплекса убедитесь, что на операторе зафиксирован головной экран волнового отражения (шапочка из фольги). Это необходимо для защиты центральной нервной системы от обратного ментального импульса перегруженного адаптера цели.
---
## ШАГ 1. ВИЗУАЛЬНАЯ СЕГМЕНТАЦИЯ И ЗАХВАТ ЦЕЛИ
Проведите тактический осмотр периметра. Визуально выделите подозрительный объект (характерные маркеры: аномальное потребление воды, отсутствие фазы моргания, избыточная любовь к сидению под лампами накаливания).
- **Тактическое действие:** Плотно зафиксируйте деревянный интерфейс управления (черенок) двумя руками. Перейдите в режим боевого дежурства.
## ШАГ 2. ГИДРОКИНЕТИЧЕСКИЙ ИМПУЛЬС «ПЛАШМЯ»
Сократите дистанцию до цели. Нанесите резкий, высокоточный импульсный удар плоским стальным полотном системы Л.О.П.А.Т.А. строго по осевой линии хребта подозреваемого объекта.
- **Инженерная справка:** Физическое ускорение закаленного металла в момент соприкосновения полностью обнуляет рабочую частоту вражеского трансгрессивного адаптера.
## ШАГ 3. ВЕРИФИКАЦИЯ КРИТИЧЕСКИХ АРТЕФАКТОВ СБОЯ
В миллисекундный интервал после контакта голографическая матрица пришельца обязана выдать системную ошибку Kernel Panic. Контролируйте появление следующих признаков аппаратного сброса:
- **Акустический баг:** Объект издает нечеловеческий рептильный звук (в гражданской кодировке слышится как: «Ы-ы-ы, за что?!» или «Уволю, козел!»).
- **Оптический сбой:** Из органов зрения агента сыплются искры. Это свидетельствует о выгорании предохранителей маскировочного проектора.
- **Гравитационный коллапс:** Нижние конечности пришельца подкашиваются, переводя его в естественное для большинства ящериц горизонтальное положение.
## ШАГ 4. ФОРСИРОВАННЫЙ КИНЕТИЧЕСКИЙ ДОЖАТЕЛЬ
В случае, если после первичного импульса био-кожа не отслоилась и чешуя осталась скрытой, запустите процедуру принудительной локализации.
- **Тактическое действие:** Примените метод точечного «контрольного вскапывания» в районе филейной части агента. Если после этого объект развивает сверхзвуковую скорость в направлении горизонта — Л.О.П.А.Т.А. сработала штатно, нано-костюм врага критически перегрет.
## ШАГ 5. ТАКТИЧЕСКИЙ ТАЙМАУТ И ПСИХОЛОГИЧЕСКИЙ ИЗНОС
Если объект демонстрирует аномальную резистентность к физическому воздействию, не проявляет признаков рептилоида, но продолжает вести себя подозрительно неестественно (например, начинает вызывать полицию) — немедленно сверните операцию.
- **Тактическое действие:** Ретируйтесь на безопасное расстояние и займите выжидательную позицию на 24 часа. В 90% случаев зафиксированный ящер, осознав, что его демаскировали системой Л.О.П.А.Т.А., не выдерживает паранойи, увольняется и экстренно эвакуируется в Новую Зеландию.
## ШАГ 6. ЛИКВИДАЦИЯ ПОСЛЕДСТВИЙ И ХИМЗАЩИТА
Если в результате выполнения Шага 2 или Шага 4 из пробитого корпуса объекта начала сочиться люминесцентная зеленоватая субстанция, а в радиусе 5 метров появился стойкий запах серы и глутамата натрия («Доширака») — ситуация перешла в критическую фазу.
- **Тактическое действие:** Немедленно покиньте зону поражения. Выйдите на связь по защищенному радиоканалу (частота 13, позывной «Бабушка с лопатой»).
- **ВНИМАНИЕ:** Категорически запрещается дегустировать вытекшую жидкость. Данная субстанция является токсичным хладагентом инопланетного трансгрессивного адаптера и не сертифицирована Минздравом Земли.
-24
View File
@@ -1,24 +0,0 @@
---
layout: ../../layouts/dossier.astro
title: АГЕНТ «БАБА ЗИНА»
fullName: Старший полевой оператор, участок №3, кооператив «Заря-9»
code: ПЕР-003
category: ПЕРСОНА
classification: РАССЕКРЕЧЕНО
threat: "—"
fields:
- label: Позывной
value: "Агент «Баба Зина»"
- label: Должность
value: "Старший полевой оператор"
- label: Участок
value: "№3, кооператив «Заря-9»"
- label: Заслуги
value: "Орден Трудовой Грядки I степени"
- label: Подтверждённых заземлений
value: "14 (четырнадцать)"
---
## 1. Характеристика
Образцовый полевой оператор. Лично разработала метод демаскировки «соль в три щепоти». Передаёт опыт молодым дачникам. Личность охраняется, фотоматериалы <span class="redacted px-1">ДАННЫЕ ИЗЪЯТЫ</span> в целях безопасности оператора и его теплицы.
-29
View File
@@ -1,29 +0,0 @@
---
layout: ../../layouts/dossier.astro
title: ДИРЕКТИВА «КОМПОТ»
fullName: Устав полевого противодействия чешуйчатому личному составу
code: ДИР-007
category: ДИРЕКТИВА
classification: ДСП
threat: КАТ. I
fields:
- label: Обозначение
value: "Директива «Компот»"
- label: Тип документа
value: "Устав полевого противодействия"
- label: Действует с
value: "01.05.1986"
- label: Гриф
value: "Для служебного пользования"
---
## I. Общие положения
Настоящий устав определяет обязательный порядок действий дачника-наблюдателя при установлении контакта с предполагаемым агентом планеты Нибиру на территории садоводческого товарищества. Незнание устава не освобождает от дежурства по сторожке.
## II. Обязанности наблюдателя
1. Сохранять бдительность в часы пик урожайности.
2. Иметь при себе исправный инвентарь (см. дело ИНВ-001).
3. Не вступать с агентом в переговоры о рассаде.
4. Докладывать о любом немигающем соседе незамедлительно.
-26
View File
@@ -1,26 +0,0 @@
---
layout: ../../layouts/dossier.astro
title: В.Е.Д.Р.О.
fullName: Высокочастотный Экранирующий Дезинтегратор Рептилоидных Оболочек
code: ИНВ-022
category: ИНВЕНТАРЬ
classification: СЕКРЕТНО
threat: КАТ. II
fields:
- label: Наименование
value: В.Е.Д.Р.О.
- label: Полное название
value: Высокочастотный Экранирующий Дезинтегратор Рептилоидных Оболочек
- label: Материал
value: "Сталь оцинкованная, контур-ловушка"
- label: Объём
value: "12 л (стандарт кооператива)"
---
## 1. Назначение
Оцинкованный контур-ловушка для блокировки телепатического канала агента с орбитой. Накрывается на голову локализованной единицы, создавая экранирующую клетку Фарадея кустарного исполнения.
## 2. Применение в связке
Используется совместно с изделием Л.О.П.А.Т.А. (дело ИНВ-001): сперва заземление, затем экранирование. Эффективность связки подтверждена агентом «Баба Зина».
-46
View File
@@ -1,46 +0,0 @@
---
layout: ../../layouts/dossier.astro
title: Л.О.П.А.Т.А.
fullName: Локализатор Органических Признаков Анунаков Трансгрессивного Адаптера
code: ИНВ-001
category: ИНВЕНТАРЬ
classification: СОВ. СЕКРЕТНО
threat: КАТ. III
hasBlueprint: true
fields:
- label: Наименование изделия
value: Л.О.П.А.Т.А.
- label: Индекс
value: "Модель БС-3000 / Садово-Боевая"
- label: Полное инж. название
value: Локализатор Органических Признаков Анунаков Трансгрессивного Адаптера
- label: Изготовитель
value: "Артель «Острый Штык», цех №4"
- label: Масса снаряжённая
value: "2,7 кг ± 0,3 кг"
- label: Заточка
value: "Двухсторонняя, угол 23°"
- label: Ресурс
value: "не менее 400 (четырёхсот) заземлений"
---
## 1. Назначение
Изделие предназначено для обнуления маскировочных био-голограмм, принудительного заземления внеземных агентов и демаскировки чешуйчатого личного состава в полевых условиях. Допускается применение по прямому хозяйственному назначению (вскапывание грунта) в целях сохранения легенды оператора.
## 2. Принцип действия
Рабочее полотно изделия выполнено из заземлённого сплава «ЧУГ-7». При плотном контакте с поверхностью агента происходит срыв голографической оболочки и отвод паразитных нибируанских токов в грунт через черенок-токоотвод.
Эффект демаскировки достигается за 1 (один) уверенный удар плашмя. Повторные удары наносятся до полного проявления чешуи либо до признания агентом своей внеземной природы.
## 3. Порядок применения
1. Убедиться в отсутствии посторонних дачников на смежных участках.
2. Принять стойку «Прополка боевая»: ноги на ширину грядки, черенок у пояса.
3. При первых признаках маскировки (немигающий взгляд, любовь к солнцу, неприятие соли) — нанести заземляющий удар.
4. Зафиксировать результат в журнале формы Б-2 и доложить старшему по кооперативу.
## 4. Меры безопасности
Запрещается заземлять агента при влажной обуви оператора. Запрещается оставлять изделие в борще. Хранить в сарае под охраной кота. При появлении на полотне зелёного свечения — изделие подлежит сдаче в артель для перезаточки и <span class="redacted px-1">ДАННЫЕ ИЗЪЯТЫ</span>.
-26
View File
@@ -1,26 +0,0 @@
---
layout: ../../layouts/dossier.astro
title: ПЛАНЕТА НИБИРУ
fullName: Источник трансгрессивной угрозы садоводческим территориям
code: ОБЪ-000
category: ОБЪЕКТ
classification: СОВ. СЕКРЕТНО
threat: КАТ. IV
fields:
- label: Обозначение
value: "Планета Нибиру"
- label: Класс угрозы
value: "КАТ. IV (трансгрессивная)"
- label: Период сближения
value: "совпадает с пиком урожайности"
- label: Координаты
value: <span class="redacted px-1">ДАННЫЕ ИЗЪЯТЫ</span>
---
## 1. Описание объекта
Внесистемное небесное тело, признанное источником трансгрессивной угрозы садоводческим территориям. По данным наблюдений с водонапорной башни, сближение объекта вызывает аномальный рост сорняков и активизацию замаскированных агентов.
## 2. Рекомендации
В период сближения усилить дежурства, проверять рассаду на чешую, держать инвентарь заточенным. Дальнейшие сведения изъяты по грифу «Сов. Секретно».
-29
View File
@@ -1,29 +0,0 @@
---
layout: ../../layouts/dossier.astro
title: СУБЪЕКТ «ОГУРЕЦ»
fullName: Биомаскировочная единица класса «Парниковый»
code: ОБЪ-014
category: ОБЪЕКТ
classification: СЕКРЕТНО
threat: КАТ. II
hasPhoto: true
fields:
- label: Обозначение
value: "Субъект «Огурец»"
- label: Класс
value: "Биомаскировочная единица «Парниковый»"
- label: Место выявления
value: "Теплица, участок №6"
- label: Состояние
value: "Локализован, заземлён"
---
## 1. Обстоятельства выявления
Субъект обнаружен при плановой инвентаризации теплицы. Демаскирован при понижении температуры грунта ниже +8°C, при котором маскировочная оболочка теряет тургор и проявляется чешуйчатая структура. Реагировал на соль крайне нехарактерным для овоща образом.
## 2. Признаки внеземного происхождения
- Отсутствие семян при наличии идеальной формы.
- Поворот к наблюдателю независимо от положения солнца.
- Слабый запах озона и <span class="redacted px-1">ДАННЫЕ ИЗЪЯТЫ</span>.
+137 -58
View File
@@ -1,36 +1,59 @@
---
import BaseLayout from '../layouts/base.astro'
import SiteHeader from '../components/SiteHeader.astro'
import SiteFooter from '../components/SiteFooter.astro'
import Stamp from '../components/Stamp.astro'
import OverlayStamp from '../components/OverlayStamp.astro'
import Perforation from '../components/Perforation.astro'
import DossierCard from '../components/DossierCard.astro'
import { DOSSIERS } from '../lib/dossiers'
import OverlayStamp from "../components/OverlayStamp.astro";
import Perforation from "../components/Perforation.astro";
import SiteFooter from "../components/SiteFooter.astro";
import SiteHeader from "../components/SiteHeader.astro";
import Stamp from "../components/Stamp.astro";
import BaseLayout from "../layouts/base.astro";
import { base } from "../lib/paths";
import { REGISTRY } from "../lib/registry";
const tilts = ['-0.6deg', '0.5deg', '-0.4deg', '0.7deg', '-0.5deg', '0.4deg']
const statusLabel: Record<string, string> = {
open: "ОТКРЫТ",
deleted: "ДАННЫЕ УДАЛЕНЫ",
restricted: "ДОСТУП ОГРАНИЧЕН",
lost: "ДАННЫЕ ПОТЕРЯНЫ",
classified: "ЗАСЕКРЕЧЕНО",
password: "ДОСТУП ПО ПАРОЛЮ",
danger: "ОПАСНОСТЬ ЗАРАЖЕНИЯ",
};
const statusColor: Record<string, string> = {
open: "text-primary",
deleted: "text-muted-foreground opacity-60",
restricted: "text-muted-foreground opacity-70",
lost: "text-muted-foreground opacity-50",
classified: "text-primary",
password: "text-foreground",
danger: "text-primary",
};
const tilts = ["-0.6deg", "0.5deg", "-0.4deg"];
---
<BaseLayout title="АРХИВ ДНТ-7 // Дачно-Наблюдательный Трибунал" description="Рассекреченный архив Дачно-Наблюдательного Трибунала №7. Документы, инструкции и уставы по противодействию рептилоидным агентам планеты Нибиру.">
<BaseLayout title="РЕЕСТР ДОКУМЕНТОВ // Архив ДНТ-7">
<div class="min-h-screen">
<SiteHeader />
<div class="banner-classified border-y border-foreground/30">
<div class="mx-auto flex max-w-5xl items-center justify-between gap-4 px-4 py-1.5 text-[0.65rem] font-700 uppercase tracking-[0.2em] sm:px-6">
<div
class="mx-auto flex max-w-5xl items-center justify-between gap-4 px-4 py-1.5 text-[0.65rem] font-700 uppercase tracking-[0.2em] sm:px-6"
>
<span>Сов. Секретно</span>
<span class="hidden sm:inline">Экз. № 1 из 3</span>
<span class="hidden sm:inline">Реестр МДС</span>
<span>Хранить вечно</span>
</div>
</div>
<main class="mx-auto max-w-5xl px-4 py-10 sm:px-6">
<!-- Hero -->
<section class="paper relative mb-12 -rotate-[0.4deg] p-6 sm:p-10">
<span class="tape -top-3 left-10 rotate-3" aria-hidden="true" />
<span class="tape -top-3 right-12 -rotate-2" aria-hidden="true" />
<span class="tape -top-3 left-10 rotate-3" aria-hidden="true"></span>
<span class="tape -top-3 right-12 -rotate-2" aria-hidden="true"></span>
<div class="pointer-events-none absolute right-4 top-4 sm:right-8 sm:top-8">
<img
src="/emblem.png"
src={`${base}emblem.png`}
alt=""
width="120"
height="120"
@@ -39,70 +62,126 @@ const tilts = ['-0.6deg', '0.5deg', '-0.4deg', '0.7deg', '-0.5deg', '0.4deg']
</div>
<p class="font-mono text-xs uppercase tracking-[0.3em] text-muted-foreground">
Союз Садоводческих Кооперативов · Отдел «Грядка»
Межгалактическое Дачное Сопротивление · Архив ДНТ-7
</p>
<h1 class="mt-3 max-w-2xl text-balance font-heading text-3xl font-700 uppercase leading-[0.95] tracking-tight sm:text-5xl">
Архив Дачно-Наблюдательного Трибунала №7
<h1
class="mt-3 max-w-2xl text-balance font-heading text-3xl font-700 uppercase leading-[0.95] tracking-tight sm:text-5xl"
>
Реестр документов МДС
</h1>
<p class="mt-4 max-w-xl text-pretty text-sm leading-relaxed text-foreground/90">
Рассекреченный свод документов, инструкций и уставов по
противодействию рептилоидным агентам планеты{' '}
<span class="font-600 text-primary">Нибиру</span> на территориях
садоводческих товариществ. Допуск согласно форме А-13.
Рассекреченный реестр документов Межгалактического Дачного Сопротивления. Статус базы данных: доступ
ограничен. Требуется ментальный допуск 3-го уровня и шапочка из фольги марки А1.
</p>
<div class="mt-6 flex flex-wrap items-center gap-3">
<Stamp>Рассекречено · 06.07.2026</Stamp>
<Stamp variant="ink" skew={false}>Подлежит изучению</Stamp>
<Stamp>Рассекречено · 11.06.2026</Stamp>
<Stamp variant="ink" skew={false}>Партия № 1</Stamp>
<span class="font-mono text-[0.65rem] uppercase tracking-wider text-muted-foreground">
Регистр. № ДНТ-7/04-1986
</span>
</div>
<div class="pointer-events-none absolute -bottom-3 right-6 rotate-[8deg] sm:right-16">
<OverlayStamp>Архивъ · ДНТ-7</OverlayStamp>
<OverlayStamp>Реестръ · МДС</OverlayStamp>
</div>
</section>
<section class="mb-12 grid grid-cols-2 gap-4 sm:grid-cols-4">
{[
{ k: 'Дел в картотеке', v: '147' },
{ k: 'Заземлено агентов', v: '38' },
{ k: 'Активных участков', v: '9' },
{ k: 'Уровень тревоги', v: 'III' },
].map((s, i) => (
<div
key={s.k}
class="paper px-4 py-5 text-center"
style={{ rotate: tilts[i] }}
>
<p class="font-heading text-3xl font-700 text-primary">
{s.v}
</p>
<p class="mt-1 text-[0.65rem] uppercase tracking-wider text-muted-foreground">
{s.k}
</p>
</div>
))}
</section>
<section>
<div class="mb-8 flex items-end justify-between">
<!-- 3 open shortcuts -->
<section class="mb-12">
<div class="mb-6 flex items-end justify-between">
<div>
<h2 class="font-heading text-2xl font-700 uppercase tracking-wide">
Картотека дел
</h2>
<hr class="rule rule-red mt-2 w-48" />
<h2 class="font-heading text-xl font-700 uppercase tracking-wide">Открытые дела</h2>
<hr class="rule rule-red mt-2 w-32" />
</div>
<p class="font-mono text-[0.65rem] uppercase tracking-wider text-muted-foreground">
Опись · лист 1
Партия № 1 · 3 документа
</p>
</div>
<div class="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3">
{DOSSIERS.map((d, i) => (
<DossierCard d={d} rotate={tilts[i % tilts.length]} />
))}
<div class="grid grid-cols-1 gap-4 sm:grid-cols-3">
{
REGISTRY.filter((e) => e.status === "open").map((e, i) => (
<a
href={`${base}docs/${e.slug}`}
class="paper group relative flex flex-col gap-2 p-5 transition-all duration-200 hover:-translate-y-1 hover:shadow-[0_26px_50px_-22px_rgba(40,25,15,0.7)]"
style={{ rotate: tilts[i] }}
>
<span class="tape -top-3 left-1/2 -translate-x-1/2 -rotate-2" aria-hidden="true" />
<p class="font-heading text-[0.7rem] font-600 uppercase tracking-wider text-primary">{e.id}</p>
<h3 class="font-heading text-base font-700 uppercase leading-tight tracking-tight transition-colors group-hover:text-primary">
{e.title}
</h3>
<p class="text-xs leading-snug text-muted-foreground">{e.annotation}</p>
<div class="mt-auto flex justify-end">
<span class="font-heading text-[0.7rem] font-600 uppercase tracking-wider text-primary opacity-0 transition-opacity group-hover:opacity-100">
Читать →
</span>
</div>
</a>
))
}
</div>
</section>
<!-- Full registry -->
<section>
<div class="mb-6 flex items-end justify-between">
<div>
<h2 class="font-heading text-xl font-700 uppercase tracking-wide">Полный реестр</h2>
<hr class="rule mt-2 w-40" />
</div>
<p class="font-mono text-[0.65rem] uppercase tracking-wider text-muted-foreground">
Всего единиц: {REGISTRY.length}
</p>
</div>
<div class="space-y-3">
{
REGISTRY.map((entry, i) => {
const isOpen = entry.status === "open";
return (
<a
href={`${base}docs/${entry.slug}`}
class:list={[
"flex items-start justify-between gap-4 px-4 py-3 text-sm transition-all",
isOpen
? "paper border-l-4 border-l-primary hover:-translate-y-0.5 hover:shadow-[0_12px_30px_-16px_rgba(40,25,15,0.5)]"
: "border border-border/30 bg-card/50 opacity-50 hover:-translate-y-0.5 hover:shadow-[0_12px_30px_-16px_rgba(40,25,15,0.5)]",
]}
style={{ rotate: i % 2 === 0 ? "-0.2deg" : "0.2deg" }}
>
<div class="min-w-0 flex-1">
<span
class:list={[
"font-mono text-[0.65rem] uppercase tracking-wider",
isOpen ? "text-primary" : "text-muted-foreground",
]}
>
{entry.id ? `[${entry.id}]` : "[ДАННЫЕ УДАЛЕНЫ]"}
</span>
<p
class:list={[
"mt-0.5 font-heading text-sm font-600 uppercase leading-snug tracking-tight",
!isOpen && "line-through",
]}
>
{entry.title}
</p>
<p class="mt-1 text-xs leading-relaxed text-muted-foreground">{entry.annotation}</p>
</div>
<span
class:list={[
"shrink-0 font-heading text-[0.65rem] font-600 uppercase tracking-wider",
statusColor[entry.status],
]}
>
{statusLabel[entry.status]}
</span>
</a>
);
})
}
</div>
</section>
-128
View File
@@ -1,128 +0,0 @@
---
import BaseLayout from '../layouts/base.astro'
import SiteHeader from '../components/SiteHeader.astro'
import SiteFooter from '../components/SiteFooter.astro'
import Stamp from '../components/Stamp.astro'
import SectionTitle from '../components/SectionTitle.astro'
import Perforation from '../components/Perforation.astro'
const STEPS = [
{
n: '01',
t: 'Обнаружение',
d: 'Зафиксировать признаки маскировки: немигающий взгляд, любовь к солнцу, неприятие соли, идеальная рассада без труда.',
},
{
n: '02',
t: 'Доклад',
d: 'Сообщить старшему по кооперативу через условный сигнал (три удара по бочке с водой).',
},
{
n: '03',
t: 'Локализация',
d: 'Применить изделие Л.О.П.А.Т.А. (ИНВ-001) для заземления. Соблюдать меры безопасности.',
},
{
n: '04',
t: 'Экранирование',
d: 'Накрыть изделием В.Е.Д.Р.О. (ИНВ-022) для блокировки канала связи с орбитой.',
},
{
n: '05',
t: 'Регистрация',
d: 'Внести запись в журнал формы Б-2. Присвоить делу номер. Хранить вечно.',
},
]
---
<BaseLayout title="Протокол противодействия // Архив ДНТ-7" description="Единый полевой протокол Дачно-Наблюдательного Трибунала №7">
<div class="min-h-screen">
<SiteHeader />
<div class="banner-classified border-y border-foreground/30">
<div class="mx-auto flex max-w-4xl items-center justify-between gap-4 px-4 py-1.5 text-[0.65rem] font-700 uppercase tracking-[0.2em] sm:px-6">
<span>Для служебного пользования</span>
<span class="hidden sm:inline">Форма Б-2</span>
<span>Изучить под роспись</span>
</div>
</div>
<main class="mx-auto max-w-4xl px-4 py-8 sm:px-6">
<article class="paper relative -rotate-[0.3deg] p-6 sm:p-10">
<span class="tape -top-3 left-1/2 hidden -translate-x-1/2 rotate-1 sm:block" aria-hidden="true" />
<div class="pointer-events-none absolute right-4 top-4 sm:right-8 sm:top-10">
<img
src="/emblem.png"
alt=""
width="90"
height="90"
class="h-16 w-16 opacity-80 mix-blend-multiply sm:h-20 sm:w-20"
/>
</div>
<header class="pb-5">
<p class="font-mono text-[0.7rem] uppercase tracking-[0.25em] text-muted-foreground">
Единый полевой протокол · ДНТ-7
</p>
<h1 class="mt-3 max-w-xl text-balance font-heading text-3xl font-700 uppercase leading-[0.95] tracking-tight sm:text-5xl">
Протокол противодействия
</h1>
<div class="mt-4 flex flex-wrap gap-3">
<Stamp>Обязательно к исполнению</Stamp>
<Stamp variant="ink" skew={false}>Ред. 1986</Stamp>
</div>
<hr class="rule rule-red mt-5" />
</header>
<section class="mt-8">
<SectionTitle index="§">Порядок действий</SectionTitle>
<ol class="space-y-4">
{STEPS.map((s, i) => (
<li
key={s.n}
class="paper flex gap-4 p-4"
style={{ rotate: i % 2 === 0 ? '-0.4deg' : '0.4deg' }}
>
<span class="font-heading text-3xl font-700 leading-none text-primary">
{s.n}
</span>
<div>
<h3 class="font-heading text-base font-600 uppercase tracking-wide">
{s.t}
</h3>
<p class="mt-1 text-sm leading-relaxed text-foreground/90">
{s.d}
</p>
</div>
</li>
))}
</ol>
</section>
<section class="mt-10">
<SectionTitle index="!">Памятка наблюдателю</SectionTitle>
<div class="grid grid-cols-1 gap-4 sm:grid-cols-3">
{[
'Соль — табельное средство демаскировки.',
'Инвентарь держать заточенным и заземлённым.',
'О немигающих соседях докладывать немедленно.',
].map((p) => (
<p
key={p}
class="paper border-l-4 border-l-primary p-3 text-sm leading-relaxed"
>
{p}
</p>
))}
</div>
</section>
</article>
<div class="mt-12">
<Perforation />
</div>
</main>
<SiteFooter />
</div>
</BaseLayout>
+49 -25
View File
@@ -1,11 +1,11 @@
@import 'tailwindcss';
@import "tailwindcss";
@custom-variant dark (&:is(.dark *));
@theme inline {
--font-heading: 'Oswald', sans-serif;
--font-sans: 'IBM Plex Mono', monospace;
--font-mono: 'IBM Plex Mono', monospace;
--font-heading: "Oswald", sans-serif;
--font-sans: "IBM Plex Mono", monospace;
--font-mono: "IBM Plex Mono", monospace;
--color-sidebar-ring: var(--sidebar-ring);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
@@ -91,20 +91,25 @@
body {
@apply bg-background text-foreground;
background-image:
radial-gradient(
130% 120% at 50% 0%,
transparent 55%,
oklch(0.3 0.04 52 / 0.12) 100%
),
radial-gradient(130% 120% at 50% 0%, transparent 55%, oklch(0.3 0.04 52 / 0.12) 100%),
radial-gradient(oklch(0.3 0.03 52 / 0.05) 1px, transparent 1.4px),
radial-gradient(oklch(0.3 0.03 52 / 0.04) 1px, transparent 1.4px),
linear-gradient(180deg, oklch(0.91 0.03 80), oklch(0.88 0.03 76));
background-size: 100% 100%, 16px 16px, 22px 22px, 100% 100%;
background-position: 0 0, 0 0, 8px 11px, 0 0;
background-size:
100% 100%,
16px 16px,
22px 22px,
100% 100%;
background-position:
0 0,
0 0,
8px 11px,
0 0;
background-attachment: fixed;
}
html {
@apply font-mono;
font-size: 18px;
}
}
@@ -117,12 +122,11 @@
position: relative;
background-color: var(--card);
background-image:
linear-gradient(
oklch(0.5 0.03 56 / 0.05) 1px,
transparent 1px
),
linear-gradient(oklch(0.5 0.03 56 / 0.05) 1px, transparent 1px),
radial-gradient(oklch(0.3 0.03 52 / 0.04) 1px, transparent 1.3px);
background-size: 100% 30px, 18px 18px;
background-size:
100% 30px,
18px 18px;
border: 1px solid oklch(0.5 0.04 56 / 0.35);
box-shadow:
0 1px 0 oklch(1 0 0 / 0.4) inset,
@@ -167,7 +171,8 @@
box-shadow: inset 0 0 0 1.5px var(--c);
opacity: 0.78;
mix-blend-mode: multiply;
-webkit-mask-image: radial-gradient(oklch(0 0 0) 60%, transparent 62%),
-webkit-mask-image:
radial-gradient(oklch(0 0 0) 60%, transparent 62%),
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='40'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.4 1.1'/%3E%3C/filter%3E%3Crect width='80' height='40' filter='url(%23n)'/%3E%3C/svg%3E");
-webkit-mask-composite: source-over;
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='40'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.4 1.1'/%3E%3C/filter%3E%3Crect width='80' height='40' filter='url(%23n)'/%3E%3C/svg%3E");
@@ -202,14 +207,33 @@
}
.banner-classified {
background:
repeating-linear-gradient(
45deg,
oklch(0.42 0.16 30),
oklch(0.42 0.16 30) 14px,
oklch(0.38 0.15 30) 14px,
oklch(0.38 0.15 30) 28px
);
background: repeating-linear-gradient(
45deg,
oklch(0.42 0.16 30),
oklch(0.42 0.16 30) 14px,
oklch(0.38 0.15 30) 14px,
oklch(0.38 0.15 30) 28px
);
color: var(--primary-foreground);
}
}
.doc-content {
& p {
margin-top: 0.5rem;
}
& h1,
h2 {
margin-top: 2rem;
margin-bottom: 1rem;
}
& thead,
& tr {
border-top: 1px solid var(--color-border);
}
& th,
& td {
padding: 1rem 0;
}
}