diff --git a/.github/workflows/deploy-pr.yml b/.github/workflows/deploy-pr.yml index 70cb4bd..8c189ed 100644 --- a/.github/workflows/deploy-pr.yml +++ b/.github/workflows/deploy-pr.yml @@ -1,16 +1,6 @@ name: Deploy PR CI on: - issue_comment: - types: [created] - push: - branches-ignore: - - main - pull_request: - types: - - opened - - edited - - synchronize - - reopened + pull_request jobs: release: name: Deploy website @@ -27,7 +17,7 @@ jobs: - name: Build static site run: bundle exec jekyll build - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 18 - name: Install surge diff --git a/.github/workflows/teardown-pr-deployment.yml b/.github/workflows/teardown-pr-deployment.yml index 0fdabb7..607dd15 100644 --- a/.github/workflows/teardown-pr-deployment.yml +++ b/.github/workflows/teardown-pr-deployment.yml @@ -12,7 +12,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 18 - name: Install surge diff --git a/.gitignore b/.gitignore index 9e26dc8..bfe786b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,11 @@ -/_site/ -/.idea/ +_site/ +.sass-cache/ +.jekyll-cache/ +.jekyll-metadata +# Ignore folders generated by Bundler +.bundle/ +vendor/ +node_modules/ + +.idea/ +.vscode/ \ No newline at end of file diff --git a/Gemfile b/Gemfile index f90df2d..3f0d629 100644 --- a/Gemfile +++ b/Gemfile @@ -8,4 +8,4 @@ gem "jekyll" # gem "jekyll-sitemap" # gem "jekyll-feed" # gem "jekyll-seo-tag" -# end \ No newline at end of file +# end diff --git a/README.md b/README.md index 8c850b5..2f9fc37 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,210 @@ # prachtsaal.berlin -The website of Prachtsaal Studios +The website of Prachtsaal Studios. +It is developed using Jekyll and tailwindcss. -## Development +Jekyll allows you to edit markdown files, which are then compiled and integrated into a static html, javascript, and css site; Jekyll is what is called a static site generator. -Install jekyll: +tailwindcss is a css framework which allows you to define css using user friendly classes in your html. -```shell -gem install jekyll bundler + +## Content Revision + +You'd like to maintain the content of the website? Thank you! + +### events page + +The events page, found in file `events.html`, is coded up and built from other content, like the contents of the `events` and `news` folders. If you want to change the content shown, you'll want to change the content in these two folders. + +The events shown as upcoming can be found in the `events` folder. We use Jekyll's support of `posts` for events and news. This means that the file needs to have the date in the filename in the form `yyyy-mm-dd-title.md`, and Jekyll will also automatically parse this information from the file name for you, and offer it as a `date` parameter. The rest of the information that can be customized to provide titles, images, and ticket links is in the "front matter," or the section at the top between the lines with three dashes `---`; these three dashes are required, and tell Jekyll to compile and process the page. + +An preconfigured template of a markdown file can be found in `_templates/event-template.md`. + +``` +--- (1) +layout: event (2) +title: (3) +subtitle: (4) +main_image: (5) +description: (6) +quote: (7) +quote_author: (8) +quote_author_role: (9) +images: (10) + - file: (11) + caption: (12) + - file: + caption: +link: (13) +link_text: (14) +tags: portfolio (15) +--- (1) +Add your content here. (16) +``` +- (1) delineates the front matter, is required +- (2) required configuration for the framework (Jekyll) +- (3) shown in list view, and as title of event page +- (4) shown in list view, and as subtitle of event page +- (5) location of the main image, shown in list view, and on event page +- (6) description of event shown in list view, text the describes the page for search engines +- (7) event pages supports a quote as header +- (8) you can attribute the quote to an author +- (9) the quote author can also have a further descriptor +- (10) all images you wish to show at the bottom of the page should be listed here +- (11) the location of the image file. It's important that there are two spaces at the beginning of the line +- (12) the text of the image caption +- (13) a link for ticket sales, or registration, which will show as a button +- (14) the text of the button, that clicks to the link +- (15) tags are used for labeling if an event will be shown in the portfolio, with text `portfolio`. if it should not be shown in the portfolio, don't put a tag +- (16) text content for the vent + +### home page + +Much of the home page is coded up, and built from other content. However, if you'd like to change the text introducing Prachtsaal on the homepage, you can edit it in index.md. + +``` +--- (1) +layout: home (2) +title: Prachtsaal Studio (3) +subtitle: ... (4) +description: ... (5) +--- (1) +Prachtsaal (magnificent hall) stands as a nexus of arts, (6) +``` +- (1) delineates the front matter, is required +- (2) required configuration for the framework (Jekyll) +- (3) main title text for home page +- (4) subtitle text for home page +- (5) text the describes the page for search engines +- (6) text content on home page, in markdown + +If you want to change anything related to spacing and design, you'll need to change the html and/or the css. + +### people page +The people page, which is found at `people.html`, is automatically built from text files in the `_members` directory and `_data/communities.yml` file. + +#### member pages +Each member has their own markdown (`*.md`) file. The stuff at the top ("front matter") is data that can be accessed by the script that builds the people page, and each member's page. It defines text, and where relevant files are. + +``` +--- (1) +layout: member (2) +full_name: ... (3) +description: ... (4) +thumb: ... (5) +portrait: ... (6) +portfolio_image_locations: + - /assets/img/members/... (7) + - /assets/img/members/... (7) +website: https://... (8) +socials: + - https://... (9) + - https://... (9) +--- (1) + +This is the text of your personal page. (10) +``` +- (1) delineates the front matter, is required +- (2) required configuration for the framework (Jekyll) +- (3) shown in list view, and personal page +- (4) shown in list view, text the describes the page for search engines +- (5) location of image in list view +- (6) location of portrait in personal page +- (7) file location of portfolio image shown in personal page +- (8) website url +- (9) list the links to your socials +- (10) the text you want shown on your personal page + + +#### communities section + +The information for the communities section is stored as a data file in `_data/communities.yml`. It is in YAML format. Please see the desired format below. + +``` +- name: Tape Over (1) + thumb: /assets/img/communities/tapeover.jpeg (2) + website: https://tapeover.berlin/ (3) + visible: true (4) + +- name: Xemantic + thumb: /assets/img/communities/xemantic.png + website: https://xemantic.com/ + visible: true + +... +``` +- (1) The name of the organization. The dash indicates a new organization. +- (2) The logo, if available +- (3) The website to link to. +- (4) If the organization should be shown in the communities section + +If you want to change anything related to spacing and design, you'll need to change the html and/or the css. + + +## [WIP] Development + +You'd like to develop the design elements and code for the website? Thank you! + +This website is built using Jekyll and tailwindcss. Jekyll uses Liquid to process templates. Both html files and markdown files can include what's called front matter, which is a section at the top of the page with key value pairs - we use the yaml formating. + +To develop for this website, you'll need to install ruby (language Jekyll is written in), Jekyll, and node.js(used to install tailwind), and tailwind. + +### To serve the website locally + +#### Short story +While you are developing, in one terminal instance, run ``` +npm run build-css +``` +which watches for any changes, and rebuilds `styles.css`. + +In another terminal, run +``` +bundle exec jekyll serve +``` +which serves the website at http://localhost:4000/ +Any changes will be automatically deployed, though you will need to reload your website to see the changes. + +#### Long story +The way tailwind works is that it only builds and includes the css that you are using in your website. Therefore, as you build a website, you'll need to rebuild the css with tailwind, to ensure that the css classes defined in tailwind are included. Tailwind will take what's in `/assets/css/source.css` and rebuild it to `/assets/css/styles.css`. This `styles.css` is what is included into the html. If you want to customize your own css and classes, add them to `source.css` to ensure it's included in `styles.css`. The command to build to `styles.css` is documented in `package.json` as an `npm` script `buid-css`. This command will watch for changes and update `styles.css` on the fly. + +### Design considerations + +The way the website has been developed is it has anticipated that the files that non-technical contributors will want to work with are in markdown, for relative ease of editing. These pages are individual event pages, individual news pages, individual member pages, the about page, and the home page. -To run the server, run in this: -```shell -jekyll serve +Specifically: +- events are in the `/events/_posts` folder. The means that events are Jekyll posts (which have a special function in Jekyll) with the category of `events`. Event pages use the `_layouts/event.html` layout. More about Jekyll posts: https://jekyllrb.com/docs/posts/ +- news items are in the `/news/_posts` folder. This means that news are Jekyll posts, with the category of `news`. The intention is to put any announcements, such as open calls and event reports, in `news`. News pages use the `_layouts/news.html` layout. +- member pages are in the `_members` folder. `members` is a collection in Jekyll, defined in the `_config.yml` file. This means that all the data in the `_members` folder can be accessed via `site.members`. Each member has their own markdown file, which uses the `_layouts/member.html` layout. +- the about page is an example of a generic text only page, which uses the `_layouts/page.html` layout. +- the home page is a custom page, but because there is a little bit of text in it, it is a layout, that can be called by the `index.md` file. That way, the text for the home page, and the titles, can be changed relatively easily. + +What's not in markdown are the events and people pages, which compile information in other files, and layouts, which are html templates that markdown files will use, named in the front matter with the key `layout`. These html files are mostly Liquid templating language, html, and tailwind css classes. + +The events page has two sections, an upcoming events section, and an events portfolio. The upcoming events section is filtered by the `events` category (no `news` items will be considered), by date at build time (only future dates are considered), and then at load time, javascript (`/assets/js/future_events.js`) will further remove events that are in the past. The events portfolio section filters all posts (including the `news` category) on the tag `portfolio`. If a future event has been labeled with the tag `portfolio`, it will be shown in the events porfolio section. + +All the pages use the layout `default.html` - this layout includes the navigation bar and footer, and required js and css. The html for the navigation bar is at `_includes/navigation.html`, and the html for the footer is at `_includes/footer.html`. + +When you create a pull request, there are github actions that will deploy the built site to surge.sh. The url for the website is `prachtsaal-berlin-.surge.sh`. + + +### Installation + +You'll want to install ruby and node.js, if you haven't already. If you need to install either of these, here are some helpful references: + +- https://jekyllrb.com/docs/installation/ubuntu/ +- https://github.com/rubygems/rubygems?tab=readme-ov-file: you can install ruby with [rbenv](https://github.com/rbenv/rbenv) +- https://tailwindcss.com/docs/installation +- https://docs.npmjs.com/downloading-and-installing-node-js-and-npm: to install node and npm, use nvm: https://github.com/nvm-sh/nvm + +#### Setting up Jekyll +Once ruby is installed, install jekyll and bundler gems with + +``` +gem install jekyll bundler ``` -Open: http://localhost:4000/ +If you are setting up your environment, you can set up the ruby environment with + +``` +bundle install +``` diff --git a/_config.yml b/_config.yml index ffa14e5..ba91384 100644 --- a/_config.yml +++ b/_config.yml @@ -4,12 +4,14 @@ description: >- # this means to ignore newlines until "baseurl:" Neukölln's non-profit art cooperative. url: "https://prachtsaal.berlin" # the base hostname & protocol for your site, e.g. http://example.com -# Build settings -markdown: kramdown +collections: + members: + sort_by: full_name + output: true # uncomment if want member pages + +future: true + # plugins: # - jekyll-sitemap # - jekyll-seo-tag # - jekyll-feed -kramdown: - input: GFM - hard_wrap: true \ No newline at end of file diff --git a/_data/communities.yml b/_data/communities.yml new file mode 100644 index 0000000..1d2bb29 --- /dev/null +++ b/_data/communities.yml @@ -0,0 +1,49 @@ +- name: Tape Over + thumb: /assets/img/communities/tapeover.jpeg + website: https://tapeover.berlin/ + visible: true + +- name: Xemantic + thumb: /assets/img/communities/xemantic.png + website: https://xemantic.com/ + visible: true + +- name: Artist Stop Being Poor + thumb: + website: https://artiststopbeingpoor.club/ + visible: true + +- name: Creative Code Berlin + thumb: /assets/img/communities/ccb.jpeg + website: https://creativecode.berlin/ + visible: true + +- name: OPEN RNDR + thumb: /assets/img/communities/openrndr.png + website: https://openrndr.org/ + visible: true + +- name: Processing Foundation + thumb: /assets/img/communities/processingfoundation.jpeg + website: https://processingfoundation.org/ + visible: true + +- name: Toplap Berlin + thumb: /assets/img/communities/toplapberlin.png + website: https://toplap.berlin/ + visible: true + +- name: LIVECODERA + thumb: + website: https://livecodera.glitch.me/ + visible: true + +- name: School of Machines, Making, and Make Believe + thumb: /assets/img/communities/schoolofma.jpeg + website: https://www.schoolofma.org/ + visible: true + +- name: Vetro Editions + thumb: /assets/img/communities/vetro.png + website: https://vetroeditions.com/ + visible: true diff --git a/_includes/figure.html b/_includes/figure.html index ebfa75a..c93e419 100644 --- a/_includes/figure.html +++ b/_includes/figure.html @@ -1,4 +1,4 @@
- {{ include.title }} + {{ include.title }}
{{ include.title }}
diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..13ce070 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/_includes/history.html b/_includes/history.html new file mode 100644 index 0000000..aea1bf7 --- /dev/null +++ b/_includes/history.html @@ -0,0 +1,198 @@ + +

the history of the building.

+ +
+

Approximate Timeline:

+ + + + +
+
+
+ Early Jonasstraße 22 +
Early Jonasstraße 22
+
+

+ As far as I can ascertain, J22 was built in 1913. It was known as the ‘Blaue Haus’ and the Vorderhaus was, in its + time, a revolution, as it had apartments with 3 and 4 rooms. +

+
+ Early Prachtsaal +
Early Prachtsaal
+
+

+ The Tanzschule was set up by Emil August Meisel. He founded his school just after World War 1, and moved to the + Jonasstrasse around 1920and during the time of inflation a lesson cost 4.2 billion Marks. In the 1950s this was the + first dancing school on TV, and it was the first school to teach Rock ‘n Roll. In the 1980s there was a TV series + ‘Tanzschule Kaiser’, which was filmed here. +

+

+ In the 1990s the school was taken over by Tanzschule Dieter Keller, and led by Monika Keller. +

+

+ Will Meisel (died 1967) composed 8 operettas and music for 44 ‘Tonfilme’, including a song ‘Berlin bleibt doch + Berlin’. +

+
+ Tanzschule Entry guarded by two bears +
Tanzschule Entry guarded by two bears
+
+

+ The Tanzschule existed over 3 generations and for some 70 years. When Emil and Olga Meisel opened the school in + 1915, they were strict teachers. Their granddaughter Inge Meisel-Karras remembers them well: ‘Grandmother always + controlled the cash-register’. Emil and Olga had 2 sons: one of them, Inge’s father later took on the Tanzschule, + while the other one, Will Meisel, founded his own and later became the well-known composer and music publisher. +

+

+ While still a child, it was job to distribute flyers in the neighbourhood, inviting people to join the dance school. +

+
+ Tanzschule Entry +
Tanzschule Entry
+
+
+ Dancers 1 +
Günter and Ingeborg Meisel-Karras in the Prachtsälen Neukölln, 1950s, from: Rixdorfer Musen, Neinsager und Caprifischer. Musik- und Theatergeschichte aus Rixdorf und Neukölln, Berlin 1990, S. 223.
+
+

+ Inge’s father died towards the end of the war, and while not yet an adult, she took on the dance school, under the + close and strict supervision of her grandparents. Inge married Günther Karras, who taught at the school with her. In + the 1950s they were the first couple to teach dancing on TV. Generations of young Neuköllners learned proper + behaviour and dancing in the Prachtsaal. +

+
+ Ingeborg Meisel Karras +
Ingeborg Meisel Karras
+
+

+ In the tradition of the family, Inge was a strict teacher too. She kept an exact record of which dress she had worn + to which course on which day, so as not to wear the same dress twice in a row. She loved to dance, it was her form + of relaxation. She enjoyed step-dancing, and was one of the first, if not the first, to teach Rock ‘n Roll in + Berlin. As she spoke both French and English fluently, she taught herself English dance vocabulary and taught dance + at the American barracks in Berlin. For many years she was friendly with an Officer of the US Army and, when he + returned to the USA, visited him and taught Rock ‘n Roll there. +

+

+ In 1965, the Tanzsportabteilung Weiss-Gold-Casino was founded; for 29 years (1994?) it was located in the Tanzschule + Meisel-Karras, the Prachtsaal. +

+
+ Entrance to the Prachtsaal +
Entrance to the Prachtsaal
+
+

+ In 1980 the couple Meisel Karras retired and passed the school on to a former pupil, Rita Beck. +

+

+ A darker part of the Prachtsaal’s history is during the Nazi period. The Saal was a meeting point for the SA, for we + know that certainly Will Meisel joined the NSDAP Party on 1 Mai 1933. He profited personally from the dispossession + and arianisation of Jewish capital. +

+
+ Jonasstraße 22 in the Nazi period +
Jonasstraße 22 in the Nazi period
+
+
+ Prachtsaal as field hospital +
Prachtsaal as field hospital
+
+

+ +

+
+
+
+ Café Prachtsaal +
Café Prachtsaal
+
+

+ In the summer of 2012 the Café and Bar Prachtsaal moved into the front rooms of the Prachtsaal. The Café was + refurbished towards the end of 2016 and early 2017. Then it closed down. +

+
+ Der Prachtsaal in Neukölln ist eher lässig als prächtig. Hier kann man bequem frühstücken, selbst gebackenen Kuchen + essen, hausgemachte Limonade trinken, Geburtstag feiern, kickern, Bier, Long Drinks und Wein genießen und natürlich + am Sonntag gemeinsam mit anderen Tatort-Fans und Stammgästen dem Tatort-Ritual frönen und in Wohnzimmer-Atmosphäre + den Tatort gucken!
+ Dem Prachtsaal gelingt so tatsächlich der Spagat zwischen Café mit Frühstücksangebot und Bar. Sogar Mittagessen kann + man. Es stehen wechselnde Wochengerichte auf der Karte. Alle angebotenen Speisen sind hausgemacht. Den Tatort im + Prachtsaal gibt es seit vier Jahren, eine eingefleischte Fan-Gemeinde rät und fiebert mit und diskutiert über die + besten Tatort Kommissare. Neue Tatort-Fans sind jederzeit willkommen”. (07/03/2016 – Top 10 Berlin) +
+
+
+

DAN LAHAV AND THE JEWISH THEATRE

+

+ Another occupant was the Jewish theatre company Jüdisches Theater Berlin Bimah. Binah means Stage in Hebrew. This + was the first Jewish theatre company in Berlin after the war. +

+

+ "Mit der Wahl der Spielstätte in Neukölln will ich ein Zeichen für den Bezirk setzen", we’re making a statement by + choosing this new setting in this location, Dan Lahav, artistic director and manager declared to Berlin’s Morgenpost + at the time. +

+

+ Die Welt provides more information about this interesting theatre man, who died 14 September 2016. He was born in + Haifa in 1 February 1946 and was proudly Israeli. ‘I am Jewish. My work in the theatre is a homage to my relatives + who were murdered in Auschwitz, and is a bridge for all those who are interested in Jewish culture. +

+

+ The theatre in the Jonasstrasse 22 opened its doors on 14 October …,with ‘Harte Liebe’, in the presence of VIPS from + politics and cultural life. The play forcuses on the relationship between orthodox and liberal Jews and was + accompanied by Kletzmer music, tasty Jewish treats and lots of Jewish humour. He regarded the location as propitious + – his mother was called Jona! Before settling the theatre in Jonasstrasse, Lahav organized monthly events in + different locations called ‘Shabat Shalom – Jewish culture you can touch’. Participants were invited to a typical + Jewish Friday evening supper with Shabat candles, blessings, wine, and humorous Jewish stories from the likes of + Ephraim Kishon, Kurt Tucholsky, Georg Kreisler and Heinrich Heine. He was a close friend of Peter Ustinov. +

+

+ Dan Lahav’s family came from Hamburg and Lübeck. His grandfather was a successful businessman and had large premises + in Hamburg. His grandmother came from a well-to-do Lübeck family and was an oper singer. His mother Jeanette trained + as a tailor. The family moved to Antwerp, and had the long-term plan to emigrate to Palestine. But few visas were + given out for emigration. However, Jeanette was a successful sprinter and won the Hamburg short-distance race in + 1930. Her sporting prowess enabled her and some of her family to obtain a visa, Her sisters and brother were not so + fortunate and did not survive the Holocaust. +

+

+ The family opened a Café in Haifa. Dan Lahav was born into great poverty in Haifa on 1 February 1946. There was no + father, and Lahav was largely raised by his grandmother who sang him German arias every day. Thus he learned all the + important German arias by heart at an early age. After his school education, Lahav completed his military service + and fought in the Jom Kippur war. Later he studied theatre at Tel Aviv university, obtained a scholarship and + studied with Marcel Marceau before coming to Berlin, where he stayed for 2 years and built relationships with the + German theatre. On return to Israel he married and had 2 children, and in 1980 returned to Berlin, a city he loved. +

+

+ “The German-Jewish theatre is a meeting point with rich Jewish culture. It is a place of tolerance and friendship, and I hope that we will be able to play for a long time in this beautiful and exciting city. +

+

+ Dan Lahav is buried in the Jewish cemetery in Weissensee and his epitaph reads: ‘He did not die of boredom’. +

+
+
+

References

+ +
diff --git a/history/index.html b/_includes/history.md similarity index 84% rename from history/index.html rename to _includes/history.md index 3e28ec0..01b4a45 100644 --- a/history/index.html +++ b/_includes/history.md @@ -1,10 +1,7 @@ --- -layout: default -title: History of Prachtsaal --- -
-

History of Prachtsaal

-
+# the history of the building. +

Approximate Timeline:

- I can’t find accurate dates for the theatre + + +
- Early Jonasstraße 22 + Early Jonasstraße 22
Early Jonasstraße 22

@@ -28,7 +27,7 @@

Approximate Timeline:

time, a revolution, as it had apartments with 3 and 4 rooms.

- Early Prachtsaal + Early Prachtsaal
Early Prachtsaal

@@ -45,9 +44,10 @@

Approximate Timeline:

Berlin’.

- Tanzschule Entry guarded by two bears + title="Tanzschule Entry guarded by two bears" + loading="lazy">
Tanzschule Entry guarded by two bears

@@ -60,21 +60,21 @@

Approximate Timeline:

While still a child, it was job to distribute flyers in the neighbourhood, inviting people to join the dance school.

- Tanzschule Entry + Tanzschule Entry
Tanzschule Entry
- Dancers 1 + Dancers 1
Dancers 1

- nge’s father died towards the end of the war, and while not yet an adult, she took on the dance school, under the + Inge’s father died towards the end of the war, and while not yet an adult, she took on the dance school, under the close and strict supervision of her grandparents. Inge married Günther Karras, who taught at the school with her. In the 1950s they were the first couple to teach dancing on TV. Generations of young Neuköllners learned proper behaviour and dancing in the Prachtsaal.

- Ingeborg Meisel Karras + Ingeborg Meisel Karras
Ingeborg Meisel Karras

@@ -90,7 +90,7 @@

Approximate Timeline:

Meisel-Karras, the Prachtsaal.

- Entrance to the Prachtsaal + Entrance to the Prachtsaal
Entrance to the Prachtsaal

@@ -102,13 +102,14 @@

Approximate Timeline:

and arianisation of Jewish capital.

- Jonasstraße 22 in the Nazi period + Jonasstraße 22 in the Nazi period
Jonasstraße 22 in the Nazi period
- Prachtsaal as field hospital + title="Prachtsaal as field hospital" + loading="lazy">
Prachtsaal as field hospital

@@ -117,7 +118,7 @@

Approximate Timeline:

- Café Prachtsaal + Café Prachtsaal
Café Prachtsaal

@@ -187,15 +188,15 @@

DAN LAHAV AND THE JEWISH THEATRE

References

diff --git a/_includes/lightbox.html b/_includes/lightbox.html new file mode 100644 index 0000000..26090a4 --- /dev/null +++ b/_includes/lightbox.html @@ -0,0 +1,56 @@ + + +
+ + + + +
+ +
+ + + + + + + +
+ + +
+ +
+
+
+ + + + + + + diff --git a/_includes/navigation.html b/_includes/navigation.html index 21f49e8..7119e83 100644 --- a/_includes/navigation.html +++ b/_includes/navigation.html @@ -1,10 +1,23 @@ - + diff --git a/_layouts/default.html b/_layouts/default.html index f864377..10f7574 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,25 +1,43 @@ - + + - {{ page.title }} + + + {% assign prefix = "Prachtsaal Studio" %} + {% if page.title == prefix %} + {{ prefix }} + {% else %} + {{ prefix }}: {{ page.title }} + {% endif %} + {% if page.description %} {% endif %} - - - {% if page.add-style %} - - {% endif %} {% if page.add-js %} - + {% endif %} + + -{% include navigation.html %} -{{ content }} - + +
+
+ {% include navigation.html %} +
+ +
+ {{ content }} +
+ +
+ {% include footer.html %} +
+
+ + + diff --git a/_layouts/event.html b/_layouts/event.html new file mode 100644 index 0000000..638ef28 --- /dev/null +++ b/_layouts/event.html @@ -0,0 +1,51 @@ +--- +layout: default +--- +
+
+ +
+

{{ page.title }}

+ {% if page.subtitle %} +

{{ page.subtitle }}
{{ page.date | date: "%d %B %Y" }}

+ {% endif %} +
+ {% if page.quote %} +
"{{ page.quote }}"
+ {% endif %} + {% if page.quote_author %} +
{{ page.quote_author }}
+ {% if page.quote_author_role %} +
{{ page.quote_author_role }}
+ {% endif %} + {% endif %} +
+
+ +
+ {% if page.main_image %} + + {% endif %} + + +
+ {{ content | markdownify }} +
+ + {% if page.link%} + + {% endif %} + + {% if page.images%} +
+ {% for image in page.images %} + {% include figure.html src=image.file title=image.label%} + {% endfor %} +
+ {% endif %} +
+ +
+
diff --git a/_layouts/home.html b/_layouts/home.html new file mode 100644 index 0000000..554a021 --- /dev/null +++ b/_layouts/home.html @@ -0,0 +1,58 @@ +--- +layout: default +add-js: newsletter.js +--- +
+
+

{{ page.title }}

+

{{ page.subtitle }}

+
+
+ +
+ +
+ {{ content | markdownify }} +
+ + +
+ + + + + +
+ +
+ + + + + +
+

contact us

+
+
+
+ Prachtsaal Studio
+ Jonasstraße 22
+ 12053 Berlin
+
+ + + +
+ +
+
+ +
diff --git a/_layouts/member.html b/_layouts/member.html new file mode 100644 index 0000000..24c0ef4 --- /dev/null +++ b/_layouts/member.html @@ -0,0 +1,49 @@ +--- +layout: default +--- + + +{% include lightbox.html %} diff --git a/_layouts/news.html b/_layouts/news.html new file mode 100644 index 0000000..502e8f2 --- /dev/null +++ b/_layouts/news.html @@ -0,0 +1,40 @@ +--- +layout: default +--- +
+
+ +
+

{{ page.title }}

+ {% if page.subtitle %} +

{{ page.subtitle }}
{{ page.date | date: "%d %B %Y" }}

+ {% endif %} +
+ +
+ {% if page.main_image %} + + {% endif %} + + +
+ {{ content | markdownify }} +
+ + {% if page.link%} + + {% endif %} + + {% if page.images%} +
+ {% for image in page.images %} + {% include figure.html src=image.file title=image.label%} + {% endfor %} +
+ {% endif %} +
+ +
+
diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 0000000..f0b26e5 --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,19 @@ +--- +layout: default +--- + +
+
+ +
+

{{ page.title }}

+
+ +
+ {{ content | markdownify }} + +
+ +
+
+ \ No newline at end of file diff --git a/_members/abe.md b/_members/abe.md new file mode 100644 index 0000000..f002841 --- /dev/null +++ b/_members/abe.md @@ -0,0 +1,16 @@ +--- +layout: member +full_name: Abe Pazos Solatie +description: computational artist +thumb: /assets/img/members/abe/thumb-abe.jpg +portrait: /assets/img/members/abe/portrait-abe.webp +portfolio_image_locations: + - /assets/img/members/abe/aBe-ALifeCycle.webp + - /assets/img/members/abe/aBe-dave-screenshot-1.webp + - /assets/img/members/abe/aBe-ratkaisu-multiplica-render3.webp + - /assets/img/members/abe/aBe-tracing-the-line-closeup.webp +website: https://www.hamoid.com +socials: + - https://genart.social/@hamoid +--- +Abe Pazos Solatie (1975, Finland) is an artist who writes computer code to generate still, animated and interactive audiovisual works. He explores the connections between nature and algorithms by creating slow, organic, growing and decaying visuals. He has a computer science and interactive design background, is a passionate contributor to free, open-source software for the arts and performs live visuals. diff --git a/_members/chloe.md b/_members/chloe.md new file mode 100644 index 0000000..15cce6f --- /dev/null +++ b/_members/chloe.md @@ -0,0 +1,12 @@ +--- +layout: member +full_name: Chloé Mari Bellangé +description: painter +thumb: /assets/img/members/no_image.png +portrait: /assets/img/members/no_image.png +portfolio_image_locations: + - /assets/img/members/no_image.png + - /assets/img/members/no_image.png +website: +socials: +--- \ No newline at end of file diff --git a/_members/claudine.md b/_members/claudine.md new file mode 100644 index 0000000..6e22cb4 --- /dev/null +++ b/_members/claudine.md @@ -0,0 +1,15 @@ +--- +layout: member +full_name: Claudine Chen +description: multidisciplinary artist +thumb: /assets/img/members/claudine/me_lemon.jpg +portrait: /assets/img/members/claudine/portrait-claudine.jpeg +portfolio_image_locations: + - /assets/img/members/claudine/kaleidoscope_nisyros.jpg + - /assets/img/members/claudine/package-weaving.jpg + - /assets/img/members/claudine/timeinplace.png +website: https://mingness.github.io +socials: + - https://www.instagram.com/mingness +--- +Claudine enjoys playing at the intersection of art, science, hardware and software. Long-time engaged in community building, her favorite themes are equity, empathy, and human connection in the presence of systems. She is also driven to express the tensions and trade-offs experienced in real-life. She works in video, interactive media, and sculpture. diff --git a/_members/grit.md b/_members/grit.md new file mode 100644 index 0000000..9314c9b --- /dev/null +++ b/_members/grit.md @@ -0,0 +1,20 @@ +--- +layout: member +full_name: Grit Schuster +description: animator, visual and generative artist +thumb: /assets/img/members/grit/gritkit_overview.jpg +portrait: /assets/img/members/grit/gritkit_subpage.jpg +portfolio_image_locations: + - /assets/img/members/grit/gritkit_portfolio_01.jpg + - /assets/img/members/grit/gritkit_portfolio_02.jpg + - /assets/img/members/grit/gritkit_portfolio_03.jpg + - /assets/img/members/grit/gritkit_portfolio_04.jpg + - /assets/img/members/grit/gritkit_portfolio_05.jpg +website: https://gritschuster.de/ +socials: + - https://www.instagram.com/gritkitvisuals + - https://www.instagram.com/gritkit + - https://www.instagram.com/trialandtheresa +--- +Grit is a Berlin-based visual artist, working in video art, live visuals, animation, generative +art, and interactive media. She is a founding member of Trial and Theresa, a feminist collective of audio-visual artists experimenting in the field of live performance with a special emphasis on the integration and visibility of women and queer people in the electronic arts scene. diff --git a/_members/julia.md b/_members/julia.md new file mode 100644 index 0000000..da2645e --- /dev/null +++ b/_members/julia.md @@ -0,0 +1,13 @@ +--- +layout: member +full_name: Julia Thomas +description: artist, philosopher, engineer and clinician +thumb: /assets/img/members/no_image.png +portrait: /assets/img/members/no_image.png +portfolio_image_locations: + - /assets/img/members/no_image.png + - /assets/img/members/no_image.png +website: +socials: +--- +Julia is the cofounder of xemantic, a collective addressing applied philosophy as code. She also works as a doctoral candidate and ML engineer and is currently undergoing training to become a clinician in a mental hospital. \ No newline at end of file diff --git a/_members/kazik.md b/_members/kazik.md new file mode 100644 index 0000000..0da330a --- /dev/null +++ b/_members/kazik.md @@ -0,0 +1,12 @@ +--- +layout: member +full_name: Kazik Pagoda +description: computational artist +thumb: /assets/img/members/no_image.png +portrait: /assets/img/members/no_image.png +portfolio_image_locations: + - /assets/img/members/no_image.png + - /assets/img/members/no_image.png +website: +socials: +--- \ No newline at end of file diff --git a/_members/laura.md b/_members/laura.md new file mode 100644 index 0000000..d5ec374 --- /dev/null +++ b/_members/laura.md @@ -0,0 +1,17 @@ +--- +layout: member +full_name: Polanska Laura +description: multidisciplinary artist / photographer +thumb: /assets/img/members/laura/thumb-laura.jpg +portrait: /assets/img/members/laura/portrait-laura.jpg +portfolio_image_locations: + - /assets/img/members/laura/portfolio-laura-1.jpg + - /assets/img/members/laura/portfolio-laura-2.jpg + - /assets/img/members/laura/portfolio-laura-3.jpg +website: +socials: +website: https://www.polanskalaura.com +socials: + - https://www.instagram.com/polanskalaura/ +--- +Polanska Laura is a multidisciplinary artist born in the south of Poland in 1994. In her artistic practice she focuses on photography, video and installation, often merging photographic and sculptural disciplines. Her work touches upon subjects related to tensions and deep connections on the line between nature and human, transcendence, and body as a transgressive power. She is fascinated by notions of trace, trauma, and the subconscious. She obtained MFA at Magdalena Abakanowicz University of Fine Arts in Poznan in the field of Intermedia Photography. Her works have been shown in Poland, Germany, France, Norway and South Korea. She lives and works in Berlin. \ No newline at end of file diff --git a/_members/marta.md b/_members/marta.md new file mode 100644 index 0000000..7aed768 --- /dev/null +++ b/_members/marta.md @@ -0,0 +1,12 @@ +--- +layout: member +full_name: Marta Muschietti +description: illustrator / graphic designer +thumb: /assets/img/members/no_image.png +portrait: /assets/img/members/no_image.png +portfolio_image_locations: + - /assets/img/members/no_image.png + - /assets/img/members/no_image.png +website: +socials: +--- \ No newline at end of file diff --git a/_members/martyna.md b/_members/martyna.md new file mode 100644 index 0000000..82f6c74 --- /dev/null +++ b/_members/martyna.md @@ -0,0 +1,16 @@ +--- +layout: member +full_name: Martyna Lebryk +description: painter +thumb: /assets/img/members/martyna/thumb-martyna.jpg +portrait: /assets/img/members/martyna/Martyna-Lebryk-colour.jpg +portfolio_image_locations: + - /assets/img/members/martyna/crocodile-tears.png + - /assets/img/members/martyna/bad-influence.png + - /assets/img/members/martyna/gloop.png + - /assets/img/members/martyna/curly-legs.png +website: www.martynalebryk.com +socials: + - https://www.instagram.com/martynalebryk +--- +Martyna Lebryk is a visual artist working in painting and sculpture. Born in Poland, she works between Dublin and Berlin. She is exploring certain ambiguities and contradictions surrounding the world, the self and human existence. She is in search of something crude. Basic human emotions. Attraction and repulsion; the need to approach and withdraw; curiosity and sin. What it means to have agency and self-determination while being constrained by own physicality and preconceptions. \ No newline at end of file diff --git a/_members/michelle.md b/_members/michelle.md new file mode 100644 index 0000000..ff71386 --- /dev/null +++ b/_members/michelle.md @@ -0,0 +1,12 @@ +--- +layout: member +full_name: Michelle Meissner +description: painter +thumb: /assets/img/members/no_image.png +portrait: /assets/img/members/no_image.png +portfolio_image_locations: + - /assets/img/members/no_image.png + - /assets/img/members/no_image.png +website: +socials: +--- \ No newline at end of file diff --git a/_members/robert.md b/_members/robert.md new file mode 100644 index 0000000..898c989 --- /dev/null +++ b/_members/robert.md @@ -0,0 +1,21 @@ +--- +layout: member +full_name: Robert König aka RØB // TAPE OVER +description: tape artist / installation artist +thumb: /assets/img/members/robert/thumb-robert.jpg +portrait: /assets/img/members/robert/Rob_Portrait_IBUG.jpg +portfolio_image_locations: + - /assets/img/members/robert/wave_Trouville_bw.jpg + - /assets/img/members/robert/meinestadt_blueprint_detail_ankle.jpg + - /assets/img/members/robert/art_elizabeth_back.jpg + - /assets/img/members/robert/Neuland_Mehr Theater_head_hand_total.JPG +website: https://tapeover.berlin +socials: + - https://www.behance.net/TAPEOVER + - https://www.instagram.com/tapeoverberlin/ + - https://www.youtube.com/tapeoverberlin + - https://vimeo.com/tapeover + - https://www.facebook.com/TAPEOVER/ + - https://www.linkedin.com/in/robertrobkoenig +--- +Robert König is an entrepreneur, visionary and tape artist who was born in Dresden in 1977 and has lived in Berlin for around two decades. After studying entrepreneurship and marketing at Heilbronn University, he worked in the Berlin start-up scene. Under his artist name ROB, he pursues his creative inclination in the field of tape art. A new creation is always based on passion, creativity and experimentation - that is his understanding of art. Rob's art reflects what inspires him the most - organic shapes, abstract forms, complex designs and visual statements. In 2011, together with Lamia Michna, he founded TAPE OVER - an international tape art crew with roots in the subcultural Berlin electro scene. As a kind of ambassador for tape art, they present their art worldwide and have been shaping this new art movement for years. Rob is also the founder of our Prachtsaal Studio, which opened in 2018. \ No newline at end of file diff --git a/_members/stephan.md b/_members/stephan.md new file mode 100644 index 0000000..98d7de0 --- /dev/null +++ b/_members/stephan.md @@ -0,0 +1,12 @@ +--- +layout: member +full_name: Stephan van Kuyk +description: mixed media artist +thumb: /assets/img/members/no_image.png +portrait: /assets/img/members/no_image.png +portfolio_image_locations: + - /assets/img/members/no_image.png + - /assets/img/members/no_image.png +website: +socials: +--- \ No newline at end of file diff --git a/_members/valerio.md b/_members/valerio.md new file mode 100644 index 0000000..93748fb --- /dev/null +++ b/_members/valerio.md @@ -0,0 +1,12 @@ +--- +layout: member +full_name: Valerio Sangiacomo +description: painter / graphic designer +thumb: /assets/img/members/no_image.png +portrait: /assets/img/members/no_image.png +portfolio_image_locations: + - /assets/img/members/no_image.png + - /assets/img/members/no_image.png +website: +socials: +--- \ No newline at end of file diff --git a/_members/zack.md b/_members/zack.md new file mode 100644 index 0000000..294462b --- /dev/null +++ b/_members/zack.md @@ -0,0 +1,21 @@ +--- +layout: member +full_name: Zack Helwa +description: multidisciplinary artist +thumb: /assets/img/members/zack/thumb-zack.png +portrait: /assets/img/members/zack/zack_portrait.png +portfolio_image_locations: + - /assets/img/members/zack/zack_portfolio_01.png + - /assets/img/members/zack/zack_portfolio_02.png + - /assets/img/members/zack/zack_portfolio_03.png +website: +socials: +--- +After studying BFA Photography at the New York School of Visual Arts, Zack +Helwa relocated to Berlin, Germany, where he currently resides and works. He +is a multidisciplinary artist using video, photography, sculpture and +performance. Helwa exhibits, curates and screens widely, and is the founder of +the former F.K.Kollektiv, a photography collective, exhibition space and printing +lab active in Berlin from 2014-2023. Now, Helwa focuses on his artistic practice +while freelancing as a photographic printer for artists and photography +workshop facilitator. \ No newline at end of file diff --git a/_templates/event-template.md b/_templates/event-template.md new file mode 100644 index 0000000..02b08b3 --- /dev/null +++ b/_templates/event-template.md @@ -0,0 +1,19 @@ +--- +layout: event +title: +subtitle: +main_image: +description: +quote: +quote_author: +quote_author_role: +images: + - file: + caption: + - file: + caption: +link: +link_text: +tags: +--- +Add your content here. \ No newline at end of file diff --git a/_templates/member-template.md b/_templates/member-template.md new file mode 100644 index 0000000..a0f794b --- /dev/null +++ b/_templates/member-template.md @@ -0,0 +1,16 @@ +--- +layout: member +full_name: +description: +thumb: /assets/img/members/no_image.png +portrait: /assets/img/members/no_image.png +portfolio_image_locations: + - /assets/img/members/member-name/missing.png + - /assets/img/members/member-name/missing.png +website: +socials: + - +--- +You are beautiful. + +You are not alone. diff --git a/_templates/news-template.md b/_templates/news-template.md new file mode 100644 index 0000000..27f5328 --- /dev/null +++ b/_templates/news-template.md @@ -0,0 +1,16 @@ +--- +layout: news +title: +subtitle: +main_image: +description: +images: + - file: + caption: + - file: + caption: +link: +link_text: +tags: +--- +Add your content here. \ No newline at end of file diff --git a/about.md b/about.md new file mode 100644 index 0000000..d8608a0 --- /dev/null +++ b/about.md @@ -0,0 +1,40 @@ +--- +layout: page +title: about us. +description: about Prachtsaal Studio Cooperative +--- +## Who are we? + +Welcome to Prachtsaal, a vibrant and dynamic creative nexus, built on two interconnected pillars. One empowers our resident artists, who infuse the space and inspire each other with cutting-edge innovation. The other invites the public into a dynamic playground for expression, exploration, exchange, and education. Our mission is to cultivate an environment teeming with playfulness and purpose, movement and reflection, color and sound, discovery and growth. We eagerly welcome everyone with an open mind, tolerance, and curiosity to join us. As a non-profit cooperative, we are committed to pushing the boundaries of community enrichment. + +Join us at Prachtsaal, where creativity knows no bounds and every day is an invitation to explore, learn, and grow together! + + +## Our mission +At Prachtsaal, we are committed to: + +- Showcasing visual arts, music, and performances that embody creative expression across all mediums, intersecting with the realms of humanities, society, science, and technology. +- Providing affordable ateliers for artists. +- Curating inclusive events for the benefit of both the local community and a wider audience. +- Educating all generations in art techniques and culture. +- Promoting international artist collaborations on-site. + +## How are we achieving our goals + +To realize our mission, we: + +- Offer shared facilities that encourage the exploration of various artistic mediums. +- Cultivate a safe, diverse, and inclusive environment. +- Ensure our space is easily accessible to everyone. +- Uphold a democratic management process. +- Seek professional support to drive our mission forward. +- Undertake necessary renovations and reconstructions. +- Strive for the economic sustainability of our space. +- Maintain our non-profit status. + + + +## Prachtsaal: A Cooperative in the Making + +We are embarking on an exciting journey to become a registered non-profit cooperative (gemeinnützige Genossenschaft). This new chapter will unlock fresh realms of community engagement and transform our space into a dynamic hub of creativity. Beyond our ateliers and daily art practices, we will host regular concerts and performances, curate a gallery with ever-evolving exhibitions, and offer a lively space for workshops and education. Join us as we reimagine the future of art and community together! + diff --git a/assets/css/source.css b/assets/css/source.css new file mode 100644 index 0000000..9192699 --- /dev/null +++ b/assets/css/source.css @@ -0,0 +1,72 @@ +@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap'); + +@tailwind base; +@tailwind components; +@tailwind utilities; + + +html { + font-size: clamp(1rem, 1vw, 1.2rem); +} + +a { + text-decoration: underline; +} + +div.links-without-underline a { + text-decoration: none; +} + +h1 { + @apply text-6xl font-prachtsaal font-bold text-center; +} + +h2 { + @apply text-2xl my-8; +} + +.nav-x { + @apply mx-8 sm:mx-16; +} + +.nav-y { + @apply my-6 +} + +ul { + @apply list-disc list-inside +} + +figure { + margin-bottom: 20px; + margin-top: 10px; + font-style: italic; +} + +figcaption { + text-align: center; + margin-top: 3px; + color: #444; +} + +div.member { + margin-bottom: 1em; +} + +div.member img { + filter: grayscale(); +} + +div.member a { + cursor: pointer; +} + +div.member .member-text { + margin: 0.5em; + display: block; +} + +div.member img:hover { + filter: none; +} + diff --git a/assets/css/styles.css b/assets/css/styles.css new file mode 100644 index 0000000..5417fd3 --- /dev/null +++ b/assets/css/styles.css @@ -0,0 +1,1297 @@ +@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap'); + +/* +! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com +*/ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; + /* 1 */ + border-width: 0; + /* 2 */ + border-style: solid; + /* 2 */ + border-color: #e5e7eb; + /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +7. Disable tap highlights on iOS +*/ + +html, +:host { + line-height: 1.5; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -moz-tab-size: 4; + /* 3 */ + -o-tab-size: 4; + tab-size: 4; + /* 3 */ + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + /* 4 */ + font-feature-settings: normal; + /* 5 */ + font-variation-settings: normal; + /* 6 */ + -webkit-tap-highlight-color: transparent; + /* 7 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; + /* 1 */ + line-height: inherit; + /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; + /* 1 */ + color: inherit; + /* 2 */ + border-top-width: 1px; + /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font-family by default. +2. Use the user's configured `mono` font-feature-settings by default. +3. Use the user's configured `mono` font-variation-settings by default. +4. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + /* 1 */ + font-feature-settings: normal; + /* 2 */ + font-variation-settings: normal; + /* 3 */ + font-size: 1em; + /* 4 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; + /* 1 */ + border-color: inherit; + /* 2 */ + border-collapse: collapse; + /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-feature-settings: inherit; + /* 1 */ + font-variation-settings: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + font-weight: inherit; + /* 1 */ + line-height: inherit; + /* 1 */ + letter-spacing: inherit; + /* 1 */ + color: inherit; + /* 1 */ + margin: 0; + /* 2 */ + padding: 0; + /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +input:where([type='button']), +input:where([type='reset']), +input:where([type='submit']) { + -webkit-appearance: button; + /* 1 */ + background-color: transparent; + /* 2 */ + background-image: none; + /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Reset default styling for dialogs. +*/ + +dialog { + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + /* 1 */ + vertical-align: middle; + /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ + +[hidden] { + display: none; +} + +*, ::before, ::after{ + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop{ + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +.visible{ + visibility: visible; +} + +.static{ + position: static; +} + +.fixed{ + position: fixed; +} + +.absolute{ + position: absolute; +} + +.relative{ + position: relative; +} + +.-right-5{ + right: -1.25rem; +} + +.-top-5{ + top: -1.25rem; +} + +.bottom-0{ + bottom: 0px; +} + +.bottom-10{ + bottom: 2.5rem; +} + +.left-0{ + left: 0px; +} + +.left-10{ + left: 2.5rem; +} + +.right-10{ + right: 2.5rem; +} + +.top-0{ + top: 0px; +} + +.z-\[8888\]{ + z-index: 8888; +} + +.z-\[9999\]{ + z-index: 9999; +} + +.m-16{ + margin: 4rem; +} + +.m-2{ + margin: 0.5rem; +} + +.m-28{ + margin: 7rem; +} + +.m-8{ + margin: 2rem; +} + +.mx-12{ + margin-left: 3rem; + margin-right: 3rem; +} + +.mx-28{ + margin-left: 7rem; + margin-right: 7rem; +} + +.mx-4{ + margin-left: 1rem; + margin-right: 1rem; +} + +.mx-8{ + margin-left: 2rem; + margin-right: 2rem; +} + +.mx-auto{ + margin-left: auto; + margin-right: auto; +} + +.my-16{ + margin-top: 4rem; + margin-bottom: 4rem; +} + +.my-2{ + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} + +.my-28{ + margin-top: 7rem; + margin-bottom: 7rem; +} + +.mb-14{ + margin-bottom: 3.5rem; +} + +.mb-16{ + margin-bottom: 4rem; +} + +.mb-2{ + margin-bottom: 0.5rem; +} + +.mb-28{ + margin-bottom: 7rem; +} + +.mb-4{ + margin-bottom: 1rem; +} + +.mt-16{ + margin-top: 4rem; +} + +.mt-2{ + margin-top: 0.5rem; +} + +.mt-28{ + margin-top: 7rem; +} + +.mt-4{ + margin-top: 1rem; +} + +.mt-8{ + margin-top: 2rem; +} + +.block{ + display: block; +} + +.flex{ + display: flex; +} + +.grid{ + display: grid; +} + +.contents{ + display: contents; +} + +.hidden{ + display: none; +} + +.aspect-video{ + aspect-ratio: 16 / 9; +} + +.size-32{ + width: 8rem; + height: 8rem; +} + +.size-6{ + width: 1.5rem; + height: 1.5rem; +} + +.h-10{ + height: 2.5rem; +} + +.h-16{ + height: 4rem; +} + +.h-6{ + height: 1.5rem; +} + +.h-96{ + height: 24rem; +} + +.h-full{ + height: 100%; +} + +.h-screen{ + height: 100vh; +} + +.max-h-\[90vh\]{ + max-height: 90vh; +} + +.w-10{ + width: 2.5rem; +} + +.w-16{ + width: 4rem; +} + +.w-3\/4{ + width: 75%; +} + +.w-6{ + width: 1.5rem; +} + +.w-64{ + width: 16rem; +} + +.w-\[40\%\]{ + width: 40%; +} + +.w-full{ + width: 100%; +} + +.w-screen{ + width: 100vw; +} + +.max-w-32{ + max-width: 8rem; +} + +.max-w-64{ + max-width: 16rem; +} + +.grow{ + flex-grow: 1; +} + +.transform{ + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.cursor-pointer{ + cursor: pointer; +} + +.list-none{ + list-style-type: none; +} + +.grid-flow-row{ + grid-auto-flow: row; +} + +.flex-row{ + flex-direction: row; +} + +.flex-col{ + flex-direction: column; +} + +.items-start{ + align-items: flex-start; +} + +.items-center{ + align-items: center; +} + +.justify-end{ + justify-content: flex-end; +} + +.justify-center{ + justify-content: center; +} + +.justify-between{ + justify-content: space-between; +} + +.justify-around{ + justify-content: space-around; +} + +.gap-1{ + gap: 0.25rem; +} + +.gap-16{ + gap: 4rem; +} + +.gap-2{ + gap: 0.5rem; +} + +.gap-4{ + gap: 1rem; +} + +.gap-8{ + gap: 2rem; +} + +.rounded{ + border-radius: 0.25rem; +} + +.rounded-full{ + border-radius: 9999px; +} + +.border{ + border-width: 1px; +} + +.border-2{ + border-width: 2px; +} + +.border-black{ + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} + +.border-gray-200{ + --tw-border-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-border-opacity)); +} + +.border-white{ + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity)); +} + +.bg-\[\#0000007d\]{ + background-color: #0000007d; +} + +.bg-\[\#000000c9\]{ + background-color: #000000c9; +} + +.bg-black{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); +} + +.bg-purple-300{ + --tw-bg-opacity: 1; + background-color: rgb(216 180 254 / var(--tw-bg-opacity)); +} + +.bg-white{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} + +.bg-\[url\(\'\/assets\/img\/home\/404_crop\.jpeg\'\)\]{ + background-image: url('/assets/img/home/404_crop.jpeg'); +} + +.bg-cover{ + background-size: cover; +} + +.bg-center{ + background-position: center; +} + +.object-contain{ + -o-object-fit: contain; + object-fit: contain; +} + +.object-cover{ + -o-object-fit: cover; + object-fit: cover; +} + +.p-16{ + padding: 4rem; +} + +.p-3{ + padding: 0.75rem; +} + +.p-5{ + padding: 1.25rem; +} + +.px-4{ + padding-left: 1rem; + padding-right: 1rem; +} + +.py-14{ + padding-top: 3.5rem; + padding-bottom: 3.5rem; +} + +.py-24{ + padding-top: 6rem; + padding-bottom: 6rem; +} + +.text-left{ + text-align: left; +} + +.text-center{ + text-align: center; +} + +.text-right{ + text-align: right; +} + +.text-end{ + text-align: end; +} + +.font-prachtsaal{ + font-family: Outfit; +} + +.font-sans{ + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +.text-2xl{ + font-size: 1.5rem; + line-height: 2rem; +} + +.text-lg{ + font-size: 1.125rem; + line-height: 1.75rem; +} + +.text-sm{ + font-size: 0.875rem; + line-height: 1.25rem; +} + +.font-bold{ + font-weight: 700; +} + +.text-gray-400{ + --tw-text-opacity: 1; + color: rgb(156 163 175 / var(--tw-text-opacity)); +} + +.text-white{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + +.transition{ + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.duration-150{ + transition-duration: 150ms; +} + +.ease-in-out{ + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +html { + font-size: clamp(1rem, 1vw, 1.2rem); +} + +a { + text-decoration: underline; +} + +div.links-without-underline a { + text-decoration: none; +} + +h1{ + text-align: center; + font-family: Outfit; + font-size: 3.75rem; + line-height: 1; + font-weight: 700; +} + +h2{ + margin-top: 2rem; + margin-bottom: 2rem; + font-size: 1.5rem; + line-height: 2rem; +} + +.nav-x{ + margin-left: 2rem; + margin-right: 2rem; +} + +@media (min-width: 640px){ + .nav-x{ + margin-left: 4rem; + margin-right: 4rem; + } +} + +.nav-y{ + margin-top: 1.5rem; + margin-bottom: 1.5rem; +} + +ul{ + list-style-position: inside; + list-style-type: disc; +} + +figure { + margin-bottom: 20px; + margin-top: 10px; + font-style: italic; +} + +figcaption { + text-align: center; + margin-top: 3px; + color: #444; +} + +div.member { + margin-bottom: 1em; +} + +div.member img { + filter: grayscale(); +} + +div.member a { + cursor: pointer; +} + +div.member .member-text { + margin: 0.5em; + display: block; +} + +div.member img:hover { + filter: none; +} + +@media (min-width: 340px){ + .min-\[340px\]\:mx-8{ + margin-left: 2rem; + margin-right: 2rem; + } +} + +@media (min-width: 400px){ + .min-\[400px\]\:px-8{ + padding-left: 2rem; + padding-right: 2rem; + } +} + +@media (min-width: 460px){ + .min-\[460px\]\:mx-8{ + margin-left: 2rem; + margin-right: 2rem; + } +} + +@media (min-width: 640px){ + .sm\:mx-28{ + margin-left: 7rem; + margin-right: 7rem; + } + + .sm\:flex{ + display: flex; + } + + .sm\:hidden{ + display: none; + } + + .sm\:grid-cols-2{ + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .sm\:grid-cols-3{ + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .sm\:flex-row{ + flex-direction: row; + } + + .sm\:space-x-12 > :not([hidden]) ~ :not([hidden]){ + --tw-space-x-reverse: 0; + margin-right: calc(3rem * var(--tw-space-x-reverse)); + margin-left: calc(3rem * calc(1 - var(--tw-space-x-reverse))); + } + + .sm\:px-24{ + padding-left: 6rem; + padding-right: 6rem; + } + + .sm\:text-3xl{ + font-size: 1.875rem; + line-height: 2.25rem; + } +} + +@media (min-width: 768px){ + .md\:absolute{ + position: absolute; + } + + .md\:top-0{ + top: 0px; + } + + .md\:top-\[50\%\]{ + top: 50%; + } + + .md\:block{ + display: block; + } + + .md\:w-\[650px\]{ + width: 650px; + } + + .md\:w-\[760px\]{ + width: 760px; + } + + .md\:max-w-\[85\%\]{ + max-width: 85%; + } + + .md\:columns-2{ + -moz-columns: 2; + columns: 2; + } + + .md\:grid-cols-2{ + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .md\:p-10{ + padding: 2.5rem; + } + + .md\:opacity-0{ + opacity: 0; + } + + .group:hover .md\:group-hover\:opacity-100{ + opacity: 1; + } +} + +@media (min-width: 1024px){ + .lg\:w-1\/2{ + width: 50%; + } + + .lg\:w-32{ + width: 8rem; + } + + .lg\:w-64{ + width: 16rem; + } + + .lg\:w-\[760px\]{ + width: 760px; + } + + .lg\:max-w-6xl{ + max-width: 72rem; + } + + .lg\:grid-cols-3{ + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .lg\:grid-cols-4{ + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .lg\:flex-row{ + flex-direction: row; + } +} + +@media (min-width: 1280px){ + .xl\:max-w-\[1520px\]{ + max-width: 1520px; + } +} + diff --git a/assets/img/Instagram_Glyph_Gradient_RGB_logo.svg.png b/assets/img/Instagram_Glyph_Gradient_RGB_logo.svg.png new file mode 100644 index 0000000..eea6265 Binary files /dev/null and b/assets/img/Instagram_Glyph_Gradient_RGB_logo.svg.png differ diff --git a/assets/img/Instagram_Glyph_white_logo.svg.png b/assets/img/Instagram_Glyph_white_logo.svg.png new file mode 100644 index 0000000..e62cf7b Binary files /dev/null and b/assets/img/Instagram_Glyph_white_logo.svg.png differ diff --git a/assets/img/Instagram_logo_2022.svg.png b/assets/img/Instagram_logo_2022.svg.png new file mode 100644 index 0000000..9868a70 Binary files /dev/null and b/assets/img/Instagram_logo_2022.svg.png differ diff --git a/assets/img/communities/ccb.jpeg b/assets/img/communities/ccb.jpeg new file mode 100644 index 0000000..9400182 Binary files /dev/null and b/assets/img/communities/ccb.jpeg differ diff --git a/assets/img/communities/openrndr.png b/assets/img/communities/openrndr.png new file mode 100644 index 0000000..edbc3ba Binary files /dev/null and b/assets/img/communities/openrndr.png differ diff --git a/assets/img/communities/processingfoundation.jpeg b/assets/img/communities/processingfoundation.jpeg new file mode 100644 index 0000000..dfd65dd Binary files /dev/null and b/assets/img/communities/processingfoundation.jpeg differ diff --git a/assets/img/communities/schoolofma.jpeg b/assets/img/communities/schoolofma.jpeg new file mode 100644 index 0000000..24bc78d Binary files /dev/null and b/assets/img/communities/schoolofma.jpeg differ diff --git a/assets/img/communities/tapeover.jpeg b/assets/img/communities/tapeover.jpeg new file mode 100644 index 0000000..bfcf747 Binary files /dev/null and b/assets/img/communities/tapeover.jpeg differ diff --git a/assets/img/communities/toplapberlin.png b/assets/img/communities/toplapberlin.png new file mode 100644 index 0000000..3adaf36 Binary files /dev/null and b/assets/img/communities/toplapberlin.png differ diff --git a/assets/img/communities/vetro.png b/assets/img/communities/vetro.png new file mode 100644 index 0000000..5002f41 Binary files /dev/null and b/assets/img/communities/vetro.png differ diff --git a/assets/img/communities/vetro2.png b/assets/img/communities/vetro2.png new file mode 100644 index 0000000..7c39427 Binary files /dev/null and b/assets/img/communities/vetro2.png differ diff --git a/assets/img/communities/xemantic.png b/assets/img/communities/xemantic.png new file mode 100644 index 0000000..5431493 Binary files /dev/null and b/assets/img/communities/xemantic.png differ diff --git a/events/images/2022-adje-gorelick.jpg b/assets/img/events/2022-adje-gorelick.jpg similarity index 100% rename from events/images/2022-adje-gorelick.jpg rename to assets/img/events/2022-adje-gorelick.jpg diff --git a/events/images/2022-kazik-gorelick.jpg b/assets/img/events/2022-kazik-gorelick.jpg similarity index 100% rename from events/images/2022-kazik-gorelick.jpg rename to assets/img/events/2022-kazik-gorelick.jpg diff --git a/assets/img/events/2024-48hoursNK-group-shot.png b/assets/img/events/2024-48hoursNK-group-shot.png new file mode 100644 index 0000000..99ec000 Binary files /dev/null and b/assets/img/events/2024-48hoursNK-group-shot.png differ diff --git a/events/2023/bestiario/images/bestiario.jpg b/assets/img/events/bestiario.jpg similarity index 100% rename from events/2023/bestiario/images/bestiario.jpg rename to assets/img/events/bestiario.jpg diff --git a/events/images/openrndr-meetup-1.webp b/assets/img/events/openrndr-meetup-1.webp similarity index 100% rename from events/images/openrndr-meetup-1.webp rename to assets/img/events/openrndr-meetup-1.webp diff --git a/events/images/openrndr-meetup-2.webp b/assets/img/events/openrndr-meetup-2.webp similarity index 100% rename from events/images/openrndr-meetup-2.webp rename to assets/img/events/openrndr-meetup-2.webp diff --git a/assets/img/events/prachtayama/PRACHTSAAL STUDIO_LOATION.jpg b/assets/img/events/prachtayama/PRACHTSAAL STUDIO_LOATION.jpg new file mode 100644 index 0000000..9bee454 Binary files /dev/null and b/assets/img/events/prachtayama/PRACHTSAAL STUDIO_LOATION.jpg differ diff --git a/assets/img/events/prachtayama/PRACHTSAAL STUDIO_PRACHTAYAMA.jpg b/assets/img/events/prachtayama/PRACHTSAAL STUDIO_PRACHTAYAMA.jpg new file mode 100644 index 0000000..57e88a5 Binary files /dev/null and b/assets/img/events/prachtayama/PRACHTSAAL STUDIO_PRACHTAYAMA.jpg differ diff --git a/events/2023/processing-community-catalog-reading/images/an-introduction-by-casey-reas.jpeg b/assets/img/events/processing-catalog/an-introduction-by-casey-reas.jpeg similarity index 100% rename from events/2023/processing-community-catalog-reading/images/an-introduction-by-casey-reas.jpeg rename to assets/img/events/processing-catalog/an-introduction-by-casey-reas.jpeg diff --git a/events/2023/processing-community-catalog-reading/images/casey-reas-and-olivia-jack.jpeg b/assets/img/events/processing-catalog/casey-reas-and-olivia-jack.jpeg similarity index 100% rename from events/2023/processing-community-catalog-reading/images/casey-reas-and-olivia-jack.jpeg rename to assets/img/events/processing-catalog/casey-reas-and-olivia-jack.jpeg diff --git a/assets/img/events/processing-catalog/eventbrite-casey-reas.jpeg b/assets/img/events/processing-catalog/eventbrite-casey-reas.jpeg new file mode 100644 index 0000000..eb30773 Binary files /dev/null and b/assets/img/events/processing-catalog/eventbrite-casey-reas.jpeg differ diff --git a/events/2023/processing-community-catalog-reading/images/processing-community-catalog.jpeg b/assets/img/events/processing-catalog/processing-community-catalog.jpeg similarity index 100% rename from events/2023/processing-community-catalog-reading/images/processing-community-catalog.jpeg rename to assets/img/events/processing-catalog/processing-community-catalog.jpeg diff --git a/events/2023/processing-community-catalog-reading/images/rachel-uwa.jpeg b/assets/img/events/processing-catalog/rachel-uwa.jpeg similarity index 100% rename from events/2023/processing-community-catalog-reading/images/rachel-uwa.jpeg rename to assets/img/events/processing-catalog/rachel-uwa.jpeg diff --git a/events/2023/processing-community-catalog-reading/images/so-kanno-and-omii-chen.jpeg b/assets/img/events/processing-catalog/so-kanno-and-omii-chen.jpeg similarity index 100% rename from events/2023/processing-community-catalog-reading/images/so-kanno-and-omii-chen.jpeg rename to assets/img/events/processing-catalog/so-kanno-and-omii-chen.jpeg diff --git a/history/images/cafe-prachtsaal.jpg b/assets/img/history/cafe-prachtsaal.jpg similarity index 100% rename from history/images/cafe-prachtsaal.jpg rename to assets/img/history/cafe-prachtsaal.jpg diff --git a/history/images/ingeborg-meisel-karras.jpg b/assets/img/history/ingeborg-meisel-karras.jpg similarity index 100% rename from history/images/ingeborg-meisel-karras.jpg rename to assets/img/history/ingeborg-meisel-karras.jpg diff --git a/history/images/j22-front1.jpg b/assets/img/history/j22-front1.jpg similarity index 100% rename from history/images/j22-front1.jpg rename to assets/img/history/j22-front1.jpg diff --git a/history/images/prachtsaal-entrence-inside.jpg b/assets/img/history/prachtsaal-entrence-inside.jpg similarity index 100% rename from history/images/prachtsaal-entrence-inside.jpg rename to assets/img/history/prachtsaal-entrence-inside.jpg diff --git a/history/images/prachtsaal-field-hospital.jpg b/assets/img/history/prachtsaal-field-hospital.jpg similarity index 100% rename from history/images/prachtsaal-field-hospital.jpg rename to assets/img/history/prachtsaal-field-hospital.jpg diff --git a/history/images/prachtsaal-front-nazi.jpg b/assets/img/history/prachtsaal-front-nazi.jpg similarity index 100% rename from history/images/prachtsaal-front-nazi.jpg rename to assets/img/history/prachtsaal-front-nazi.jpg diff --git a/history/images/prachtsaal-interior1.jpg b/assets/img/history/prachtsaal-interior1.jpg similarity index 100% rename from history/images/prachtsaal-interior1.jpg rename to assets/img/history/prachtsaal-interior1.jpg diff --git a/history/images/prachtsaal-tanzschule-front1.jpg b/assets/img/history/prachtsaal-tanzschule-front1.jpg similarity index 100% rename from history/images/prachtsaal-tanzschule-front1.jpg rename to assets/img/history/prachtsaal-tanzschule-front1.jpg diff --git a/history/images/prachtsaal-tanzschule-front2.jpg b/assets/img/history/prachtsaal-tanzschule-front2.jpg similarity index 100% rename from history/images/prachtsaal-tanzschule-front2.jpg rename to assets/img/history/prachtsaal-tanzschule-front2.jpg diff --git a/history/images/prachtsaal-tanzschule-front3.jpg b/assets/img/history/prachtsaal-tanzschule-front3.jpg similarity index 100% rename from history/images/prachtsaal-tanzschule-front3.jpg rename to assets/img/history/prachtsaal-tanzschule-front3.jpg diff --git a/history/images/prachtsaal-tanzschule-interior1.jpg b/assets/img/history/prachtsaal-tanzschule-interior1.jpg similarity index 100% rename from history/images/prachtsaal-tanzschule-interior1.jpg rename to assets/img/history/prachtsaal-tanzschule-interior1.jpg diff --git a/assets/img/home/404.jpeg b/assets/img/home/404.jpeg new file mode 100644 index 0000000..791f114 Binary files /dev/null and b/assets/img/home/404.jpeg differ diff --git a/assets/img/home/404_crop.jpeg b/assets/img/home/404_crop.jpeg new file mode 100644 index 0000000..91a6953 Binary files /dev/null and b/assets/img/home/404_crop.jpeg differ diff --git a/assets/img/members/abe/aBe-ALifeCycle.webp b/assets/img/members/abe/aBe-ALifeCycle.webp new file mode 100644 index 0000000..7be0955 Binary files /dev/null and b/assets/img/members/abe/aBe-ALifeCycle.webp differ diff --git a/assets/img/members/abe/aBe-dave-screenshot-1.webp b/assets/img/members/abe/aBe-dave-screenshot-1.webp new file mode 100644 index 0000000..87aff99 Binary files /dev/null and b/assets/img/members/abe/aBe-dave-screenshot-1.webp differ diff --git a/assets/img/members/abe/aBe-ratkaisu-multiplica-render3.webp b/assets/img/members/abe/aBe-ratkaisu-multiplica-render3.webp new file mode 100644 index 0000000..41cec30 Binary files /dev/null and b/assets/img/members/abe/aBe-ratkaisu-multiplica-render3.webp differ diff --git a/assets/img/members/abe/aBe-tracing-the-line-closeup.webp b/assets/img/members/abe/aBe-tracing-the-line-closeup.webp new file mode 100644 index 0000000..d4eef00 Binary files /dev/null and b/assets/img/members/abe/aBe-tracing-the-line-closeup.webp differ diff --git a/assets/img/members/abe/portrait-abe.webp b/assets/img/members/abe/portrait-abe.webp new file mode 100644 index 0000000..ae68007 Binary files /dev/null and b/assets/img/members/abe/portrait-abe.webp differ diff --git a/assets/img/members/abe/thumb-abe.jpg b/assets/img/members/abe/thumb-abe.jpg new file mode 100644 index 0000000..5cb326f Binary files /dev/null and b/assets/img/members/abe/thumb-abe.jpg differ diff --git a/assets/img/members/claudine/hornetsnest.jpg b/assets/img/members/claudine/hornetsnest.jpg new file mode 100644 index 0000000..7f36ffb Binary files /dev/null and b/assets/img/members/claudine/hornetsnest.jpg differ diff --git a/assets/img/members/claudine/kaleidoscope_nisyros.jpg b/assets/img/members/claudine/kaleidoscope_nisyros.jpg new file mode 100644 index 0000000..308b134 Binary files /dev/null and b/assets/img/members/claudine/kaleidoscope_nisyros.jpg differ diff --git a/assets/img/members/claudine/kaleidoscope_nisyros2.jpg b/assets/img/members/claudine/kaleidoscope_nisyros2.jpg new file mode 100644 index 0000000..6623f01 Binary files /dev/null and b/assets/img/members/claudine/kaleidoscope_nisyros2.jpg differ diff --git a/assets/img/members/claudine/me_lemon.jpg b/assets/img/members/claudine/me_lemon.jpg new file mode 100644 index 0000000..359c22f Binary files /dev/null and b/assets/img/members/claudine/me_lemon.jpg differ diff --git a/assets/img/members/claudine/package-weaving.jpg b/assets/img/members/claudine/package-weaving.jpg new file mode 100644 index 0000000..310376c Binary files /dev/null and b/assets/img/members/claudine/package-weaving.jpg differ diff --git a/assets/img/members/claudine/portrait-claudine.jpeg b/assets/img/members/claudine/portrait-claudine.jpeg new file mode 100644 index 0000000..412437e Binary files /dev/null and b/assets/img/members/claudine/portrait-claudine.jpeg differ diff --git a/assets/img/members/claudine/timeinplace.png b/assets/img/members/claudine/timeinplace.png new file mode 100644 index 0000000..8a4bed5 Binary files /dev/null and b/assets/img/members/claudine/timeinplace.png differ diff --git a/assets/img/members/grit/gritkit_overview.jpg b/assets/img/members/grit/gritkit_overview.jpg new file mode 100644 index 0000000..e33e149 Binary files /dev/null and b/assets/img/members/grit/gritkit_overview.jpg differ diff --git a/assets/img/members/grit/gritkit_portfolio_01.jpg b/assets/img/members/grit/gritkit_portfolio_01.jpg new file mode 100644 index 0000000..f56c5db Binary files /dev/null and b/assets/img/members/grit/gritkit_portfolio_01.jpg differ diff --git a/assets/img/members/grit/gritkit_portfolio_02.jpg b/assets/img/members/grit/gritkit_portfolio_02.jpg new file mode 100644 index 0000000..963d7f0 Binary files /dev/null and b/assets/img/members/grit/gritkit_portfolio_02.jpg differ diff --git a/assets/img/members/grit/gritkit_portfolio_03.jpg b/assets/img/members/grit/gritkit_portfolio_03.jpg new file mode 100644 index 0000000..9caef2a Binary files /dev/null and b/assets/img/members/grit/gritkit_portfolio_03.jpg differ diff --git a/assets/img/members/grit/gritkit_portfolio_04.jpg b/assets/img/members/grit/gritkit_portfolio_04.jpg new file mode 100644 index 0000000..33b9c21 Binary files /dev/null and b/assets/img/members/grit/gritkit_portfolio_04.jpg differ diff --git a/assets/img/members/grit/gritkit_portfolio_05.jpg b/assets/img/members/grit/gritkit_portfolio_05.jpg new file mode 100644 index 0000000..9932315 Binary files /dev/null and b/assets/img/members/grit/gritkit_portfolio_05.jpg differ diff --git a/assets/img/members/grit/gritkit_subpage.jpg b/assets/img/members/grit/gritkit_subpage.jpg new file mode 100644 index 0000000..e352e21 Binary files /dev/null and b/assets/img/members/grit/gritkit_subpage.jpg differ diff --git a/assets/img/members/laura/portfolio-laura-1.jpg b/assets/img/members/laura/portfolio-laura-1.jpg new file mode 100644 index 0000000..31e7f55 Binary files /dev/null and b/assets/img/members/laura/portfolio-laura-1.jpg differ diff --git a/assets/img/members/laura/portfolio-laura-2.jpg b/assets/img/members/laura/portfolio-laura-2.jpg new file mode 100644 index 0000000..5b9c954 Binary files /dev/null and b/assets/img/members/laura/portfolio-laura-2.jpg differ diff --git a/assets/img/members/laura/portfolio-laura-3.jpg b/assets/img/members/laura/portfolio-laura-3.jpg new file mode 100644 index 0000000..a1b5dc7 Binary files /dev/null and b/assets/img/members/laura/portfolio-laura-3.jpg differ diff --git a/assets/img/members/laura/portrait-laura.jpg b/assets/img/members/laura/portrait-laura.jpg new file mode 100644 index 0000000..6dca35f Binary files /dev/null and b/assets/img/members/laura/portrait-laura.jpg differ diff --git a/assets/img/members/laura/thumb-laura.jpg b/assets/img/members/laura/thumb-laura.jpg new file mode 100644 index 0000000..f574809 Binary files /dev/null and b/assets/img/members/laura/thumb-laura.jpg differ diff --git a/assets/img/members/martyna/Martyna-Lebryk-colour.jpg b/assets/img/members/martyna/Martyna-Lebryk-colour.jpg new file mode 100644 index 0000000..370d308 Binary files /dev/null and b/assets/img/members/martyna/Martyna-Lebryk-colour.jpg differ diff --git a/assets/img/members/martyna/bad-influence.png b/assets/img/members/martyna/bad-influence.png new file mode 100644 index 0000000..4295478 Binary files /dev/null and b/assets/img/members/martyna/bad-influence.png differ diff --git a/assets/img/members/martyna/crocodile-tears.png b/assets/img/members/martyna/crocodile-tears.png new file mode 100644 index 0000000..140ef5b Binary files /dev/null and b/assets/img/members/martyna/crocodile-tears.png differ diff --git a/assets/img/members/martyna/curly-legs.png b/assets/img/members/martyna/curly-legs.png new file mode 100644 index 0000000..257e17d Binary files /dev/null and b/assets/img/members/martyna/curly-legs.png differ diff --git a/assets/img/members/martyna/gloop.png b/assets/img/members/martyna/gloop.png new file mode 100644 index 0000000..828267e Binary files /dev/null and b/assets/img/members/martyna/gloop.png differ diff --git a/assets/img/members/martyna/inside-outside.png b/assets/img/members/martyna/inside-outside.png new file mode 100644 index 0000000..98c148b Binary files /dev/null and b/assets/img/members/martyna/inside-outside.png differ diff --git a/assets/img/members/martyna/puzzled.png b/assets/img/members/martyna/puzzled.png new file mode 100644 index 0000000..03e2a08 Binary files /dev/null and b/assets/img/members/martyna/puzzled.png differ diff --git a/assets/img/members/martyna/smoking-foot.png b/assets/img/members/martyna/smoking-foot.png new file mode 100644 index 0000000..1fa6028 Binary files /dev/null and b/assets/img/members/martyna/smoking-foot.png differ diff --git a/assets/img/members/martyna/thumb-martyna.jpg b/assets/img/members/martyna/thumb-martyna.jpg new file mode 100644 index 0000000..0c59a1e Binary files /dev/null and b/assets/img/members/martyna/thumb-martyna.jpg differ diff --git a/assets/img/members/no_image.png b/assets/img/members/no_image.png new file mode 100644 index 0000000..211af44 Binary files /dev/null and b/assets/img/members/no_image.png differ diff --git a/assets/img/members/robert/Converse_skyline.jpg b/assets/img/members/robert/Converse_skyline.jpg new file mode 100755 index 0000000..b34961c Binary files /dev/null and b/assets/img/members/robert/Converse_skyline.jpg differ diff --git a/assets/img/members/robert/Neuland_Mehr Theater_head_hand_total.JPG b/assets/img/members/robert/Neuland_Mehr Theater_head_hand_total.JPG new file mode 100644 index 0000000..8f1c264 Binary files /dev/null and b/assets/img/members/robert/Neuland_Mehr Theater_head_hand_total.JPG differ diff --git a/assets/img/members/robert/Rob_Portrait_IBUG.jpg b/assets/img/members/robert/Rob_Portrait_IBUG.jpg new file mode 100644 index 0000000..dccc43e Binary files /dev/null and b/assets/img/members/robert/Rob_Portrait_IBUG.jpg differ diff --git a/assets/img/members/robert/antelopes_Hannover_total_2013.jpg b/assets/img/members/robert/antelopes_Hannover_total_2013.jpg new file mode 100755 index 0000000..9d2a6e8 Binary files /dev/null and b/assets/img/members/robert/antelopes_Hannover_total_2013.jpg differ diff --git a/assets/img/members/robert/art_elizabeth_back.jpg b/assets/img/members/robert/art_elizabeth_back.jpg new file mode 100755 index 0000000..2e18aad Binary files /dev/null and b/assets/img/members/robert/art_elizabeth_back.jpg differ diff --git a/assets/img/members/robert/festival_total_blue_day.JPG b/assets/img/members/robert/festival_total_blue_day.JPG new file mode 100644 index 0000000..3038049 Binary files /dev/null and b/assets/img/members/robert/festival_total_blue_day.JPG differ diff --git a/assets/img/members/robert/hummingbird effect_sofa.jpg b/assets/img/members/robert/hummingbird effect_sofa.jpg new file mode 100755 index 0000000..07f6dd5 Binary files /dev/null and b/assets/img/members/robert/hummingbird effect_sofa.jpg differ diff --git a/assets/img/members/robert/lomography_store design.jpg b/assets/img/members/robert/lomography_store design.jpg new file mode 100755 index 0000000..f520bd1 Binary files /dev/null and b/assets/img/members/robert/lomography_store design.jpg differ diff --git a/assets/img/members/robert/meinestadt_blueprint_detail_ankle.jpg b/assets/img/members/robert/meinestadt_blueprint_detail_ankle.jpg new file mode 100644 index 0000000..573713e Binary files /dev/null and b/assets/img/members/robert/meinestadt_blueprint_detail_ankle.jpg differ diff --git a/assets/img/members/robert/thumb-robert.jpg b/assets/img/members/robert/thumb-robert.jpg new file mode 100644 index 0000000..7e5f06c Binary files /dev/null and b/assets/img/members/robert/thumb-robert.jpg differ diff --git a/assets/img/members/robert/wave_Trouville_bw.jpg b/assets/img/members/robert/wave_Trouville_bw.jpg new file mode 100755 index 0000000..d660e94 Binary files /dev/null and b/assets/img/members/robert/wave_Trouville_bw.jpg differ diff --git a/assets/img/members/zack/thumb-zack.png b/assets/img/members/zack/thumb-zack.png new file mode 100644 index 0000000..3c751da Binary files /dev/null and b/assets/img/members/zack/thumb-zack.png differ diff --git a/assets/img/members/zack/zack_portfolio_01.png b/assets/img/members/zack/zack_portfolio_01.png new file mode 100644 index 0000000..7925719 Binary files /dev/null and b/assets/img/members/zack/zack_portfolio_01.png differ diff --git a/assets/img/members/zack/zack_portfolio_02.png b/assets/img/members/zack/zack_portfolio_02.png new file mode 100644 index 0000000..9df76ae Binary files /dev/null and b/assets/img/members/zack/zack_portfolio_02.png differ diff --git a/assets/img/members/zack/zack_portfolio_03.png b/assets/img/members/zack/zack_portfolio_03.png new file mode 100644 index 0000000..8b3c965 Binary files /dev/null and b/assets/img/members/zack/zack_portfolio_03.png differ diff --git a/assets/img/members/zack/zack_portrait.png b/assets/img/members/zack/zack_portrait.png new file mode 100644 index 0000000..9f8b71c Binary files /dev/null and b/assets/img/members/zack/zack_portrait.png differ diff --git a/assets/img/news/foyer.jpeg b/assets/img/news/foyer.jpeg new file mode 100644 index 0000000..991735d Binary files /dev/null and b/assets/img/news/foyer.jpeg differ diff --git a/assets/img/news/garden.jpeg b/assets/img/news/garden.jpeg new file mode 100644 index 0000000..8f96bd3 Binary files /dev/null and b/assets/img/news/garden.jpeg differ diff --git a/assets/img/news/prachtsaal-open-call.jpg b/assets/img/news/prachtsaal-open-call.jpg new file mode 100644 index 0000000..1fce68e Binary files /dev/null and b/assets/img/news/prachtsaal-open-call.jpg differ diff --git a/assets/img/news/unit3-01-01.jpeg b/assets/img/news/unit3-01-01.jpeg new file mode 100644 index 0000000..4612432 Binary files /dev/null and b/assets/img/news/unit3-01-01.jpeg differ diff --git a/assets/img/news/unit3.jpg b/assets/img/news/unit3.jpg new file mode 100644 index 0000000..b6274b4 Binary files /dev/null and b/assets/img/news/unit3.jpg differ diff --git a/assets/img/news/unit6-01.jpeg b/assets/img/news/unit6-01.jpeg new file mode 100644 index 0000000..6bddc02 Binary files /dev/null and b/assets/img/news/unit6-01.jpeg differ diff --git a/assets/img/news/unit6-02.jpeg b/assets/img/news/unit6-02.jpeg new file mode 100644 index 0000000..83acb72 Binary files /dev/null and b/assets/img/news/unit6-02.jpeg differ diff --git a/assets/img/news/unit6-03.jpeg b/assets/img/news/unit6-03.jpeg new file mode 100644 index 0000000..63dd6d7 Binary files /dev/null and b/assets/img/news/unit6-03.jpeg differ diff --git a/assets/img/news/unit7-square.jpg b/assets/img/news/unit7-square.jpg new file mode 100644 index 0000000..593ed0e Binary files /dev/null and b/assets/img/news/unit7-square.jpg differ diff --git a/assets/img/news/unit7.jpg b/assets/img/news/unit7.jpg new file mode 100644 index 0000000..703060d Binary files /dev/null and b/assets/img/news/unit7.jpg differ diff --git a/assets/img/news/unit8.jpg b/assets/img/news/unit8.jpg new file mode 100644 index 0000000..e1afaa0 Binary files /dev/null and b/assets/img/news/unit8.jpg differ diff --git a/assets/img/news/unit9.jpg b/assets/img/news/unit9.jpg new file mode 100644 index 0000000..1770140 Binary files /dev/null and b/assets/img/news/unit9.jpg differ diff --git a/assets/img/news/view_from_the_venue.jpg b/assets/img/news/view_from_the_venue.jpg new file mode 100644 index 0000000..7e338eb Binary files /dev/null and b/assets/img/news/view_from_the_venue.jpg differ diff --git a/assets/img/prachtsaal-logo.png b/assets/img/prachtsaal-logo.png new file mode 100644 index 0000000..a5f1ca6 Binary files /dev/null and b/assets/img/prachtsaal-logo.png differ diff --git a/assets/js/alpinejs@3.14.0.min.js b/assets/js/alpinejs@3.14.0.min.js new file mode 100644 index 0000000..9b9d5db --- /dev/null +++ b/assets/js/alpinejs@3.14.0.min.js @@ -0,0 +1,5 @@ +(()=>{var rt=!1,nt=!1,U=[],it=-1;function qt(e){Cn(e)}function Cn(e){U.includes(e)||U.push(e),Tn()}function Ee(e){let t=U.indexOf(e);t!==-1&&t>it&&U.splice(t,1)}function Tn(){!nt&&!rt&&(rt=!0,queueMicrotask(Rn))}function Rn(){rt=!1,nt=!0;for(let e=0;ee.effect(t,{scheduler:r=>{ot?qt(r):r()}}),st=e.raw}function at(e){D=e}function Gt(e){let t=()=>{};return[n=>{let i=D(n);return e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach(o=>o())}),e._x_effects.add(i),t=()=>{i!==void 0&&(e._x_effects.delete(i),L(i))},i},()=>{t()}]}function ve(e,t){let r=!0,n,i=D(()=>{let o=e();JSON.stringify(o),r?n=o:queueMicrotask(()=>{t(o,n),n=o}),r=!1});return()=>L(i)}var Jt=[],Yt=[],Xt=[];function Zt(e){Xt.push(e)}function ee(e,t){typeof t=="function"?(e._x_cleanups||(e._x_cleanups=[]),e._x_cleanups.push(t)):(t=e,Yt.push(t))}function Ae(e){Jt.push(e)}function Oe(e,t,r){e._x_attributeCleanups||(e._x_attributeCleanups={}),e._x_attributeCleanups[t]||(e._x_attributeCleanups[t]=[]),e._x_attributeCleanups[t].push(r)}function ct(e,t){e._x_attributeCleanups&&Object.entries(e._x_attributeCleanups).forEach(([r,n])=>{(t===void 0||t.includes(r))&&(n.forEach(i=>i()),delete e._x_attributeCleanups[r])})}function Qt(e){if(e._x_cleanups)for(;e._x_cleanups.length;)e._x_cleanups.pop()()}var lt=new MutationObserver(pt),ut=!1;function le(){lt.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),ut=!0}function ft(){Mn(),lt.disconnect(),ut=!1}var ce=[];function Mn(){let e=lt.takeRecords();ce.push(()=>e.length>0&&pt(e));let t=ce.length;queueMicrotask(()=>{if(ce.length===t)for(;ce.length>0;)ce.shift()()})}function _(e){if(!ut)return e();ft();let t=e();return le(),t}var dt=!1,Se=[];function er(){dt=!0}function tr(){dt=!1,pt(Se),Se=[]}function pt(e){if(dt){Se=Se.concat(e);return}let t=new Set,r=new Set,n=new Map,i=new Map;for(let o=0;os.nodeType===1&&t.add(s)),e[o].removedNodes.forEach(s=>s.nodeType===1&&r.add(s))),e[o].type==="attributes")){let s=e[o].target,a=e[o].attributeName,c=e[o].oldValue,l=()=>{n.has(s)||n.set(s,[]),n.get(s).push({name:a,value:s.getAttribute(a)})},u=()=>{i.has(s)||i.set(s,[]),i.get(s).push(a)};s.hasAttribute(a)&&c===null?l():s.hasAttribute(a)?(u(),l()):u()}i.forEach((o,s)=>{ct(s,o)}),n.forEach((o,s)=>{Jt.forEach(a=>a(s,o))});for(let o of r)t.has(o)||Yt.forEach(s=>s(o));t.forEach(o=>{o._x_ignoreSelf=!0,o._x_ignore=!0});for(let o of t)r.has(o)||o.isConnected&&(delete o._x_ignoreSelf,delete o._x_ignore,Xt.forEach(s=>s(o)),o._x_ignore=!0,o._x_ignoreSelf=!0);t.forEach(o=>{delete o._x_ignoreSelf,delete o._x_ignore}),t=null,r=null,n=null,i=null}function Ce(e){return F(j(e))}function P(e,t,r){return e._x_dataStack=[t,...j(r||e)],()=>{e._x_dataStack=e._x_dataStack.filter(n=>n!==t)}}function j(e){return e._x_dataStack?e._x_dataStack:typeof ShadowRoot=="function"&&e instanceof ShadowRoot?j(e.host):e.parentNode?j(e.parentNode):[]}function F(e){return new Proxy({objects:e},Nn)}var Nn={ownKeys({objects:e}){return Array.from(new Set(e.flatMap(t=>Object.keys(t))))},has({objects:e},t){return t==Symbol.unscopables?!1:e.some(r=>Object.prototype.hasOwnProperty.call(r,t)||Reflect.has(r,t))},get({objects:e},t,r){return t=="toJSON"?Dn:Reflect.get(e.find(n=>Reflect.has(n,t))||{},t,r)},set({objects:e},t,r,n){let i=e.find(s=>Object.prototype.hasOwnProperty.call(s,t))||e[e.length-1],o=Object.getOwnPropertyDescriptor(i,t);return o?.set&&o?.get?Reflect.set(i,t,r,n):Reflect.set(i,t,r)}};function Dn(){return Reflect.ownKeys(this).reduce((t,r)=>(t[r]=Reflect.get(this,r),t),{})}function Te(e){let t=n=>typeof n=="object"&&!Array.isArray(n)&&n!==null,r=(n,i="")=>{Object.entries(Object.getOwnPropertyDescriptors(n)).forEach(([o,{value:s,enumerable:a}])=>{if(a===!1||s===void 0||typeof s=="object"&&s!==null&&s.__v_skip)return;let c=i===""?o:`${i}.${o}`;typeof s=="object"&&s!==null&&s._x_interceptor?n[o]=s.initialize(e,c,o):t(s)&&s!==n&&!(s instanceof Element)&&r(s,c)})};return r(e)}function Re(e,t=()=>{}){let r={initialValue:void 0,_x_interceptor:!0,initialize(n,i,o){return e(this.initialValue,()=>Pn(n,i),s=>mt(n,i,s),i,o)}};return t(r),n=>{if(typeof n=="object"&&n!==null&&n._x_interceptor){let i=r.initialize.bind(r);r.initialize=(o,s,a)=>{let c=n.initialize(o,s,a);return r.initialValue=c,i(o,s,a)}}else r.initialValue=n;return r}}function Pn(e,t){return t.split(".").reduce((r,n)=>r[n],e)}function mt(e,t,r){if(typeof t=="string"&&(t=t.split(".")),t.length===1)e[t[0]]=r;else{if(t.length===0)throw error;return e[t[0]]||(e[t[0]]={}),mt(e[t[0]],t.slice(1),r)}}var rr={};function y(e,t){rr[e]=t}function ue(e,t){return Object.entries(rr).forEach(([r,n])=>{let i=null;function o(){if(i)return i;{let[s,a]=_t(t);return i={interceptor:Re,...s},ee(t,a),i}}Object.defineProperty(e,`$${r}`,{get(){return n(t,o())},enumerable:!1})}),e}function nr(e,t,r,...n){try{return r(...n)}catch(i){te(i,e,t)}}function te(e,t,r=void 0){e=Object.assign(e??{message:"No error message given."},{el:t,expression:r}),console.warn(`Alpine Expression Error: ${e.message} + +${r?'Expression: "'+r+`" + +`:""}`,t),setTimeout(()=>{throw e},0)}var Me=!0;function De(e){let t=Me;Me=!1;let r=e();return Me=t,r}function M(e,t,r={}){let n;return x(e,t)(i=>n=i,r),n}function x(...e){return ir(...e)}var ir=gt;function or(e){ir=e}function gt(e,t){let r={};ue(r,e);let n=[r,...j(e)],i=typeof t=="function"?In(n,t):Ln(n,t,e);return nr.bind(null,e,t,i)}function In(e,t){return(r=()=>{},{scope:n={},params:i=[]}={})=>{let o=t.apply(F([n,...e]),i);Ne(r,o)}}var ht={};function kn(e,t){if(ht[e])return ht[e];let r=Object.getPrototypeOf(async function(){}).constructor,n=/^[\n\s]*if.*\(.*\)/.test(e.trim())||/^(let|const)\s/.test(e.trim())?`(async()=>{ ${e} })()`:e,o=(()=>{try{let s=new r(["__self","scope"],`with (scope) { __self.result = ${n} }; __self.finished = true; return __self.result;`);return Object.defineProperty(s,"name",{value:`[Alpine] ${e}`}),s}catch(s){return te(s,t,e),Promise.resolve()}})();return ht[e]=o,o}function Ln(e,t,r){let n=kn(t,r);return(i=()=>{},{scope:o={},params:s=[]}={})=>{n.result=void 0,n.finished=!1;let a=F([o,...e]);if(typeof n=="function"){let c=n(n,a).catch(l=>te(l,r,t));n.finished?(Ne(i,n.result,a,s,r),n.result=void 0):c.then(l=>{Ne(i,l,a,s,r)}).catch(l=>te(l,r,t)).finally(()=>n.result=void 0)}}}function Ne(e,t,r,n,i){if(Me&&typeof t=="function"){let o=t.apply(r,n);o instanceof Promise?o.then(s=>Ne(e,s,r,n)).catch(s=>te(s,i,t)):e(o)}else typeof t=="object"&&t instanceof Promise?t.then(o=>e(o)):e(t)}var bt="x-";function C(e=""){return bt+e}function sr(e){bt=e}var Pe={};function d(e,t){return Pe[e]=t,{before(r){if(!Pe[r]){console.warn(String.raw`Cannot find directive \`${r}\`. \`${e}\` will use the default order of execution`);return}let n=W.indexOf(r);W.splice(n>=0?n:W.indexOf("DEFAULT"),0,e)}}}function ar(e){return Object.keys(Pe).includes(e)}function de(e,t,r){if(t=Array.from(t),e._x_virtualDirectives){let o=Object.entries(e._x_virtualDirectives).map(([a,c])=>({name:a,value:c})),s=wt(o);o=o.map(a=>s.find(c=>c.name===a.name)?{name:`x-bind:${a.name}`,value:`"${a.value}"`}:a),t=t.concat(o)}let n={};return t.map(ur((o,s)=>n[o]=s)).filter(dr).map(jn(n,r)).sort(Fn).map(o=>$n(e,o))}function wt(e){return Array.from(e).map(ur()).filter(t=>!dr(t))}var xt=!1,fe=new Map,cr=Symbol();function lr(e){xt=!0;let t=Symbol();cr=t,fe.set(t,[]);let r=()=>{for(;fe.get(t).length;)fe.get(t).shift()();fe.delete(t)},n=()=>{xt=!1,r()};e(r),n()}function _t(e){let t=[],r=a=>t.push(a),[n,i]=Gt(e);return t.push(i),[{Alpine:B,effect:n,cleanup:r,evaluateLater:x.bind(x,e),evaluate:M.bind(M,e)},()=>t.forEach(a=>a())]}function $n(e,t){let r=()=>{},n=Pe[t.type]||r,[i,o]=_t(e);Oe(e,t.original,o);let s=()=>{e._x_ignore||e._x_ignoreSelf||(n.inline&&n.inline(e,t,i),n=n.bind(n,e,t,i),xt?fe.get(cr).push(n):n())};return s.runCleanups=o,s}var Ie=(e,t)=>({name:r,value:n})=>(r.startsWith(e)&&(r=r.replace(e,t)),{name:r,value:n}),ke=e=>e;function ur(e=()=>{}){return({name:t,value:r})=>{let{name:n,value:i}=fr.reduce((o,s)=>s(o),{name:t,value:r});return n!==t&&e(n,t),{name:n,value:i}}}var fr=[];function re(e){fr.push(e)}function dr({name:e}){return pr().test(e)}var pr=()=>new RegExp(`^${bt}([^:^.]+)\\b`);function jn(e,t){return({name:r,value:n})=>{let i=r.match(pr()),o=r.match(/:([a-zA-Z0-9\-_:]+)/),s=r.match(/\.[^.\]]+(?=[^\]]*$)/g)||[],a=t||e[r]||r;return{type:i?i[1]:null,value:o?o[1]:null,modifiers:s.map(c=>c.replace(".","")),expression:n,original:a}}}var yt="DEFAULT",W=["ignore","ref","data","id","anchor","bind","init","for","model","modelable","transition","show","if",yt,"teleport"];function Fn(e,t){let r=W.indexOf(e.type)===-1?yt:e.type,n=W.indexOf(t.type)===-1?yt:t.type;return W.indexOf(r)-W.indexOf(n)}function G(e,t,r={}){e.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,composed:!0,cancelable:!0}))}function T(e,t){if(typeof ShadowRoot=="function"&&e instanceof ShadowRoot){Array.from(e.children).forEach(i=>T(i,t));return}let r=!1;if(t(e,()=>r=!0),r)return;let n=e.firstElementChild;for(;n;)T(n,t,!1),n=n.nextElementSibling}function E(e,...t){console.warn(`Alpine Warning: ${e}`,...t)}var mr=!1;function _r(){mr&&E("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."),mr=!0,document.body||E("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's `