Initial prototype
diff --git a/css/styles.css b/css/styles.css
new file mode 100644
index 0000000..d9bf932
--- /dev/null
+++ b/css/styles.css
@@ -0,0 +1,130 @@
+@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,600;0,700;1,400&display=swap');
+
+body {
+ margin: 0;
+ font-family: 'Open Sans', 'Arial', sans-serif;
+}
+
+[hidden] {
+ display: none;
+}
+
+.header {
+ display: flex;
+ justify-content: flex-start;
+ position: fixed;
+ top: 0;
+ width: calc(100% - 16px);
+ padding: 8px 8px;
+ background-color: #f3f3f3;
+ box-shadow: black 0 -1px 4px;
+}
+
+.header .header-logo {
+ height: 42px;
+}
+
+.app-content {
+ max-width: min(calc(100% - 32px), 800px);
+ margin: 74px auto 16px auto;
+}
+
+.message {
+ text-align: center;
+}
+
+.message-icon {
+ display: inline-block;
+ width: 64px;
+ fill: #0277BD;
+}
+
+.message.message--error .message-icon {
+ fill: #D50000;
+}
+
+.message-title {
+ margin: 4px 0;
+}
+
+.message-text {
+ margin: 8px 0;
+}
+
+.booklet-header {
+ text-align: center;
+ margin-bottom: 18px;
+}
+
+.booklet-header .booklet-header-title {
+ margin: 0;
+ font-size: 30px;
+}
+
+.booklet-header .booklet-header-subtitle {
+ margin: 0;
+ font-size: 18px;
+}
+
+.song {
+ border: solid 1px gray;
+ border-radius: 3px;
+ padding: 12px;
+ margin-bottom: 18px;
+ box-shadow: #bdbdbd 0 1px 3px;
+}
+
+.song .song-title {
+ margin-top: 0;
+ margin-bottom: 4px;
+ font-size: 20px;
+}
+
+.song .song-author {
+ font-style: italic;
+ margin-bottom: 8px;
+}
+
+.song .performers .performers-item {
+ margin-bottom: 2px;
+}
+
+.song .performers .instrument {
+ font-weight: 600;
+ text-decoration: underline;
+}
+
+/* DARK THEME */
+@media screen {
+ .dark-theme {
+ background-color: #111;
+ color: white;
+ }
+
+ .dark-theme .header {
+ color: white;
+ background-color: #0c0c0c;
+ box-shadow: white 0 -1px 4px;
+ }
+
+ .dark-theme .header-logo {
+ filter: invert(1);
+ }
+
+ .dark-theme .song {
+ box-shadow: none;
+ }
+}
+
+@media print {
+ .header {
+ position: absolute;
+ box-shadow: none;
+ border-bottom: solid 1px gray;
+ }
+
+ .song {
+ break-inside: avoid-page;
+ box-shadow: none;
+ }
+}