commit b85468ba720273afe7f92857d9d9cf9e752058dc Author: Jarian Cottingham Date: Mon Aug 24 14:46:31 2026 +0000 Initial commit: The Open Shelf — free EPUB bookstore diff --git a/books/creator-launchpad.epub b/books/creator-launchpad.epub new file mode 100644 index 0000000..e5da05a Binary files /dev/null and b/books/creator-launchpad.epub differ diff --git a/books/wine-explorers-handbook.epub b/books/wine-explorers-handbook.epub new file mode 100644 index 0000000..10761a6 Binary files /dev/null and b/books/wine-explorers-handbook.epub differ diff --git a/books/woodworking-guide-FULLRES.epub b/books/woodworking-guide-FULLRES.epub new file mode 100644 index 0000000..4aae6f0 Binary files /dev/null and b/books/woodworking-guide-FULLRES.epub differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..2b88ca5 --- /dev/null +++ b/index.html @@ -0,0 +1,99 @@ + + + + + + +The Open Shelf — Free EPUB Bookstore + + + + +
+

A small free library

+

The Open Shelf

+

EPUB books to download straight to your e-reader. No sign-up, no cost.

+
+ +
+ +
+
+ + + The Wine Explorer’s Handbook + + Every Corner of the Globe + +
+
+

The Wine Explorer’s Handbook

+

A comprehensive guide to understanding wine from every corner of the globe — regions, grapes, styles, tasting, and pairing.

+

+ Free + EPUB + 7.5 MB +

+

+ Download EPUB + Saves as wine-explorers-handbook.epub +

+
+
+ +
+
+ + + The Creator’s Launchpad + Start & Grow a YouTube Channel + +
+
+

The Creator’s Launchpad

+

The complete manual to starting and growing a successful YouTube channel — production, optimization, and business in one reference.

+

+ Free + EPUB + 1.1 MB +

+

+ Download EPUB + Saves as creator-launchpad.epub +

+
+
+ +
+
+ + + A Complete Guide for Beginners + Japanese Woodworking + + Tools · Techniques · Craft + +
+
+

Japanese Woodworking: A Complete Guide for Beginners

+

Woodworking Curriculum

+

A full beginner’s curriculum in Japanese woodworking — the tools, joints, and techniques behind the craft.

+

+ Free + EPUB + 4.5 MB +

+

+ Download EPUB + Saves as woodworking-guide-FULLRES.epub +

+
+
+ +
+ + + + diff --git a/style.css b/style.css new file mode 100644 index 0000000..09c36bf --- /dev/null +++ b/style.css @@ -0,0 +1,314 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html { + background: #f6f1e7; +} + +body { + font-family: Georgia, 'Iowan Old Style', 'Palatino Linotype', 'Times New Roman', serif; + color: #2c2620; + background: #f6f1e7; + min-width: 320px; +} + +.masthead { + text-align: center; + padding: 48px 20px 36px; + background: #2f4f3e; + color: #f3ecdd; + border-bottom: 6px double #c9a86a; +} + +.masthead-kicker { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 11px; + letter-spacing: 4px; + text-transform: uppercase; + color: #c9a86a; + margin-bottom: 14px; +} + +.masthead h1 { + font-size: 44px; + font-weight: normal; + letter-spacing: 1px; + margin-bottom: 12px; +} + +.masthead-tag { + font-style: italic; + font-size: 16px; + color: #d9cfb8; +} + +.shelf { + max-width: 860px; + margin: 0 auto; + padding: 40px 20px 20px; +} + +.book { + display: flex; + flex-wrap: wrap; + background: #fffdf8; + border: 1px solid #e2d8c3; + border-radius: 10px; + padding: 24px; + margin-bottom: 28px; + box-shadow: 0 2px 8px rgba(60, 45, 25, 0.08); +} + +.book:hover { + box-shadow: 0 6px 18px rgba(60, 45, 25, 0.14); +} + +.cover { + position: relative; + width: 210px; + height: 280px; + flex: 0 0 auto; + border-radius: 4px; + overflow: hidden; + box-shadow: 3px 5px 14px rgba(40, 28, 12, 0.35); + margin-right: 26px; +} + +.cover-frame { + position: absolute; + top: 10px; + left: 10px; + right: 10px; + bottom: 10px; + border: 1px solid rgba(201, 168, 106, 0.75); + pointer-events: none; +} + +.cover-body { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + padding: 26px 22px; +} + +.cover-title { + font-size: 24px; + line-height: 1.25; + letter-spacing: 0.5px; +} + +.cover-sub { + font-size: 11px; + letter-spacing: 2px; + text-transform: uppercase; + margin-top: 10px; +} + +.cover-sub-top { + font-size: 10px; + letter-spacing: 2px; + text-transform: uppercase; + margin-bottom: 10px; +} + +.cover-rule { + width: 44px; + height: 1px; + margin: 14px auto; +} + +.info { + flex: 1 1 300px; + min-width: 260px; + display: flex; + flex-direction: column; + justify-content: center; + padding: 6px 0; +} + +.info h2 { + font-size: 24px; + font-weight: normal; + line-height: 1.25; + margin-bottom: 4px; +} + +.author { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 12px; + letter-spacing: 1.5px; + text-transform: uppercase; + color: #7a7062; + margin-bottom: 10px; +} + +.desc { + font-size: 15px; + line-height: 1.55; + color: #55493c; + margin-bottom: 14px; +} + +.meta { + margin-bottom: 16px; +} + +.badge { + display: inline-block; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 11px; + letter-spacing: 1px; + padding: 4px 10px; + border-radius: 20px; + background: #efe7d4; + color: #6b5d45; + margin-right: 6px; +} + +.badge-free { + background: #2f4f3e; + color: #f3ecdd; +} + +.actions { + line-height: 1.4; +} + +.btn { + display: inline-block; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 14px; + letter-spacing: 1px; + text-decoration: none; + text-transform: uppercase; + color: #f6f1e7; + background: #2f4f3e; + padding: 12px 24px; + border-radius: 6px; + border: 1px solid #24402f; +} + +.btn:hover { + background: #24402f; +} + +.hint { + display: block; + font-size: 12px; + color: #9a8d77; + margin-top: 8px; +} + +.cover-wine { + background: radial-gradient(ellipse at 50% 30%, #7b2d40 0%, #522030 55%, #38141f 100%); +} + +.cover-wine .cover-title { + color: #f0dcb4; +} + +.cover-wine .cover-sub { + color: #c9a86a; +} + +.cover-wine .cover-rule { + background: #c9a86a; +} + +.cover-launchpad { + background: linear-gradient(160deg, #262c31 0%, #15181b 100%); +} + +.cover-launchpad .cover-title { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: bold; + font-size: 26px; + color: #f5f5f2; +} + +.cover-launchpad .cover-sub { + color: #e63946; + margin-top: 14px; +} + +.play { + width: 0; + height: 0; + border-left: 22px solid #e63946; + border-top: 14px solid transparent; + border-bottom: 14px solid transparent; + margin-bottom: 16px; +} + +.cover-wood { + background: + repeating-linear-gradient( + 178deg, + rgba(255, 244, 220, 0.05) 0px, + rgba(255, 244, 220, 0.05) 2px, + transparent 2px, + transparent 9px + ), + linear-gradient(165deg, #7a5533 0%, #5a3c20 55%, #3e2a14 100%); +} + +.cover-wood .cover-title { + color: #f5ecd9; +} + +.cover-wood .cover-sub, +.cover-wood .cover-sub-top { + color: #d8b98a; +} + +.cover-wood .cover-rule { + background: #d8b98a; +} + +.colophon { + max-width: 860px; + margin: 0 auto; + padding: 10px 20px 48px; + text-align: center; + font-size: 13px; + font-style: italic; + color: #8a7d67; +} + +@media (max-width: 620px) { + .masthead h1 { + font-size: 34px; + } + + .book { + flex-direction: column; + align-items: center; + text-align: center; + } + + .cover { + width: 230px; + height: 306px; + margin: 0 0 20px; + } + + .info { + min-width: 0; + width: 100%; + } + + .meta, + .actions { + text-align: center; + } +}