=== InTouchDesign ===
Contributors: intouchdesigndev
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.3.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Tags: custom-colors, custom-logo, custom-menu, editor-style, featured-images, threaded-comments, wide-blocks, translation-ready

A clean, fast theme for company and B2B websites: a full-width hero carousel, ready-made block patterns for services, team, case studies and pricing, and starter pages you can preview from the Customizer.

== Description ==

InTouchDesign is a lightweight hybrid theme: classic PHP templates for predictable performance, with colors, typography and spacing managed through theme.json so the block editor and the front end always match.

What you get:

* **Starter content.** On a brand-new site, Appearance > Customize previews the Home, About Us, Services, Our Team, Case Studies and Contact Us pages, a Primary and a Footer menu and a static front page (WordPress starter content). Nothing is created until you click "Save & Publish", and it is never applied to a site that already has content.
* **16 block patterns** (category "InTouchDesign"): hero carousel, services grids, team grids, case studies, stats banner, FAQ accordion, pricing table, benefits checklist, contact strip and more. Every pattern is made of normal, editable blocks.
* **Customizer options:** the site title beside the logo or the logo alone, four header layouts, sticky header, page-title toggle, footer columns, copyright text and social links, a color picker for the ten palette colors, and a font picker for headings (H1-H6) and body text over 13 self-hosted fonts.
* **Fast by default:** no jQuery dependency, no external font or script requests, `filemtime()`-based cache busting.
* **Accessible:** skip link, keyboard-friendly menu, visible focus states, respects `prefers-reduced-motion`.
* **Translation-ready.**

== Installation ==

1. Upload the theme folder to `/wp-content/themes/`, or install the zip via Appearance > Themes > Add New > Upload Theme.
2. Activate the theme from Appearance > Themes.
3. On a new site, open Appearance > Customize to preview the starter pages; on an existing site, insert the patterns from the block inserter (category "InTouchDesign").
4. Adjust the header, footer, colors and fonts from Appearance > Customize.

== Frequently Asked Questions ==

= Does this theme support Full Site Editing? =

No. InTouchDesign is a hybrid theme: theme.json drives Global Styles and the block editor, while the template structure stays classic PHP.

= How do I change the theme's colors and fonts? =

Appearance > Customize > InTouchDesign Colors and InTouchDesign Fonts. Every color you leave alone keeps its default.

= Are there widget areas? =

Yes: up to four footer columns (Appearance > Widgets). Two theme widgets are included, "Contact" and "Hours".

= Why doesn't the Contact page have a form? =

The theme itself does not include form functionality. Install any form plugin and add its block or shortcode to the Contact page; until then the page offers an email button.

= Do the demo images come with the theme? =

The theme ships neutral placeholder graphics so it works out of the box. Replace them with your own photos in the Media Library or the block editor.

= Can I preview the starter pages later? =

The Customizer only offers starter content on a brand-new site. On an existing site you can still insert every pattern from the block inserter (category "InTouchDesign") at any time.

== Changelog ==

= 1.3.0 =
* Two new fonts in the font picker, Syne and Plus Jakarta Sans, self-hosted like the others. Syne sets its figures on the line, so prices and dates read evenly.
* Plugins can add fonts to the font picker through the `itd_font_catalog` filter, with their files hosted by the plugin itself; a font no heading or body text uses loads nothing.
* Bold words and form labels in the body text use the font's real semibold instead of a bold the browser draws from the regular weight.
* Footer links, the social icons' circles and the keyboard focus ring take the footer's text color, so they stay readable on the footer's brand background.
* Form fields (contact form, search, comments) have a border that stands out against the page, placeholders in the muted text color, and contact-form drop-down menus and check boxes in the theme's colors.
* A contact form's error message stays readable on a dark page.
* Striped tables are striped with the palette's surface color, so their text stays readable with a dark palette.
* The image-only hero slider shows its photos without the tinted overlay meant for the full-screen slider.
* A post's text keeps a side margin on small screens instead of touching the edges of the screen; a full-width block still reaches both edges.
* The current menu item is styled for the parents of the current page too, and the Blog item is highlighted on the blog's own views (a single post, a category, a tag, a date or an author archive).

= 1.2.1 =
* Blog cards and a post's opening photo are printed like any picture of the media library: a phone downloads a small copy instead of the 1024px file, the box is sized before the picture arrives, and cards below the first ones load when they are needed. Before, every card of a blog page downloaded its large picture at once.
* The header switches to the menu button up to 1024px wide, instead of 782px. Between the two, on a tablet held upright or a narrow window, the logo, the menu and the header button no longer fit on one row: menu labels broke onto two lines and the logo shrank. Menu labels, the site title and the header button now never break inside themselves; a menu too long for one row wraps between its items.

= 1.2.0 =
* Menus with sub-items: on a computer each sub-menu opens as a panel under its parent, with the mouse or the keyboard; on a phone it opens with the arrow button beside its parent, and without JavaScript it stays open. Before, the sub-items showed as a bulleted list that stretched the header.
* Smooth scrolling to the anchors of a page, stopping below a sticky header (Appearance > Customize > InTouchDesign Header, on by default). Nothing moves for visitors who ask for reduced motion.
* Details blocks open and close with a short animation, again not for visitors who ask for reduced motion.
* A post's featured image is its cover, on its own page and on its card in the blog.
* A post opens with its categories, its title, its date and its author; the blog cards show the category above the title.
* A counter can carry its final number in the page, so it reads right without JavaScript; with it, it counts up from zero when it comes into view.
* The page's opening photo gets the browser's priority instead of the header logo, and only that photo loads at once: every later picture waits until it is needed.
* The header logo keeps its place while it loads, so the page no longer jumps down when it arrives.
* The hero slider is drawn as a slider from the first paint: it no longer jumps into place when its script starts. With scripting off every slide still reads one after another.
* The hero slides cross-fade: the next one fades in over the current one, which no longer vanishes first and shows the background between two photos. Visitors who ask for reduced motion keep an instant change.
* The slider's pause icon sits centred in its button, like the play icon.
* The strings visitors see come with an Italian translation.

= 1.1.0 =
* Buttons read as light text on the brand color, with one hover tone shared by the stylesheet and the block editor.
* Page text (paragraphs, lists and the like) no longer inherits the brand color.
* New Customizer setting for the header button's label and link (Appearance > Customize > InTouchDesign Header).
* Playfair Display gains a real italic weight, and Parisienne arrives as a script font preset for the block editor.
* The hero slider gains an image-only variant, with an optional pause/resume button.

= 1.0.0 =
* First public release.
* Hybrid theme: classic PHP templates with colors, typography and spacing driven by theme.json, so the editor and the front end match.
* Starter content for a new site: Home, About Us, Services, Our Team, Case Studies and Contact Us, a Primary and a Footer menu and a static front page, previewed in the Customizer and created only when you publish.
* 16 block patterns in the "InTouchDesign" category, all made of normal editable blocks.
* Customizer: the site title beside the logo or the logo alone, four header layouts, sticky header, page-title toggle, footer columns, copyright and social links, a picker for the ten palette colors and one for headings and body text over 11 self-hosted fonts.
* Two widgets for the footer columns, "Contact" and "Hours".
* No jQuery, no external font or script requests, `filemtime()` cache busting.
* Skip link, keyboard-friendly menu, visible focus states, respects `prefers-reduced-motion`.

== Copyright ==

InTouchDesign, (C) 2026 InTouchDesign
InTouchDesign is distributed under the terms of the GNU General Public License v2 or later.

InTouchDesign bundles the following third-party resources, all GPL-compatible:

== Resources ==

* Fonts (self-hosted in `assets/fonts/`): Manrope, Fraunces, Inter, Poppins, Playfair Display, Merriweather, Lora, Montserrat, Nunito, Work Sans, DM Serif Display, Syne and Plus Jakarta Sans, plus a Playfair Display Italic weight and Parisienne (a decorative script, available as a block editor font family, not one of the font picker's 13 heading/body choices). All are licensed under the SIL Open Font License 1.1 (see `assets/fonts/OFL.txt`); each font's copyright line is listed in `assets/fonts/FONTS.txt`.
* Images (`assets/images/`): original abstract placeholder graphics created for this theme and released under the GPLv2 or later, like the code. They exist only so the starter content renders out of the box; replace them with your own photos.
* `screenshot.png` is a screenshot of this theme's own starter content.
* Code: written for this theme by InTouchDesign, GPLv2 or later (see LICENSE).
