diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..17f1a4f --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,212 @@ +:root { + color-scheme: light; + + /* Palette from the press's own brand notes: jewel-tone base (sapphire + header/footer, plum nav) with earth-tone accents swapped in for the + original emerald/gold accent pass (forest green, terracotta), gold kept + as a highlight color. See plan notes for the full mapping. */ + --bg: #fffff0; /* Ivory */ + --bg-raised: #f7f0e3; + --fg: #444444; /* Charcoal Gray */ + --fg-muted: #6b6560; + --border: #e6ded0; + + --sapphire: #1c3f75; + --plum: #a76d95; + --forest: #3d6b4a; + --gold: #d4af37; + --terracotta: #c1653b; + --rose: #f1c6d2; + + --heading: var(--sapphire); + --accent: var(--terracotta); + --accent-fg: #ffffff; + --cta: var(--forest); + --cta-fg: #ffffff; + + --radius: 0.5rem; + --max-width: 42rem; + + --font-heading: "Merriweather", Georgia, "Times New Roman", serif; + --font-body: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; + --font-accent: "Dancing Script", cursive; +} + +* { box-sizing: border-box; } + +body { + margin: 0; + font-family: var(--font-body); + line-height: 1.6; + background: var(--bg); + color: var(--fg); + display: flex; + flex-direction: column; + min-height: 100vh; +} + +a { color: var(--accent); } + +.skip-link { + position: absolute; + left: -9999px; + top: 0; + z-index: 100; + background: var(--cta); + color: var(--cta-fg); + padding: 0.75rem 1.25rem; + border-radius: 0 0 var(--radius) 0; +} +.skip-link:focus { + left: 0; +} + +h1, h2, h3 { + font-family: var(--font-heading); + color: var(--heading); + line-height: 1.25; +} + +/* Reserved for author names on individual author pages (not yet written — + content/authors/_index.md is still a stub). Wrap a name in + once those pages exist. */ +.author-name { + font-family: var(--font-accent); + font-size: 1.3em; +} + +header.site { + background: var(--sapphire); +} +header.site .inner { + max-width: var(--max-width); + margin: 0 auto; + padding: 1.25rem 1.5rem; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + flex-wrap: wrap; +} +header.site .brand { + font-family: var(--font-heading); + font-weight: 700; + font-size: 1.1rem; + color: #ffffff; + text-decoration: none; +} +/* The nav gets its own Soft Plum band nested in the sapphire header, per + the brand notes' "Navigation Bar: Soft Plum" — distinct from the header's + own sapphire background rather than inheriting it. */ +header.site nav { + display: flex; + gap: 0.25rem; + background: var(--plum); + border-radius: var(--radius); + padding: 0.35rem; +} +header.site nav a { + color: #ffffff; + text-decoration: none; + font-size: 0.95rem; + font-weight: 600; + padding: 0.4rem 0.75rem; + border-radius: calc(var(--radius) - 0.2rem); +} +/* Forest green swap-in for the brand notes' original emerald hover. */ +header.site nav a:hover { + background: var(--forest); +} +header.site a:focus-visible { + outline-color: #ffffff; +} + +main { + flex: 1; + max-width: var(--max-width); + margin: 0 auto; + padding: 4rem 1.5rem; + width: 100%; +} + +footer.site { + background: var(--sapphire); + margin-top: 2rem; +} +footer.site .inner { + max-width: var(--max-width); + margin: 0 auto; + padding: 1.5rem; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + flex-wrap: wrap; + font-size: 0.85rem; + color: #ffffff; +} +footer.site nav { + display: flex; + gap: 1.25rem; +} +footer.site nav a { + color: var(--rose); + text-decoration: none; +} +footer.site nav a:hover { + text-decoration: underline; +} + +/* Gold sits at ~3:1 against both the forest-green button and the ivory + page background — enough for a border/accent, not enough for the button + label itself, so the label stays white (var(--cta-fg)) and gold shows up + as a highlight border instead. */ +.btn { + display: inline-block; + padding: 0.75rem 1.5rem; + border-radius: var(--radius); + background: var(--cta); + color: var(--cta-fg); + text-decoration: none; + font-weight: 600; + border: none; + border-bottom: 3px solid var(--gold); + font-size: 1rem; + cursor: pointer; +} +.btn:hover { opacity: 0.9; } + +a:focus-visible, button:focus-visible { + outline: 2px solid var(--cta); + outline-offset: 2px; +} + +label { + display: block; + font-weight: 600; + font-size: 0.9rem; + margin-bottom: 0.35rem; +} +input, textarea { + width: 100%; + padding: 0.65rem 0.75rem; + border-radius: var(--radius); + border: 1px solid var(--border); + background: var(--bg-raised); + color: var(--fg); + font-family: inherit; + font-size: 1rem; + margin-bottom: 1.25rem; +} +input:focus, textarea:focus { + outline: 2px solid var(--cta); + outline-offset: 1px; +} + +.field-honeypot { + position: absolute; + left: -9999px; + width: 1px; + height: 1px; + overflow: hidden; +} diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..74333c4 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,8 @@ +--- +title: "Two Squirrels Press" +description: "Two Squirrels Press — character-driven speculative fiction and poetry." +--- + +Two Squirrels Press publishes character-driven speculative fiction and poetry. + +More about our [books](/books/) and [authors](/authors/) is on its way. diff --git a/content/authors/_index.md b/content/authors/_index.md new file mode 100644 index 0000000..6251cc4 --- /dev/null +++ b/content/authors/_index.md @@ -0,0 +1,6 @@ +--- +title: "Authors" +description: "Authors published by Two Squirrels Press." +--- + +Coming soon. diff --git a/content/books/_index.md b/content/books/_index.md new file mode 100644 index 0000000..161f93b --- /dev/null +++ b/content/books/_index.md @@ -0,0 +1,6 @@ +--- +title: "Books" +description: "Books from Two Squirrels Press." +--- + +Coming soon. diff --git a/content/contact.md b/content/contact.md new file mode 100644 index 0000000..fc67db0 --- /dev/null +++ b/content/contact.md @@ -0,0 +1,5 @@ +--- +title: "Contact" +layout: "contact" +description: "Get in touch with Two Squirrels Press." +--- diff --git a/content/privacy.md b/content/privacy.md new file mode 100644 index 0000000..8f82d52 --- /dev/null +++ b/content/privacy.md @@ -0,0 +1,49 @@ +--- +title: "Privacy Policy" +description: "How Two Squirrels Press collects, uses, and protects your information." +--- + +_Last updated: July 2026_ + +This policy explains what information Two Squirrels Press collects through +use of twosquirrelspress.com, and what happens to it. + +## What Two Squirrels Press collects + +- Your name, email address, and message, when you submit the contact form. + +That's it — this site doesn't run a newsletter, doesn't sell anything +directly, and doesn't use third-party analytics, ad trackers, or tracking +pixels. + +## Why Two Squirrels Press collects it + +- To respond to messages sent through the contact form. + +## What Two Squirrels Press doesn't do + +- Two Squirrels Press doesn't sell or rent your information to anyone. +- Two Squirrels Press doesn't share it with third parties except the + infrastructure providers necessary to run this site and deliver that + email — none of whom get to use it for their own purposes. + +## Your control over it + +- **Deletion**: reach out through [the contact form](/contact/) and Two + Squirrels Press will delete your information from these systems. + +## Security + +Your information is stored on infrastructure Two Squirrels Press controls +directly, not handed off to third-party SaaS platforms. That doesn't make +it invulnerable — no system is — but it does mean there's exactly one place +your data lives, and one party accountable for it. + +## Changes + +If this policy changes in a way that matters, the date at the top of this +page will be updated. + +## Questions + +[Get in touch](/contact/). diff --git a/content/submissions/_index.md b/content/submissions/_index.md new file mode 100644 index 0000000..b3520b8 --- /dev/null +++ b/content/submissions/_index.md @@ -0,0 +1,6 @@ +--- +title: "Submissions" +description: "How to submit work to Two Squirrels Press." +--- + +Coming soon. diff --git a/content/terms.md b/content/terms.md new file mode 100644 index 0000000..95112b6 --- /dev/null +++ b/content/terms.md @@ -0,0 +1,35 @@ +--- +title: "Terms of Use" +description: "Terms for using twosquirrelspress.com." +--- + +_Last updated: July 2026_ + +These terms cover using twosquirrelspress.com and submitting the contact +form. + +## Using this site + +This site is provided as-is, for informational purposes about Two Squirrels +Press, its books, and its authors. + +## No warranty + +This site and its content are provided without warranties of any kind, +express or implied. Two Squirrels Press makes a good-faith effort to keep +things accurate and working, but doesn't guarantee any particular outcome +from anything published here. + +## Liability + +To the extent the law allows, Two Squirrels Press isn't liable for damages +arising from your use of this site or its content. + +## Changes + +These terms may be updated as the site changes. Material changes will +update the date at the top of this page. + +## Questions + +[Get in touch](/contact/). diff --git a/hugo.toml b/hugo.toml index a3e0d31..2fb7af0 100644 --- a/hugo.toml +++ b/hugo.toml @@ -10,4 +10,36 @@ disableKinds = ["taxonomy", "term"] [params] env = "production" - author = "Will Estes" \ No newline at end of file + author = "Will Estes" + description = "Two Squirrels Press — character-driven speculative fiction and poetry." + eec_base_url = "https://eec.twosquirrelspress.com" + +[[menu.main]] + name = "Books" + url = "/books/" + weight = 10 + +[[menu.main]] + name = "Authors" + url = "/authors/" + weight = 20 + +[[menu.main]] + name = "Submissions" + url = "/submissions/" + weight = 30 + +[[menu.footer]] + name = "Contact" + url = "/contact/" + weight = 10 + +[[menu.footer]] + name = "Privacy" + url = "/privacy/" + weight = 20 + +[[menu.footer]] + name = "Terms" + url = "/terms/" + weight = 30 \ No newline at end of file diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 0000000..1e41432 --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,48 @@ + + + + + + {{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} · {{ .Site.Title }}{{ end }} + + + + + {{ $css := resources.Get "css/main.css" }} + {{ if hugo.IsProduction }} + {{ $css = $css | minify | fingerprint }} + + {{ else }} + + {{ end }} + + + + +
+
+ {{ .Site.Title }} + +
+
+ +
+ {{ block "main" . }}{{ end }} +
+ + + + diff --git a/layouts/_default/contact.html b/layouts/_default/contact.html new file mode 100644 index 0000000..a2f7127 --- /dev/null +++ b/layouts/_default/contact.html @@ -0,0 +1,60 @@ +{{ define "main" }} +

Get in touch

+

Tell us a bit about what's on your mind — we read every message ourselves.

+ +
+ + + + + + + + + + + + +
+

+ + +{{ end }} diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..426e8db --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,9 @@ +{{ define "main" }} +

{{ .Title }}

+{{ .Content }} + +{{ end }} diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 0000000..17b274b --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,4 @@ +{{ define "main" }} +

{{ .Title }}

+{{ .Content }} +{{ end }} diff --git a/layouts/index.html b/layouts/index.html new file mode 100644 index 0000000..17b274b --- /dev/null +++ b/layouts/index.html @@ -0,0 +1,4 @@ +{{ define "main" }} +

{{ .Title }}

+{{ .Content }} +{{ end }}