=== PasteTheme ===
Contributors: chattanoogatshirt
Requires at least: 7.1
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 0.7.8
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A block theme for business websites: one typeface, a light and a dark palette, pill buttons and gel details, built for phones first.

== Description ==

PasteTheme is a block theme for business websites: a static front page built from sections, a few pages, a contact page. It ships no blocks, no options page and no settings of its own; what it does, it does through templates, theme.json and one stylesheet. The paste mechanic the theme is named after (cleaning section code an AI wrote, locking its layout, leaving the words and pictures editable) lives in a separate free plugin described on the theme's site, https://pastetheme.com. The theme works on its own as a plain block theme.

What the theme carries:

* **Templates and parts.** Page, single post, home (the latest posts, with a heading), index (archives and search) and 404 templates, a header (logo, site title, menu) and a footer. Edit them in the Site Editor.
* **One typeface.** Quicksand, bundled and self-hosted: 700 on headings, 400 for body text, 300 for secondary text. The theme makes no outside requests. While Quicksand is the body or heading font its file is requested with the page's first files, and until it arrives the text shows in a system font resized to Quicksand's width, so lines almost never rewrap and the page holds still when it lands.
* **Light and dark palette.** Navy and white carry the page, with two accents per scheme: red and yellow on light, royal blue and cyan on dark. Dark mode overrides the same palette presets, so the header, footer, buttons, links and any section built on the presets follow it. The scheme follows the visitor's device setting. A plugin may store a visitor's choice in localStorage as pt-scheme, switch dark mode off through the pastetheme_dark_mode option, or set its own six dark colors through pastetheme_dark_colors; the theme reads those when they exist and needs none of them.
* **Pill buttons and gel details.** Round buttons, 1rem corners on form controls, big radii.
* **Form baseline.** An unstyled pasted form still looks finished: labels, inputs, textareas and a pill submit button. The theme's own styles sit in a cascade layer, so CSS that arrives with a pasted section wins without effort.
* **Sections sit flush.** No gap under the header when a page opens with a pasted section, none between two pasted sections, and the first and last elements in a section's content box add no margin to the section's own padding, so the space between sections stays even whatever a section starts or ends with. A picture can have a light and a dark version: the classes pt-light-only and pt-dark-only show one or the other.
* **Section edges.** Full-width sections can meet in a gentle curve or a wave instead of a straight line, and the footer follows the same shape. It switches on from a class on the body: pt-edge--curve, pt-edge--wave, or pt-edge--custom, which takes its shape from the --pt-edge-shape custom property; pt-edge-shade shades every other section so the shape shows between two plain ones. A child theme (through WordPress's body_class filter) or a plugin may add these classes; without them sections meet straight, as before. The shape has no color of its own, so it follows light and dark, and a page prints straight and stays straight in the block editor.
* **Phone hygiene.** Form controls, WooCommerce's included, never drop below 16px on touch screens, so iPhones stop zooming into them. Menu links, the menu buttons, the logo or site name, buttons, and a scheme switch if a plugin adds one, give a finger at least 44px to tap, without changing how they look. A pasted section wider than the screen cannot scroll the page sideways. Images, video and embeds shrink to fit.
* **Logo sizing.** A raster logo honors the width set on the Site Logo block, so phones load a sharp file instead of a stretched small one. An SVG logo renders at 40px tall (32px on phones) instead of collapsing.
* **WooCommerce styling.** Shop, cart and checkout follow the palette and the pill buttons once WooCommerce is installed.
* **Child themes.** A child theme loads this stylesheet first, then its own on top.

On its own, PasteTheme is a plain block theme: dark mode follows the device setting, the header and footer are edited in the Site Editor, and pages are built with the block editor.

It needs WordPress 7.1 or later and PHP 8.0 or later. It is a website theme rather than a blog theme: the front page is meant to be a static page, a site that shows its latest posts instead gets a plain list under a heading, and the index template serves archives and search results.

== Copyright ==

PasteTheme WordPress Theme, (C) 2026 Chattanooga Tshirt LLC. PasteTheme is distributed under the terms of the GNU GPL v2 or later.

== Resources ==

Quicksand, Copyright 2011 The Quicksand Project Authors (https://github.com/andrew-paglinawan/QuicksandFamily), SIL Open Font License 1.1 (https://scripts.sil.org/OFL). Bundled as assets/fonts/quicksand-*.woff2 with assets/fonts/OFL-Quicksand.txt.

screenshot.png: a capture of the theme with placeholder text, no photographs; (C) 2026 Chattanooga Tshirt LLC, GPLv2 or later.

The curve and wave shapes in style.css (inline SVG data): (C) 2026 Chattanooga Tshirt LLC, GPLv2 or later.

== Frequently Asked Questions ==

= Does the theme need a plugin? =

No. It is a complete block theme: templates for pages, posts, lists, search and the 404, a header and a footer, and the palette and typeface.

= How do I edit the header and footer? =

Appearance, Editor. Both are template parts, and the footer's placeholder words (Pages, Get in touch, Legal) are ordinary blocks once you open it.

= How does dark mode work? =

It follows the visitor's device setting. The dark palette overrides the same color presets as the light one, so the header, footer, buttons, links and any block built on the presets follow it. A plugin may add a switch; the theme itself has none.

= Does it work with WooCommerce? =

Yes. Shop, cart and checkout follow the palette and the pill buttons, and the product gallery's zoom, lightbox and slider are declared.

= Can I use a child theme? =

Yes. The parent stylesheet loads first, on the site and in the editor, then the child's own on top.

== Changelog ==

= 0.7.9 =
* The palette is the six colors the theme uses, each named for its job (Base, Contrast, Subtle, Accent, Accent 2, Accent contrast). The five extra swatches named after a hue (Brand red, aqua, blue, lime, yellow) are gone: nothing in the theme used them, and a name like "Brand lime" is wrong the moment the color changes.

= 0.7.8 =
* Posts show their comments, threaded, with Reply and the comment form, wherever comments are open. A post with comments closed shows the comments it already has and no form; one with none prints nothing.
* Housekeeping: the readme names the separate plugin once, the code comments no longer name other products or sites, every text file uses the same line endings, and the footer's credit link goes through esc_url().

= 0.7.7 =
* Section edges: full-width sections can meet in a gentle curve or a wave instead of a straight line, with the footer following the same shape. A class on the body turns it on (pt-edge--curve, pt-edge--wave, or pt-edge--custom with its own shape), and pt-edge-shade shades every other section so the shape shows. Each section keeps room above and below its content, so the shape never covers a heading or a button, on a phone or a wide screen. Without a class nothing changes.
* The curve is shallow, not as deep as the wave: 3% of the screen width and never more than 48px, so it reads as a gentle bend on a phone and on a wide screen. The wave and a custom shape keep their depth.
* A long unbroken line in a footer column, such as an email address, now breaks inside its column instead of spilling past it on a phone.
* Balanced card grids: cards placed straight inside an element with the class pt-grid fill whole rows by themselves, one across on a phone, two on a tablet and three on a wide screen, and the last row never leaves an empty slot (four cards sit 2 x 2, five sit 3 + 2).
* Numbered steps: an ordered list with the class pt-steps numbers each step in a round badge on the same line as the step's heading, runs the rest of the step full width under both, and lays the steps out in the same balanced rows.
* Pages hold still when the font arrives. While Quicksand is the body or heading font, its latin file is requested with the page's first files, so on most visits it is there before the first paint. Until it lands, text shows in a fallback made from system fonts resized to Quicksand's width and line height (Arial for regular and light text, Verdana Bold for bold), so lines almost always wrap the same when it swaps in.
* WooCommerce's sort box, quantity boxes and login fields are 16px or more on touch screens, so an iPhone no longer zooms in when they are tapped.
* The last element in a section's content box adds no bottom margin, like the first adds no top margin, so a section that ends with a paragraph or a list leaves the same space below as one that ends with a box.
* Bigger tap areas that do not change the look: the logo link and the site name get a 44px tap area on touch screens, and the menu's open and close buttons keep their 44px tap area wherever they show, a short window used with a mouse included.

= 0.7.6 =
* The admin notice that recommended the plugin is gone, and the readme names no add-on: the theme works on its own and recommends nothing.
* The phone menu's rows center their words with flex instead of padding arithmetic, so a site's own padding on a menu link (a gradient pill, say) no longer leaves the label sitting at the top of the row.
* A front page that shows the latest posts has a heading above the list (a home template with a translatable pattern), so that page has an h1 like every other.

= 0.7.5 =
* A pasted form's submit button is the accent pill again instead of a white text field, and an unstyled form on a dark band shows its typed text (it was white on white). Field edges and the dark-mode button edge are easier to see.
* Printing a page while the dark scheme is on prints black on white instead of white on white, with the light version of any two-scheme picture.
* The phone menu reads as rows again: the words sit in the middle of each row, children are indented one step (on the reading side of a right-to-left site) instead of two, and a tap target is 44px, not 61.
* A section set to Boxed now shares its edge with a full-width one (the rule never matched the wrapper the sections actually use).
* Search results and archives have a heading saying what was searched, and an empty search offers the search box again.
* A post's content is no longer capped at the text column: a pasted section or a wide image can fill the page, while a raw picture wider than the screen no longer scrolls a phone sideways.
* Under a child theme the editor loads the parent stylesheet again, so the canvas matches the live site.
* WooCommerce prices use the link color, which passes AA contrast on both palettes.
* The front page template is gone: a site set to show its latest posts gets the posts list, a static front page is unchanged.

= 0.7.4 =
* The footer's starting content is a pattern, so its placeholder words (Pages, Get in touch, Legal, the two hints and the credit line) can be translated. The Site Editor expands it into ordinary blocks the first time the footer is edited.

= 0.7.3 =
* WooCommerce: the checkout's country and state dropdowns follow the palette (they were a white slab on a dark site), and related products sit two across on a phone instead of one full-width column.

= 0.7.2 =
* WordPress's stock block patterns, and the ones it downloads from wordpress.org, no longer fill the inserter and the Site Editor. A plugin's own patterns (WooCommerce's, for one) stay.

= 0.7.1 =
* Header and footer on the content box: the logo, the menu, the footer columns and the credit line now share one edge with the page content on wide screens instead of hugging the screen edges. The bars themselves still span the screen.
* Templates without a pasted section (the 404, a post, the archive) open under the header with the same room a hero has and leave room before the footer; the 404 message is centered.

= 0.7.0 =
* Sections sit flush: the block gap WordPress put under the header and between every two pasted sections is gone (it was a strip of page color between two same-color sections, and the first thing above a hero), and the first element in a section's content box adds no top margin. A page that opens with an ordinary block keeps its gap.
* Your own dark colors: the six dark palette colors can be set through the pastetheme_dark_colors option. They print after the stylesheet and replace the theme's navy and royal blue; unset ones keep the theme's.
* Light-only and dark-only pictures: an element with the class pt-light-only shows only in light mode and pt-dark-only only in dark, so a section can carry two versions of a picture. Safari drops light-dark() with images, which is why this is a class.

= 0.6.9 =
* The header's site title is no longer an h1. WordPress renders the Site Title block as an h1 unless told otherwise, so every page had two h1s (the hidden title beside the page's own heading); it is a plain paragraph now, hidden as before when a logo is set.
* The footer's last line reads "Made with PasteTheme" and links to pastetheme.com (the theme's one credit link, to its Theme URI), instead of "Made with WordPress."

= 0.6.8 =
* One content box: 72rem of content with a 1.5rem gutter each side (1200px edge to edge, a common content width), declared once as --pt-content-width and --pt-gutter. A section's .pt-wrap gets that box from the theme, Boxed sections use the same numbers, and theme.json now carries them for core blocks too (wideSize 72rem, root padding 1.5rem), so pasted sections and ordinary blocks share one edge. Core paragraphs in a page or post sit at a 40rem reading measure (contentSize).

= 0.6.7 =
* Every element inside a pasted section now sizes as a border box, not only the section's direct children. CSS an AI writes assumes a global border-box reset, and without it a button with a minimum height, or a card with width 100% and padding, grew or overflowed.
* A tall logo no longer swallows the header on desktop: the logo is capped at 40px high on every screen (32px on phones as before), so a square mark stays a small mark.
* Single posts have their own template (title, date, content) instead of the archive's title and excerpt.
* The archive's "Nothing found." line is a pattern, so it can be translated.

= 0.6.6 =
* The header no longer repeats the site name beside a logo. The Site Title block is hidden when the logo block holds an image; sites without a logo still show their name.

= 0.6.5 =
* The phone menu is a list again: rows sit flush with a hairline between them, children indented one step in the lighter weight, instead of every link floating in white space.

= 0.6.4 =
* Footer: the brand row (site title and one line) now spans the full width above the link groups; the column headings line up (WordPress's block gap had been pushing every column but the first down one step); rows sit closer on a mouse and keep the 44px height on touch; the last row no longer leaves a deep empty band.
* Author name corrected to Chattanooga Tshirt.

= 0.6.3 =
* A phone held sideways gets the menu button back. WordPress switches its overlay menu on window width alone, so a 844x390 screen was given the full menu inline: it wrapped to three rows and the floating header filled half the screen (78% on a 740x360 phone). The overlay now returns on any short screen, whatever its width.

= 0.6.2 =
* Keyboard focus rings on links, buttons and form controls: two rings so one always contrasts, drawn outside the cascade layer so site CSS cannot remove them.
* Phone and tablet breakpoints declared in theme.json (700px and 1100px), which is what WordPress 7.1 uses for per-viewport styles and for hiding a section on one screen size.
* The 44px minimum tap target now also applies on a laptop with a touchscreen, which reports a fine pointer and was missing it.

= 0.6.1 =
* Section width: a section set to Boxed in the editor now sits inside the page width with the same gutter as the rest of the content; Full width still lets its background run to both edges.

= 0.6.0 =
* A footer built like a footer: the site name and a line about you, then real headings with the pages grouped under them. Two columns on a phone, never one long list, four across on a desktop, and every link a 44px tap target. The legal line sits in its own row with the same gutter as the rest of the page.
* The back-to-top button no longer covers the last line of the footer.

= 0.5.0 =
* Light and dark accents: red and yellow on light, royal blue and cyan on dark. Links use a darkened accent on light and the second accent on dark.
* Phone hygiene: form controls at 16px or more on touch screens (no iOS zoom), 44px tap targets on menu links, the menu buttons, buttons, and a scheme switch if a plugin adds one, no sideways page scroll from a wide section, video and embeds shrink to fit.
* Logo sizing: the header sets the logo's real width (264px, the lockup at 40px tall), so WordPress writes matching width, height and srcset sizes and phones load a sharp file. The 40px height rule now applies only to dimensionless (SVG) logos. In dark mode the light logo is hidden only when a dark one exists.
* Child themes: the parent stylesheet loads first, then the child's own.
* 404 page links home through the site's real address (subdirectory installs included) and its words are translatable. The index template says "Nothing found." on an empty search and paginates long lists.
* Tags trimmed to what the theme ships.

= 0.4.0 =
* The paste engine (blocks, pipeline, abilities, the setup screen, search fields, hardened defaults), the contact forms, the social and schema tags, redirects and the dark-mode switch moved out of the theme into plugins. The theme is now the design shell only.
* Light and dark color scheme, keyed on the device setting with no flash; a plugin toggle may remember a visitor's choice. Dark values override the palette presets in one place in style.css.
* Optional second logo for dark grounds: when the Site Logo carries a second image with the class custom-logo--dark, dark mode shows it in place of the light one.
* Starter homepage now uses the palette presets, so it reads correctly in both schemes.
* Brand palette: navy contrast, five `brand-*` presets. Quicksand (self-hosted, OFL, variable 300 to 700) on headings.
* One typeface: Quicksand 700 on headings, 400 body, 300 for lead/secondary text. Pill buttons (999px), 1rem form-control radius.

= 0.3.0 and earlier =
* Before 0.4.0 the paste engine, contact forms, the setup screen and the search fields shipped inside the theme. They now live in plugins.

== Upgrade Notice ==

= 0.7.8 =
Nothing to do after updating. Posts with comments open now show them and the comment form; everything else looks and works the same.

= 0.7.7 =
Nothing to do after updating. Section edges stay off until a section-edge class is on the page; the theme recommends nothing and reads no new settings.
