# Utilizarea site-ului și a pachetului de referințe

## Pornire din rădăcina proiectului

Site-ul este o aplicație **SvelteKit**, cu componente **shadcn-svelte** și scene **Three.js**. Rulează comenzile din directorul repository-ului care conține `package.json`, nu din folderul de referințe:

Proiectul folosește **pnpm 12.5.1**, versiunea fixată în `package.json`.

```sh
pnpm install
pnpm run dev
```

Deschide adresa afișată de Vite la ruta `/`. Pentru build și verificarea locală a build-ului:

```sh
pnpm run build
pnpm run preview
```

`preview` servește build-ul deja generat; nu este un server de producție. Galeria originală offline este [referinte.html](referinte.html), separată de aplicație.

### Unde se modifică site-ul

Toate căile de mai jos sunt relative la rădăcina repository-ului:

- `src/routes/+page.svelte`: pagina, catalogul, filtrele și detaliile obiectivului;
- `src/lib/site.css`: stilul vizual al atlasului;
- `src/lib/viewer.js`: încărcarea GLB/glTF, scena Three.js și controlul camerei;
- `src/lib/atlas-map.js`: harta Leaflet și marcajele GPS;
- `static/obiective-romania/catalog.json`: datele obiectivelor;
- `static/obiective-romania/<folder>/`: fotografiile și referințele fiecărui obiectiv;
- `static/models/`: modelele pe care le adaugi.

Din aceste documente aflate în `static/obiective-romania/`, [../../](../../) indică rădăcina în repository. Într-un site servit, SvelteKit publică **conținutul** directorului `static/`: pagina este `/`, catalogul este `/obiective-romania/catalog.json`, iar un fișier `static/models/castelul-bran.glb` se accesează prin `/models/castelul-bran.glb`. Prefixul `static/` nu intră în URL.

## Catalogul și extinderea spre aproximativ 100 de obiective

Catalogul are un obiect rădăcină cu metadate și un array `obiective`. Adaugă intrări reale în acel array, fără a înlocui cele existente sau metadatele de proveniență. Fiecare intrare are `id` unic și stabil, `folder`, `nume`, `localitate`, `judet`, `categorie`, `gps`, `descriere`, `surse`, `observatii` și `imagini`. `model` este opțional. Păstrează și câmpurile suplimentare de acoperire arhitecturală și proveniență existente în referințe.

Exemplu bazat pe intrarea reală Castelul Bran; fotografia de mai jos ilustrează structura, nu înlocuiește lista completă de imagini a obiectivului:

```json
{
  "folder": "01-castelul-bran",
  "id": "01-castelul-bran",
  "nume": "Castelul Bran",
  "localitate": "Bran",
  "judet": "Brașov",
  "categorie": "Castel medieval și fostă reședință regală",
  "gps": { "lat": 45.515, "lon": 25.36722222 },
  "descriere": "Castelul Bran domină o stâncă deasupra trecătorii Bran. Privilegiul de construire a fost acordat brașovenilor în 1377, iar construcția a fost finalizată în 1388, cu rol defensiv și vamal. Din 1920, castelul a devenit reședința reginei Maria.",
  "surse": [
    {
      "url": "https://bran-castle.com/pages/historical-chronology",
      "titlu": "Castelul Bran — cronologie istorică oficială"
    },
    {
      "url": "https://en.wikipedia.org/wiki/Bran_Castle",
      "titlu": "Wikipedia — Bran Castle, coordonate ale monumentului"
    }
  ],
  "observatii": [
    "Fotografia aeriană originală are numai 675 × 900 px; fișierul local păstrează rezoluția nativă, fără mărire artificială.",
    "Coordonatele sunt preluate din articolul Wikipedia despre castel; nu sunt coordonatele fotografilor."
  ],
  "imagini": [
    {
      "fisier": "imagini/01-aeriana-oblica.jpg",
      "unghi": "Vedere aeriană oblică de ansamblu: volumele castelului, acoperișurile, curtea și pintenul stâncos.",
      "tip_vedere": "aeriana",
      "sursa_url": "https://commons.wikimedia.org/wiki/File:T%C3%B6rcsv%C3%A1r,_v%C3%A1rkast%C3%A9ly_l%C3%A9gi_fot%C3%B3n.jpg",
      "original_url": "https://upload.wikimedia.org/wikipedia/commons/e/e6/T%C3%B6rcsv%C3%A1r%2C_v%C3%A1rkast%C3%A9ly_l%C3%A9gi_fot%C3%B3n.jpg",
      "download_url": "https://upload.wikimedia.org/wikipedia/commons/e/e6/T%C3%B6rcsv%C3%A1r%2C_v%C3%A1rkast%C3%A9ly_l%C3%A9gi_fot%C3%B3n.jpg?download=1",
      "autor": "Civertan",
      "licenta": "CC BY-SA 4.0",
      "licenta_url": "https://creativecommons.org/licenses/by-sa/4.0",
      "latime_px": 675,
      "inaltime_px": 900,
      "titlu_sursa": "Törcsvár, várkastély légi fotón.jpg",
      "credit": "Own work",
      "data_sursa": "2019-07-09 16:09:02"
    }
  ]
}
```

Pentru fiecare obiectiv nou, colectează mai întâi sursele, fotografiile și coordonatele reale, creează folderul local și apoi adaugă datele documentate în catalog. Nu genera intrări fictive pentru a ajunge la 100. `imagini[].fisier` este relativ la folderul obiectivului; exemplul se publică la `/obiective-romania/01-castelul-bran/imagini/01-aeriana-oblica.jpg`. Furnizează fotografii accesibile, iar pentru Bran, Peleș și Corvinilor păstrează cel puțin primele două imagini, deoarece coperta folosește a doua fotografie.

Grila afișează **12 obiective pe pagină**; filtrele și căutarea operează asupra catalogului, nu doar asupra paginii curente. Favoritele se păstrează local în browser prin `localStorage` (`roatlas.saved`), fără cont sau sincronizare; dacă stocarea este indisponibilă, rămân doar pentru vizita curentă.

## Fluxul de modelare: referințe → Blender → GLB/glTF → Three.js

Instrucțiunile de modelare și verificare sunt în [PROMPT-AGENT.md](PROMPT-AGENT.md). Agentul inspectează fotografiile, construiește geometria exterioară și materialele în Blender, documentează aproximările, redeschide `.blend` și compară randări de control cu referințele. Exportă apoi un mesh cu materiale pregătite pentru randare în **glTF 2.0**, preferabil **GLB** cu resursele incluse, și verifică exportul în viewer.

Fotografiile nu trebuie să provină din aceeași cameră sau să formeze o secvență fotogrammetrică suprapusă: sunt referințe pentru modelare. Diversitatea unghiurilor și vizibilitatea geometriei contează. Obiectivele 01–100 au acum reconstrucții exterioare generate; scara fără măsurători și suprafețele nevizibile rămân aproximări explicite, nu geometrie de releveu.

### Asocierea unui model real

1. Exportă modelul din Blender ca GLB și pune fișierul efectiv în `static/models/castelul-bran.glb`.
2. Adaugă câmpul de mai jos în intrarea existentă Castelul Bran, păstrând restul datelor:

```json
"model": {
  "url": "/models/castelul-bran.glb"
}
```

Toate modelele 01–100 sunt publicate și asociate în ambele cataloage. Pentru un obiectiv viitor, exportă și publică fișierul înainte de asociere. Opțional, `model.cameraPosition` și `model.cameraLookAt` primesc fiecare un array `[x, y, z]` cu trei numere finite. Fără ele, viewerul încadrează automat modelul. Viewerul recentrează geometria în jurul originii; coordonatele camerei sunt în acest spațiu Three.js (Y vertical), nu coordonate GPS și nici poziții din scena Blender înainte de export.

Cu `model.url`, scena este încărcată folosind [GLTFLoader](https://threejs.org/docs/pages/GLTFLoader.html); fără el, apare o **machetă procedurală demonstrativă după categoria obiectivului**, nu o reconstrucție a acelui monument. Un model care nu se poate încărca produce o eroare, nu este înlocuit pe ascuns cu un model fidel pretins. Încărcarea este la cerere, la deschiderea detaliilor, cu **o singură scenă activă**; închiderea ori schimbarea obiectivului eliberează scena.

### Modelul livrat pentru Castelul Bran

Livrabilele editabile sunt în `obiective-romania/01-castelul-bran/output/`: `model.blend`, `model.glb`, `generate_model.py`, `generate_textures.py`, materialele raster și [ipoteze.md](01-castelul-bran/output/ipoteze.md). Blender **4.5.3 LTS** a executat scriptul, a împachetat toate cele 18 imagini și a redeschis scena salvată pentru cinci randări reale de control. Comenzile de regenerare și asocierea fiecărei fotografii cu elementele observate sunt în documentul de ipoteze.

Exportul publicat în `static/models/castelul-bran.glb` are **135.801 triunghiuri**, **3.960.608 octeți** (**3,78 MiB**), nouă componente semantice și 18 imagini încorporate. Fișierul Blender comprimat are **4.633.063 octeți** (**4,42 MiB**). Față de varianta inițială, GLB este cu **93,2%** mai mic, Blender cu **94,0%**, iar numărul triunghiurilor scade cu **76,8%**. Geometria folosește **Draco nivel 10**, cu cuantizare position 16 / normal 10 / texcoord 14 biți. Texturile color sunt JPEG, normal/roughness PNG; color/normal au 512 px, acoperișul 1024 px, roughness 256 px. Scriptul verifică antetul GLB, resursele încorporate, Draco pe fiecare primitivă și atributele UV/normale. `statistics.json` înregistrează valorile exacte.

Revizia compactă păstrează volumele principale, golurile reale, coamele și nervurile. Relieful individual al țiglelor este înlocuit cu normal maps, iar bevel-urile și stânca au mai puține subdiviziuni. Au fost corectate lucarnele suspendate/intersectate cu turnulețul, racordurile coșurilor, ancorarea galeriilor, suporturile curții, coronamentul și contactul stâncii cu terenul. Scara are fundație continuă, parapete și podest aliniat cu ușa. Generatorul a executat **202 verificări ale contactelor și degajărilor**. Toate cele cinci randări au fost inspectate; forma generală și cotele rămân interpretări după fotografii, nu releveu sau calcul structural. Limitările și proveniența celor 34 de referințe sunt documentate în `ipoteze.md`.

În Chromium, modelul Draco a fost încărcat la **1440 × 1000** și **390 × 844**, inclusiv din build-ul de producție cu decoder servit de aceeași aplicație. Au fost exercitate orbitarea prin drag, zoom-ul, deplasarea cu click dreapta, vederile față/spate/de sus, selecția turnului principal și resetarea. Trecerea la fotografii și Escape elimină canvas-ul; revenirea la 3D creează o singură scenă. Închiderea în timpul decodării nu a împiedicat încărcarea concurentă, iar workerii au fost eliberați. Au fost verificate și un glTF necomprimat și macheta demo. Capturile din `output/preview/threejs-*.png` arată modelul compact.

Pe modelul Bran, atingerea unei componente afișează descrierea și conturul grupului, fără modificarea materialelor. Butoanele „Față”, „Spate” și „De sus” schimbă perspectiva. Poziția inițială Bran `[54, 34, 78]` și ținta `[0, 0, 0]` sunt în spațiul recentrat Three.js. Randarea folosește iluminare de studio PBR; diferențele față de Blender includ tonemapping-ul și sursele de lumină.

Viewport-ul mobil nu este un test pe telefon fizic. Dimensiunea Draco pe disc nu reprezintă memoria geometriei decodate; nu este garantat un buget universal de GPU sau timp de descărcare. Obiectivele 02–100 au propriile modele GLB. Intrările fără `model.url` păstrează machetele demonstrative. Fișierele Bran curente pot fi versionate direct în GitHub; versiunile mari deja comise rămân în istoricul Git până la o eventuală rescriere explicită a acestuia.

Verificarea finală a aplicației: `pnpm run check` a raportat **0 erori și 0 avertismente**, iar `pnpm run build` a reușit cu modelul publicat. Build-ul de producție a încărcat GLB-ul real prin interfața Bran, cu o singură scenă și fără excepții de pagină; captura este `output/preview/threejs-production.png`.

### Export și limite ale viewerului

- GLB poate fi obișnuit sau comprimat **Draco**. `DRACOLoader` folosește decoderul Three.js inclus de Vite și servit de aceeași aplicație, fără CDN. Workerii sunt eliberați după încheierea decodării, inclusiv când vizualizarea este închisă în timpul încărcării. **Meshopt și KTX2** nu sunt configurate. GLB este un container, nu garantează singur absența compresiei.
- Pentru `.gltf` cu fișiere `.bin` și texturi externe, păstrează structura directoarelor și căile relative din export. Dacă resursele sunt pe alt domeniu, serverul lor trebuie să permită cererile **CORS** pentru model și toate dependențele lui.
- Exportă geometria necesară și materiale PBR compatibile glTF. Texturile procedurale și nodurile Blender care nu se exportă trebuie coapte în texturi; verifică UV-urile, normalele și resursele incluse.
- Viewerul folosește **WebGL2** și depinde de browser, GPU și memorie. Nu există un buget universal sigur de poligoane sau texturi: redu detaliul inutil și rezoluția texturilor, apoi verifică modelul pe dispozitivele țintă.
- Navigarea folosește [OrbitControls](https://threejs.org/docs/pages/OrbitControls.html): drag pentru orbitare, rotiță/pinch pentru zoom și click dreapta/gest cu două degete pentru deplasare. Nu este un tur first-person și **nu sunt implementate animații** ale modelului.
- Three.js și addon-urile sunt dependențe **npm**, incluse în bundle-ul aplicației; nu necesită importmap sau CDN Three.js în browser.

## Rețea, hartă și atribuiri

Fotografiile și modelele plasate în `static/` sunt servite de aplicație. Fonturile DM Sans și Manrope sunt cerute de la **Google Fonts**, cu fonturi de rezervă dacă rețeaua nu este disponibilă. Harta încarcă la cerere **Leaflet 1.9.4 de pe CDN-ul unpkg** și tile-uri OpenStreetMap; de aceea site-ul complet nu este o aplicație offline.

Păstrează vizibilă atribuirea **© OpenStreetMap contributors** și respectă [politica oficială a tile-urilor OSM](https://operations.osmfoundation.org/policies/tiles/): afișează doar tile-urile necesare vizualizării interactive, păstrează Referer și caching-ul normal al browserului, fără prefetch, descărcări în masă ori arhive offline. Serverul public nu garantează disponibilitatea; pentru trafic care depășește politica, folosește un furnizor adecvat sau tile-uri găzduite separat.

## Unghiuri și coordonate

Etichetele imaginilor disting între fotografii de la sol, fotografii aeriene și fotografii de la înălțime. O vedere oblică de la înălțime nu este un plan ortografic/nadir și nu garantează vizibilitatea tuturor acoperișurilor. Descrierile precizează limitările fotografiilor.

Coordonatele sunt puncte de localizare ale obiectivelor în grade zecimale WGS84, în ordinea latitudine, longitudine. Nu sunt pozițiile camerelor, măsurători cadastrale, cote altimetrice sau intrări garantate pentru vizitatori. Pentru ansambluri întinse reprezintă un punct de referință, nu întregul perimetru.

## Proveniență și selecție

Imaginile sunt selectate pentru utilitatea lor geometrică și diversitatea perspectivelor, cu minimum zece fișiere locale pentru fiecare obiectiv. Paginile sursă și URL-urile descărcărilor sunt păstrate pentru identificarea și regăsirea referințelor.

Verificarea licențelor nu este un criteriu de selecție în această colectare. Datele despre licențe deja obținute pot rămâne în metadate; existența unei imagini în pachet nu confirmă drepturile de reutilizare.

`imagini[].licenta` este opțional când sursa nu a fost verificată. Site-ul acceptă aceste fotografii fără să respingă întregul catalog și afișează „Licență neînregistrată — verifică sursa”; lipsa câmpului nu înseamnă domeniu public sau permisiune de reutilizare.

## Verificări inițiale ale template-ului

- `pnpm run check`: zero erori și zero avertismente Svelte/TypeScript. `pnpm run build`: build de producție reușit; Vite semnalează dimensiunea chunk-ului Three.js, încărcat separat la explorarea unei scene.
- Chrome, desktop și viewport mobil de 390 × 844: catalogul, căutarea fără diacritice, filtrele, favoritele păstrate după reîncărcare, harta cu zece markere și explorarea cu informații au fost exercitate în browser.
- Rotirea, zoom-ul, resetarea, trecerea la fotografii și închiderea cu Escape au fost exercitate; canvas-ul este eliminat la schimbarea modului și la închidere.
- Un GLB real din [Khronos glTF Sample Assets — Box](https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/Box) a fost încărcat prin interfața unui obiectiv, folosind date temporare de verificare. Acesta nu este modelul unui monument și nu este inclus în colecție.
- Cu 100 de înregistrări temporare, primele pagini au 12 carduri, pagina a noua are patru, iar navigarea dincolo de ultima pagină este dezactivată. Datele de verificare nu au fost salvate în catalog.
- În build-ul de producție, un URL de model inexistent produce mesaj vizibil și revenire la fotografii, fără o machetă care să mascheze eroarea.

## Prima extindere: de la 10 la 30 de obiective

La prima extindere, pachetul din `obiective-romania/` și copia din `static/obiective-romania/` au ajuns la 30 de obiective și 870 de fotografii. Obiectivele 11–30 au adăugat 494 de fotografii, păstrând cele zece intrări inițiale. Verificările de mai jos documentează acea etapă. Aplicația citește numai catalogul și fotografiile publicate în `static/`.

- Toate cele 870 de fotografii au fost decodate integral și comparate cu dimensiunile din metadate; nu există duplicate SHA-256 sau trimiteri locale lipsă.
- Galeria offline a decodat 870/870 de imagini. Aplicația a încărcat catalogul complet, cu pagini de 12, 12 și 6 carduri și 30 de markere pe hartă.
- Pentru fiecare obiectiv nou au fost deschise detaliile și încărcate prima și ultima fotografie. Căutarea `timisoara`, filtrul pentru lăcașuri de cult și dialogul cu fotografii au fost exercitate; afișarea mobilă a fost inspectată la 390 × 844.
- Catalogul inițial conținea 46 de fotografii fără câmpul `licenta`, iar validarea obligatorie a acestui câmp bloca încărcarea întregii colecții. Câmpul este acum opțional, cu avertizare de proveniență în credite. O valoare numerică de licență este în continuare respinsă; lipsa câmpului este acceptată, fără atribuirea unei licențe fictive.
- `pnpm run check`: zero erori și zero avertismente. `pnpm run build`: reușit. Nu au fost generate sau validate modele Blender/GLB pentru noile obiective.

## A doua extindere: de la 30 la 50 de obiective

Patru agenți au colectat în paralel câte cinci obiective distincte, numerotate 31–50. Acestea adaugă **470 de fotografii**, între **16 și 30 pentru fiecare obiectiv**, iar colecția are **50 de obiective și 1.340 de fotografii**. Structura rămâne `descriere.md`, `metadata.json` și `imagini/`; istoricul, GPS-ul, proveniența, componentele vizibile și limitele sunt documentate în fiecare folder.

Intrările 01–30, câmpurile lor `model` și cele 930 de fișiere de referință existente au fost păstrate. Au fost copiate în `static/` numai cele 20 de foldere noi și documentele comune actualizate; galeriile păstrează secțiunile anterioare. La modificarea referințelor, actualizați ambele cataloage, galeriile, documentația și arhiva locală `obiective-romania.zip`, fără să suprascrieți lucrările paralele sau modelele existente.

- Toate cele 1.340 de fotografii au fost decodate integral și comparate cu dimensiunile metadatelor; SHA-256 nu a identificat fișiere identice. Cele 470 de fotografii noi au fost inspectate vizual, incluse în zone de modelare și legate din descrieri.
- Galeria offline a decodat **1.340/1.340 de imagini**. Build-ul de producție a încărcat 50 de obiective, cu pagini de **12, 12, 12, 12 și 2 carduri** și **50 de markere** pe hartă.
- Au fost deschise toate cele 20 de obiective noi și încărcate prima și ultima fotografie din fiecare. Căutarea `surdesti` fără diacritice și dialogul Bisericii de lemn din Șurdești au fost inspectate la **390 × 844**, fără depășirea lățimii.
- Pentru 13 obiective noi există fotografii aeriene sau de la înălțime. Vederile din galerii interioare nu sunt confundate cu imagini aeriene. Aeriana Enisala din 1969 documentează o stare istorică; pentru Roznovanu, Cozia, Șurdești și celelalte obiective fără vedere de sus, lipsa este explicită în limite.
- `pnpm run check`: **zero erori și zero avertismente**. `pnpm run build`: **reușit**. Verificarea în browser a folosit `pnpm run preview`, separat de modificările și reîncărcările serverului de dezvoltare.

Această extindere adaugă referințe, nu modele Blender/GLB noi. Drepturile de reutilizare, zonele ascunse și scara metrică rămân de verificat înaintea modelării sau publicării.

## A treia extindere: de la 50 la 100 de obiective

Patru agenți au colectat în paralel 13, 13, 12 și 12 obiective, numerotate 51–100. Cele **1.184 de fotografii noi**, câte **20–30 pentru fiecare loc**, duc colecția la **100 de obiective și 2.524 de fotografii**. ID-ul `100-palatul-cotroceni` are prefix numeric din trei cifre; ordinea catalogului este numerică, nu lexicografică.

Au fost păstrate cele 50 de intrări anterioare, câmpurile `model` și secțiunile galeriilor; în `static/` au fost copiate numai cele 50 de foldere noi și documentele comune actualizate. Nu au fost modificate modelele sau codul aplicației.

- Toate cele 2.524 de fotografii au fost decodate integral și comparate cu dimensiunile metadatelor; nu există duplicate SHA-256. Trimiterile locale și zonele celor 50 de pachete noi se rezolvă fără fișiere orfane.
- Toate cele 1.184 de fotografii noi au fost inspectate vizual prin planșe de contact și cadre individuale pentru cazurile incerte.
- Pentru 31 obiective noi există vedere aeriană sau de la înălțime; lipsurile și stările istorice sunt explicite. Arheologia conservată, remontată și reconstruită nu este prezentată drept clădire antică păstrată integral.
- Au fost corectate linkurile de licență din pachetele 64–76 după șabloanele imaginilor Commons, nu după licența din subsolul site-ului. Tipul, versiunea și jurisdicția corespund sursei; fotografiile oficiale fără licență individuală rămân marcate ca necunoscute.
- Unele surse au date contradictorii: coordonatele oficiale Plopiș și intervalele de construire Teleki sunt documentate fără rezolvare inventată. Nicula și Rohia separă bisericile istorice de etapele actuale; Cotroceni delimitează muzeul de aripa prezidențială.
- Galeria offline a decodat **2.524/2.524 de fotografii**, fără imagini lipsă. Ultima secțiune, `100-palatul-cotroceni`, a fost inspectată pe desktop și mobil.
- Build-ul de producție a afișat **100 de obiective**, opt pagini de câte **12 carduri** și ultima cu **patru**; navigarea după ultima pagină este dezactivată. Harta a afișat **100 de markere**, inclusiv marcajul cu numărul 100.
- Au fost deschise toate cele **50 de dialoguri noi**, cu prima și ultima fotografie decodate pentru fiecare. Căutarea `caldarusani` fără diacritice și dialogul cu fotografii au fost exercitate la **390 × 844**, fără depășirea lățimii.
- Cele **1.440 de fișiere de referință anterioare** au rămas identice în fiecare copie. Discrepanța preexistentă dintre metadatele Bran și câmpul `model` din catalog a fost păstrată, fără modificarea modelului.
- `pnpm run check`: **zero erori și zero avertismente**. `pnpm run build`: **reușit**. Verificarea reală în browser a folosit `pnpm run preview`.

Această extindere adaugă referințe, nu modele Blender/GLB noi. Drepturile de publicare și precizia metrică trebuie verificate înaintea reutilizării.




## Modele Blender/GLB pentru obiectivele 02–30

Cele șase conversații au livrat 29 de modele noi, cu scene editabile, generatoare, ipoteze, statistici și patru randări de control per obiectiv. Galeria are 30 de modele reale; Bran este păstrat. Inventarul și limitele sunt în [MODELE-3D.md](MODELE-3D.md). Toate cele 30 de exporturi au trecut verificările desktop și mobil din build-ul de producție; `pnpm run check` și `pnpm run build` au reușit.

## Modele Blender/GLB pentru obiectivele 31–100

Patru conversații au livrat 70 de perechi Blender/GLB noi; galeria are acum 100 de modele reale. Fișierele modelelor 01–30 sunt păstrate identic. Scenele editabile, generatoarele, randările, ipotezele și statisticile sunt în directoarele `output/` ale obiectivelor. [MODELE-3D-31-100.md](MODELE-3D-31-100.md) conține inventarul, verificările și limitele. Toate cele 100 de modele au trecut verificările desktop/mobil din build-ul de producție; `pnpm run check` și `pnpm run build` au reușit.
