# Layouts and shared settings

## Wrap page content

`layout/theme.html` is the default wrapper. Use the exact content placeholder:

```html
<div class="theme" style="background:[[ settings.background ]]">
  <template gs-group="header"></template>
  <template gs-slot="layout"></template>
  <template gs-group="footer"></template>
</div>
```

Do not emit a second HTML document with `html`, `head` and `body`; GrowSite owns the surrounding document. In page JSON choose `"layout":"landing"` to use `layout/landing.html`, or `"layout":false` to disable the theme wrapper. Omission selects `theme`.

## Shared section groups

Create `sections/header.json`:

```json
{"type":"header","sections":{"main":{"type":"header"}},"order":["main"]}
```

The `main` instance uses `sections/header.html`. Its schema still requires a name and can define settings. Sections need presets to be offered for addition. Groups let a common header/footer be edited across pages, rather than duplicating values in every page template.

Saved group overrides live in `theme_settings.html.groups`. Individual page sections live in the page document. Keep the group section IDs and `order` list consistent. A new native theme should include global settings so the current Loom settings panel exposes its shared configuration.

Platform navigation, legal information and branding remain platform features. A theme group does not automatically replace all system chrome. Check the installed theme in the actual builder and public renderer for duplicated headers.

## Global settings

`config/settings_schema.json`:

```json
[{"name":"Appearance","settings":[{"type":"color","id":"background","label":"Background","default":"#f4f6ef"},{"type":"font_picker","id":"font","label":"Font","default":"Inter"}]}]
```

`config/settings_data.json`:

```json
{"current":{"background":"#f4f6ef","font":"Inter"}}
```

Read them as `settings.background` and `settings.font`, not `section.settings`. Customer overrides are stored in `theme_settings.html.settings`. Global IDs must stay stable; setting a field named `accent` does not automatically restyle platform buttons. Use the value explicitly in your markup or styles.

## Multi-page templates

Add another `templates/<name>.json` with a title, sections and order, referencing existing definitions. Keep `home.json` for the catalog entry. A template initializes a page; editing its defaults is not a bulk rewrite of customers' saved content. Verify new sites and existing sites separately when releasing changes.
