backend:
  name: git-gateway
  branch: main

# Local development (run `npx decap-server` and visit /admin/?local=true)
local_backend: true

site_url: https://mrchrisschulz.com
display_url: https://mrchrisschulz.com
logo_url: https://mrchrisschulz.com/profile.png

publish_mode: editorial_workflow

media_folder: 'src/assets/images/uploads'
public_folder: '/_astro'

collections:
  - name: notes
    label: Notes
    label_singular: Note
    description: 'Short editorial pieces — paper commentary, clinical reflections, updates and explainers.'
    folder: 'src/content/notes'
    create: true
    slug: '{{slug}}'
    extension: mdx
    format: frontmatter
    preview_path: 'notes/{{slug}}'
    summary: '{{title}} — {{publishDate}}'
    sortable_fields: ['publishDate', 'title', 'type']
    view_filters:
      - label: Drafts
        field: draft
        pattern: true
      - label: Paper commentary
        field: type
        pattern: paper-commentary
      - label: Clinical reflection
        field: type
        pattern: clinical-reflection
      - label: For patients
        field: type
        pattern: patient-faq
    fields:
      - { label: 'Title', name: 'title', widget: 'string' }
      - {
          label: 'Summary',
          name: 'summary',
          widget: 'text',
          hint: 'A 1–2 sentence lede shown on cards and used as the meta description.',
        }
      - { label: 'Publish date', name: 'publishDate', widget: 'datetime' }
      - {
          label: 'Updated date',
          name: 'updatedDate',
          widget: 'datetime',
          required: false,
        }
      - label: 'Type'
        name: 'type'
        widget: 'select'
        options:
          - { label: 'Paper commentary', value: 'paper-commentary' }
          - { label: 'Clinical reflection', value: 'clinical-reflection' }
          - { label: 'Update', value: 'update' }
          - { label: 'For patients (FAQ)', value: 'patient-faq' }
          - { label: 'Conference notes', value: 'conference-report' }
      - label: 'Audience'
        name: 'audience'
        widget: 'select'
        default: 'patient'
        options:
          - { label: 'Patients', value: 'patient' }
          - { label: 'Clinicians', value: 'clinician' }
          - { label: 'Mixed (patients & colleagues)', value: 'mixed' }
      - label: 'Related conditions'
        name: 'relatedConditions'
        widget: 'relation'
        collection: 'procedures'
        search_fields: ['title']
        value_field: '{{slug}}'
        display_fields: ['title']
        multiple: true
        required: false
        hint: 'Tag this note with the conditions it relates to. Posts surface automatically on each tagged procedure page.'
      - label: 'Hero image'
        name: 'heroImage'
        widget: 'image'
        required: false
        hint: 'Optional banner image, 16:9 aspect, ~1600x900.'
      - label: 'Hero alt text'
        name: 'heroAlt'
        widget: 'string'
        required: false
      - label: 'Paper discussed (optional)'
        name: 'paper'
        widget: 'object'
        required: false
        collapsed: true
        fields:
          - { label: 'Title', name: 'title', widget: 'string' }
          - { label: 'Authors', name: 'authors', widget: 'string', required: false }
          - { label: 'Journal', name: 'journal', widget: 'string', required: false }
          - { label: 'Year', name: 'year', widget: 'number', required: false }
          - { label: 'DOI', name: 'doi', widget: 'string', required: false }
          - { label: 'URL', name: 'url', widget: 'string', required: false }
      - {
          label: 'Draft (do not publish yet)',
          name: 'draft',
          widget: 'boolean',
          default: false,
          required: false,
        }
      - { label: 'Body', name: 'body', widget: 'markdown' }

  - name: procedures
    label: Procedures
    label_singular: Procedure
    description: 'Procedure / condition pages. Below Summary, optional fields labelled “(schema)” or “for search / schema” are not shown on the public site — they feed Google, the sitemap, and AI indexes. Each field has a short hint; see ADMIN.md § Procedures for when to edit them.'
    folder: 'src/content/procedures'
    create: true
    slug: '{{slug}}'
    extension: mdx
    format: frontmatter
    preview_path: 'procedures/{{group}}/{{slug}}'
    sortable_fields: ['order', 'title', 'group']
    view_groups:
      - { label: 'Group', field: group }
    fields:
      - { label: 'Title', name: 'title', widget: 'string' }
      - {
          label: 'Short title',
          name: 'shortTitle',
          widget: 'string',
          required: false,
          hint: 'Optional — used in cards and breadcrumbs if the full title is long.',
        }
      - label: 'Group'
        name: 'group'
        widget: 'select'
        options:
          - { label: 'Functional oculoplastic', value: 'functional' }
          - { label: 'Cosmetic oculoplastic', value: 'cosmetic' }
          - { label: 'Lacrimal', value: 'lacrimal' }
          - { label: 'Orbital', value: 'orbital' }
          - { label: 'General ophthalmology', value: 'general' }
      - {
          label: 'Order within group',
          name: 'order',
          widget: 'number',
          default: 99,
          value_type: 'int',
        }
      - { label: 'Summary', name: 'summary', widget: 'text' }
      - {
          label: 'Content last updated',
          name: 'updateDate',
          widget: 'datetime',
          required: false,
          hint: 'Optional. Set when you substantially revise this page (same idea as Updated date on Notes). Drives sitemap lastmod for Google — not shown on the page.',
        }
      - label: 'Procedure type (for search / schema)'
        name: 'procedureType'
        widget: 'select'
        required: false
        default: 'SurgicalProcedure'
        options:
          - { label: 'Surgical', value: 'SurgicalProcedure' }
          - { label: 'Therapeutic (e.g. botulinum toxin)', value: 'TherapeuticProcedure' }
          - { label: 'Diagnostic / assessment', value: 'DiagnosticProcedure' }
        hint: 'Feeds Google medical structured data. Most operations are Surgical; botulinum is Therapeutic; assessment-only pages (e.g. watery eye) are Diagnostic. Not shown on the page.'
      - {
          label: 'Body location (schema)',
          name: 'bodyLocation',
          widget: 'string',
          required: false,
          hint: 'Short phrase for search engines, e.g. “Upper eyelid”, “Orbit”. Not shown on the page.',
        }
      - {
          label: 'How performed (schema)',
          name: 'howPerformed',
          widget: 'text',
          required: false,
          hint: 'One or two factual sentences (setting, approach). Not shown on the page — keep plain English, no outcome claims.',
        }
      - {
          label: 'Preparation (schema)',
          name: 'preparation',
          widget: 'text',
          required: false,
          hint: 'Pre-op / clinic preparation in brief. Not shown on the page.',
        }
      - {
          label: 'Follow-up (schema)',
          name: 'followup',
          widget: 'text',
          required: false,
          hint: 'Aftercare and recovery in brief. Not shown on the page.',
        }
      - {
          label: 'Hero image',
          name: 'heroImage',
          widget: 'image',
          required: false,
        }
      - {
          label: 'Hero alt text',
          name: 'heroAlt',
          widget: 'string',
          required: false,
        }
      - label: 'FAQs'
        name: 'faqs'
        widget: 'list'
        required: false
        fields:
          - { label: 'Question', name: 'q', widget: 'string' }
          - { label: 'Answer', name: 'a', widget: 'text' }
      - {
          label: 'Cross-linked from groups',
          name: 'crossLinkedFrom',
          widget: 'select',
          multiple: true,
          required: false,
          options:
            ['functional', 'cosmetic', 'lacrimal', 'orbital', 'general'],
        }
      - { label: 'NHS only', name: 'nhsOnly', widget: 'boolean', default: false, required: false }
      - { label: 'Private only', name: 'privateOnly', widget: 'boolean', default: false, required: false }
      - { label: 'Draft', name: 'draft', widget: 'boolean', default: false, required: false }
      - { label: 'Body', name: 'body', widget: 'markdown' }

  - name: site
    label: Site content
    description: 'Editable text and lists across the static pages (Home, Practice, About, Research, Testimonials, Patient Information, Procedure groups).'
    delete: false
    editor:
      preview: false
    files:
      - name: practice
        label: Practice details (contact · fees · referral · location)
        file: 'src/content/site/practice.yml'
        description: 'Used by the footer, contact page, patient information page and the contact form.'
        fields:
          - label: 'Secretary'
            name: 'secretary'
            widget: 'object'
            fields:
              - { label: 'Name', name: 'name', widget: 'string' }
              - { label: 'Email', name: 'email', widget: 'string', hint: 'Used by internal scripts; the public site routes enquiries through the contact form.' }
              - { label: 'Hours', name: 'hours', widget: 'string', hint: 'Short line shown beneath the contact card.' }
          - label: 'Contact form (website enquiries)'
            name: 'contactForm'
            widget: 'object'
            collapsed: true
            fields:
              - {
                  label: 'Recipient email for form submissions',
                  name: 'recipientEmail',
                  widget: 'string',
                  hint: 'Enquiry emails are sent here (HTTPS + spam checks). After changing this, publish so the site rebuilds. Also set Resend / Turnstile in Netlify — see ADMIN.md.',
                }
          - label: 'NHS pathway'
            name: 'nhs'
            widget: 'object'
            fields:
              - { label: 'Trust name', name: 'trustName', widget: 'string' }
              - { label: 'Short pathway sentence (footer / contact form)', name: 'pathwayShort', widget: 'text' }
              - { label: 'Long pathway sentence (Contact page card)', name: 'pathwayLong', widget: 'text' }
          - label: 'Emergency note'
            name: 'emergency'
            widget: 'object'
            fields:
              - { label: 'Text', name: 'text', widget: 'text' }
          - label: 'Referral pathways (Patient Information page)'
            name: 'referralPathways'
            widget: 'list'
            fields:
              - { label: 'Title', name: 'title', widget: 'string' }
              - { label: 'Body', name: 'body', widget: 'text' }
          - label: 'Fees'
            name: 'fees'
            widget: 'object'
            fields:
              - label: 'Fee items'
                name: 'items'
                widget: 'list'
                fields:
                  - { label: 'Item', name: 'item', widget: 'string' }
                  - { label: 'Value', name: 'value', widget: 'string' }
              - { label: 'Small print under the fee table', name: 'smallPrint', widget: 'text' }
              - { label: 'Policy paragraph (Contact page)', name: 'policyNote', widget: 'text' }
              - { label: 'Patient Information intro paragraph', name: 'patientInfoIntro', widget: 'text' }
          - label: 'Insurers (recognised)'
            name: 'insurers'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Note (shown on homepage and contact)', name: 'note', widget: 'text' }
              - label: 'Insurer logos'
                name: 'items'
                widget: 'list'
                fields:
                  - { label: 'Name', name: 'name', widget: 'string' }
                  - { label: 'Logo path (under /public)', name: 'logo', widget: 'string', hint: 'e.g. /brand/insurers/aviva.png' }
          - label: 'Locations (used by About page block)'
            name: 'locations'
            widget: 'list'
            fields:
              - { label: 'Name', name: 'name', widget: 'string' }
              - label: 'Types (one or more — shown as badges)'
                name: 'types'
                widget: 'select'
                options: ['NHS', 'Private']
                multiple: true
                required: false
                hint: 'Tick both if you see NHS and private patients at this site.'
              - { label: 'Address (single line)', name: 'address', widget: 'string', required: false }
              - { label: 'Description', name: 'description', widget: 'text', required: false }
              - { label: 'Maps embed URL', name: 'mapsEmbedUrl', widget: 'string', required: false, hint: 'Paste the src URL from a Google Maps "Embed a map" iframe to show the map under the card.' }
              - { label: 'Directions URL', name: 'directionsUrl', widget: 'string', required: false }
          - label: 'Hospital (primary place of work)'
            name: 'hospital'
            widget: 'object'
            fields:
              - { label: 'Name', name: 'name', widget: 'string' }
              - label: 'Address lines'
                name: 'addressLines'
                widget: 'list'
                field: { label: 'Line', name: 'line', widget: 'string' }
              - { label: 'Postcode', name: 'postcode', widget: 'string' }
              - { label: 'Parking', name: 'parking', widget: 'string' }
              - { label: 'Public transport', name: 'publicTransport', widget: 'string' }
              - { label: 'Maps embed URL', name: 'mapsEmbedUrl', widget: 'string' }
              - { label: 'Directions URL', name: 'directionsUrl', widget: 'string' }
          - label: 'Footer footnote (small grey text at the bottom of every page)'
            name: 'legalFootnote'
            widget: 'text'
            hint: 'Use {year} and it will be replaced with the current year automatically. HTML allowed (use <br/> for line breaks).'
            required: false

      - name: about
        label: About page
        file: 'src/content/site/about.yml'
        description: 'Bio paragraphs, training timeline, awards, leadership and memberships.'
        fields:
          - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
          - { label: 'Hero title (plain part)', name: 'heroTitlePlain', widget: 'string' }
          - { label: 'Hero title (italic accent)', name: 'heroTitleAccent', widget: 'string' }
          - { label: 'Hero lede', name: 'heroLede', widget: 'text' }
          - { label: 'Profile line (sidebar)', name: 'profileLine', widget: 'text', hint: 'Use line breaks; both lines are shown small in the bio sidebar.' }
          - label: 'Bio paragraphs'
            name: 'bioParagraphs'
            widget: 'list'
            field: { label: 'Paragraph', name: 'text', widget: 'markdown', minimal: true, hint: 'Markdown links and *italic* / **bold** are supported.' }
          - label: 'Pull quote'
            name: 'pullQuote'
            widget: 'object'
            fields:
              - { label: 'Quote', name: 'quote', widget: 'text' }
              - { label: 'Cite (name)', name: 'cite', widget: 'string' }
              - { label: 'Cite (role/year)', name: 'citeRole', widget: 'string' }
          - label: 'Training timeline'
            name: 'trainingTimeline'
            widget: 'list'
            fields:
              - { label: 'Year', name: 'year', widget: 'string' }
              - { label: 'Role', name: 'role', widget: 'string' }
              - { label: 'Place', name: 'place', widget: 'string' }
              - { label: 'Note', name: 'note', widget: 'text', required: false }
          - label: 'Awards'
            name: 'awards'
            widget: 'list'
            fields:
              - { label: 'Year', name: 'year', widget: 'string' }
              - { label: 'Title', name: 'title', widget: 'string' }
              - { label: 'Body', name: 'body', widget: 'text' }
          - label: 'Leadership'
            name: 'leadership'
            widget: 'list'
            fields:
              - { label: 'Role', name: 'role', widget: 'string' }
              - { label: 'Organisation', name: 'org', widget: 'string' }
          - label: 'Memberships'
            name: 'memberships'
            widget: 'list'
            field: { label: 'Membership', name: 'name', widget: 'string' }
          - { label: 'Regulatory note (small print)', name: 'regulatoryNote', widget: 'text' }

      - name: research
        label: Research page
        file: 'src/content/site/research.yml'
        description: 'Awards, outcome tools, teaching highlights — the publications list comes live from ORCID.'
        fields:
          - { label: 'Hero eyebrow', name: 'heroEyebrow', widget: 'string' }
          - { label: 'Hero title (plain part)', name: 'heroTitlePlain', widget: 'string' }
          - { label: 'Hero title (italic accent)', name: 'heroTitleAccent', widget: 'string' }
          - { label: 'Hero lede', name: 'heroLede', widget: 'text' }
          - label: 'Awards'
            name: 'awards'
            widget: 'list'
            fields:
              - { label: 'Year', name: 'year', widget: 'string' }
              - { label: 'Title', name: 'title', widget: 'string' }
              - { label: 'Body', name: 'body', widget: 'text' }
          - label: 'Outcome tools section'
            name: 'tools'
            widget: 'object'
            fields:
              - { label: 'Intro', name: 'intro', widget: 'text' }
              - label: 'Tools'
                name: 'items'
                widget: 'list'
                fields:
                  - { label: 'Acronym (e.g. TEARS)', name: 'name', widget: 'string' }
                  - { label: 'Full name', name: 'full', widget: 'string' }
                  - { label: 'Body', name: 'body', widget: 'text' }
          - label: 'Pull quote'
            name: 'pullQuote'
            widget: 'object'
            fields:
              - { label: 'Quote', name: 'quote', widget: 'text' }
              - { label: 'Cite', name: 'cite', widget: 'string' }
              - { label: 'Cite (role/context)', name: 'citeRole', widget: 'string' }
          - label: 'Teaching section'
            name: 'teaching'
            widget: 'object'
            fields:
              - { label: 'Intro', name: 'intro', widget: 'text' }
              - label: 'Highlights'
                name: 'highlights'
                widget: 'list'
                fields:
                  - { label: 'Title', name: 'title', widget: 'string' }
                  - { label: 'Body', name: 'body', widget: 'text' }

      - name: testimonials
        label: Testimonials
        file: 'src/content/site/testimonials.yml'
        description: 'Anonymised patient feedback. Never include patient names or identifying detail.'
        fields:
          - { label: 'Hero eyebrow', name: 'heroEyebrow', widget: 'string' }
          - { label: 'Hero title (before italic word)', name: 'heroTitlePlain', widget: 'string', hint: 'Include the trailing space, e.g. "In ".' }
          - { label: 'Hero title (italic word)', name: 'heroTitleAccent', widget: 'string' }
          - { label: 'Hero title (after italic word)', name: 'heroTitleSuffix', widget: 'string', hint: 'Include the leading space, e.g. " words.".' }
          - { label: 'Hero lede', name: 'heroLede', widget: 'text' }
          - label: 'Testimonials'
            name: 'items'
            widget: 'list'
            fields:
              - { label: 'Quote', name: 'quote', widget: 'text' }
              - { label: 'Attribution (Procedure · Year)', name: 'attribution', widget: 'string' }
          - label: 'Pull quote'
            name: 'pullQuote'
            widget: 'object'
            fields:
              - { label: 'Quote', name: 'quote', widget: 'text' }
              - { label: 'Cite', name: 'cite', widget: 'string' }
              - { label: 'Cite (role/context)', name: 'citeRole', widget: 'string' }
          - { label: 'A note on reviews (small print)', name: 'reviewsNote', widget: 'text' }
          - label: 'Doctify reviews block'
            name: 'doctify'
            widget: 'object'
            hint: 'Headings for the verified-reviews panel shown at the top of the Testimonials page.'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title', name: 'title', widget: 'string' }
              - { label: 'Lede', name: 'lede', widget: 'text' }

      - name: home
        label: Home page
        file: 'src/content/site/home.yml'
        description: 'Hero, intro, pillars headline, pull quote, home testimonials, notes-strip and publications copy.'
        fields:
          - label: 'Hero'
            name: 'hero'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title (your name)', name: 'title', widget: 'string' }
              - { label: 'Subtitle (clinical scope)', name: 'subtitle', widget: 'string' }
              - { label: 'Credentials line (small)', name: 'credentials', widget: 'string' }
              - { label: 'Hero image alt text', name: 'imageAlt', widget: 'string' }
              - { label: 'CTA button label', name: 'ctaLabel', widget: 'string' }
              - { label: 'CTA button link', name: 'ctaHref', widget: 'string' }
          - label: 'Trust strip (above the about block)'
            name: 'trustStrip'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Reviews link label', name: 'reviewsLabel', widget: 'string' }
          - label: 'Intro block (about section)'
            name: 'intro'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title (plain)', name: 'title', widget: 'string' }
              - { label: 'Title (italic accent)', name: 'titleAccent', widget: 'string' }
              - { label: 'Lede', name: 'lede', widget: 'text' }
              - label: 'Paragraphs'
                name: 'paragraphs'
                widget: 'list'
                field: { label: 'Paragraph', name: 'text', widget: 'markdown', minimal: true, hint: 'Markdown links and *italic* / **bold** are supported.' }
          - label: 'Pillars grid'
            name: 'pillars'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title (plain)', name: 'title', widget: 'string' }
              - { label: 'Title (italic accent)', name: 'titleAccent', widget: 'string' }
              - { label: 'Lede', name: 'lede', widget: 'text' }
          - label: 'Pull quote'
            name: 'pullQuote'
            widget: 'object'
            fields:
              - { label: 'Quote', name: 'quote', widget: 'text' }
              - { label: 'Cite', name: 'cite', widget: 'string' }
              - { label: 'Cite (role/context)', name: 'citeRole', widget: 'string' }
          - label: 'Testimonials block (homepage only)'
            name: 'testimonials'
            widget: 'object'
            hint: 'Three short quotes shown on the homepage. The full Testimonials page has its own list.'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title (plain)', name: 'title', widget: 'string' }
              - { label: 'Title (italic accent)', name: 'titleAccent', widget: 'string' }
              - label: 'Items'
                name: 'items'
                widget: 'list'
                fields:
                  - { label: 'Quote', name: 'quote', widget: 'text' }
                  - { label: 'Attribution', name: 'attribution', widget: 'string' }
          - label: 'Notes strip'
            name: 'notesStrip'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title (plain)', name: 'title', widget: 'string' }
              - { label: 'Title (italic accent)', name: 'titleAccent', widget: 'string' }
              - { label: 'Lede', name: 'lede', widget: 'text' }
          - label: 'Publications block'
            name: 'publications'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title (plain)', name: 'title', widget: 'string' }
              - { label: 'Title (italic accent)', name: 'titleAccent', widget: 'string' }
              - { label: 'Lede', name: 'lede', widget: 'text' }

      - name: patient-information
        label: Patient Information page
        file: 'src/content/site/patient-information.yml'
        description: 'Consultation steps, anaesthesia options, pre-op and post-op checklists. Fees / referral pathway content lives under Practice details.'
        fields:
          - label: 'Hero'
            name: 'hero'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title (plain part)', name: 'titlePlain', widget: 'string' }
              - { label: 'Title (italic accent)', name: 'titleAccent', widget: 'string' }
              - { label: 'Lede', name: 'lede', widget: 'text' }
          - label: 'Consultation section'
            name: 'consultation'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title', name: 'title', widget: 'string' }
              - label: 'Steps'
                name: 'steps'
                widget: 'list'
                fields:
                  - { label: 'Title', name: 'title', widget: 'string' }
                  - { label: 'Body', name: 'body', widget: 'text' }
          - label: 'Anaesthesia section'
            name: 'anaesthesia'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title', name: 'title', widget: 'string' }
              - { label: 'Lede', name: 'lede', widget: 'text' }
              - label: 'Options'
                name: 'options'
                widget: 'list'
                fields:
                  - { label: 'Title', name: 'title', widget: 'string' }
                  - { label: 'Body', name: 'body', widget: 'text' }
          - label: 'Pre-operative checklist'
            name: 'preOp'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title', name: 'title', widget: 'string' }
              - label: 'Items'
                name: 'items'
                widget: 'list'
                field: { label: 'Bullet', name: 'text', widget: 'string' }
          - label: 'Post-operative checklist'
            name: 'postOp'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title', name: 'title', widget: 'string' }
              - label: 'Items'
                name: 'items'
                widget: 'list'
                field: { label: 'Bullet', name: 'text', widget: 'string' }
          - label: 'Pull quote'
            name: 'pullQuote'
            widget: 'object'
            fields:
              - { label: 'Quote', name: 'quote', widget: 'text' }
              - { label: 'Cite', name: 'cite', widget: 'string' }
              - { label: 'Cite (role/context)', name: 'citeRole', widget: 'string' }
          - label: 'Fees section heading'
            name: 'feesSection'
            widget: 'object'
            hint: 'The fee table itself is in Practice details — only edit headings here.'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title', name: 'title', widget: 'string' }
          - label: 'Referral section heading'
            name: 'referralSection'
            widget: 'object'
            hint: 'The three referral cards (NHS / Insured / Self-pay) live in Practice details.'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title (plain part)', name: 'titlePlain', widget: 'string' }
              - { label: 'Title (italic accent)', name: 'titleAccent', widget: 'string' }

      - name: procedure-groups
        label: Procedure groups (labels & descriptions)
        file: 'src/content/site/procedure-groups.yml'
        description: 'The five group labels and short descriptions used on the homepage Pillars grid, the Procedures index, the four group landing pages and the footer Procedures column. URL slugs are not editable.'
        fields:
          - label: 'Functional oculoplastic'
            name: 'functional'
            widget: 'object'
            fields:
              - { label: 'Label (heading)', name: 'label', widget: 'string' }
              - {
                  label: 'Mega menu title (patient-facing)',
                  name: 'menuTitle',
                  widget: 'string',
                  required: false,
                  hint: 'Shown under the gold eyebrow in the desktop Procedures dropdown. Use plain language (e.g. tear ducts, eye socket). Omit only for groups not in that menu.',
                }
              - { label: 'Description', name: 'description', widget: 'text' }
          - label: 'Cosmetic oculoplastic'
            name: 'cosmetic'
            widget: 'object'
            fields:
              - { label: 'Label (heading)', name: 'label', widget: 'string' }
              - {
                  label: 'Mega menu title (patient-facing)',
                  name: 'menuTitle',
                  widget: 'string',
                  required: false,
                  hint: 'Shown under the gold eyebrow in the desktop Procedures dropdown. Use plain language (e.g. tear ducts, eye socket). Omit only for groups not in that menu.',
                }
              - { label: 'Description', name: 'description', widget: 'text' }
          - label: 'Lacrimal'
            name: 'lacrimal'
            widget: 'object'
            fields:
              - { label: 'Label (heading)', name: 'label', widget: 'string' }
              - {
                  label: 'Mega menu title (patient-facing)',
                  name: 'menuTitle',
                  widget: 'string',
                  required: false,
                  hint: 'Shown under the gold eyebrow in the desktop Procedures dropdown. Use plain language (e.g. tear ducts, eye socket). Omit only for groups not in that menu.',
                }
              - { label: 'Description', name: 'description', widget: 'text' }
          - label: 'Orbital'
            name: 'orbital'
            widget: 'object'
            fields:
              - { label: 'Label (heading)', name: 'label', widget: 'string' }
              - {
                  label: 'Mega menu title (patient-facing)',
                  name: 'menuTitle',
                  widget: 'string',
                  required: false,
                  hint: 'Shown under the gold eyebrow in the desktop Procedures dropdown. Use plain language (e.g. tear ducts, eye socket). Omit only for groups not in that menu.',
                }
              - { label: 'Description', name: 'description', widget: 'text' }
          - label: 'General ophthalmology'
            name: 'general'
            widget: 'object'
            fields:
              - { label: 'Label (heading)', name: 'label', widget: 'string' }
              - {
                  label: 'Mega menu title (patient-facing)',
                  name: 'menuTitle',
                  widget: 'string',
                  required: false,
                  hint: 'Shown under the gold eyebrow in the desktop Procedures dropdown. Use plain language (e.g. tear ducts, eye socket). Omit only for groups not in that menu.',
                }
              - { label: 'Description', name: 'description', widget: 'text' }
          - label: 'Procedures index hero (/procedures/)'
            name: 'indexHero'
            widget: 'object'
            hint: 'The top of the Procedures landing page.'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title (plain part)', name: 'titlePlain', widget: 'string' }
              - { label: 'Title (italic accent)', name: 'titleAccent', widget: 'string' }
              - { label: 'Lede', name: 'lede', widget: 'text' }
              - { label: 'Other section eyebrow', name: 'otherEyebrow', widget: 'string', hint: 'Above the General ophthalmology block (default: Other).' }
          - {
              label: 'Cross-linked annotation (above "Also relevant" list on group pages)',
              name: 'crossLinkedNote',
              widget: 'text',
              hint: 'Use {groupLabel} as a placeholder for the current group name (lowercased), e.g. "lacrimal".',
            }
          - { label: 'Cross-linked section heading', name: 'crossLinkedLabel', widget: 'string' }
          - label: 'Per-procedure Doctify panel'
            name: 'doctifyPanel'
            widget: 'object'
            hint: 'Shown on each procedure detail page, above the FAQs.'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title', name: 'title', widget: 'string' }
              - { label: 'Lede', name: 'lede', widget: 'text' }

      - name: notes-index
        label: Notes index page
        file: 'src/content/site/notes-index.yml'
        description: 'Hero, RSS link label, empty-state, and the type/audience label maps used across the Notes section.'
        fields:
          - label: 'Hero'
            name: 'hero'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Title (plain part)', name: 'titlePlain', widget: 'string' }
              - { label: 'Title (italic accent)', name: 'titleAccent', widget: 'string' }
              - { label: 'Lede', name: 'lede', widget: 'text' }
          - label: 'RSS'
            name: 'rss'
            widget: 'object'
            fields:
              - { label: 'Link label', name: 'label', widget: 'string' }
          - label: 'Empty state (when there are no notes yet)'
            name: 'emptyState'
            widget: 'object'
            fields:
              - { label: 'Eyebrow', name: 'eyebrow', widget: 'string' }
              - { label: 'Body', name: 'body', widget: 'text' }
          - { label: 'All-filter chip label', name: 'filterAllLabel', widget: 'string' }
          - label: 'Type labels — plural (section headings on the Notes index)'
            name: 'typeLabels'
            widget: 'object'
            collapsed: true
            fields:
              - { label: 'Paper commentary', name: 'paper-commentary', widget: 'string' }
              - { label: 'Clinical reflection', name: 'clinical-reflection', widget: 'string' }
              - { label: 'Update', name: 'update', widget: 'string' }
              - { label: 'For patients (FAQ)', name: 'patient-faq', widget: 'string' }
              - { label: 'Conference notes', name: 'conference-report', widget: 'string' }
          - label: 'Type labels — singular (cards, note pages, OG share cards)'
            name: 'typeLabelsSingular'
            widget: 'object'
            collapsed: true
            fields:
              - { label: 'Paper commentary', name: 'paper-commentary', widget: 'string' }
              - { label: 'Clinical reflection', name: 'clinical-reflection', widget: 'string' }
              - { label: 'Update', name: 'update', widget: 'string' }
              - { label: 'For patients (FAQ)', name: 'patient-faq', widget: 'string' }
              - { label: 'Conference notes', name: 'conference-report', widget: 'string' }
          - label: 'Audience labels (shown on individual note pages)'
            name: 'audienceLabels'
            widget: 'object'
            collapsed: true
            fields:
              - { label: 'Patient', name: 'patient', widget: 'string' }
              - { label: 'Clinician', name: 'clinician', widget: 'string' }
              - { label: 'Mixed', name: 'mixed', widget: 'string' }
