Response:
# Widget Customization Specification: Plumber Business

```json
{
  "widget": {
    "version": "1.0.0",
    "industry": "plumbing",
    "businessName": "ClearFlow Plumbing",
    "configuration": {
      "colors": {
        "primary": "#0A2540",
        "primaryLight": "#1A3A5C",
        "secondary": "#FFFFFF",
        "secondaryDark": "#F7F9FC",
        "accent": "#FF6B35",
        "accentHover": "#E55A28",
        "accentLight": "#FFE8DC",
        "textPrimary": "#0A2540",
        "textSecondary": "#5A6B7D",
        "textOnAccent": "#FFFFFF",
        "border": "#E2E8F0",
        "success": "#10B981",
        "error": "#EF4444",
        "shadow": "rgba(10, 37, 64, 0.15)"
      },
      "position": {
        "desktop": {
          "position": "bottom-right",
          "bottomOffset": "24px",
          "rightOffset": "24px",
          "zIndex": "9999"
        },
        "mobile": {
          "position": "bottom-right",
          "bottomOffset": "80px",
          "rightOffset": "16px",
          "zIndex": "9999"
        }
      },
      "dimensions": {
        "desktop": {
          "width": "400px",
          "height": "560px",
          "collapsedWidth": "72px",
          "collapsedHeight": "72px"
        },
        "mobile": {
          "width": "calc(100vw - 32px)",
          "height": "calc(100vh - 140px)",
          "maxWidth": "400px",
          "collapsedWidth": "64px",
          "collapsedHeight": "64px"
        },
        "breakpoint": "768px"
      },
      "avatar": {
        "type": "custom",
        "imageUrl": "/assets/avatars/plumber-avatar.svg",
        "fallbackIcon": "user-headset",
        "size": "48px",
        "borderWidth": "3px",
        "borderColor": "#FF6B35",
        "showBadge": true,
        "badgeColor": "#10B981",
        "badgeAnimation": "pulse"
      },
      "welcomeMessage": {
        "voiceGreeting": "G'day! You've reached ClearFlow Plumbing. I'm Sunaiva, their AI assistant. I can book you in for a leaky tap, schedule a gas fitting, or put you through to Dave for emergencies. How can I help?",
        "textGreeting": "G'day! 👋 I'm Sunaiva from ClearFlow Plumbing. I'm here to help you book a job, check our availability, or answer any questions. What do you need?",
        "showQuickActions": true,
        "quickActions": [
          {
            "label": "Book a Service",
            "action": "open-booking",
            "icon": "calendar"
          },
          {
            "label": "Emergency Repair",
            "action": "priority-queue",
            "icon": "alert-triangle"
          },
          {
            "label": "Get a Quote",
            "action": "open-quote",
            "icon": "calculator"
          },
          {
            "label": "Trading Hours",
            "action": "show-hours",
            "icon": "clock"
          }
        ]
      },
      "animations": {
        "entry": {
          "type": "slide-fade",
          "direction": "up",
          "duration": "400ms",
          "easing": "cubic-bezier(0.34, 1.56, 0.64, 1)",
          "delay": "800ms"
        },
        "idle": {
          "type": "subtle-float",
          "duration": "3s",
          "repeat": true,
          "translateY": "4px"
        },
        "notificationPulse": {
          "type": "pulse-ring",
          "color": "#FF6B35",
          "duration": "2s",
          "repeat": true,
          "delay": "5s"
        },
        "microInteractions": {
          "buttonHover": {
            "scale": "1.05",
            "duration": "150ms"
          },
          "messageAppear": {
            "type": "slide-up",
            "duration": "300ms"
          },
          "widgetOpen": {
            "type": "scale-fade",
            "duration": "250ms",
            "easing": "ease-out"
          }
        }
      },
      "typography": {
        "fontFamily": "'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
        "fontFamilyMono": "'JetBrains Mono', 'Fira Code', monospace",
        "sizes": {
          "header": {
            "fontSize": "18px",
            "fontWeight": "700",
            "lineHeight": "1.3"
          },
          "subheader": {
            "fontSize": "14px",
            "fontWeight": "600",
            "lineHeight": "1.4"
          },
          "body": {
            "fontSize": "15px",
            "fontWeight": "400",
            "lineHeight": "1.6"
          },
          "caption": {
            "fontSize": "12px",
            "fontWeight": "400",
            "lineHeight": "1.4"
          },
          "button": {
            "fontSize": "14px",
            "fontWeight": "600",
            "lineHeight": "1"
          }
        },
        "letterSpacing": {
          "header": "-0.02em",
          "body": "0",
          "caption": "0.02em"
        }
      },
      "buttons": {
        "primary": {
          "background": "#FF6B35",
          "backgroundHover": "#E55A28",
          "textColor": "#FFFFFF",
          "borderRadius": "12px",
          "padding": "14px 24px",
          "shadow": "0 4px 12px rgba(255, 107, 53, 0.3)",
          "shadowHover": "0 6px 20px rgba(255, 107, 53, 0.4)"
        },
        "secondary": {
          "background": "#F7F9FC",
          "backgroundHover": "#E2E8F0",
          "textColor": "#0A2540",
          "borderRadius": "12px",
          "padding": "14px 24px",
          "border": "1px solid #E2E8F0"
        },
        "ghost": {
          "background": "transparent",
          "backgroundHover": "#F7F9FC",
          "textColor": "#0A2540",
          "borderRadius": "8px",
          "padding": "8px 16px"
        },
        "icon": {
          "size": "40px",
          "borderRadius": "50%",
          "background": "#FFFFFF",
          "shadow": "0 2px 8px rgba(0, 0, 0, 0.1)"
        }
      },
      "darkMode": {
        "enabled": true,
        "autoDetect": true,
        "colors": {
          "background": "#0F172A",
          "backgroundSecondary": "#1E293B",
          "surface": "#334155",
          "textPrimary": "#F8FAFC",
          "textSecondary": "#94A3B8",
          "border": "#334155",
          "accent": "#FF6B35",
          "accentHover": "#FF8A5C",
          "shadow": "rgba(0, 0, 0, 0.4)"
        }
      },
      "industrySpecific": {
        "theme": "plumbing-trade",
        "decorativeElements": {
          "headerBackground": "linear-gradient(135deg, #0A2540 0%, #1A3A5C 100%)",
          "headerIcon": "water-droplet",
          "accentPattern": "subtle-pipe-grid",
          "serviceBadges": [
            { "icon": "droplet", "label": "Leak Detection" },
            { "icon": "wrench", "label": "Gas Fitting" },
            { "icon": "thermometer", "label": "Hot Water" },
            { "icon": "drain", "label": "Drainage" }
          ]
        },
        "quickBooking": {
          "enabled": true,
          "jobTypes": [
            { "id": "leak", "label": "Leak / Drip", "icon": "droplet", "estimatedTime": "1-2 hrs" },
            { "id": "blocked", "label": "Blocked Drain", "icon": "drain", "estimatedTime": "1-3 hrs" },
            { "id": "hotwater", "label": "Hot Water Issue", "icon": "thermometer", "estimatedTime": "2-4 hrs" },
            { "id": "tapware", "label": "Tap / Sink", "icon": "wrench", "estimatedTime": "1-2 hrs" },
            { "id": "gas", "label": "Gas Service", "icon": "flame", "estimatedTime": "1-2 hrs" },
            { "id": "emergency", "label": "Emergency", "icon": "alert-triangle", "estimatedTime": "ASAP", "priority": true }
          ]
        },
        "localContext": {
          "serviceAreas": [
            "Northern Suburbs", "Eastern Suburbs", "City & Inner West",
            "Hills District", "North Shore"
          ],
          "showAreaCheck": true,
          "afterHoursMessage": "Hi, it's outside our hours. For emergencies, call 0400 123 456. Otherwise, leave a message and we'll call you back tomorrow when we're back on the tools."
        }
      }
    }
  }
}
```

---

## CSS Custom Properties

```css
:root {
  /* ─────────────────────────────────────────────────────────
     COLOUR PALETTE - Plumber Theme
     ───────────────────────────────────────────────────────── */
  --sw-primary: #0A2540;
  --sw-primary-light: #1A3A5C;
  --sw-secondary: #FFFFFF;
  --sw-secondary-dark: #F7F9FC;
  --sw-accent: #FF6B35;
  --sw-accent-hover: #E55A28;
  --sw-accent-light: #FFE8DC;
  --sw-text-primary: #0A2540;
  --sw-text-secondary: #5A6B7D;
  --sw-text-on-accent: #FFFFFF;
  --sw-border: #E2E8F0;
  --sw-success: #10B981;
  --sw-error: #EF4444;
  --sw-shadow: rgba(10, 37, 64, 0.15);

  /* ─────────────────────────────────────────────────────────
     DIMENSIONS & SPACING
     ───────────────────────────────────────────────────────── */
  --sw-radius-sm: 8px;
  --sw-radius-md: 12px;
  --sw-radius-lg: 16px;
  --sw-radius-full: 9999px;

  --sw-spacing-xs: 4px;
  --sw-spacing-sm: 8px;
  --sw-spacing-md: 16px;
  --sw-spacing-lg: 24px;
  --sw-spacing-xl: 32px;

  --sw-widget-width: 400px;
  --sw-widget-height: 560px;
  --sw-collapsed-size: 72px;
  --sw-avatar-size: 48px;

  /* ─────────────────────────────────────────────────────────
     TYPOGRAPHY
     ───────────────────────────────────────────────────────── */
  --sw-font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --sw-font-mono: 'JetBrains Mono', 'Fira Code', monospace;

  --sw-font-size-xs: 12px;
  --sw-font-size-sm: 14px;
  --sw-font-size-md: 15px;
  --sw-font-size-lg: 18px;
  --sw-font-size-xl: 24px;

  --sw-font-weight-normal: 400;
  --sw-font-weight-medium: 500;
  --sw-font-weight-semibold: 600;
  --sw-font-weight-bold: 700;

  /* ─────────────────────────────────────────────────────────
     ANIMATIONS
     ───────────────────────────────────────────────────────── */
  --sw-transition-fast: 150ms ease;
  --sw-transition-normal: 250ms ease;
  --sw-transition-slow: 400ms cubic-bezier(0.34, 1.56, 0.64, 1);

  --sw-anim-slide-up: slideUp 300ms ease-out;
  --sw-anim-fade-in: fadeIn 250ms ease-out;
  --sw-anim-pulse: pulse 2s ease-in-out infinite;

  /* ─────────────────────────────────────────────────────────
     POSITIONING
     --──────────────────────────────────────────────────────── */
  --sw-position-bottom: 24px;
  --sw-position-right: 24px;
  --sw-position-z: 9999;
}

/* Mobile */
@media (max-width: 768px) {
  :root {
    --sw-widget-width: calc(100vw - 32px);
    --sw-widget-height: calc(100vh - 140px);
    --sw-collapsed-size: 64px;
    --sw-position-bottom: 80px;
    --sw-position-right: 16px;
  }
}

/* Dark Mode */
@media (prefers-color-scheme: dark) {
  :root {
    --sw-dark-mode: true;
    --sw-background: #0F172A;
    --sw-background-secondary: #1E293B;
    --sw-surface: #334155;
    --sw-text-primary: #F8FAFC;
    --sw-text-secondary: #94A3B8;
    --sw-border: #334155;
    --sw-shadow: rgba(0, 0, 0, 0.4);
  }
}
```

---

## Visual Reference

```
┌─────────────────────────────────────────────┐
│ ┌─ Header (Primary Blue #0A2540) ────────┐ │
│ │  💧 ClearFlow Plumbing          [─][×] │ │
│ └─────────────────────────────────────────┘ │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │ Avatar  │ G'day! I'm Sunaiva...    │   │
│  │   👤    │ I can book you in for    │   │
│  │         │ a service, handle emerg- │   │
│  │         │ encies, or answer your   │   │
│  │         │ questions.               │   │
│  └─────────────────────────────────────┘   │
│                    └─ Quick Actions ─────┐  │
│                    ┌──────────────────────┤  │
│                    │ 📅 Book a Service   │  │
│                    │ ⚠ Emergency Repair │  │
│                    │ 💰 Get a Quote      │  │
│                    │ 🕐 Trading Hours   │  │
│                    └──────────────────────┘  │
│                                             │
│  ┌─ Input Area ───────────────────────────┐ │
│  │ Type a message...        [🎤] [Send]  │ │
│  └────────────────────────────────────────┘ │
│                                             │
│  ┌─ FAB (collapsed) ─────────────────────┐ │
│  │  💧                              ⚫   │ │
│  │                              (pulse) │ │
│  └───────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
```

---

## Key Design Decisions

| Element | Choice | Rationale |
|---------|--------|-----------|
| **Primary Color** | `#0A2540` Deep Navy | Trust, professionalism, water/ Plumbing association |
| **Accent Color** | `#FF6B35` Burnt Orange | Urgency, action, Aussie tradie vibe, stands out against blue |
| **Position** | Bottom-right | Standard UX pattern, thumb-reach zone on mobile |
| **Font** | DM Sans | Clean, modern, highly legible, friendly but professional |
| **Quick Actions** | 4 cards | Reduced cognitive load - tradies want to


Response:
```json
{
  "$schema": "https://schema.sunaiva.com/widget/v1/config",
  "version": "1.0.0",
  "businessType": "electrician",
  "metadata": {
    "name": "Sparky AI Widget",
    "description": "Voice AI widget configured for Australian electrical trade businesses",
    "author": "Sunaiva",
    "lastModified": "2025-01-13"
  },
  "colors": {
    "primary": "#F5A623",
    "primaryHover": "#E09000",
    "primaryContrast": "#1A1A1A",
    "secondary": "#1E3A5F",
    "secondaryHover": "#2A4A73",
    "accent": "#00D4FF",
    "background": "#FFFFFF",
    "backgroundSecondary": "#F8F9FA",
    "textPrimary": "#1A1A1A",
    "textSecondary": "#5A5A5A",
    "textMuted": "#8A8A8A",
    "border": "#E5E5E5",
    "success": "#28A745",
    "error": "#DC3545",
    "warning": "#FFC107",
    "darkMode": {
      "primary": "#FFB800",
      "primaryHover": "#E6A600",
      "primaryContrast": "#1A1A1A",
      "secondary": "#2D4A6F",
      "secondaryHover": "#3D5A7F",
      "accent": "#00E5FF",
      "background": "#1A1A2E",
      "backgroundSecondary": "#252542",
      "textPrimary": "#FFFFFF",
      "textSecondary": "#B0B0B0",
      "textMuted": "#707070",
      "border": "#3A3A5C"
    }
  },
  "typography": {
    "fontFamily": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif",
    "fontFamilyMono": "'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', monospace",
    "sizes": {
      "header": "18px",
      "headerWeight": "700",
      "subheader": "16px",
      "subheaderWeight": "600",
      "body": "14px",
      "bodyWeight": "400",
      "caption": "12px",
      "captionWeight": "400",
      "button": "14px",
      "buttonWeight": "600"
    },
    "lineHeight": {
      "tight": "1.2",
      "normal": "1.5",
      "relaxed": "1.75"
    }
  },
  "dimensions": {
    "collapsed": {
      "desktop": {
        "width": "64px",
        "height": "64px",
        "borderRadius": "32px"
      },
      "mobile": {
        "width": "56px",
        "height": "56px",
        "borderRadius": "28px"
      }
    },
    "expanded": {
      "desktop": {
        "width": "400px",
        "height": "560px",
        "borderRadius": "16px"
      },
      "mobile": {
        "width": "calc(100vw - 32px)",
        "maxWidth": "400px",
        "height": "calc(100vh - 120px)",
        "maxHeight": "640px",
        "borderRadius": "16px"
      }
    },
    "position": {
      "desktop": {
        "bottom": "24px",
        "right": "24px",
        "zIndex": "9999"
      },
      "mobile": {
        "bottom": "16px",
        "right": "16px",
        "zIndex": "9999"
      }
    }
  },
  "avatar": {
    "type": "icon",
    "iconName": "lightning-bolt",
    "style": "filled",
    "fallback": "A friendly cartoon electrician avatar with a yellow hard hat and blue shirt",
    "size": {
      "collapsed": "32px",
      "expanded": "48px"
    },
    "animation": {
      "idle": "subtle-bounce",
      "speaking": "pulse-ring",
      "listening": "waveform"
    }
  },
  "messages": {
    "welcome": {
      "text": "G'day! ⚡ It's Sparky AI here. I can book you in for a job, give you a quote, or put you through to the team. What do you need?",
      "voice": "Australian Female",
      "language": "en-AU"
    },
    "fallback": "No worries, let me connect you with a real person who can help.",
    "afterHours": "Thanks for calling. We're currently closed but I can take a message or book you in for when we open tomorrow.",
    "quickReplies": [
      "Book a service",
      "Get a quote",
      "After hours emergency",
      "Speak to a real person"
    ]
  },
  "buttons": {
    "primary": {
      "background": "#F5A623",
      "color": "#1A1A1A",
      "border": "none",
      "borderRadius": "10px",
      "padding": "12px 20px",
      "fontWeight": "600",
      "fontSize": "14px",
      "transition": "all 0.2s ease",
      "hover": {
        "background": "#E09000",
        "transform": "translateY(-1px)",
        "boxShadow": "0 4px 12px rgba(245, 166, 35, 0.3)"
      },
      "active": {
        "background": "#C88000",
        "transform": "translateY(0)"
      }
    },
    "secondary": {
      "background": "transparent",
      "color": "#1E3A5F",
      "border": "2px solid #1E3A5F",
      "borderRadius": "10px",
      "padding": "10px 18px",
      "fontWeight": "600",
      "fontSize": "14px",
      "transition": "all 0.2s ease",
      "hover": {
        "background": "#1E3A5F",
        "color": "#FFFFFF"
      }
    },
    "ghost": {
      "background": "transparent",
      "color": "#5A5A5A",
      "border": "none",
      "borderRadius": "8px",
      "padding": "8px 12px",
      "fontWeight": "500",
      "fontSize": "13px",
      "transition": "all 0.15s ease",
      "hover": {
        "background": "#F0F0F0",
        "color": "#1A1A1A"
      }
    },
    "callToAction": {
      "bookNow": {
        "label": "Book Now",
        "icon": "calendar",
        "action": "openBooking"
      },
      "getQuote": {
        "label": "Get a Quote",
        "icon": "calculator",
        "action": "openQuote"
      },
      "emergency": {
        "label": "After Hours Emergency",
        "icon": "alert-triangle",
        "action": "emergencyTransfer",
        "color": "#DC3545"
      }
    }
  },
  "animations": {
    "entry": {
      "type": "slideUpFade",
      "duration": "400ms",
      "easing": "cubic-bezier(0.34, 1.56, 0.64, 1)",
      "delay": "800ms"
    },
    "open": {
      "type": "scaleUp",
      "duration": "300ms",
      "easing": "cubic-bezier(0.34, 1.56, 0.64, 1)"
    },
    "close": {
      "type": "scaleDown",
      "duration": "200ms",
      "easing": "ease-out"
    },
    "idle": {
      "type": "pulse",
      "duration": "2s",
      "iteration": "infinite",
      "scale": "1.05"
    },
    "notification": {
      "type": "ringPulse",
      "duration": "1.5s",
      "iteration": "infinite",
      "color": "#F5A623"
    },
    "speaking": {
      "type": "waveform",
      "bars": 5,
      "duration": "0.5s"
    },
    "listening": {
      "type": "micPulse",
      "duration": "1s",
      "iteration": "infinite"
    }
  },
  "darkMode": {
    "enabled": true,
    "trigger": "system",
    "manualToggle": true,
    "togglePosition": "header",
    "transition": "all 0.3s ease",
    "icon": {
      "light": "sun",
      "dark": "moon"
    }
  },
  "industrySpecific": {
    "electrician": {
      "serviceCategories": [
        {
          "id": "repairs",
          "name": "Electrical Repairs",
          "icon": "zap",
          "keywords": ["fix", "repair", "broken", "not working", "power out"]
        },
        {
          "id": "installations",
          "name": "New Installations",
          "icon": "plug",
          "keywords": ["install", "new", "fit", "add", "extra"]
        },
        {
          "id": "inspections",
          "name": "Safety Inspections",
          "icon": "shield-check",
          "keywords": ["safety", "inspection", "test", "certificate", "compliance"]
        },
        {
          "id": "renovations",
          "name": "Renovations",
          "icon": "home",
          "keywords": ["renovate", "renovation", "kitchen", "bathroom", "extension"]
        },
        {
          "id": "smoke-alarms",
          "name": "Smoke Alarms",
          "icon": "alert-triangle",
          "keywords": ["smoke alarm", "detector", "test", "replace", "legislation"]
        },
        {
          "id": "switchboard",
          "name": "Switchboard Upgrades",
          "icon": "cpu",
          "keywords": ["switchboard", "upgrade", "fuse box", "power upgrade"]
        }
      ],
      "visualElements": {
        "headerIcon": "lightning-bolt",
        "accentPattern": "circuit-lines",
        "statusIndicators": {
          "online": "#28A745",
          "busy": "#FFC107",
          "offline": "#8A8A8A"
        }
      },
      "contextualTriggers": {
        "emergency": {
          "keywords": ["emergency", "urgent", "not working", "no power", "spark", "smoke", "burning"],
          "response": "I can see this is urgent. Let me connect you with our on-call electrician right away.",
          "priority": "high",
          "action": "emergencyTransfer"
        },
        "afterHours": {
          "hourRange": {
            "start": "17:00",
            "end": "07:00",
            "weekend": true
          },
          "message": "Thanks for calling. Our team is off the tools right now, but I can book you in for first thing tomorrow or connect you with our after-hours emergency service."
        },
        "booking": {
          "commonJobs": [
            "Power point installation",
            "Light fixture replacement",
            "Switchboard upgrade",
            "Smoke alarm installation",
            "Fault finding",
            "Kitchen reno electrical"
          ],
          "questions": [
            "What type of property is this?",
            "Is it a residential or commercial job?",
            "Do you own the property or are you renting?"
          ]
        }
      },
      "localisation": {
        "region": "Australia",
        "terms": {
          "tradie": "tradie",
          "quote": "quote",
          "job": "job",
          "service": "service"
        },
        "suburbValidation": true,
        "postcodeFormat": "####"
      }
    }
  },
  "cssVariables": {
    "--sunaiva-primary": "#F5A623",
    "--sunaiva-primary-hover": "#E09000",
    "--sunaiva-primary-contrast": "#1A1A1A",
    "--sunaiva-secondary": "#1E3A5F",
    "--sunaiva-secondary-hover": "#2A4A73",
    "--sunaiva-accent": "#00D4FF",
    "--sunaiva-bg": "#FFFFFF",
    "--sunaiva-bg-secondary": "#F8F9FA",
    "--sunaiva-text": "#1A1A1A",
    "--sunaiva-text-muted": "#8A8A8A",
    "--sunaiva-border": "#E5E5E5",
    "--sunaiva-radius-sm": "8px",
    "--sunaiva-radius-md": "10px",
    "--sunaiva-radius-lg": "16px",
    "--sunaiva-radius-full": "9999px",
    "--sunaiva-shadow": "0 8px 32px rgba(0, 0, 0, 0.12)",
    "--sunaiva-shadow-hover": "0 12px 40px rgba(0, 0, 0, 0.16)",
    "--sunaiva-transition": "all 0.2s ease",
    "--sunaiva-font": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
    "--sunaiva-z-index": "9999",
    "--sunaiva-electrician-accent": "#FFB800",
    "--sunaiva-electrician-safe": "#28A745",
    "--sunaiva-electrician-warning": "#F5A623",
    "--sunaiva-electrician-danger": "#DC3545"
  },
  "accessibility": {
    "ariaLabels": {
      "openWidget": "Open voice assistant",
      "closeWidget": "Close voice assistant",
      "minimiseWidget": "Minimise voice assistant",
      "toggleDarkMode": "Toggle dark mode",
      "muteAudio": "Mute audio",
      "unmuteAudio": "Unmute audio"
    },
    "keyboardNavigation": true,
    "focusTrap": true,
    "screenReaderAnnouncements": true,
    "reducedMotion": {
      "respect": true,
      "fallbackAnimation": "none"
    }
  },
  "integration": {
    "analytics": {
      "trackEvents": true,
      "events": [
        "widget_opened",
        "widget_closed",
        "call_started",
        "call_ended",
        "booking_created",
        "quote_requested",
        "message_sent",
        "transfer_to_human"
      ]
    },
    "calendars": ["calendly", "square", "homebase"],
    "crm": ["jobber", "servicebox", "simpro", "tradify"],
    "phone": ["telnyx", "twilio", "voip"]
  }
}
```

## CSS Implementation

```css
/* Electrician Widget Theme - Paste into your site's stylesheet */
:root {
  --sunaiva-primary: #F5A623;
  --sunaiva-primary-hover: #


Response:
```json
{
  "$schema": "https://sunaiva.com/schemas/widget-config/v1.json",
  "widget_id": "hvac-technician-primary",
  "version": "1.0.0",
  "business_type": "hvac_technician",
  "metadata": {
    "created": "2025-01-15",
    "author": "Sunaiva Design Team",
    "description": "Complete widget customization for Australian HVAC technician businesses"
  },
  "colors": {
    "primary": "#0A5CFF",
    "primary_dark": "#0846B8",
    "secondary": "#FF6B35",
    "secondary_hover": "#E85A24",
    "accent": "#40E0D0",
    "background": "#FFFFFF",
    "background_secondary": "#F8FAFC",
    "surface": "#F1F5F9",
    "text_primary": "#1E293B",
    "text_secondary": "#64748B",
    "text_inverse": "#FFFFFF",
    "border": "#E2E8F0",
    "success": "#10B981",
    "error": "#EF4444",
    "warning": "#F59E0B"
  },
  "css_variables": {
    "--sunaiva-primary": "#0A5CFF",
    "--sunaiva-primary-dark": "#0846B8",
    "--sunaiva-secondary": "#FF6B35",
    "--sunaiva-secondary-hover": "#E85A24",
    "--sunaiva-accent": "#40E0D0",
    "--sunaiva-bg": "#FFFFFF",
    "--sunaiva-bg-secondary": "#F8FAFC",
    "--sunaiva-surface": "#F1F5F9",
    "--sunaiva-text": "#1E293B",
    "--sunaiva-text-secondary": "#64748B",
    "--sunaiva-text-inverse": "#FFFFFF",
    "--sunaiva-border": "#E2E8F0",
    "--sunaiva-success": "#10B981",
    "--sunaiva-error": "#EF4444",
    "--sunaiva-warning": "#F59E0B",
    "--sunaiva-shadow": "0 4px 20px rgba(10, 92, 255, 0.15)",
    "--sunaiva-shadow-hover": "0 8px 30px rgba(10, 92, 255, 0.25)",
    "--sunaiva-radius": "16px",
    "--sunaiva-radius-sm": "8px",
    "--sunaiva-radius-lg": "24px"
  },
  "position": {
    "desktop": {
      "corner": "bottom-right",
      "offset_x": "24px",
      "offset_y": "24px"
    },
    "mobile": {
      "corner": "bottom-right",
      "offset_x": "16px",
      "offset_y": "16px"
    },
    "reasoning": "Bottom-right is optimal for Australian websites as it aligns with reading flow (F-pattern) and doesn't interfere with navigation menus typically placed at top or left. Mobile uses same corner but tighter offset to maximise screen real estate. Bottom-right is preferred over bottom-left to avoid conflict with 'back to top' buttons and copyright notices often placed bottom-left."
  },
  "dimensions": {
    "collapsed": {
      "width": "64px",
      "height": "64px",
      "border_radius": "50%"
    },
    "expanded": {
      "desktop": {
        "width": "420px",
        "height": "600px",
        "max_height": "calc(100vh - 120px)"
      },
      "mobile": {
        "width": "calc(100vw - 32px)",
        "height": "calc(100vh - 100px)",
        "max_height": "700px"
      }
    }
  },
  "avatar": {
    "style": "custom_character",
    "character_type": "friendly_technician",
    "gender": "neutral",
    "visual_description": "A friendly, approachable cartoon HVAC technician wearing a navy blue work polo with company logo, holding a clipboard or digital tablet. The character has a warm, welcoming smile and professional but casual appearance. The design uses clean, modern vector style with subtle gradients - not photorealistic. The background of the avatar circle is the primary brand blue (#0A5CFF) with the white technician character centered.",
    "fallback": "A stylized white telephone icon on a circular blue background (#0A5CFF) with subtle sound wave lines",
    "idle_animation": "gentle_bob",
    "speaking_animation": "scale_pulse"
  },
  "welcome_message": {
    "text": "G'day! 👋 I'm [Business Name]'s AI assistant. I can help you book a service, check our availability, or answer questions about your HVAC system. What can I do for you today?",
    "voice_greeting": "G'day mate, welcome to Business Name. I'm their AI assistant here to help you out. Whether you need to book a service, check when we can come around, or have a question about your air con or heating, I'm your guy. What can I do for you today?",
    "language": "en-AU",
    "delay_ms": 1500,
    "show_typing_indicator": true
  },
  "animations": {
    "entry": {
      "type": "slide_fade",
      "direction": "scale-up",
      "duration_ms": 400,
      "easing": "cubic-bezier(0.34, 1.56, 0.64, 1)",
      "trigger": "on_page_load_delayed"
    },
    "expand": {
      "type": "spring",
      "duration_ms": 350,
      "easing": "cubic-bezier(0.25, 0.46, 0.45, 0.94)",
      "stiffness": 300,
      "damping": 25
    },
    "collapse": {
      "type": "ease-out",
      "duration_ms": 250,
      "easing": "ease-out"
    },
    "idle": {
      "type": "floating",
      "amplitude": "6px",
      "duration_ms": 3000,
      "paused_when_open": true
    },
    "notification_pulse": {
      "type": "ring_expand",
      "color": "#FF6B35",
      "rings": 2,
      "duration_ms": 1500,
      "interval_ms": 3000
    },
    "typing_indicator": {
      "type": "bouncing_dots",
      "dots": 3,
      "color": "#64748B",
      "duration_ms": 1500
    },
    "micro_interactions": {
      "button_hover": "scale_1.05",
      "button_click": "scale_0.95",
      "input_focus": "border_glow",
      "success_check": "bounce_in",
      "error_shake": "horizontal_shake"
    }
  },
  "typography": {
    "font_family": "'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
    "font_family_heading": "'DM Sans', sans-serif",
    "font_weights": {
      "regular": 400,
      "medium": 500,
      "semibold": 600,
      "bold": 700
    },
    "sizes": {
      "header_large": "22px",
      "header_medium": "18px",
      "header_small": "16px",
      "body": "15px",
      "body_small": "14px",
      "caption": "12px",
      "button": "15px",
      "input": "15px"
    },
    "line_heights": {
      "heading": 1.3,
      "body": 1.5,
      "caption": 1.4
    },
    "letter_spacing": {
      "heading": "-0.02em",
      "body": "0",
      "caption": "0.02em"
    }
  },
  "buttons": {
    "primary": {
      "background": "#0A5CFF",
      "background_hover": "#0846B8",
      "background_active": "#063089",
      "text": "#FFFFFF",
      "border": "none",
      "border_radius": "12px",
      "padding": "14px 24px",
      "font_weight": 600,
      "font_size": "15px",
      "shadow": "0 2px 8px rgba(10, 92, 255, 0.3)",
      "shadow_hover": "0 4px 16px rgba(10, 92, 255, 0.4)",
      "transition": "all 0.2s ease"
    },
    "secondary": {
      "background": "transparent",
      "background_hover": "#F1F5F9",
      "text": "#0A5CFF",
      "border": "2px solid #0A5CFF",
      "border_radius": "12px",
      "padding": "12px 22px",
      "font_weight": 600,
      "font_size": "15px",
      "transition": "all 0.2s ease"
    },
    "quick_action": {
      "background": "#F8FAFC",
      "background_hover": "#E2E8F0",
      "text": "#1E293B",
      "border": "1px solid #E2E8F0",
      "border_radius": "10px",
      "padding": "12px 16px",
      "font_weight": 500,
      "font_size": "14px",
      "icon_size": "18px",
      "gap": "10px"
    },
    "close": {
      "background": "transparent",
      "background_hover": "#F1F5F9",
      "text": "#64748B",
      "border": "none",
      "border_radius": "8px",
      "size": "36px",
      "icon_size": "20px"
    },
    "call_to_action": {
      "background": "#FF6B35",
      "background_hover": "#E85A24",
      "text": "#FFFFFF",
      "border": "none",
      "border_radius": "14px",
      "padding": "16px 28px",
      "font_weight": 700,
      "font_size": "16px",
      "shadow": "0 4px 16px rgba(255, 107, 53, 0.4)",
      "shadow_hover": "0 6px 24px rgba(255, 107, 53, 0.5)",
      "icon": "phone",
      "icon_animation": "ring_pulse"
    }
  },
  "dark_mode": {
    "enabled": true,
    "trigger": "system_preference",
    "manual_toggle": true,
    "toggle_location": "widget_settings",
    "colors": {
      "background": "#0F172A",
      "background_secondary": "#1E293B",
      "surface": "#334155",
      "text_primary": "#F8FAFC",
      "text_secondary": "#94A3B8",
      "border": "#334155",
      "primary": "#3B82F6",
      "primary_dark": "#2563EB",
      "secondary": "#FB923C"
    },
    "css_variables": {
      "--sunaiva-dark-bg": "#0F172A",
      "--sunaiva-dark-bg-secondary": "#1E293B",
      "--sunaiva-dark-surface": "#334155",
      "--sunaiva-dark-text": "#F8FAFC",
      "--sunaiva-dark-text-secondary": "#94A3B8",
      "--sunaiva-dark-border": "#334155",
      "--sunaiva-dark-primary": "#3B82F6",
      "--sunaiva-dark-secondary": "#FB923C"
    }
  },
  "industry_specific": {
    "hvac_elements": {
      "iconography": {
        "primary_icons": [
          "ac_unit",
          "thermostat",
          "heating",
          "ventilation",
          "ductwork",
          "refrigeration",
          "maintenance",
          "emergency_service",
          "split_system",
          "ducted_system"
        ],
        "icon_style": "outlined",
        "icon_weight": "1.5px",
        "icon_color": "#0A5CFF"
      },
      "service_quick_actions": {
        "buttons": [
          {
            "id": "book_service",
            "label": "Book a Service",
            "icon": "calendar",
            "action": "start_booking_flow"
          },
          {
            "id": "get_quote",
            "label": "Get a Quote",
            "icon": "calculator",
            "action": "start_quote_flow"
          },
          {
            "id": "emergency",
            "label": "Emergency Call",
            "icon": "warning",
            "action": "immediate_call",
            "highlighted": true,
            "highlight_color": "#FF6B35"
          },
          {
            "id": "check_availability",
            "label": "Check Availability",
            "icon": "clock",
            "action": "show_calendar"
          },
          {
            "id": "service_info",
            "label": "Our Services",
            "icon": "list",
            "action": "show_services"
          }
        ]
      },
      "common_queries": {
        "suggestions": [
          "I need a split system installed",
          "My AC's not cooling",
          "Heater's broken, can you help?",
          "Annual service quote",
          "Gas leak - urgent",
          "Air quality check"
        ]
      },
      "business_hours": {
        "display_format": "24_7_or_trading",
        "trading_hours": {
          "monday": "7:00 AM - 5:00 PM",
          "tuesday": "7:00 AM - 5:00 PM",
          "wednesday": "7:00 AM - 5:00 PM",
          "thursday": "7:00 AM - 5:00 PM",
          "friday": "7:00 AM - 5:00 PM",
          "saturday": "8:00 AM - 2:00 PM",
          "sunday": "Emergency Only"
        },
        "after_hours_message": "Hi mate, thanks for reaching out. We're currently closed but I can take your details and we'll get back to you first thing tomorrow. For urgent HVAC emergencies, call our 24/7 emergency line on [PHONE]."
      },
      "seasonal_context": {
        "australian_climate": true,
        "summer_priority": "Keep your cool this summer - book your AC service now",
        "winter_priority": "Stay warm this winter - heating service special",
        "maintenance_season": "Book your annual service before summer hits"
      },
      "location_context": {
        "service_area_display": true,
        "common_australian_suburbs": [
          "Northern Suburbs",
          "Eastern Suburbs",
          "Western Suburbs",
          "Southern Suburbs",
          "CBD & Inner City",
          "Coastal Areas",
          "Hills District"
        ],
        "response_time_estimate": "Same-day service available in most areas"
      }
    },
    "branding_extras": {
      "badge_options": {
        "licensed": {
          "show": true,
          "text": "Licensed & Insured",
          "icon": "license"
        },
        "experience": {
          "show": true,
          "text": "15+ Years Experience",
          "icon": "star"
        },
        "guarantee": {
          "show": true,
          "text": "100% Satisfaction Guarantee",
          "icon": "shield"
        },
        "emergency": {
          "show": true,
          "text": "24/7 Emergency Service",
          "icon": "clock"
        }
      },
      "trust_indicators": {
        "show_rating": true,
        "rating_platforms": ["Google", "Product Review", "Facebook"],
        "show_response_time": true,
        "show_license_number": false


Response:
```json
{
  "$schema": "https://schema.sunaiva.com/widget/v1/config",
  "meta": {
    "industry": "roofing",
    "business_type": "trade_services",
    "locale": "en-AU",
    "version": "1.0.0",
    "last_updated": "2025-01-15"
  },
  "colors": {
    "primary": "#1e3a5f",
    "primary_light": "#2d4a6f",
    "secondary": "#64748b",
    "accent": "#f97316",
    "accent_hover": "#ea580c",
    "background": "#ffffff",
    "background_secondary": "#f8fafc",
    "surface": "#ffffff",
    "text_primary": "#1e293b",
    "text_secondary": "#475569",
    "text_inverse": "#ffffff",
    "border": "#e2e8f0",
    "success": "#22c55e",
    "error": "#ef4444",
    "shadow": "rgba(30, 58, 95, 0.15)"
  },
  "dark_mode": {
    "enabled": true,
    "colors": {
      "primary": "#3b82f6",
      "primary_light": "#60a5fa",
      "secondary": "#94a3b8",
      "accent": "#fb923c",
      "accent_hover": "#f97316",
      "background": "#0f172a",
      "background_secondary": "#1e293b",
      "surface": "#1e293b",
      "text_primary": "#f1f5f9",
      "text_secondary": "#cbd5e1",
      "text_inverse": "#0f172a",
      "border": "#334155",
      "shadow": "rgba(0, 0, 0, 0.4)"
    }
  },
  "typography": {
    "font_family": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
    "font_family_heading": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
    "size_xs": "11px",
    "size_sm": "13px",
    "size_base": "15px",
    "size_md": "16px",
    "size_lg": "18px",
    "size_xl": "22px",
    "size_2xl": "26px",
    "weight_normal": "400",
    "weight_medium": "500",
    "weight_semibold": "600",
    "weight_bold": "700",
    "line_height_tight": "1.25",
    "line_height_normal": "1.5",
    "line_height_relaxed": "1.75"
  },
  "spacing": {
    "unit": "4px",
    "xs": "4px",
    "sm": "8px",
    "md": "12px",
    "lg": "16px",
    "xl": "24px",
    "2xl": "32px",
    "3xl": "48px"
  },
  "widget": {
    "position": {
      "corner": "bottom-right",
      "offset_x": "20px",
      "offset_y": "20px",
      "z_index": "9999",
      "mobile": {
        "corner": "bottom-right",
        "offset_x": "16px",
        "offset_y": "16px"
      }
    },
    "dimensions": {
      "launcher": {
        "width": "60px",
        "height": "60px",
        "border_radius": "50%"
      },
      "panel": {
        "width_desktop": "380px",
        "width_mobile": "calc(100vw - 32px)",
        "max_width": "380px",
        "height_desktop": "520px",
        "height_mobile": "calc(100vh - 120px)",
        "max_height": "600px",
        "border_radius": "16px"
      },
      "header": {
        "height": "64px"
      },
      "input_area": {
        "height": "72px"
      }
    },
    "border_radius": {
      "container": "16px",
      "button": "8px",
      "input": "24px",
      "avatar": "50%"
    }
  },
  "avatar": {
    "type": "icon",
    "icon_name": "hardhat",
    "style": "outline",
    "size": "40px",
    "fallback": {
      "type": "initials",
      "initials": "RJ",
      "background": "#1e3a5f",
      "color": "#ffffff"
    },
    "description": "A friendly roof tile icon with subtle depth, representing the roofing trade. Clean lines, no complex details."
  },
  "launcher": {
    "icon": {
      "type": "phone",
      "style": "solid",
      "size": "28px",
      "color": "#ffffff"
    },
    "badge": {
      "enabled": true,
      "position": "top-right",
      "offset": "-2px",
      "size": "12px",
      "color": "#22c55e",
      "pulse": true
    },
    "shadow": "0 4px 20px rgba(30, 58, 95, 0.3)",
    "hover": {
      "scale": "1.05",
      "shadow": "0 6px 24px rgba(30, 58, 95, 0.4)"
    }
  },
  "header": {
    "background": "linear-gradient(135deg, #1e3a5f 0%, #2d4a6f 100%)",
    "text_color": "#ffffff",
    "title": "Roof AI Assistant",
    "subtitle": "Online now",
    "show_subtitle": true,
    "close_button": {
      "visible": true,
      "icon": "x",
      "color": "#ffffff",
      "hover_color": "rgba(255,255,255,0.8)"
    }
  },
  "messages": {
    "welcome": {
      "text": "G'day! I'm your roofing assistant. I can help you with roof quotes, emergency leak repairs, or booking a free inspection. What can I do for you today?",
      "voice_preview": "G'day! I'm your roofing assistant. I can help you with roof quotes, emergency leak repairs, or booking a free inspection. What can I do for you today?"
    },
    "error": {
      "text": "Sorry, something went wrong. Give us a call on [PHONE] or try again.",
      "voice_preview": "Sorry, something went wrong. Give us a call on [PHONE] or try again."
    },
    "offline": {
      "text": "We're currently closed. Leave your details and we'll call you back tomorrow.",
      "voice_preview": "We're currently closed. Leave your details and we'll call you back tomorrow."
    },
    "quick_replies": [
      "Get a quote",
      "Book inspection",
      "Emergency repair",
      "Ask a question"
    ],
    "quick_replies_roofing": [
      "Tile replacement",
      "Metal roofing",
      "Gutter repair",
      "Leak investigation"
    ]
  },
  "buttons": {
    "primary": {
      "background": "#f97316",
      "background_hover": "#ea580c",
      "text_color": "#ffffff",
      "border": "none",
      "border_radius": "8px",
      "padding": "12px 20px",
      "font_size": "15px",
      "font_weight": "600",
      "shadow": "0 2px 8px rgba(249, 115, 22, 0.3)",
      "shadow_hover": "0 4px 12px rgba(249, 115, 22, 0.4)"
    },
    "secondary": {
      "background": "#f1f5f9",
      "background_hover": "#e2e8f0",
      "text_color": "#1e293b",
      "border": "1px solid #e2e8f0",
      "border_radius": "8px",
      "padding": "12px 20px",
      "font_size": "15px",
      "font_weight": "500"
    },
    "quick_reply": {
      "background": "#f8fafc",
      "background_hover": "#e0f2fe",
      "text_color": "#1e3a5f",
      "border": "1px solid #e2e8f0",
      "border_hover": "#3b82f6",
      "border_radius": "20px",
      "padding": "8px 16px",
      "font_size": "14px",
      "font_weight": "500"
    },
    "call_to_action": {
      "text": "Call Now",
      "icon": "phone",
      "background": "#22c55e",
      "background_hover": "#16a34a",
      "text_color": "#ffffff",
      "border_radius": "24px",
      "padding": "10px 20px",
      "font_size": "15px",
      "font_weight": "600",
      "shadow": "0 2px 8px rgba(34, 197, 94, 0.3)"
    }
  },
  "input": {
    "background": "#ffffff",
    "border": "1px solid #e2e8f0",
    "border_focus": "#3b82f6",
    "border_radius": "24px",
    "placeholder": "Type your message...",
    "placeholder_color": "#94a3b8",
    "text_color": "#1e293b",
    "font_size": "15px",
    "padding": "12px 16px",
    "min_height": "48px",
    "max_height": "120px",
    "send_button": {
      "icon": "send",
      "color": "#f97316",
      "color_hover": "#ea580c",
      "size": "20px",
      "background": "transparent",
      "background_hover": "#fff7ed"
    },
    "voice_button": {
      "icon": "mic",
      "color": "#1e3a5f",
      "color_active": "#ef4444",
      "size": "20px",
      "pulse_animation": true
    }
  },
  "animations": {
    "entry": {
      "type": "slide_fade",
      "direction": "up",
      "duration": "300ms",
      "easing": "cubic-bezier(0.16, 1, 0.3, 1)",
      "delay": "0ms"
    },
    "exit": {
      "type": "slide_fade",
      "direction": "down",
      "duration": "200ms",
      "easing": "ease-in"
    },
    "launcher_idle": {
      "type": "pulse",
      "scale": "1.0 to 1.02",
      "duration": "2s",
      "repeat": "infinite",
      "pause_on_hover": true
    },
    "launcher_bounce": {
      "type": "bounce",
      "translate_y": "0 to -8px",
      "duration": "400ms",
      "easing": "cubic-bezier(0.68, -0.55, 0.265, 1.55)"
    },
    "message_appear": {
      "type": "fade_slide",
      "direction": "up",
      "duration": "250ms",
      "easing": "ease-out",
      "stagger": "50ms"
    },
    "typing_indicator": {
      "type": "bounce",
      "dots": 3,
      "duration": "1.4s",
      "repeat": "infinite",
      "delay_between": "0.2s"
    },
    "notification": {
      "type": "ring",
      "color": "#22c55e",
      "duration": "2s",
      "repeat": "3"
    },
    "button_hover": {
      "type": "scale",
      "scale": "1.02",
      "duration": "150ms",
      "easing": "ease-out"
    }
  },
  "shadows": {
    "panel": "0 8px 32px rgba(30, 58, 95, 0.2)",
    "panel_mobile": "0 4px 24px rgba(30, 58, 95, 0.25)",
    "button": "0 2px 8px rgba(30, 58, 95, 0.15)",
    "input": "0 1px 3px rgba(0, 0, 0, 0.08)"
  },
  "backgrounds": {
    "widget_body": "url('data:image/svg+xml,%3Csvg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" xmlns=\"http://www.w3.org/2000/svg\"%3E%3Cg fill=\"none\" fill-rule=\"evenodd\"%3E%3Cg fill=\"%231e3a5f\" fill-opacity=\"0.03\"%3E%3Cpath d=\"M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z\"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E')",
    "header": "linear-gradient(135deg, #1e3a5f 0%, #2d4a6f 100%)"
  },
  "industry_specific": {
    "roofing": {
      "iconography": {
        "primary": "roof",
        "secondary": "toolbox",
        "emergency": "warning"
      },
      "business_hours": {
        "default": "7am - 5pm Mon-Fri, 8am - 2pm Sat",
        "emergency": "24/7 for urgent repairs"
      },
      "services": [
        "Tile & Metal Roof Repairs",
        "Roof Restoration",
        "Gutter Replacement",
        "Leak Detection",
        "New Roof Installation",
        "Colorbond Roofing"
      ],
      "common_queries": [
        "How much for a new roof?",
        "Do you do emergency repairs?",
        "How long does a roof take?",
        "Do you guarantee your work?"
      ],
      "call_to_action_phrases": [
        "Get Your Free Quote",
        "Book a Roof Inspection",
        "Call for Emergency Repairs",
        "Speak to a Roof Specialist"
      ],
      "tradie_slang": [
        "no worries",
        "sorted",
        "cheers mate",
        "fair dinkum"
      ],
      "colorbond_colours": [
        "Classic Cream",
        "Windspray",
        "Paperbark",
        "Deep Ocean",
        "Woodland Grey",
        "Night Sky"
      ]
    }
  },
  "css_custom_properties": {
    "--sunaiva-primary": "#1e3a5f",
    "--sunaiva-primary-light": "#2d4a6f",
    "--sunaiva-secondary": "#64748b",
    "--sunaiva-accent": "#f97316",
    "--sunaiva-accent-hover": "#ea580c",
    "--sunaiva-background": "#ffffff",
    "--sunaiva-background-secondary": "#f8fafc",
    "--sunaiva-surface": "#ffffff",
    "--sunaiva-text-primary": "#1e293b",
    "--sunaiva-text-secondary": "#475569",
    "--sunaiva-text-inverse": "#ffffff",
    "--sunaiva-border": "#e2e8f0",
    "--sunaiva-success": "#22c55e",
    "--sunaiva-error": "#ef4444",
    "--sunaiva-shadow": "rgba(30, 58, 95, 0.15)",
    "--sunaiva-font-family": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
    "--sunaiva-border-radius": "16px",
    "--sunaiva-border-radius-sm": "8px",
    "--sunaiva-border-radius-pill": "24px",
    "--sunaiva-transition-fast": "150ms ease",
    "--sunaiva-transition-normal": "250ms ease",
    "--sunaiva-transition-slow": "350ms ease"
  },
  "accessibility": {
    "aria_labels": {
      "launcher": "Open chat with roofing assistant",
      "close": "Close chat",
      "send_message": "Send message",
      "voice_input": "Use voice input",
      "quick_reply": "Quick reply option"
    },
    "focus_visible": {
      "outline": "2px solid #3b82f6",
      "outline_offset": "2px"
    },
    "screen_reader": {
      "announce_new_messages": true,
      "announce_voice_status": true
    },
    "keyboard_navigation": {
      "enabled": true,
      "trap_focus": true,
      "escape_closes": true
    }
  },
  "mobile_optimization": {
    "breakpoint": "480px",
    "fullscreen_on_mobile": false,
    "safe_area_insets": {
      "bottom": "env(safe-area-inset-bottom, 0px)",
      "right": "env(safe-area-inset-right, 0px)",
      "left": "env(safe-area-inset-left, 0px)"
    },
    "touch_targets": {
      "min_size": "44px",
      "spacing": "8px"
    }
  },
  "voice_settings": {
    "enabled": true,
    "auto_answer": false,
    "voice_id": "en-AU-Standard-A",
    "speech_language": "en-AU",
    "silence_timeout": 5000,
    "confidence_threshold": 0.7
  },
  "greeting_rules": {
    "time_based": true,
    "greetings": {
      "morning": "Good morning",
      "afternoon": "Good afternoon",
      "evening": "Good evening",
      "weekend": "Happy weekend"
    },
    "repeat_visitor": {
      "enabled": true,
      "message": "Welcome back! How can we help with your roof today?"
    }
  }
}
```

## Usage Notes

**CSS Variables Override**
Add these to your site's stylesheet to customize without touching the JSON:

```css
:root {
  --sunaiva-primary: #1e3a5f;
  --sunaiva-accent: #f97316;
  --sunaiva-border-radius: 16px;
}
```

**Quick Reply Customization**
The widget includes industry-specific quick replies. You can override these in the widget admin:
- `"Get a quote"` → triggers quote flow
- `"Book inspection"` → opens calendar
- `"Emergency repair"` → prioritises call-back
- `"Ask a question"` → conversational mode

**Dark Mode**
The widget automatically detects `prefers-color-scheme: dark` and applies the dark palette. Manual override available via the `dark_mode.enabled` flag in the config.

**Australian Context**
All text uses Australian English spelling (colour, metre) and natural phrasing. The voice uses an Australian accent trained on neutral General Australian speech patterns.


Response:
```json
{
  "widget": {
    "id": "landscaper-widget-v1",
    "version": "1.0.0",
    "theme": "light",
    "environment": "production"
  },

  "colors": {
    "primary": {
      "name": "Forest Green",
      "hex": "#2D5A27",
      "rgb": "45, 90, 39",
      "usage": "Headers, primary buttons, avatar background, brand accents"
    },
    "secondary": {
      "name": "Earth Brown",
      "hex": "#8B5A2B",
      "rgb": "139, 90, 43",
      "usage": "Secondary elements, borders, decorative accents"
    },
    "accent": {
      "name": "Golden Sun",
      "hex": "#D4A84B",
      "rgb": "212, 168, 75",
      "usage": "Call-to-action buttons, highlights, notification badges"
    },
    "background": {
      "light": "#FAFAF8",
      "dark": "#1E1E1E",
      "card": "#FFFFFF",
      "cardDark": "#2A2A2A"
    },
    "text": {
      "primary": "#1A1A1A",
      "secondary": "#5A5A5A",
      "muted": "#8A8A8A",
      "inverse": "#FAFAF8"
    },
    "status": {
      "online": "#4CAF50",
      "busy": "#FF9800",
      "offline": "#9E9E9E"
    },
    "borders": {
      "light": "#E5E5E5",
      "dark": "#3A3A3A"
    }
  },

  "layout": {
    "position": {
      "desktop": "bottom-right",
      "mobile": "bottom-center",
      "offset": {
        "desktop": { "x": 24, "y": 24 },
        "mobile": { "x": 0, "y": 16 }
      }
    },
    "dimensions": {
      "collapsed": {
        "width": 64,
        "height": 64,
        "borderRadius": 32
      },
      "expanded": {
        "desktop": {
          "width": 400,
          "maxHeight": 600,
          "borderRadius": 16
        },
        "mobile": {
          "width": "calc(100% - 32px)",
          "maxHeight": "75vh",
          "borderRadius": 20,
          "marginBottom": 60
        }
      }
    },
    "zIndex": {
      "widget": 9999,
      "overlay": 9998
    }
  },

  "avatar": {
    "enabled": true,
    "type": "icon",
    "icon": {
      "name": "leaf",
      "style": "outline",
      "color": "#FFFFFF"
    },
    "background": "primary",
    "size": {
      "collapsed": 64,
      "header": 44
    },
    "status": {
      "show": true,
      "indicator": "online",
      "position": "bottom-right"
    },
    "altText": "Green Life Gardens AI Assistant"
  },

  "typography": {
    "fontFamily": {
      "primary": "'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
      "monospace": "'JetBrains Mono', 'Fira Code', monospace"
    },
    "sizes": {
      "header": {
        "fontSize": "18px",
        "fontWeight": 600,
        "lineHeight": 1.3
      },
      "subheader": {
        "fontSize": "14px",
        "fontWeight": 500,
        "lineHeight": 1.4
      },
      "body": {
        "fontSize": "15px",
        "fontWeight": 400,
        "lineHeight": 1.5
      },
      "caption": {
        "fontSize": "12px",
        "fontWeight": 400,
        "lineHeight": 1.4
      },
      "button": {
        "fontSize": "14px",
        "fontWeight": 600,
        "lineHeight": 1,
        "letterSpacing": "0.02em"
      }
    }
  },

  "welcomeMessage": {
    "enabled": true,
    "type": "text",
    "content": "G'day! 👋 Welcome to Green Life Gardens. I'm here to help you with quotes, bookings, or any questions about your outdoor space. What can I sort out for you today?",
    "voiceGreeting": null,
    "delay": 1500,
    "typingIndicator": true
  },

  "animations": {
    "entry": {
      "type": "spring",
      "duration": 400,
      "easing": "cubic-bezier(0.34, 1.56, 0.64, 1)",
      "transform": {
        "from": { "translateY": 20, "scale": 0.9 },
        "to": { "translateY": 0, "scale": 1 }
      },
      "opacity": {
        "from": 0,
        "to": 1
      }
    },
    "idle": {
      "enabled": true,
      "pulse": {
        "scale": [1, 1.05, 1],
        "duration": 2000,
        "repeat": true,
        "delay": 3000
      }
    },
    "notification": {
      "enabled": true,
      "pulse": {
        "boxShadow": [
          "0 0 0 0 rgba(212, 168, 75, 0.7)",
          "0 0 0 10px rgba(212, 168, 75, 0)"
        ],
        "duration": 1500,
        "repeat": true
      },
      "bounce": {
        "translateY": [0, -4, 0],
        "duration": 600,
        "repeat": true,
        "delay": 4000
      }
    },
    "exit": {
      "type": "fade",
      "duration": 200,
      "transform": {
        "to": { "translateY": 10, "opacity": 0 }
      }
    },
    "micro": {
      "buttonHover": {
        "scale": 1.05,
        "duration": 150,
        "easing": "ease-out"
      },
      "buttonActive": {
        "scale": 0.95,
        "duration": 100
      },
      "listItemHover": {
        "background": "transition: background-color 150ms ease",
        "translateX": 4
      }
    }
  },

  "buttons": {
    "cta": {
      "primary": {
        "background": "accent",
        "color": "#1A1A1A",
        "border": "none",
        "borderRadius": 10,
        "padding": "12px 20px",
        "fontWeight": 600,
        "hover": {
          "background": "#C49A40",
          "transform": "translateY(-1px)",
          "boxShadow": "0 4px 12px rgba(212, 168, 75, 0.3)"
        },
        "active": {
          "background": "#B38935",
          "transform": "translateY(0)"
        }
      },
      "secondary": {
        "background": "transparent",
        "color": "primary",
        "border": "2px solid primary",
        "borderRadius": 10,
        "padding": "10px 18px",
        "hover": {
          "background": "primary",
          "color": "#FFFFFF"
        }
      },
      "quickReply": {
        "background": "#F5F5F3",
        "color": "#1A1A1A",
        "border": "1px solid #E5E5E3",
        "borderRadius": 20,
        "padding": "8px 16px",
        "fontSize": "13px",
        "hover": {
          "background": "#EEEEEB",
          "borderColor": "primary",
          "color": "primary"
        }
      }
    },
    "close": {
      "size": 32,
      "iconSize": 20,
      "color": "#5A5A5A",
      "hover": {
        "color": "#1A1A1A",
        "background": "rgba(0, 0, 0, 0.05)"
      }
    },
    "minimize": {
      "enabled": true,
      "icon": "chevron-down",
      "size": 32,
      "color": "#5A5A5A"
    }
  },

  "quickReplies": {
    "enabled": true,
    "style": "chips",
    "options": [
      {
        "id": "quote",
        "label": "Get a Quote",
        "icon": "calculator",
        "action": "startQuoteFlow"
      },
      {
        "id": "book",
        "label": "Book a Visit",
        "icon": "calendar",
        "action": "startBookingFlow"
      },
      {
        "id": "services",
        "label": "Our Services",
        "icon": "list",
        "action": "showServices"
      },
      {
        "id": "portfolio",
        "label": "View Our Work",
        "icon": "image",
        "action": "openPortfolio"
      },
      {
        "id": "maintenance",
        "label": "Garden Maintenance",
        "icon": "scissors",
        "action": "startMaintenanceFlow"
      },
      {
        "id": "call",
        "label": "Call Us Now",
        "icon": "phone",
        "action": "initiateCall"
      }
    ]
  },

  "darkMode": {
    "enabled": true,
    "autoDetect": true,
    "prefersColorScheme": true,
    "override": null,
    "colors": {
      "background": "#1E1E1E",
      "card": "#2A2A2A",
      "text": {
        "primary": "#F5F5F5",
        "secondary": "#B0B0B0",
        "muted": "#808080"
      },
      "borders": "#3A3A3A",
      "quickReply": {
        "background": "#333333",
        "border": "#404040",
        "hover": "#3A3A3A"
      },
      "accent": {
        "background": "#D4A84B",
        "color": "#1A1A1A",
        "hover": "#E5B85C"
      }
    }
  },

  "industrySpecific": {
    "landscaping": {
      "enabled": true,
      "decorativeElements": {
        "header": {
          "type": "gradient",
          "colors": ["#2D5A27", "#3D7A37"],
          "pattern": "subtle-leaf",
          "opacity": 0.1
        },
        "divider": {
          "style": "organic",
          "color": "rgba(45, 90, 39, 0.2)"
        }
      },
      "iconography": {
        "style": "rounded",
        "lineWeight": 1.5,
        "category": "nature"
      },
      "seasonal": {
        "enabled": false,
        "themes": {
          "spring": { "accent": "#81C784", "icon": "flower" },
          "summer": { "accent": "#FFD54F", "icon": "sun" },
          "autumn": { "accent": "#FF8A65", "icon": "leaf-fall" },
          "winter": { "accent": "#90CAF9", "icon": "snowflake" }
        }
      },
      "businessTypes": [
        "residential",
        "commercial",
        "maintenance",
        "design",
        "irrigation",
        "tree_services"
      ],
      "commonQueries": [
        "How much for a new lawn?",
        "Do you do retaining walls?",
        "Need regular garden maintenance",
        "Landscape design quote",
        "Pool landscaping",
        "Artificial turf installation"
      ],
      "serviceCategories": [
        {
          "id": "design",
          "name": "Landscape Design",
          "icon": "pen-tool",
          "description": "Custom garden design and planning"
        },
        {
          "id": "install",
          "name": "Installation",
          "icon": "shovel",
          "description": "Plants, turf, irrigation, paving"
        },
        {
          "id": "maintenance",
          "name": "Maintenance",
          "icon": "scissors",
          "description": "Regular garden care packages"
        },
        {
          "id": "hardworks",
          "name": "Hard Landscaping",
          "icon": "layers",
          "description": "Retaining walls, decks, patios"
        }
      ],
      "localContext": {
        "australianClimates": [
          "tropical",
          "subtropical",
          "temperate",
          "arid",
          "cool temperate"
        ],
        "commonSpecies": [
          "native Australian plants",
          "turf varieties",
          "feature plants"
        ],
        "regions": [
          "Sydney",
          "Melbourne",
          "Brisbane",
          "Perth",
          "Adelaide",
          "Gold Coast"
        ]
      }
    }
  },

  "messages": {
    "offline": {
      "enabled": true,
      "content": "Thanks for reaching out! We're currently off the tools but will get back to you first thing tomorrow. Leave your details and we'll call you as soon as we're back on site.",
      "showForm": true
    },
    "afterHours": {
      "enabled": true,
      "content": "G'day! We've finished up for the day, but our AI assistant can still take your enquiry. Would you like to leave a message or book a callback for tomorrow?",
      "showForm": true
    },
    "error": {
      "connection": "No worries, looks like we're having some tech trouble. Give us a ring on [phone] or try again in a sec.",
      "timeout": "Sorry about that, got a bit stuck there. Want to try again or give us a call?"
    },
    "success": {
      "booking": "Sorted! Your booking is confirmed. We'll see you at [time] on [date]. Check your email for the details.",
      "quote": "Thanks! We've received your request. One of our team will put together a quote and get back to you within 24 hours.",
      "callback": "No worries, we've booked a callback. We'll ring you at [time]. Thanks for your patience!"
    }
  },

  "accessibility": {
    "keyboardNav": true,
    "ariaLabels": {
      "openWidget": "Open chat with Green Life Gardens",
      "closeWidget": "Close chat",
      "sendMessage": "Send message",
      "voiceInput": "Voice input"
    },
    "focusManagement": true,
    "screenReaderAnnouncements": true,
    "contrastRatio": {
      "normal": "


Response:
```json
{
  "meta": {
    "version": "1.0.0",
    "industry": "locksmith",
    "targetRegion": "Australia",
    "lastUpdated": "2025-01-15"
  },
  "colors": {
    "primary": "#1E3A5F",
    "primaryLight": "#2A4F7A",
    "primaryDark": "#0F1F33",
    "secondary": "#C9A227",
    "secondaryLight": "#D4B84A",
    "secondaryDark": "#9A7B1C",
    "accent": "#E85D04",
    "accentLight": "#FF7B2E",
    "accentDark": "#B84600",
    "background": "#FFFFFF",
    "backgroundSecondary": "#F5F7FA",
    "surface": "#FFFFFF",
    "textPrimary": "#1A1A2E",
    "textSecondary": "#4A4A68",
    "textMuted": "#7A7A8C",
    "border": "#E0E4EB",
    "success": "#10B981",
    "error": "#EF4444",
    "warning": "#F59E0B"
  },
  "position": {
    "desktop": {
      "position": "fixed",
      "bottom": "24px",
      "left": "24px",
      "zIndex": "9999"
    },
    "mobile": {
      "position": "fixed",
      "bottom": "16px",
      "left": "16px",
      "right": "16px",
      "zIndex": "9999"
    },
    "reasoning": "Bottom-left placement avoids competition with chat widgets, contact buttons, and cookie banners commonly found in bottom-right. Australian tradies keep tools on the left side of their body, making left-aligned widgets feel more natural for right-handed users."
  },
  "dimensions": {
    "widget": {
      "closed": {
        "width": "64px",
        "height": "64px"
      },
      "open": {
        "width": "380px",
        "height": "520px",
        "maxHeight": "calc(100vh - 120px)"
      }
    },
    "mobile": {
      "open": {
        "width": "calc(100% - 32px)",
        "maxWidth": "400px",
        "height": "calc(100vh - 120px)",
        "maxHeight": "600px"
      }
    },
    "avatar": {
      "size": "48px",
      "borderRadius": "50%"
    },
    "borderRadius": {
      "widget": "16px",
      "button": "8px",
      "input": "6px",
      "avatar": "50%"
    }
  },
  "avatar": {
    "type": "icon",
    "iconName": "key",
    "style": "outline",
    "backgroundColor": "#1E3A5F",
    "iconColor": "#C9A227",
    "size": "28px",
    "description": "A golden skeleton key icon inside a navy blue circle. The key represents the locksmith trade directly. Gold/brass colouring ties to traditional keys and the trust/security colour psychology. Navy blue conveys professionalism and reliability — critical for emergency services.",
    "fallback": "A friendly illustrated face with short dark hair, wearing a navy polo shirt with a subtle key outline on the chest."
  },
  "messages": {
    "welcome": {
      "text": "G'day! I'm your 24/7 locksmith assistant. Need a new key, locked out of your place, or after an emergency repair? I can help book you in right now.",
      "voiceGreeting": "G'day mate, thanks for checking in. Whether you're locked out or need new keys cut, I can sort you out with a booking right here."
    },
    "quickReplies": [
      "I'm locked out",
      "Need new keys",
      "Broken lock repair",
      "Get a quote"
    ],
    "fallback": "No worries, I've grabbed your details and one of our locksmiths will give you a buzz within 15 minutes. What's the best number to reach you?"
  },
  "animations": {
    "entry": {
      "type": "slideUp",
      "duration": "400ms",
      "easing": "cubic-bezier(0.34, 1.56, 0.64, 1)",
      "description": "Widget slides up from below with a slight overshoot bounce, creating a friendly, inviting feel"
    },
    "idle": {
      "type": "pulse",
      "duration": "2000ms",
      "scale": "1.03",
      "description": "Subtle breathing pulse on the closed widget button to draw attention without being annoying"
    },
    "notification": {
      "type": "ring",
      "duration": "600ms",
      "description": "Gentle ring animation when new message arrives while widget is closed"
    },
    "typing": {
      "type": "bounce",
      "dots": 3,
      "interval": "150ms",
      "description": "Three bouncing dots animation while AI is composing response"
    },
    "transition": {
      "openClose": "300ms ease-out",
      "fadeContent": "200ms ease-in-out"
    }
  },
  "typography": {
    "fontFamily": "'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
    "fontFamilyMono": "'JetBrains Mono', 'Fira Code', monospace",
    "sizes": {
      "header": "18px",
      "subheader": "14px",
      "body": "15px",
      "caption": "13px",
      "small": "11px"
    },
    "weights": {
      "regular": 400,
      "medium": 500,
      "semibold": 600,
      "bold": 700
    },
    "lineHeight": {
      "tight": 1.2,
      "normal": 1.5,
      "relaxed": 1.6
    }
  },
  "buttons": {
    "primary": {
      "background": "#1E3A5F",
      "backgroundHover": "#2A4F7A",
      "backgroundActive": "#0F1F33",
      "text": "#FFFFFF",
      "textHover": "#FFFFFF",
      "border": "none",
      "borderRadius": "8px",
      "padding": "12px 20px",
      "fontSize": "15px",
      "fontWeight": "600",
      "shadow": "0 4px 12px rgba(30, 58, 95, 0.25)",
      "shadowHover": "0 6px 16px rgba(30, 58, 95, 0.35)"
    },
    "secondary": {
      "background": "#F5F7FA",
      "backgroundHover": "#E8ECF2",
      "backgroundActive": "#DDE1E8",
      "text": "#1E3A5F",
      "textHover": "#1E3A5F",
      "border": "1px solid #E0E4EB",
      "borderRadius": "8px",
      "padding": "12px 20px",
      "fontSize": "15px",
      "fontWeight": "500"
    },
    "cta": {
      "background": "#C9A227",
      "backgroundHover": "#D4B84A",
      "backgroundActive": "#9A7B1C",
      "text": "#0F1F33",
      "textHover": "#0F1F33",
      "border": "none",
      "borderRadius": "8px",
      "padding": "14px 24px",
      "fontSize": "16px",
      "fontWeight": "600",
      "shadow": "0 4px 14px rgba(201, 162, 39, 0.35)",
      "shadowHover": "0 6px 18px rgba(201, 162, 39, 0.45)"
    },
    "quickReply": {
      "background": "#F0F4F8",
      "backgroundHover": "#E1E8F0",
      "text": "#1E3A5F",
      "border": "1px solid #D1DAE6",
      "borderRadius": "20px",
      "padding": "8px 16px",
      "fontSize": "13px",
      "fontWeight": "500"
    },
    "callNow": {
      "background": "#10B981",
      "backgroundHover": "#34D399",
      "text": "#FFFFFF",
      "border": "none",
      "borderRadius": "8px",
      "padding": "12px 20px",
      "fontSize": "15px",
      "fontWeight": "600",
      "icon": "phone",
      "iconPosition": "left"
    }
  },
  "darkMode": {
    "enabled": true,
    "colors": {
      "background": "#1A1A2E",
      "backgroundSecondary": "#252542",
      "surface": "#2A2A48",
      "textPrimary": "#F5F5F7",
      "textSecondary": "#A0A0B8",
      "textMuted": "#6B6B85",
      "border": "#3A3A5C",
      "primary": "#4A90D9",
      "secondary": "#E8C547",
      "accent": "#FF7B2E"
    },
    "adjustments": {
      "avatarBackground": "#4A90D9",
      "buttonPrimary": "#4A90D9",
      "buttonCta": "#E8C547",
      "buttonCtaText": "#1A1A2E",
      "shadowOpacity": "0.4"
    }
  },
  "industrySpecific": {
    "theme": "emergency_trade",
    "elements": {
      "emergencyBadge": {
        "enabled": true,
        "text": "24/7 EMERGENCY",
        "background": "#E85D04",
        "textColor": "#FFFFFF",
        "fontSize": "10px",
        "fontWeight": "700",
        "letterSpacing": "0.5px",
        "borderRadius": "4px",
        "padding": "3px 8px",
        "position": "topRightOfWidget",
        "description": "Orange emergency badge with 24/7 text, positioned at top-right corner of closed widget to signal round-the-clock availability"
      },
      "serviceTags": {
        "enabled": true,
        "tags": [
          "Residential",
          "Commercial",
          "Automotive",
          "Emergency"
        ],
        "description": "Quick filter tags for locksmith specialisations displayed in the header area"
      },
      "urgencyIndicator": {
        "enabled": true,
        "showInClosedState": true,
        "description": "Subtle pulsing glow in accent colour when widget has unread messages, mimicking a notification light on a security system"
      },
      "trustBadges": {
        "enabled": true,
        "badges": [
          {
            "icon": "shield-check",
            "text": "Licensed & Insured",
            "color": "#10B981"
          },
          {
            "icon": "clock",
            "text": "Usually 30min arrival",
            "color": "#4A90D9"
          }
        ],
        "description": "Trust indicators shown in the chat header or as quick facts"
      }
    },
    "sound": {
      "notificationEnabled": false,
      "reason": "Tradies often on job sites with noise; visual-only notification prevents disruption"
    },
    "callHandling": {
      "oneTouchCall": true,
      "showPhoneProminently": true,
      "callbackOption": true,
      "description": "Prominent call button and easy callback request for tradies who prefer voice communication"
    }
  },
  "cssCustomProperties": {
    "description": "CSS custom properties for easy theming. Add these to your site's :root or widget container.",
    "variables": {
      "--lsw-primary": "#1E3A5F",
      "--lsw-primary-light": "#2A4F7A",
      "--lsw-primary-dark": "#0F1F33",
      "--lsw-secondary": "#C9A227",
      "--lsw-secondary-light": "#D4B84A",
      "--lsw-secondary-dark": "#9A7B1C",
      "--lsw-accent": "#E85D04",
      "--lsw-accent-light": "#FF7B2E",
      "--lsw-accent-dark": "#B84600",
      "--lsw-bg": "#FFFFFF",
      "--lsw-bg-secondary": "#F5F7FA",
      "--lsw-surface": "#FFFFFF",
      "--lsw-text-primary": "#1A1A2E",
      "--lsw-text-secondary": "#4A4A68",
      "--lsw-text-muted": "#7A7A8C",
      "--lsw-border": "#E0E4EB",
      "--lsw-success": "#10B981",
      "--lsw-error": "#EF4444",
      "--lsw-warning": "#F59E0B",
      "--lsw-font-family": "'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
      "--lsw-font-mono": "'JetBrains Mono', 'Fira Code', monospace",
      "--lsw-radius-widget": "16px",
      "--lsw-radius-button": "8px",
      "--lsw-radius-input": "6px",
      "--lsw-shadow-primary": "0 4px 12px rgba(30, 58, 95, 0.25)",
      "--lsw-shadow-cta": "0 4px 14px rgba(201, 162, 39, 0.35)",
      "--lsw-z-index": "9999",
      "--lsw-transition-fast": "200ms ease-in-out",
      "--lsw-transition-normal": "300ms ease-out",
      "--lsw-transition-slow": "400ms cubic-bezier(0.34, 1.56, 0.64, 1)"
    },
    "darkModeVariables": {
      "--lsw-bg": "#1A1A2E",
      "--lsw-bg-secondary": "#252542",
      "--lsw-surface": "#2A2A48",
      "--lsw-text-primary": "#F5F5F7",
      "--lsw-text-secondary": "#A0A0B8",
      "--lsw-text-muted": "#6B6B85",
      "--lsw-border": "#3A3A5C",
      "--lsw-primary": "#4A90D9"
    },
    "usage": "Import these variables in your CSS or use the JavaScript SDK to apply them programmatically. Override specific variables to create custom themes while maintaining design consistency."
  },
  "accessibility": {
    "ariaLabels": {
      "widgetToggle": "Open chat with your locksmith assistant",
      "widgetClose": "Close chat",
      "sendMessage": "Send message",
      "callNow": "Call now for immediate assistance",
      "quickReply": "Select quick reply option"
    },
    "keyboardNavigation": {
      "enabled": true,
      "focusTrap": true,
      "escapeToClose": true
    },
    "screenReader": {
      "announceNewMessages": true,
      "politeMode": true
    }
  },
  "responsive": {
    "breakpoints": {
      "mobile": "480px",
      "tablet": "768px",
      "desktop": "1024px"
    },
    "adjustments": {
      "mobile": {
        "widgetWidth": "calc(100% - 32px)",
        "fontSizeReduction": "0px",
        "buttonSize": "larger",
        "touchTargets": "minimum 44px"
      }
    }
  }
}
```

---

## Implementation Notes

**Why this colour scheme works for Australian locksmiths:**

- **Navy (#1E3A5F)**: Authority, trust, security — critical for people letting strangers into their homes
- **Gold/Brass (#C9A227)**: Traditional key metal, evokes quality hardware, feels premium without being flashy
- **Safety Orange (#E85D04)**: Emergency visibility, stands out on any background, signals "we can help right now"

**Positioning rationale:** Bottom-left keeps the widget away from cookie consent banners, social chat plugins, and contact forms that typically crowd the bottom-right. For trades, this placement feels less intrusive while remaining highly accessible on mobile.

**Dark mode included** because tradies often browse on phones in various lighting conditions — under a car bonnet, in dark


Response:
# Tiler Business Widget Customization Specification

```json
{
  "widget": {
    "id": "sunaiva-tiler-v1",
    "version": "1.0.0",
    "businessType": "tiler",
    "theme": "light"
  },
  "colors": {
    "primary": "#2D3436",
    "primaryHover": "#1E2526",
    "secondary": "#E17055",
    "secondaryHover": "#D65D40",
    "accent": "#00B894",
    "accentLight": "#55EFC4",
    "background": "#FFFFFF",
    "backgroundSecondary": "#F8F9FA",
    "surface": "#FFFFFF",
    "surfaceElevated": "#FFFFFF",
    "textPrimary": "#2D3436",
    "textSecondary": "#636E72",
    "textMuted": "#B2BEC3",
    "border": "#DFE6E9",
    "borderFocused": "#E17055",
    "success": "#00B894",
    "error": "#D63031",
    "overlay": "rgba(0, 0, 0, 0.5)",
    "gradient": "linear-gradient(135deg, #2D3436 0%, #636E72 100%)"
  },
  "typography": {
    "fontFamily": "'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
    "fontFamilyMono": "'JetBrains Mono', 'Fira Code', monospace",
    "fontSizeXs": "11px",
    "fontSizeSm": "13px",
    "fontSizeBase": "15px",
    "fontSizeLg": "17px",
    "fontSizeXl": "21px",
    "fontSize2xl": "25px",
    "fontWeightNormal": 400,
    "fontWeightMedium": 500,
    "fontWeightSemibold": 600,
    "fontWeightBold": 700,
    "lineHeightTight": 1.25,
    "lineHeightNormal": 1.5,
    "lineHeightRelaxed": 1.75,
    "letterSpacingTight": "-0.02em",
    "letterSpacingNormal": "0",
    "letterSpacingWide": "0.05em"
  },
  "spacing": {
    "spaceXs": "4px",
    "spaceSm": "8px",
    "spaceMd": "12px",
    "spaceLg": "16px",
    "spaceXl": "24px",
    "space2xl": "32px",
    "space3xl": "48px"
  },
  "sizing": {
    "widgetWidthDesktop": "380px",
    "widgetWidthMobile": "calc(100vw - 32px)",
    "widgetMaxWidth": "90vw",
    "widgetHeightDesktop": "520px",
    "widgetHeightMobile": "calc(100vh - 120px)",
    "widgetHeightMax": "640px",
    "widgetBorderRadius": "16px",
    "buttonBorderRadius": "12px",
    "inputBorderRadius": "10px",
    "avatarSize": "48px",
    "avatarSizeSm": "36px",
    "iconSize": "24px",
    "iconSizeSm": "20px",
    "headerHeight": "64px",
    "inputHeight": "48px"
  },
  "position": {
    "placement": "bottom-right",
    "floatingOffset": "24px",
    "mobileFloatingOffset": "16px",
    "zIndex": "9999",
    "safeAreaPadding": "24px"
  },
  "avatar": {
    "type": "icon",
    "iconName": "tile-expert",
    "style": "rounded",
    "backgroundColor": "#2D3436",
    "iconColor": "#FFFFFF",
    "size": "48px",
    "showBadge": true,
    "badgeColor": "#00B894",
    "badgeText": "AI",
    "description": "A stylized trowel and tile icon representing expert tiling services - clean, professional, trustworthy"
  },
  "welcomeMessage": {
    "enabled": true,
    "text": "G'day! I'm the AI assistant for [Business Name]. I can help you with tile quotes, job bookings, and answering questions about our services. How can I help you today?",
    "voiceGreeting": "G'day mate, thanks for visiting. I'm here to help with your tiling needs - whether it's a quote, booking, or just some questions.",
    "quickReplies": [
      "Get a quote",
      "Book a job",
      "What areas do you service?",
      "Types of tiles you do?"
    ],
    "language": "en-AU",
    "autoOpenDelay": 3000
  },
  "animations": {
    "entry": {
      "type": "slide-up-fade",
      "duration": "400ms",
      "easing": "cubic-bezier(0.16, 1, 0.3, 1)",
      "delay": "0ms"
    },
    "exit": {
      "type": "fade-out-scale",
      "duration": "200ms",
      "easing": "ease-out"
    },
    "idle": {
      "type": "subtle-pulse",
      "scale": "1.02",
      "duration": "2s",
      "repeat": true,
      "repeatDelay": "3s"
    },
    "notification": {
      "type": "ring-pulse",
      "color": "#00B894",
      "duration": "1.5s",
      "repeat": 3
    },
    "buttonHover": {
      "type": "lift",
      "translateY": "-2px",
      "duration": "150ms",
      "easing": "ease-out"
    },
    "messageAppear": {
      "type": "slide-in-bottom",
      "duration": "300ms",
      "easing": "cubic-bezier(0.16, 1, 0.3, 1)"
    },
    "typing": {
      "type": "bounce",
      "dotCount": 3,
      "duration": "1.4s"
    }
  },
  "buttons": {
    "primary": {
      "background": "#E17055",
      "backgroundHover": "#D65D40",
      "color": "#FFFFFF",
      "colorHover": "#FFFFFF",
      "border": "none",
      "borderHover": "none",
      "boxShadow": "0 4px 12px rgba(225, 112, 85, 0.3)",
      "boxShadowHover": "0 6px 20px rgba(225, 112, 85, 0.4)"
    },
    "secondary": {
      "background": "#F8F9FA",
      "backgroundHover": "#E9ECEF",
      "color": "#2D3436",
      "colorHover": "#2D3436",
      "border": "1px solid #DFE6E9",
      "borderHover": "1px solid #B2BEC3"
    },
    "ghost": {
      "background": "transparent",
      "backgroundHover": "rgba(45, 52, 54, 0.05)",
      "color": "#636E72",
      "colorHover": "#2D3436"
    },
    "quickReply": {
      "background": "#F8F9FA",
      "backgroundHover": "#E17055",
      "color": "#2D3436",
      "colorHover": "#FFFFFF",
      "border": "1px solid #DFE6E9",
      "borderHover": "1px solid #E17055",
      "borderRadius": "20px"
    }
  },
  "darkMode": {
    "enabled": true,
    "colors": {
      "primary": "#F5F6FA",
      "primaryHover": "#FFFFFF",
      "secondary": "#E17055",
      "secondaryHover": "#D65D40",
      "accent": "#55EFC4",
      "background": "#1E272E",
      "backgroundSecondary": "#2D3436",
      "surface": "#2D3436",
      "surfaceElevated": "#353B48",
      "textPrimary": "#F5F6FA",
      "textSecondary": "#A4B0BE",
      "textMuted": "#747D8C",
      "border": "#3D4852",
      "borderFocused": "#E17055"
    },
    "adjustments": {
      "widgetBorderRadius": "20px",
      "cardShadow": "0 8px 32px rgba(0, 0, 0, 0.4)",
      "subtleGlow": "0 0 40px rgba(225, 112, 85, 0.1)"
    }
  },
  "industryElements": {
    "iconSet": "trade-essential",
    "specializedQuickActions": [
      {
        "id": "quote-bathroom",
        "label": "Bathroom tiles",
        "icon": "bathroom",
        "subtext": "Full renos, waterproofing"
      },
      {
        "id": "quote-kitchen",
        "label": "Kitchen splashbacks",
        "icon": "kitchen",
        "subtext": "Glass, porcelain, mosaic"
      },
      {
        "id": "quote-outdoor",
        "label": "Outdoor tiling",
        "icon": "outdoor",
        "subtext": "Patios, pool areas"
      },
      {
        "id": "quote-repair",
        "label": "Tile repair/replace",
        "icon": "repair",
        "subtext": "Cracked tiles, re-grouting"
      },
      {
        "id": "quote-floor",
        "label": "Floor tiling",
        "icon": "floor",
        "subtext": "All floor types"
      },
      {
        "id": "quote-commercial",
        "label": "Commercial jobs",
        "icon": "commercial",
        "subtext": " Shops, offices"
      }
    ],
    "conversationFlows": {
      "quoteRequest": {
        "triggers": ["get a quote", "need a quote", "how much", "pricing"],
        "questions": [
          {
            "id": "job-type",
            "question": "What type of tiling job are you looking for?",
            "options": ["Bathroom", "Kitchen", "Outdoor", "Floor", "Repair", "Other"]
          },
          {
            "id": "area-size",
            "question": "Roughly how big is the area in square metres?",
            "inputType": "number",
            "placeholder": "e.g. 12",
            "helperText": "Don't worry if you're not sure, we can measure on-site"
          },
          {
            "id": "tile-preference",
            "question": "Do you have a tile type in mind, or need advice?",
            "options": ["Already bought tiles", "Need recommendations", "Not sure yet"]
          },
          {
            "id": "location",
            "question": "What's your suburb?",
            "inputType": "text",
            "placeholder": "e.g. Craigieburn",
            "helperText": "We service most of Melbourne's northern suburbs"
          },
          {
            "id": "timeline",
            "question": "When are you looking to get it done?",
            "options": ["ASAP", "This month", "Next few months", "Just browsing"]
          },
          {
            "id": "contact",
            "question": "Great! What's your best number and name?",
            "inputs": [
              { "name": "phone", "type": "tel", "required": true },
              { "name": "name", "type": "text", "required": true }
            ]
          }
        ]
      },
      "bookingFlow": {
        "triggers": ["book", "appointment", "schedule"],
        "questions": [
          {
            "id": "service-type",
            "question": "What do you need done?",
            "options": ["New tiling", "Tile repair", "Measurement/quote", "Other"]
          },
          {
            "id": "preferred-date",
            "question": "What date works for you?",
            "inputType": "date",
            "minDate": "tomorrow"
          },
          {
            "id": "time-preference",
            "question": "Morning or afternoon?",
            "options": ["Morning (8-12)", "Afternoon (12-5)", "Any time"]
          },
          {
            "id": "contact-details",
            "question": "Can I get your details to confirm the booking?",
            "inputs": [
              { "name": "name", "type": "text", "required": true },
              { "name": "phone", "type": "tel", "required": true },
              { "name": "address", "type": "text", "required": true }
            ]
          }
        ]
      }
    },
    "knowledgeBase": {
      "services": [
        "Bathroom tiling & renovations",
        "Kitchen splashbacks",
        "Floor tiling (timber, concrete, existing tiles)",
        "Outdoor & patio tiling",
        "Pool area tiling",
        "Tile repair & replacement",
        "Re-grouting & siliconing",
        "Waterproofing",
        "Mega-grange & custom patterns",
        "Commercial tiling"
      ],
      "tileTypes": [
        "Porcelain tiles",
        "Ceramic tiles",
        "Mosaic tiles",
        "Natural stone (marble, granite, slate)",
        "Terracotta",
        "Glass tiles",
        "Timber-look tiles",
        "Concrete-look tiles"
      ],
      "serviceAreas": [
        "Northern suburbs",
        "Eastern suburbs",
        "Melbourne metro",
        "Regional Victoria"
      ],
      "typicalPricing": {
        "bathroom": "$80-120 per sqm",
        "kitchenSplashback": "$60-90 per sqm",
        "floorTiling": "$70-100 per sqm",
        "outdoor": "$85-130 per sqm",
        "repair": "$150+ call-out + parts"
      },
      "faq": [
        {
          "q": "Do you supply tiles?",
          "a": "We can help you select and order tiles from our suppliers, or you can supply your own. We give unbiased advice on what's best for your situation."
        },
        {
          "q": "How long does a bathroom take?",
          "a": "A standard bathroom renovation typically takes 5-10 days depending on size and complexity. We'll give you a timeline at the quote stage."
        },
        {
          "q": "Do you do quotes on weekends?",
          "a": "Yes! We understand tradies work during the week, so we're happy to arrange quotes on Saturdays by appointment."
        },
        {
          "q": "What's your warranty?",
          "a": "We offer a 10-year warranty on our workmanship. Tiles themselves come with manufacturer warranties."
        }
      ]
    },
    "brandingAssets": {
      "favicon": "/favicon-tiles.ico",
      "tilePatterns": [
        "hexagonal-subtle",
        "diamond-pattern",
        "classic-checkerboard"
      ],
      "accentGraphics": [
        "trowel-icon",
        "tile-icon",
        "measurement-icon",
        "grout-line-icon"
      ]
    }
  },
  "cssCustomProperties": {
    "--sunaiva-tiler-primary": "#2D3436",
    "--sunaiva-tiler-primary-hover": "#1E2526",
    "--sunaiva-tiler-secondary": "#E17055",
    "--sunaiva-tiler-secondary-hover": "#D65D40",
    "--sunaiva-tiler-accent": "#00B894",
    "--sunaiva-tiler-accent-light": "#55EFC4",
    "--sunaiva-tiler-bg": "#FFFFFF",
    "--sunaiva-tiler-bg-secondary": "#F8F9FA",
    "--sunaiva-tiler-surface": "#FFFFFF",
    "--sunaiva-tiler-text": "#2D3436",
    "--sunaiva-tiler-text-muted": "#B2BEC3",
    "--sunaiva-tiler-border": "#DFE6E9",
    "--sunaiva-tiler-radius-sm": "10px",
    "--sunaiva-tiler-radius-md": "12px",
    "--sunaiva-tiler-radius-lg": "16px",
    "--sunaiva-tiler-radius-xl": "20px",
    "--sunaiva-tiler-shadow": "0 8px 32px rgba(0, 0, 0, 0.12)",
    "--sunaiva-tiler-shadow-hover": "0 12px 40px rgba(0, 0, 0, 0.16)",
    "--sunaiva-tiler-font": "'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif",
    "--sunaiva-tiler-font-mono": "'JetBrains Mono', monospace",
    "--sunaiva-tiler-transition-fast": "150ms ease",
    "--sunaiva-tiler-transition-normal": "250ms ease",
    "--sunaiva-tiler-transition-slow": "400ms cubic-bezier(0.16, 1, 0.3, 1)",
    "--sunaiva-tiler-z-index": "9999",
    "--sunaiva-tiler-spacing-xs": "4px