ZAP by Checkmarx Scanning Report

Generated with ZAP on Fri 14 Aug 2026, at 18:51:11

ZAP Version: 2.17.0

ZAP by Checkmarx

Contents

About This Report

Report Parameters

Contexts

No contexts were selected, so all contexts were included by default.

Sites

The following sites were included:

  • https://sites.wons.bt

(If no sites were selected, all sites were included by default.)

An included site must also be within one of the included contexts for its data to be included in the report.

Risk levels

Included: High, Medium, Low, Informational

Excluded: None

Confidence levels

Included: User Confirmed, High, Medium, Low

Excluded: User Confirmed, High, Medium, Low, False Positive

Summaries

Alert Counts by Risk and Confidence

This table shows the number of alerts for each level of risk and confidence included in the report.

(The percentages in brackets represent the count as a percentage of the total number of alerts included in the report, rounded to one decimal place.)

Confidence
User Confirmed High Medium Low Total
Risk High 0
(0.0%)
0
(0.0%)
0
(0.0%)
0
(0.0%)
0
(0.0%)
Medium 0
(0.0%)
1
(6.7%)
1
(6.7%)
0
(0.0%)
2
(13.3%)
Low 0
(0.0%)
2
(13.3%)
1
(6.7%)
1
(6.7%)
4
(26.7%)
Informational 0
(0.0%)
2
(13.3%)
5
(33.3%)
2
(13.3%)
9
(60.0%)
Total 0
(0.0%)
5
(33.3%)
7
(46.7%)
3
(20.0%)
15
(100%)

Alert Counts by Site and Risk

This table shows, for each site for which one or more alerts were raised, the number of alerts raised at each risk level.

Alerts with a confidence level of "False Positive" have been excluded from these counts.

(The numbers in brackets are the number of alerts raised for the site at or above that risk level.)

Risk
High
(= High)
Medium
(>= Medium)
Low
(>= Low)
Informational
(>= Informational)
Site https://sites.wons.bt 0
(0)
2
(2)
4
(6)
9
(15)

Alert Counts by Alert Type

This table shows the number of alerts of each alert type, together with the alert type's risk level.

(The percentages in brackets represent each count as a percentage, rounded to one decimal place, of the total number of alerts included in this report.)

Alert type Risk Count
Content Security Policy (CSP) Header Not Set Medium 5
(33.3%)
Cross-Domain Misconfiguration Medium 5
(33.3%)
Cookie Without Secure Flag Low 5
(33.3%)
Server Leaks Version Information via "Server" HTTP Response Header Field Low 5
(33.3%)
Strict-Transport-Security Header Not Set Low 5
(33.3%)
Timestamp Disclosure - Unix Low 5
(33.3%)
Authentication Request Identified Informational 2
(13.3%)
Content Security Policy (CSP) Report-Only Header Found Informational 5
(33.3%)
Information Disclosure - Sensitive Information in URL Informational 3
(20.0%)
Information Disclosure - Suspicious Comments Informational 17
(113.3%)
Modern Web Application Informational 5
(33.3%)
Re-examine Cache-control Directives Informational 5
(33.3%)
Session Management Response Identified Informational 19
(126.7%)
User Agent Fuzzer Informational 5
(33.3%)
User Controllable HTML Element Attribute (Potential XSS) Informational 14
(93.3%)
Total 15

Insights

This table shows information that is likely to be very relevant to you, but which is not related to vulnerabilities, or potentially even related to the application in question.

Level Reason Site Description Statistic
Low
Warning
ZAP warnings logged - see the zap.log file for details
82
Low
Exceeded High
https://sites.wons.bt
Percentage of responses with status code 4xx
96 %
Info
Informational
Percentage of network failures
1 %
Info
Informational
http://sites.wons.bt
Percentage of responses with status code 3xx
100 %
Info
Informational
https://sites.wons.bt
Percentage of responses with status code 2xx
3 %
Info
Informational
https://sites.wons.bt
Percentage of responses with status code 3xx
1 %
Info
Informational
https://sites.wons.bt
Percentage of endpoints with content type application/json
40 %
Info
Informational
https://sites.wons.bt
Percentage of endpoints with content type font/woff2
6 %
Info
Informational
https://sites.wons.bt
Percentage of endpoints with content type image/png
1 %
Info
Informational
https://sites.wons.bt
Percentage of endpoints with content type text/css
1 %
Info
Informational
https://sites.wons.bt
Percentage of endpoints with content type text/html
44 %
Info
Informational
https://sites.wons.bt
Percentage of endpoints with content type text/javascript
3 %
Info
Informational
https://sites.wons.bt
Percentage of endpoints with method GET
84 %
Info
Informational
https://sites.wons.bt
Percentage of endpoints with method POST
15 %
Info
Informational
https://sites.wons.bt
Count of total endpoints
65
Info
Informational
https://sites.wons.bt
Percentage of slow responses
2 %

Alerts

  1. Risk=Medium, Confidence=High (1)

    1. https://sites.wons.bt (1)

      1. Content Security Policy (CSP) Header Not Set (1)
        1. GET https://sites.wons.bt
          Alert tags
          Alert description

          Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, including Cross Site Scripting (XSS) and data injection attacks. These attacks are used for everything from data theft to site defacement or distribution of malware. CSP provides a set of standard HTTP headers that allow website owners to declare approved sources of content that browsers should be allowed to load on that page — covered types are JavaScript, CSS, HTML frames, fonts, images and embeddable objects such as Java applets, ActiveX, audio and video files.

          Request
          Request line and header section (227 bytes)
          GET https://sites.wons.bt HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          
          
          Request body (0 bytes)
          Response
          Status line and header section (805 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:42:54 GMT
          Content-Type: text/html; charset=utf-8
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-iB8Q5DnSVjWx_AOLdlto8Q'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Set-Cookie: wons_csrf=y550JyNiyw54uLkFFzWS.e2ec5c27689fa4cf2714635ce48a4a48; Path=/; Max-Age=2592000; HttpOnly; SameSite=Lax
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          content-length: 81797
          
          
          Response body (81797 bytes)
          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>WONS Sites — your website, edited like a dashboard</title>
            <meta name="description" content="A website you can keep up to date yourself. Pick a look, fill in your pages, and it is live — no domain to buy, no developer, no rebuilds.">
            
              <link rel="icon" href="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfNHZ2NmczbWVkby5wbmc&amp;s=9821682f6dcdfe2a0cd279db1dd9c9d12d0cc8dda08970ee8913adbff07f2aee">
            
            <link rel="preload" href="/fonts/Manrope-500-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-italic-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="stylesheet" href="/fonts/fonts.css">
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              (function () {
                try {
                  var t = localStorage.getItem("wons-sites-theme");
                  if (t) document.documentElement.setAttribute("data-theme", t);
                } catch (e) {}
              })();
            </script>
            <style>
              :root {
                --emerald:      #0d9d63;
                --emerald-deep: #077a4b;
                --emerald-dark: #05603a;
                --emerald-soft: #e7f6ee;
                --emerald-line: #c6e8d6;
          
                --heading:      #1d3b2c;
                --cta-bg:       #1d4d33;
                --cta-bg-hover: #266040;
                --cta-fg:       #ffffff;
          
                --canvas:    #fdfcf8;
                --surface:   #ffffff;
                --surface-2: #f2f6ef;
                --ink:       #22302a;
                --ink-2:     #435248;
                --muted:     #5f6f66;
                --faint:     #8fa096;
                --line:      #e6e9df;
                --line-soft: #eef1e8;
          
                --warn:      #b4690e;
                --warn-soft: #fdf3e4;
                --bad:       #c8372c;
                --bad-soft:  #fdeeec;
                --ok:        var(--emerald);
          
                 
                --band:       #0f100f;
                --band-2:     #171a18;
                --band-fg:    #ffffff;
                --band-muted: #9aa39e;
                --band-line:  #2a2f2c;
                --band-card:  #d5dad3;
          
                --r-xs: 8px;
                --r:    12px;
                --r-lg: 18px;
                --r-xl: 26px;
                --r-2xl: 34px;
                --r-pill: 999px;
          
                --shadow-sm: 0 1px 2px rgba(16,30,24,.05);
                --shadow:    0 1px 2px rgba(16,30,24,.04), 0 12px 28px -18px rgba(16,30,24,.24);
                --shadow-lg: 0 32px 64px -34px rgba(10,40,28,.40);
                --ring:      0 0 0 3px rgba(13,157,99,.20);
          
                --display: "Fraunces", Georgia, "Times New Roman", serif;
                --text:    "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
                --mono:    ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
          
                --maxw: min(1280px, calc(100vw - 3em));
                --nav-h: 68px;
                color-scheme: light;
              }
          
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) {
                  --emerald:      #2fc98a;
                  --emerald-deep: #21b077;
                  --emerald-dark: #8ce8bf;
                  --emerald-soft: #10281f;
                  --emerald-line: #1d4436;
                  --heading:      #eef2f0;
                  --cta-bg:       #2fc98a;
                  --cta-bg-hover: #4dd69c;
                  --cta-fg:       #06120d;
                  --canvas:    #0b0f0e;
                  --surface:   #121817;
                  --surface-2: #182120;
                  --ink:       #eef2f0;
                  --ink-2:     #c3ccc9;
                  --muted:     #97a3a0;
                  --faint:     #6a7674;
                  --line:      #222c2a;
                  --line-soft: #1a2322;
                  --warn:      #e0a55a;
                  --warn-soft: #2a2113;
                  --bad:       #f0776a;
                  --bad-soft:  #2c1613;
                  --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                  --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                  --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                  --ring:      0 0 0 3px rgba(47,201,138,.26);
                  color-scheme: dark;
                }
              }
              :root[data-theme="dark"] {
                --emerald:      #2fc98a;
                --emerald-deep: #21b077;
                --emerald-dark: #8ce8bf;
                --emerald-soft: #10281f;
                --emerald-line: #1d4436;
                --heading:      #eef2f0;
                --cta-bg:       #2fc98a;
                --cta-bg-hover: #4dd69c;
                --cta-fg:       #06120d;
                --canvas:    #0b0f0e;
                --surface:   #121817;
                --surface-2: #182120;
                --ink:       #eef2f0;
                --ink-2:     #c3ccc9;
                --muted:     #97a3a0;
                --faint:     #6a7674;
                --line:      #222c2a;
                --line-soft: #1a2322;
                --warn:      #e0a55a;
                --warn-soft: #2a2113;
                --bad:       #f0776a;
                --bad-soft:  #2c1613;
                --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                --ring:      0 0 0 3px rgba(47,201,138,.26);
                color-scheme: dark;
              }
              *, *::before, *::after { box-sizing: border-box; }
              html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
              body {
                margin: 0;
                font-family: var(--text);
                font-size: 16px; line-height: 1.6; letter-spacing: -.006em;
                color: var(--ink); background: var(--canvas);
                -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
              }
              a { color: inherit; text-decoration: none; }
              ::selection { background: var(--emerald); color: #fff; }
              img { max-width: 100%; height: auto; }
              hr { border: 0; border-top: 1px solid var(--line); margin: 2rem 0; }
          
              h1, h2 { font-family: var(--display); margin: 0 0 .6rem; }
              h3, h4 { font-family: var(--text); margin: 0 0 .6rem; }
              h1 { font-size: clamp(2.5rem, 5.4vw, 3.9rem); font-weight: 620; line-height: 1.06; letter-spacing: -.015em; color: var(--heading); }
              h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); font-weight: 600; line-height: 1.12; letter-spacing: -.012em; color: var(--heading); }
              h3 { font-size: 1.16rem; font-weight: 750; line-height: 1.25; letter-spacing: -.015em; color: var(--heading); }
              h4 { font-size: .98rem; font-weight: 750; letter-spacing: -.01em; }
          
               
              body:not(.app) h1,
              body:not(.app) h2 { font-family: var(--text); font-weight: 800; letter-spacing: -.04em; }
              body:not(.app) h1 { font-size: clamp(2.6rem, 6vw, 4.6rem); line-height: .98; }
              body:not(.app) h2 { font-size: clamp(2rem, 4.4vw, 3.4rem); line-height: 1.02; }
          
               
              body:not(.app) .d-xl,
              .d-xl { font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
                      font-size: clamp(3rem, 8.6vw, 7rem); line-height: .92; margin: 0; color: var(--heading); }
              body:not(.app) .d-lg,
              .d-lg { font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
                      font-size: clamp(2.2rem, 5vw, 3.9rem); line-height: 1; margin: 0; color: var(--heading); }
              body:not(.app) .d-thin,
              .d-thin { font-family: var(--text); font-weight: 300; letter-spacing: -.035em;
                        font-size: clamp(2rem, 5.4vw, 4.2rem); line-height: 1.04; margin: 0; color: var(--heading); }
              p  { margin: 0 0 1rem; }
              .lede { font-size: clamp(1.02rem, 1.6vw, 1.18rem); line-height: 1.55; color: var(--muted); max-width: 48ch; }
              .muted { color: var(--muted); }
              .faint { color: var(--faint); }
              .tiny  { font-size: .82rem; }
              .label {
                font-family: var(--mono); font-size: .7rem; font-weight: 500;
                letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              }
              .kicker {
                display: inline-flex; align-items: center; gap: .55rem;
                font-family: var(--mono); font-size: .71rem; font-weight: 500;
                letter-spacing: .16em; text-transform: uppercase; color: var(--emerald-deep);
              }
              .kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .6; }
              code {
                font-family: var(--mono); font-size: .85em;
                background: var(--surface-2); border: 1px solid var(--line);
                border-radius: 6px; padding: .08em .4em; color: var(--ink-2);
              }
          
              .shell {
                min-height: 100vh; display: flex; flex-direction: column;
                overflow-x: clip;
              }
              .wrap { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              .topbar {
                position: sticky; top: 0; z-index: 60; height: var(--nav-h);
                display: flex; align-items: center;
                background: color-mix(in srgb, var(--canvas) 88%, transparent);
                backdrop-filter: saturate(1.6) blur(14px); -webkit-backdrop-filter: saturate(1.6) blur(14px);
                border-bottom: 1px solid var(--line);
              }
              .topbar .bar { display: flex; align-items: center; gap: 1.4rem; width: 100%; }
          
               
              body:not(.app) .topbar {
                position: fixed; top: 0; left: 0; right: 0; height: auto;
                padding: 14px 0; background: none; border: 0;
                backdrop-filter: none; -webkit-backdrop-filter: none;
                transition: padding .25s ease;
              }
               
              body:not(.app) .topbar .bar {
                position: relative;
                padding: .5rem .55rem .5rem 1.15rem; border-radius: var(--r-pill);
                background: color-mix(in srgb, var(--surface) 92%, transparent);
                border: 1px solid var(--line); box-shadow: var(--shadow-sm);
                backdrop-filter: saturate(1.5) blur(16px); -webkit-backdrop-filter: saturate(1.5) blur(16px);
                transition: background .25s ease, border-color .25s ease, box-shadow .25s ease;
              }
          
               
              body.hero-top:not(.app) .topbar .bar {
                background: rgba(255, 255, 255, .12);
                border-color: rgba(255, 255, 255, .22);
                box-shadow: none;
              }
              body.hero-top:not(.app) .topbar .brand,
              body.hero-top:not(.app) .topbar .nav a.link,
              body.hero-top:not(.app) .topbar .nav-actions a.link { color: #fff; }
              body.hero-top:not(.app) .topbar .nav a.link:hover,
              body.hero-top:not(.app) .topbar .nav-actions a.link:hover { color: #fff; background: rgba(255,255,255,.16); }
              body.hero-top:not(.app) .topbar .icon-btn { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.24); color: #fff; }
              body.hero-top:not(.app) .topbar .icon-btn:hover { border-color: #fff; color: #fff; }
              body.hero-top:not(.app) .topbar .brand .mark { box-shadow: none; }
          
              body:not(.app) .topbar.stuck { padding: 8px 0; }
              body.hero-top:not(.app) .topbar.stuck .bar {
                background: color-mix(in srgb, var(--surface) 94%, transparent);
                border-color: var(--line); box-shadow: var(--shadow);
              }
              body.hero-top:not(.app) .topbar.stuck .brand { color: var(--heading); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link { color: var(--ink-2); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link:hover,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn { background: var(--surface); border-color: var(--line); color: var(--muted); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
          
              .brand { display: inline-flex; align-items: center; gap: .6rem; font-family: var(--text); font-weight: 800; letter-spacing: -.03em; font-size: 1.05rem; color: var(--heading); flex-shrink: 0; }
              .brand .mark {
                width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
                background: linear-gradient(145deg, var(--emerald), var(--emerald-dark));
                color: #fff; font-size: .82rem; font-weight: 800; letter-spacing: -.02em;
                box-shadow: 0 6px 14px -6px rgba(7,122,75,.7);
              }
              :root[data-theme="dark"] .brand .mark { color: #06120d; }
              .brand .mark-img { background: none; box-shadow: none; object-fit: contain; border-radius: 7px; }
              .brand .mark-dark { display: none; }
              :root[data-theme="dark"] .brand .mark-light { display: none; }
              :root[data-theme="dark"] .brand .mark-dark { display: block; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .brand .mark-light { display: none; }
                :root:not([data-theme="light"]) .brand .mark-dark { display: block; }
              }
          
              .nav { display: flex; align-items: center; justify-content: center; gap: .4rem; flex: 1; }
              .nav a.link, .nav-actions a.link {
                display: inline-flex; align-items: center; gap: .42rem;
                padding: .45rem .75rem; border-radius: var(--r-xs);
                font-size: .93rem; font-weight: 600; color: var(--ink-2);
                transition: color .15s, background .15s;
              }
              .nav a.link:hover, .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              .nav a.link.active { color: var(--heading); }
              .nav-actions { display: flex; align-items: center; gap: .45rem; flex-shrink: 0; }
          
              .icon-btn {
                display: grid; place-items: center; width: 36px; height: 36px; flex-shrink: 0;
                border: 1px solid var(--line); border-radius: var(--r-xs);
                background: var(--surface); color: var(--muted); cursor: pointer;
                font: inherit; font-size: .95rem; padding: 0;
                transition: border-color .15s, color .15s;
              }
              .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .theme-toggle .sun { display: none; } .theme-toggle .moon { display: block; }
              :root[data-theme="dark"] .theme-toggle .sun { display: block; }
              :root[data-theme="dark"] .theme-toggle .moon { display: none; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .theme-toggle .sun { display: block; }
                :root:not([data-theme="light"]) .theme-toggle .moon { display: none; }
              }
              #navToggle { display: none; }
          
              @media (max-width: 860px) {
                #navToggle { display: grid; }
                .nav-actions a.link.nav-login { display: none; }
                .nav {
                  display: none; position: absolute; top: var(--nav-h); left: 0; right: 0;
                  flex-direction: column; align-items: stretch; gap: .1rem;
                  padding: .8rem clamp(1.1rem, 4vw, 2rem) 1.2rem;
                  background: var(--surface); border-bottom: 1px solid var(--line);
                  box-shadow: var(--shadow-lg);
                }
                .topbar.open .nav { display: flex; }
          
                 
                body:not(.app) .nav {
                  top: calc(100% + .5rem); left: .25rem; right: .25rem;
                  border: 1px solid var(--line); border-radius: var(--r-lg);
                  padding: .6rem .7rem .8rem;
                }
                body.hero-top:not(.app) .topbar.open .nav a.link,
                body:not(.app) .topbar.open .nav a.link { color: var(--ink-2); }
                body.hero-top:not(.app) .topbar.open .nav a.link:hover { background: var(--surface-2); color: var(--heading); }
              }
          
               
              @media (max-width: 620px) {
                body:not(.app) .topbar .brand { font-size: 0; gap: 0; }
                body:not(.app) .topbar .brand .mark { font-size: .82rem; }
                body:not(.app) .topbar .bar { gap: .6rem; padding-left: .55rem; }
                body:not(.app) .topbar .nav-actions { gap: .35rem; }
                body:not(.app) .topbar .nav-actions .btn { padding: .5rem .85rem; font-size: .82rem; }
                body:not(.app) .icon-btn { width: 34px; height: 34px; }
              }
          
              main { flex: 1; padding: clamp(2.2rem, 5vw, 4rem) 0 clamp(3.5rem, 7vw, 5.5rem); }
               
              body:not(.app) main { padding-top: calc(var(--nav-h) + clamp(1.4rem, 4vw, 2.6rem)); }
              body.hero-top:not(.app) main { padding-top: 0; }
               
              body.hero-top:not(.app) .flash { margin-top: calc(var(--nav-h) + 1rem); }
              body.app main { padding: 0; }
              body.app .wrap { max-width: none; padding: 0; }
          
               
              .bleed { width: 100vw; margin-left: calc(50% - 50vw); }
          
              .site-footer {
                background: var(--band); color: var(--band-fg);
                padding: clamp(2.4rem, 5vw, 3.6rem) 0 1.2rem;
                overflow: hidden;
              }
              .site-footer .footer-name,
              .site-footer .footer-sub-head { color: var(--band-fg); }
              .site-footer .footer-tag,
              .site-footer .footer-sub-copy,
              .site-footer .footer-col a { color: var(--band-muted); }
              .site-footer .label { color: #6f7a75; }
              .site-footer .footer-col a:hover { color: var(--band-fg); }
              .site-footer input[type=email] {
                background: var(--band-2); border-color: var(--band-line); color: var(--band-fg);
              }
              .site-footer input[type=email]::placeholder { color: #6f7a75; }
              .site-footer .sub-btn { background: var(--emerald); color: #06120d; }
              .site-footer .sub-btn:hover { background: var(--emerald-deep); color: #fff; }
              .site-footer .footer-base { border-top-color: var(--band-line); color: #6f7a75; }
              .footer-grid {
                display: grid; grid-template-columns: 1.4fr .8fr .8fr 1.2fr; gap: 2rem;
                padding-bottom: clamp(1.4rem, 3vw, 2.2rem);
              }
              .footer-name {
                font-family: var(--text); font-weight: 800; letter-spacing: -.03em;
                font-size: 1.05rem; color: var(--heading);
              }
              .footer-tag { margin: .5rem 0 0; font-size: .88rem; color: var(--muted); max-width: 30ch; }
              .footer-col .label { display: block; margin-bottom: .7rem; }
              .footer-col a { display: block; padding: .24rem 0; font-size: .9rem; color: var(--muted); }
              .footer-col a:hover { color: var(--emerald-deep); }
              .footer-sub-head { font-size: .95rem; font-weight: 750; color: var(--heading); margin: 0 0 .35rem; }
              .footer-sub-copy { font-size: .84rem; color: var(--muted); margin: 0 0 .8rem; max-width: 32ch; }
              .footer-sub { display: flex; gap: .5rem; }
              .footer-sub input[type=email] { flex: 1; min-width: 0; }
              .footer-sub .sub-btn {
                display: grid; place-items: center; width: 46px; flex-shrink: 0;
                border: 0; border-radius: var(--r); cursor: pointer;
                background: var(--cta-bg); color: var(--cta-fg); font: inherit;
                transition: background .15s;
              }
              .footer-sub .sub-btn:hover { background: var(--cta-bg-hover); }
              .footer-base {
                display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
                border-top: 1px solid var(--line-soft); padding-top: 1.2rem;
                font-family: var(--mono); font-size: .72rem; color: var(--faint);
              }
              @media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
              @media (max-width: 520px) { .footer-grid { grid-template-columns: 1fr; gap: 1.4rem; } }
          
              .btn {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-family: var(--text); font-weight: 600; font-size: .95rem;
                line-height: 1; cursor: pointer; white-space: nowrap; text-decoration: none;
                padding: .78rem 1.3rem; border-radius: var(--r); border: 1px solid transparent;
                transition: transform .08s, filter .15s, border-color .15s, background .15s, color .15s;
              }
              .btn:active { transform: translateY(1px); }
              .btn-primary { background: var(--ink); color: var(--canvas); }
              .btn-primary:hover { filter: brightness(1.22); }
              :root[data-theme="dark"] .btn-primary { background: var(--emerald); color: #06120d; }
              .btn-accent {
                background: var(--cta-bg); color: var(--cta-fg);
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
              }
              .btn-accent:hover { background: var(--cta-bg-hover); }
              .btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line); box-shadow: var(--shadow-sm); }
              .btn-ghost:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .btn-quiet { background: transparent; color: var(--muted); padding-left: .6rem; padding-right: .6rem; }
              .btn-quiet:hover { color: var(--ink); }
              .btn-sm { padding: .5rem .85rem; font-size: .86rem; border-radius: var(--r-xs); }
              .btn-block { width: 100%; }
              .btn[disabled] { opacity: .5; cursor: not-allowed; }
          
               
              body:not(.app) .btn { border-radius: var(--r-pill); padding: .88rem 1.6rem; }
              body:not(.app) .btn-sm { padding: .55rem 1.05rem; font-size: .86rem; }
              body:not(.app) form button:not([class]) { border-radius: var(--r-pill); }
              .btn-onband { background: #fff; color: var(--band); }
              .btn-onband:hover { background: #fff; filter: brightness(.94); }
              .btn-outline-band { background: transparent; color: #fff; border-color: rgba(255,255,255,.32); }
              .btn-outline-band:hover { border-color: #fff; background: rgba(255,255,255,.08); }
          
               
              .band { position: relative; padding: clamp(3rem, 7vw, 6rem) 0; }
               
              .band-dark + .band-dark { padding-top: 0; }
              .band-dark { background: var(--band); color: var(--band-fg); }
               
              body:not(.app) .band-dark h1, body:not(.app) .band-dark h2,
              body:not(.app) .band-dark h3, body:not(.app) .band-dark .d-xl,
              body:not(.app) .band-dark .d-lg, body:not(.app) .band-dark .d-thin { color: var(--band-fg); }
              .band-dark .muted, .band-dark .lede { color: var(--band-muted); }
              .band-dark .label { color: #6f7a75; }
              .band-dark .kicker { color: var(--emerald); }
               
              .band-paper { background: var(--surface-2); color: var(--ink); }
              .band-accent { background: var(--emerald-deep); color: #fff; }
              body:not(.app) .band-accent h2, body:not(.app) .band-accent h3,
              body:not(.app) .band-accent .d-lg, body:not(.app) .band-accent .d-xl { color: #fff; }
              .band-accent .lede, .band-accent .muted { color: rgba(255,255,255,.78); }
              .band-accent .label, .band-accent .kicker { color: rgba(255,255,255,.66); }
              .band-accent .kicker::before { background: currentColor; }
              .band-inner { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              form button:not([class]) {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-weight: 600; cursor: pointer; color: var(--cta-fg); border: 0;
                background: var(--cta-bg);
                border-radius: var(--r); padding: .78rem 1.4rem;
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
                transition: background .15s, transform .08s;
              }
              form button:not([class]):hover { background: var(--cta-bg-hover); }
              form button:not([class]):active { transform: translateY(1px); }
          
              .card {
                background: var(--surface); border: 1px solid var(--line);
                border-radius: var(--r-lg); padding: 1.5rem 1.6rem; box-shadow: var(--shadow);
              }
              .card.tight { padding: 1.1rem 1.2rem; }
              .card.flush { padding: 0; overflow: hidden; }
              .panel { background: var(--surface-2); border: 1px solid var(--line-soft); border-radius: var(--r); padding: 1.1rem 1.2rem; }
              .stack > * + * { margin-top: 1.1rem; }
              .row { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
              .row-between { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
              .grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
              .grid-2 { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
              .center-narrow { max-width: 460px; margin: 0 auto; }
          
              .pill {
                display: inline-flex; align-items: center; gap: .35rem;
                font-family: var(--mono); font-size: .68rem; font-weight: 500;
                letter-spacing: .08em; text-transform: uppercase;
                padding: .26rem .6rem; border-radius: 999px;
                background: var(--surface-2); color: var(--muted); border: 1px solid var(--line);
              }
              .pill { align-self: flex-start; }
              .pill.ok   { background: var(--emerald-soft); color: var(--emerald-deep); border-color: var(--emerald-line); }
              .pill.warn { background: var(--warn-soft); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 32%, transparent); }
              .pill.bad  { background: var(--bad-soft); color: var(--bad); border-color: color-mix(in srgb, var(--bad) 30%, transparent); }
              .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
              .field { display: block; margin-bottom: 1.05rem; }
              .field > .lbl { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; font-size: .88rem; font-weight: 600; margin-bottom: .38rem; }
              .field > .lbl .hint { font-weight: 400; font-size: .8rem; color: var(--faint); }
              input[type=text], input[type=email], input[type=password], input[type=url],
              input[type=number], input[type=date], input[type=search], textarea, select {
                display: block; width: 100%; font: inherit; font-size: .95rem; color: var(--ink);
                background: var(--surface); border: 1px solid var(--line); border-radius: var(--r);
                padding: .72rem .9rem; transition: border-color .15s, box-shadow .15s;
              }
              textarea { min-height: 120px; resize: vertical; line-height: 1.55; }
              input::placeholder, textarea::placeholder { color: var(--faint); }
              input:focus, textarea:focus, select:focus { outline: 0; border-color: var(--emerald); box-shadow: var(--ring); }
              input[aria-invalid="true"], textarea[aria-invalid="true"] { border-color: var(--bad); }
              input[type=checkbox], input[type=radio] { accent-color: var(--emerald); width: auto; }
              .err { display: block; color: var(--bad); font-size: .84rem; font-weight: 500; margin-top: .35rem; }
              fieldset { border: 0; margin: 0; padding: 0; }
          
              .progress { height: 6px; border-radius: 999px; background: var(--surface-2); overflow: hidden; border: 1px solid var(--line-soft); }
              .progress > i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--emerald), var(--emerald-deep)); }
          
              .flash {
                display: flex; align-items: flex-start; gap: .6rem;
                background: var(--surface-2); color: var(--ink-2);
                border: 1px solid var(--line); border-radius: var(--r);
                padding: .8rem 1.05rem; margin-bottom: 1.4rem; font-weight: 500; font-size: .93rem;
                animation: flashIn .22s ease;
              }
              .flash::before { content: "→"; font-weight: 800; color: var(--muted); }
              .flash.warn {
                background: #fdf6e7; color: #8a5a00; border-color: #f0dcae;
              }
              :root[data-theme="dark"] .flash.warn { color: #8a5a00; }
              .flash.warn::before { content: "!"; }
              .flash.ok {
                background: #eaf7f0; color: #10633f; border-color: #bfe3d0;
              }
              :root[data-theme="dark"] .flash.ok { color: #10633f; }
              .flash.ok::before { content: "\2713"; color: #10633f; }
              .flash.error {
                background: #fdeceb; color: #8c2b22; border-color: #f3c8c4;
              }
              :root[data-theme="dark"] .flash.error { color: #8c2b22; }
              .flash.error::before { content: "\2715"; color: #8c2b22; }
              @keyframes flashIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
              .auth-centered { text-align: center; padding-top: clamp(.2rem, 2vw, 1rem); }
              .auth-centered .kicker { justify-content: center; }
              .auth-centered .lede { margin-left: auto; margin-right: auto; }
              .auth-centered .card { text-align: left; }
          
              .ticks { list-style: none; margin: 1.1rem 0; padding: 0; display: grid; gap: .55rem; font-size: .93rem; }
              .ticks li { display: flex; gap: .6rem; align-items: baseline; color: var(--ink-2); }
              .ticks li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
          
              table { width: 100%; border-collapse: collapse; }
              th, td { text-align: left; padding: .7rem .6rem; font-size: .92rem; }
              th { font-family: var(--mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--faint); font-weight: 500; border-bottom: 1px solid var(--line); }
              td { border-bottom: 1px solid var(--line-soft); }
              tr:last-child td { border-bottom: 0; }
          
              .page-head { margin-bottom: clamp(1.6rem, 3vw, 2.4rem); max-width: 58ch; }
              .page-head .kicker { margin-bottom: .9rem; }
              .backlink { display: inline-flex; align-items: center; gap: .35rem; color: var(--faint); font-size: .88rem; margin-bottom: .9rem; }
              .backlink:hover { color: var(--emerald-deep); }
          
              @media (prefers-reduced-motion: reduce) {
                *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
              }
            </style>
          <script src="/__wons/sdk/pocketbase.umd.js"></script><script src="/__wons/sdk/wons.umd.js" data-wons-global="Wons"></script></head>
          <body class=" hero-top">
            <div class="shell">
              
              <header class="topbar" id="topbar">
                <div class="wrap"><div class="bar">
                  <a class="brand" href="/">
                    
                      <img class="mark mark-img mark-light"
                           src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfamd1aGFzNnMzcC5wbmc&amp;s=3ac7de0667a74e2dd9a505b782187df00961b7c1becb2295ec58ea7be28ed09d" alt="" width="30" height="30">
                      
                        <img class="mark mark-img mark-dark" src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfZmx5MHF4YXBrOS5wbmc&amp;s=394107603c20e2e16f57f48cc71aeda97460e22e87ebcf8ec27284364a7ea208" alt="" width="30" height="30">
                      
                    
                    WONS Sites
                  </a>
                  <nav class="nav" id="nav">
                    
                      <a class="link" href="/#product">Features</a>
                    
                      <a class="link" href="/themes">Themes</a>
                    
                      <a class="link" href="/#pricing">Pricing</a>
                    
                      <a class="link" href="/docs">Docs</a>
                    
                  </nav>
                  <div class="nav-actions">
                    
                      <a class="link nav-login" href="/login">Log in</a>
                      <a class="btn btn-accent btn-sm" href="/signup">Start Free</a>
                    
                    <button class="icon-btn theme-toggle" id="themeToggle" type="button" aria-label="Toggle dark mode">
                      <svg class="moon" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <path d="M20.4 14.7A8.7 8.7 0 0 1 9.3 3.6 8.7 8.7 0 1 0 20.4 14.7Z"/>
                      </svg>
                      <svg class="sun" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <circle cx="12" cy="12" r="4.1"/>
                        <path d="M12 2.5v2.2M12 19.3v2.2M4.6 4.6l1.6 1.6M17.8 17.8l1.6 1.6M2.5 12h2.2M19.3 12h2.2M4.6 19.4l1.6-1.6M17.8 6.2l1.6-1.6"/>
                      </svg>
                    </button>
                    <button class="icon-btn" id="navToggle" type="button" aria-label="Toggle menu" aria-expanded="false">☰</button>
                  </div>
                </div></div>
              </header>
              
          
              <main>
                <div class="wrap">
                  
                    
                  
                  
          
          
          <section class="hero bleed">
            <div class="hero-art" aria-hidden="true">
              
                
                  <div class="hero-shot hs-a">
                    <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-b">
                    <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-c">
                    <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
              
            </div>
            <div class="hero-veil" aria-hidden="true"></div>
          
            <div class="hero-inner band-inner">
              <div class="hero-meta">
                
                
                <div class="hm">
                  <span class="hm-k">Plan</span>
                  <span class="hm-v">Free forever</span>
                  <span class="hm-n">No card, nothing to cancel</span>
                </div>
                
                <div class="hm">
                  <span class="hm-k">Address</span>
                  <span class="hm-v">yourname.sites.wons.bt</span>
                  <span class="hm-n">Included the moment you sign up</span>
                </div>
                
                <div class="hm hm-last">
                  <span class="hm-k">Themes</span>
                  <span class="hm-v">15 to choose from</span>
                  <span class="hm-n">Switch any time, content stays</span>
                </div>
                
              </div>
          
              <div class="hero-body">
                <h1 class="hero-title">Build a website.<br>Share your world.</h1>
                <div class="hero-foot">
                  <div class="hero-actions">
                    <a class="btn btn-accent btn-lg" href="/signup">Start free
                      <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                    </a>
                    <a class="btn btn-outline-band btn-lg" href="#looks">See the themes</a>
                  </div>
                  <p class="hero-note">
                    For shops, schools, communities, creators and small organisations.
                    No coding, and nothing to buy before you begin.
                  </p>
                </div>
              </div>
            </div>
          </section>
          
          
          <section class="section reasons" id="why">
            <h2 class="d-xl reasons-title rv">Reasons to<br>start today</h2>
            <div class="reasons-copy rv">
              <p>
                <em>A website you can keep up to date yourself.</em> Most sites go stale
                because changing one line means calling whoever built it. Here every
                part of the page is a form — <em>a rate, a menu, an opening hour, a
                photograph</em> — and the change is live on the next visit.
              </p>
              <p>
                Your content lives here. <em>Your site can stay wherever it is hosted
                today</em>, reading everything from one address.
              </p>
            </div>
          </section>
          
          
          
          <section class="section statement">
            <p class="d-thin statement-line rv">A brochure site costs<br>Nu. 40,000 – 90,000 to rebuild</p>
            <div class="range rv">
              <span class="range-a">Rebuild</span>
              <span class="range-arrow" aria-hidden="true">
                <svg viewBox="0 0 120 12" preserveAspectRatio="none"><path d="M2 6h108M104 2l7 4-7 4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
              </span>
              <span class="range-b">Free</span>
              <span class="range-tail">to start here</span>
            </div>
          </section>
          
          
          <section class="section tilt-section" id="product">
            <div class="tilt-head rv">
              <span class="kicker">Yours to change</span>
              <h2>The things that actually go out of date.</h2>
            </div>
            <div class="tilt-row" aria-label="Examples of content you edit yourself">
              
                <figure class="tilt-card ct-a">
                  <span class="tc-field">Room rate</span>
                  <span class="tc-value">Nu. 3,500 / night</span>
                  <figcaption class="tc-note">Before the season turns</figcaption>
                </figure>
              
                <figure class="tilt-card ct-b">
                  <span class="tc-field">Today&#39;s menu</span>
                  <span class="tc-value">Ema datshi, red rice</span>
                  <figcaption class="tc-note">From your phone</figcaption>
                </figure>
              
                <figure class="tilt-card ct-c">
                  <span class="tc-field">Opening hours</span>
                  <span class="tc-value">Closed for Losar</span>
                  <figcaption class="tc-note">Set it and forget it</figcaption>
                </figure>
              
                <figure class="tilt-card ct-d">
                  <span class="tc-field">Team</span>
                  <span class="tc-value">Pema — Front desk</span>
                  <figcaption class="tc-note">A new photo when someone joins</figcaption>
                </figure>
              
                <figure class="tilt-card ct-e">
                  <span class="tc-field">Tour dates</span>
                  <span class="tc-value">Mar 14 – Mar 22</span>
                  <figcaption class="tc-note">Next spring, added early</figcaption>
                </figure>
              
                <figure class="tilt-card ct-f">
                  <span class="tc-field">Notice</span>
                  <span class="tc-value">Road open again</span>
                  <figcaption class="tc-note">Across the top of every page</figcaption>
                </figure>
              
            </div>
          </section>
          
          
          <section class="band band-dark bleed" id="how">
            <div class="band-inner">
              <h2 class="d-lg steps-title">How it goes</h2>
              <p class="steps-sub">Three screens between an empty account and a site people can read.</p>
          
              <div class="steps">
                
                  <details class="step" open>
                    <summary class="step-head">
                      <span class="step-n">01</span>
                      <span class="step-kind">Sign up</span>
                      <span class="step-time">About a minute</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Create your workspace</h3>
                        <div class="step-tags">
                          <span class="step-tag">Free plan</span><span class="step-tag">No card</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">One form. An organisation name, an email and a password.</p>
                        <p class="step-body">Your workspace is created and you are taken straight into the dashboard. The email confirmation is for account recovery — it does not hold anything up.</p>
                        <a class="btn btn-accent btn-sm" href="/signup">Create a workspace</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">02</span>
                      <span class="step-kind">Fill it in</span>
                      <span class="step-time">As long as you like</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Put your content in</h3>
                        <div class="step-tags">
                          <span class="step-tag">Forms</span><span class="step-tag">Your images</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Pages, photos, contact details, opening hours — in forms, not code.</p>
                        <p class="step-body">Photographs are stripped of their location data on upload and served through links that expire, so an address in a camera&#39;s metadata never reaches the public site.</p>
                        <a class="btn btn-accent btn-sm" href="#product">See what you can change</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">03</span>
                      <span class="step-kind">Go live</span>
                      <span class="step-time">One page of instructions</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Point your site here</h3>
                        <div class="step-tags">
                          <span class="step-tag">One file</span><span class="step-tag">We help</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Use the address that comes with the account, or your own domain.</p>
                        <p class="step-body">Dashboard → Install generates one index.html or index.php for your host, with your title, description and social preview already in it. Drop it in place and the site reads everything from here.</p>
                        <a class="btn btn-accent btn-sm" href="/docs">Read the install guide</a>
                      </div>
                    </div>
                  </details>
                
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed" id="looks">
            <div class="band-inner">
              <div class="looks-head">
                <h2 class="d-lg">Start with a<br>design you love</h2>
                <div class="looks-aside">
                  <span class="looks-count">15 themes</span>
                  <p class="looks-note">
                    Every card below is the theme itself, rendering the same demo site with
                    the same code your own site would run. Nothing here is a screenshot
                    that can drift out of date.
                  </p>
                </div>
              </div>
          
              <div class="looks">
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Vantage</h3>
                      <p class="look-tag">Dark-first tech and professional services.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#2dd4bf" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#22d3ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#e7edf3" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0b0d10" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#171c22" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#vantage">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Aster</h3>
                      <p class="look-tag">Clean editorial layout for hotels, offices and organisations.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#5b3428" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#c99b3d" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#1d2422" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#f8f5ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#eae2d4" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#aster">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Verdant</h3>
                      <p class="look-tag">Dark Botanical Luxe Theme</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#c39a4e" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#e0b674" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#f0e9d8" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0d1712" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#152219" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#verdant">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
              </div>
          
              <div class="looks-foot">
                <a class="btn btn-onband" href="/themes">
                  Browse all 15 themes
                  <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                </a>
                <span class="looks-more">Switching later never touches what you wrote.</span>
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed band-tight">
            <div class="band-inner">
              <div class="feat-head">
                <h2 class="d-lg">Works with the host<br>you already have</h2>
                <a class="btn btn-onband" href="/signup">Start your site</a>
              </div>
              <div class="feats">
                
                  <div class="feat">
                    <span class="feat-n">01</span>
                    <h3 class="feat-title">Everything in one place</h3>
                    <p class="feat-body">Your pages, photos, menus, opening hours, staff and services. Change them in a form; the site shows the change on the next visit.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">02</span>
                    <h3 class="feat-title">An address, included</h3>
                    <p class="feat-body">Every site gets its own address the moment you create it, so there is nothing to buy before you begin. Bring your own domain later if you want one.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">03</span>
                    <h3 class="feat-title">Themes you can switch</h3>
                    <p class="feat-body">Change how the site looks without touching a word of what you wrote. Your colours, logo and type carry across.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">04</span>
                    <h3 class="feat-title">We help you go live</h3>
                    <p class="feat-body">Already have a domain or a host? Tell us and we will set it up with you. There is one small file to put in place, and we will walk you through it.</p>
                  </div>
                
              </div>
            </div>
          </section>
          
          
          <section class="band band-paper bleed" id="pricing">
            <div class="band-inner">
              <div class="price-head">
                <h2 class="d-lg">Start free.<br>Pay when it earns it.</h2>
                <p class="price-sub">
                  Priced against what a rebuild costs, not against what a page of HTML
                  costs. Every plan keeps the site current instead of shipping it once.
                </p>
              </div>
          
              
                <article class="plan-hero">
                  <div class="plan-hero-main">
                    <span class="plan-kicker">Free</span>
                    <p class="plan-tagline">Your site online at no cost, supported by adverts.</p>
                    <div class="plan-price">Free<span>forever</span></div>
                    <p class="plan-anchor">No money. Your pages carry adverts instead.</p>
                    <a class="btn btn-onband btn-block btn-lg" href="/signup?plan=free">Choose Free</a>
                    <p class="plan-note">No card. Nothing to cancel.</p>
                  </div>
                  <ul class="plan-list">
                    <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                  </ul>
                </article>
          
                
                  <div class="ladder-head">
                    <h3>Outgrown the adverts?</h3>
                    <p>Paid plans remove them, from Nu. 299 a year.</p>
                  </div>
                  <div class="ladder">
                    
                      <a class="ladder-item" href="/signup?plan=lifesaver">
                        <span class="ladder-name">Life Saver</span>
                        <span class="ladder-price">Nu. 299<span>per year</span></span>
                        <span class="ladder-note">Supported by local Ads</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=starter">
                        <span class="ladder-name">Starter</span>
                        <span class="ladder-price">Nu. 999<span>per year</span></span>
                        <span class="ladder-note">One site, the essentials.</span>
                      </a>
                    
                      <a class="ladder-item ladder-best" href="/signup?plan=business">
                        <span class="ladder-name">Business <em>most chosen</em></span>
                        <span class="ladder-price">Nu. 1,599<span>per year</span></span>
                        <span class="ladder-note">More space, Full analytics.</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=agency">
                        <span class="ladder-name">Agency</span>
                        <span class="ladder-price">Nu. 2,599<span>per year</span></span>
                        <span class="ladder-note">Triple pack, white-labelled.</span>
                      </a>
                    
                  </div>
          
                  <details class="compare">
                    <summary>Compare every plan in full</summary>
                    <div class="compare-grid">
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Free</span>
                          <div class="compare-price">Free<span>forever</span></div>
                          <p class="compare-anchor">No money. Your pages carry adverts instead.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=free">Choose Free</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Life Saver</span>
                          <div class="compare-price">Nu. 299<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 25 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Local adverts only</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=lifesaver">Choose Life Saver</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Starter</span>
                          <div class="compare-price">Nu. 999<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 83 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>50 MB assets</li><li>Free themes included</li><li>White-label dashboard</li><li>Email Support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=starter">Start with Starter</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Business</span>
                          <div class="compare-price">Nu. 1,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 800 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>2 sites, 2 domains</li><li>200 MB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics &#43; priority support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=business">Choose Business</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Agency</span>
                          <div class="compare-price">Nu. 2,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 866 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>3 sites, 3 domains</li><li>1 GB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=agency">Talk to us</a>
                        </div>
                      
                    </div>
                  </details>
                
              
            </div>
          </section>
          
          
          <section class="section faq-section" id="questions">
            <div class="faq-head rv">
              <h2 class="d-lg">Answering the<br>main things</h2>
              <p class="faq-sub">If yours is not here, write to us — a person in Thimphu answers.</p>
            </div>
            <div class="faq rv">
              
                <details class="qa" open>
                  <summary>
                    <span class="qa-q">Do I need to buy a domain?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. Your site gets an address the moment you create it and works straight away. If you would rather use your own domain, you can add it later without starting again — and we will help you point it here.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">I already have a website. Do I throw it away?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. If you like how it looks, it can keep its host and its address and take its content from here instead — one small file changes hands and we set that up with you. If you do not like how it looks, pick a theme.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens when I get stuck?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">You write to us and a person in Thimphu answers. Setting up a domain, moving an old site across, or a theme built for you — those are things we do, not things you are left to work out.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Can I change theme after the site is live?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Yes, and it does not touch a word of what you wrote. Content and look are stored separately: the theme is three files served from here, your content is the data behind them. Switch, look at it, switch back if you prefer the old one.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens if I stop paying?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">The site stays where it is and starts serving its own maintenance page instead of your content, and we email you every day until it is sorted. Nothing is deleted while that is going on — renew and the same pages come straight back.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Who can see the images I upload?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Only people you send to your site. Image files are not reachable by guessing a URL: the site payload carries signed links that expire, and the stored file paths are never published.</p>
                </details>
              
            </div>
          </section>
          
          
          <section class="section" id="themes">
            <div class="maker rv">
              <div>
                <span class="kicker">For designers &amp; developers <span class="pill">soon</span></span>
                <h3 class="maker-title">Build a theme and sell it here.</h3>
                <p class="maker-body">
                  Set your own price, keep most of it, withdraw from your wallet when you
                  like. Not open yet — no submissions and no date promised, but it is
                  being built.
                </p>
              </div>
            </div>
          </section>
          
          
          <section class="closing rv">
            <h2 class="d-xl closing-title">Your idea deserves<br>a beautiful home.</h2>
            <p class="closing-sub">Your content is already written — put it somewhere you can change it.</p>
            <a class="btn btn-accent btn-lg" href="/signup">Start free
              <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
            </a>
          </section>
          
          <style>
             
            .hero {
              position: relative; isolation: isolate; overflow: hidden;
              background: var(--band); color: var(--band-fg);
              min-height: min(94svh, 820px);
              display: flex; align-items: stretch;
              padding: calc(var(--nav-h) + 2.2rem) 0 clamp(2rem, 4vw, 3.2rem);
            }
            .hero-inner { display: flex; flex-direction: column; justify-content: space-between; gap: 2rem; width: 100%; }
          
             
            .hero-art { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
            .hero-shot {
              position: absolute; width: clamp(320px, 33vw, 560px); aspect-ratio: 16 / 10;
              border-radius: 20px; overflow: hidden; line-height: 0;
              box-shadow: 0 60px 120px -40px rgba(0,0,0,.9);
              border: 1px solid rgba(255,255,255,.10);
              background: var(--surface);
            }
            .hero-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .35));
              pointer-events: none;
            }
            .hs-a { right: 4%;  top: 12%; transform: rotate(4deg); }
            .hs-b { right: 27%; top: 34%; transform: rotate(-5deg); opacity: .82; }
            .hs-c { right: 12%; bottom: -6%; transform: rotate(8deg); opacity: .62; }
          
            .hero-veil {
              position: absolute; inset: 0; z-index: 1; pointer-events: none;
              background:
                linear-gradient(78deg, var(--band) 30%, rgba(15,16,15,.86) 52%, rgba(15,16,15,.42) 100%),
                linear-gradient(0deg, var(--band) 2%, rgba(15,16,15,0) 45%);
            }
            .hero-inner { position: relative; z-index: 2; }
          
            .hero-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.4rem; max-width: 760px; }
            .hm { display: flex; flex-direction: column; gap: .18rem; padding-left: 1rem; border-left: 1px solid rgba(255,255,255,.18); }
            .hm-k { font-family: var(--mono); font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.5); }
            .hm-v { font-size: 1.02rem; font-weight: 700; letter-spacing: -.02em; color: #fff; }
            .hm-n { font-size: .8rem; color: rgba(255,255,255,.55); line-height: 1.4; }
          
             
            .hero .hero-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.9rem, 8.4vw, 7.2rem); line-height: .92;
              color: #fff; margin: 0 0 1.6rem;
            }
            .hero-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; flex-wrap: wrap; }
            .hero-actions { display: flex; gap: .7rem; flex-wrap: wrap; }
            .btn-lg { padding: 1rem 1.9rem; font-size: 1rem; }
            .hero-note { margin: 0; max-width: 40ch; font-size: .92rem; line-height: 1.55; color: rgba(255,255,255,.62); }
          
            @media (max-width: 860px) {
              .hero { min-height: 0; padding-top: calc(var(--nav-h) + 1.6rem); }
              .hero-meta { grid-template-columns: 1fr 1fr; gap: 1rem; }
              .hm-last { display: none; }
              .hero-shot { width: 74vw; }
              .hs-a { right: -22%; top: 6%; opacity: .5; }
              .hs-b { right: 2%; top: 30%; opacity: .38; }
              .hs-c { display: none; }
              .hero-body { margin-top: 3.5rem; }
               
              .hero-veil {
                background:
                  linear-gradient(180deg, rgba(15,16,15,.94) 0%, rgba(15,16,15,.74) 30%, rgba(15,16,15,.93) 62%, var(--band) 92%);
              }
            }
            @media (max-width: 520px) {
              .hero-meta { grid-template-columns: 1fr; }
              .hero-actions .btn { width: 100%; }
            }
          
             
            .section { padding: clamp(3rem, 7vw, 6rem) 0 0; }
          
             
            .reasons { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(1.6rem, 5vw, 4rem); align-items: end; }
            .reasons-title { margin: 0; }
            .reasons-copy p { font-size: clamp(1rem, 1.5vw, 1.14rem); line-height: 1.55; color: var(--ink-2); margin: 0 0 1rem; }
            .reasons-copy p:last-child { margin-bottom: 0; }
            .reasons-copy em { font-style: normal; color: var(--emerald-deep); }
            :root[data-theme="dark"] .reasons-copy em { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .reasons-copy em { color: var(--emerald); } }
            @media (max-width: 900px) { .reasons { grid-template-columns: 1fr; align-items: start; } }
          
             
            .statement { text-align: center; }
            .statement-line { max-width: 22ch; margin: 0 auto; }
            .range {
              display: flex; align-items: center; justify-content: center; gap: clamp(.7rem, 2.4vw, 1.6rem);
              flex-wrap: wrap; margin-top: clamp(1.4rem, 3vw, 2.4rem);
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.8rem, 5vw, 3.6rem); line-height: 1; color: var(--emerald-deep);
            }
            :root[data-theme="dark"] .range { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .range { color: var(--emerald); } }
            .range-a { color: var(--faint); }
            .range-arrow { display: block; width: clamp(60px, 12vw, 150px); color: currentColor; }
            .range-arrow svg { display: block; width: 100%; height: 12px; }
            .range-tail {
              font-family: var(--mono); font-weight: 500; font-size: .74rem;
              letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              align-self: center;
            }
          
             
            .tilt-section { padding-top: clamp(2.2rem, 5vw, 4rem); }
            .tilt-head { max-width: 40ch; margin-bottom: clamp(1.2rem, 3vw, 2rem); }
            .tilt-head .kicker { margin-bottom: .9rem; }
             
            .tilt-row {
              display: flex; gap: clamp(.7rem, 1.6vw, 1.2rem); align-items: flex-start;
              overflow-x: auto; padding: 1.6rem .2rem 2.2rem; scrollbar-width: none;
              width: calc(100vw - (50vw - 50%)); margin-right: calc(50% - 50vw);
            }
            .tilt-row::-webkit-scrollbar { display: none; }
            .tilt-card {
              flex: 0 0 auto; width: clamp(190px, 21vw, 250px); margin: 0;
              display: flex; flex-direction: column; gap: .3rem;
              background: var(--surface); border: 1px solid var(--line);
              border-radius: var(--r-lg); padding: 1.1rem 1.15rem 1.2rem;
              box-shadow: var(--shadow);
              transition: transform .35s cubic-bezier(.2,.8,.2,1);
            }
            .tilt-card:hover { transform: rotate(0deg) translateY(-6px); }
            .ct-a { transform: rotate(-3deg); }
            .ct-b { transform: rotate(2.2deg) translateY(14px); }
            .ct-c { transform: rotate(-1.4deg) translateY(-6px); }
            .ct-d { transform: rotate(3.4deg) translateY(10px); }
            .ct-e { transform: rotate(-2.6deg); }
            .ct-f { transform: rotate(1.6deg) translateY(16px); }
            .tc-field { font-family: var(--mono); font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; color: var(--faint); }
            .tc-value { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: var(--heading); line-height: 1.25; }
            .tc-note { font-size: .8rem; color: var(--muted); margin: .35rem 0 0; line-height: 1.4; }
            @media (prefers-reduced-motion: reduce) { .tilt-card { transition: none; } }
          
             
            .band-tight { padding: clamp(2.4rem, 5vw, 4rem) 0; }
            .steps-title { margin-bottom: .6rem; }
            .steps-sub { color: var(--band-muted); margin: 0 0 clamp(1.6rem, 4vw, 2.6rem); max-width: 48ch; }
            .steps { display: grid; gap: .9rem; }
          
            .step { border-radius: var(--r-xl); }
            .step-head {
              display: flex; align-items: center; gap: 1rem; cursor: pointer; list-style: none;
              background: var(--emerald-deep); color: #fff;
              border-radius: var(--r-pill); padding: .85rem 1rem .85rem 1.5rem;
            }
            .step-head::-webkit-details-marker { display: none; }
            .step-n { font-family: var(--mono); font-size: .72rem; letter-spacing: .14em; opacity: .7; }
            .step-kind { font-size: clamp(1.05rem, 2vw, 1.45rem); font-weight: 800; letter-spacing: -.03em; }
            .step-time { margin-left: auto; font-size: .84rem; color: rgba(255,255,255,.78); }
            .step-chev {
              display: grid; place-items: center; width: 38px; height: 38px; flex-shrink: 0;
              border-radius: 50%; background: rgba(255,255,255,.18); color: #fff;
              transition: transform .25s ease;
            }
            .step:not([open]) .step-chev { transform: rotate(180deg); }
          
            .step-card {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
              gap: clamp(1.2rem, 3vw, 2.6rem);
              background: var(--band-card); color: #14170f;
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.2vw, 2.4rem);
              margin-top: .55rem;
            }
             
            .band-dark .step-card .step-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3.6vw, 2.7rem); line-height: 1.02;
              color: #14170f; margin: 0 0 1rem;
            }
            .step-tags { display: flex; flex-wrap: wrap; gap: .4rem; }
            .step-tag {
              font-family: var(--mono); font-size: .66rem; letter-spacing: .1em; text-transform: uppercase;
              background: rgba(20,23,15,.08); border: 1px solid rgba(20,23,15,.12);
              border-radius: var(--r-pill); padding: .3rem .7rem; color: #3c433a;
            }
            .step-lede { font-size: 1.02rem; font-weight: 650; color: #14170f; margin: 0 0 .6rem; letter-spacing: -.01em; }
            .step-body { font-size: .93rem; line-height: 1.6; color: #3c433a; margin: 0 0 1.2rem; }
            .step-right .btn-accent { background: #14170f; color: #fff; box-shadow: none; }
            .step-right .btn-accent:hover { background: #2c332a; }
            @media (max-width: 780px) {
              .step-card { grid-template-columns: 1fr; }
              .step-time { display: none; }
            }
          
             
            .looks-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .85fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .looks-count { font-family: var(--mono); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--emerald); }
            .looks-note { color: var(--band-muted); font-size: .92rem; line-height: 1.6; margin: .5rem 0 0; }
            .looks { display: grid; gap: clamp(.8rem, 2vw, 1.2rem); }
             
            .look {
              display: flex; flex-direction: column;
              background: var(--band-2); border-radius: var(--r-2xl); overflow: hidden;
              border: 1px solid var(--band-line);
              transition: border-color .25s ease, transform .25s ease;
            }
            .look:hover { border-color: var(--emerald); transform: translateY(-3px); }
             
            .look-shot { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--surface); }
            .look-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .3));
              pointer-events: none;
            }
            .look-swatch { line-height: 0; margin-top: .3rem; }
            .look-swatch svg { display: block; }
            .look-meta {
              background: #fff; color: #14170f; padding: clamp(1.2rem, 2.4vw, 1.7rem);
              display: flex; flex-direction: column; gap: .45rem; flex: 1;
            }
             
            .band-dark .look .look-name {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.02; color: #14170f; margin: 0;
            }
            .look-tag { margin: 0; font-size: .95rem; line-height: 1.5; color: #4b534a; max-width: 40ch; }
            .look-link {
              display: inline-flex; align-items: center; gap: .45rem; margin-top: auto; padding-top: .6rem;
              font-size: .88rem; font-weight: 700; color: var(--emerald-deep);
            }
            .look:hover .look-link svg { transform: translateX(3px); }
            .look-link svg { transition: transform .2s ease; }
            .looks-foot {
              display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap;
              margin-top: clamp(1.4rem, 3vw, 2.2rem);
            }
            .looks-more { color: var(--band-muted); font-size: .86rem; }
            @media (min-width: 760px) { .looks { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); } }
            @media (max-width: 620px) { .looks-head { grid-template-columns: 1fr; } }
          
             
            .feat-head {
              display: flex; align-items: flex-end; justify-content: space-between;
              gap: 1.4rem; flex-wrap: wrap; margin-bottom: clamp(1.6rem, 4vw, 2.6rem);
            }
            .feats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(1.2rem, 2.6vw, 2.2rem); }
            .feat { padding-top: 1.1rem; border-top: 1px solid var(--band-line); }
            .feat-n { font-family: var(--mono); font-size: .7rem; letter-spacing: .16em; color: var(--emerald); }
            .feat-title { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: #fff; margin: .7rem 0 .45rem; }
            .feat-body { font-size: .88rem; line-height: 1.6; color: var(--band-muted); margin: 0; }
            @media (max-width: 900px) { .feats { grid-template-columns: 1fr 1fr; } }
            @media (max-width: 520px) { .feats { grid-template-columns: 1fr; } }
          
             
            .price-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .price-sub { margin: 0; color: var(--muted); font-size: .98rem; line-height: 1.6; }
          
             
            .plan-hero {
              display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
              gap: clamp(1.4rem, 4vw, 3rem); align-items: start;
              background: var(--emerald-deep); color: #fff;
              border: 1px solid var(--emerald-deep);
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.4vw, 2.6rem);
              box-shadow: 0 30px 60px -34px color-mix(in srgb, var(--emerald-deep) 70%, transparent);
            }
            .plan-hero-main { display: flex; flex-direction: column; }
            .plan-kicker {
              font-family: var(--mono); font-size: .7rem; font-weight: 500;
              letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.66);
            }
            .plan-tagline { margin: .5rem 0 0; font-size: .95rem; line-height: 1.5; color: rgba(255,255,255,.86); }
            .plan-price {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.8rem, 6vw, 4.4rem); line-height: 1; margin: .7rem 0 .2rem; color: #fff;
            }
            .plan-price span { display: block; font-size: .82rem; font-weight: 500; letter-spacing: 0; color: rgba(255,255,255,.66); margin-top: .4rem; }
            .plan-anchor { margin: .3rem 0 1.2rem; font-size: .86rem; color: rgba(255,255,255,.72); }
            .plan-note { margin: .8rem 0 0; text-align: center; font-size: .8rem; color: rgba(255,255,255,.6); }
            .plan-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; font-size: .95rem; }
            .plan-list li { display: flex; gap: .6rem; align-items: baseline; color: rgba(255,255,255,.9); }
            .plan-list li::before { content: "✓"; color: #fff; font-weight: 700; font-size: .85em; flex-shrink: 0; opacity: .8; }
            @media (min-width: 900px) { .plan-hero .plan-list { grid-template-columns: 1fr 1fr; gap: .55rem 1.4rem; } }
            @media (max-width: 780px) { .plan-hero, .price-head { grid-template-columns: 1fr; } }
          
            .ladder-head { margin: clamp(2rem, 4.5vw, 3rem) 0 .9rem; }
            .ladder-head h3 { font-size: 1.15rem; margin: 0; color: var(--heading); }
            .ladder-head p { margin: .2rem 0 0; font-size: .88rem; color: var(--muted); }
            .ladder { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: .7rem; }
            .ladder-item {
              display: grid; gap: .2rem; padding: 1rem 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg);
              background: var(--surface); transition: border-color .18s ease, transform .18s ease;
            }
            .ladder-item:hover { border-color: var(--emerald); transform: translateY(-2px); }
            .ladder-best { border-color: var(--emerald); }
            .ladder-name { font-weight: 750; font-size: .95rem; color: var(--heading); }
            .ladder-name em {
              font-style: normal; font-family: var(--mono); font-size: .6rem; letter-spacing: .09em;
              text-transform: uppercase; color: var(--emerald-deep); margin-left: .3rem;
            }
            .ladder-price { font-family: var(--text); font-weight: 800; font-size: 1.25rem; letter-spacing: -.03em; color: var(--heading); }
            .ladder-price span { font-weight: 500; font-size: .74rem; letter-spacing: 0; color: var(--faint); margin-left: .35rem; }
            .ladder-note { font-size: .82rem; line-height: 1.45; color: var(--muted); }
          
            .compare { margin-top: 1.4rem; }
            .compare summary {
              cursor: pointer; font-size: .9rem; font-weight: 700; color: var(--emerald-deep);
              padding: .6rem 0; list-style: none;
            }
            .compare summary::-webkit-details-marker { display: none; }
            .compare summary::before { content: "+ "; font-family: var(--mono); }
            .compare[open] summary::before { content: "− "; }
            .compare-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .8rem; margin-top: .9rem; }
            .compare-col {
              display: flex; flex-direction: column; padding: 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface);
            }
            .compare-price { font-family: var(--text); font-weight: 800; font-size: 1.6rem; letter-spacing: -.035em; color: var(--heading); margin-top: .4rem; }
            .compare-price span { display: block; font-size: .74rem; font-weight: 500; letter-spacing: 0; color: var(--faint); margin-top: .2rem; }
            .compare-anchor { margin: .4rem 0 .7rem; font-size: .82rem; color: var(--muted); }
             
            .compare-col .plan-list li { color: var(--ink-2); }
            .compare-col .plan-list li::before { color: var(--emerald); opacity: 1; }
            .compare-col .plan-kicker { color: var(--faint); }
            .compare-col .plan-list { margin-bottom: 1rem; font-size: .86rem; }
            .compare-col .btn { margin-top: auto; }
          
             
            .faq-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1rem, 4vw, 3rem); align-items: end; margin-bottom: clamp(1.4rem, 3vw, 2.2rem);
            }
            .faq-sub { margin: 0; color: var(--muted); }
            .faq { border-top: 1px solid var(--line); }
            .qa { border-bottom: 1px solid var(--line); }
            .qa summary {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              cursor: pointer; list-style: none; padding: 1.3rem 0;
            }
            .qa summary::-webkit-details-marker { display: none; }
            .qa-q { font-size: clamp(1rem, 1.8vw, 1.18rem); font-weight: 750; letter-spacing: -.02em; color: var(--heading); }
            .qa-sign {
              position: relative; flex-shrink: 0; width: 34px; height: 34px; border-radius: 50%;
              border: 1px solid var(--line); background: var(--surface);
              transition: border-color .2s ease, background .2s ease;
            }
            .qa-sign::before, .qa-sign::after {
              content: ""; position: absolute; left: 50%; top: 50%; background: var(--ink-2);
              transform: translate(-50%, -50%); transition: opacity .2s ease;
            }
            .qa-sign::before { width: 13px; height: 1.6px; }
            .qa-sign::after { width: 1.6px; height: 13px; }
            .qa[open] .qa-sign { border-color: var(--emerald); background: var(--emerald-soft); }
            .qa[open] .qa-sign::after { opacity: 0; }
            .qa[open] .qa-sign::before { background: var(--emerald-deep); }
            .qa:hover .qa-sign { border-color: var(--emerald); }
            .qa-a { margin: 0 0 1.4rem; color: var(--muted); max-width: 74ch; line-height: 1.6; }
            @media (max-width: 780px) { .faq-head { grid-template-columns: 1fr; align-items: start; } }
          
             
            .maker {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              flex-wrap: wrap; padding: clamp(1.2rem, 3vw, 1.8rem);
              border: 1px dashed var(--line); border-radius: var(--r-lg); background: var(--surface-2);
            }
            .maker-title { margin: .55rem 0 .3rem; font-size: 1.2rem; }
            .maker-body { margin: 0; max-width: 56ch; font-size: .88rem; color: var(--muted); }
          
             
            .closing { text-align: center; padding: clamp(3.4rem, 8vw, 6.5rem) 0 clamp(1rem, 3vw, 2rem); }
            .closing-title { margin: 0 auto; max-width: 18ch; }
            .closing-sub { margin: 1.1rem auto 1.9rem; max-width: 46ch; color: var(--muted); font-size: 1.02rem; }
          
             
            html.rv-on .rv { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s ease; }
            html.rv-on .rv.in { opacity: 1; transform: none; }
            @media (prefers-reduced-motion: reduce) {
              html.rv-on .rv { opacity: 1; transform: none; transition: none; }
            }
          </style>
          
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
            
            
            (function () {
              if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
              if (!("IntersectionObserver" in window)) return;
              document.documentElement.classList.add("rv-on");
              var io = new IntersectionObserver(function (entries) {
                entries.forEach(function (entry) {
                  if (entry.isIntersecting) {
                    entry.target.classList.add("in");
                    io.unobserve(entry.target);
                  }
                });
              }, { rootMargin: "0px 0px -8% 0px", threshold: 0.08 });
              document.querySelectorAll(".rv").forEach(function (el) { io.observe(el); });
            })();
          
            
            
            
            
            
            (function () {
              var PREVIEW_WIDTH = 1280;
              var boxes = document.querySelectorAll(".look-shot, .hero-shot");
              function fit() {
                boxes.forEach(function (box) {
                  if (!box.querySelector(".pv")) return;
                  box.style.setProperty("--pv", box.clientWidth / PREVIEW_WIDTH);
                });
              }
              fit();
              window.addEventListener("resize", fit, { passive: true });
              if ("ResizeObserver" in window) {
                var ro = new ResizeObserver(fit);
                boxes.forEach(function (box) { ro.observe(box); });
              }
            })();
          
            
            
            
            (function () {
              var steps = Array.prototype.slice.call(document.querySelectorAll(".steps .step"));
              steps.forEach(function (step) {
                step.addEventListener("toggle", function () {
                  if (!step.open) return;
                  steps.forEach(function (other) { if (other !== step) other.open = false; });
                });
              });
            })();
          </script>
          
                </div>
              </main>
          
              
              <footer class="site-footer">
                <div class="wrap footer-grid">
                  <div>
                    <span class="footer-name">WONS Sites</span>
                    <p class="footer-tag">A website you can keep up to date yourself.</p>
                  </div>
                  <nav class="footer-col" aria-label="Product">
                    <span class="label">Product</span>
                    <a href="/themes">Themes</a>
                    <a href="/#product">What you can change</a>
                    <a href="/#pricing">Pricing</a>
                    <a href="/docs">Docs</a>
                  </nav>
                  <nav class="footer-col" aria-label="Account">
                    <span class="label">Account</span>
                    <a href="/login">Log in</a>
                    <a href="/signup">Start your site</a>
                    <a href="/dashboard">Dashboard</a>
                  </nav>
                  <div>
                    <p class="footer-sub-head">Start with your email</p>
                    <p class="footer-sub-copy">It takes you straight to sign-up — free plan, no card needed.</p>
                    <form class="footer-sub" action="/signup" method="get">
                      <input type="email" name="email" placeholder="Your email address" aria-label="Email address">
                      <button class="sub-btn" type="submit" aria-label="Start your site">
                        <svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </button>
                    </form>
                  </div>
                </div>
                <div class="wrap footer-base">
                  <span>© 2026 WONS Sites. All rights reserved.</span>
                  <span>Made by WONS</span>
                </div>
              </footer>
              
            </div>
          
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              var themeToggle = document.getElementById("themeToggle");
              if (themeToggle) themeToggle.addEventListener("click", function () {
                var root = document.documentElement;
                var current = root.getAttribute("data-theme");
                var systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
                var next = (current ? current === "dark" : systemDark) ? "light" : "dark";
                root.setAttribute("data-theme", next);
                try { localStorage.setItem("wons-sites-theme", next); } catch (e) {}
              });
          
              
              var navToggle = document.getElementById("navToggle");
              var topbar = document.getElementById("topbar");
              if (navToggle && topbar) navToggle.addEventListener("click", function () {
                var open = topbar.classList.toggle("open");
                navToggle.setAttribute("aria-expanded", open ? "true" : "false");
              });
          
              
              
              
              (function () {
                var bar = document.getElementById("topbar");
                if (!bar) return;
                var mark = function () {
                  bar.classList.toggle("stuck", window.scrollY > 72);
                };
                mark();
                window.addEventListener("scroll", mark, { passive: true });
              })();
          
              (function () {
                var path = location.pathname.replace(/\/+$/, "") || "/";
                var best = null, bestLen = -1;
                document.querySelectorAll(".nav a.link").forEach(function (a) {
                  var href = (a.getAttribute("href") || "").replace(/\/+$/, "") || "/";
                  var match = href === "/" ? path === "/" : (path === href || path.indexOf(href + "/") === 0);
                  if (match && href.length > bestLen) { best = a; bestLen = href.length; }
                });
                if (best) best.classList.add("active");
              })();
            </script>
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">(function(){
          	var es = new EventSource("/__wons/dev/reload");
          	es.onmessage = function(){ location.reload() };
          	// Close the stream the instant the page is left. Without this, each
          	// navigation leaves its SSE connection lingering; a few quick clicks
          	// exhaust the browser's ~6-per-origin HTTP/1.1 connection cap and every
          	// further request (including the next page) stalls until the stale
          	// streams time out. Closing on pagehide frees the slot immediately.
          	window.addEventListener("pagehide", function(){ es.close(); });
          })()</script></body>
          </html>
          
          Solution

          Ensure that your web server, application server, load balancer, etc. is configured to set the Content-Security-Policy header.

  2. Risk=Medium, Confidence=Medium (1)

    1. https://sites.wons.bt (1)

      1. Cross-Domain Misconfiguration (1)
        1. GET https://sites.wons.bt/fonts/Manrope-500-latin.woff2
          Alert tags
          Alert description

          Web browser data loading may be possible, due to a Cross Origin Resource Sharing (CORS) misconfiguration on the web server.

          Other info

          The CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.

          Request
          Request line and header section (362 bytes)
          GET https://sites.wons.bt/fonts/Manrope-500-latin.woff2 HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          referer: https://sites.wons.bt
          Cookie: wons_csrf=1Y4cjMPvEjgL5Xwfltaq.fc44d6636ac21d80d0dbec2084f3cab7
          
          
          Request body (0 bytes)
          Response
          Status line and header section (809 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:43:00 GMT
          Content-Type: font/woff2
          Content-Length: 24576
          Connection: keep-alive
          Accept-Ranges: bytes
          Access-Control-Allow-Origin: *
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-aC5vcfsAnYUWCd27MnALEQ'
          Cross-Origin-Resource-Policy: cross-origin
          Last-Modified: Sun, 26 Jul 2026 11:29:26 GMT
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          
          
          Response body (24576 bytes)
          wOF2`ñÐ_“PÕ\“
          ?HVAR‹.`?STAT„f/j
          ­Š]„20—R6$ˆ` ‡&ŠW#Ý'·ôfU	v9ó‹f#j·*¨ñlÍæqÂÝ"ûÿÿ’2
          Ù¦Öª¾ƒ‚—œ‹®ù*–i&ØètUա³;QRev•y¢v*nœØØè‘œïҀØò|7K$&îy®"¯¤°Ì­‘[úÜä@zt‰b4$=ƒ›¦V®Š9Ë[‹H#¯þ>á=š4ì`¡ìP-cÁë;éõá#âÉÅ5CNò£?Ír¸“cräüÞMÿ2uWkǶËÎíéyà896ç—?v»íþcÚü•óރ %яˆÍñ‰„PDDB¾ !”‚#„7Abp–‚·ÛCRºàyЎÿÎM23_Z‚¬–ìàj+VD	ö€ª¿/ðßÿ~ßûsUՆs.¿¾D—1NYÅéµw§ÃÆÅKt@:ìâ¢>ÜÿŸ7û}ν¹¹	7Â%\B!ˆ!†ˆBŒ˜Ä˜FŠ˜¡<K‘jô_Æ"ETdHÀÏ8ŽËç8Ÿ?cŸ3ÏQêb–¥.ŠŸo)u‡*Z¤H)"â/R7C°Í'f¡"fODq ¢M!‚Q€‚‰‰QÓߌæâ·7–ÖÂmÿ¿(?¿¯ösðÀ¿›õ‡“Ž8Û¥f@o.A´L ”fCaØƒ
          Í@j̲ú·ŸòD?>ݬNMIÞw’G×°Ï•€¬1^ƒØÔ¨–·ñó¯Ì‚-—h°Y.Pé,—¼øøóðb3¼Ôã¥8=®Iñ¸}[óko%J@\óKë‡ÓB©eÿ+Mb5RGù#®08¨ò$¹Ý?4ÒN ÚÁº,i=YTOBA…EyÒ¿Û÷QòOý=;˶ӳ øh·fBl<¡Ì⟗=w_¨J¢æo6‰Šlël¦¹ü357\ýÅ‘FãèÑÿßW-Ûw	aTØl„¦Â¬ä(ɱ<Û9†¢±{ÿ=üL€ŸFDàˆDHH?@êœPôäÇ	)Ÿ'p†›"eͦøˆ3`ÚE*LÈι
          9µ)Ô²‹jÊ)ÊuçÒmH§·ëÞeå\T¶tiøR¾"ô„õÆH¤Õi¾†ýÞ];½ÄÏFÿÖR»ï™¿"H n¦@jת9g64ù™MЬÀ6j[]VIªrVEWÖh`£«d	láS´Xâa$(˜=þ\ÿ̤`c<²QCÑÿûê9¬ånÑ¿›¦!{•m8dqÄ	â÷Uÿú²ßÞbŸö£½G4	æ$œs^pŒ©CæÌ¶|Zi-g6ŽäÈëKE´š[¼4weÂûx—4’.ö?2·¶s/œHm{²ÁáOw2NÎÅ1#bÿYØ3˺
          ؋Rì,`ÍA>ÚmAƒÄf$üÓ¯A¯~3ðÍEf}²EŸZÎê×]MqïÄW9#hªú9½-Ê£+ªÐ|´S‚¦W¢Š¿ÐP¹þFÔÂQÈÑôÊòëÐâÍêvkþM
          ÿU„£*ÊUOQ´5Qw´—ñßcÅQûÔ£zâ•fóõ͐@]š&†)ÛÒ\ëUKè¸GôuµƒÏ8Á©—¦×ϧ¯cøÑWÔqZIö!Y^S×ý4^ÖGðRýÜÝ¡š¾Ÿò‰DZ”	Pì€$þøtClàa¬ù‡nÁ V¨Ï³’S•
          ‚{’ü‹Ä>ªYIt«ê¹	CKÌ»a/Ê®~JY¼äWÆ	b»ùÝëʍ©»	ÍPW0)…UÇÍÌ÷vP³ŽîŽó},.±4Ç)«Ô§ ÕL6ïÈ.üä6Š8¶”B¹jڛ­t³í°a’R®j9U!ܱó]šk‹5–bM1W¼Ì0X°ëŠ4?ËWªÕ4́ƒKÿ„ŠäYYՐU5(ìÆ‰6¶zŸ€ã¯@Ÿ"og"}@ñõ…>Ö0±s‘4³Ê}p¶hë*”–&ù¶CwÈßÀâÞTlØ)LØ´Ò$P·È=Æ7›þHðdPwyö#sçϙƒšfþþ—ˆ´äG£•ëU"6«Ÿßu±oæC7À]D$h)шøD®°¥I~,„ªð±sÕOr´v'Q©U…v	ý=pµ¬›è=ôŽÁP³T'š›v9E–cÖɉa;DÃÍ|Ï“‚¢ç5¸¤z•
          âšçðÝú6Åæê2­óc;ĵ“BâJÊâ{ÅI8ÁRÓLú¯3'ËrZeV(²R=¿}ÿA>pOÛ=×{l“Û
          @t h‰%BÃ=aˆ)Ò`ó› 2¤º„Õ.ÌafÅÉîKÆÂJhž\ryMXÊ&Ÿˆ=œ`>7Ê¢°€‡ò–ÒøÂÈEĖ*I±â-«ø-G{WeR{/L+·B¬Š°ÀJÈZÅZ'½õšeƒ”6Jas_ɶ؊ð¡1¶5aV­:Œía­z;$ÙåI	î‹é4“Ç|¬Êy¨J8”è¢8—”è²8W”èª8הèº87<1S¤œŸâ;£ÒAé+Õ¸°'Š3!É‹`n ÊÎìbbR1—‘J#‡D’@»’©8š°žŽ6K¤¬<5wÙl(ƒY	²ïg.ª3u梻ó¸°Çb1¼&OEf,±Šñ”,Ћ²N³¬—ÑÅÛ(¥M’ÛìÚ¬`P ±ôÊÔ£d¤qѓó‚†d4$£!
          ¬³¹ˆÆ0Â.ûî@N©P2g'Î3ìj‡òZXs«®ª#ä}‡{Ê%¶-¥¡l(U¥È×$ Á9è[r$ŸÏM‹ysM¤pHWSwêL**p…ñ›ðù;£[º®åe¸ð %؅O¢Z•LÃÈ$;Çj^vY­x}þUÑrPÕâ‘h,žH¦ÖòY{4f±T®œ«ž¿`_î9ÏÞ|Ë­·ÝΒ &9ýà(;¢sø<.]vÕu½úüW¿¯Ý3è±Iq<ÝXÜâå-|³’JVQÅû¬f
          Ö³Q§gÞ¥Ý÷2”L‹tèšc‰
          !4"©»Üç|)ó©^ì`W±¯×¡LAŸÌ,q†óÕïRlUôù€ƒ°§»÷ÃÎÍ‘·B¡Á(¯Ð‘†žt2ÈÄÀ,LÊî‰yäÞ$†'ïãÍFÿÎk„ÃÅÄQ÷C0aÁ&|
          ÚÝ! ¥«'î €ü:€…®K9 B#º_;%åu¸ÍäùàÛ\Û÷–qúà0À¤é/
          ȼ¡*¶xñy9+€¬_­l½ëtЉt1ݪe³Yõïëž)M€p Óë9ýeÁj߸@z ‡bv B#Rð}ÝÇàÙàt—ÕÚaîÞN¯¤ÏQðÃÄu¼Ì?í @ìé
          @| †`„€D…ûž†¸@:ö¹nq:
          oõ¿ê´2¯9úÓí_CÇ Ý`ïo3rÏ»Ôä>¤×¼xóþü¶aáAsq޳ÚaŒÇGÔ¥Àk˜ùCœ@^gTŽø=é^`g
          (¡‹6¦/7֔¤ŒRaþ݄<¨p ФÚB@"€BèŒàM©JóI`,ĉ÷Ü€,Ƌϗ2ô•W"«¨â}V³†€×{ø`W±¯ã	*]è™K\á7&Ðי¤ õ¦Õû‘¯̉s褌E&tŸ¦ãBhD™7?=—‚B!ž"^|¾½xۊÒs,ÇqO@¾þf‘D)æËÓP­@o×Ôx*K’Iõi­Ó\NmA[·G±öy xvî§e‡‰Ã}WñQJžh;Šwݓ^ËuŒx™ˆXŒaÉÂ%SKdËÓl×csõý̙6lž•Ón²÷kÓÖ¡é"ѓev^Ô>× ¶¥š
          ¬>¯â’ËÍ.Ë/»ñ_s@DÐÀ 1B¨s1”³4ÓþP©ÒUÚʯ2/%þÆÑDÍ9
          v•ÁÝKû·1ŽÈU×\wÃM_ò­{‘\tÉeW¸ï¡GC-IþoùþhÍDâ™÷ÊÚצBü,“8獡|Nô¼ÛþCöaq>1b”´kŸ¯ˆú’mÃÅt"J5©,9’.QäxôÅÙø]4E 
          Ãꠉ°yŸwù	?ê!¯ö
          ÷y®ë\n¶›Öa¿³&Ûb%f3­1hD§tH[U*‡ÔDŒ¸¥S±f4¬q¨@Ò·bwC+«rf0OoÔ[~=ȝA1Îây‡e¨5…Î:™ÊHXó÷Ím¾¢˜ÎÃT6|gëaí\„™ŠEؙì$¤TÛòävÿÐ]e8;<¦R™dЮO–(âÕª!Q!õ÷pV“+	´HÜײZVjµ‘¶D	C¹?Äö‡Áõ¦g¨–äg×Q@íÁCjk3¶€eöF÷–û·#¹‰cP-ó^
          ¢tšþY¨ø×â™ò?W_^Ú'—㆑”Õà2ÿÒÄð·K&Õ-×ØÕx¥Îj]<dÇâÕ:¬ºøkˆ6ž@9V×¹I{¡¹o‡º.7˦µ7tëè‹€VÍhÝ
          Õj³“qºtwÍVGéòÈ2Tàü½xöY@ѝÂ™uH‡îgSì÷7Vë1沛—©Œ+K*sÑõÆuÒqiIôèW×nܸ]pp®ÅnaA÷}ëµØYVˆÄÿPyÅ•MÐèåøºÊKnT*.š=nwÁ5ӌc±†=>Ȇ
          ÊӃDÓ¦q¶
          %ŒÔçf12R½1ÒOÙkÆ 3`¯‘+E%"Ç.Ià!™Øfª)ɉí‚ë=;·õ«‡-µC^ºŒ!_ßf=z}gê2ö9Õk	ª‡ù»~NÑIšTÓù)ˆ&ÂÐ¥…SØI­g¿#š˜ÞBº‘|«™¤Ìä@.?4ˆÓ:ö«¨·Q×m~~ñÿ3d\ÕQ$Y£hý騞¾¡‘±‰©™¹Eµ[ì°ÇGœpÆWÜpÇOŽãopøà?NàO"$B%2áDIÑÄK¨Ð Ã„ñpI€ŸD’H&…TÒH'ƒL‘E6b$äKùPˆ”"Š)¡”2Ê© ’*ª©¡Vz
          5iÖ¢U›v:ué&Ó£WŸ~
          6â¤QcÞsÊiяCD¯¦OÛOèõ‡
          GŒß›†ÌÖë¨í¨ý˜ã¸sŒr‚Ë8·“<NñúÏi~gœ4aҔi焜vÁŒ‹".‰Š‰»,a֜y-Y–tEʊ´«V¯eÖÖ76·¶Ì^ß¹‘»‰hÂp‚D¦P™1gÁ’kGìÙ:ÊюAôëke Ž®_ËãSñµŽ¨y¿~[åØV.¤‚Ý^Ÿ/Þaßs€Ôê´©æ[Úò(‚ǃqYÉýH•²÷XÍÆûiWªÒ¨k[%¿FŸMÔ_®ŠÏü;\‡àöá{í ñM[—éKT"åKÅÁ«Ëuë¶N":¤FM˜êÚV°°Ó“÷k’â¸ýŽ,dêòoèo)cc.7÷r«Kleº\SkõÛÁ]֍YÇ;¶3
          ×QޘèÂû`L=R¦Öˆ<p¶f®š#ô˜4ô.›°˜'nÜ)¢ÞÀt šQç`Ðwv84ü
          Â
          ^º4Ù6s•–E;¿RgǯòBÙOíi™6mÒôƒ“QºIÖ=Š.ýß	`¸@+;Ðã¹sj@‹„.¾ˆXBjøÚÇ-Û ¥’!—[±r ÀU« Yf$š{z‰OpÙÄÑÞ;Ú{
          ƒÄíª\d)QsØ}å)HdË×(Z4GïØe»k§VhUZV§ÍÐÚµ˓G¬Sÿ÷HÿQ=]|ôHhKEmu·—¼Ë.-§UèùÊð€w@´êZàçóyÛàkƒ÷Ç»â³qA\Æ~ûK¬ýq4€@‘ÛÝ Ûtz±ïtˆûÔ
          >$<¼›9'£=&Ns䯶…	g¿ô±2¬xJ	Ԓi¤ÐÒ12™Í,›el1»Ë>sJĭș_×?4v ß»Ê¼·Ñh­õ6Øh³-Öò6üc¶ÝÅÄÀ%ÓFýÓO›ƒ($CBØmÀ_†FñÃ>¦M,3@g”³Ï}ÿ``4Š
          #Ñ„Dqäb)$á$R‘J•!M£ã§OüíÏNMÏ,=V_õú¿ÁÄ0_㜖Ɇr%Ÿü=·Ólµ!×0òL”»î¹3ˆøï-UÀ¤Äqy'¹
          ö#(úf4á-7ÐlDly€æ ²þ?š‹ø8 %þrïGó‘"„Lå]´2€·Ð;@Â@ú;ý ÏÀˆi€l¸Ì«p2¦È›D]”¼ŸÜ%âøÎT 6b¿øgԏO¥
          ófÁ_t®B†+ïÙPõ:D¢uŒXñáÊj±W.Ç÷ëD)"ূ5úð};QŽ¾Ì‹BGkJÜ9YG"y3ؙzð̨P E7Q¤]+V"A$ì8 e8?nÇ)C&Óü:ÈX§5£¦òêEÐ"
          3Äî&µ‘›èÓÇ*”LÁª±bç—'Da`×b‡4:MóNgdԎ™cŒ›J«Ñ]¦ÔAŒ€l²uN©€wt†XRÆÅ
          wˆµÇ痲qˆ˜á
          Í£Ç)µî™0sDc,C?gš,âfC£q‹<ÆÖ7ã\O¢³¸|tÑp×!ŠRÄõÁ’Ïa%±×§W+k³‘ƒ‰Õf$0㺴(sYà8ä^Š9pÏíà+êã'\³*÷ÿÞ¦Án_n¥Hí*+âÆQOŠVJõÞ:“¾zû‡†h”£uPê5RBLz¨ëɜ›ï¡Ô«ŽáÿÝ	·r’D­¿d8'B‰sfJ¹„Fº¨`öEË9«
          µC¥–_JÔ$$îÏ}Uƒ„ú!hᅭ®©ƒx#ÚÉZG$8‚#åGµ±h¹°_JÓß+Öø.ÿ㆙ç/zü'XþÑrîÄÜufýe„ÿ[îx‘È^wò׺l#CÕ¿RŽ|ðú¥Ñ „¤NŽŸ©”ŠZÉÃïsnIoHhD–±Ôeÿ
          €‹-·lKXmaj—Ki*üÞA2•r*þì‡vþª­ƒvâ‹8±#СÕÈë_¨Ò?TNy#‡¤LÈa±«
          z覜§ßÈ«ó
          ¯ª®BùFì¥òôÿzÖ´²­x±Ä6Êo˜¿è"<b¨‰]æÍ¯¨åûV¡ý®äò÷ÒËÒô4փÃÖ%OД&®§‹ݱkbƒíznfªuœž¸
          Ùr¹.R®‘º[LY1­êªØ²³÷<SjάózÞXfòIfÙ̆š …·(=“…“wq²rƒhM&jJ´L\7º˜›MH߃P±R7ÀWZ˜ ãdê4?>¦Z~\L:fN‡ÌG!)¾Óæ<@K´Y£Õ-WÚzitôŸ°´MÈ\HMƒ£8¥1¥xQ²êuSFýØ`½Æ.\Ê;º
          U<ãžLA¡¢Ÿ8Ö·"Š	á‡Òz>ÓaýPÉ?DYh}Àm^Ÿù‘¬¸B˜F¸Ô
          ¡í§a‹RKēŠcJ|PR‡XËÍ7æ`v"mÓ\¢#܉	ÞB(Æ|l'jM$ÓÔc*¬FU&üÁAµã²q¥JϾùo"Fç‰ˤNídê–
          Hìíâú50UHÁã·²–"­²­&‚½¢«igß*„dw¾¦9E©¸…Îd—Â[
          –éт}Gþº‡ƒªJNEÀŽuä¢=u22}4ÚO.	9»RS9jÒÙ®–T§hDƇ½áõ¦Ý³gxl›ô€gÝ
          N"§ŽèTÔur0g¥5åøG¾žƒº¿&9€Ç8½!ógùžšoùcžP˜LŸÍ¢r#mm’t$¯2/Ŕÿ›fsb¨Ël[mƒ„Ùë¾h+ªŠ&š{Æ=#È^.ª´‡ÇœðäøÓN·½›%Ñ;V.
          kÏï\ÝSJáõ0…y™Ý>|¾éŽRÁ5€s¯böîÀ•ì'e…ùÚ%7sÐΈr#¦׿/Š0݊Ä<¡ÄüÅ#Izýl‘™O­c2ÚiñAwÉA©	7YˆL+ˆŒD¼º‰èm/USzÞX½}ÎîÐ@¿^JÇíUð5É¿ö¤Ÿ¯&ç# 
          ™|ˆµ—ãüae±O¤"q外Erf¸Úñ‡%-á1'Wí MÎÈ#,£ÂIwbãÍ%'B"Nt¯Ê-f¨v2L%‹éڜÁÚsU¿ij{›¨AYÈ®V
          5ŸüÎ6f&a¥›)™ï^y’:°³cO•4F|¶éf¤²{¶²Až46àx\ÿÕ_„Ê
          ¼ÆJÁ³X ½z{r-;ïCù±&{eî0hi_Ǹò¢æçšó¯Òºƒ†ýcOâ1cçUnÉ5ƒ
          ­øŠñ,¾Öžc€™66ñÖBN7¸~ZúÂWw‘N‡Œ„ÿîÏ|º*ëTO
          ¾°¶‘ñF ¤<jòœÅ°§ÕuÄùYTÊP7Œgü6A_UEõ[~·YTãÑkˆ>½kq×/~Œ4®LþUÚiŸœÅ§:°ÈTÝU¥ªÊe>1)\~oš…ú¾>…z>?qsO?ÇA"y;ª/a¾…27øKú(%Ôý©ç¡Þ/OÜü§™Êº¸
          
           ƒüÚö0fñ>ô½mõZtÊ&ل7²Imœ`jìðƗ
          ØÜPåèȃUG5£ŽB׏­éHüôt'½&ÖÝNº\d W½aævÓ>¡t-´Ü1µr3éŽm	ìâSˆµyvZÉã
          7·´.$ë}âwж­'€fí[Y|îõGĪ	($3ETè©\„ÀJ>lÁÉÖ}ã\+š)ü'£_“úFéáäé6{‡Å:þí½²N»­ËÚï˜ê={ŸU÷FÖ9ᚃï%ËöõŽT›”YY%À:cË)jWËêºøÔ³Ÿ…øËcÉÿr¾ƒƒcn@k~i]8ßËzFiYoՖQyn;³‘h’[2Ù§¥“îÙ#dâ™<æXÏ·'½©InYLE˜ÜðEE˜;=´J7:C¹ÉGë.¡1²p±8õ¥¤ œž06l{ÅªOei~ CKm‡e´pä½v!ÔkT™è2çºwƒ½ô…µÛfAeÓ³h0™^ŽfÃ%Õn@ÒLËârú‹’eѳÞñ§Ì#£à®gƒ	QŠ€•,‡ˆE*r÷ÉÃJ
          ™}âhØ#s?éËQ‘kT—>öûÎSAìú#7x.nãrÏ|ä”?>`"c&•µô`r^ôý肏ÓjòQàGò•ÕÚ/Ú;I{þ’ºzÙ=GµüD-Î3#LÄE߉‰è³ã:ˆHu8‰+†¸í<"ªŒf´ßú#+xúcgyä>UƒJ#öâ¶sí¡ãa93¹¢ê%BDZN„u,¯èñL5–@ŒŠ®"êî©©U ]­˜¯†LWËTÔBFóÛ£Af[š@“IBª+–Z²B/ƒêxý¹½%³J¾à5ý!†©…)5›±|t>šèÒ!û9ìxùUPÓÞ|y
          }þjÚ1_q³_RÛCÅS·4
          å. ãɛ¥$<É€ÀûX˜îbO¼çæW¼kÌï¼pÙâmc–x˪bS¼)p´Üà~ù™nñº<Àb·\RDýœ
          œÈ“¤ÉqÝO=×ÔÞÞ6XÈá³ ÅOðbz‡![ZÑÜÿ‘w‹¦÷žñӛ6Ã+úÜæzJ%nӛÙ÷\ÔY¿IšœSԊWaïÐ+¢¡ÎgæçÀÞÞÇÆz³}pæf{ã|4,»ÅÀK6ŽáDpsÿÑÍìŽçO°|,¾F÷½f‡(³p;¢™¹KÔh„nhLr˜côNûKgûHљžåqùè æzAç¿,f‹ÝJ*©nEٚÍè3p†nAgüc­…«Ѹ¨ áJ¶}p·ÛÒ퓹KWŠ~eç’9#\îoô{´æXJ½TÞ[u\Ç<1¿*£ÊhæWŸü‹UÂ=gë{\QúòÉúog*\77*\ŽäëO”^z\fëãžc•À¥ûVWёú¶nª¶X†³Eô]è7fKŒ¤^•E
          gϙæ#|O}¸›áùÁºiîäVì¥
          ÆÑŒÏd$²µ$S™™N˜ßÿ#Ӑn1@ràï³|U:‡.옉Æ[±›O=u¢Ù­nEw^Ø eË9h‰´%< C}íë˜ÉŸ%“ûT½ÙCÕüʓ{º×üFhVØæ¯'äë¿-T¸Çâë/û„ÈåZøØE]k«ÊUcEHÎ	eÓ!0Qs–Ú{u¨·ð“¦RNí4°Gý.Å7=ûˆêånw#É4_$èúÝaLS߈Û_."ÖùۇMªHâŽà‘/"QÝáÁ˜avæí¬í¯J¯¯zZÿ$õ¬ÿé§&RtpÓõ›Ý'ì^Ÿ`îŸàCÅljÖñ˜i¸Ï®@Šáo¤1;`ß@˜Þc2Žå¶¥~ˆëÈ+\¶·+\ÿ8³Ž¹ð<3­æPË8ÉޙVµ/`ïÄ¡™Vn^Ùœnʏ‘5ÿ<9ÜäÙþ#6þåöâÎãGïdü`ìò!ԖL=Ãs3í‘bú±Øp¹…éó†WWt_ÒµóÒüºi4bböK¿Ô½2þpl)§Dar"Ü	þä6-`0ʏ(Ž—[JåQm¤£×B3@ö©Ó9¨ò&ÊeÂL’M$fg—„˜÷£ktþ+™Åö/td8ηÆ/µ“ßND˜¾·‰#Ë&Åmûþÿ߯ޤzR"q)ô€x'Av¬Q1œaæ—S,ÜÑõ™ {K·š¡­),9}™]œ/Mj ³x™MøëNñ\‰s…\ŸÆl]Â[€,ҁR¨“Zg“'þlêúez
          67ÅotLzGDLz78§›šáÔÔæÀŸÍÀµØYo§2»–®›ROòrÅ
          ÷§ÇÈ;]E¹ŠQ
          Ëü¶7GÚg³(Ø1¹Œb¡ìTPHÎwn8H‰­þz¶²›~©n½.=á¼Ö¦Ýþí~ði:æe@òü‹Ùɘí€t`5·¦:œzô;Rº¹w†;Þ°ö¶s%ÑÁ.¦z–M“Á$zeSxŒ6_ï±Ùûú»¯llµÎ”ZV& l?[Ú/³<QÏ÷™‰sÌw>ùQtŽ‘sZ+§¤Öìlè†Î}S†ºKæGycEåáÀÎà;åG­‹ÆÂo¦ßøÝø=fÕTÜà‚t´ùãd÷	ËÐïå1©šÑƒ™°~¸V=.ÍZƒxz¯¾K_IdïÿoWH0ù°/1FünR:2zg CíËùÉ¥c[µòrø¼çÅuµ+å×JðDG~]Í<1ˆ
          ¤®Éúõ YÙ7Ñ£RYê“È*.íbœ»#æ…J%„JtҎ‡Fvúo÷¥WUl	,jØhƒÔªê󁂙í«ú9¥g“ûšÙe¿"+H€ #Û*LΈÀ½¾áÞÛC"ÄøT¶Â‡C™€l…qJô\ÕB
          󰣝þ|¾º®Z^ÁzÞÕÁ<”×€@Ìä3Y.P8¡°”÷î‚dbè›nÏJŠ•«`#¿¼õl9û9B¦ðâ–ê~É%‰§ˆfCª{ÑŽ• S¬yUÖ=³Ãœüp([aj\„¸=Ô;|¯Ofþ"TØîfÔÈ»œîb=—W„ÌB5íy;†.Ôü‹£+Å͜þ¾Č!ž7HFL"¦‹~zŸDHOƒuÇ«Þ<nRS¥­ª"fÂûì£ìgÕ_-LÿrÈfîÝùíþÄÇ?_QØV¸ÿǽ©Ðò¦±†)D,Ĝ<l+yg*~Ž½èªnq͐oï]¾öàÿ¯üMx«Ê¿(́Øöó Ó
          æAàð[`ša5#c¾I1g†UíÔ¸‘µ?/XÎøç@Ù¨FÞl/]×p錩OäÇçÈu^Aÿŝrizr#ãr¶yé½Sbâã	•·qÿ?–ÀÓ®Ï:³IïüÌn_±`Å!u_HÈ©ÇÁ´öPf‰Ã;±^öåMA	½Õ-‹Ye7‘Sœ^ž¸“~]1âAÛ²µ‚ŧÚJñÐú5,»	èølÏ¿ÿœˆß…NRZ'‡HäŸa«ž¿×÷ù1u«•ä‚5ï‚e/tʞ¡é¨Ú²¨nÞÃÂÆ+’~úpOQ™.¨áõ?ñ:¿ùôý³Ý£RÂÓùœ6˜J£‹y«óÉâ“{Wß3“>îP‰çŽxÖ9:]Q=¶Øi!äOÍð²ÆcR'k_Ý"q;kc›)ÕWßI{´1/zóòÂw‘ïNM¾èÉ{7p8ÊN3öµž}rSéNÛ¹
          ö³îÃu`/s†T†ŒÆvZ«Øvºd$À™Rn"ï#–l:e
          LM?ŸâmNO3§'O¶4­Ÿb2C69OÓuf\¦J3̳¡ú{Ñu ÄÅѕöÊWo;*´ú`jڕÝêHû_¢î)Ñã€:mq
          ½êØè–R×2¥¨$­A=‚£{›jÉ¢/ý<bÖÌÔ6MÛ+éé_ªûc£†ûN:ÉãBS#X
          ç#‹K®ÄI;U˜Úzy×ê{šò|Ö/Bæ_c1éx‘Ëè1ÂÐn<Õ³ðÝÏDØñ½Ó}oV·ŽÁ•½”ß2<ÔÌ„¦œ‹Ê,W=ž#^+õ:41©Õ“[p†ÁŸ-/ÌZJ7¹^虝HîLºþê;°á×=¥RA2‘"Åäÿáÿd¦Mø˜e•sڜƒÀ
          å=/ºŸ™bçøu¨Äƒx`·3U¦ìÒ/!3¦òZ‘¯Ûy–LYa±ö&S§øHWÍ5®Ï1|yÅpû
          ÷Õ
          f¦1ݗ7ò½_ïØë@–“	.Y-
          Kž=&œïeVÕ˚—Àí³°ˆyÌL'ϴј€Ú1æÚd«‡Ã6­ÁŸÏ/t:Üâ´È}•Öèhî¹}ãSlý‹®€ýô+H€ÎÞ\Û¥ò*˜ýWNJà%	á1׫‡ôž³ •z<Òå#h¬OÎ¥&D	±éY–q”º/~È
          
          ŽŠ`Fö–¢¦9QµBëÀÄØÞÚ0ÐeíãÕ5]ï—·Ÿ®ªé8]
          !-7>.f0)9i¯8½¹§»=ûžSåÏê"!hÇW|í˜Ò^NÇ7@‰Çˋƒø¸ÿÌíĂ²‹©¾¼V@Ĕîï•æ•ï=°+ý‹QÂH™HJšHÉK¹c7)ec­€,ОL½Ñ9Ö·»tc2#ŽᦧLO§¤¦ÓgR`Eéí[%շʋn—Ò­›b
          ŸŒ§UdBð&k1¬¬ËE»”®—•(ä)Œñ©s+×nMº¤£ú‡¤Džúš³œ´u'í@ÂÀ—ӝ’û;ùÀÜkZ(šòìëRâ
          xc	.y,¦à2¯a
          - qO…³óωç³ó$çγ
          –³qñÌã./à—Ï\öÿ#0¶Ó
          žÕÕ?k¬¯{þ¬dc'¨®Ï¬±öÙã>456d‡;yq.ˆsòÏIç³Ä¿I¿è èj¬óÆFÎy‘è|NŽá41çO!8´nŠºÀÒb.¸aêw2r6ë{ºyº×™6ì•ç.rŠ‹v—U\Z½SoZ1ìÙÿ°§>ws7£ŽñÞõå©Ù+òñqh³SY7ök×JOlÝž°ß½bæ_4~2öûÉ'üóÎcŸ;êWR¾ÜÑ/‡˜í4Z'›À¥uuÐ8”æˆ÷ˆØÏÒüˆA'?ünÕ΅°…Bif@z[;Aá×ÖójkùüÚÚÇ˽>&¦žžE¿ãŸIô¿ô4
          «¬œ™Gï³¼„•g(VhÇ3¼øw!½¤¡Ñ'‹’¬Øžì¢R–?ßÇGBZLm}$^]Gñ5eøDʲ+l© M9­_hƍE¡Â²È$ˆ&&K
          y&âÑñAÕ/qŠTfN`8ߙʯ¯‰šIçäT:žG]œ]#š~´³NW›¦ÆêëG•q"’ªë¸Aéé'É'îEۘ|ôyܕ$Ãóÿ±Kü#èM7|çtzk\FÌv:­cˆ>jSø©Ë.ªÍÅ«­Y_Ãûº6›dxÌ{Žú?Õà¥7D°–QJç'¶&c¼¡¬Œ)¨)”ö×ÄÀ*Ž®nŠeRŸQZKbPâÅ©	IÙÉ\®$9)!7•}—šB¥vr$J~ñôës|½äHÿЌôp?Û«ëÕ4,˜o•ô¥ÙàSX=–k„‚Jð©$m¢^«%gVR5K҅ҟHáÁà§ZXË܏HäஅoáàüO¡RžÖ?tQ'Á$d‘ôóŸÍá1µ®¡–™xHrnU¸<‡cr§p]ú.µ±a®u?øÉ)±2Hoâÿeì(Ó$l eҗ´8’cO%Ó"Ó×Û©UokևÅðéTt­	s«ÿ¤ž#Ï$W­Þ²³þÏÚæ_kËCëO@î²_ևëç×pÊøá8X\ÆÄd­4÷ã“Ÿc˜PУõÖµñOV0ë€s;î^0d\L+“ï%•S¸ÚÎÑq!ƒƒWÅ]VÙÝÖh¯U{…¡X4Mp‘–šéŠƒh‰y6ÛìEÅ~·¨i1Œ/øàâ„ó|ò›¦}ؔŅxÆ´_nMIz4à'žh‹x&=pm8›ìòr抝–Ÿ…Ýct»¥›-†bïÈÜRŽïû`È
          v’ã-†`wsóÝqØy	2n…x(K{ñÄ2t¹c…ùöj¨´ÆÀ#@SG¼Ûü÷‚ǀᤃ4u»5!NxWCš-‰†ØÚ"Þ½@`Ž\;¦ž4¬®¥6yâŸßK&ýTzd©&µ^–yÌeæâgU"­(¸•›¤ªVúlºÓi2`¾hXŒ¢»wr^…ï\—
          ÿ•H<G©(=4 ’`î$ºüˆHv]2“s»d¬„Æ&ɓ&‰/c'ÈLånrbØ^TdËøùÝbpjÑÿtU&+¸)ŒÞÕUÉ®øËIÀÐÿb¿Ê~摤¬àh¿µOå"¼Ø¬úa‡[á}L頒íÆú·˜@²-¾L“õÐ.KĦÉdYK õȀ¦ÖÓCVªÍæÕ«›~Óׯ¯3æµ=qÆ`÷/¿YZ¼_R^vófqdïÝ,/)Úß/ýúÛ±ÂßZë@õ§ðS$9æsø99×~˜Ø»l\LѶéÿyq铵þܺúSn|Ώyyòý䆖G‚–-jж¦0ÿôyvžh2Š×ÈJ¬­iwÁ°g¼úÎÈ*¤¥\­ùC›Ý>†âÅÏû¨è͏á„M¨[äÝs2øý~¦Üuûf™Óï³ëˆn…j‚[x¨í„­¯µ-́>_@þrGü¨T¿œÞÜ$OÀîˆÎµ—RL<»;„£
          Gåy‚H¡ãQØï«ãT½¿Â÷Åé|£É±©)ø9Jf]m·çq±ƒ¢‹öw#{äPh¡ð_|= ”a%ôzÞèß#Û%£‹ð¢Ü^®ª2¼6åÈWä˜îÍst	ÄÐ_gèìE¼ ">{	8–·cœv†–˜O!ÞÄ×?šs9Ü»Ë?m²šÒ×õvÓ¦’S¦ÒSÓ¦§S’ïéää©ôtOÆTFtUTTUt40p”*ÉeœâžzìFÜ=]TJ·#œÂ^°8LفˆDÂ^•Øé¬ÿ‚]˜œû#À×~<¦™wçvîĈPkç¾qñê–Q幏âԚ´.Í®V¤Õ&èÓØbKp­$”TN…¡åe$
          ±ÕdžÌl³Ž¤d¥ûÆú*ÒT¨?Ï­|Ïœø3W~™óCM[æO.þ˜Ùšqíe’ô8 Áf¤p“„‰4nJ
          /1“h˜²½p;l‡B4 ;÷¹p}†Ln»(3e‰íê$6ô‰Ùà|ýBbmƆ—%h¿4ºÉ*´’æÄ}Rž·Žü‚Š7G|ͽ‘¬•¶zyõÔâ$›1t­Ç(–U¤ô&pGó³ Né„ež:ÚV,ä­àÁz"—ex~Z 3RL?/&Î3çå@霔/`¹kø†j#Sېš—Ôáۈ£	b"¨”1ï<óø;ÊYB¦0!%·fٛ¯™T‚ž­à‘8±ƒž\£"Ì&I"Í:–ÉV¨ \ì"¿Œê	\Ñ
          %·S•ËÔÖá‰Eí®QU^Ñ	-¤5O¸oU»ÿÊÚÚÊú«[–u”pÆPŽô葬{‰sóvM¦,Лˆ%ZF"¢¬‡µš/óž@.ÉèöFíús·ß^½­ç@`“(fUa–5ž/=Äá×gkLkhă;iè ÷+ŸðffxÏ«*yOF¼²ê¹žÐÁ{ŽÙði)á55á)ÉáóÀÀPæuÏ|rJø&+‰!ZÊÌXÊe,ReAË\´Ì%ü¾®ïØÁ?—ààSÇ>K§L—μ­7ÿßÊÖß´øÖŸû!Ê	儊B|O%{Šx@ jÁ¨1
          ¦ŸÿƒžÀPpþé\C†¼uÏÉÐÃWo'Îó÷þÒo¹=܃zÇ!̨ÿ{0ñæÈÆAÓwŸóHŸÓÅðä…7/²ñðýŸgaýƒ:œûýo}Vßlwüû}¯·7_>×ö竌S_XÇ«
          xm|ÖñûkÖg컵.™ì·Ýý¼abVûB¿@ ð€7D@–/TY²¶«ÚÔڂÈß2ùj”•޶¥‰¥ÅmVw)Œ—&üå¢fۜØ\ÑÕb=IÙ³oµ~ï1ë÷íîÞ¿5ÀêOžt@O­Ÿí	ð3ßÐ~Ìþ±½ÍþWûqûÿÙO´ý­N™N«Ñ!oiTe CûY@ƒnì×dÐ_ú÷M1åFŒ‚N¿\=¶‹¶Ëjïfö«žÿ»®QµOؾŠ·ƒ`°1—ÕUÚT»êAçUÈ_êlSëJ>Güh tyT„Ü^°u9}/—ºt¬ˆBÔ_*ÿb="¾B€tÏŒ"þß±µ8_^H—³5ÄòBƒ£{òRxÕ@:ÆÔº[èåÆÀKbê+§byŸÜHmÞN¼X»¢_“-´ÀÕÊ$aëA²{ˆ)ÚÉdù<²$ÉETÒ8VÐã­ûs´>ÿ{ºÊ[hø)ÿ
          ¼ÖÊ»À:q­ko“2p¤¼—Ðá‰èH)NŽÞ0ÂF+ ~ í1k©/Mâ\k9ÿž;¹‹ïÒd—ЏRí"ë³V :<†ÝÔÁqe7z÷úÔºUošÔXoJé½ÍÌd±@'ª&<tÚ4,Ñfõ^ÔíÞíMôÛÁ1ZŽÑà<g qþ¦]XþSéßN=oNç¡@ÀŠðÁpò¬Ö¬ŸËt²Uª:«)3ÚûVg¿°ûÔîØ¨k}®/ðeðí¾ß?ñ+~ÛÇÈmãýøUô&ZàH
          ©%L=i:gç@þW¾œeñ”Úò§rºÜ(ÊtUÖ¬º½^4öáâ˜=þv&ŽqͪgŸÌÍuóÒùÁù•y¤/¶-þºèXœ_ô--ž,^-)iúÒ¶t/¶<¿’ÊòW›VZ‘îÎ1 ™Îž®‚®n¢îiÝïô4ôðz"½Szôéëë»é‡èsô¥úýúóúkúëú7ô¿ÕÿÍÀÅ Ô Åà”ÁšÁsCCC;C¶¡ÌpÎðµÑq#’‘Ì襉2@¡QÖ('”'Ê„
          Cõ¡N¢&Pó¨Ôû¨-Ô6ê6ê#c¤±³±¯1ߏո”ñMãLTMÂLÊLZLnšübz”lÊ7ššV›všŽš¾B»£ÃÐ	èbôz½ŽÞA,@ÔY¹IÊ{9›Á<M˜Bøa‘IR*iDŒj´!Âwb3|ü¤›`†›<`äteᑌkúçÌD:êîé-³ù¶”Tq+ÛݑŽõlÑzl¥jed…±ò°"ZM[Yã¬gmül*lFmÎÙlÙܵyhóÖæÈVÉÖÐÖÁ6ζжÊvÔv—°?‚A*`@ðßr»³G8Ã)òyò.àØk†7ãlÓã|Wð~óM”ÊØ"ˆ.ôòC‰ßéž3ï¬pJ4¹Zkë±E­ÖÖݦ¶†ÄxËËuf^qÊt$™¿ÓÍ1/	Áï{•N2]ˆˆGaHÒ¼AöPc(‘J,N—Ûüf󛉄LéÏjÍ;ñ€öD3Î:ÏóˆÕP-|Úy©]Ñ´?J½ŽÒ£ûðO0@.ø½Ptâª×HÆ	„vSóüPEQC1qc©0:Æ”ä¹8
          ™Ýù´îÌKOŒ[<O‰m)¿ºm·T²ñpd=“ûÇòšiÎ_K…¤ÑäTW8º´Í¨]>Ù±K¤“¾¡±®ãåœïõFӁ<³+) p~‘71N6l¼'‡X¿$OPþô#GÎ84}ùçâŸAÐw¾¦ë+ßLÀs®c7B¬ì¼ªºï얉=vó.TQ½¶Q×Õú*ìŽ_ôÀ8µyIÉ,Ƹ`m†u}Çb¼¿WCô“üÃ߸$\Yð3F”¯&Ì:71T˜8×jYj¼Y¿6[UÑàr̾Ð{÷<	ï†1#;@’!F¬jˆ$nÁ<½KîÏ/¹* „rÆ1Éqrs‹'ä½ñ|ü•¢lêXÌ퓾b:ärßHOJ‚’Uz}&Sìôþ«0®±/MiI\¦¯Dcä§J79±Ïu	
          åˆI…¬qV©P«Á?`G¡Ûá£Aïw!ƒèéGàÀÛëäÈK&ÎîGÊõ1M¡²”»¸6PóZpÞ¶(&/ç,V²×¦¬Y-¶ùïçR{gô â#„4!ã
          …p¥AÍÁå æVŽ&ü ۛÏĀÃ;\ùÛçô1(dÔª
          r^¿””6ΦpÅKYB£R6a|)mi…ƒtj‚(¨feÄKúÄ;ò™ócó#ƒ²Ýd;ï(¼/Ü©_÷ß|	Î×ÍÏS‡™t›´GïÅ
          <©}»>/kûˆ‰ǖ‹
          5‘ÂÂ
          ^,§aW,VÏëG-,Š¬Ã¼v·LÁÓ»%FèÇ¿4ž0槙©^L2>·>Ç.œÜv oð«À`RŽ9FEÄIà88D¦˜t)óA¬íoH޼~.ƒåwJÝw¸P³Ž+õ\#r¾h`ÂH -vÃ;¡ŒºöD߉ãä
          bi÷ßthÃ^"[ÁKݱÀaEWëÔ3|òbH‰5tÈiцX؀Å甞òAÝz)…7^X[²mÆ4†æ#	؄ú͊æàXEe„vµç
          uîB²$ÒX1iŸ*Œ§ìŽìú”¶¨÷†ý°ì>µ=úoqdö
          i|Îy ïã
          
          
          '( ˆhªÚy²‹â®i|+liªPÂÛ
          M]ɳ-„~qaöžôœùrs,ndôÐޑ(]öÔ!„y6TCfƒpdŸAVK‚ÌX
          »¢ó–YòZ›³’4'“˜Üg¾ˆ¦Ëdx*.Ì-;‡©.,9шDçS™ìµÉVýþE'ý
          ¨ƒYª¥MàüUºæŒø’ÕbjD7µ´U²Ü[YîóÒ¯b‰bQ¡†Ä3“ÿÛÆX¢‡z޵: äçA“P-uçžÑÿ¼Aã¢ýèý¸ŠæmMeÿ±-<‚"ŽÀ
          Êgoö¾hÿ¿Où;,@jãîÅ©õ|Z¿×“‚û¦ɔı2,Ý¡hÈýjR]ÆgX
          ®+îû+#×NŸ5è6íð³ÆÙÌ<?­oÐelTåÎ< PûÌåzÅFör„A¬hø)2”ÔNCBmôóò¥˜é¥i
          Ɉ“éÂÓҎ—›À´Î&†ë@‰è!%­Y³ÍFìAˆ¿,¡(ñ–3“§\ՕÏo¥4þ%Š¦ug2€;¨ý֘úET~Ž“ÍoA4hf[¾ó(¡9-AÁNµîYµœuaж£K¼çÖÖ+U‹ý–ÒÜ<»ÊìeùR}[ ŽNk8¥4Ä~Æ×õGhñúˆn"[­Ê?Z÷BÛ1†"¯¤¡"@¿ºÏ‚ºøðËÁN•ºc—íRûžÐ£|“‘™Ñ:܁ý3š™å÷è¹tÔoM¦¢Qi…™¡jg¡ºæ´s”kãgˆ8Ó+©P­(V+Çõš'Ã"¡Ý«“Ó°;Œ-d5<îߢÃTÏ1ˆX‹®Á蚸ŒŒbß"X
          
          ‹M+—ØÆpž=éµêFŒx•·ÀJЦ]î:›|ՋˆW1ºUFT¨!j6ùÑ¡òweÒHf…<0Žë$Üw9}ßàÄYjÁ Ž$|æb›»#œê·Èÿ‡oˆã…^áŸ
          ®ˆÌ<x@ªY=RÁeEMct')­ûQ<ølÊ}PÇÓQȝiú÷nÆ|’‰I¥@U5Ü!C€@›p•°€œÝ‡½9®3ÎOuJt½ÂBD	KÙ,!@±zµXèQf<0;î̀q‹dö|…÷ž6ÄÖhÿ¡3¨Ý¢ÐŠâ؍TÇg95ݛ·˜
          ¢	uN$hS*GÝåî¸
          ޹>ï>ÛÂÏŠÅLmI5©s
          ԟq«/R/qR§““qV<
          8øzÍ
          &m—ÖÜ×ÕCj†f©Ëx,‚±¿nlëAÀÚ5ê?W„ym“΃sÞI¨dÌÐ5¢7^-LüÍ2’dÃÞÇÜ5Žèׇš¨°…‘w–<¦­¬ØÓ(qewÓ'g*ž^4gy]½5ÓQ¹2½ƒÕœ§âбŽpOÙÕM/„Å芰¸ýï+Û²”X˜ku­ºr.vGª9o¾=Çlr#A…Ô+éŽ\F‚§éù£Kc¤jØÏފežsG+A¯¬¾Ð´½‚ûöð>޳ÌI_n?I<}{[W§ZµÝÝQ‘ѯíW´mú×F³˜fØo+jCªe
          (·‘"iœÞòV"£i?™ž¿aým,uŒ9³9ž		ž†üþŠkܑ%¶“$7ôCÓv?ÇÒðÃy¿+Çe_ŸøÆÆ‡h/Šá·ß³rJܯý“k5qi/Fԋ©¸nò5ܼ5ö9îÆ½ñLëômZ†åí’ÖÄAnQ‹×@@ŒÜûïP4²$ÍÛ!!Âæ¾Ó†1ù|d&D仯h3>Ò=Ø>ê<|@ÄUmÉŸÙô(ÚêÖÆ4ÉÌĞ1¿Û®¼yôºÛ@Ï{;>Ô¹eÿêùø“á7aLJþB½ÚzêäÄû¤Þ9èeVkÎ6qPÉ8Ëë›k)Ìê¤òŽW0Ëv묗e¢¯Íš5ào ‰ijmlhW¼Å¾À)åå7ûŽP#/qTxÂ(Y?˜_˜VûñÃ˜Qž'‰kf‡Ÿá¿ÁwßzŠŸ’\+
          ðæމ#íÂÈoùtµFÊ/Q«¿)»Ûº=#gÞïï¶ÉcISßÀó&Õë%ÖðË*¯?ÚÇ\ÎkA´~{*ÂGö™{Çí¯8¶)ü?UŒ‘cjÔæ>u+R±»Î1hXÔþ‡>Ãç×dž…„Pq¼Ùºh]S^”ʳâ²Ü(fùh–'÷ÿì*ŽáÏ3à
          c
          à1z*$Ÿöû+úvçT:7wԚ¥pp­´GÈ|m´êÿq–rh³l±ª*b?ß²±‰µòFdí
          (íµ’üm÷-ÿ³±Ø[W.Àkó-‹§óÝVÕ4«p4¡Ö“y?”Â4ÁÁ›…!®ôé[ÌEL„þ#G¯Ö›\Dqí­šԑ$Õý¡f]ÐӍý‡ìƒCÈA™lšcãÚðÿþû­C옯ԸÆq×(±N­œ×eÏ'Ì·Õf'NßÚ1k*RŽ1	…:ÅýG+Ìí-Ø`_(¸nmá‹Jô¥ñ|ëU}¿¯ïŽÁaÍE3­ºõ,øu´çÎÏr~!Ks
          öÓqû©ÏL“h\Óª#¥=­ª i	ï	ÞéㅓF
          ´†^nsqo¦”­ëå¼ÓÈNãRƒŒS÷iØ0Û#|^Õè[aNG@·õÞF]—Ö´ÕL
          ¹|Iõbî~K5½Áê
          á´UdÈQ4E9*´¼ÑƒŽX
          ˜	qaÅ9=
          ÉßQP\o™
          O,!ŐüŽtÃ|Ž^|im|nFÎþŽš|þ:&:Ýcx¶BÕòWhè×élWçcНàíhâw±åª,›+¨zm¹nhQ–?nh‡™eºA,Ó¬sBåÜkîêòœ]°>ÖKZúݕm
          |Έò3|H0ìá‚~é”ÕíAÂüÞ
          !þµÁj¯Ú-°1Ý,+¼-Éù›U{Öþ”›c>÷$ËnPXøøDgÇl靊aNL´ïÝýÙT(Æ~òã…úÕ¸D>F›É…Ȩ*DKæ½Kfdö9lÒm¨ug®KºŸLd•3®ûˆc¦D}À…
          õ¶‘Šü÷sÁwrš7ËeÏM(„Ö_Û·Ëþysr.pþhêReŠi^¾Íb2º£DRz%”ß:m@ùÕÍK–ú~,¢5ð­nAn¨ï»°õêBð³[Kµ”œâˆ;kÅÆê÷ô{Ó,k“ؘä&”¨šz&Îg™Îق
          IÕñüé,¥T‹^o·<ú,O=—³ØÅqW(¬Û€ç‘H^j÷ж€Ì§ãuÆì¹¶ŽâPÁó¦ öãíÈÊÆ¨Êø$pïò5BïJäâ7ílÙ}oΏYÃ'û[!ñÛwz¹ªÔi֑™gìiÃË,C<OvØô¨Í[{{µBþh¿óº½8%ïí).ì+‹ÅhφáÉIÁ„ž‡€FD#9¬`C:S÷óø£ª˜€PV˜ÅœãÊ1Þt²n?k:Øi±÷Ë-¦1ïUŒIŽ;"S!ft*|ó1ét"žU];⾆uù
          þ×f—­9éèCúÀöÚáeÏü8C'/©µ»
          [ÂGE{[ŽÎÛâ>rÜàL0¥M»öÖBם>Fu—JµÜ@$õí°ïÒxj[›4g&0xk1’Ÿ(…\²ëv²ñÁíª)p7'<ÈïüñÿkÁÈW+…`Åח€óXv0ûPqzmW°ìRÒë»F³¯ÃsïWÁR^˺Ö¨ßõîzï”`¿uEƒQQŸ²©ü€³«&’…öOv¸dÝm³Ê\díç Aâ¬×!é(
          aZ3â>úÖ+hºžs²Ü£X lËK¯Lælð‡øHÊC„åÄmV÷uta)… ·‚‚3†„v”FÓAN,Ô8¸¿9&ÿWêzÁ…Ï«lÞZ\Å—EF£w^~K~\Y-Xh˜* pŠõ®‹¸1r§«™äsh„å}®ªV×QC Øx€ŠŽ'C¦y6²Q妹"_Áõ΁ïeŒD‘Mˆ½z‚€÷ütĂÏÒ~BAb.ðZ±kÿ6Ï~rmäÒõÑD:?IŸŒ‘dzja<•žß`"³—çRS7ä÷˜dLƒŠ V†ˆ7HôŤ}sþüù…54ƒ“´£7±|
          ´ZÉøÒåÅÔâÂòb†k„Ž,˜‘›Àñ‹I0¨K$*éôòýs樚àæSãø¹•òi9ôÔŸ'˜;Qøƒ_¢46TÍ!·ÎSyf˼e«&›@õ[TçÒØ¹^«¨×üpÔ©ŸVÿý}g&rmây7Rˆÿ
          ßSÛ<ÝÌêYÜFê¸SÞQ@²¤U-ʚé2[UCPÜSó®‡xV…KÛAH\A
          R;@Pc}qïÞè}¢žy‰w2 1b¤Ý×&ÞÑ]§CFwÔmÝóThǍª© ä\ºg¦:ʱßç_ëÚÀÛZ5j) Ï)•´bÁ:žy“¸ø–Q“1yœq¹Eâµ<Ÿt'ª(š£îÚêì*\lÛ£‘
          ÜÌz:n&֋k'Ò æ‘cáÙé³è¦M+È.»<ۏ©sjÀõDH“°’kP7·‹E’ñfÇ:ö•9Œ‰#¨…÷]B‘×"¹Ï=J—»Ì‹ÈÍRÃSw¢RKªB&'Ž¢c™ÚÇL$:÷žú/à2þæÏ(;øÍˆ-¤ˆÆ@dÅ»æ¥÷Z©DžԑZ]à.—ZÄÌP¦?˜ŸoÑ)©¤Ášçž˜²Z+}cìžÀ}>ê`¶NŽ`¯ºÞæéÓa%JáÈNËxۅ(cps!‘˜›)=ڗßҵ퍆gµB]2±H¯RŽtq5ÂQR-q>•‰fróÂbÅdbNgô
          Ï=µ/tÕnFÚâu|(ú
          1MÂ;n¦pîVòvKwòj™&s]0ÙL›ÉÈ)KÖ8¸;ÈtŠ'ù¶ýZ·õ0œ“ŠPi¿F}Ž’kvjz!e# ¡n¨N‹kìÈ£9¯H¼®
          Âe}§øE\?ÃïV›ad|¬òI8–	1Ïcá•ÛFJ	Ƙ\Fº®séu§Iã:!Êò÷ô«‡Rê0[fzԛÃfâGLrQô8°œþKù¦Àáz‘¡1V­îîÓaœéû6K”0Ê7=2î¨Ó–¸¸N:Ìãsӏü
          ‡‰ãSåsž˜µß¼cû{ËÌt…‘Íi>Ê»G)·ýž|Yc_¢5øv÷´—3ÚÙ*ñ 3gD¦«Ý‡§#ú¤±EòxdÖªÚÂ:‰—æ³EÞÛìê ø¼ÿ”¾_ú~êû•ïϾ?ù¾{ՇГi³VÉåãfâ×U78Á}Û#ƒÇëí¯¡±BµzC·.%±?ËîÃòðhððŒû‰š›±âÈb`÷Qö~¦za݄_V‹ù@–…­~;þ|\{à@þÓ¶DÜäŽñˆï8æÉiFÖö®ðý½ïs¾oø>ì[v¤é<ö· 1sñÐÒJZì•Ë“±«÷qO'ÇÉvyˤæÀ͉°çb<Áʉ	†¨VN@ºc¬hx¬JŽC~¬´øá½š*=aœÀLþ`+oÄàÁbí:îˆ5͜(h.$šÝ9ÅzؓÑ\0˜·]Þ¼[ÆâLïûÂá;uÑѰÁ%šÏ÷.‡	ƒ':w4«ÝōFFWüø}(ýã^ÚސtíX>:9Í&p‡Á³žûO–—¨uYÓ”
          1á¹ Zâ;Êቐ?èÒél=•ŠG.N~–N3S,©‚·”¥&Uá8ZÌ©Îs>ÒeÆh99nt葕Šeµ’•o+øœ„3-üQ:5NëÒܞâ£Vpê.öùL*_DðAC´7Š@ê~ë¯éûÑèîA†‘â;H1¬v&‰õ8FYÕҙç4ç(¼.Ÿe=ºY*¬pI	r1cÐ	be‘vÂ/ÏXþȔöe‚’ß´×ëM‰`?"࿙
          ¯c(Ôü’¨¥Qº/÷dùx›EŸV—¬ôÄI™1G,Édo¨›Ù‰•Vùdªelb;è¾É”i“¼‹bîz(¹Ž@ì¤bðp‰™AŸ­HcÚíå¼DiìÃÀtH¥X¦QÒ¡’!§ý2vn¹&˾u¥‚ü”
          ¿g^†
          ºá>G•{Y38Ãü‡fÞ
          bLZÁFÿ$âߤ¯…Òž¥¯'ügg*Ê*h _“l8Æ&;Yâ6Š'&Ìú«31Qhl¶qÐ+š¸¼æO\º8ûQz®ôvz Ìj×+»nAøžËÌ.¹I­L”‡Þq5¹>u ‘©Qšƒìhál¤¥¢xô	íSØ:Îð¶î†øwþS4—îÌ' æP–/øì‰=Úõ„&Z…w¡èŠ/f¦¡d@0‹#”àLLZh?#Wz»BǨÙIâ
          {*‹£GLQhꑋÆy;pҌ
          5gʕv(aÀÝïžæ|Îðk"VÃuþ(»0áUàéÿhZˆæÿ(6ü«œæf¶%«A²ÂðN¨
          @sb£I@;í¢6¥CÕë邷Ÿ<ÇÄj¹sjô5'¢†ÌkAáìpš£5·à/¯ô„·õ=
          d€Ú™lî„Ò©y{·á{“¤“ùruÖUô88Éiü­ŒYT*ˆI_Ûéöp>ÊéÙkUô F­þ0'^}ƒæŠ#É/Ož¹85=įgS@»`¶?T'nM^×gxJOv—<µ
          9,ZC0@õ¬ìxïë¡C½“Qšû[Ä´áà>N±v²ië^‹Ž,›gnڇúæ×´2qž×#䙡|kqôÎ;þ³33ýw’'²FõI%ÁÄϞ—¡7›Š÷»#M+œÙv¤î¼ßl¦"ëX’bwé,ÝÛ;
          JÚó®M±GÂàhÊQ*™ѳK.±”]úF¢µ›.A•_Ïq.½E³c
          qAˆ ×ņÏF¼w†úõ(4ݨ·…ràax.’DZ­è¬ÁÚ%.µÁ_bý&ó¾Ö—ÌA–ÙÚêȼâä˜їgìÒÁ3·Éœç+Î?-ìÑeâ%Úzii0n%cOóñIÃonØü«Ë†ÊüÉ.:y*µÄ‚¶ŸkGØÙbå*ÿ±˜°YÓ¶ö—‘Yőū8þE>Ž¥Ö"y1žln©ˆ€d¡oéñ‡Êo‡’7€H0šnŽM¼‘eñ´A{¯&x
          ÃÈGž“s¹°4vtmÚò-ýÂâIüö՘ßdL ࿱Ðòw—Uã1ÊKód	ÏÓ*
          ìün×Êh¬ã&$â­ü=³Åßt+ÇåWß°O3óŠØl]¯¸{䄋ÏCŽ—â§îSOÑpÔ¸fw(^îÙ\x“üŽb|Ú>ý¨-2g1.Þ`^Éê÷­Òó¨8ßDã8Ϫs«Á+é›ºm¶ëP)Ú£wï÷½Th¤ȉø&]½Ä5S":-
          ûµ¥ëáýHqyµvy‘t»%wnaû&­¶?ÂZåao‚DòØq«~ýt¶3çØXýMAÌü¥|=æ+j¥ü°¹ÒT`I	ºÂIÞÃÓ|Pw5·ªN5__օb÷U°AV}öWd~@
          Ópx˜n^®òWÑömÊ2¶íÉÙÖ¾sÞ@”7}Ï*vÐ,WG‰ÌV†S
          J”´@>ªÅž4w˜µr9×"žG~’×ß¡(ÁŠ<ڔ¦­²vXÆÇDÝÄ道¢ƒH#T۔ðèÏ]C6èÁŽÄƒ¬6­\( —>!çn 7gT䝍
          ®
          ¾^4‘“)g>áåÁ~ä÷¤j|§UGZê#¾&;ø,ãƒñ}*ÐÍ-ÞoC^c¹Ÿ9ö.ZDõÕl™§‚û'´ßÖäzÃbf¿˜t*Œl/22žæ÷ âs•¼²‡ʞ0{ áëÚ±ÏÝêR’gÆÏv$?Oý`tL_YˆðN?GÝ.Qǹ;c³ÏS¼%Sg©c,Cû±‰‘­rèBì׋“ÇLՀ@WÔ+o7.§œÄŸCíyAý™‚±
          oòјAðx^µö•îñkëfÚw°Íu?j0)çdðýél˜Z<~ÄJ»BÑ<
          {Éã8¨@Ñ."(éyözÞrb3ì]¬%âÌ­]>1±Úőï‹&ìçwlû©¢‹5;¯PÞMßéu"S¢uuÀïœ÷CMh:û)ÄÍÃ9ÁÉY7“ü€`í¿Õ'wQÀîN»`¹YÛR—#‘îï«ñ‡ÛõY}¾+ÝÛ¦P÷¼H©4’ÎñƒÍ/ioæn֌
          “µÆ?¸å#ˆˆÌÕÙúÝÆÜý=Æy¾|VÎϒ²âѹ:›‹Ó87vâ0äÌw¶UL	dØ·	¯Á‰HõڐVbˆ.3þMÞ1æ[€Pˆ6­E8Ë&yræáÅÝt0`õ
          °]Û9`¡XÖ9_¬ü{©tjÿe”Jã%‹±W«JÚ­É.Pg¼eG°ÙDz+D<Ž¥¬µú½!uü—‚{¿k8gä^0[’âx1)è…1ÿ0*:!	©÷S§Ï2m„ìLÔaÄuT'Ø®ï_=ìäÈG
          Ìq/Ýį'Ÿ½}%ÁžŠ#óˆÞÇVœêeÌó¾ÏðbiªþB}—ê|¼Ô%š*Ý	!lðn¬1¨lƒwsEªPG<l/è×R^ÿ¼7^AèC¼O…d¯¾Q³vû{[œ-r&‹Kši˜c^Â
          )Üï<$՞藗_¯Ÿs9ÎJpâ
          .|wãáÏ¥|À«÷
          õÞƒ|ŒhYi:WYÃSAúhn´=€N—££ý¿¹dpt<Ð\"a .^AÕ#øïÿn·!êÙöð:ÔÖ¹YÍì¨Þ$hצÿ¡DY&ï´Í©6_Žú«]<ö‡©4
          ýª¼EËIz6.äüä)%4þpn‰ŒœñPê'Z# Ío@8ýfã‡Ð,Y3q-¤ó‹ïËR2FU¬üùX+A¸ÂŠ»85Çm±¬è-ùwú‰NŽ}¥k—6%8BDMìæ~»bœ˜W‹Bù}šY­¥@ucÿpu6ZnT…vÅ(˜™€<v“M§á™Ö(vY˜mÇLÏsß¹†´bzGgÕé?Œ†¶êN,­é7éÙöP蓫ã¤ÀCd–Aø¤i¨“ïA43}Rwjœ«¾ÓáÈËYziïŠÓ}5p¥DWd‡£
          ›ô ;¦aïCv«ÕֈoëùØ7r÷LÊÛãÿ>rˆ«M']Cž£Ø°b@	ßJ¨»“ǧó=‘ÉD%Ÿš¼Z&¥";‘oݖNÉn;X˜ÝÈÆ5¶.ƒï![?Ûl^äΫǶ¨é-Íh¥ŸQ£ž[+PKÿ/î‚ÙoîïÇô÷ؖô%BºØ`À1ÖC‰ðâi©R«PÙç8=®§' ¤CÇ
          (2Ü!Zr
          IÝ åÔíX&
          èg9áq¡Ï/§8èÝnžÖM™÷ÃK?=4“bŽˆ‰•šW†°®~d}ß
          T¯¤G2ÿ9Èeƒþ(¨^Ox«›HŊ½kT¥éš<¯A…CØÐàd&‘´jËo5\zq/„3>‚âËÄtR½6!žÊ<Ç©ëáiúø`Jm]^«V6ò–Z6º@Ÿ½;í}¾ðü܏–Þê$&QÇޓÖ.3ñè74]ã°[¬¾˜Ôª›¢»YÏ~.ò\§Ç‰j8¡ãvÒ|¸ëØ£W(GEaèh1vôØe˜ôùaêÕÏÎÉÁåKwÝ-UOÖØ‹d2nÜT0bz	°Rã.9KOTv?jjÜõ­·ðn×§›4ðz™)ºa4É«™O;þz
          ÿÍ]*µV› ÍJ×ébde¤&¦åT£ÀƒT¹f•娈‚¦8üí‡5}sÙ Séõi:óŸøëU4ÅíÙ*qèe±*ÛþV¡åÈ»U{sô/}ŽcqÆh–	Îçæx|N…¦­>9mææ®E{{ã²'xyKõÖ5µê¥8|9è©Ò%Iðôʜ¶ZÉbI’.ÌöБíHØýòe˜tó;o^ú­¼Ž99©±MÖ5ÌJÿ`p}.a,»ÝŸæ‹ð#£rZܧ’/í¤aÁ„ÙY…‡ßNtˆEÊ)ø
          [MNw=œ>老ççü¤‘Ö^
          æ‹r¾“@TÜ•‚ éèr½4•7Ñ©[d[ƒ½4¼IqpCrOäé‡æ`ҫ쏋.ð0ÑôIÈ@ì1÷˜Iގ°§ÜÈßÄ&M~œXÔE1º8vâÃ).€ßpñÍj®øÁˆÊÞ¢æö )ûçG1ùï…æü7äÉâh¥„ó8òyTÞóLc"òh'趤ƒûy|„Jþý³6 's•:ä“c—'—÷]g@ÉRùßÖs+4Æ[E€4eJí—µi}3$‚éWy}ö¿ýêÓU·;þ 	apïy²Àýµ~:Îÿ…Ç¢Z
          @`lS]â£
          hë-AêïÅhåt•«­Cã˜ﯝA2Ô㐹œÆÀ¶ª4&:êí®¡²Œý9
          í»9ZPS«ò¤šÌZÇÆº€	?®j ÐY3ëªÖ ÜêÎpYþ]JÿŠ!€1›EÛ^
          '†¶¶I–>³î ©9ðwMxš´\
          ÐôìL•ãÔØÄøÊc¤.¿·ôìÂOhc‰+m>®ü íñO<b¼ò'dn#K–UëÑ«vQ=ô}:
          [_bhoÏ(Žñf{+CC-lù1þò·†äŠÄBøvÅ¡<’r“úVB ™ð·P’ë!õ»öÚ¯¤8CçÚ²‰ãÐ8jFaκ{*8XóT92…¿T5å†-ùÌ4n¢¾³ÄÅ+ÕÿßJ
          uM>3®ÃŸNˆRWÔ¶kû!Š•Ékê$Pó-P›{pLº:õ:Rw‚‚½¯ZĹݔה)ÀÝ6ŽSÜG=:šÍ1rÏ5rÚՁ×dõ›ë8­×l§ÄÅÛÉ­¶߂颸Ü
          á#Èçц–Y’™m`êâR€X"mØH=«Èøn	5
          !µƒ«UFTr0ñï<kCÁ–L
          L6-NZ€5í–FBÅЏ£«sŒw‹j5éÂąð+ðn&ë­al»ßÌC·ð²Q0lºÒI>4+B+@+ ñê¼'	}$D5[šZ3ÞAô¹
          “æ‚=M'i' Êº ¶Š»’²F
          `‚ÖbÃI„i€F?È]E­›N%²¨%:1 VŽ-;	pt!?¼ûGH‘£@®<Ü”’*‚$—XºuÏŒáNBdÓ±~ëE$f Ë‚(‹cõ‹+†h:!)3^X4®oi¿—-£#
          Ž×æ9á‘[(MÑT–:—{¡,Nß½¹
          xPÅ0ŸXj/;WKowœ§+•[û3DˆY1ùtÞÒY
          ±ô–)èZzy÷£c’¨Ô²Ô4‘ *J’šM¯¥cÂ…2! ²ÆŠ¤RN«R%‰T…,IK—â&K‚ô:)Œ'þ:½¾£Àú·2ûR-§Yé±³Oçð5Ç7Ýv‡“³‹ë»î¹?B·K?žÉëCx wu
          û=ï±»]ØC=æwÂ?à[¡«Ë’Cb"Y®p߈—€Îü1pßÕRÅJ²ŠÆûöEISŠ®L…Jå&«œeøÄÄÒÆÆQ­¶®f\p]¨¾¢[É9ï…Dèöy(ø£ž[ãF"Ǐâí_’¨ƒ$AR$CrÅJ¡8±Š—R	â”(•’¤V²4J‘V©Ò)Mz¥+C™2ÐeÝ+a±d’iü?¦U9fÜ>%(
          3KFeÉDF¥*œ™-³²eÑå Ï\ÎƍUó”ËE—ta5jžÓqòdS¾ìš‡¨€Çåe!{(âDê©I*Å/|¤
          '.踵H-&È~BˆIð}`4^½Å!µ~.쾯Ýõ rÄ%Žk¯÷¶¢—´pÒÿï;ÏøË́o¤é iXë¢}„Âê*n“Iúz¯©«¼Ö_åî½åôMS7ß~k•õ—b£"¼êmO,\ôË¿‘uúMÞÈz8gµ0¡L¤²c;±S;³s»°K»Z§«’*…ÐK;á$;·»´«“ôÝ_C~ŠÛsœ3¤“Z™[zðúMÜDÙqÿ¢oçûÝQÙqú¡ðÈ7s£[¶³Z'€þOIýq‚b	´]z¯•ë\ɦ?ªƒžŸ½P•¡w ¤}’\»«wº[ÐEi:›PìYð¾YºÙqۛ€±FJ"pŸç¿tj‡ëf†c¬P3ÏhÍNYûsŠñéT£DTcŽîFYü4Í7Ìós=?ìå¡l}ü‡RK9×íºr«ÈŽ|‚ˆ½ŒiâQ֜¸³ÖÖ׉u
          Evidence
          Access-Control-Allow-Origin: *
          Solution

          Ensure that sensitive data is not available in an unauthenticated manner (using IP address white-listing, for instance).

          Configure the "Access-Control-Allow-Origin" HTTP header to a more restrictive set of domains, or remove all CORS headers entirely, to allow the web browser to enforce the Same Origin Policy (SOP) in a more restrictive manner.

  3. Risk=Low, Confidence=High (2)

    1. https://sites.wons.bt (2)

      1. Server Leaks Version Information via "Server" HTTP Response Header Field (1)
        1. GET https://sites.wons.bt/robots.txt
          Alert tags
          Alert description

          The web/application server is leaking version information via the "Server" HTTP response header. Access to such information may facilitate attackers identifying other vulnerabilities your web/application server is subject to.

          Request
          Request line and header section (238 bytes)
          GET https://sites.wons.bt/robots.txt HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          
          
          Request body (0 bytes)
          Response
          Status line and header section (675 bytes)
          HTTP/1.1 404 Not Found
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:42:55 GMT
          Content-Type: application/json
          Content-Length: 53
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-oaclCQ8M1f-x-KHc7aztyg'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          
          
          Response body (53 bytes)
          {"data":{},"message":"File not found.","status":404}
          
          Evidence
          nginx/1.18.0 (Ubuntu)
          Solution

          Ensure that your web server, application server, load balancer, etc. is configured to suppress the "Server" header or provide generic details.

      2. Strict-Transport-Security Header Not Set (1)
        1. GET https://sites.wons.bt/robots.txt
          Alert tags
          Alert description

          HTTP Strict Transport Security (HSTS) is a web security policy mechanism whereby a web server declares that complying user agents (such as a web browser) are to interact with it using only secure HTTPS connections (i.e. HTTP layered over TLS/SSL). HSTS is an IETF standards track protocol and is specified in RFC 6797.

          Request
          Request line and header section (238 bytes)
          GET https://sites.wons.bt/robots.txt HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          
          
          Request body (0 bytes)
          Response
          Status line and header section (675 bytes)
          HTTP/1.1 404 Not Found
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:42:55 GMT
          Content-Type: application/json
          Content-Length: 53
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-oaclCQ8M1f-x-KHc7aztyg'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          
          
          Response body (53 bytes)
          {"data":{},"message":"File not found.","status":404}
          
          Solution

          Ensure that your web server, application server, load balancer, etc. is configured to enforce Strict-Transport-Security.

  4. Risk=Low, Confidence=Medium (1)

    1. https://sites.wons.bt (1)

      1. Cookie Without Secure Flag (1)
        1. GET https://sites.wons.bt
          Alert tags
          Alert description

          A cookie has been set without the secure flag, which means that the cookie can be accessed via unencrypted connections.

          Request
          Request line and header section (227 bytes)
          GET https://sites.wons.bt HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          
          
          Request body (0 bytes)
          Response
          Status line and header section (805 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:42:54 GMT
          Content-Type: text/html; charset=utf-8
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-iB8Q5DnSVjWx_AOLdlto8Q'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Set-Cookie: wons_csrf=y550JyNiyw54uLkFFzWS.e2ec5c27689fa4cf2714635ce48a4a48; Path=/; Max-Age=2592000; HttpOnly; SameSite=Lax
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          content-length: 81797
          
          
          Response body (81797 bytes)
          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>WONS Sites — your website, edited like a dashboard</title>
            <meta name="description" content="A website you can keep up to date yourself. Pick a look, fill in your pages, and it is live — no domain to buy, no developer, no rebuilds.">
            
              <link rel="icon" href="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfNHZ2NmczbWVkby5wbmc&amp;s=9821682f6dcdfe2a0cd279db1dd9c9d12d0cc8dda08970ee8913adbff07f2aee">
            
            <link rel="preload" href="/fonts/Manrope-500-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-italic-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="stylesheet" href="/fonts/fonts.css">
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              (function () {
                try {
                  var t = localStorage.getItem("wons-sites-theme");
                  if (t) document.documentElement.setAttribute("data-theme", t);
                } catch (e) {}
              })();
            </script>
            <style>
              :root {
                --emerald:      #0d9d63;
                --emerald-deep: #077a4b;
                --emerald-dark: #05603a;
                --emerald-soft: #e7f6ee;
                --emerald-line: #c6e8d6;
          
                --heading:      #1d3b2c;
                --cta-bg:       #1d4d33;
                --cta-bg-hover: #266040;
                --cta-fg:       #ffffff;
          
                --canvas:    #fdfcf8;
                --surface:   #ffffff;
                --surface-2: #f2f6ef;
                --ink:       #22302a;
                --ink-2:     #435248;
                --muted:     #5f6f66;
                --faint:     #8fa096;
                --line:      #e6e9df;
                --line-soft: #eef1e8;
          
                --warn:      #b4690e;
                --warn-soft: #fdf3e4;
                --bad:       #c8372c;
                --bad-soft:  #fdeeec;
                --ok:        var(--emerald);
          
                 
                --band:       #0f100f;
                --band-2:     #171a18;
                --band-fg:    #ffffff;
                --band-muted: #9aa39e;
                --band-line:  #2a2f2c;
                --band-card:  #d5dad3;
          
                --r-xs: 8px;
                --r:    12px;
                --r-lg: 18px;
                --r-xl: 26px;
                --r-2xl: 34px;
                --r-pill: 999px;
          
                --shadow-sm: 0 1px 2px rgba(16,30,24,.05);
                --shadow:    0 1px 2px rgba(16,30,24,.04), 0 12px 28px -18px rgba(16,30,24,.24);
                --shadow-lg: 0 32px 64px -34px rgba(10,40,28,.40);
                --ring:      0 0 0 3px rgba(13,157,99,.20);
          
                --display: "Fraunces", Georgia, "Times New Roman", serif;
                --text:    "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
                --mono:    ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
          
                --maxw: min(1280px, calc(100vw - 3em));
                --nav-h: 68px;
                color-scheme: light;
              }
          
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) {
                  --emerald:      #2fc98a;
                  --emerald-deep: #21b077;
                  --emerald-dark: #8ce8bf;
                  --emerald-soft: #10281f;
                  --emerald-line: #1d4436;
                  --heading:      #eef2f0;
                  --cta-bg:       #2fc98a;
                  --cta-bg-hover: #4dd69c;
                  --cta-fg:       #06120d;
                  --canvas:    #0b0f0e;
                  --surface:   #121817;
                  --surface-2: #182120;
                  --ink:       #eef2f0;
                  --ink-2:     #c3ccc9;
                  --muted:     #97a3a0;
                  --faint:     #6a7674;
                  --line:      #222c2a;
                  --line-soft: #1a2322;
                  --warn:      #e0a55a;
                  --warn-soft: #2a2113;
                  --bad:       #f0776a;
                  --bad-soft:  #2c1613;
                  --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                  --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                  --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                  --ring:      0 0 0 3px rgba(47,201,138,.26);
                  color-scheme: dark;
                }
              }
              :root[data-theme="dark"] {
                --emerald:      #2fc98a;
                --emerald-deep: #21b077;
                --emerald-dark: #8ce8bf;
                --emerald-soft: #10281f;
                --emerald-line: #1d4436;
                --heading:      #eef2f0;
                --cta-bg:       #2fc98a;
                --cta-bg-hover: #4dd69c;
                --cta-fg:       #06120d;
                --canvas:    #0b0f0e;
                --surface:   #121817;
                --surface-2: #182120;
                --ink:       #eef2f0;
                --ink-2:     #c3ccc9;
                --muted:     #97a3a0;
                --faint:     #6a7674;
                --line:      #222c2a;
                --line-soft: #1a2322;
                --warn:      #e0a55a;
                --warn-soft: #2a2113;
                --bad:       #f0776a;
                --bad-soft:  #2c1613;
                --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                --ring:      0 0 0 3px rgba(47,201,138,.26);
                color-scheme: dark;
              }
              *, *::before, *::after { box-sizing: border-box; }
              html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
              body {
                margin: 0;
                font-family: var(--text);
                font-size: 16px; line-height: 1.6; letter-spacing: -.006em;
                color: var(--ink); background: var(--canvas);
                -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
              }
              a { color: inherit; text-decoration: none; }
              ::selection { background: var(--emerald); color: #fff; }
              img { max-width: 100%; height: auto; }
              hr { border: 0; border-top: 1px solid var(--line); margin: 2rem 0; }
          
              h1, h2 { font-family: var(--display); margin: 0 0 .6rem; }
              h3, h4 { font-family: var(--text); margin: 0 0 .6rem; }
              h1 { font-size: clamp(2.5rem, 5.4vw, 3.9rem); font-weight: 620; line-height: 1.06; letter-spacing: -.015em; color: var(--heading); }
              h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); font-weight: 600; line-height: 1.12; letter-spacing: -.012em; color: var(--heading); }
              h3 { font-size: 1.16rem; font-weight: 750; line-height: 1.25; letter-spacing: -.015em; color: var(--heading); }
              h4 { font-size: .98rem; font-weight: 750; letter-spacing: -.01em; }
          
               
              body:not(.app) h1,
              body:not(.app) h2 { font-family: var(--text); font-weight: 800; letter-spacing: -.04em; }
              body:not(.app) h1 { font-size: clamp(2.6rem, 6vw, 4.6rem); line-height: .98; }
              body:not(.app) h2 { font-size: clamp(2rem, 4.4vw, 3.4rem); line-height: 1.02; }
          
               
              body:not(.app) .d-xl,
              .d-xl { font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
                      font-size: clamp(3rem, 8.6vw, 7rem); line-height: .92; margin: 0; color: var(--heading); }
              body:not(.app) .d-lg,
              .d-lg { font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
                      font-size: clamp(2.2rem, 5vw, 3.9rem); line-height: 1; margin: 0; color: var(--heading); }
              body:not(.app) .d-thin,
              .d-thin { font-family: var(--text); font-weight: 300; letter-spacing: -.035em;
                        font-size: clamp(2rem, 5.4vw, 4.2rem); line-height: 1.04; margin: 0; color: var(--heading); }
              p  { margin: 0 0 1rem; }
              .lede { font-size: clamp(1.02rem, 1.6vw, 1.18rem); line-height: 1.55; color: var(--muted); max-width: 48ch; }
              .muted { color: var(--muted); }
              .faint { color: var(--faint); }
              .tiny  { font-size: .82rem; }
              .label {
                font-family: var(--mono); font-size: .7rem; font-weight: 500;
                letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              }
              .kicker {
                display: inline-flex; align-items: center; gap: .55rem;
                font-family: var(--mono); font-size: .71rem; font-weight: 500;
                letter-spacing: .16em; text-transform: uppercase; color: var(--emerald-deep);
              }
              .kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .6; }
              code {
                font-family: var(--mono); font-size: .85em;
                background: var(--surface-2); border: 1px solid var(--line);
                border-radius: 6px; padding: .08em .4em; color: var(--ink-2);
              }
          
              .shell {
                min-height: 100vh; display: flex; flex-direction: column;
                overflow-x: clip;
              }
              .wrap { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              .topbar {
                position: sticky; top: 0; z-index: 60; height: var(--nav-h);
                display: flex; align-items: center;
                background: color-mix(in srgb, var(--canvas) 88%, transparent);
                backdrop-filter: saturate(1.6) blur(14px); -webkit-backdrop-filter: saturate(1.6) blur(14px);
                border-bottom: 1px solid var(--line);
              }
              .topbar .bar { display: flex; align-items: center; gap: 1.4rem; width: 100%; }
          
               
              body:not(.app) .topbar {
                position: fixed; top: 0; left: 0; right: 0; height: auto;
                padding: 14px 0; background: none; border: 0;
                backdrop-filter: none; -webkit-backdrop-filter: none;
                transition: padding .25s ease;
              }
               
              body:not(.app) .topbar .bar {
                position: relative;
                padding: .5rem .55rem .5rem 1.15rem; border-radius: var(--r-pill);
                background: color-mix(in srgb, var(--surface) 92%, transparent);
                border: 1px solid var(--line); box-shadow: var(--shadow-sm);
                backdrop-filter: saturate(1.5) blur(16px); -webkit-backdrop-filter: saturate(1.5) blur(16px);
                transition: background .25s ease, border-color .25s ease, box-shadow .25s ease;
              }
          
               
              body.hero-top:not(.app) .topbar .bar {
                background: rgba(255, 255, 255, .12);
                border-color: rgba(255, 255, 255, .22);
                box-shadow: none;
              }
              body.hero-top:not(.app) .topbar .brand,
              body.hero-top:not(.app) .topbar .nav a.link,
              body.hero-top:not(.app) .topbar .nav-actions a.link { color: #fff; }
              body.hero-top:not(.app) .topbar .nav a.link:hover,
              body.hero-top:not(.app) .topbar .nav-actions a.link:hover { color: #fff; background: rgba(255,255,255,.16); }
              body.hero-top:not(.app) .topbar .icon-btn { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.24); color: #fff; }
              body.hero-top:not(.app) .topbar .icon-btn:hover { border-color: #fff; color: #fff; }
              body.hero-top:not(.app) .topbar .brand .mark { box-shadow: none; }
          
              body:not(.app) .topbar.stuck { padding: 8px 0; }
              body.hero-top:not(.app) .topbar.stuck .bar {
                background: color-mix(in srgb, var(--surface) 94%, transparent);
                border-color: var(--line); box-shadow: var(--shadow);
              }
              body.hero-top:not(.app) .topbar.stuck .brand { color: var(--heading); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link { color: var(--ink-2); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link:hover,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn { background: var(--surface); border-color: var(--line); color: var(--muted); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
          
              .brand { display: inline-flex; align-items: center; gap: .6rem; font-family: var(--text); font-weight: 800; letter-spacing: -.03em; font-size: 1.05rem; color: var(--heading); flex-shrink: 0; }
              .brand .mark {
                width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
                background: linear-gradient(145deg, var(--emerald), var(--emerald-dark));
                color: #fff; font-size: .82rem; font-weight: 800; letter-spacing: -.02em;
                box-shadow: 0 6px 14px -6px rgba(7,122,75,.7);
              }
              :root[data-theme="dark"] .brand .mark { color: #06120d; }
              .brand .mark-img { background: none; box-shadow: none; object-fit: contain; border-radius: 7px; }
              .brand .mark-dark { display: none; }
              :root[data-theme="dark"] .brand .mark-light { display: none; }
              :root[data-theme="dark"] .brand .mark-dark { display: block; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .brand .mark-light { display: none; }
                :root:not([data-theme="light"]) .brand .mark-dark { display: block; }
              }
          
              .nav { display: flex; align-items: center; justify-content: center; gap: .4rem; flex: 1; }
              .nav a.link, .nav-actions a.link {
                display: inline-flex; align-items: center; gap: .42rem;
                padding: .45rem .75rem; border-radius: var(--r-xs);
                font-size: .93rem; font-weight: 600; color: var(--ink-2);
                transition: color .15s, background .15s;
              }
              .nav a.link:hover, .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              .nav a.link.active { color: var(--heading); }
              .nav-actions { display: flex; align-items: center; gap: .45rem; flex-shrink: 0; }
          
              .icon-btn {
                display: grid; place-items: center; width: 36px; height: 36px; flex-shrink: 0;
                border: 1px solid var(--line); border-radius: var(--r-xs);
                background: var(--surface); color: var(--muted); cursor: pointer;
                font: inherit; font-size: .95rem; padding: 0;
                transition: border-color .15s, color .15s;
              }
              .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .theme-toggle .sun { display: none; } .theme-toggle .moon { display: block; }
              :root[data-theme="dark"] .theme-toggle .sun { display: block; }
              :root[data-theme="dark"] .theme-toggle .moon { display: none; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .theme-toggle .sun { display: block; }
                :root:not([data-theme="light"]) .theme-toggle .moon { display: none; }
              }
              #navToggle { display: none; }
          
              @media (max-width: 860px) {
                #navToggle { display: grid; }
                .nav-actions a.link.nav-login { display: none; }
                .nav {
                  display: none; position: absolute; top: var(--nav-h); left: 0; right: 0;
                  flex-direction: column; align-items: stretch; gap: .1rem;
                  padding: .8rem clamp(1.1rem, 4vw, 2rem) 1.2rem;
                  background: var(--surface); border-bottom: 1px solid var(--line);
                  box-shadow: var(--shadow-lg);
                }
                .topbar.open .nav { display: flex; }
          
                 
                body:not(.app) .nav {
                  top: calc(100% + .5rem); left: .25rem; right: .25rem;
                  border: 1px solid var(--line); border-radius: var(--r-lg);
                  padding: .6rem .7rem .8rem;
                }
                body.hero-top:not(.app) .topbar.open .nav a.link,
                body:not(.app) .topbar.open .nav a.link { color: var(--ink-2); }
                body.hero-top:not(.app) .topbar.open .nav a.link:hover { background: var(--surface-2); color: var(--heading); }
              }
          
               
              @media (max-width: 620px) {
                body:not(.app) .topbar .brand { font-size: 0; gap: 0; }
                body:not(.app) .topbar .brand .mark { font-size: .82rem; }
                body:not(.app) .topbar .bar { gap: .6rem; padding-left: .55rem; }
                body:not(.app) .topbar .nav-actions { gap: .35rem; }
                body:not(.app) .topbar .nav-actions .btn { padding: .5rem .85rem; font-size: .82rem; }
                body:not(.app) .icon-btn { width: 34px; height: 34px; }
              }
          
              main { flex: 1; padding: clamp(2.2rem, 5vw, 4rem) 0 clamp(3.5rem, 7vw, 5.5rem); }
               
              body:not(.app) main { padding-top: calc(var(--nav-h) + clamp(1.4rem, 4vw, 2.6rem)); }
              body.hero-top:not(.app) main { padding-top: 0; }
               
              body.hero-top:not(.app) .flash { margin-top: calc(var(--nav-h) + 1rem); }
              body.app main { padding: 0; }
              body.app .wrap { max-width: none; padding: 0; }
          
               
              .bleed { width: 100vw; margin-left: calc(50% - 50vw); }
          
              .site-footer {
                background: var(--band); color: var(--band-fg);
                padding: clamp(2.4rem, 5vw, 3.6rem) 0 1.2rem;
                overflow: hidden;
              }
              .site-footer .footer-name,
              .site-footer .footer-sub-head { color: var(--band-fg); }
              .site-footer .footer-tag,
              .site-footer .footer-sub-copy,
              .site-footer .footer-col a { color: var(--band-muted); }
              .site-footer .label { color: #6f7a75; }
              .site-footer .footer-col a:hover { color: var(--band-fg); }
              .site-footer input[type=email] {
                background: var(--band-2); border-color: var(--band-line); color: var(--band-fg);
              }
              .site-footer input[type=email]::placeholder { color: #6f7a75; }
              .site-footer .sub-btn { background: var(--emerald); color: #06120d; }
              .site-footer .sub-btn:hover { background: var(--emerald-deep); color: #fff; }
              .site-footer .footer-base { border-top-color: var(--band-line); color: #6f7a75; }
              .footer-grid {
                display: grid; grid-template-columns: 1.4fr .8fr .8fr 1.2fr; gap: 2rem;
                padding-bottom: clamp(1.4rem, 3vw, 2.2rem);
              }
              .footer-name {
                font-family: var(--text); font-weight: 800; letter-spacing: -.03em;
                font-size: 1.05rem; color: var(--heading);
              }
              .footer-tag { margin: .5rem 0 0; font-size: .88rem; color: var(--muted); max-width: 30ch; }
              .footer-col .label { display: block; margin-bottom: .7rem; }
              .footer-col a { display: block; padding: .24rem 0; font-size: .9rem; color: var(--muted); }
              .footer-col a:hover { color: var(--emerald-deep); }
              .footer-sub-head { font-size: .95rem; font-weight: 750; color: var(--heading); margin: 0 0 .35rem; }
              .footer-sub-copy { font-size: .84rem; color: var(--muted); margin: 0 0 .8rem; max-width: 32ch; }
              .footer-sub { display: flex; gap: .5rem; }
              .footer-sub input[type=email] { flex: 1; min-width: 0; }
              .footer-sub .sub-btn {
                display: grid; place-items: center; width: 46px; flex-shrink: 0;
                border: 0; border-radius: var(--r); cursor: pointer;
                background: var(--cta-bg); color: var(--cta-fg); font: inherit;
                transition: background .15s;
              }
              .footer-sub .sub-btn:hover { background: var(--cta-bg-hover); }
              .footer-base {
                display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
                border-top: 1px solid var(--line-soft); padding-top: 1.2rem;
                font-family: var(--mono); font-size: .72rem; color: var(--faint);
              }
              @media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
              @media (max-width: 520px) { .footer-grid { grid-template-columns: 1fr; gap: 1.4rem; } }
          
              .btn {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-family: var(--text); font-weight: 600; font-size: .95rem;
                line-height: 1; cursor: pointer; white-space: nowrap; text-decoration: none;
                padding: .78rem 1.3rem; border-radius: var(--r); border: 1px solid transparent;
                transition: transform .08s, filter .15s, border-color .15s, background .15s, color .15s;
              }
              .btn:active { transform: translateY(1px); }
              .btn-primary { background: var(--ink); color: var(--canvas); }
              .btn-primary:hover { filter: brightness(1.22); }
              :root[data-theme="dark"] .btn-primary { background: var(--emerald); color: #06120d; }
              .btn-accent {
                background: var(--cta-bg); color: var(--cta-fg);
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
              }
              .btn-accent:hover { background: var(--cta-bg-hover); }
              .btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line); box-shadow: var(--shadow-sm); }
              .btn-ghost:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .btn-quiet { background: transparent; color: var(--muted); padding-left: .6rem; padding-right: .6rem; }
              .btn-quiet:hover { color: var(--ink); }
              .btn-sm { padding: .5rem .85rem; font-size: .86rem; border-radius: var(--r-xs); }
              .btn-block { width: 100%; }
              .btn[disabled] { opacity: .5; cursor: not-allowed; }
          
               
              body:not(.app) .btn { border-radius: var(--r-pill); padding: .88rem 1.6rem; }
              body:not(.app) .btn-sm { padding: .55rem 1.05rem; font-size: .86rem; }
              body:not(.app) form button:not([class]) { border-radius: var(--r-pill); }
              .btn-onband { background: #fff; color: var(--band); }
              .btn-onband:hover { background: #fff; filter: brightness(.94); }
              .btn-outline-band { background: transparent; color: #fff; border-color: rgba(255,255,255,.32); }
              .btn-outline-band:hover { border-color: #fff; background: rgba(255,255,255,.08); }
          
               
              .band { position: relative; padding: clamp(3rem, 7vw, 6rem) 0; }
               
              .band-dark + .band-dark { padding-top: 0; }
              .band-dark { background: var(--band); color: var(--band-fg); }
               
              body:not(.app) .band-dark h1, body:not(.app) .band-dark h2,
              body:not(.app) .band-dark h3, body:not(.app) .band-dark .d-xl,
              body:not(.app) .band-dark .d-lg, body:not(.app) .band-dark .d-thin { color: var(--band-fg); }
              .band-dark .muted, .band-dark .lede { color: var(--band-muted); }
              .band-dark .label { color: #6f7a75; }
              .band-dark .kicker { color: var(--emerald); }
               
              .band-paper { background: var(--surface-2); color: var(--ink); }
              .band-accent { background: var(--emerald-deep); color: #fff; }
              body:not(.app) .band-accent h2, body:not(.app) .band-accent h3,
              body:not(.app) .band-accent .d-lg, body:not(.app) .band-accent .d-xl { color: #fff; }
              .band-accent .lede, .band-accent .muted { color: rgba(255,255,255,.78); }
              .band-accent .label, .band-accent .kicker { color: rgba(255,255,255,.66); }
              .band-accent .kicker::before { background: currentColor; }
              .band-inner { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              form button:not([class]) {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-weight: 600; cursor: pointer; color: var(--cta-fg); border: 0;
                background: var(--cta-bg);
                border-radius: var(--r); padding: .78rem 1.4rem;
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
                transition: background .15s, transform .08s;
              }
              form button:not([class]):hover { background: var(--cta-bg-hover); }
              form button:not([class]):active { transform: translateY(1px); }
          
              .card {
                background: var(--surface); border: 1px solid var(--line);
                border-radius: var(--r-lg); padding: 1.5rem 1.6rem; box-shadow: var(--shadow);
              }
              .card.tight { padding: 1.1rem 1.2rem; }
              .card.flush { padding: 0; overflow: hidden; }
              .panel { background: var(--surface-2); border: 1px solid var(--line-soft); border-radius: var(--r); padding: 1.1rem 1.2rem; }
              .stack > * + * { margin-top: 1.1rem; }
              .row { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
              .row-between { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
              .grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
              .grid-2 { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
              .center-narrow { max-width: 460px; margin: 0 auto; }
          
              .pill {
                display: inline-flex; align-items: center; gap: .35rem;
                font-family: var(--mono); font-size: .68rem; font-weight: 500;
                letter-spacing: .08em; text-transform: uppercase;
                padding: .26rem .6rem; border-radius: 999px;
                background: var(--surface-2); color: var(--muted); border: 1px solid var(--line);
              }
              .pill { align-self: flex-start; }
              .pill.ok   { background: var(--emerald-soft); color: var(--emerald-deep); border-color: var(--emerald-line); }
              .pill.warn { background: var(--warn-soft); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 32%, transparent); }
              .pill.bad  { background: var(--bad-soft); color: var(--bad); border-color: color-mix(in srgb, var(--bad) 30%, transparent); }
              .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
              .field { display: block; margin-bottom: 1.05rem; }
              .field > .lbl { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; font-size: .88rem; font-weight: 600; margin-bottom: .38rem; }
              .field > .lbl .hint { font-weight: 400; font-size: .8rem; color: var(--faint); }
              input[type=text], input[type=email], input[type=password], input[type=url],
              input[type=number], input[type=date], input[type=search], textarea, select {
                display: block; width: 100%; font: inherit; font-size: .95rem; color: var(--ink);
                background: var(--surface); border: 1px solid var(--line); border-radius: var(--r);
                padding: .72rem .9rem; transition: border-color .15s, box-shadow .15s;
              }
              textarea { min-height: 120px; resize: vertical; line-height: 1.55; }
              input::placeholder, textarea::placeholder { color: var(--faint); }
              input:focus, textarea:focus, select:focus { outline: 0; border-color: var(--emerald); box-shadow: var(--ring); }
              input[aria-invalid="true"], textarea[aria-invalid="true"] { border-color: var(--bad); }
              input[type=checkbox], input[type=radio] { accent-color: var(--emerald); width: auto; }
              .err { display: block; color: var(--bad); font-size: .84rem; font-weight: 500; margin-top: .35rem; }
              fieldset { border: 0; margin: 0; padding: 0; }
          
              .progress { height: 6px; border-radius: 999px; background: var(--surface-2); overflow: hidden; border: 1px solid var(--line-soft); }
              .progress > i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--emerald), var(--emerald-deep)); }
          
              .flash {
                display: flex; align-items: flex-start; gap: .6rem;
                background: var(--surface-2); color: var(--ink-2);
                border: 1px solid var(--line); border-radius: var(--r);
                padding: .8rem 1.05rem; margin-bottom: 1.4rem; font-weight: 500; font-size: .93rem;
                animation: flashIn .22s ease;
              }
              .flash::before { content: "→"; font-weight: 800; color: var(--muted); }
              .flash.warn {
                background: #fdf6e7; color: #8a5a00; border-color: #f0dcae;
              }
              :root[data-theme="dark"] .flash.warn { color: #8a5a00; }
              .flash.warn::before { content: "!"; }
              .flash.ok {
                background: #eaf7f0; color: #10633f; border-color: #bfe3d0;
              }
              :root[data-theme="dark"] .flash.ok { color: #10633f; }
              .flash.ok::before { content: "\2713"; color: #10633f; }
              .flash.error {
                background: #fdeceb; color: #8c2b22; border-color: #f3c8c4;
              }
              :root[data-theme="dark"] .flash.error { color: #8c2b22; }
              .flash.error::before { content: "\2715"; color: #8c2b22; }
              @keyframes flashIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
              .auth-centered { text-align: center; padding-top: clamp(.2rem, 2vw, 1rem); }
              .auth-centered .kicker { justify-content: center; }
              .auth-centered .lede { margin-left: auto; margin-right: auto; }
              .auth-centered .card { text-align: left; }
          
              .ticks { list-style: none; margin: 1.1rem 0; padding: 0; display: grid; gap: .55rem; font-size: .93rem; }
              .ticks li { display: flex; gap: .6rem; align-items: baseline; color: var(--ink-2); }
              .ticks li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
          
              table { width: 100%; border-collapse: collapse; }
              th, td { text-align: left; padding: .7rem .6rem; font-size: .92rem; }
              th { font-family: var(--mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--faint); font-weight: 500; border-bottom: 1px solid var(--line); }
              td { border-bottom: 1px solid var(--line-soft); }
              tr:last-child td { border-bottom: 0; }
          
              .page-head { margin-bottom: clamp(1.6rem, 3vw, 2.4rem); max-width: 58ch; }
              .page-head .kicker { margin-bottom: .9rem; }
              .backlink { display: inline-flex; align-items: center; gap: .35rem; color: var(--faint); font-size: .88rem; margin-bottom: .9rem; }
              .backlink:hover { color: var(--emerald-deep); }
          
              @media (prefers-reduced-motion: reduce) {
                *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
              }
            </style>
          <script src="/__wons/sdk/pocketbase.umd.js"></script><script src="/__wons/sdk/wons.umd.js" data-wons-global="Wons"></script></head>
          <body class=" hero-top">
            <div class="shell">
              
              <header class="topbar" id="topbar">
                <div class="wrap"><div class="bar">
                  <a class="brand" href="/">
                    
                      <img class="mark mark-img mark-light"
                           src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfamd1aGFzNnMzcC5wbmc&amp;s=3ac7de0667a74e2dd9a505b782187df00961b7c1becb2295ec58ea7be28ed09d" alt="" width="30" height="30">
                      
                        <img class="mark mark-img mark-dark" src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfZmx5MHF4YXBrOS5wbmc&amp;s=394107603c20e2e16f57f48cc71aeda97460e22e87ebcf8ec27284364a7ea208" alt="" width="30" height="30">
                      
                    
                    WONS Sites
                  </a>
                  <nav class="nav" id="nav">
                    
                      <a class="link" href="/#product">Features</a>
                    
                      <a class="link" href="/themes">Themes</a>
                    
                      <a class="link" href="/#pricing">Pricing</a>
                    
                      <a class="link" href="/docs">Docs</a>
                    
                  </nav>
                  <div class="nav-actions">
                    
                      <a class="link nav-login" href="/login">Log in</a>
                      <a class="btn btn-accent btn-sm" href="/signup">Start Free</a>
                    
                    <button class="icon-btn theme-toggle" id="themeToggle" type="button" aria-label="Toggle dark mode">
                      <svg class="moon" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <path d="M20.4 14.7A8.7 8.7 0 0 1 9.3 3.6 8.7 8.7 0 1 0 20.4 14.7Z"/>
                      </svg>
                      <svg class="sun" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <circle cx="12" cy="12" r="4.1"/>
                        <path d="M12 2.5v2.2M12 19.3v2.2M4.6 4.6l1.6 1.6M17.8 17.8l1.6 1.6M2.5 12h2.2M19.3 12h2.2M4.6 19.4l1.6-1.6M17.8 6.2l1.6-1.6"/>
                      </svg>
                    </button>
                    <button class="icon-btn" id="navToggle" type="button" aria-label="Toggle menu" aria-expanded="false">☰</button>
                  </div>
                </div></div>
              </header>
              
          
              <main>
                <div class="wrap">
                  
                    
                  
                  
          
          
          <section class="hero bleed">
            <div class="hero-art" aria-hidden="true">
              
                
                  <div class="hero-shot hs-a">
                    <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-b">
                    <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-c">
                    <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
              
            </div>
            <div class="hero-veil" aria-hidden="true"></div>
          
            <div class="hero-inner band-inner">
              <div class="hero-meta">
                
                
                <div class="hm">
                  <span class="hm-k">Plan</span>
                  <span class="hm-v">Free forever</span>
                  <span class="hm-n">No card, nothing to cancel</span>
                </div>
                
                <div class="hm">
                  <span class="hm-k">Address</span>
                  <span class="hm-v">yourname.sites.wons.bt</span>
                  <span class="hm-n">Included the moment you sign up</span>
                </div>
                
                <div class="hm hm-last">
                  <span class="hm-k">Themes</span>
                  <span class="hm-v">15 to choose from</span>
                  <span class="hm-n">Switch any time, content stays</span>
                </div>
                
              </div>
          
              <div class="hero-body">
                <h1 class="hero-title">Build a website.<br>Share your world.</h1>
                <div class="hero-foot">
                  <div class="hero-actions">
                    <a class="btn btn-accent btn-lg" href="/signup">Start free
                      <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                    </a>
                    <a class="btn btn-outline-band btn-lg" href="#looks">See the themes</a>
                  </div>
                  <p class="hero-note">
                    For shops, schools, communities, creators and small organisations.
                    No coding, and nothing to buy before you begin.
                  </p>
                </div>
              </div>
            </div>
          </section>
          
          
          <section class="section reasons" id="why">
            <h2 class="d-xl reasons-title rv">Reasons to<br>start today</h2>
            <div class="reasons-copy rv">
              <p>
                <em>A website you can keep up to date yourself.</em> Most sites go stale
                because changing one line means calling whoever built it. Here every
                part of the page is a form — <em>a rate, a menu, an opening hour, a
                photograph</em> — and the change is live on the next visit.
              </p>
              <p>
                Your content lives here. <em>Your site can stay wherever it is hosted
                today</em>, reading everything from one address.
              </p>
            </div>
          </section>
          
          
          
          <section class="section statement">
            <p class="d-thin statement-line rv">A brochure site costs<br>Nu. 40,000 – 90,000 to rebuild</p>
            <div class="range rv">
              <span class="range-a">Rebuild</span>
              <span class="range-arrow" aria-hidden="true">
                <svg viewBox="0 0 120 12" preserveAspectRatio="none"><path d="M2 6h108M104 2l7 4-7 4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
              </span>
              <span class="range-b">Free</span>
              <span class="range-tail">to start here</span>
            </div>
          </section>
          
          
          <section class="section tilt-section" id="product">
            <div class="tilt-head rv">
              <span class="kicker">Yours to change</span>
              <h2>The things that actually go out of date.</h2>
            </div>
            <div class="tilt-row" aria-label="Examples of content you edit yourself">
              
                <figure class="tilt-card ct-a">
                  <span class="tc-field">Room rate</span>
                  <span class="tc-value">Nu. 3,500 / night</span>
                  <figcaption class="tc-note">Before the season turns</figcaption>
                </figure>
              
                <figure class="tilt-card ct-b">
                  <span class="tc-field">Today&#39;s menu</span>
                  <span class="tc-value">Ema datshi, red rice</span>
                  <figcaption class="tc-note">From your phone</figcaption>
                </figure>
              
                <figure class="tilt-card ct-c">
                  <span class="tc-field">Opening hours</span>
                  <span class="tc-value">Closed for Losar</span>
                  <figcaption class="tc-note">Set it and forget it</figcaption>
                </figure>
              
                <figure class="tilt-card ct-d">
                  <span class="tc-field">Team</span>
                  <span class="tc-value">Pema — Front desk</span>
                  <figcaption class="tc-note">A new photo when someone joins</figcaption>
                </figure>
              
                <figure class="tilt-card ct-e">
                  <span class="tc-field">Tour dates</span>
                  <span class="tc-value">Mar 14 – Mar 22</span>
                  <figcaption class="tc-note">Next spring, added early</figcaption>
                </figure>
              
                <figure class="tilt-card ct-f">
                  <span class="tc-field">Notice</span>
                  <span class="tc-value">Road open again</span>
                  <figcaption class="tc-note">Across the top of every page</figcaption>
                </figure>
              
            </div>
          </section>
          
          
          <section class="band band-dark bleed" id="how">
            <div class="band-inner">
              <h2 class="d-lg steps-title">How it goes</h2>
              <p class="steps-sub">Three screens between an empty account and a site people can read.</p>
          
              <div class="steps">
                
                  <details class="step" open>
                    <summary class="step-head">
                      <span class="step-n">01</span>
                      <span class="step-kind">Sign up</span>
                      <span class="step-time">About a minute</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Create your workspace</h3>
                        <div class="step-tags">
                          <span class="step-tag">Free plan</span><span class="step-tag">No card</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">One form. An organisation name, an email and a password.</p>
                        <p class="step-body">Your workspace is created and you are taken straight into the dashboard. The email confirmation is for account recovery — it does not hold anything up.</p>
                        <a class="btn btn-accent btn-sm" href="/signup">Create a workspace</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">02</span>
                      <span class="step-kind">Fill it in</span>
                      <span class="step-time">As long as you like</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Put your content in</h3>
                        <div class="step-tags">
                          <span class="step-tag">Forms</span><span class="step-tag">Your images</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Pages, photos, contact details, opening hours — in forms, not code.</p>
                        <p class="step-body">Photographs are stripped of their location data on upload and served through links that expire, so an address in a camera&#39;s metadata never reaches the public site.</p>
                        <a class="btn btn-accent btn-sm" href="#product">See what you can change</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">03</span>
                      <span class="step-kind">Go live</span>
                      <span class="step-time">One page of instructions</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Point your site here</h3>
                        <div class="step-tags">
                          <span class="step-tag">One file</span><span class="step-tag">We help</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Use the address that comes with the account, or your own domain.</p>
                        <p class="step-body">Dashboard → Install generates one index.html or index.php for your host, with your title, description and social preview already in it. Drop it in place and the site reads everything from here.</p>
                        <a class="btn btn-accent btn-sm" href="/docs">Read the install guide</a>
                      </div>
                    </div>
                  </details>
                
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed" id="looks">
            <div class="band-inner">
              <div class="looks-head">
                <h2 class="d-lg">Start with a<br>design you love</h2>
                <div class="looks-aside">
                  <span class="looks-count">15 themes</span>
                  <p class="looks-note">
                    Every card below is the theme itself, rendering the same demo site with
                    the same code your own site would run. Nothing here is a screenshot
                    that can drift out of date.
                  </p>
                </div>
              </div>
          
              <div class="looks">
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Vantage</h3>
                      <p class="look-tag">Dark-first tech and professional services.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#2dd4bf" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#22d3ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#e7edf3" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0b0d10" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#171c22" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#vantage">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Aster</h3>
                      <p class="look-tag">Clean editorial layout for hotels, offices and organisations.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#5b3428" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#c99b3d" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#1d2422" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#f8f5ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#eae2d4" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#aster">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Verdant</h3>
                      <p class="look-tag">Dark Botanical Luxe Theme</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#c39a4e" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#e0b674" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#f0e9d8" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0d1712" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#152219" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#verdant">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
              </div>
          
              <div class="looks-foot">
                <a class="btn btn-onband" href="/themes">
                  Browse all 15 themes
                  <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                </a>
                <span class="looks-more">Switching later never touches what you wrote.</span>
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed band-tight">
            <div class="band-inner">
              <div class="feat-head">
                <h2 class="d-lg">Works with the host<br>you already have</h2>
                <a class="btn btn-onband" href="/signup">Start your site</a>
              </div>
              <div class="feats">
                
                  <div class="feat">
                    <span class="feat-n">01</span>
                    <h3 class="feat-title">Everything in one place</h3>
                    <p class="feat-body">Your pages, photos, menus, opening hours, staff and services. Change them in a form; the site shows the change on the next visit.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">02</span>
                    <h3 class="feat-title">An address, included</h3>
                    <p class="feat-body">Every site gets its own address the moment you create it, so there is nothing to buy before you begin. Bring your own domain later if you want one.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">03</span>
                    <h3 class="feat-title">Themes you can switch</h3>
                    <p class="feat-body">Change how the site looks without touching a word of what you wrote. Your colours, logo and type carry across.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">04</span>
                    <h3 class="feat-title">We help you go live</h3>
                    <p class="feat-body">Already have a domain or a host? Tell us and we will set it up with you. There is one small file to put in place, and we will walk you through it.</p>
                  </div>
                
              </div>
            </div>
          </section>
          
          
          <section class="band band-paper bleed" id="pricing">
            <div class="band-inner">
              <div class="price-head">
                <h2 class="d-lg">Start free.<br>Pay when it earns it.</h2>
                <p class="price-sub">
                  Priced against what a rebuild costs, not against what a page of HTML
                  costs. Every plan keeps the site current instead of shipping it once.
                </p>
              </div>
          
              
                <article class="plan-hero">
                  <div class="plan-hero-main">
                    <span class="plan-kicker">Free</span>
                    <p class="plan-tagline">Your site online at no cost, supported by adverts.</p>
                    <div class="plan-price">Free<span>forever</span></div>
                    <p class="plan-anchor">No money. Your pages carry adverts instead.</p>
                    <a class="btn btn-onband btn-block btn-lg" href="/signup?plan=free">Choose Free</a>
                    <p class="plan-note">No card. Nothing to cancel.</p>
                  </div>
                  <ul class="plan-list">
                    <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                  </ul>
                </article>
          
                
                  <div class="ladder-head">
                    <h3>Outgrown the adverts?</h3>
                    <p>Paid plans remove them, from Nu. 299 a year.</p>
                  </div>
                  <div class="ladder">
                    
                      <a class="ladder-item" href="/signup?plan=lifesaver">
                        <span class="ladder-name">Life Saver</span>
                        <span class="ladder-price">Nu. 299<span>per year</span></span>
                        <span class="ladder-note">Supported by local Ads</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=starter">
                        <span class="ladder-name">Starter</span>
                        <span class="ladder-price">Nu. 999<span>per year</span></span>
                        <span class="ladder-note">One site, the essentials.</span>
                      </a>
                    
                      <a class="ladder-item ladder-best" href="/signup?plan=business">
                        <span class="ladder-name">Business <em>most chosen</em></span>
                        <span class="ladder-price">Nu. 1,599<span>per year</span></span>
                        <span class="ladder-note">More space, Full analytics.</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=agency">
                        <span class="ladder-name">Agency</span>
                        <span class="ladder-price">Nu. 2,599<span>per year</span></span>
                        <span class="ladder-note">Triple pack, white-labelled.</span>
                      </a>
                    
                  </div>
          
                  <details class="compare">
                    <summary>Compare every plan in full</summary>
                    <div class="compare-grid">
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Free</span>
                          <div class="compare-price">Free<span>forever</span></div>
                          <p class="compare-anchor">No money. Your pages carry adverts instead.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=free">Choose Free</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Life Saver</span>
                          <div class="compare-price">Nu. 299<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 25 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Local adverts only</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=lifesaver">Choose Life Saver</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Starter</span>
                          <div class="compare-price">Nu. 999<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 83 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>50 MB assets</li><li>Free themes included</li><li>White-label dashboard</li><li>Email Support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=starter">Start with Starter</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Business</span>
                          <div class="compare-price">Nu. 1,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 800 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>2 sites, 2 domains</li><li>200 MB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics &#43; priority support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=business">Choose Business</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Agency</span>
                          <div class="compare-price">Nu. 2,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 866 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>3 sites, 3 domains</li><li>1 GB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=agency">Talk to us</a>
                        </div>
                      
                    </div>
                  </details>
                
              
            </div>
          </section>
          
          
          <section class="section faq-section" id="questions">
            <div class="faq-head rv">
              <h2 class="d-lg">Answering the<br>main things</h2>
              <p class="faq-sub">If yours is not here, write to us — a person in Thimphu answers.</p>
            </div>
            <div class="faq rv">
              
                <details class="qa" open>
                  <summary>
                    <span class="qa-q">Do I need to buy a domain?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. Your site gets an address the moment you create it and works straight away. If you would rather use your own domain, you can add it later without starting again — and we will help you point it here.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">I already have a website. Do I throw it away?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. If you like how it looks, it can keep its host and its address and take its content from here instead — one small file changes hands and we set that up with you. If you do not like how it looks, pick a theme.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens when I get stuck?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">You write to us and a person in Thimphu answers. Setting up a domain, moving an old site across, or a theme built for you — those are things we do, not things you are left to work out.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Can I change theme after the site is live?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Yes, and it does not touch a word of what you wrote. Content and look are stored separately: the theme is three files served from here, your content is the data behind them. Switch, look at it, switch back if you prefer the old one.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens if I stop paying?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">The site stays where it is and starts serving its own maintenance page instead of your content, and we email you every day until it is sorted. Nothing is deleted while that is going on — renew and the same pages come straight back.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Who can see the images I upload?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Only people you send to your site. Image files are not reachable by guessing a URL: the site payload carries signed links that expire, and the stored file paths are never published.</p>
                </details>
              
            </div>
          </section>
          
          
          <section class="section" id="themes">
            <div class="maker rv">
              <div>
                <span class="kicker">For designers &amp; developers <span class="pill">soon</span></span>
                <h3 class="maker-title">Build a theme and sell it here.</h3>
                <p class="maker-body">
                  Set your own price, keep most of it, withdraw from your wallet when you
                  like. Not open yet — no submissions and no date promised, but it is
                  being built.
                </p>
              </div>
            </div>
          </section>
          
          
          <section class="closing rv">
            <h2 class="d-xl closing-title">Your idea deserves<br>a beautiful home.</h2>
            <p class="closing-sub">Your content is already written — put it somewhere you can change it.</p>
            <a class="btn btn-accent btn-lg" href="/signup">Start free
              <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
            </a>
          </section>
          
          <style>
             
            .hero {
              position: relative; isolation: isolate; overflow: hidden;
              background: var(--band); color: var(--band-fg);
              min-height: min(94svh, 820px);
              display: flex; align-items: stretch;
              padding: calc(var(--nav-h) + 2.2rem) 0 clamp(2rem, 4vw, 3.2rem);
            }
            .hero-inner { display: flex; flex-direction: column; justify-content: space-between; gap: 2rem; width: 100%; }
          
             
            .hero-art { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
            .hero-shot {
              position: absolute; width: clamp(320px, 33vw, 560px); aspect-ratio: 16 / 10;
              border-radius: 20px; overflow: hidden; line-height: 0;
              box-shadow: 0 60px 120px -40px rgba(0,0,0,.9);
              border: 1px solid rgba(255,255,255,.10);
              background: var(--surface);
            }
            .hero-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .35));
              pointer-events: none;
            }
            .hs-a { right: 4%;  top: 12%; transform: rotate(4deg); }
            .hs-b { right: 27%; top: 34%; transform: rotate(-5deg); opacity: .82; }
            .hs-c { right: 12%; bottom: -6%; transform: rotate(8deg); opacity: .62; }
          
            .hero-veil {
              position: absolute; inset: 0; z-index: 1; pointer-events: none;
              background:
                linear-gradient(78deg, var(--band) 30%, rgba(15,16,15,.86) 52%, rgba(15,16,15,.42) 100%),
                linear-gradient(0deg, var(--band) 2%, rgba(15,16,15,0) 45%);
            }
            .hero-inner { position: relative; z-index: 2; }
          
            .hero-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.4rem; max-width: 760px; }
            .hm { display: flex; flex-direction: column; gap: .18rem; padding-left: 1rem; border-left: 1px solid rgba(255,255,255,.18); }
            .hm-k { font-family: var(--mono); font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.5); }
            .hm-v { font-size: 1.02rem; font-weight: 700; letter-spacing: -.02em; color: #fff; }
            .hm-n { font-size: .8rem; color: rgba(255,255,255,.55); line-height: 1.4; }
          
             
            .hero .hero-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.9rem, 8.4vw, 7.2rem); line-height: .92;
              color: #fff; margin: 0 0 1.6rem;
            }
            .hero-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; flex-wrap: wrap; }
            .hero-actions { display: flex; gap: .7rem; flex-wrap: wrap; }
            .btn-lg { padding: 1rem 1.9rem; font-size: 1rem; }
            .hero-note { margin: 0; max-width: 40ch; font-size: .92rem; line-height: 1.55; color: rgba(255,255,255,.62); }
          
            @media (max-width: 860px) {
              .hero { min-height: 0; padding-top: calc(var(--nav-h) + 1.6rem); }
              .hero-meta { grid-template-columns: 1fr 1fr; gap: 1rem; }
              .hm-last { display: none; }
              .hero-shot { width: 74vw; }
              .hs-a { right: -22%; top: 6%; opacity: .5; }
              .hs-b { right: 2%; top: 30%; opacity: .38; }
              .hs-c { display: none; }
              .hero-body { margin-top: 3.5rem; }
               
              .hero-veil {
                background:
                  linear-gradient(180deg, rgba(15,16,15,.94) 0%, rgba(15,16,15,.74) 30%, rgba(15,16,15,.93) 62%, var(--band) 92%);
              }
            }
            @media (max-width: 520px) {
              .hero-meta { grid-template-columns: 1fr; }
              .hero-actions .btn { width: 100%; }
            }
          
             
            .section { padding: clamp(3rem, 7vw, 6rem) 0 0; }
          
             
            .reasons { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(1.6rem, 5vw, 4rem); align-items: end; }
            .reasons-title { margin: 0; }
            .reasons-copy p { font-size: clamp(1rem, 1.5vw, 1.14rem); line-height: 1.55; color: var(--ink-2); margin: 0 0 1rem; }
            .reasons-copy p:last-child { margin-bottom: 0; }
            .reasons-copy em { font-style: normal; color: var(--emerald-deep); }
            :root[data-theme="dark"] .reasons-copy em { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .reasons-copy em { color: var(--emerald); } }
            @media (max-width: 900px) { .reasons { grid-template-columns: 1fr; align-items: start; } }
          
             
            .statement { text-align: center; }
            .statement-line { max-width: 22ch; margin: 0 auto; }
            .range {
              display: flex; align-items: center; justify-content: center; gap: clamp(.7rem, 2.4vw, 1.6rem);
              flex-wrap: wrap; margin-top: clamp(1.4rem, 3vw, 2.4rem);
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.8rem, 5vw, 3.6rem); line-height: 1; color: var(--emerald-deep);
            }
            :root[data-theme="dark"] .range { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .range { color: var(--emerald); } }
            .range-a { color: var(--faint); }
            .range-arrow { display: block; width: clamp(60px, 12vw, 150px); color: currentColor; }
            .range-arrow svg { display: block; width: 100%; height: 12px; }
            .range-tail {
              font-family: var(--mono); font-weight: 500; font-size: .74rem;
              letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              align-self: center;
            }
          
             
            .tilt-section { padding-top: clamp(2.2rem, 5vw, 4rem); }
            .tilt-head { max-width: 40ch; margin-bottom: clamp(1.2rem, 3vw, 2rem); }
            .tilt-head .kicker { margin-bottom: .9rem; }
             
            .tilt-row {
              display: flex; gap: clamp(.7rem, 1.6vw, 1.2rem); align-items: flex-start;
              overflow-x: auto; padding: 1.6rem .2rem 2.2rem; scrollbar-width: none;
              width: calc(100vw - (50vw - 50%)); margin-right: calc(50% - 50vw);
            }
            .tilt-row::-webkit-scrollbar { display: none; }
            .tilt-card {
              flex: 0 0 auto; width: clamp(190px, 21vw, 250px); margin: 0;
              display: flex; flex-direction: column; gap: .3rem;
              background: var(--surface); border: 1px solid var(--line);
              border-radius: var(--r-lg); padding: 1.1rem 1.15rem 1.2rem;
              box-shadow: var(--shadow);
              transition: transform .35s cubic-bezier(.2,.8,.2,1);
            }
            .tilt-card:hover { transform: rotate(0deg) translateY(-6px); }
            .ct-a { transform: rotate(-3deg); }
            .ct-b { transform: rotate(2.2deg) translateY(14px); }
            .ct-c { transform: rotate(-1.4deg) translateY(-6px); }
            .ct-d { transform: rotate(3.4deg) translateY(10px); }
            .ct-e { transform: rotate(-2.6deg); }
            .ct-f { transform: rotate(1.6deg) translateY(16px); }
            .tc-field { font-family: var(--mono); font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; color: var(--faint); }
            .tc-value { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: var(--heading); line-height: 1.25; }
            .tc-note { font-size: .8rem; color: var(--muted); margin: .35rem 0 0; line-height: 1.4; }
            @media (prefers-reduced-motion: reduce) { .tilt-card { transition: none; } }
          
             
            .band-tight { padding: clamp(2.4rem, 5vw, 4rem) 0; }
            .steps-title { margin-bottom: .6rem; }
            .steps-sub { color: var(--band-muted); margin: 0 0 clamp(1.6rem, 4vw, 2.6rem); max-width: 48ch; }
            .steps { display: grid; gap: .9rem; }
          
            .step { border-radius: var(--r-xl); }
            .step-head {
              display: flex; align-items: center; gap: 1rem; cursor: pointer; list-style: none;
              background: var(--emerald-deep); color: #fff;
              border-radius: var(--r-pill); padding: .85rem 1rem .85rem 1.5rem;
            }
            .step-head::-webkit-details-marker { display: none; }
            .step-n { font-family: var(--mono); font-size: .72rem; letter-spacing: .14em; opacity: .7; }
            .step-kind { font-size: clamp(1.05rem, 2vw, 1.45rem); font-weight: 800; letter-spacing: -.03em; }
            .step-time { margin-left: auto; font-size: .84rem; color: rgba(255,255,255,.78); }
            .step-chev {
              display: grid; place-items: center; width: 38px; height: 38px; flex-shrink: 0;
              border-radius: 50%; background: rgba(255,255,255,.18); color: #fff;
              transition: transform .25s ease;
            }
            .step:not([open]) .step-chev { transform: rotate(180deg); }
          
            .step-card {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
              gap: clamp(1.2rem, 3vw, 2.6rem);
              background: var(--band-card); color: #14170f;
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.2vw, 2.4rem);
              margin-top: .55rem;
            }
             
            .band-dark .step-card .step-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3.6vw, 2.7rem); line-height: 1.02;
              color: #14170f; margin: 0 0 1rem;
            }
            .step-tags { display: flex; flex-wrap: wrap; gap: .4rem; }
            .step-tag {
              font-family: var(--mono); font-size: .66rem; letter-spacing: .1em; text-transform: uppercase;
              background: rgba(20,23,15,.08); border: 1px solid rgba(20,23,15,.12);
              border-radius: var(--r-pill); padding: .3rem .7rem; color: #3c433a;
            }
            .step-lede { font-size: 1.02rem; font-weight: 650; color: #14170f; margin: 0 0 .6rem; letter-spacing: -.01em; }
            .step-body { font-size: .93rem; line-height: 1.6; color: #3c433a; margin: 0 0 1.2rem; }
            .step-right .btn-accent { background: #14170f; color: #fff; box-shadow: none; }
            .step-right .btn-accent:hover { background: #2c332a; }
            @media (max-width: 780px) {
              .step-card { grid-template-columns: 1fr; }
              .step-time { display: none; }
            }
          
             
            .looks-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .85fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .looks-count { font-family: var(--mono); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--emerald); }
            .looks-note { color: var(--band-muted); font-size: .92rem; line-height: 1.6; margin: .5rem 0 0; }
            .looks { display: grid; gap: clamp(.8rem, 2vw, 1.2rem); }
             
            .look {
              display: flex; flex-direction: column;
              background: var(--band-2); border-radius: var(--r-2xl); overflow: hidden;
              border: 1px solid var(--band-line);
              transition: border-color .25s ease, transform .25s ease;
            }
            .look:hover { border-color: var(--emerald); transform: translateY(-3px); }
             
            .look-shot { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--surface); }
            .look-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .3));
              pointer-events: none;
            }
            .look-swatch { line-height: 0; margin-top: .3rem; }
            .look-swatch svg { display: block; }
            .look-meta {
              background: #fff; color: #14170f; padding: clamp(1.2rem, 2.4vw, 1.7rem);
              display: flex; flex-direction: column; gap: .45rem; flex: 1;
            }
             
            .band-dark .look .look-name {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.02; color: #14170f; margin: 0;
            }
            .look-tag { margin: 0; font-size: .95rem; line-height: 1.5; color: #4b534a; max-width: 40ch; }
            .look-link {
              display: inline-flex; align-items: center; gap: .45rem; margin-top: auto; padding-top: .6rem;
              font-size: .88rem; font-weight: 700; color: var(--emerald-deep);
            }
            .look:hover .look-link svg { transform: translateX(3px); }
            .look-link svg { transition: transform .2s ease; }
            .looks-foot {
              display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap;
              margin-top: clamp(1.4rem, 3vw, 2.2rem);
            }
            .looks-more { color: var(--band-muted); font-size: .86rem; }
            @media (min-width: 760px) { .looks { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); } }
            @media (max-width: 620px) { .looks-head { grid-template-columns: 1fr; } }
          
             
            .feat-head {
              display: flex; align-items: flex-end; justify-content: space-between;
              gap: 1.4rem; flex-wrap: wrap; margin-bottom: clamp(1.6rem, 4vw, 2.6rem);
            }
            .feats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(1.2rem, 2.6vw, 2.2rem); }
            .feat { padding-top: 1.1rem; border-top: 1px solid var(--band-line); }
            .feat-n { font-family: var(--mono); font-size: .7rem; letter-spacing: .16em; color: var(--emerald); }
            .feat-title { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: #fff; margin: .7rem 0 .45rem; }
            .feat-body { font-size: .88rem; line-height: 1.6; color: var(--band-muted); margin: 0; }
            @media (max-width: 900px) { .feats { grid-template-columns: 1fr 1fr; } }
            @media (max-width: 520px) { .feats { grid-template-columns: 1fr; } }
          
             
            .price-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .price-sub { margin: 0; color: var(--muted); font-size: .98rem; line-height: 1.6; }
          
             
            .plan-hero {
              display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
              gap: clamp(1.4rem, 4vw, 3rem); align-items: start;
              background: var(--emerald-deep); color: #fff;
              border: 1px solid var(--emerald-deep);
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.4vw, 2.6rem);
              box-shadow: 0 30px 60px -34px color-mix(in srgb, var(--emerald-deep) 70%, transparent);
            }
            .plan-hero-main { display: flex; flex-direction: column; }
            .plan-kicker {
              font-family: var(--mono); font-size: .7rem; font-weight: 500;
              letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.66);
            }
            .plan-tagline { margin: .5rem 0 0; font-size: .95rem; line-height: 1.5; color: rgba(255,255,255,.86); }
            .plan-price {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.8rem, 6vw, 4.4rem); line-height: 1; margin: .7rem 0 .2rem; color: #fff;
            }
            .plan-price span { display: block; font-size: .82rem; font-weight: 500; letter-spacing: 0; color: rgba(255,255,255,.66); margin-top: .4rem; }
            .plan-anchor { margin: .3rem 0 1.2rem; font-size: .86rem; color: rgba(255,255,255,.72); }
            .plan-note { margin: .8rem 0 0; text-align: center; font-size: .8rem; color: rgba(255,255,255,.6); }
            .plan-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; font-size: .95rem; }
            .plan-list li { display: flex; gap: .6rem; align-items: baseline; color: rgba(255,255,255,.9); }
            .plan-list li::before { content: "✓"; color: #fff; font-weight: 700; font-size: .85em; flex-shrink: 0; opacity: .8; }
            @media (min-width: 900px) { .plan-hero .plan-list { grid-template-columns: 1fr 1fr; gap: .55rem 1.4rem; } }
            @media (max-width: 780px) { .plan-hero, .price-head { grid-template-columns: 1fr; } }
          
            .ladder-head { margin: clamp(2rem, 4.5vw, 3rem) 0 .9rem; }
            .ladder-head h3 { font-size: 1.15rem; margin: 0; color: var(--heading); }
            .ladder-head p { margin: .2rem 0 0; font-size: .88rem; color: var(--muted); }
            .ladder { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: .7rem; }
            .ladder-item {
              display: grid; gap: .2rem; padding: 1rem 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg);
              background: var(--surface); transition: border-color .18s ease, transform .18s ease;
            }
            .ladder-item:hover { border-color: var(--emerald); transform: translateY(-2px); }
            .ladder-best { border-color: var(--emerald); }
            .ladder-name { font-weight: 750; font-size: .95rem; color: var(--heading); }
            .ladder-name em {
              font-style: normal; font-family: var(--mono); font-size: .6rem; letter-spacing: .09em;
              text-transform: uppercase; color: var(--emerald-deep); margin-left: .3rem;
            }
            .ladder-price { font-family: var(--text); font-weight: 800; font-size: 1.25rem; letter-spacing: -.03em; color: var(--heading); }
            .ladder-price span { font-weight: 500; font-size: .74rem; letter-spacing: 0; color: var(--faint); margin-left: .35rem; }
            .ladder-note { font-size: .82rem; line-height: 1.45; color: var(--muted); }
          
            .compare { margin-top: 1.4rem; }
            .compare summary {
              cursor: pointer; font-size: .9rem; font-weight: 700; color: var(--emerald-deep);
              padding: .6rem 0; list-style: none;
            }
            .compare summary::-webkit-details-marker { display: none; }
            .compare summary::before { content: "+ "; font-family: var(--mono); }
            .compare[open] summary::before { content: "− "; }
            .compare-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .8rem; margin-top: .9rem; }
            .compare-col {
              display: flex; flex-direction: column; padding: 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface);
            }
            .compare-price { font-family: var(--text); font-weight: 800; font-size: 1.6rem; letter-spacing: -.035em; color: var(--heading); margin-top: .4rem; }
            .compare-price span { display: block; font-size: .74rem; font-weight: 500; letter-spacing: 0; color: var(--faint); margin-top: .2rem; }
            .compare-anchor { margin: .4rem 0 .7rem; font-size: .82rem; color: var(--muted); }
             
            .compare-col .plan-list li { color: var(--ink-2); }
            .compare-col .plan-list li::before { color: var(--emerald); opacity: 1; }
            .compare-col .plan-kicker { color: var(--faint); }
            .compare-col .plan-list { margin-bottom: 1rem; font-size: .86rem; }
            .compare-col .btn { margin-top: auto; }
          
             
            .faq-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1rem, 4vw, 3rem); align-items: end; margin-bottom: clamp(1.4rem, 3vw, 2.2rem);
            }
            .faq-sub { margin: 0; color: var(--muted); }
            .faq { border-top: 1px solid var(--line); }
            .qa { border-bottom: 1px solid var(--line); }
            .qa summary {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              cursor: pointer; list-style: none; padding: 1.3rem 0;
            }
            .qa summary::-webkit-details-marker { display: none; }
            .qa-q { font-size: clamp(1rem, 1.8vw, 1.18rem); font-weight: 750; letter-spacing: -.02em; color: var(--heading); }
            .qa-sign {
              position: relative; flex-shrink: 0; width: 34px; height: 34px; border-radius: 50%;
              border: 1px solid var(--line); background: var(--surface);
              transition: border-color .2s ease, background .2s ease;
            }
            .qa-sign::before, .qa-sign::after {
              content: ""; position: absolute; left: 50%; top: 50%; background: var(--ink-2);
              transform: translate(-50%, -50%); transition: opacity .2s ease;
            }
            .qa-sign::before { width: 13px; height: 1.6px; }
            .qa-sign::after { width: 1.6px; height: 13px; }
            .qa[open] .qa-sign { border-color: var(--emerald); background: var(--emerald-soft); }
            .qa[open] .qa-sign::after { opacity: 0; }
            .qa[open] .qa-sign::before { background: var(--emerald-deep); }
            .qa:hover .qa-sign { border-color: var(--emerald); }
            .qa-a { margin: 0 0 1.4rem; color: var(--muted); max-width: 74ch; line-height: 1.6; }
            @media (max-width: 780px) { .faq-head { grid-template-columns: 1fr; align-items: start; } }
          
             
            .maker {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              flex-wrap: wrap; padding: clamp(1.2rem, 3vw, 1.8rem);
              border: 1px dashed var(--line); border-radius: var(--r-lg); background: var(--surface-2);
            }
            .maker-title { margin: .55rem 0 .3rem; font-size: 1.2rem; }
            .maker-body { margin: 0; max-width: 56ch; font-size: .88rem; color: var(--muted); }
          
             
            .closing { text-align: center; padding: clamp(3.4rem, 8vw, 6.5rem) 0 clamp(1rem, 3vw, 2rem); }
            .closing-title { margin: 0 auto; max-width: 18ch; }
            .closing-sub { margin: 1.1rem auto 1.9rem; max-width: 46ch; color: var(--muted); font-size: 1.02rem; }
          
             
            html.rv-on .rv { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s ease; }
            html.rv-on .rv.in { opacity: 1; transform: none; }
            @media (prefers-reduced-motion: reduce) {
              html.rv-on .rv { opacity: 1; transform: none; transition: none; }
            }
          </style>
          
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
            
            
            (function () {
              if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
              if (!("IntersectionObserver" in window)) return;
              document.documentElement.classList.add("rv-on");
              var io = new IntersectionObserver(function (entries) {
                entries.forEach(function (entry) {
                  if (entry.isIntersecting) {
                    entry.target.classList.add("in");
                    io.unobserve(entry.target);
                  }
                });
              }, { rootMargin: "0px 0px -8% 0px", threshold: 0.08 });
              document.querySelectorAll(".rv").forEach(function (el) { io.observe(el); });
            })();
          
            
            
            
            
            
            (function () {
              var PREVIEW_WIDTH = 1280;
              var boxes = document.querySelectorAll(".look-shot, .hero-shot");
              function fit() {
                boxes.forEach(function (box) {
                  if (!box.querySelector(".pv")) return;
                  box.style.setProperty("--pv", box.clientWidth / PREVIEW_WIDTH);
                });
              }
              fit();
              window.addEventListener("resize", fit, { passive: true });
              if ("ResizeObserver" in window) {
                var ro = new ResizeObserver(fit);
                boxes.forEach(function (box) { ro.observe(box); });
              }
            })();
          
            
            
            
            (function () {
              var steps = Array.prototype.slice.call(document.querySelectorAll(".steps .step"));
              steps.forEach(function (step) {
                step.addEventListener("toggle", function () {
                  if (!step.open) return;
                  steps.forEach(function (other) { if (other !== step) other.open = false; });
                });
              });
            })();
          </script>
          
                </div>
              </main>
          
              
              <footer class="site-footer">
                <div class="wrap footer-grid">
                  <div>
                    <span class="footer-name">WONS Sites</span>
                    <p class="footer-tag">A website you can keep up to date yourself.</p>
                  </div>
                  <nav class="footer-col" aria-label="Product">
                    <span class="label">Product</span>
                    <a href="/themes">Themes</a>
                    <a href="/#product">What you can change</a>
                    <a href="/#pricing">Pricing</a>
                    <a href="/docs">Docs</a>
                  </nav>
                  <nav class="footer-col" aria-label="Account">
                    <span class="label">Account</span>
                    <a href="/login">Log in</a>
                    <a href="/signup">Start your site</a>
                    <a href="/dashboard">Dashboard</a>
                  </nav>
                  <div>
                    <p class="footer-sub-head">Start with your email</p>
                    <p class="footer-sub-copy">It takes you straight to sign-up — free plan, no card needed.</p>
                    <form class="footer-sub" action="/signup" method="get">
                      <input type="email" name="email" placeholder="Your email address" aria-label="Email address">
                      <button class="sub-btn" type="submit" aria-label="Start your site">
                        <svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </button>
                    </form>
                  </div>
                </div>
                <div class="wrap footer-base">
                  <span>© 2026 WONS Sites. All rights reserved.</span>
                  <span>Made by WONS</span>
                </div>
              </footer>
              
            </div>
          
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              var themeToggle = document.getElementById("themeToggle");
              if (themeToggle) themeToggle.addEventListener("click", function () {
                var root = document.documentElement;
                var current = root.getAttribute("data-theme");
                var systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
                var next = (current ? current === "dark" : systemDark) ? "light" : "dark";
                root.setAttribute("data-theme", next);
                try { localStorage.setItem("wons-sites-theme", next); } catch (e) {}
              });
          
              
              var navToggle = document.getElementById("navToggle");
              var topbar = document.getElementById("topbar");
              if (navToggle && topbar) navToggle.addEventListener("click", function () {
                var open = topbar.classList.toggle("open");
                navToggle.setAttribute("aria-expanded", open ? "true" : "false");
              });
          
              
              
              
              (function () {
                var bar = document.getElementById("topbar");
                if (!bar) return;
                var mark = function () {
                  bar.classList.toggle("stuck", window.scrollY > 72);
                };
                mark();
                window.addEventListener("scroll", mark, { passive: true });
              })();
          
              (function () {
                var path = location.pathname.replace(/\/+$/, "") || "/";
                var best = null, bestLen = -1;
                document.querySelectorAll(".nav a.link").forEach(function (a) {
                  var href = (a.getAttribute("href") || "").replace(/\/+$/, "") || "/";
                  var match = href === "/" ? path === "/" : (path === href || path.indexOf(href + "/") === 0);
                  if (match && href.length > bestLen) { best = a; bestLen = href.length; }
                });
                if (best) best.classList.add("active");
              })();
            </script>
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">(function(){
          	var es = new EventSource("/__wons/dev/reload");
          	es.onmessage = function(){ location.reload() };
          	// Close the stream the instant the page is left. Without this, each
          	// navigation leaves its SSE connection lingering; a few quick clicks
          	// exhaust the browser's ~6-per-origin HTTP/1.1 connection cap and every
          	// further request (including the next page) stalls until the stale
          	// streams time out. Closing on pagehide frees the slot immediately.
          	window.addEventListener("pagehide", function(){ es.close(); });
          })()</script></body>
          </html>
          
          Parameter
          wons_csrf
          Evidence
          Set-Cookie: wons_csrf
          Solution

          Whenever a cookie contains sensitive information or is a session token, then it should always be passed using an encrypted channel. Ensure that the secure flag is set for cookies containing such sensitive information.

  5. Risk=Low, Confidence=Low (1)

    1. https://sites.wons.bt (1)

      1. Timestamp Disclosure - Unix (1)
        1. GET https://sites.wons.bt
          Alert tags
          Alert description

          A timestamp was disclosed by the application/web server. - Unix

          Other info

          1786819373, which evaluates to: 2026-08-15 18:42:53.

          Request
          Request line and header section (227 bytes)
          GET https://sites.wons.bt HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          
          
          Request body (0 bytes)
          Response
          Status line and header section (805 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:42:54 GMT
          Content-Type: text/html; charset=utf-8
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-iB8Q5DnSVjWx_AOLdlto8Q'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Set-Cookie: wons_csrf=y550JyNiyw54uLkFFzWS.e2ec5c27689fa4cf2714635ce48a4a48; Path=/; Max-Age=2592000; HttpOnly; SameSite=Lax
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          content-length: 81797
          
          
          Response body (81797 bytes)
          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>WONS Sites — your website, edited like a dashboard</title>
            <meta name="description" content="A website you can keep up to date yourself. Pick a look, fill in your pages, and it is live — no domain to buy, no developer, no rebuilds.">
            
              <link rel="icon" href="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfNHZ2NmczbWVkby5wbmc&amp;s=9821682f6dcdfe2a0cd279db1dd9c9d12d0cc8dda08970ee8913adbff07f2aee">
            
            <link rel="preload" href="/fonts/Manrope-500-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-italic-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="stylesheet" href="/fonts/fonts.css">
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              (function () {
                try {
                  var t = localStorage.getItem("wons-sites-theme");
                  if (t) document.documentElement.setAttribute("data-theme", t);
                } catch (e) {}
              })();
            </script>
            <style>
              :root {
                --emerald:      #0d9d63;
                --emerald-deep: #077a4b;
                --emerald-dark: #05603a;
                --emerald-soft: #e7f6ee;
                --emerald-line: #c6e8d6;
          
                --heading:      #1d3b2c;
                --cta-bg:       #1d4d33;
                --cta-bg-hover: #266040;
                --cta-fg:       #ffffff;
          
                --canvas:    #fdfcf8;
                --surface:   #ffffff;
                --surface-2: #f2f6ef;
                --ink:       #22302a;
                --ink-2:     #435248;
                --muted:     #5f6f66;
                --faint:     #8fa096;
                --line:      #e6e9df;
                --line-soft: #eef1e8;
          
                --warn:      #b4690e;
                --warn-soft: #fdf3e4;
                --bad:       #c8372c;
                --bad-soft:  #fdeeec;
                --ok:        var(--emerald);
          
                 
                --band:       #0f100f;
                --band-2:     #171a18;
                --band-fg:    #ffffff;
                --band-muted: #9aa39e;
                --band-line:  #2a2f2c;
                --band-card:  #d5dad3;
          
                --r-xs: 8px;
                --r:    12px;
                --r-lg: 18px;
                --r-xl: 26px;
                --r-2xl: 34px;
                --r-pill: 999px;
          
                --shadow-sm: 0 1px 2px rgba(16,30,24,.05);
                --shadow:    0 1px 2px rgba(16,30,24,.04), 0 12px 28px -18px rgba(16,30,24,.24);
                --shadow-lg: 0 32px 64px -34px rgba(10,40,28,.40);
                --ring:      0 0 0 3px rgba(13,157,99,.20);
          
                --display: "Fraunces", Georgia, "Times New Roman", serif;
                --text:    "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
                --mono:    ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
          
                --maxw: min(1280px, calc(100vw - 3em));
                --nav-h: 68px;
                color-scheme: light;
              }
          
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) {
                  --emerald:      #2fc98a;
                  --emerald-deep: #21b077;
                  --emerald-dark: #8ce8bf;
                  --emerald-soft: #10281f;
                  --emerald-line: #1d4436;
                  --heading:      #eef2f0;
                  --cta-bg:       #2fc98a;
                  --cta-bg-hover: #4dd69c;
                  --cta-fg:       #06120d;
                  --canvas:    #0b0f0e;
                  --surface:   #121817;
                  --surface-2: #182120;
                  --ink:       #eef2f0;
                  --ink-2:     #c3ccc9;
                  --muted:     #97a3a0;
                  --faint:     #6a7674;
                  --line:      #222c2a;
                  --line-soft: #1a2322;
                  --warn:      #e0a55a;
                  --warn-soft: #2a2113;
                  --bad:       #f0776a;
                  --bad-soft:  #2c1613;
                  --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                  --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                  --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                  --ring:      0 0 0 3px rgba(47,201,138,.26);
                  color-scheme: dark;
                }
              }
              :root[data-theme="dark"] {
                --emerald:      #2fc98a;
                --emerald-deep: #21b077;
                --emerald-dark: #8ce8bf;
                --emerald-soft: #10281f;
                --emerald-line: #1d4436;
                --heading:      #eef2f0;
                --cta-bg:       #2fc98a;
                --cta-bg-hover: #4dd69c;
                --cta-fg:       #06120d;
                --canvas:    #0b0f0e;
                --surface:   #121817;
                --surface-2: #182120;
                --ink:       #eef2f0;
                --ink-2:     #c3ccc9;
                --muted:     #97a3a0;
                --faint:     #6a7674;
                --line:      #222c2a;
                --line-soft: #1a2322;
                --warn:      #e0a55a;
                --warn-soft: #2a2113;
                --bad:       #f0776a;
                --bad-soft:  #2c1613;
                --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                --ring:      0 0 0 3px rgba(47,201,138,.26);
                color-scheme: dark;
              }
              *, *::before, *::after { box-sizing: border-box; }
              html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
              body {
                margin: 0;
                font-family: var(--text);
                font-size: 16px; line-height: 1.6; letter-spacing: -.006em;
                color: var(--ink); background: var(--canvas);
                -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
              }
              a { color: inherit; text-decoration: none; }
              ::selection { background: var(--emerald); color: #fff; }
              img { max-width: 100%; height: auto; }
              hr { border: 0; border-top: 1px solid var(--line); margin: 2rem 0; }
          
              h1, h2 { font-family: var(--display); margin: 0 0 .6rem; }
              h3, h4 { font-family: var(--text); margin: 0 0 .6rem; }
              h1 { font-size: clamp(2.5rem, 5.4vw, 3.9rem); font-weight: 620; line-height: 1.06; letter-spacing: -.015em; color: var(--heading); }
              h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); font-weight: 600; line-height: 1.12; letter-spacing: -.012em; color: var(--heading); }
              h3 { font-size: 1.16rem; font-weight: 750; line-height: 1.25; letter-spacing: -.015em; color: var(--heading); }
              h4 { font-size: .98rem; font-weight: 750; letter-spacing: -.01em; }
          
               
              body:not(.app) h1,
              body:not(.app) h2 { font-family: var(--text); font-weight: 800; letter-spacing: -.04em; }
              body:not(.app) h1 { font-size: clamp(2.6rem, 6vw, 4.6rem); line-height: .98; }
              body:not(.app) h2 { font-size: clamp(2rem, 4.4vw, 3.4rem); line-height: 1.02; }
          
               
              body:not(.app) .d-xl,
              .d-xl { font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
                      font-size: clamp(3rem, 8.6vw, 7rem); line-height: .92; margin: 0; color: var(--heading); }
              body:not(.app) .d-lg,
              .d-lg { font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
                      font-size: clamp(2.2rem, 5vw, 3.9rem); line-height: 1; margin: 0; color: var(--heading); }
              body:not(.app) .d-thin,
              .d-thin { font-family: var(--text); font-weight: 300; letter-spacing: -.035em;
                        font-size: clamp(2rem, 5.4vw, 4.2rem); line-height: 1.04; margin: 0; color: var(--heading); }
              p  { margin: 0 0 1rem; }
              .lede { font-size: clamp(1.02rem, 1.6vw, 1.18rem); line-height: 1.55; color: var(--muted); max-width: 48ch; }
              .muted { color: var(--muted); }
              .faint { color: var(--faint); }
              .tiny  { font-size: .82rem; }
              .label {
                font-family: var(--mono); font-size: .7rem; font-weight: 500;
                letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              }
              .kicker {
                display: inline-flex; align-items: center; gap: .55rem;
                font-family: var(--mono); font-size: .71rem; font-weight: 500;
                letter-spacing: .16em; text-transform: uppercase; color: var(--emerald-deep);
              }
              .kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .6; }
              code {
                font-family: var(--mono); font-size: .85em;
                background: var(--surface-2); border: 1px solid var(--line);
                border-radius: 6px; padding: .08em .4em; color: var(--ink-2);
              }
          
              .shell {
                min-height: 100vh; display: flex; flex-direction: column;
                overflow-x: clip;
              }
              .wrap { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              .topbar {
                position: sticky; top: 0; z-index: 60; height: var(--nav-h);
                display: flex; align-items: center;
                background: color-mix(in srgb, var(--canvas) 88%, transparent);
                backdrop-filter: saturate(1.6) blur(14px); -webkit-backdrop-filter: saturate(1.6) blur(14px);
                border-bottom: 1px solid var(--line);
              }
              .topbar .bar { display: flex; align-items: center; gap: 1.4rem; width: 100%; }
          
               
              body:not(.app) .topbar {
                position: fixed; top: 0; left: 0; right: 0; height: auto;
                padding: 14px 0; background: none; border: 0;
                backdrop-filter: none; -webkit-backdrop-filter: none;
                transition: padding .25s ease;
              }
               
              body:not(.app) .topbar .bar {
                position: relative;
                padding: .5rem .55rem .5rem 1.15rem; border-radius: var(--r-pill);
                background: color-mix(in srgb, var(--surface) 92%, transparent);
                border: 1px solid var(--line); box-shadow: var(--shadow-sm);
                backdrop-filter: saturate(1.5) blur(16px); -webkit-backdrop-filter: saturate(1.5) blur(16px);
                transition: background .25s ease, border-color .25s ease, box-shadow .25s ease;
              }
          
               
              body.hero-top:not(.app) .topbar .bar {
                background: rgba(255, 255, 255, .12);
                border-color: rgba(255, 255, 255, .22);
                box-shadow: none;
              }
              body.hero-top:not(.app) .topbar .brand,
              body.hero-top:not(.app) .topbar .nav a.link,
              body.hero-top:not(.app) .topbar .nav-actions a.link { color: #fff; }
              body.hero-top:not(.app) .topbar .nav a.link:hover,
              body.hero-top:not(.app) .topbar .nav-actions a.link:hover { color: #fff; background: rgba(255,255,255,.16); }
              body.hero-top:not(.app) .topbar .icon-btn { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.24); color: #fff; }
              body.hero-top:not(.app) .topbar .icon-btn:hover { border-color: #fff; color: #fff; }
              body.hero-top:not(.app) .topbar .brand .mark { box-shadow: none; }
          
              body:not(.app) .topbar.stuck { padding: 8px 0; }
              body.hero-top:not(.app) .topbar.stuck .bar {
                background: color-mix(in srgb, var(--surface) 94%, transparent);
                border-color: var(--line); box-shadow: var(--shadow);
              }
              body.hero-top:not(.app) .topbar.stuck .brand { color: var(--heading); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link { color: var(--ink-2); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link:hover,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn { background: var(--surface); border-color: var(--line); color: var(--muted); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
          
              .brand { display: inline-flex; align-items: center; gap: .6rem; font-family: var(--text); font-weight: 800; letter-spacing: -.03em; font-size: 1.05rem; color: var(--heading); flex-shrink: 0; }
              .brand .mark {
                width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
                background: linear-gradient(145deg, var(--emerald), var(--emerald-dark));
                color: #fff; font-size: .82rem; font-weight: 800; letter-spacing: -.02em;
                box-shadow: 0 6px 14px -6px rgba(7,122,75,.7);
              }
              :root[data-theme="dark"] .brand .mark { color: #06120d; }
              .brand .mark-img { background: none; box-shadow: none; object-fit: contain; border-radius: 7px; }
              .brand .mark-dark { display: none; }
              :root[data-theme="dark"] .brand .mark-light { display: none; }
              :root[data-theme="dark"] .brand .mark-dark { display: block; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .brand .mark-light { display: none; }
                :root:not([data-theme="light"]) .brand .mark-dark { display: block; }
              }
          
              .nav { display: flex; align-items: center; justify-content: center; gap: .4rem; flex: 1; }
              .nav a.link, .nav-actions a.link {
                display: inline-flex; align-items: center; gap: .42rem;
                padding: .45rem .75rem; border-radius: var(--r-xs);
                font-size: .93rem; font-weight: 600; color: var(--ink-2);
                transition: color .15s, background .15s;
              }
              .nav a.link:hover, .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              .nav a.link.active { color: var(--heading); }
              .nav-actions { display: flex; align-items: center; gap: .45rem; flex-shrink: 0; }
          
              .icon-btn {
                display: grid; place-items: center; width: 36px; height: 36px; flex-shrink: 0;
                border: 1px solid var(--line); border-radius: var(--r-xs);
                background: var(--surface); color: var(--muted); cursor: pointer;
                font: inherit; font-size: .95rem; padding: 0;
                transition: border-color .15s, color .15s;
              }
              .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .theme-toggle .sun { display: none; } .theme-toggle .moon { display: block; }
              :root[data-theme="dark"] .theme-toggle .sun { display: block; }
              :root[data-theme="dark"] .theme-toggle .moon { display: none; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .theme-toggle .sun { display: block; }
                :root:not([data-theme="light"]) .theme-toggle .moon { display: none; }
              }
              #navToggle { display: none; }
          
              @media (max-width: 860px) {
                #navToggle { display: grid; }
                .nav-actions a.link.nav-login { display: none; }
                .nav {
                  display: none; position: absolute; top: var(--nav-h); left: 0; right: 0;
                  flex-direction: column; align-items: stretch; gap: .1rem;
                  padding: .8rem clamp(1.1rem, 4vw, 2rem) 1.2rem;
                  background: var(--surface); border-bottom: 1px solid var(--line);
                  box-shadow: var(--shadow-lg);
                }
                .topbar.open .nav { display: flex; }
          
                 
                body:not(.app) .nav {
                  top: calc(100% + .5rem); left: .25rem; right: .25rem;
                  border: 1px solid var(--line); border-radius: var(--r-lg);
                  padding: .6rem .7rem .8rem;
                }
                body.hero-top:not(.app) .topbar.open .nav a.link,
                body:not(.app) .topbar.open .nav a.link { color: var(--ink-2); }
                body.hero-top:not(.app) .topbar.open .nav a.link:hover { background: var(--surface-2); color: var(--heading); }
              }
          
               
              @media (max-width: 620px) {
                body:not(.app) .topbar .brand { font-size: 0; gap: 0; }
                body:not(.app) .topbar .brand .mark { font-size: .82rem; }
                body:not(.app) .topbar .bar { gap: .6rem; padding-left: .55rem; }
                body:not(.app) .topbar .nav-actions { gap: .35rem; }
                body:not(.app) .topbar .nav-actions .btn { padding: .5rem .85rem; font-size: .82rem; }
                body:not(.app) .icon-btn { width: 34px; height: 34px; }
              }
          
              main { flex: 1; padding: clamp(2.2rem, 5vw, 4rem) 0 clamp(3.5rem, 7vw, 5.5rem); }
               
              body:not(.app) main { padding-top: calc(var(--nav-h) + clamp(1.4rem, 4vw, 2.6rem)); }
              body.hero-top:not(.app) main { padding-top: 0; }
               
              body.hero-top:not(.app) .flash { margin-top: calc(var(--nav-h) + 1rem); }
              body.app main { padding: 0; }
              body.app .wrap { max-width: none; padding: 0; }
          
               
              .bleed { width: 100vw; margin-left: calc(50% - 50vw); }
          
              .site-footer {
                background: var(--band); color: var(--band-fg);
                padding: clamp(2.4rem, 5vw, 3.6rem) 0 1.2rem;
                overflow: hidden;
              }
              .site-footer .footer-name,
              .site-footer .footer-sub-head { color: var(--band-fg); }
              .site-footer .footer-tag,
              .site-footer .footer-sub-copy,
              .site-footer .footer-col a { color: var(--band-muted); }
              .site-footer .label { color: #6f7a75; }
              .site-footer .footer-col a:hover { color: var(--band-fg); }
              .site-footer input[type=email] {
                background: var(--band-2); border-color: var(--band-line); color: var(--band-fg);
              }
              .site-footer input[type=email]::placeholder { color: #6f7a75; }
              .site-footer .sub-btn { background: var(--emerald); color: #06120d; }
              .site-footer .sub-btn:hover { background: var(--emerald-deep); color: #fff; }
              .site-footer .footer-base { border-top-color: var(--band-line); color: #6f7a75; }
              .footer-grid {
                display: grid; grid-template-columns: 1.4fr .8fr .8fr 1.2fr; gap: 2rem;
                padding-bottom: clamp(1.4rem, 3vw, 2.2rem);
              }
              .footer-name {
                font-family: var(--text); font-weight: 800; letter-spacing: -.03em;
                font-size: 1.05rem; color: var(--heading);
              }
              .footer-tag { margin: .5rem 0 0; font-size: .88rem; color: var(--muted); max-width: 30ch; }
              .footer-col .label { display: block; margin-bottom: .7rem; }
              .footer-col a { display: block; padding: .24rem 0; font-size: .9rem; color: var(--muted); }
              .footer-col a:hover { color: var(--emerald-deep); }
              .footer-sub-head { font-size: .95rem; font-weight: 750; color: var(--heading); margin: 0 0 .35rem; }
              .footer-sub-copy { font-size: .84rem; color: var(--muted); margin: 0 0 .8rem; max-width: 32ch; }
              .footer-sub { display: flex; gap: .5rem; }
              .footer-sub input[type=email] { flex: 1; min-width: 0; }
              .footer-sub .sub-btn {
                display: grid; place-items: center; width: 46px; flex-shrink: 0;
                border: 0; border-radius: var(--r); cursor: pointer;
                background: var(--cta-bg); color: var(--cta-fg); font: inherit;
                transition: background .15s;
              }
              .footer-sub .sub-btn:hover { background: var(--cta-bg-hover); }
              .footer-base {
                display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
                border-top: 1px solid var(--line-soft); padding-top: 1.2rem;
                font-family: var(--mono); font-size: .72rem; color: var(--faint);
              }
              @media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
              @media (max-width: 520px) { .footer-grid { grid-template-columns: 1fr; gap: 1.4rem; } }
          
              .btn {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-family: var(--text); font-weight: 600; font-size: .95rem;
                line-height: 1; cursor: pointer; white-space: nowrap; text-decoration: none;
                padding: .78rem 1.3rem; border-radius: var(--r); border: 1px solid transparent;
                transition: transform .08s, filter .15s, border-color .15s, background .15s, color .15s;
              }
              .btn:active { transform: translateY(1px); }
              .btn-primary { background: var(--ink); color: var(--canvas); }
              .btn-primary:hover { filter: brightness(1.22); }
              :root[data-theme="dark"] .btn-primary { background: var(--emerald); color: #06120d; }
              .btn-accent {
                background: var(--cta-bg); color: var(--cta-fg);
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
              }
              .btn-accent:hover { background: var(--cta-bg-hover); }
              .btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line); box-shadow: var(--shadow-sm); }
              .btn-ghost:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .btn-quiet { background: transparent; color: var(--muted); padding-left: .6rem; padding-right: .6rem; }
              .btn-quiet:hover { color: var(--ink); }
              .btn-sm { padding: .5rem .85rem; font-size: .86rem; border-radius: var(--r-xs); }
              .btn-block { width: 100%; }
              .btn[disabled] { opacity: .5; cursor: not-allowed; }
          
               
              body:not(.app) .btn { border-radius: var(--r-pill); padding: .88rem 1.6rem; }
              body:not(.app) .btn-sm { padding: .55rem 1.05rem; font-size: .86rem; }
              body:not(.app) form button:not([class]) { border-radius: var(--r-pill); }
              .btn-onband { background: #fff; color: var(--band); }
              .btn-onband:hover { background: #fff; filter: brightness(.94); }
              .btn-outline-band { background: transparent; color: #fff; border-color: rgba(255,255,255,.32); }
              .btn-outline-band:hover { border-color: #fff; background: rgba(255,255,255,.08); }
          
               
              .band { position: relative; padding: clamp(3rem, 7vw, 6rem) 0; }
               
              .band-dark + .band-dark { padding-top: 0; }
              .band-dark { background: var(--band); color: var(--band-fg); }
               
              body:not(.app) .band-dark h1, body:not(.app) .band-dark h2,
              body:not(.app) .band-dark h3, body:not(.app) .band-dark .d-xl,
              body:not(.app) .band-dark .d-lg, body:not(.app) .band-dark .d-thin { color: var(--band-fg); }
              .band-dark .muted, .band-dark .lede { color: var(--band-muted); }
              .band-dark .label { color: #6f7a75; }
              .band-dark .kicker { color: var(--emerald); }
               
              .band-paper { background: var(--surface-2); color: var(--ink); }
              .band-accent { background: var(--emerald-deep); color: #fff; }
              body:not(.app) .band-accent h2, body:not(.app) .band-accent h3,
              body:not(.app) .band-accent .d-lg, body:not(.app) .band-accent .d-xl { color: #fff; }
              .band-accent .lede, .band-accent .muted { color: rgba(255,255,255,.78); }
              .band-accent .label, .band-accent .kicker { color: rgba(255,255,255,.66); }
              .band-accent .kicker::before { background: currentColor; }
              .band-inner { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              form button:not([class]) {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-weight: 600; cursor: pointer; color: var(--cta-fg); border: 0;
                background: var(--cta-bg);
                border-radius: var(--r); padding: .78rem 1.4rem;
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
                transition: background .15s, transform .08s;
              }
              form button:not([class]):hover { background: var(--cta-bg-hover); }
              form button:not([class]):active { transform: translateY(1px); }
          
              .card {
                background: var(--surface); border: 1px solid var(--line);
                border-radius: var(--r-lg); padding: 1.5rem 1.6rem; box-shadow: var(--shadow);
              }
              .card.tight { padding: 1.1rem 1.2rem; }
              .card.flush { padding: 0; overflow: hidden; }
              .panel { background: var(--surface-2); border: 1px solid var(--line-soft); border-radius: var(--r); padding: 1.1rem 1.2rem; }
              .stack > * + * { margin-top: 1.1rem; }
              .row { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
              .row-between { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
              .grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
              .grid-2 { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
              .center-narrow { max-width: 460px; margin: 0 auto; }
          
              .pill {
                display: inline-flex; align-items: center; gap: .35rem;
                font-family: var(--mono); font-size: .68rem; font-weight: 500;
                letter-spacing: .08em; text-transform: uppercase;
                padding: .26rem .6rem; border-radius: 999px;
                background: var(--surface-2); color: var(--muted); border: 1px solid var(--line);
              }
              .pill { align-self: flex-start; }
              .pill.ok   { background: var(--emerald-soft); color: var(--emerald-deep); border-color: var(--emerald-line); }
              .pill.warn { background: var(--warn-soft); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 32%, transparent); }
              .pill.bad  { background: var(--bad-soft); color: var(--bad); border-color: color-mix(in srgb, var(--bad) 30%, transparent); }
              .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
              .field { display: block; margin-bottom: 1.05rem; }
              .field > .lbl { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; font-size: .88rem; font-weight: 600; margin-bottom: .38rem; }
              .field > .lbl .hint { font-weight: 400; font-size: .8rem; color: var(--faint); }
              input[type=text], input[type=email], input[type=password], input[type=url],
              input[type=number], input[type=date], input[type=search], textarea, select {
                display: block; width: 100%; font: inherit; font-size: .95rem; color: var(--ink);
                background: var(--surface); border: 1px solid var(--line); border-radius: var(--r);
                padding: .72rem .9rem; transition: border-color .15s, box-shadow .15s;
              }
              textarea { min-height: 120px; resize: vertical; line-height: 1.55; }
              input::placeholder, textarea::placeholder { color: var(--faint); }
              input:focus, textarea:focus, select:focus { outline: 0; border-color: var(--emerald); box-shadow: var(--ring); }
              input[aria-invalid="true"], textarea[aria-invalid="true"] { border-color: var(--bad); }
              input[type=checkbox], input[type=radio] { accent-color: var(--emerald); width: auto; }
              .err { display: block; color: var(--bad); font-size: .84rem; font-weight: 500; margin-top: .35rem; }
              fieldset { border: 0; margin: 0; padding: 0; }
          
              .progress { height: 6px; border-radius: 999px; background: var(--surface-2); overflow: hidden; border: 1px solid var(--line-soft); }
              .progress > i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--emerald), var(--emerald-deep)); }
          
              .flash {
                display: flex; align-items: flex-start; gap: .6rem;
                background: var(--surface-2); color: var(--ink-2);
                border: 1px solid var(--line); border-radius: var(--r);
                padding: .8rem 1.05rem; margin-bottom: 1.4rem; font-weight: 500; font-size: .93rem;
                animation: flashIn .22s ease;
              }
              .flash::before { content: "→"; font-weight: 800; color: var(--muted); }
              .flash.warn {
                background: #fdf6e7; color: #8a5a00; border-color: #f0dcae;
              }
              :root[data-theme="dark"] .flash.warn { color: #8a5a00; }
              .flash.warn::before { content: "!"; }
              .flash.ok {
                background: #eaf7f0; color: #10633f; border-color: #bfe3d0;
              }
              :root[data-theme="dark"] .flash.ok { color: #10633f; }
              .flash.ok::before { content: "\2713"; color: #10633f; }
              .flash.error {
                background: #fdeceb; color: #8c2b22; border-color: #f3c8c4;
              }
              :root[data-theme="dark"] .flash.error { color: #8c2b22; }
              .flash.error::before { content: "\2715"; color: #8c2b22; }
              @keyframes flashIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
              .auth-centered { text-align: center; padding-top: clamp(.2rem, 2vw, 1rem); }
              .auth-centered .kicker { justify-content: center; }
              .auth-centered .lede { margin-left: auto; margin-right: auto; }
              .auth-centered .card { text-align: left; }
          
              .ticks { list-style: none; margin: 1.1rem 0; padding: 0; display: grid; gap: .55rem; font-size: .93rem; }
              .ticks li { display: flex; gap: .6rem; align-items: baseline; color: var(--ink-2); }
              .ticks li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
          
              table { width: 100%; border-collapse: collapse; }
              th, td { text-align: left; padding: .7rem .6rem; font-size: .92rem; }
              th { font-family: var(--mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--faint); font-weight: 500; border-bottom: 1px solid var(--line); }
              td { border-bottom: 1px solid var(--line-soft); }
              tr:last-child td { border-bottom: 0; }
          
              .page-head { margin-bottom: clamp(1.6rem, 3vw, 2.4rem); max-width: 58ch; }
              .page-head .kicker { margin-bottom: .9rem; }
              .backlink { display: inline-flex; align-items: center; gap: .35rem; color: var(--faint); font-size: .88rem; margin-bottom: .9rem; }
              .backlink:hover { color: var(--emerald-deep); }
          
              @media (prefers-reduced-motion: reduce) {
                *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
              }
            </style>
          <script src="/__wons/sdk/pocketbase.umd.js"></script><script src="/__wons/sdk/wons.umd.js" data-wons-global="Wons"></script></head>
          <body class=" hero-top">
            <div class="shell">
              
              <header class="topbar" id="topbar">
                <div class="wrap"><div class="bar">
                  <a class="brand" href="/">
                    
                      <img class="mark mark-img mark-light"
                           src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfamd1aGFzNnMzcC5wbmc&amp;s=3ac7de0667a74e2dd9a505b782187df00961b7c1becb2295ec58ea7be28ed09d" alt="" width="30" height="30">
                      
                        <img class="mark mark-img mark-dark" src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfZmx5MHF4YXBrOS5wbmc&amp;s=394107603c20e2e16f57f48cc71aeda97460e22e87ebcf8ec27284364a7ea208" alt="" width="30" height="30">
                      
                    
                    WONS Sites
                  </a>
                  <nav class="nav" id="nav">
                    
                      <a class="link" href="/#product">Features</a>
                    
                      <a class="link" href="/themes">Themes</a>
                    
                      <a class="link" href="/#pricing">Pricing</a>
                    
                      <a class="link" href="/docs">Docs</a>
                    
                  </nav>
                  <div class="nav-actions">
                    
                      <a class="link nav-login" href="/login">Log in</a>
                      <a class="btn btn-accent btn-sm" href="/signup">Start Free</a>
                    
                    <button class="icon-btn theme-toggle" id="themeToggle" type="button" aria-label="Toggle dark mode">
                      <svg class="moon" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <path d="M20.4 14.7A8.7 8.7 0 0 1 9.3 3.6 8.7 8.7 0 1 0 20.4 14.7Z"/>
                      </svg>
                      <svg class="sun" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <circle cx="12" cy="12" r="4.1"/>
                        <path d="M12 2.5v2.2M12 19.3v2.2M4.6 4.6l1.6 1.6M17.8 17.8l1.6 1.6M2.5 12h2.2M19.3 12h2.2M4.6 19.4l1.6-1.6M17.8 6.2l1.6-1.6"/>
                      </svg>
                    </button>
                    <button class="icon-btn" id="navToggle" type="button" aria-label="Toggle menu" aria-expanded="false">☰</button>
                  </div>
                </div></div>
              </header>
              
          
              <main>
                <div class="wrap">
                  
                    
                  
                  
          
          
          <section class="hero bleed">
            <div class="hero-art" aria-hidden="true">
              
                
                  <div class="hero-shot hs-a">
                    <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-b">
                    <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-c">
                    <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
              
            </div>
            <div class="hero-veil" aria-hidden="true"></div>
          
            <div class="hero-inner band-inner">
              <div class="hero-meta">
                
                
                <div class="hm">
                  <span class="hm-k">Plan</span>
                  <span class="hm-v">Free forever</span>
                  <span class="hm-n">No card, nothing to cancel</span>
                </div>
                
                <div class="hm">
                  <span class="hm-k">Address</span>
                  <span class="hm-v">yourname.sites.wons.bt</span>
                  <span class="hm-n">Included the moment you sign up</span>
                </div>
                
                <div class="hm hm-last">
                  <span class="hm-k">Themes</span>
                  <span class="hm-v">15 to choose from</span>
                  <span class="hm-n">Switch any time, content stays</span>
                </div>
                
              </div>
          
              <div class="hero-body">
                <h1 class="hero-title">Build a website.<br>Share your world.</h1>
                <div class="hero-foot">
                  <div class="hero-actions">
                    <a class="btn btn-accent btn-lg" href="/signup">Start free
                      <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                    </a>
                    <a class="btn btn-outline-band btn-lg" href="#looks">See the themes</a>
                  </div>
                  <p class="hero-note">
                    For shops, schools, communities, creators and small organisations.
                    No coding, and nothing to buy before you begin.
                  </p>
                </div>
              </div>
            </div>
          </section>
          
          
          <section class="section reasons" id="why">
            <h2 class="d-xl reasons-title rv">Reasons to<br>start today</h2>
            <div class="reasons-copy rv">
              <p>
                <em>A website you can keep up to date yourself.</em> Most sites go stale
                because changing one line means calling whoever built it. Here every
                part of the page is a form — <em>a rate, a menu, an opening hour, a
                photograph</em> — and the change is live on the next visit.
              </p>
              <p>
                Your content lives here. <em>Your site can stay wherever it is hosted
                today</em>, reading everything from one address.
              </p>
            </div>
          </section>
          
          
          
          <section class="section statement">
            <p class="d-thin statement-line rv">A brochure site costs<br>Nu. 40,000 – 90,000 to rebuild</p>
            <div class="range rv">
              <span class="range-a">Rebuild</span>
              <span class="range-arrow" aria-hidden="true">
                <svg viewBox="0 0 120 12" preserveAspectRatio="none"><path d="M2 6h108M104 2l7 4-7 4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
              </span>
              <span class="range-b">Free</span>
              <span class="range-tail">to start here</span>
            </div>
          </section>
          
          
          <section class="section tilt-section" id="product">
            <div class="tilt-head rv">
              <span class="kicker">Yours to change</span>
              <h2>The things that actually go out of date.</h2>
            </div>
            <div class="tilt-row" aria-label="Examples of content you edit yourself">
              
                <figure class="tilt-card ct-a">
                  <span class="tc-field">Room rate</span>
                  <span class="tc-value">Nu. 3,500 / night</span>
                  <figcaption class="tc-note">Before the season turns</figcaption>
                </figure>
              
                <figure class="tilt-card ct-b">
                  <span class="tc-field">Today&#39;s menu</span>
                  <span class="tc-value">Ema datshi, red rice</span>
                  <figcaption class="tc-note">From your phone</figcaption>
                </figure>
              
                <figure class="tilt-card ct-c">
                  <span class="tc-field">Opening hours</span>
                  <span class="tc-value">Closed for Losar</span>
                  <figcaption class="tc-note">Set it and forget it</figcaption>
                </figure>
              
                <figure class="tilt-card ct-d">
                  <span class="tc-field">Team</span>
                  <span class="tc-value">Pema — Front desk</span>
                  <figcaption class="tc-note">A new photo when someone joins</figcaption>
                </figure>
              
                <figure class="tilt-card ct-e">
                  <span class="tc-field">Tour dates</span>
                  <span class="tc-value">Mar 14 – Mar 22</span>
                  <figcaption class="tc-note">Next spring, added early</figcaption>
                </figure>
              
                <figure class="tilt-card ct-f">
                  <span class="tc-field">Notice</span>
                  <span class="tc-value">Road open again</span>
                  <figcaption class="tc-note">Across the top of every page</figcaption>
                </figure>
              
            </div>
          </section>
          
          
          <section class="band band-dark bleed" id="how">
            <div class="band-inner">
              <h2 class="d-lg steps-title">How it goes</h2>
              <p class="steps-sub">Three screens between an empty account and a site people can read.</p>
          
              <div class="steps">
                
                  <details class="step" open>
                    <summary class="step-head">
                      <span class="step-n">01</span>
                      <span class="step-kind">Sign up</span>
                      <span class="step-time">About a minute</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Create your workspace</h3>
                        <div class="step-tags">
                          <span class="step-tag">Free plan</span><span class="step-tag">No card</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">One form. An organisation name, an email and a password.</p>
                        <p class="step-body">Your workspace is created and you are taken straight into the dashboard. The email confirmation is for account recovery — it does not hold anything up.</p>
                        <a class="btn btn-accent btn-sm" href="/signup">Create a workspace</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">02</span>
                      <span class="step-kind">Fill it in</span>
                      <span class="step-time">As long as you like</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Put your content in</h3>
                        <div class="step-tags">
                          <span class="step-tag">Forms</span><span class="step-tag">Your images</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Pages, photos, contact details, opening hours — in forms, not code.</p>
                        <p class="step-body">Photographs are stripped of their location data on upload and served through links that expire, so an address in a camera&#39;s metadata never reaches the public site.</p>
                        <a class="btn btn-accent btn-sm" href="#product">See what you can change</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">03</span>
                      <span class="step-kind">Go live</span>
                      <span class="step-time">One page of instructions</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Point your site here</h3>
                        <div class="step-tags">
                          <span class="step-tag">One file</span><span class="step-tag">We help</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Use the address that comes with the account, or your own domain.</p>
                        <p class="step-body">Dashboard → Install generates one index.html or index.php for your host, with your title, description and social preview already in it. Drop it in place and the site reads everything from here.</p>
                        <a class="btn btn-accent btn-sm" href="/docs">Read the install guide</a>
                      </div>
                    </div>
                  </details>
                
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed" id="looks">
            <div class="band-inner">
              <div class="looks-head">
                <h2 class="d-lg">Start with a<br>design you love</h2>
                <div class="looks-aside">
                  <span class="looks-count">15 themes</span>
                  <p class="looks-note">
                    Every card below is the theme itself, rendering the same demo site with
                    the same code your own site would run. Nothing here is a screenshot
                    that can drift out of date.
                  </p>
                </div>
              </div>
          
              <div class="looks">
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Vantage</h3>
                      <p class="look-tag">Dark-first tech and professional services.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#2dd4bf" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#22d3ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#e7edf3" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0b0d10" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#171c22" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#vantage">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Aster</h3>
                      <p class="look-tag">Clean editorial layout for hotels, offices and organisations.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#5b3428" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#c99b3d" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#1d2422" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#f8f5ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#eae2d4" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#aster">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Verdant</h3>
                      <p class="look-tag">Dark Botanical Luxe Theme</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#c39a4e" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#e0b674" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#f0e9d8" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0d1712" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#152219" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#verdant">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
              </div>
          
              <div class="looks-foot">
                <a class="btn btn-onband" href="/themes">
                  Browse all 15 themes
                  <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                </a>
                <span class="looks-more">Switching later never touches what you wrote.</span>
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed band-tight">
            <div class="band-inner">
              <div class="feat-head">
                <h2 class="d-lg">Works with the host<br>you already have</h2>
                <a class="btn btn-onband" href="/signup">Start your site</a>
              </div>
              <div class="feats">
                
                  <div class="feat">
                    <span class="feat-n">01</span>
                    <h3 class="feat-title">Everything in one place</h3>
                    <p class="feat-body">Your pages, photos, menus, opening hours, staff and services. Change them in a form; the site shows the change on the next visit.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">02</span>
                    <h3 class="feat-title">An address, included</h3>
                    <p class="feat-body">Every site gets its own address the moment you create it, so there is nothing to buy before you begin. Bring your own domain later if you want one.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">03</span>
                    <h3 class="feat-title">Themes you can switch</h3>
                    <p class="feat-body">Change how the site looks without touching a word of what you wrote. Your colours, logo and type carry across.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">04</span>
                    <h3 class="feat-title">We help you go live</h3>
                    <p class="feat-body">Already have a domain or a host? Tell us and we will set it up with you. There is one small file to put in place, and we will walk you through it.</p>
                  </div>
                
              </div>
            </div>
          </section>
          
          
          <section class="band band-paper bleed" id="pricing">
            <div class="band-inner">
              <div class="price-head">
                <h2 class="d-lg">Start free.<br>Pay when it earns it.</h2>
                <p class="price-sub">
                  Priced against what a rebuild costs, not against what a page of HTML
                  costs. Every plan keeps the site current instead of shipping it once.
                </p>
              </div>
          
              
                <article class="plan-hero">
                  <div class="plan-hero-main">
                    <span class="plan-kicker">Free</span>
                    <p class="plan-tagline">Your site online at no cost, supported by adverts.</p>
                    <div class="plan-price">Free<span>forever</span></div>
                    <p class="plan-anchor">No money. Your pages carry adverts instead.</p>
                    <a class="btn btn-onband btn-block btn-lg" href="/signup?plan=free">Choose Free</a>
                    <p class="plan-note">No card. Nothing to cancel.</p>
                  </div>
                  <ul class="plan-list">
                    <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                  </ul>
                </article>
          
                
                  <div class="ladder-head">
                    <h3>Outgrown the adverts?</h3>
                    <p>Paid plans remove them, from Nu. 299 a year.</p>
                  </div>
                  <div class="ladder">
                    
                      <a class="ladder-item" href="/signup?plan=lifesaver">
                        <span class="ladder-name">Life Saver</span>
                        <span class="ladder-price">Nu. 299<span>per year</span></span>
                        <span class="ladder-note">Supported by local Ads</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=starter">
                        <span class="ladder-name">Starter</span>
                        <span class="ladder-price">Nu. 999<span>per year</span></span>
                        <span class="ladder-note">One site, the essentials.</span>
                      </a>
                    
                      <a class="ladder-item ladder-best" href="/signup?plan=business">
                        <span class="ladder-name">Business <em>most chosen</em></span>
                        <span class="ladder-price">Nu. 1,599<span>per year</span></span>
                        <span class="ladder-note">More space, Full analytics.</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=agency">
                        <span class="ladder-name">Agency</span>
                        <span class="ladder-price">Nu. 2,599<span>per year</span></span>
                        <span class="ladder-note">Triple pack, white-labelled.</span>
                      </a>
                    
                  </div>
          
                  <details class="compare">
                    <summary>Compare every plan in full</summary>
                    <div class="compare-grid">
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Free</span>
                          <div class="compare-price">Free<span>forever</span></div>
                          <p class="compare-anchor">No money. Your pages carry adverts instead.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=free">Choose Free</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Life Saver</span>
                          <div class="compare-price">Nu. 299<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 25 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Local adverts only</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=lifesaver">Choose Life Saver</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Starter</span>
                          <div class="compare-price">Nu. 999<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 83 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>50 MB assets</li><li>Free themes included</li><li>White-label dashboard</li><li>Email Support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=starter">Start with Starter</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Business</span>
                          <div class="compare-price">Nu. 1,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 800 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>2 sites, 2 domains</li><li>200 MB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics &#43; priority support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=business">Choose Business</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Agency</span>
                          <div class="compare-price">Nu. 2,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 866 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>3 sites, 3 domains</li><li>1 GB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=agency">Talk to us</a>
                        </div>
                      
                    </div>
                  </details>
                
              
            </div>
          </section>
          
          
          <section class="section faq-section" id="questions">
            <div class="faq-head rv">
              <h2 class="d-lg">Answering the<br>main things</h2>
              <p class="faq-sub">If yours is not here, write to us — a person in Thimphu answers.</p>
            </div>
            <div class="faq rv">
              
                <details class="qa" open>
                  <summary>
                    <span class="qa-q">Do I need to buy a domain?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. Your site gets an address the moment you create it and works straight away. If you would rather use your own domain, you can add it later without starting again — and we will help you point it here.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">I already have a website. Do I throw it away?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. If you like how it looks, it can keep its host and its address and take its content from here instead — one small file changes hands and we set that up with you. If you do not like how it looks, pick a theme.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens when I get stuck?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">You write to us and a person in Thimphu answers. Setting up a domain, moving an old site across, or a theme built for you — those are things we do, not things you are left to work out.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Can I change theme after the site is live?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Yes, and it does not touch a word of what you wrote. Content and look are stored separately: the theme is three files served from here, your content is the data behind them. Switch, look at it, switch back if you prefer the old one.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens if I stop paying?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">The site stays where it is and starts serving its own maintenance page instead of your content, and we email you every day until it is sorted. Nothing is deleted while that is going on — renew and the same pages come straight back.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Who can see the images I upload?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Only people you send to your site. Image files are not reachable by guessing a URL: the site payload carries signed links that expire, and the stored file paths are never published.</p>
                </details>
              
            </div>
          </section>
          
          
          <section class="section" id="themes">
            <div class="maker rv">
              <div>
                <span class="kicker">For designers &amp; developers <span class="pill">soon</span></span>
                <h3 class="maker-title">Build a theme and sell it here.</h3>
                <p class="maker-body">
                  Set your own price, keep most of it, withdraw from your wallet when you
                  like. Not open yet — no submissions and no date promised, but it is
                  being built.
                </p>
              </div>
            </div>
          </section>
          
          
          <section class="closing rv">
            <h2 class="d-xl closing-title">Your idea deserves<br>a beautiful home.</h2>
            <p class="closing-sub">Your content is already written — put it somewhere you can change it.</p>
            <a class="btn btn-accent btn-lg" href="/signup">Start free
              <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
            </a>
          </section>
          
          <style>
             
            .hero {
              position: relative; isolation: isolate; overflow: hidden;
              background: var(--band); color: var(--band-fg);
              min-height: min(94svh, 820px);
              display: flex; align-items: stretch;
              padding: calc(var(--nav-h) + 2.2rem) 0 clamp(2rem, 4vw, 3.2rem);
            }
            .hero-inner { display: flex; flex-direction: column; justify-content: space-between; gap: 2rem; width: 100%; }
          
             
            .hero-art { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
            .hero-shot {
              position: absolute; width: clamp(320px, 33vw, 560px); aspect-ratio: 16 / 10;
              border-radius: 20px; overflow: hidden; line-height: 0;
              box-shadow: 0 60px 120px -40px rgba(0,0,0,.9);
              border: 1px solid rgba(255,255,255,.10);
              background: var(--surface);
            }
            .hero-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .35));
              pointer-events: none;
            }
            .hs-a { right: 4%;  top: 12%; transform: rotate(4deg); }
            .hs-b { right: 27%; top: 34%; transform: rotate(-5deg); opacity: .82; }
            .hs-c { right: 12%; bottom: -6%; transform: rotate(8deg); opacity: .62; }
          
            .hero-veil {
              position: absolute; inset: 0; z-index: 1; pointer-events: none;
              background:
                linear-gradient(78deg, var(--band) 30%, rgba(15,16,15,.86) 52%, rgba(15,16,15,.42) 100%),
                linear-gradient(0deg, var(--band) 2%, rgba(15,16,15,0) 45%);
            }
            .hero-inner { position: relative; z-index: 2; }
          
            .hero-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.4rem; max-width: 760px; }
            .hm { display: flex; flex-direction: column; gap: .18rem; padding-left: 1rem; border-left: 1px solid rgba(255,255,255,.18); }
            .hm-k { font-family: var(--mono); font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.5); }
            .hm-v { font-size: 1.02rem; font-weight: 700; letter-spacing: -.02em; color: #fff; }
            .hm-n { font-size: .8rem; color: rgba(255,255,255,.55); line-height: 1.4; }
          
             
            .hero .hero-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.9rem, 8.4vw, 7.2rem); line-height: .92;
              color: #fff; margin: 0 0 1.6rem;
            }
            .hero-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; flex-wrap: wrap; }
            .hero-actions { display: flex; gap: .7rem; flex-wrap: wrap; }
            .btn-lg { padding: 1rem 1.9rem; font-size: 1rem; }
            .hero-note { margin: 0; max-width: 40ch; font-size: .92rem; line-height: 1.55; color: rgba(255,255,255,.62); }
          
            @media (max-width: 860px) {
              .hero { min-height: 0; padding-top: calc(var(--nav-h) + 1.6rem); }
              .hero-meta { grid-template-columns: 1fr 1fr; gap: 1rem; }
              .hm-last { display: none; }
              .hero-shot { width: 74vw; }
              .hs-a { right: -22%; top: 6%; opacity: .5; }
              .hs-b { right: 2%; top: 30%; opacity: .38; }
              .hs-c { display: none; }
              .hero-body { margin-top: 3.5rem; }
               
              .hero-veil {
                background:
                  linear-gradient(180deg, rgba(15,16,15,.94) 0%, rgba(15,16,15,.74) 30%, rgba(15,16,15,.93) 62%, var(--band) 92%);
              }
            }
            @media (max-width: 520px) {
              .hero-meta { grid-template-columns: 1fr; }
              .hero-actions .btn { width: 100%; }
            }
          
             
            .section { padding: clamp(3rem, 7vw, 6rem) 0 0; }
          
             
            .reasons { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(1.6rem, 5vw, 4rem); align-items: end; }
            .reasons-title { margin: 0; }
            .reasons-copy p { font-size: clamp(1rem, 1.5vw, 1.14rem); line-height: 1.55; color: var(--ink-2); margin: 0 0 1rem; }
            .reasons-copy p:last-child { margin-bottom: 0; }
            .reasons-copy em { font-style: normal; color: var(--emerald-deep); }
            :root[data-theme="dark"] .reasons-copy em { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .reasons-copy em { color: var(--emerald); } }
            @media (max-width: 900px) { .reasons { grid-template-columns: 1fr; align-items: start; } }
          
             
            .statement { text-align: center; }
            .statement-line { max-width: 22ch; margin: 0 auto; }
            .range {
              display: flex; align-items: center; justify-content: center; gap: clamp(.7rem, 2.4vw, 1.6rem);
              flex-wrap: wrap; margin-top: clamp(1.4rem, 3vw, 2.4rem);
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.8rem, 5vw, 3.6rem); line-height: 1; color: var(--emerald-deep);
            }
            :root[data-theme="dark"] .range { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .range { color: var(--emerald); } }
            .range-a { color: var(--faint); }
            .range-arrow { display: block; width: clamp(60px, 12vw, 150px); color: currentColor; }
            .range-arrow svg { display: block; width: 100%; height: 12px; }
            .range-tail {
              font-family: var(--mono); font-weight: 500; font-size: .74rem;
              letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              align-self: center;
            }
          
             
            .tilt-section { padding-top: clamp(2.2rem, 5vw, 4rem); }
            .tilt-head { max-width: 40ch; margin-bottom: clamp(1.2rem, 3vw, 2rem); }
            .tilt-head .kicker { margin-bottom: .9rem; }
             
            .tilt-row {
              display: flex; gap: clamp(.7rem, 1.6vw, 1.2rem); align-items: flex-start;
              overflow-x: auto; padding: 1.6rem .2rem 2.2rem; scrollbar-width: none;
              width: calc(100vw - (50vw - 50%)); margin-right: calc(50% - 50vw);
            }
            .tilt-row::-webkit-scrollbar { display: none; }
            .tilt-card {
              flex: 0 0 auto; width: clamp(190px, 21vw, 250px); margin: 0;
              display: flex; flex-direction: column; gap: .3rem;
              background: var(--surface); border: 1px solid var(--line);
              border-radius: var(--r-lg); padding: 1.1rem 1.15rem 1.2rem;
              box-shadow: var(--shadow);
              transition: transform .35s cubic-bezier(.2,.8,.2,1);
            }
            .tilt-card:hover { transform: rotate(0deg) translateY(-6px); }
            .ct-a { transform: rotate(-3deg); }
            .ct-b { transform: rotate(2.2deg) translateY(14px); }
            .ct-c { transform: rotate(-1.4deg) translateY(-6px); }
            .ct-d { transform: rotate(3.4deg) translateY(10px); }
            .ct-e { transform: rotate(-2.6deg); }
            .ct-f { transform: rotate(1.6deg) translateY(16px); }
            .tc-field { font-family: var(--mono); font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; color: var(--faint); }
            .tc-value { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: var(--heading); line-height: 1.25; }
            .tc-note { font-size: .8rem; color: var(--muted); margin: .35rem 0 0; line-height: 1.4; }
            @media (prefers-reduced-motion: reduce) { .tilt-card { transition: none; } }
          
             
            .band-tight { padding: clamp(2.4rem, 5vw, 4rem) 0; }
            .steps-title { margin-bottom: .6rem; }
            .steps-sub { color: var(--band-muted); margin: 0 0 clamp(1.6rem, 4vw, 2.6rem); max-width: 48ch; }
            .steps { display: grid; gap: .9rem; }
          
            .step { border-radius: var(--r-xl); }
            .step-head {
              display: flex; align-items: center; gap: 1rem; cursor: pointer; list-style: none;
              background: var(--emerald-deep); color: #fff;
              border-radius: var(--r-pill); padding: .85rem 1rem .85rem 1.5rem;
            }
            .step-head::-webkit-details-marker { display: none; }
            .step-n { font-family: var(--mono); font-size: .72rem; letter-spacing: .14em; opacity: .7; }
            .step-kind { font-size: clamp(1.05rem, 2vw, 1.45rem); font-weight: 800; letter-spacing: -.03em; }
            .step-time { margin-left: auto; font-size: .84rem; color: rgba(255,255,255,.78); }
            .step-chev {
              display: grid; place-items: center; width: 38px; height: 38px; flex-shrink: 0;
              border-radius: 50%; background: rgba(255,255,255,.18); color: #fff;
              transition: transform .25s ease;
            }
            .step:not([open]) .step-chev { transform: rotate(180deg); }
          
            .step-card {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
              gap: clamp(1.2rem, 3vw, 2.6rem);
              background: var(--band-card); color: #14170f;
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.2vw, 2.4rem);
              margin-top: .55rem;
            }
             
            .band-dark .step-card .step-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3.6vw, 2.7rem); line-height: 1.02;
              color: #14170f; margin: 0 0 1rem;
            }
            .step-tags { display: flex; flex-wrap: wrap; gap: .4rem; }
            .step-tag {
              font-family: var(--mono); font-size: .66rem; letter-spacing: .1em; text-transform: uppercase;
              background: rgba(20,23,15,.08); border: 1px solid rgba(20,23,15,.12);
              border-radius: var(--r-pill); padding: .3rem .7rem; color: #3c433a;
            }
            .step-lede { font-size: 1.02rem; font-weight: 650; color: #14170f; margin: 0 0 .6rem; letter-spacing: -.01em; }
            .step-body { font-size: .93rem; line-height: 1.6; color: #3c433a; margin: 0 0 1.2rem; }
            .step-right .btn-accent { background: #14170f; color: #fff; box-shadow: none; }
            .step-right .btn-accent:hover { background: #2c332a; }
            @media (max-width: 780px) {
              .step-card { grid-template-columns: 1fr; }
              .step-time { display: none; }
            }
          
             
            .looks-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .85fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .looks-count { font-family: var(--mono); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--emerald); }
            .looks-note { color: var(--band-muted); font-size: .92rem; line-height: 1.6; margin: .5rem 0 0; }
            .looks { display: grid; gap: clamp(.8rem, 2vw, 1.2rem); }
             
            .look {
              display: flex; flex-direction: column;
              background: var(--band-2); border-radius: var(--r-2xl); overflow: hidden;
              border: 1px solid var(--band-line);
              transition: border-color .25s ease, transform .25s ease;
            }
            .look:hover { border-color: var(--emerald); transform: translateY(-3px); }
             
            .look-shot { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--surface); }
            .look-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .3));
              pointer-events: none;
            }
            .look-swatch { line-height: 0; margin-top: .3rem; }
            .look-swatch svg { display: block; }
            .look-meta {
              background: #fff; color: #14170f; padding: clamp(1.2rem, 2.4vw, 1.7rem);
              display: flex; flex-direction: column; gap: .45rem; flex: 1;
            }
             
            .band-dark .look .look-name {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.02; color: #14170f; margin: 0;
            }
            .look-tag { margin: 0; font-size: .95rem; line-height: 1.5; color: #4b534a; max-width: 40ch; }
            .look-link {
              display: inline-flex; align-items: center; gap: .45rem; margin-top: auto; padding-top: .6rem;
              font-size: .88rem; font-weight: 700; color: var(--emerald-deep);
            }
            .look:hover .look-link svg { transform: translateX(3px); }
            .look-link svg { transition: transform .2s ease; }
            .looks-foot {
              display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap;
              margin-top: clamp(1.4rem, 3vw, 2.2rem);
            }
            .looks-more { color: var(--band-muted); font-size: .86rem; }
            @media (min-width: 760px) { .looks { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); } }
            @media (max-width: 620px) { .looks-head { grid-template-columns: 1fr; } }
          
             
            .feat-head {
              display: flex; align-items: flex-end; justify-content: space-between;
              gap: 1.4rem; flex-wrap: wrap; margin-bottom: clamp(1.6rem, 4vw, 2.6rem);
            }
            .feats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(1.2rem, 2.6vw, 2.2rem); }
            .feat { padding-top: 1.1rem; border-top: 1px solid var(--band-line); }
            .feat-n { font-family: var(--mono); font-size: .7rem; letter-spacing: .16em; color: var(--emerald); }
            .feat-title { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: #fff; margin: .7rem 0 .45rem; }
            .feat-body { font-size: .88rem; line-height: 1.6; color: var(--band-muted); margin: 0; }
            @media (max-width: 900px) { .feats { grid-template-columns: 1fr 1fr; } }
            @media (max-width: 520px) { .feats { grid-template-columns: 1fr; } }
          
             
            .price-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .price-sub { margin: 0; color: var(--muted); font-size: .98rem; line-height: 1.6; }
          
             
            .plan-hero {
              display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
              gap: clamp(1.4rem, 4vw, 3rem); align-items: start;
              background: var(--emerald-deep); color: #fff;
              border: 1px solid var(--emerald-deep);
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.4vw, 2.6rem);
              box-shadow: 0 30px 60px -34px color-mix(in srgb, var(--emerald-deep) 70%, transparent);
            }
            .plan-hero-main { display: flex; flex-direction: column; }
            .plan-kicker {
              font-family: var(--mono); font-size: .7rem; font-weight: 500;
              letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.66);
            }
            .plan-tagline { margin: .5rem 0 0; font-size: .95rem; line-height: 1.5; color: rgba(255,255,255,.86); }
            .plan-price {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.8rem, 6vw, 4.4rem); line-height: 1; margin: .7rem 0 .2rem; color: #fff;
            }
            .plan-price span { display: block; font-size: .82rem; font-weight: 500; letter-spacing: 0; color: rgba(255,255,255,.66); margin-top: .4rem; }
            .plan-anchor { margin: .3rem 0 1.2rem; font-size: .86rem; color: rgba(255,255,255,.72); }
            .plan-note { margin: .8rem 0 0; text-align: center; font-size: .8rem; color: rgba(255,255,255,.6); }
            .plan-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; font-size: .95rem; }
            .plan-list li { display: flex; gap: .6rem; align-items: baseline; color: rgba(255,255,255,.9); }
            .plan-list li::before { content: "✓"; color: #fff; font-weight: 700; font-size: .85em; flex-shrink: 0; opacity: .8; }
            @media (min-width: 900px) { .plan-hero .plan-list { grid-template-columns: 1fr 1fr; gap: .55rem 1.4rem; } }
            @media (max-width: 780px) { .plan-hero, .price-head { grid-template-columns: 1fr; } }
          
            .ladder-head { margin: clamp(2rem, 4.5vw, 3rem) 0 .9rem; }
            .ladder-head h3 { font-size: 1.15rem; margin: 0; color: var(--heading); }
            .ladder-head p { margin: .2rem 0 0; font-size: .88rem; color: var(--muted); }
            .ladder { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: .7rem; }
            .ladder-item {
              display: grid; gap: .2rem; padding: 1rem 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg);
              background: var(--surface); transition: border-color .18s ease, transform .18s ease;
            }
            .ladder-item:hover { border-color: var(--emerald); transform: translateY(-2px); }
            .ladder-best { border-color: var(--emerald); }
            .ladder-name { font-weight: 750; font-size: .95rem; color: var(--heading); }
            .ladder-name em {
              font-style: normal; font-family: var(--mono); font-size: .6rem; letter-spacing: .09em;
              text-transform: uppercase; color: var(--emerald-deep); margin-left: .3rem;
            }
            .ladder-price { font-family: var(--text); font-weight: 800; font-size: 1.25rem; letter-spacing: -.03em; color: var(--heading); }
            .ladder-price span { font-weight: 500; font-size: .74rem; letter-spacing: 0; color: var(--faint); margin-left: .35rem; }
            .ladder-note { font-size: .82rem; line-height: 1.45; color: var(--muted); }
          
            .compare { margin-top: 1.4rem; }
            .compare summary {
              cursor: pointer; font-size: .9rem; font-weight: 700; color: var(--emerald-deep);
              padding: .6rem 0; list-style: none;
            }
            .compare summary::-webkit-details-marker { display: none; }
            .compare summary::before { content: "+ "; font-family: var(--mono); }
            .compare[open] summary::before { content: "− "; }
            .compare-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .8rem; margin-top: .9rem; }
            .compare-col {
              display: flex; flex-direction: column; padding: 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface);
            }
            .compare-price { font-family: var(--text); font-weight: 800; font-size: 1.6rem; letter-spacing: -.035em; color: var(--heading); margin-top: .4rem; }
            .compare-price span { display: block; font-size: .74rem; font-weight: 500; letter-spacing: 0; color: var(--faint); margin-top: .2rem; }
            .compare-anchor { margin: .4rem 0 .7rem; font-size: .82rem; color: var(--muted); }
             
            .compare-col .plan-list li { color: var(--ink-2); }
            .compare-col .plan-list li::before { color: var(--emerald); opacity: 1; }
            .compare-col .plan-kicker { color: var(--faint); }
            .compare-col .plan-list { margin-bottom: 1rem; font-size: .86rem; }
            .compare-col .btn { margin-top: auto; }
          
             
            .faq-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1rem, 4vw, 3rem); align-items: end; margin-bottom: clamp(1.4rem, 3vw, 2.2rem);
            }
            .faq-sub { margin: 0; color: var(--muted); }
            .faq { border-top: 1px solid var(--line); }
            .qa { border-bottom: 1px solid var(--line); }
            .qa summary {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              cursor: pointer; list-style: none; padding: 1.3rem 0;
            }
            .qa summary::-webkit-details-marker { display: none; }
            .qa-q { font-size: clamp(1rem, 1.8vw, 1.18rem); font-weight: 750; letter-spacing: -.02em; color: var(--heading); }
            .qa-sign {
              position: relative; flex-shrink: 0; width: 34px; height: 34px; border-radius: 50%;
              border: 1px solid var(--line); background: var(--surface);
              transition: border-color .2s ease, background .2s ease;
            }
            .qa-sign::before, .qa-sign::after {
              content: ""; position: absolute; left: 50%; top: 50%; background: var(--ink-2);
              transform: translate(-50%, -50%); transition: opacity .2s ease;
            }
            .qa-sign::before { width: 13px; height: 1.6px; }
            .qa-sign::after { width: 1.6px; height: 13px; }
            .qa[open] .qa-sign { border-color: var(--emerald); background: var(--emerald-soft); }
            .qa[open] .qa-sign::after { opacity: 0; }
            .qa[open] .qa-sign::before { background: var(--emerald-deep); }
            .qa:hover .qa-sign { border-color: var(--emerald); }
            .qa-a { margin: 0 0 1.4rem; color: var(--muted); max-width: 74ch; line-height: 1.6; }
            @media (max-width: 780px) { .faq-head { grid-template-columns: 1fr; align-items: start; } }
          
             
            .maker {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              flex-wrap: wrap; padding: clamp(1.2rem, 3vw, 1.8rem);
              border: 1px dashed var(--line); border-radius: var(--r-lg); background: var(--surface-2);
            }
            .maker-title { margin: .55rem 0 .3rem; font-size: 1.2rem; }
            .maker-body { margin: 0; max-width: 56ch; font-size: .88rem; color: var(--muted); }
          
             
            .closing { text-align: center; padding: clamp(3.4rem, 8vw, 6.5rem) 0 clamp(1rem, 3vw, 2rem); }
            .closing-title { margin: 0 auto; max-width: 18ch; }
            .closing-sub { margin: 1.1rem auto 1.9rem; max-width: 46ch; color: var(--muted); font-size: 1.02rem; }
          
             
            html.rv-on .rv { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s ease; }
            html.rv-on .rv.in { opacity: 1; transform: none; }
            @media (prefers-reduced-motion: reduce) {
              html.rv-on .rv { opacity: 1; transform: none; transition: none; }
            }
          </style>
          
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
            
            
            (function () {
              if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
              if (!("IntersectionObserver" in window)) return;
              document.documentElement.classList.add("rv-on");
              var io = new IntersectionObserver(function (entries) {
                entries.forEach(function (entry) {
                  if (entry.isIntersecting) {
                    entry.target.classList.add("in");
                    io.unobserve(entry.target);
                  }
                });
              }, { rootMargin: "0px 0px -8% 0px", threshold: 0.08 });
              document.querySelectorAll(".rv").forEach(function (el) { io.observe(el); });
            })();
          
            
            
            
            
            
            (function () {
              var PREVIEW_WIDTH = 1280;
              var boxes = document.querySelectorAll(".look-shot, .hero-shot");
              function fit() {
                boxes.forEach(function (box) {
                  if (!box.querySelector(".pv")) return;
                  box.style.setProperty("--pv", box.clientWidth / PREVIEW_WIDTH);
                });
              }
              fit();
              window.addEventListener("resize", fit, { passive: true });
              if ("ResizeObserver" in window) {
                var ro = new ResizeObserver(fit);
                boxes.forEach(function (box) { ro.observe(box); });
              }
            })();
          
            
            
            
            (function () {
              var steps = Array.prototype.slice.call(document.querySelectorAll(".steps .step"));
              steps.forEach(function (step) {
                step.addEventListener("toggle", function () {
                  if (!step.open) return;
                  steps.forEach(function (other) { if (other !== step) other.open = false; });
                });
              });
            })();
          </script>
          
                </div>
              </main>
          
              
              <footer class="site-footer">
                <div class="wrap footer-grid">
                  <div>
                    <span class="footer-name">WONS Sites</span>
                    <p class="footer-tag">A website you can keep up to date yourself.</p>
                  </div>
                  <nav class="footer-col" aria-label="Product">
                    <span class="label">Product</span>
                    <a href="/themes">Themes</a>
                    <a href="/#product">What you can change</a>
                    <a href="/#pricing">Pricing</a>
                    <a href="/docs">Docs</a>
                  </nav>
                  <nav class="footer-col" aria-label="Account">
                    <span class="label">Account</span>
                    <a href="/login">Log in</a>
                    <a href="/signup">Start your site</a>
                    <a href="/dashboard">Dashboard</a>
                  </nav>
                  <div>
                    <p class="footer-sub-head">Start with your email</p>
                    <p class="footer-sub-copy">It takes you straight to sign-up — free plan, no card needed.</p>
                    <form class="footer-sub" action="/signup" method="get">
                      <input type="email" name="email" placeholder="Your email address" aria-label="Email address">
                      <button class="sub-btn" type="submit" aria-label="Start your site">
                        <svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </button>
                    </form>
                  </div>
                </div>
                <div class="wrap footer-base">
                  <span>© 2026 WONS Sites. All rights reserved.</span>
                  <span>Made by WONS</span>
                </div>
              </footer>
              
            </div>
          
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              var themeToggle = document.getElementById("themeToggle");
              if (themeToggle) themeToggle.addEventListener("click", function () {
                var root = document.documentElement;
                var current = root.getAttribute("data-theme");
                var systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
                var next = (current ? current === "dark" : systemDark) ? "light" : "dark";
                root.setAttribute("data-theme", next);
                try { localStorage.setItem("wons-sites-theme", next); } catch (e) {}
              });
          
              
              var navToggle = document.getElementById("navToggle");
              var topbar = document.getElementById("topbar");
              if (navToggle && topbar) navToggle.addEventListener("click", function () {
                var open = topbar.classList.toggle("open");
                navToggle.setAttribute("aria-expanded", open ? "true" : "false");
              });
          
              
              
              
              (function () {
                var bar = document.getElementById("topbar");
                if (!bar) return;
                var mark = function () {
                  bar.classList.toggle("stuck", window.scrollY > 72);
                };
                mark();
                window.addEventListener("scroll", mark, { passive: true });
              })();
          
              (function () {
                var path = location.pathname.replace(/\/+$/, "") || "/";
                var best = null, bestLen = -1;
                document.querySelectorAll(".nav a.link").forEach(function (a) {
                  var href = (a.getAttribute("href") || "").replace(/\/+$/, "") || "/";
                  var match = href === "/" ? path === "/" : (path === href || path.indexOf(href + "/") === 0);
                  if (match && href.length > bestLen) { best = a; bestLen = href.length; }
                });
                if (best) best.classList.add("active");
              })();
            </script>
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">(function(){
          	var es = new EventSource("/__wons/dev/reload");
          	es.onmessage = function(){ location.reload() };
          	// Close the stream the instant the page is left. Without this, each
          	// navigation leaves its SSE connection lingering; a few quick clicks
          	// exhaust the browser's ~6-per-origin HTTP/1.1 connection cap and every
          	// further request (including the next page) stalls until the stale
          	// streams time out. Closing on pagehide frees the slot immediately.
          	window.addEventListener("pagehide", function(){ es.close(); });
          })()</script></body>
          </html>
          
          Evidence
          1786819373
          Solution

          Manually confirm that the timestamp data is not sensitive, and that the data cannot be aggregated to disclose exploitable patterns.

  6. Risk=Informational, Confidence=High (2)

    1. https://sites.wons.bt (2)

      1. Authentication Request Identified (1)
        1. POST https://sites.wons.bt/login
          Alert tags
          Alert description

          The given request has been identified as an authentication request. The 'Other Info' field contains a set of key=value lines which identify any relevant fields. If the request is in a context which has an Authentication Method set to "Auto-Detect" then this rule will change the authentication to match the request identified.

          Other info

          userParam=email

          userValue=zaproxy@example.com

          passwordParam=password

          referer=https://sites.wons.bt/login

          csrfToken=_csrf

          Request
          Request line and header section (415 bytes)
          POST https://sites.wons.bt/login HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          content-type: application/x-www-form-urlencoded
          referer: https://sites.wons.bt/login
          content-length: 122
          Cookie: wons_csrf=U7ygdlDsPzGNhVUsgcCr.b490804661bdf6603f4969db6e01cc20
          
          
          Request body (122 bytes)
          _csrf=gdXNiyc9N0Iig9LmNb9i.410b60267cd34827dae322d24fae8397&redirect=%2Fdashboard&email=zaproxy%40example.com&password=ZAP
          Response
          Status line and header section (805 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:43:01 GMT
          Content-Type: text/html; charset=utf-8
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce--dfIRmMUKdxxdZ_IMFxwHg'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Set-Cookie: wons_csrf=gRIK3HGIJxR68sM4Q5EL.0bff81a10721e56aa8625ebccba60dfa; Path=/; Max-Age=2592000; HttpOnly; SameSite=Lax
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          content-length: 37735
          
          
          Response body (37735 bytes)
          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>WONS Sites</title>
            <meta name="description" content="A website you can keep up to date yourself. Pick a look, fill in your pages, and it is live — no domain to buy, no developer, no rebuilds.">
            
              <link rel="icon" href="/__wons/download?a=0&amp;e=1786819381&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfNHZ2NmczbWVkby5wbmc&amp;s=15157ee1095e4f8c742bc1da69f09539af2e5d4352b7e6b482ba536ba1eca3c9">
            
            <link rel="preload" href="/fonts/Manrope-500-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-italic-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="stylesheet" href="/fonts/fonts.css">
            <script nonce="-dfIRmMUKdxxdZ_IMFxwHg">
              (function () {
                try {
                  var t = localStorage.getItem("wons-sites-theme");
                  if (t) document.documentElement.setAttribute("data-theme", t);
                } catch (e) {}
              })();
            </script>
            <style>
              :root {
                --emerald:      #0d9d63;
                --emerald-deep: #077a4b;
                --emerald-dark: #05603a;
                --emerald-soft: #e7f6ee;
                --emerald-line: #c6e8d6;
          
                --heading:      #1d3b2c;
                --cta-bg:       #1d4d33;
                --cta-bg-hover: #266040;
                --cta-fg:       #ffffff;
          
                --canvas:    #fdfcf8;
                --surface:   #ffffff;
                --surface-2: #f2f6ef;
                --ink:       #22302a;
                --ink-2:     #435248;
                --muted:     #5f6f66;
                --faint:     #8fa096;
                --line:      #e6e9df;
                --line-soft: #eef1e8;
          
                --warn:      #b4690e;
                --warn-soft: #fdf3e4;
                --bad:       #c8372c;
                --bad-soft:  #fdeeec;
                --ok:        var(--emerald);
          
                 
                --band:       #0f100f;
                --band-2:     #171a18;
                --band-fg:    #ffffff;
                --band-muted: #9aa39e;
                --band-line:  #2a2f2c;
                --band-card:  #d5dad3;
          
                --r-xs: 8px;
                --r:    12px;
                --r-lg: 18px;
                --r-xl: 26px;
                --r-2xl: 34px;
                --r-pill: 999px;
          
                --shadow-sm: 0 1px 2px rgba(16,30,24,.05);
                --shadow:    0 1px 2px rgba(16,30,24,.04), 0 12px 28px -18px rgba(16,30,24,.24);
                --shadow-lg: 0 32px 64px -34px rgba(10,40,28,.40);
                --ring:      0 0 0 3px rgba(13,157,99,.20);
          
                --display: "Fraunces", Georgia, "Times New Roman", serif;
                --text:    "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
                --mono:    ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
          
                --maxw: min(1280px, calc(100vw - 3em));
                --nav-h: 68px;
                color-scheme: light;
              }
          
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) {
                  --emerald:      #2fc98a;
                  --emerald-deep: #21b077;
                  --emerald-dark: #8ce8bf;
                  --emerald-soft: #10281f;
                  --emerald-line: #1d4436;
                  --heading:      #eef2f0;
                  --cta-bg:       #2fc98a;
                  --cta-bg-hover: #4dd69c;
                  --cta-fg:       #06120d;
                  --canvas:    #0b0f0e;
                  --surface:   #121817;
                  --surface-2: #182120;
                  --ink:       #eef2f0;
                  --ink-2:     #c3ccc9;
                  --muted:     #97a3a0;
                  --faint:     #6a7674;
                  --line:      #222c2a;
                  --line-soft: #1a2322;
                  --warn:      #e0a55a;
                  --warn-soft: #2a2113;
                  --bad:       #f0776a;
                  --bad-soft:  #2c1613;
                  --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                  --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                  --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                  --ring:      0 0 0 3px rgba(47,201,138,.26);
                  color-scheme: dark;
                }
              }
              :root[data-theme="dark"] {
                --emerald:      #2fc98a;
                --emerald-deep: #21b077;
                --emerald-dark: #8ce8bf;
                --emerald-soft: #10281f;
                --emerald-line: #1d4436;
                --heading:      #eef2f0;
                --cta-bg:       #2fc98a;
                --cta-bg-hover: #4dd69c;
                --cta-fg:       #06120d;
                --canvas:    #0b0f0e;
                --surface:   #121817;
                --surface-2: #182120;
                --ink:       #eef2f0;
                --ink-2:     #c3ccc9;
                --muted:     #97a3a0;
                --faint:     #6a7674;
                --line:      #222c2a;
                --line-soft: #1a2322;
                --warn:      #e0a55a;
                --warn-soft: #2a2113;
                --bad:       #f0776a;
                --bad-soft:  #2c1613;
                --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                --ring:      0 0 0 3px rgba(47,201,138,.26);
                color-scheme: dark;
              }
              *, *::before, *::after { box-sizing: border-box; }
              html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
              body {
                margin: 0;
                font-family: var(--text);
                font-size: 16px; line-height: 1.6; letter-spacing: -.006em;
                color: var(--ink); background: var(--canvas);
                -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
              }
              a { color: inherit; text-decoration: none; }
              ::selection { background: var(--emerald); color: #fff; }
              img { max-width: 100%; height: auto; }
              hr { border: 0; border-top: 1px solid var(--line); margin: 2rem 0; }
          
              h1, h2 { font-family: var(--display); margin: 0 0 .6rem; }
              h3, h4 { font-family: var(--text); margin: 0 0 .6rem; }
              h1 { font-size: clamp(2.5rem, 5.4vw, 3.9rem); font-weight: 620; line-height: 1.06; letter-spacing: -.015em; color: var(--heading); }
              h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); font-weight: 600; line-height: 1.12; letter-spacing: -.012em; color: var(--heading); }
              h3 { font-size: 1.16rem; font-weight: 750; line-height: 1.25; letter-spacing: -.015em; color: var(--heading); }
              h4 { font-size: .98rem; font-weight: 750; letter-spacing: -.01em; }
          
               
              body:not(.app) h1,
              body:not(.app) h2 { font-family: var(--text); font-weight: 800; letter-spacing: -.04em; }
              body:not(.app) h1 { font-size: clamp(2.6rem, 6vw, 4.6rem); line-height: .98; }
              body:not(.app) h2 { font-size: clamp(2rem, 4.4vw, 3.4rem); line-height: 1.02; }
          
               
              body:not(.app) .d-xl,
              .d-xl { font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
                      font-size: clamp(3rem, 8.6vw, 7rem); line-height: .92; margin: 0; color: var(--heading); }
              body:not(.app) .d-lg,
              .d-lg { font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
                      font-size: clamp(2.2rem, 5vw, 3.9rem); line-height: 1; margin: 0; color: var(--heading); }
              body:not(.app) .d-thin,
              .d-thin { font-family: var(--text); font-weight: 300; letter-spacing: -.035em;
                        font-size: clamp(2rem, 5.4vw, 4.2rem); line-height: 1.04; margin: 0; color: var(--heading); }
              p  { margin: 0 0 1rem; }
              .lede { font-size: clamp(1.02rem, 1.6vw, 1.18rem); line-height: 1.55; color: var(--muted); max-width: 48ch; }
              .muted { color: var(--muted); }
              .faint { color: var(--faint); }
              .tiny  { font-size: .82rem; }
              .label {
                font-family: var(--mono); font-size: .7rem; font-weight: 500;
                letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              }
              .kicker {
                display: inline-flex; align-items: center; gap: .55rem;
                font-family: var(--mono); font-size: .71rem; font-weight: 500;
                letter-spacing: .16em; text-transform: uppercase; color: var(--emerald-deep);
              }
              .kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .6; }
              code {
                font-family: var(--mono); font-size: .85em;
                background: var(--surface-2); border: 1px solid var(--line);
                border-radius: 6px; padding: .08em .4em; color: var(--ink-2);
              }
          
              .shell {
                min-height: 100vh; display: flex; flex-direction: column;
                overflow-x: clip;
              }
              .wrap { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              .topbar {
                position: sticky; top: 0; z-index: 60; height: var(--nav-h);
                display: flex; align-items: center;
                background: color-mix(in srgb, var(--canvas) 88%, transparent);
                backdrop-filter: saturate(1.6) blur(14px); -webkit-backdrop-filter: saturate(1.6) blur(14px);
                border-bottom: 1px solid var(--line);
              }
              .topbar .bar { display: flex; align-items: center; gap: 1.4rem; width: 100%; }
          
               
              body:not(.app) .topbar {
                position: fixed; top: 0; left: 0; right: 0; height: auto;
                padding: 14px 0; background: none; border: 0;
                backdrop-filter: none; -webkit-backdrop-filter: none;
                transition: padding .25s ease;
              }
               
              body:not(.app) .topbar .bar {
                position: relative;
                padding: .5rem .55rem .5rem 1.15rem; border-radius: var(--r-pill);
                background: color-mix(in srgb, var(--surface) 92%, transparent);
                border: 1px solid var(--line); box-shadow: var(--shadow-sm);
                backdrop-filter: saturate(1.5) blur(16px); -webkit-backdrop-filter: saturate(1.5) blur(16px);
                transition: background .25s ease, border-color .25s ease, box-shadow .25s ease;
              }
          
               
              body.hero-top:not(.app) .topbar .bar {
                background: rgba(255, 255, 255, .12);
                border-color: rgba(255, 255, 255, .22);
                box-shadow: none;
              }
              body.hero-top:not(.app) .topbar .brand,
              body.hero-top:not(.app) .topbar .nav a.link,
              body.hero-top:not(.app) .topbar .nav-actions a.link { color: #fff; }
              body.hero-top:not(.app) .topbar .nav a.link:hover,
              body.hero-top:not(.app) .topbar .nav-actions a.link:hover { color: #fff; background: rgba(255,255,255,.16); }
              body.hero-top:not(.app) .topbar .icon-btn { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.24); color: #fff; }
              body.hero-top:not(.app) .topbar .icon-btn:hover { border-color: #fff; color: #fff; }
              body.hero-top:not(.app) .topbar .brand .mark { box-shadow: none; }
          
              body:not(.app) .topbar.stuck { padding: 8px 0; }
              body.hero-top:not(.app) .topbar.stuck .bar {
                background: color-mix(in srgb, var(--surface) 94%, transparent);
                border-color: var(--line); box-shadow: var(--shadow);
              }
              body.hero-top:not(.app) .topbar.stuck .brand { color: var(--heading); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link { color: var(--ink-2); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link:hover,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn { background: var(--surface); border-color: var(--line); color: var(--muted); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
          
              .brand { display: inline-flex; align-items: center; gap: .6rem; font-family: var(--text); font-weight: 800; letter-spacing: -.03em; font-size: 1.05rem; color: var(--heading); flex-shrink: 0; }
              .brand .mark {
                width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
                background: linear-gradient(145deg, var(--emerald), var(--emerald-dark));
                color: #fff; font-size: .82rem; font-weight: 800; letter-spacing: -.02em;
                box-shadow: 0 6px 14px -6px rgba(7,122,75,.7);
              }
              :root[data-theme="dark"] .brand .mark { color: #06120d; }
              .brand .mark-img { background: none; box-shadow: none; object-fit: contain; border-radius: 7px; }
              .brand .mark-dark { display: none; }
              :root[data-theme="dark"] .brand .mark-light { display: none; }
              :root[data-theme="dark"] .brand .mark-dark { display: block; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .brand .mark-light { display: none; }
                :root:not([data-theme="light"]) .brand .mark-dark { display: block; }
              }
          
              .nav { display: flex; align-items: center; justify-content: center; gap: .4rem; flex: 1; }
              .nav a.link, .nav-actions a.link {
                display: inline-flex; align-items: center; gap: .42rem;
                padding: .45rem .75rem; border-radius: var(--r-xs);
                font-size: .93rem; font-weight: 600; color: var(--ink-2);
                transition: color .15s, background .15s;
              }
              .nav a.link:hover, .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              .nav a.link.active { color: var(--heading); }
              .nav-actions { display: flex; align-items: center; gap: .45rem; flex-shrink: 0; }
          
              .icon-btn {
                display: grid; place-items: center; width: 36px; height: 36px; flex-shrink: 0;
                border: 1px solid var(--line); border-radius: var(--r-xs);
                background: var(--surface); color: var(--muted); cursor: pointer;
                font: inherit; font-size: .95rem; padding: 0;
                transition: border-color .15s, color .15s;
              }
              .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .theme-toggle .sun { display: none; } .theme-toggle .moon { display: block; }
              :root[data-theme="dark"] .theme-toggle .sun { display: block; }
              :root[data-theme="dark"] .theme-toggle .moon { display: none; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .theme-toggle .sun { display: block; }
                :root:not([data-theme="light"]) .theme-toggle .moon { display: none; }
              }
              #navToggle { display: none; }
          
              @media (max-width: 860px) {
                #navToggle { display: grid; }
                .nav-actions a.link.nav-login { display: none; }
                .nav {
                  display: none; position: absolute; top: var(--nav-h); left: 0; right: 0;
                  flex-direction: column; align-items: stretch; gap: .1rem;
                  padding: .8rem clamp(1.1rem, 4vw, 2rem) 1.2rem;
                  background: var(--surface); border-bottom: 1px solid var(--line);
                  box-shadow: var(--shadow-lg);
                }
                .topbar.open .nav { display: flex; }
          
                 
                body:not(.app) .nav {
                  top: calc(100% + .5rem); left: .25rem; right: .25rem;
                  border: 1px solid var(--line); border-radius: var(--r-lg);
                  padding: .6rem .7rem .8rem;
                }
                body.hero-top:not(.app) .topbar.open .nav a.link,
                body:not(.app) .topbar.open .nav a.link { color: var(--ink-2); }
                body.hero-top:not(.app) .topbar.open .nav a.link:hover { background: var(--surface-2); color: var(--heading); }
              }
          
               
              @media (max-width: 620px) {
                body:not(.app) .topbar .brand { font-size: 0; gap: 0; }
                body:not(.app) .topbar .brand .mark { font-size: .82rem; }
                body:not(.app) .topbar .bar { gap: .6rem; padding-left: .55rem; }
                body:not(.app) .topbar .nav-actions { gap: .35rem; }
                body:not(.app) .topbar .nav-actions .btn { padding: .5rem .85rem; font-size: .82rem; }
                body:not(.app) .icon-btn { width: 34px; height: 34px; }
              }
          
              main { flex: 1; padding: clamp(2.2rem, 5vw, 4rem) 0 clamp(3.5rem, 7vw, 5.5rem); }
               
              body:not(.app) main { padding-top: calc(var(--nav-h) + clamp(1.4rem, 4vw, 2.6rem)); }
              body.hero-top:not(.app) main { padding-top: 0; }
               
              body.hero-top:not(.app) .flash { margin-top: calc(var(--nav-h) + 1rem); }
              body.app main { padding: 0; }
              body.app .wrap { max-width: none; padding: 0; }
          
               
              .bleed { width: 100vw; margin-left: calc(50% - 50vw); }
          
              .site-footer {
                background: var(--band); color: var(--band-fg);
                padding: clamp(2.4rem, 5vw, 3.6rem) 0 1.2rem;
                overflow: hidden;
              }
              .site-footer .footer-name,
              .site-footer .footer-sub-head { color: var(--band-fg); }
              .site-footer .footer-tag,
              .site-footer .footer-sub-copy,
              .site-footer .footer-col a { color: var(--band-muted); }
              .site-footer .label { color: #6f7a75; }
              .site-footer .footer-col a:hover { color: var(--band-fg); }
              .site-footer input[type=email] {
                background: var(--band-2); border-color: var(--band-line); color: var(--band-fg);
              }
              .site-footer input[type=email]::placeholder { color: #6f7a75; }
              .site-footer .sub-btn { background: var(--emerald); color: #06120d; }
              .site-footer .sub-btn:hover { background: var(--emerald-deep); color: #fff; }
              .site-footer .footer-base { border-top-color: var(--band-line); color: #6f7a75; }
              .footer-grid {
                display: grid; grid-template-columns: 1.4fr .8fr .8fr 1.2fr; gap: 2rem;
                padding-bottom: clamp(1.4rem, 3vw, 2.2rem);
              }
              .footer-name {
                font-family: var(--text); font-weight: 800; letter-spacing: -.03em;
                font-size: 1.05rem; color: var(--heading);
              }
              .footer-tag { margin: .5rem 0 0; font-size: .88rem; color: var(--muted); max-width: 30ch; }
              .footer-col .label { display: block; margin-bottom: .7rem; }
              .footer-col a { display: block; padding: .24rem 0; font-size: .9rem; color: var(--muted); }
              .footer-col a:hover { color: var(--emerald-deep); }
              .footer-sub-head { font-size: .95rem; font-weight: 750; color: var(--heading); margin: 0 0 .35rem; }
              .footer-sub-copy { font-size: .84rem; color: var(--muted); margin: 0 0 .8rem; max-width: 32ch; }
              .footer-sub { display: flex; gap: .5rem; }
              .footer-sub input[type=email] { flex: 1; min-width: 0; }
              .footer-sub .sub-btn {
                display: grid; place-items: center; width: 46px; flex-shrink: 0;
                border: 0; border-radius: var(--r); cursor: pointer;
                background: var(--cta-bg); color: var(--cta-fg); font: inherit;
                transition: background .15s;
              }
              .footer-sub .sub-btn:hover { background: var(--cta-bg-hover); }
              .footer-base {
                display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
                border-top: 1px solid var(--line-soft); padding-top: 1.2rem;
                font-family: var(--mono); font-size: .72rem; color: var(--faint);
              }
              @media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
              @media (max-width: 520px) { .footer-grid { grid-template-columns: 1fr; gap: 1.4rem; } }
          
              .btn {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-family: var(--text); font-weight: 600; font-size: .95rem;
                line-height: 1; cursor: pointer; white-space: nowrap; text-decoration: none;
                padding: .78rem 1.3rem; border-radius: var(--r); border: 1px solid transparent;
                transition: transform .08s, filter .15s, border-color .15s, background .15s, color .15s;
              }
              .btn:active { transform: translateY(1px); }
              .btn-primary { background: var(--ink); color: var(--canvas); }
              .btn-primary:hover { filter: brightness(1.22); }
              :root[data-theme="dark"] .btn-primary { background: var(--emerald); color: #06120d; }
              .btn-accent {
                background: var(--cta-bg); color: var(--cta-fg);
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
              }
              .btn-accent:hover { background: var(--cta-bg-hover); }
              .btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line); box-shadow: var(--shadow-sm); }
              .btn-ghost:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .btn-quiet { background: transparent; color: var(--muted); padding-left: .6rem; padding-right: .6rem; }
              .btn-quiet:hover { color: var(--ink); }
              .btn-sm { padding: .5rem .85rem; font-size: .86rem; border-radius: var(--r-xs); }
              .btn-block { width: 100%; }
              .btn[disabled] { opacity: .5; cursor: not-allowed; }
          
               
              body:not(.app) .btn { border-radius: var(--r-pill); padding: .88rem 1.6rem; }
              body:not(.app) .btn-sm { padding: .55rem 1.05rem; font-size: .86rem; }
              body:not(.app) form button:not([class]) { border-radius: var(--r-pill); }
              .btn-onband { background: #fff; color: var(--band); }
              .btn-onband:hover { background: #fff; filter: brightness(.94); }
              .btn-outline-band { background: transparent; color: #fff; border-color: rgba(255,255,255,.32); }
              .btn-outline-band:hover { border-color: #fff; background: rgba(255,255,255,.08); }
          
               
              .band { position: relative; padding: clamp(3rem, 7vw, 6rem) 0; }
               
              .band-dark + .band-dark { padding-top: 0; }
              .band-dark { background: var(--band); color: var(--band-fg); }
               
              body:not(.app) .band-dark h1, body:not(.app) .band-dark h2,
              body:not(.app) .band-dark h3, body:not(.app) .band-dark .d-xl,
              body:not(.app) .band-dark .d-lg, body:not(.app) .band-dark .d-thin { color: var(--band-fg); }
              .band-dark .muted, .band-dark .lede { color: var(--band-muted); }
              .band-dark .label { color: #6f7a75; }
              .band-dark .kicker { color: var(--emerald); }
               
              .band-paper { background: var(--surface-2); color: var(--ink); }
              .band-accent { background: var(--emerald-deep); color: #fff; }
              body:not(.app) .band-accent h2, body:not(.app) .band-accent h3,
              body:not(.app) .band-accent .d-lg, body:not(.app) .band-accent .d-xl { color: #fff; }
              .band-accent .lede, .band-accent .muted { color: rgba(255,255,255,.78); }
              .band-accent .label, .band-accent .kicker { color: rgba(255,255,255,.66); }
              .band-accent .kicker::before { background: currentColor; }
              .band-inner { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              form button:not([class]) {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-weight: 600; cursor: pointer; color: var(--cta-fg); border: 0;
                background: var(--cta-bg);
                border-radius: var(--r); padding: .78rem 1.4rem;
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
                transition: background .15s, transform .08s;
              }
              form button:not([class]):hover { background: var(--cta-bg-hover); }
              form button:not([class]):active { transform: translateY(1px); }
          
              .card {
                background: var(--surface); border: 1px solid var(--line);
                border-radius: var(--r-lg); padding: 1.5rem 1.6rem; box-shadow: var(--shadow);
              }
              .card.tight { padding: 1.1rem 1.2rem; }
              .card.flush { padding: 0; overflow: hidden; }
              .panel { background: var(--surface-2); border: 1px solid var(--line-soft); border-radius: var(--r); padding: 1.1rem 1.2rem; }
              .stack > * + * { margin-top: 1.1rem; }
              .row { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
              .row-between { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
              .grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
              .grid-2 { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
              .center-narrow { max-width: 460px; margin: 0 auto; }
          
              .pill {
                display: inline-flex; align-items: center; gap: .35rem;
                font-family: var(--mono); font-size: .68rem; font-weight: 500;
                letter-spacing: .08em; text-transform: uppercase;
                padding: .26rem .6rem; border-radius: 999px;
                background: var(--surface-2); color: var(--muted); border: 1px solid var(--line);
              }
              .pill { align-self: flex-start; }
              .pill.ok   { background: var(--emerald-soft); color: var(--emerald-deep); border-color: var(--emerald-line); }
              .pill.warn { background: var(--warn-soft); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 32%, transparent); }
              .pill.bad  { background: var(--bad-soft); color: var(--bad); border-color: color-mix(in srgb, var(--bad) 30%, transparent); }
              .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
              .field { display: block; margin-bottom: 1.05rem; }
              .field > .lbl { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; font-size: .88rem; font-weight: 600; margin-bottom: .38rem; }
              .field > .lbl .hint { font-weight: 400; font-size: .8rem; color: var(--faint); }
              input[type=text], input[type=email], input[type=password], input[type=url],
              input[type=number], input[type=date], input[type=search], textarea, select {
                display: block; width: 100%; font: inherit; font-size: .95rem; color: var(--ink);
                background: var(--surface); border: 1px solid var(--line); border-radius: var(--r);
                padding: .72rem .9rem; transition: border-color .15s, box-shadow .15s;
              }
              textarea { min-height: 120px; resize: vertical; line-height: 1.55; }
              input::placeholder, textarea::placeholder { color: var(--faint); }
              input:focus, textarea:focus, select:focus { outline: 0; border-color: var(--emerald); box-shadow: var(--ring); }
              input[aria-invalid="true"], textarea[aria-invalid="true"] { border-color: var(--bad); }
              input[type=checkbox], input[type=radio] { accent-color: var(--emerald); width: auto; }
              .err { display: block; color: var(--bad); font-size: .84rem; font-weight: 500; margin-top: .35rem; }
              fieldset { border: 0; margin: 0; padding: 0; }
          
              .progress { height: 6px; border-radius: 999px; background: var(--surface-2); overflow: hidden; border: 1px solid var(--line-soft); }
              .progress > i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--emerald), var(--emerald-deep)); }
          
              .flash {
                display: flex; align-items: flex-start; gap: .6rem;
                background: var(--surface-2); color: var(--ink-2);
                border: 1px solid var(--line); border-radius: var(--r);
                padding: .8rem 1.05rem; margin-bottom: 1.4rem; font-weight: 500; font-size: .93rem;
                animation: flashIn .22s ease;
              }
              .flash::before { content: "→"; font-weight: 800; color: var(--muted); }
              .flash.warn {
                background: #fdf6e7; color: #8a5a00; border-color: #f0dcae;
              }
              :root[data-theme="dark"] .flash.warn { color: #8a5a00; }
              .flash.warn::before { content: "!"; }
              .flash.ok {
                background: #eaf7f0; color: #10633f; border-color: #bfe3d0;
              }
              :root[data-theme="dark"] .flash.ok { color: #10633f; }
              .flash.ok::before { content: "\2713"; color: #10633f; }
              .flash.error {
                background: #fdeceb; color: #8c2b22; border-color: #f3c8c4;
              }
              :root[data-theme="dark"] .flash.error { color: #8c2b22; }
              .flash.error::before { content: "\2715"; color: #8c2b22; }
              @keyframes flashIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
              .auth-centered { text-align: center; padding-top: clamp(.2rem, 2vw, 1rem); }
              .auth-centered .kicker { justify-content: center; }
              .auth-centered .lede { margin-left: auto; margin-right: auto; }
              .auth-centered .card { text-align: left; }
          
              .ticks { list-style: none; margin: 1.1rem 0; padding: 0; display: grid; gap: .55rem; font-size: .93rem; }
              .ticks li { display: flex; gap: .6rem; align-items: baseline; color: var(--ink-2); }
              .ticks li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
          
              table { width: 100%; border-collapse: collapse; }
              th, td { text-align: left; padding: .7rem .6rem; font-size: .92rem; }
              th { font-family: var(--mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--faint); font-weight: 500; border-bottom: 1px solid var(--line); }
              td { border-bottom: 1px solid var(--line-soft); }
              tr:last-child td { border-bottom: 0; }
          
              .page-head { margin-bottom: clamp(1.6rem, 3vw, 2.4rem); max-width: 58ch; }
              .page-head .kicker { margin-bottom: .9rem; }
              .backlink { display: inline-flex; align-items: center; gap: .35rem; color: var(--faint); font-size: .88rem; margin-bottom: .9rem; }
              .backlink:hover { color: var(--emerald-deep); }
          
              @media (prefers-reduced-motion: reduce) {
                *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
              }
            </style>
          <script src="/__wons/sdk/pocketbase.umd.js"></script><script src="/__wons/sdk/wons.umd.js" data-wons-global="Wons"></script></head>
          <body class="">
            <div class="shell">
              
              <header class="topbar" id="topbar">
                <div class="wrap"><div class="bar">
                  <a class="brand" href="/">
                    
                      <img class="mark mark-img mark-light"
                           src="/__wons/download?a=0&amp;e=1786819381&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfamd1aGFzNnMzcC5wbmc&amp;s=7dc31ec4adb92d96d6c8b18d088022bd6bcbe729e1f8df03b1464f0e898df278" alt="" width="30" height="30">
                      
                        <img class="mark mark-img mark-dark" src="/__wons/download?a=0&amp;e=1786819381&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfZmx5MHF4YXBrOS5wbmc&amp;s=d1130a192b644701a7c6e6df17d509a8cf23ec32719638866f0909b1e51063b8" alt="" width="30" height="30">
                      
                    
                    WONS Sites
                  </a>
                  <nav class="nav" id="nav">
                    
                      <a class="link" href="/#product">Features</a>
                    
                      <a class="link" href="/themes">Themes</a>
                    
                      <a class="link" href="/#pricing">Pricing</a>
                    
                      <a class="link" href="/docs">Docs</a>
                    
                  </nav>
                  <div class="nav-actions">
                    
                      <a class="link nav-login" href="/login">Log in</a>
                      <a class="btn btn-accent btn-sm" href="/signup">Start Free</a>
                    
                    <button class="icon-btn theme-toggle" id="themeToggle" type="button" aria-label="Toggle dark mode">
                      <svg class="moon" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <path d="M20.4 14.7A8.7 8.7 0 0 1 9.3 3.6 8.7 8.7 0 1 0 20.4 14.7Z"/>
                      </svg>
                      <svg class="sun" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <circle cx="12" cy="12" r="4.1"/>
                        <path d="M12 2.5v2.2M12 19.3v2.2M4.6 4.6l1.6 1.6M17.8 17.8l1.6 1.6M2.5 12h2.2M19.3 12h2.2M4.6 19.4l1.6-1.6M17.8 6.2l1.6-1.6"/>
                      </svg>
                    </button>
                    <button class="icon-btn" id="navToggle" type="button" aria-label="Toggle menu" aria-expanded="false">☰</button>
                  </div>
                </div></div>
              </header>
              
          
              <main>
                <div class="wrap">
                  
                    
                  
                  
          
          
          
          <section class="auth bleed">
            <div class="auth-grid band-inner">
              <div class="auth-copy">
                <span class="auth-kicker">Welcome back</span>
                <h1 class="auth-title">Sign in</h1>
                <p class="auth-lede">
                  Your site keeps serving while you edit. Changes go live on the next
                  visit — there is nothing to publish and nothing to rebuild.
                </p>
                <ul class="auth-points">
                  <li>Your pages, photos and details, in forms</li>
                  <li>Switch theme without losing a word</li>
                  <li>Invoices and renewals in one place</li>
                </ul>
              </div>
          
              <div class="auth-card">
                <form method="post">
                  <input type="hidden" name="_csrf" value="gRIK3HGIJxR68sM4Q5EL.0bff81a10721e56aa8625ebccba60dfa">
                  <input type="hidden" name="redirect" value="/dashboard">
          
                  <label class="field">
                    <span class="lbl">Email</span>
                    <input type="email" name="email" value="zaproxy@example.com" placeholder="you@yourdomain.bt" required autofocus autocomplete="email">
                  </label>
          
                  <label class="field">
                    <span class="lbl">Password<span class="hint"><a class="auth-link" href="/forgot-password">Forgot?</a></span></span>
                    <input type="password" name="password" required autocomplete="current-password">
                    <span class="err">That email and password combination did not match.</span>
                  </label>
          
                  <button class="btn btn-accent btn-block btn-lg" type="submit">Open my dashboard</button>
                </form>
          
                <p class="auth-alt">
                  No workspace yet? <a class="auth-link" href="/signup">Create one</a>
                </p>
              </div>
            </div>
          </section>
          
          <style>
            .auth {
              background: var(--band); color: var(--band-fg);
              min-height: min(90svh, 760px);
              display: flex; align-items: center;
              padding: calc(var(--nav-h) + 2.4rem) 0 clamp(2.4rem, 6vw, 4rem);
            }
            .auth-grid {
              display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
              gap: clamp(1.8rem, 6vw, 5rem); align-items: center; width: 100%;
            }
          
            .auth-kicker {
              display: inline-flex; align-items: center; gap: .55rem;
              font-family: var(--mono); font-size: .7rem; font-weight: 500;
              letter-spacing: .16em; text-transform: uppercase; color: var(--emerald);
            }
            .auth-kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .7; }
             
            .auth .auth-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(3rem, 7.5vw, 6rem); line-height: .94;
              color: #fff; margin: .9rem 0 1.1rem;
            }
            .auth-lede { max-width: 42ch; color: var(--band-muted); font-size: 1.02rem; line-height: 1.6; margin: 0; }
            .auth-points { list-style: none; margin: 1.8rem 0 0; padding: 0; display: grid; gap: .55rem; }
            .auth-points li {
              display: flex; gap: .65rem; align-items: baseline;
              font-size: .93rem; color: rgba(255,255,255,.78);
            }
            .auth-points li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
          
            .auth-card {
              background: var(--surface); color: var(--ink);
              border: 1px solid var(--line); border-radius: var(--r-2xl);
              padding: clamp(1.5rem, 3.4vw, 2.4rem);
              box-shadow: 0 50px 100px -50px rgba(0,0,0,.85);
            }
            .auth-card .field:last-of-type { margin-bottom: 1.4rem; }
            .auth-link { color: var(--emerald-deep); font-weight: 600; }
            :root[data-theme="dark"] .auth-link { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .auth-link { color: var(--emerald); } }
            .auth-alt { margin: 1.2rem 0 0; text-align: center; font-size: .88rem; color: var(--muted); }
            .btn-lg { padding: 1rem 1.9rem; font-size: 1rem; }
          
            @media (max-width: 900px) {
              .auth { min-height: 0; padding-top: calc(var(--nav-h) + 1.6rem); }
              .auth-grid { grid-template-columns: 1fr; gap: 2rem; }
              .auth-points { display: none; }
            }
          </style>
          
                </div>
              </main>
          
              
              <footer class="site-footer">
                <div class="wrap footer-grid">
                  <div>
                    <span class="footer-name">WONS Sites</span>
                    <p class="footer-tag">A website you can keep up to date yourself.</p>
                  </div>
                  <nav class="footer-col" aria-label="Product">
                    <span class="label">Product</span>
                    <a href="/themes">Themes</a>
                    <a href="/#product">What you can change</a>
                    <a href="/#pricing">Pricing</a>
                    <a href="/docs">Docs</a>
                  </nav>
                  <nav class="footer-col" aria-label="Account">
                    <span class="label">Account</span>
                    <a href="/login">Log in</a>
                    <a href="/signup">Start your site</a>
                    <a href="/dashboard">Dashboard</a>
                  </nav>
                  <div>
                    <p class="footer-sub-head">Start with your email</p>
                    <p class="footer-sub-copy">It takes you straight to sign-up — free plan, no card needed.</p>
                    <form class="footer-sub" action="/signup" method="get">
                      <input type="email" name="email" placeholder="Your email address" aria-label="Email address">
                      <button class="sub-btn" type="submit" aria-label="Start your site">
                        <svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </button>
                    </form>
                  </div>
                </div>
                <div class="wrap footer-base">
                  <span>© 2026 WONS Sites. All rights reserved.</span>
                  <span>Made by WONS</span>
                </div>
              </footer>
              
            </div>
          
            <script nonce="-dfIRmMUKdxxdZ_IMFxwHg">
              var themeToggle = document.getElementById("themeToggle");
              if (themeToggle) themeToggle.addEventListener("click", function () {
                var root = document.documentElement;
                var current = root.getAttribute("data-theme");
                var systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
                var next = (current ? current === "dark" : systemDark) ? "light" : "dark";
                root.setAttribute("data-theme", next);
                try { localStorage.setItem("wons-sites-theme", next); } catch (e) {}
              });
          
              
              var navToggle = document.getElementById("navToggle");
              var topbar = document.getElementById("topbar");
              if (navToggle && topbar) navToggle.addEventListener("click", function () {
                var open = topbar.classList.toggle("open");
                navToggle.setAttribute("aria-expanded", open ? "true" : "false");
              });
          
              
              
              
              (function () {
                var bar = document.getElementById("topbar");
                if (!bar) return;
                var mark = function () {
                  bar.classList.toggle("stuck", window.scrollY > 72);
                };
                mark();
                window.addEventListener("scroll", mark, { passive: true });
              })();
          
              (function () {
                var path = location.pathname.replace(/\/+$/, "") || "/";
                var best = null, bestLen = -1;
                document.querySelectorAll(".nav a.link").forEach(function (a) {
                  var href = (a.getAttribute("href") || "").replace(/\/+$/, "") || "/";
                  var match = href === "/" ? path === "/" : (path === href || path.indexOf(href + "/") === 0);
                  if (match && href.length > bestLen) { best = a; bestLen = href.length; }
                });
                if (best) best.classList.add("active");
              })();
            </script>
          </body>
          </html>
          
          Parameter
          email
          Evidence
          password
          Solution

          This is an informational alert rather than a vulnerability and so there is nothing to fix.

      2. Content Security Policy (CSP) Report-Only Header Found (1)
        1. GET https://sites.wons.bt
          Alert tags
          Alert description

          The response contained a Content-Security-Policy-Report-Only header, this may indicate a work-in-progress implementation, or an oversight in promoting pre-Prod to Prod, etc.

          Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, including Cross Site Scripting (XSS) and data injection attacks. These attacks are used for everything from data theft to site defacement or distribution of malware. CSP provides a set of standard HTTP headers that allow website owners to declare approved sources of content that browsers should be allowed to load on that page — covered types are JavaScript, CSS, HTML frames, fonts, images and embeddable objects such as Java applets, ActiveX, audio and video files.

          Request
          Request line and header section (227 bytes)
          GET https://sites.wons.bt HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          
          
          Request body (0 bytes)
          Response
          Status line and header section (805 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:42:54 GMT
          Content-Type: text/html; charset=utf-8
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-iB8Q5DnSVjWx_AOLdlto8Q'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Set-Cookie: wons_csrf=y550JyNiyw54uLkFFzWS.e2ec5c27689fa4cf2714635ce48a4a48; Path=/; Max-Age=2592000; HttpOnly; SameSite=Lax
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          content-length: 81797
          
          
          Response body (81797 bytes)
          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>WONS Sites — your website, edited like a dashboard</title>
            <meta name="description" content="A website you can keep up to date yourself. Pick a look, fill in your pages, and it is live — no domain to buy, no developer, no rebuilds.">
            
              <link rel="icon" href="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfNHZ2NmczbWVkby5wbmc&amp;s=9821682f6dcdfe2a0cd279db1dd9c9d12d0cc8dda08970ee8913adbff07f2aee">
            
            <link rel="preload" href="/fonts/Manrope-500-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-italic-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="stylesheet" href="/fonts/fonts.css">
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              (function () {
                try {
                  var t = localStorage.getItem("wons-sites-theme");
                  if (t) document.documentElement.setAttribute("data-theme", t);
                } catch (e) {}
              })();
            </script>
            <style>
              :root {
                --emerald:      #0d9d63;
                --emerald-deep: #077a4b;
                --emerald-dark: #05603a;
                --emerald-soft: #e7f6ee;
                --emerald-line: #c6e8d6;
          
                --heading:      #1d3b2c;
                --cta-bg:       #1d4d33;
                --cta-bg-hover: #266040;
                --cta-fg:       #ffffff;
          
                --canvas:    #fdfcf8;
                --surface:   #ffffff;
                --surface-2: #f2f6ef;
                --ink:       #22302a;
                --ink-2:     #435248;
                --muted:     #5f6f66;
                --faint:     #8fa096;
                --line:      #e6e9df;
                --line-soft: #eef1e8;
          
                --warn:      #b4690e;
                --warn-soft: #fdf3e4;
                --bad:       #c8372c;
                --bad-soft:  #fdeeec;
                --ok:        var(--emerald);
          
                 
                --band:       #0f100f;
                --band-2:     #171a18;
                --band-fg:    #ffffff;
                --band-muted: #9aa39e;
                --band-line:  #2a2f2c;
                --band-card:  #d5dad3;
          
                --r-xs: 8px;
                --r:    12px;
                --r-lg: 18px;
                --r-xl: 26px;
                --r-2xl: 34px;
                --r-pill: 999px;
          
                --shadow-sm: 0 1px 2px rgba(16,30,24,.05);
                --shadow:    0 1px 2px rgba(16,30,24,.04), 0 12px 28px -18px rgba(16,30,24,.24);
                --shadow-lg: 0 32px 64px -34px rgba(10,40,28,.40);
                --ring:      0 0 0 3px rgba(13,157,99,.20);
          
                --display: "Fraunces", Georgia, "Times New Roman", serif;
                --text:    "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
                --mono:    ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
          
                --maxw: min(1280px, calc(100vw - 3em));
                --nav-h: 68px;
                color-scheme: light;
              }
          
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) {
                  --emerald:      #2fc98a;
                  --emerald-deep: #21b077;
                  --emerald-dark: #8ce8bf;
                  --emerald-soft: #10281f;
                  --emerald-line: #1d4436;
                  --heading:      #eef2f0;
                  --cta-bg:       #2fc98a;
                  --cta-bg-hover: #4dd69c;
                  --cta-fg:       #06120d;
                  --canvas:    #0b0f0e;
                  --surface:   #121817;
                  --surface-2: #182120;
                  --ink:       #eef2f0;
                  --ink-2:     #c3ccc9;
                  --muted:     #97a3a0;
                  --faint:     #6a7674;
                  --line:      #222c2a;
                  --line-soft: #1a2322;
                  --warn:      #e0a55a;
                  --warn-soft: #2a2113;
                  --bad:       #f0776a;
                  --bad-soft:  #2c1613;
                  --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                  --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                  --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                  --ring:      0 0 0 3px rgba(47,201,138,.26);
                  color-scheme: dark;
                }
              }
              :root[data-theme="dark"] {
                --emerald:      #2fc98a;
                --emerald-deep: #21b077;
                --emerald-dark: #8ce8bf;
                --emerald-soft: #10281f;
                --emerald-line: #1d4436;
                --heading:      #eef2f0;
                --cta-bg:       #2fc98a;
                --cta-bg-hover: #4dd69c;
                --cta-fg:       #06120d;
                --canvas:    #0b0f0e;
                --surface:   #121817;
                --surface-2: #182120;
                --ink:       #eef2f0;
                --ink-2:     #c3ccc9;
                --muted:     #97a3a0;
                --faint:     #6a7674;
                --line:      #222c2a;
                --line-soft: #1a2322;
                --warn:      #e0a55a;
                --warn-soft: #2a2113;
                --bad:       #f0776a;
                --bad-soft:  #2c1613;
                --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                --ring:      0 0 0 3px rgba(47,201,138,.26);
                color-scheme: dark;
              }
              *, *::before, *::after { box-sizing: border-box; }
              html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
              body {
                margin: 0;
                font-family: var(--text);
                font-size: 16px; line-height: 1.6; letter-spacing: -.006em;
                color: var(--ink); background: var(--canvas);
                -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
              }
              a { color: inherit; text-decoration: none; }
              ::selection { background: var(--emerald); color: #fff; }
              img { max-width: 100%; height: auto; }
              hr { border: 0; border-top: 1px solid var(--line); margin: 2rem 0; }
          
              h1, h2 { font-family: var(--display); margin: 0 0 .6rem; }
              h3, h4 { font-family: var(--text); margin: 0 0 .6rem; }
              h1 { font-size: clamp(2.5rem, 5.4vw, 3.9rem); font-weight: 620; line-height: 1.06; letter-spacing: -.015em; color: var(--heading); }
              h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); font-weight: 600; line-height: 1.12; letter-spacing: -.012em; color: var(--heading); }
              h3 { font-size: 1.16rem; font-weight: 750; line-height: 1.25; letter-spacing: -.015em; color: var(--heading); }
              h4 { font-size: .98rem; font-weight: 750; letter-spacing: -.01em; }
          
               
              body:not(.app) h1,
              body:not(.app) h2 { font-family: var(--text); font-weight: 800; letter-spacing: -.04em; }
              body:not(.app) h1 { font-size: clamp(2.6rem, 6vw, 4.6rem); line-height: .98; }
              body:not(.app) h2 { font-size: clamp(2rem, 4.4vw, 3.4rem); line-height: 1.02; }
          
               
              body:not(.app) .d-xl,
              .d-xl { font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
                      font-size: clamp(3rem, 8.6vw, 7rem); line-height: .92; margin: 0; color: var(--heading); }
              body:not(.app) .d-lg,
              .d-lg { font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
                      font-size: clamp(2.2rem, 5vw, 3.9rem); line-height: 1; margin: 0; color: var(--heading); }
              body:not(.app) .d-thin,
              .d-thin { font-family: var(--text); font-weight: 300; letter-spacing: -.035em;
                        font-size: clamp(2rem, 5.4vw, 4.2rem); line-height: 1.04; margin: 0; color: var(--heading); }
              p  { margin: 0 0 1rem; }
              .lede { font-size: clamp(1.02rem, 1.6vw, 1.18rem); line-height: 1.55; color: var(--muted); max-width: 48ch; }
              .muted { color: var(--muted); }
              .faint { color: var(--faint); }
              .tiny  { font-size: .82rem; }
              .label {
                font-family: var(--mono); font-size: .7rem; font-weight: 500;
                letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              }
              .kicker {
                display: inline-flex; align-items: center; gap: .55rem;
                font-family: var(--mono); font-size: .71rem; font-weight: 500;
                letter-spacing: .16em; text-transform: uppercase; color: var(--emerald-deep);
              }
              .kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .6; }
              code {
                font-family: var(--mono); font-size: .85em;
                background: var(--surface-2); border: 1px solid var(--line);
                border-radius: 6px; padding: .08em .4em; color: var(--ink-2);
              }
          
              .shell {
                min-height: 100vh; display: flex; flex-direction: column;
                overflow-x: clip;
              }
              .wrap { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              .topbar {
                position: sticky; top: 0; z-index: 60; height: var(--nav-h);
                display: flex; align-items: center;
                background: color-mix(in srgb, var(--canvas) 88%, transparent);
                backdrop-filter: saturate(1.6) blur(14px); -webkit-backdrop-filter: saturate(1.6) blur(14px);
                border-bottom: 1px solid var(--line);
              }
              .topbar .bar { display: flex; align-items: center; gap: 1.4rem; width: 100%; }
          
               
              body:not(.app) .topbar {
                position: fixed; top: 0; left: 0; right: 0; height: auto;
                padding: 14px 0; background: none; border: 0;
                backdrop-filter: none; -webkit-backdrop-filter: none;
                transition: padding .25s ease;
              }
               
              body:not(.app) .topbar .bar {
                position: relative;
                padding: .5rem .55rem .5rem 1.15rem; border-radius: var(--r-pill);
                background: color-mix(in srgb, var(--surface) 92%, transparent);
                border: 1px solid var(--line); box-shadow: var(--shadow-sm);
                backdrop-filter: saturate(1.5) blur(16px); -webkit-backdrop-filter: saturate(1.5) blur(16px);
                transition: background .25s ease, border-color .25s ease, box-shadow .25s ease;
              }
          
               
              body.hero-top:not(.app) .topbar .bar {
                background: rgba(255, 255, 255, .12);
                border-color: rgba(255, 255, 255, .22);
                box-shadow: none;
              }
              body.hero-top:not(.app) .topbar .brand,
              body.hero-top:not(.app) .topbar .nav a.link,
              body.hero-top:not(.app) .topbar .nav-actions a.link { color: #fff; }
              body.hero-top:not(.app) .topbar .nav a.link:hover,
              body.hero-top:not(.app) .topbar .nav-actions a.link:hover { color: #fff; background: rgba(255,255,255,.16); }
              body.hero-top:not(.app) .topbar .icon-btn { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.24); color: #fff; }
              body.hero-top:not(.app) .topbar .icon-btn:hover { border-color: #fff; color: #fff; }
              body.hero-top:not(.app) .topbar .brand .mark { box-shadow: none; }
          
              body:not(.app) .topbar.stuck { padding: 8px 0; }
              body.hero-top:not(.app) .topbar.stuck .bar {
                background: color-mix(in srgb, var(--surface) 94%, transparent);
                border-color: var(--line); box-shadow: var(--shadow);
              }
              body.hero-top:not(.app) .topbar.stuck .brand { color: var(--heading); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link { color: var(--ink-2); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link:hover,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn { background: var(--surface); border-color: var(--line); color: var(--muted); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
          
              .brand { display: inline-flex; align-items: center; gap: .6rem; font-family: var(--text); font-weight: 800; letter-spacing: -.03em; font-size: 1.05rem; color: var(--heading); flex-shrink: 0; }
              .brand .mark {
                width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
                background: linear-gradient(145deg, var(--emerald), var(--emerald-dark));
                color: #fff; font-size: .82rem; font-weight: 800; letter-spacing: -.02em;
                box-shadow: 0 6px 14px -6px rgba(7,122,75,.7);
              }
              :root[data-theme="dark"] .brand .mark { color: #06120d; }
              .brand .mark-img { background: none; box-shadow: none; object-fit: contain; border-radius: 7px; }
              .brand .mark-dark { display: none; }
              :root[data-theme="dark"] .brand .mark-light { display: none; }
              :root[data-theme="dark"] .brand .mark-dark { display: block; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .brand .mark-light { display: none; }
                :root:not([data-theme="light"]) .brand .mark-dark { display: block; }
              }
          
              .nav { display: flex; align-items: center; justify-content: center; gap: .4rem; flex: 1; }
              .nav a.link, .nav-actions a.link {
                display: inline-flex; align-items: center; gap: .42rem;
                padding: .45rem .75rem; border-radius: var(--r-xs);
                font-size: .93rem; font-weight: 600; color: var(--ink-2);
                transition: color .15s, background .15s;
              }
              .nav a.link:hover, .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              .nav a.link.active { color: var(--heading); }
              .nav-actions { display: flex; align-items: center; gap: .45rem; flex-shrink: 0; }
          
              .icon-btn {
                display: grid; place-items: center; width: 36px; height: 36px; flex-shrink: 0;
                border: 1px solid var(--line); border-radius: var(--r-xs);
                background: var(--surface); color: var(--muted); cursor: pointer;
                font: inherit; font-size: .95rem; padding: 0;
                transition: border-color .15s, color .15s;
              }
              .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .theme-toggle .sun { display: none; } .theme-toggle .moon { display: block; }
              :root[data-theme="dark"] .theme-toggle .sun { display: block; }
              :root[data-theme="dark"] .theme-toggle .moon { display: none; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .theme-toggle .sun { display: block; }
                :root:not([data-theme="light"]) .theme-toggle .moon { display: none; }
              }
              #navToggle { display: none; }
          
              @media (max-width: 860px) {
                #navToggle { display: grid; }
                .nav-actions a.link.nav-login { display: none; }
                .nav {
                  display: none; position: absolute; top: var(--nav-h); left: 0; right: 0;
                  flex-direction: column; align-items: stretch; gap: .1rem;
                  padding: .8rem clamp(1.1rem, 4vw, 2rem) 1.2rem;
                  background: var(--surface); border-bottom: 1px solid var(--line);
                  box-shadow: var(--shadow-lg);
                }
                .topbar.open .nav { display: flex; }
          
                 
                body:not(.app) .nav {
                  top: calc(100% + .5rem); left: .25rem; right: .25rem;
                  border: 1px solid var(--line); border-radius: var(--r-lg);
                  padding: .6rem .7rem .8rem;
                }
                body.hero-top:not(.app) .topbar.open .nav a.link,
                body:not(.app) .topbar.open .nav a.link { color: var(--ink-2); }
                body.hero-top:not(.app) .topbar.open .nav a.link:hover { background: var(--surface-2); color: var(--heading); }
              }
          
               
              @media (max-width: 620px) {
                body:not(.app) .topbar .brand { font-size: 0; gap: 0; }
                body:not(.app) .topbar .brand .mark { font-size: .82rem; }
                body:not(.app) .topbar .bar { gap: .6rem; padding-left: .55rem; }
                body:not(.app) .topbar .nav-actions { gap: .35rem; }
                body:not(.app) .topbar .nav-actions .btn { padding: .5rem .85rem; font-size: .82rem; }
                body:not(.app) .icon-btn { width: 34px; height: 34px; }
              }
          
              main { flex: 1; padding: clamp(2.2rem, 5vw, 4rem) 0 clamp(3.5rem, 7vw, 5.5rem); }
               
              body:not(.app) main { padding-top: calc(var(--nav-h) + clamp(1.4rem, 4vw, 2.6rem)); }
              body.hero-top:not(.app) main { padding-top: 0; }
               
              body.hero-top:not(.app) .flash { margin-top: calc(var(--nav-h) + 1rem); }
              body.app main { padding: 0; }
              body.app .wrap { max-width: none; padding: 0; }
          
               
              .bleed { width: 100vw; margin-left: calc(50% - 50vw); }
          
              .site-footer {
                background: var(--band); color: var(--band-fg);
                padding: clamp(2.4rem, 5vw, 3.6rem) 0 1.2rem;
                overflow: hidden;
              }
              .site-footer .footer-name,
              .site-footer .footer-sub-head { color: var(--band-fg); }
              .site-footer .footer-tag,
              .site-footer .footer-sub-copy,
              .site-footer .footer-col a { color: var(--band-muted); }
              .site-footer .label { color: #6f7a75; }
              .site-footer .footer-col a:hover { color: var(--band-fg); }
              .site-footer input[type=email] {
                background: var(--band-2); border-color: var(--band-line); color: var(--band-fg);
              }
              .site-footer input[type=email]::placeholder { color: #6f7a75; }
              .site-footer .sub-btn { background: var(--emerald); color: #06120d; }
              .site-footer .sub-btn:hover { background: var(--emerald-deep); color: #fff; }
              .site-footer .footer-base { border-top-color: var(--band-line); color: #6f7a75; }
              .footer-grid {
                display: grid; grid-template-columns: 1.4fr .8fr .8fr 1.2fr; gap: 2rem;
                padding-bottom: clamp(1.4rem, 3vw, 2.2rem);
              }
              .footer-name {
                font-family: var(--text); font-weight: 800; letter-spacing: -.03em;
                font-size: 1.05rem; color: var(--heading);
              }
              .footer-tag { margin: .5rem 0 0; font-size: .88rem; color: var(--muted); max-width: 30ch; }
              .footer-col .label { display: block; margin-bottom: .7rem; }
              .footer-col a { display: block; padding: .24rem 0; font-size: .9rem; color: var(--muted); }
              .footer-col a:hover { color: var(--emerald-deep); }
              .footer-sub-head { font-size: .95rem; font-weight: 750; color: var(--heading); margin: 0 0 .35rem; }
              .footer-sub-copy { font-size: .84rem; color: var(--muted); margin: 0 0 .8rem; max-width: 32ch; }
              .footer-sub { display: flex; gap: .5rem; }
              .footer-sub input[type=email] { flex: 1; min-width: 0; }
              .footer-sub .sub-btn {
                display: grid; place-items: center; width: 46px; flex-shrink: 0;
                border: 0; border-radius: var(--r); cursor: pointer;
                background: var(--cta-bg); color: var(--cta-fg); font: inherit;
                transition: background .15s;
              }
              .footer-sub .sub-btn:hover { background: var(--cta-bg-hover); }
              .footer-base {
                display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
                border-top: 1px solid var(--line-soft); padding-top: 1.2rem;
                font-family: var(--mono); font-size: .72rem; color: var(--faint);
              }
              @media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
              @media (max-width: 520px) { .footer-grid { grid-template-columns: 1fr; gap: 1.4rem; } }
          
              .btn {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-family: var(--text); font-weight: 600; font-size: .95rem;
                line-height: 1; cursor: pointer; white-space: nowrap; text-decoration: none;
                padding: .78rem 1.3rem; border-radius: var(--r); border: 1px solid transparent;
                transition: transform .08s, filter .15s, border-color .15s, background .15s, color .15s;
              }
              .btn:active { transform: translateY(1px); }
              .btn-primary { background: var(--ink); color: var(--canvas); }
              .btn-primary:hover { filter: brightness(1.22); }
              :root[data-theme="dark"] .btn-primary { background: var(--emerald); color: #06120d; }
              .btn-accent {
                background: var(--cta-bg); color: var(--cta-fg);
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
              }
              .btn-accent:hover { background: var(--cta-bg-hover); }
              .btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line); box-shadow: var(--shadow-sm); }
              .btn-ghost:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .btn-quiet { background: transparent; color: var(--muted); padding-left: .6rem; padding-right: .6rem; }
              .btn-quiet:hover { color: var(--ink); }
              .btn-sm { padding: .5rem .85rem; font-size: .86rem; border-radius: var(--r-xs); }
              .btn-block { width: 100%; }
              .btn[disabled] { opacity: .5; cursor: not-allowed; }
          
               
              body:not(.app) .btn { border-radius: var(--r-pill); padding: .88rem 1.6rem; }
              body:not(.app) .btn-sm { padding: .55rem 1.05rem; font-size: .86rem; }
              body:not(.app) form button:not([class]) { border-radius: var(--r-pill); }
              .btn-onband { background: #fff; color: var(--band); }
              .btn-onband:hover { background: #fff; filter: brightness(.94); }
              .btn-outline-band { background: transparent; color: #fff; border-color: rgba(255,255,255,.32); }
              .btn-outline-band:hover { border-color: #fff; background: rgba(255,255,255,.08); }
          
               
              .band { position: relative; padding: clamp(3rem, 7vw, 6rem) 0; }
               
              .band-dark + .band-dark { padding-top: 0; }
              .band-dark { background: var(--band); color: var(--band-fg); }
               
              body:not(.app) .band-dark h1, body:not(.app) .band-dark h2,
              body:not(.app) .band-dark h3, body:not(.app) .band-dark .d-xl,
              body:not(.app) .band-dark .d-lg, body:not(.app) .band-dark .d-thin { color: var(--band-fg); }
              .band-dark .muted, .band-dark .lede { color: var(--band-muted); }
              .band-dark .label { color: #6f7a75; }
              .band-dark .kicker { color: var(--emerald); }
               
              .band-paper { background: var(--surface-2); color: var(--ink); }
              .band-accent { background: var(--emerald-deep); color: #fff; }
              body:not(.app) .band-accent h2, body:not(.app) .band-accent h3,
              body:not(.app) .band-accent .d-lg, body:not(.app) .band-accent .d-xl { color: #fff; }
              .band-accent .lede, .band-accent .muted { color: rgba(255,255,255,.78); }
              .band-accent .label, .band-accent .kicker { color: rgba(255,255,255,.66); }
              .band-accent .kicker::before { background: currentColor; }
              .band-inner { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              form button:not([class]) {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-weight: 600; cursor: pointer; color: var(--cta-fg); border: 0;
                background: var(--cta-bg);
                border-radius: var(--r); padding: .78rem 1.4rem;
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
                transition: background .15s, transform .08s;
              }
              form button:not([class]):hover { background: var(--cta-bg-hover); }
              form button:not([class]):active { transform: translateY(1px); }
          
              .card {
                background: var(--surface); border: 1px solid var(--line);
                border-radius: var(--r-lg); padding: 1.5rem 1.6rem; box-shadow: var(--shadow);
              }
              .card.tight { padding: 1.1rem 1.2rem; }
              .card.flush { padding: 0; overflow: hidden; }
              .panel { background: var(--surface-2); border: 1px solid var(--line-soft); border-radius: var(--r); padding: 1.1rem 1.2rem; }
              .stack > * + * { margin-top: 1.1rem; }
              .row { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
              .row-between { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
              .grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
              .grid-2 { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
              .center-narrow { max-width: 460px; margin: 0 auto; }
          
              .pill {
                display: inline-flex; align-items: center; gap: .35rem;
                font-family: var(--mono); font-size: .68rem; font-weight: 500;
                letter-spacing: .08em; text-transform: uppercase;
                padding: .26rem .6rem; border-radius: 999px;
                background: var(--surface-2); color: var(--muted); border: 1px solid var(--line);
              }
              .pill { align-self: flex-start; }
              .pill.ok   { background: var(--emerald-soft); color: var(--emerald-deep); border-color: var(--emerald-line); }
              .pill.warn { background: var(--warn-soft); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 32%, transparent); }
              .pill.bad  { background: var(--bad-soft); color: var(--bad); border-color: color-mix(in srgb, var(--bad) 30%, transparent); }
              .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
              .field { display: block; margin-bottom: 1.05rem; }
              .field > .lbl { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; font-size: .88rem; font-weight: 600; margin-bottom: .38rem; }
              .field > .lbl .hint { font-weight: 400; font-size: .8rem; color: var(--faint); }
              input[type=text], input[type=email], input[type=password], input[type=url],
              input[type=number], input[type=date], input[type=search], textarea, select {
                display: block; width: 100%; font: inherit; font-size: .95rem; color: var(--ink);
                background: var(--surface); border: 1px solid var(--line); border-radius: var(--r);
                padding: .72rem .9rem; transition: border-color .15s, box-shadow .15s;
              }
              textarea { min-height: 120px; resize: vertical; line-height: 1.55; }
              input::placeholder, textarea::placeholder { color: var(--faint); }
              input:focus, textarea:focus, select:focus { outline: 0; border-color: var(--emerald); box-shadow: var(--ring); }
              input[aria-invalid="true"], textarea[aria-invalid="true"] { border-color: var(--bad); }
              input[type=checkbox], input[type=radio] { accent-color: var(--emerald); width: auto; }
              .err { display: block; color: var(--bad); font-size: .84rem; font-weight: 500; margin-top: .35rem; }
              fieldset { border: 0; margin: 0; padding: 0; }
          
              .progress { height: 6px; border-radius: 999px; background: var(--surface-2); overflow: hidden; border: 1px solid var(--line-soft); }
              .progress > i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--emerald), var(--emerald-deep)); }
          
              .flash {
                display: flex; align-items: flex-start; gap: .6rem;
                background: var(--surface-2); color: var(--ink-2);
                border: 1px solid var(--line); border-radius: var(--r);
                padding: .8rem 1.05rem; margin-bottom: 1.4rem; font-weight: 500; font-size: .93rem;
                animation: flashIn .22s ease;
              }
              .flash::before { content: "→"; font-weight: 800; color: var(--muted); }
              .flash.warn {
                background: #fdf6e7; color: #8a5a00; border-color: #f0dcae;
              }
              :root[data-theme="dark"] .flash.warn { color: #8a5a00; }
              .flash.warn::before { content: "!"; }
              .flash.ok {
                background: #eaf7f0; color: #10633f; border-color: #bfe3d0;
              }
              :root[data-theme="dark"] .flash.ok { color: #10633f; }
              .flash.ok::before { content: "\2713"; color: #10633f; }
              .flash.error {
                background: #fdeceb; color: #8c2b22; border-color: #f3c8c4;
              }
              :root[data-theme="dark"] .flash.error { color: #8c2b22; }
              .flash.error::before { content: "\2715"; color: #8c2b22; }
              @keyframes flashIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
              .auth-centered { text-align: center; padding-top: clamp(.2rem, 2vw, 1rem); }
              .auth-centered .kicker { justify-content: center; }
              .auth-centered .lede { margin-left: auto; margin-right: auto; }
              .auth-centered .card { text-align: left; }
          
              .ticks { list-style: none; margin: 1.1rem 0; padding: 0; display: grid; gap: .55rem; font-size: .93rem; }
              .ticks li { display: flex; gap: .6rem; align-items: baseline; color: var(--ink-2); }
              .ticks li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
          
              table { width: 100%; border-collapse: collapse; }
              th, td { text-align: left; padding: .7rem .6rem; font-size: .92rem; }
              th { font-family: var(--mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--faint); font-weight: 500; border-bottom: 1px solid var(--line); }
              td { border-bottom: 1px solid var(--line-soft); }
              tr:last-child td { border-bottom: 0; }
          
              .page-head { margin-bottom: clamp(1.6rem, 3vw, 2.4rem); max-width: 58ch; }
              .page-head .kicker { margin-bottom: .9rem; }
              .backlink { display: inline-flex; align-items: center; gap: .35rem; color: var(--faint); font-size: .88rem; margin-bottom: .9rem; }
              .backlink:hover { color: var(--emerald-deep); }
          
              @media (prefers-reduced-motion: reduce) {
                *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
              }
            </style>
          <script src="/__wons/sdk/pocketbase.umd.js"></script><script src="/__wons/sdk/wons.umd.js" data-wons-global="Wons"></script></head>
          <body class=" hero-top">
            <div class="shell">
              
              <header class="topbar" id="topbar">
                <div class="wrap"><div class="bar">
                  <a class="brand" href="/">
                    
                      <img class="mark mark-img mark-light"
                           src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfamd1aGFzNnMzcC5wbmc&amp;s=3ac7de0667a74e2dd9a505b782187df00961b7c1becb2295ec58ea7be28ed09d" alt="" width="30" height="30">
                      
                        <img class="mark mark-img mark-dark" src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfZmx5MHF4YXBrOS5wbmc&amp;s=394107603c20e2e16f57f48cc71aeda97460e22e87ebcf8ec27284364a7ea208" alt="" width="30" height="30">
                      
                    
                    WONS Sites
                  </a>
                  <nav class="nav" id="nav">
                    
                      <a class="link" href="/#product">Features</a>
                    
                      <a class="link" href="/themes">Themes</a>
                    
                      <a class="link" href="/#pricing">Pricing</a>
                    
                      <a class="link" href="/docs">Docs</a>
                    
                  </nav>
                  <div class="nav-actions">
                    
                      <a class="link nav-login" href="/login">Log in</a>
                      <a class="btn btn-accent btn-sm" href="/signup">Start Free</a>
                    
                    <button class="icon-btn theme-toggle" id="themeToggle" type="button" aria-label="Toggle dark mode">
                      <svg class="moon" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <path d="M20.4 14.7A8.7 8.7 0 0 1 9.3 3.6 8.7 8.7 0 1 0 20.4 14.7Z"/>
                      </svg>
                      <svg class="sun" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <circle cx="12" cy="12" r="4.1"/>
                        <path d="M12 2.5v2.2M12 19.3v2.2M4.6 4.6l1.6 1.6M17.8 17.8l1.6 1.6M2.5 12h2.2M19.3 12h2.2M4.6 19.4l1.6-1.6M17.8 6.2l1.6-1.6"/>
                      </svg>
                    </button>
                    <button class="icon-btn" id="navToggle" type="button" aria-label="Toggle menu" aria-expanded="false">☰</button>
                  </div>
                </div></div>
              </header>
              
          
              <main>
                <div class="wrap">
                  
                    
                  
                  
          
          
          <section class="hero bleed">
            <div class="hero-art" aria-hidden="true">
              
                
                  <div class="hero-shot hs-a">
                    <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-b">
                    <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-c">
                    <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
              
            </div>
            <div class="hero-veil" aria-hidden="true"></div>
          
            <div class="hero-inner band-inner">
              <div class="hero-meta">
                
                
                <div class="hm">
                  <span class="hm-k">Plan</span>
                  <span class="hm-v">Free forever</span>
                  <span class="hm-n">No card, nothing to cancel</span>
                </div>
                
                <div class="hm">
                  <span class="hm-k">Address</span>
                  <span class="hm-v">yourname.sites.wons.bt</span>
                  <span class="hm-n">Included the moment you sign up</span>
                </div>
                
                <div class="hm hm-last">
                  <span class="hm-k">Themes</span>
                  <span class="hm-v">15 to choose from</span>
                  <span class="hm-n">Switch any time, content stays</span>
                </div>
                
              </div>
          
              <div class="hero-body">
                <h1 class="hero-title">Build a website.<br>Share your world.</h1>
                <div class="hero-foot">
                  <div class="hero-actions">
                    <a class="btn btn-accent btn-lg" href="/signup">Start free
                      <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                    </a>
                    <a class="btn btn-outline-band btn-lg" href="#looks">See the themes</a>
                  </div>
                  <p class="hero-note">
                    For shops, schools, communities, creators and small organisations.
                    No coding, and nothing to buy before you begin.
                  </p>
                </div>
              </div>
            </div>
          </section>
          
          
          <section class="section reasons" id="why">
            <h2 class="d-xl reasons-title rv">Reasons to<br>start today</h2>
            <div class="reasons-copy rv">
              <p>
                <em>A website you can keep up to date yourself.</em> Most sites go stale
                because changing one line means calling whoever built it. Here every
                part of the page is a form — <em>a rate, a menu, an opening hour, a
                photograph</em> — and the change is live on the next visit.
              </p>
              <p>
                Your content lives here. <em>Your site can stay wherever it is hosted
                today</em>, reading everything from one address.
              </p>
            </div>
          </section>
          
          
          
          <section class="section statement">
            <p class="d-thin statement-line rv">A brochure site costs<br>Nu. 40,000 – 90,000 to rebuild</p>
            <div class="range rv">
              <span class="range-a">Rebuild</span>
              <span class="range-arrow" aria-hidden="true">
                <svg viewBox="0 0 120 12" preserveAspectRatio="none"><path d="M2 6h108M104 2l7 4-7 4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
              </span>
              <span class="range-b">Free</span>
              <span class="range-tail">to start here</span>
            </div>
          </section>
          
          
          <section class="section tilt-section" id="product">
            <div class="tilt-head rv">
              <span class="kicker">Yours to change</span>
              <h2>The things that actually go out of date.</h2>
            </div>
            <div class="tilt-row" aria-label="Examples of content you edit yourself">
              
                <figure class="tilt-card ct-a">
                  <span class="tc-field">Room rate</span>
                  <span class="tc-value">Nu. 3,500 / night</span>
                  <figcaption class="tc-note">Before the season turns</figcaption>
                </figure>
              
                <figure class="tilt-card ct-b">
                  <span class="tc-field">Today&#39;s menu</span>
                  <span class="tc-value">Ema datshi, red rice</span>
                  <figcaption class="tc-note">From your phone</figcaption>
                </figure>
              
                <figure class="tilt-card ct-c">
                  <span class="tc-field">Opening hours</span>
                  <span class="tc-value">Closed for Losar</span>
                  <figcaption class="tc-note">Set it and forget it</figcaption>
                </figure>
              
                <figure class="tilt-card ct-d">
                  <span class="tc-field">Team</span>
                  <span class="tc-value">Pema — Front desk</span>
                  <figcaption class="tc-note">A new photo when someone joins</figcaption>
                </figure>
              
                <figure class="tilt-card ct-e">
                  <span class="tc-field">Tour dates</span>
                  <span class="tc-value">Mar 14 – Mar 22</span>
                  <figcaption class="tc-note">Next spring, added early</figcaption>
                </figure>
              
                <figure class="tilt-card ct-f">
                  <span class="tc-field">Notice</span>
                  <span class="tc-value">Road open again</span>
                  <figcaption class="tc-note">Across the top of every page</figcaption>
                </figure>
              
            </div>
          </section>
          
          
          <section class="band band-dark bleed" id="how">
            <div class="band-inner">
              <h2 class="d-lg steps-title">How it goes</h2>
              <p class="steps-sub">Three screens between an empty account and a site people can read.</p>
          
              <div class="steps">
                
                  <details class="step" open>
                    <summary class="step-head">
                      <span class="step-n">01</span>
                      <span class="step-kind">Sign up</span>
                      <span class="step-time">About a minute</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Create your workspace</h3>
                        <div class="step-tags">
                          <span class="step-tag">Free plan</span><span class="step-tag">No card</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">One form. An organisation name, an email and a password.</p>
                        <p class="step-body">Your workspace is created and you are taken straight into the dashboard. The email confirmation is for account recovery — it does not hold anything up.</p>
                        <a class="btn btn-accent btn-sm" href="/signup">Create a workspace</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">02</span>
                      <span class="step-kind">Fill it in</span>
                      <span class="step-time">As long as you like</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Put your content in</h3>
                        <div class="step-tags">
                          <span class="step-tag">Forms</span><span class="step-tag">Your images</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Pages, photos, contact details, opening hours — in forms, not code.</p>
                        <p class="step-body">Photographs are stripped of their location data on upload and served through links that expire, so an address in a camera&#39;s metadata never reaches the public site.</p>
                        <a class="btn btn-accent btn-sm" href="#product">See what you can change</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">03</span>
                      <span class="step-kind">Go live</span>
                      <span class="step-time">One page of instructions</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Point your site here</h3>
                        <div class="step-tags">
                          <span class="step-tag">One file</span><span class="step-tag">We help</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Use the address that comes with the account, or your own domain.</p>
                        <p class="step-body">Dashboard → Install generates one index.html or index.php for your host, with your title, description and social preview already in it. Drop it in place and the site reads everything from here.</p>
                        <a class="btn btn-accent btn-sm" href="/docs">Read the install guide</a>
                      </div>
                    </div>
                  </details>
                
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed" id="looks">
            <div class="band-inner">
              <div class="looks-head">
                <h2 class="d-lg">Start with a<br>design you love</h2>
                <div class="looks-aside">
                  <span class="looks-count">15 themes</span>
                  <p class="looks-note">
                    Every card below is the theme itself, rendering the same demo site with
                    the same code your own site would run. Nothing here is a screenshot
                    that can drift out of date.
                  </p>
                </div>
              </div>
          
              <div class="looks">
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Vantage</h3>
                      <p class="look-tag">Dark-first tech and professional services.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#2dd4bf" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#22d3ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#e7edf3" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0b0d10" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#171c22" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#vantage">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Aster</h3>
                      <p class="look-tag">Clean editorial layout for hotels, offices and organisations.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#5b3428" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#c99b3d" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#1d2422" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#f8f5ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#eae2d4" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#aster">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Verdant</h3>
                      <p class="look-tag">Dark Botanical Luxe Theme</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#c39a4e" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#e0b674" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#f0e9d8" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0d1712" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#152219" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#verdant">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
              </div>
          
              <div class="looks-foot">
                <a class="btn btn-onband" href="/themes">
                  Browse all 15 themes
                  <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                </a>
                <span class="looks-more">Switching later never touches what you wrote.</span>
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed band-tight">
            <div class="band-inner">
              <div class="feat-head">
                <h2 class="d-lg">Works with the host<br>you already have</h2>
                <a class="btn btn-onband" href="/signup">Start your site</a>
              </div>
              <div class="feats">
                
                  <div class="feat">
                    <span class="feat-n">01</span>
                    <h3 class="feat-title">Everything in one place</h3>
                    <p class="feat-body">Your pages, photos, menus, opening hours, staff and services. Change them in a form; the site shows the change on the next visit.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">02</span>
                    <h3 class="feat-title">An address, included</h3>
                    <p class="feat-body">Every site gets its own address the moment you create it, so there is nothing to buy before you begin. Bring your own domain later if you want one.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">03</span>
                    <h3 class="feat-title">Themes you can switch</h3>
                    <p class="feat-body">Change how the site looks without touching a word of what you wrote. Your colours, logo and type carry across.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">04</span>
                    <h3 class="feat-title">We help you go live</h3>
                    <p class="feat-body">Already have a domain or a host? Tell us and we will set it up with you. There is one small file to put in place, and we will walk you through it.</p>
                  </div>
                
              </div>
            </div>
          </section>
          
          
          <section class="band band-paper bleed" id="pricing">
            <div class="band-inner">
              <div class="price-head">
                <h2 class="d-lg">Start free.<br>Pay when it earns it.</h2>
                <p class="price-sub">
                  Priced against what a rebuild costs, not against what a page of HTML
                  costs. Every plan keeps the site current instead of shipping it once.
                </p>
              </div>
          
              
                <article class="plan-hero">
                  <div class="plan-hero-main">
                    <span class="plan-kicker">Free</span>
                    <p class="plan-tagline">Your site online at no cost, supported by adverts.</p>
                    <div class="plan-price">Free<span>forever</span></div>
                    <p class="plan-anchor">No money. Your pages carry adverts instead.</p>
                    <a class="btn btn-onband btn-block btn-lg" href="/signup?plan=free">Choose Free</a>
                    <p class="plan-note">No card. Nothing to cancel.</p>
                  </div>
                  <ul class="plan-list">
                    <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                  </ul>
                </article>
          
                
                  <div class="ladder-head">
                    <h3>Outgrown the adverts?</h3>
                    <p>Paid plans remove them, from Nu. 299 a year.</p>
                  </div>
                  <div class="ladder">
                    
                      <a class="ladder-item" href="/signup?plan=lifesaver">
                        <span class="ladder-name">Life Saver</span>
                        <span class="ladder-price">Nu. 299<span>per year</span></span>
                        <span class="ladder-note">Supported by local Ads</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=starter">
                        <span class="ladder-name">Starter</span>
                        <span class="ladder-price">Nu. 999<span>per year</span></span>
                        <span class="ladder-note">One site, the essentials.</span>
                      </a>
                    
                      <a class="ladder-item ladder-best" href="/signup?plan=business">
                        <span class="ladder-name">Business <em>most chosen</em></span>
                        <span class="ladder-price">Nu. 1,599<span>per year</span></span>
                        <span class="ladder-note">More space, Full analytics.</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=agency">
                        <span class="ladder-name">Agency</span>
                        <span class="ladder-price">Nu. 2,599<span>per year</span></span>
                        <span class="ladder-note">Triple pack, white-labelled.</span>
                      </a>
                    
                  </div>
          
                  <details class="compare">
                    <summary>Compare every plan in full</summary>
                    <div class="compare-grid">
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Free</span>
                          <div class="compare-price">Free<span>forever</span></div>
                          <p class="compare-anchor">No money. Your pages carry adverts instead.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=free">Choose Free</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Life Saver</span>
                          <div class="compare-price">Nu. 299<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 25 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Local adverts only</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=lifesaver">Choose Life Saver</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Starter</span>
                          <div class="compare-price">Nu. 999<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 83 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>50 MB assets</li><li>Free themes included</li><li>White-label dashboard</li><li>Email Support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=starter">Start with Starter</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Business</span>
                          <div class="compare-price">Nu. 1,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 800 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>2 sites, 2 domains</li><li>200 MB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics &#43; priority support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=business">Choose Business</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Agency</span>
                          <div class="compare-price">Nu. 2,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 866 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>3 sites, 3 domains</li><li>1 GB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=agency">Talk to us</a>
                        </div>
                      
                    </div>
                  </details>
                
              
            </div>
          </section>
          
          
          <section class="section faq-section" id="questions">
            <div class="faq-head rv">
              <h2 class="d-lg">Answering the<br>main things</h2>
              <p class="faq-sub">If yours is not here, write to us — a person in Thimphu answers.</p>
            </div>
            <div class="faq rv">
              
                <details class="qa" open>
                  <summary>
                    <span class="qa-q">Do I need to buy a domain?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. Your site gets an address the moment you create it and works straight away. If you would rather use your own domain, you can add it later without starting again — and we will help you point it here.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">I already have a website. Do I throw it away?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. If you like how it looks, it can keep its host and its address and take its content from here instead — one small file changes hands and we set that up with you. If you do not like how it looks, pick a theme.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens when I get stuck?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">You write to us and a person in Thimphu answers. Setting up a domain, moving an old site across, or a theme built for you — those are things we do, not things you are left to work out.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Can I change theme after the site is live?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Yes, and it does not touch a word of what you wrote. Content and look are stored separately: the theme is three files served from here, your content is the data behind them. Switch, look at it, switch back if you prefer the old one.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens if I stop paying?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">The site stays where it is and starts serving its own maintenance page instead of your content, and we email you every day until it is sorted. Nothing is deleted while that is going on — renew and the same pages come straight back.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Who can see the images I upload?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Only people you send to your site. Image files are not reachable by guessing a URL: the site payload carries signed links that expire, and the stored file paths are never published.</p>
                </details>
              
            </div>
          </section>
          
          
          <section class="section" id="themes">
            <div class="maker rv">
              <div>
                <span class="kicker">For designers &amp; developers <span class="pill">soon</span></span>
                <h3 class="maker-title">Build a theme and sell it here.</h3>
                <p class="maker-body">
                  Set your own price, keep most of it, withdraw from your wallet when you
                  like. Not open yet — no submissions and no date promised, but it is
                  being built.
                </p>
              </div>
            </div>
          </section>
          
          
          <section class="closing rv">
            <h2 class="d-xl closing-title">Your idea deserves<br>a beautiful home.</h2>
            <p class="closing-sub">Your content is already written — put it somewhere you can change it.</p>
            <a class="btn btn-accent btn-lg" href="/signup">Start free
              <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
            </a>
          </section>
          
          <style>
             
            .hero {
              position: relative; isolation: isolate; overflow: hidden;
              background: var(--band); color: var(--band-fg);
              min-height: min(94svh, 820px);
              display: flex; align-items: stretch;
              padding: calc(var(--nav-h) + 2.2rem) 0 clamp(2rem, 4vw, 3.2rem);
            }
            .hero-inner { display: flex; flex-direction: column; justify-content: space-between; gap: 2rem; width: 100%; }
          
             
            .hero-art { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
            .hero-shot {
              position: absolute; width: clamp(320px, 33vw, 560px); aspect-ratio: 16 / 10;
              border-radius: 20px; overflow: hidden; line-height: 0;
              box-shadow: 0 60px 120px -40px rgba(0,0,0,.9);
              border: 1px solid rgba(255,255,255,.10);
              background: var(--surface);
            }
            .hero-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .35));
              pointer-events: none;
            }
            .hs-a { right: 4%;  top: 12%; transform: rotate(4deg); }
            .hs-b { right: 27%; top: 34%; transform: rotate(-5deg); opacity: .82; }
            .hs-c { right: 12%; bottom: -6%; transform: rotate(8deg); opacity: .62; }
          
            .hero-veil {
              position: absolute; inset: 0; z-index: 1; pointer-events: none;
              background:
                linear-gradient(78deg, var(--band) 30%, rgba(15,16,15,.86) 52%, rgba(15,16,15,.42) 100%),
                linear-gradient(0deg, var(--band) 2%, rgba(15,16,15,0) 45%);
            }
            .hero-inner { position: relative; z-index: 2; }
          
            .hero-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.4rem; max-width: 760px; }
            .hm { display: flex; flex-direction: column; gap: .18rem; padding-left: 1rem; border-left: 1px solid rgba(255,255,255,.18); }
            .hm-k { font-family: var(--mono); font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.5); }
            .hm-v { font-size: 1.02rem; font-weight: 700; letter-spacing: -.02em; color: #fff; }
            .hm-n { font-size: .8rem; color: rgba(255,255,255,.55); line-height: 1.4; }
          
             
            .hero .hero-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.9rem, 8.4vw, 7.2rem); line-height: .92;
              color: #fff; margin: 0 0 1.6rem;
            }
            .hero-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; flex-wrap: wrap; }
            .hero-actions { display: flex; gap: .7rem; flex-wrap: wrap; }
            .btn-lg { padding: 1rem 1.9rem; font-size: 1rem; }
            .hero-note { margin: 0; max-width: 40ch; font-size: .92rem; line-height: 1.55; color: rgba(255,255,255,.62); }
          
            @media (max-width: 860px) {
              .hero { min-height: 0; padding-top: calc(var(--nav-h) + 1.6rem); }
              .hero-meta { grid-template-columns: 1fr 1fr; gap: 1rem; }
              .hm-last { display: none; }
              .hero-shot { width: 74vw; }
              .hs-a { right: -22%; top: 6%; opacity: .5; }
              .hs-b { right: 2%; top: 30%; opacity: .38; }
              .hs-c { display: none; }
              .hero-body { margin-top: 3.5rem; }
               
              .hero-veil {
                background:
                  linear-gradient(180deg, rgba(15,16,15,.94) 0%, rgba(15,16,15,.74) 30%, rgba(15,16,15,.93) 62%, var(--band) 92%);
              }
            }
            @media (max-width: 520px) {
              .hero-meta { grid-template-columns: 1fr; }
              .hero-actions .btn { width: 100%; }
            }
          
             
            .section { padding: clamp(3rem, 7vw, 6rem) 0 0; }
          
             
            .reasons { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(1.6rem, 5vw, 4rem); align-items: end; }
            .reasons-title { margin: 0; }
            .reasons-copy p { font-size: clamp(1rem, 1.5vw, 1.14rem); line-height: 1.55; color: var(--ink-2); margin: 0 0 1rem; }
            .reasons-copy p:last-child { margin-bottom: 0; }
            .reasons-copy em { font-style: normal; color: var(--emerald-deep); }
            :root[data-theme="dark"] .reasons-copy em { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .reasons-copy em { color: var(--emerald); } }
            @media (max-width: 900px) { .reasons { grid-template-columns: 1fr; align-items: start; } }
          
             
            .statement { text-align: center; }
            .statement-line { max-width: 22ch; margin: 0 auto; }
            .range {
              display: flex; align-items: center; justify-content: center; gap: clamp(.7rem, 2.4vw, 1.6rem);
              flex-wrap: wrap; margin-top: clamp(1.4rem, 3vw, 2.4rem);
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.8rem, 5vw, 3.6rem); line-height: 1; color: var(--emerald-deep);
            }
            :root[data-theme="dark"] .range { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .range { color: var(--emerald); } }
            .range-a { color: var(--faint); }
            .range-arrow { display: block; width: clamp(60px, 12vw, 150px); color: currentColor; }
            .range-arrow svg { display: block; width: 100%; height: 12px; }
            .range-tail {
              font-family: var(--mono); font-weight: 500; font-size: .74rem;
              letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              align-self: center;
            }
          
             
            .tilt-section { padding-top: clamp(2.2rem, 5vw, 4rem); }
            .tilt-head { max-width: 40ch; margin-bottom: clamp(1.2rem, 3vw, 2rem); }
            .tilt-head .kicker { margin-bottom: .9rem; }
             
            .tilt-row {
              display: flex; gap: clamp(.7rem, 1.6vw, 1.2rem); align-items: flex-start;
              overflow-x: auto; padding: 1.6rem .2rem 2.2rem; scrollbar-width: none;
              width: calc(100vw - (50vw - 50%)); margin-right: calc(50% - 50vw);
            }
            .tilt-row::-webkit-scrollbar { display: none; }
            .tilt-card {
              flex: 0 0 auto; width: clamp(190px, 21vw, 250px); margin: 0;
              display: flex; flex-direction: column; gap: .3rem;
              background: var(--surface); border: 1px solid var(--line);
              border-radius: var(--r-lg); padding: 1.1rem 1.15rem 1.2rem;
              box-shadow: var(--shadow);
              transition: transform .35s cubic-bezier(.2,.8,.2,1);
            }
            .tilt-card:hover { transform: rotate(0deg) translateY(-6px); }
            .ct-a { transform: rotate(-3deg); }
            .ct-b { transform: rotate(2.2deg) translateY(14px); }
            .ct-c { transform: rotate(-1.4deg) translateY(-6px); }
            .ct-d { transform: rotate(3.4deg) translateY(10px); }
            .ct-e { transform: rotate(-2.6deg); }
            .ct-f { transform: rotate(1.6deg) translateY(16px); }
            .tc-field { font-family: var(--mono); font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; color: var(--faint); }
            .tc-value { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: var(--heading); line-height: 1.25; }
            .tc-note { font-size: .8rem; color: var(--muted); margin: .35rem 0 0; line-height: 1.4; }
            @media (prefers-reduced-motion: reduce) { .tilt-card { transition: none; } }
          
             
            .band-tight { padding: clamp(2.4rem, 5vw, 4rem) 0; }
            .steps-title { margin-bottom: .6rem; }
            .steps-sub { color: var(--band-muted); margin: 0 0 clamp(1.6rem, 4vw, 2.6rem); max-width: 48ch; }
            .steps { display: grid; gap: .9rem; }
          
            .step { border-radius: var(--r-xl); }
            .step-head {
              display: flex; align-items: center; gap: 1rem; cursor: pointer; list-style: none;
              background: var(--emerald-deep); color: #fff;
              border-radius: var(--r-pill); padding: .85rem 1rem .85rem 1.5rem;
            }
            .step-head::-webkit-details-marker { display: none; }
            .step-n { font-family: var(--mono); font-size: .72rem; letter-spacing: .14em; opacity: .7; }
            .step-kind { font-size: clamp(1.05rem, 2vw, 1.45rem); font-weight: 800; letter-spacing: -.03em; }
            .step-time { margin-left: auto; font-size: .84rem; color: rgba(255,255,255,.78); }
            .step-chev {
              display: grid; place-items: center; width: 38px; height: 38px; flex-shrink: 0;
              border-radius: 50%; background: rgba(255,255,255,.18); color: #fff;
              transition: transform .25s ease;
            }
            .step:not([open]) .step-chev { transform: rotate(180deg); }
          
            .step-card {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
              gap: clamp(1.2rem, 3vw, 2.6rem);
              background: var(--band-card); color: #14170f;
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.2vw, 2.4rem);
              margin-top: .55rem;
            }
             
            .band-dark .step-card .step-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3.6vw, 2.7rem); line-height: 1.02;
              color: #14170f; margin: 0 0 1rem;
            }
            .step-tags { display: flex; flex-wrap: wrap; gap: .4rem; }
            .step-tag {
              font-family: var(--mono); font-size: .66rem; letter-spacing: .1em; text-transform: uppercase;
              background: rgba(20,23,15,.08); border: 1px solid rgba(20,23,15,.12);
              border-radius: var(--r-pill); padding: .3rem .7rem; color: #3c433a;
            }
            .step-lede { font-size: 1.02rem; font-weight: 650; color: #14170f; margin: 0 0 .6rem; letter-spacing: -.01em; }
            .step-body { font-size: .93rem; line-height: 1.6; color: #3c433a; margin: 0 0 1.2rem; }
            .step-right .btn-accent { background: #14170f; color: #fff; box-shadow: none; }
            .step-right .btn-accent:hover { background: #2c332a; }
            @media (max-width: 780px) {
              .step-card { grid-template-columns: 1fr; }
              .step-time { display: none; }
            }
          
             
            .looks-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .85fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .looks-count { font-family: var(--mono); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--emerald); }
            .looks-note { color: var(--band-muted); font-size: .92rem; line-height: 1.6; margin: .5rem 0 0; }
            .looks { display: grid; gap: clamp(.8rem, 2vw, 1.2rem); }
             
            .look {
              display: flex; flex-direction: column;
              background: var(--band-2); border-radius: var(--r-2xl); overflow: hidden;
              border: 1px solid var(--band-line);
              transition: border-color .25s ease, transform .25s ease;
            }
            .look:hover { border-color: var(--emerald); transform: translateY(-3px); }
             
            .look-shot { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--surface); }
            .look-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .3));
              pointer-events: none;
            }
            .look-swatch { line-height: 0; margin-top: .3rem; }
            .look-swatch svg { display: block; }
            .look-meta {
              background: #fff; color: #14170f; padding: clamp(1.2rem, 2.4vw, 1.7rem);
              display: flex; flex-direction: column; gap: .45rem; flex: 1;
            }
             
            .band-dark .look .look-name {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.02; color: #14170f; margin: 0;
            }
            .look-tag { margin: 0; font-size: .95rem; line-height: 1.5; color: #4b534a; max-width: 40ch; }
            .look-link {
              display: inline-flex; align-items: center; gap: .45rem; margin-top: auto; padding-top: .6rem;
              font-size: .88rem; font-weight: 700; color: var(--emerald-deep);
            }
            .look:hover .look-link svg { transform: translateX(3px); }
            .look-link svg { transition: transform .2s ease; }
            .looks-foot {
              display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap;
              margin-top: clamp(1.4rem, 3vw, 2.2rem);
            }
            .looks-more { color: var(--band-muted); font-size: .86rem; }
            @media (min-width: 760px) { .looks { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); } }
            @media (max-width: 620px) { .looks-head { grid-template-columns: 1fr; } }
          
             
            .feat-head {
              display: flex; align-items: flex-end; justify-content: space-between;
              gap: 1.4rem; flex-wrap: wrap; margin-bottom: clamp(1.6rem, 4vw, 2.6rem);
            }
            .feats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(1.2rem, 2.6vw, 2.2rem); }
            .feat { padding-top: 1.1rem; border-top: 1px solid var(--band-line); }
            .feat-n { font-family: var(--mono); font-size: .7rem; letter-spacing: .16em; color: var(--emerald); }
            .feat-title { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: #fff; margin: .7rem 0 .45rem; }
            .feat-body { font-size: .88rem; line-height: 1.6; color: var(--band-muted); margin: 0; }
            @media (max-width: 900px) { .feats { grid-template-columns: 1fr 1fr; } }
            @media (max-width: 520px) { .feats { grid-template-columns: 1fr; } }
          
             
            .price-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .price-sub { margin: 0; color: var(--muted); font-size: .98rem; line-height: 1.6; }
          
             
            .plan-hero {
              display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
              gap: clamp(1.4rem, 4vw, 3rem); align-items: start;
              background: var(--emerald-deep); color: #fff;
              border: 1px solid var(--emerald-deep);
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.4vw, 2.6rem);
              box-shadow: 0 30px 60px -34px color-mix(in srgb, var(--emerald-deep) 70%, transparent);
            }
            .plan-hero-main { display: flex; flex-direction: column; }
            .plan-kicker {
              font-family: var(--mono); font-size: .7rem; font-weight: 500;
              letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.66);
            }
            .plan-tagline { margin: .5rem 0 0; font-size: .95rem; line-height: 1.5; color: rgba(255,255,255,.86); }
            .plan-price {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.8rem, 6vw, 4.4rem); line-height: 1; margin: .7rem 0 .2rem; color: #fff;
            }
            .plan-price span { display: block; font-size: .82rem; font-weight: 500; letter-spacing: 0; color: rgba(255,255,255,.66); margin-top: .4rem; }
            .plan-anchor { margin: .3rem 0 1.2rem; font-size: .86rem; color: rgba(255,255,255,.72); }
            .plan-note { margin: .8rem 0 0; text-align: center; font-size: .8rem; color: rgba(255,255,255,.6); }
            .plan-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; font-size: .95rem; }
            .plan-list li { display: flex; gap: .6rem; align-items: baseline; color: rgba(255,255,255,.9); }
            .plan-list li::before { content: "✓"; color: #fff; font-weight: 700; font-size: .85em; flex-shrink: 0; opacity: .8; }
            @media (min-width: 900px) { .plan-hero .plan-list { grid-template-columns: 1fr 1fr; gap: .55rem 1.4rem; } }
            @media (max-width: 780px) { .plan-hero, .price-head { grid-template-columns: 1fr; } }
          
            .ladder-head { margin: clamp(2rem, 4.5vw, 3rem) 0 .9rem; }
            .ladder-head h3 { font-size: 1.15rem; margin: 0; color: var(--heading); }
            .ladder-head p { margin: .2rem 0 0; font-size: .88rem; color: var(--muted); }
            .ladder { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: .7rem; }
            .ladder-item {
              display: grid; gap: .2rem; padding: 1rem 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg);
              background: var(--surface); transition: border-color .18s ease, transform .18s ease;
            }
            .ladder-item:hover { border-color: var(--emerald); transform: translateY(-2px); }
            .ladder-best { border-color: var(--emerald); }
            .ladder-name { font-weight: 750; font-size: .95rem; color: var(--heading); }
            .ladder-name em {
              font-style: normal; font-family: var(--mono); font-size: .6rem; letter-spacing: .09em;
              text-transform: uppercase; color: var(--emerald-deep); margin-left: .3rem;
            }
            .ladder-price { font-family: var(--text); font-weight: 800; font-size: 1.25rem; letter-spacing: -.03em; color: var(--heading); }
            .ladder-price span { font-weight: 500; font-size: .74rem; letter-spacing: 0; color: var(--faint); margin-left: .35rem; }
            .ladder-note { font-size: .82rem; line-height: 1.45; color: var(--muted); }
          
            .compare { margin-top: 1.4rem; }
            .compare summary {
              cursor: pointer; font-size: .9rem; font-weight: 700; color: var(--emerald-deep);
              padding: .6rem 0; list-style: none;
            }
            .compare summary::-webkit-details-marker { display: none; }
            .compare summary::before { content: "+ "; font-family: var(--mono); }
            .compare[open] summary::before { content: "− "; }
            .compare-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .8rem; margin-top: .9rem; }
            .compare-col {
              display: flex; flex-direction: column; padding: 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface);
            }
            .compare-price { font-family: var(--text); font-weight: 800; font-size: 1.6rem; letter-spacing: -.035em; color: var(--heading); margin-top: .4rem; }
            .compare-price span { display: block; font-size: .74rem; font-weight: 500; letter-spacing: 0; color: var(--faint); margin-top: .2rem; }
            .compare-anchor { margin: .4rem 0 .7rem; font-size: .82rem; color: var(--muted); }
             
            .compare-col .plan-list li { color: var(--ink-2); }
            .compare-col .plan-list li::before { color: var(--emerald); opacity: 1; }
            .compare-col .plan-kicker { color: var(--faint); }
            .compare-col .plan-list { margin-bottom: 1rem; font-size: .86rem; }
            .compare-col .btn { margin-top: auto; }
          
             
            .faq-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1rem, 4vw, 3rem); align-items: end; margin-bottom: clamp(1.4rem, 3vw, 2.2rem);
            }
            .faq-sub { margin: 0; color: var(--muted); }
            .faq { border-top: 1px solid var(--line); }
            .qa { border-bottom: 1px solid var(--line); }
            .qa summary {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              cursor: pointer; list-style: none; padding: 1.3rem 0;
            }
            .qa summary::-webkit-details-marker { display: none; }
            .qa-q { font-size: clamp(1rem, 1.8vw, 1.18rem); font-weight: 750; letter-spacing: -.02em; color: var(--heading); }
            .qa-sign {
              position: relative; flex-shrink: 0; width: 34px; height: 34px; border-radius: 50%;
              border: 1px solid var(--line); background: var(--surface);
              transition: border-color .2s ease, background .2s ease;
            }
            .qa-sign::before, .qa-sign::after {
              content: ""; position: absolute; left: 50%; top: 50%; background: var(--ink-2);
              transform: translate(-50%, -50%); transition: opacity .2s ease;
            }
            .qa-sign::before { width: 13px; height: 1.6px; }
            .qa-sign::after { width: 1.6px; height: 13px; }
            .qa[open] .qa-sign { border-color: var(--emerald); background: var(--emerald-soft); }
            .qa[open] .qa-sign::after { opacity: 0; }
            .qa[open] .qa-sign::before { background: var(--emerald-deep); }
            .qa:hover .qa-sign { border-color: var(--emerald); }
            .qa-a { margin: 0 0 1.4rem; color: var(--muted); max-width: 74ch; line-height: 1.6; }
            @media (max-width: 780px) { .faq-head { grid-template-columns: 1fr; align-items: start; } }
          
             
            .maker {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              flex-wrap: wrap; padding: clamp(1.2rem, 3vw, 1.8rem);
              border: 1px dashed var(--line); border-radius: var(--r-lg); background: var(--surface-2);
            }
            .maker-title { margin: .55rem 0 .3rem; font-size: 1.2rem; }
            .maker-body { margin: 0; max-width: 56ch; font-size: .88rem; color: var(--muted); }
          
             
            .closing { text-align: center; padding: clamp(3.4rem, 8vw, 6.5rem) 0 clamp(1rem, 3vw, 2rem); }
            .closing-title { margin: 0 auto; max-width: 18ch; }
            .closing-sub { margin: 1.1rem auto 1.9rem; max-width: 46ch; color: var(--muted); font-size: 1.02rem; }
          
             
            html.rv-on .rv { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s ease; }
            html.rv-on .rv.in { opacity: 1; transform: none; }
            @media (prefers-reduced-motion: reduce) {
              html.rv-on .rv { opacity: 1; transform: none; transition: none; }
            }
          </style>
          
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
            
            
            (function () {
              if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
              if (!("IntersectionObserver" in window)) return;
              document.documentElement.classList.add("rv-on");
              var io = new IntersectionObserver(function (entries) {
                entries.forEach(function (entry) {
                  if (entry.isIntersecting) {
                    entry.target.classList.add("in");
                    io.unobserve(entry.target);
                  }
                });
              }, { rootMargin: "0px 0px -8% 0px", threshold: 0.08 });
              document.querySelectorAll(".rv").forEach(function (el) { io.observe(el); });
            })();
          
            
            
            
            
            
            (function () {
              var PREVIEW_WIDTH = 1280;
              var boxes = document.querySelectorAll(".look-shot, .hero-shot");
              function fit() {
                boxes.forEach(function (box) {
                  if (!box.querySelector(".pv")) return;
                  box.style.setProperty("--pv", box.clientWidth / PREVIEW_WIDTH);
                });
              }
              fit();
              window.addEventListener("resize", fit, { passive: true });
              if ("ResizeObserver" in window) {
                var ro = new ResizeObserver(fit);
                boxes.forEach(function (box) { ro.observe(box); });
              }
            })();
          
            
            
            
            (function () {
              var steps = Array.prototype.slice.call(document.querySelectorAll(".steps .step"));
              steps.forEach(function (step) {
                step.addEventListener("toggle", function () {
                  if (!step.open) return;
                  steps.forEach(function (other) { if (other !== step) other.open = false; });
                });
              });
            })();
          </script>
          
                </div>
              </main>
          
              
              <footer class="site-footer">
                <div class="wrap footer-grid">
                  <div>
                    <span class="footer-name">WONS Sites</span>
                    <p class="footer-tag">A website you can keep up to date yourself.</p>
                  </div>
                  <nav class="footer-col" aria-label="Product">
                    <span class="label">Product</span>
                    <a href="/themes">Themes</a>
                    <a href="/#product">What you can change</a>
                    <a href="/#pricing">Pricing</a>
                    <a href="/docs">Docs</a>
                  </nav>
                  <nav class="footer-col" aria-label="Account">
                    <span class="label">Account</span>
                    <a href="/login">Log in</a>
                    <a href="/signup">Start your site</a>
                    <a href="/dashboard">Dashboard</a>
                  </nav>
                  <div>
                    <p class="footer-sub-head">Start with your email</p>
                    <p class="footer-sub-copy">It takes you straight to sign-up — free plan, no card needed.</p>
                    <form class="footer-sub" action="/signup" method="get">
                      <input type="email" name="email" placeholder="Your email address" aria-label="Email address">
                      <button class="sub-btn" type="submit" aria-label="Start your site">
                        <svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </button>
                    </form>
                  </div>
                </div>
                <div class="wrap footer-base">
                  <span>© 2026 WONS Sites. All rights reserved.</span>
                  <span>Made by WONS</span>
                </div>
              </footer>
              
            </div>
          
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              var themeToggle = document.getElementById("themeToggle");
              if (themeToggle) themeToggle.addEventListener("click", function () {
                var root = document.documentElement;
                var current = root.getAttribute("data-theme");
                var systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
                var next = (current ? current === "dark" : systemDark) ? "light" : "dark";
                root.setAttribute("data-theme", next);
                try { localStorage.setItem("wons-sites-theme", next); } catch (e) {}
              });
          
              
              var navToggle = document.getElementById("navToggle");
              var topbar = document.getElementById("topbar");
              if (navToggle && topbar) navToggle.addEventListener("click", function () {
                var open = topbar.classList.toggle("open");
                navToggle.setAttribute("aria-expanded", open ? "true" : "false");
              });
          
              
              
              
              (function () {
                var bar = document.getElementById("topbar");
                if (!bar) return;
                var mark = function () {
                  bar.classList.toggle("stuck", window.scrollY > 72);
                };
                mark();
                window.addEventListener("scroll", mark, { passive: true });
              })();
          
              (function () {
                var path = location.pathname.replace(/\/+$/, "") || "/";
                var best = null, bestLen = -1;
                document.querySelectorAll(".nav a.link").forEach(function (a) {
                  var href = (a.getAttribute("href") || "").replace(/\/+$/, "") || "/";
                  var match = href === "/" ? path === "/" : (path === href || path.indexOf(href + "/") === 0);
                  if (match && href.length > bestLen) { best = a; bestLen = href.length; }
                });
                if (best) best.classList.add("active");
              })();
            </script>
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">(function(){
          	var es = new EventSource("/__wons/dev/reload");
          	es.onmessage = function(){ location.reload() };
          	// Close the stream the instant the page is left. Without this, each
          	// navigation leaves its SSE connection lingering; a few quick clicks
          	// exhaust the browser's ~6-per-origin HTTP/1.1 connection cap and every
          	// further request (including the next page) stalls until the stale
          	// streams time out. Closing on pagehide frees the slot immediately.
          	window.addEventListener("pagehide", function(){ es.close(); });
          })()</script></body>
          </html>
          
          Solution

          Ensure that your web server, application server, load balancer, etc. is configured to set the Content-Security-Policy header.

  7. Risk=Informational, Confidence=Medium (5)

    1. https://sites.wons.bt (5)

      1. Information Disclosure - Sensitive Information in URL (1)
        1. GET https://sites.wons.bt/signup?email=zaproxy%40example.com
          Alert tags
          Alert description

          The request appeared to contain sensitive information leaked in the URL. This can violate PCI and most organizational compliance policies. You can configure the list of strings for this check to add or remove values specific to your environment.

          Other info

          The URL contains email address(es).

          Request
          Request line and header section (367 bytes)
          GET https://sites.wons.bt/signup?email=zaproxy%40example.com HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          referer: https://sites.wons.bt
          Cookie: wons_csrf=1Y4cjMPvEjgL5Xwfltaq.fc44d6636ac21d80d0dbec2084f3cab7
          
          
          Request body (0 bytes)
          Response
          Status line and header section (805 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:43:01 GMT
          Content-Type: text/html; charset=utf-8
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-GQq--xxvo0PYRMzufvLMsg'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Set-Cookie: wons_csrf=U7ygdlDsPzGNhVUsgcCr.b490804661bdf6603f4969db6e01cc20; Path=/; Max-Age=2592000; HttpOnly; SameSite=Lax
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          content-length: 41335
          
          
          Response body (41335 bytes)
          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>Create your site workspace — WONS Sites</title>
            <meta name="description" content="A website you can keep up to date yourself. Pick a look, fill in your pages, and it is live — no domain to buy, no developer, no rebuilds.">
            
              <link rel="icon" href="/__wons/download?a=0&amp;e=1786819381&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfNHZ2NmczbWVkby5wbmc&amp;s=15157ee1095e4f8c742bc1da69f09539af2e5d4352b7e6b482ba536ba1eca3c9">
            
            <link rel="preload" href="/fonts/Manrope-500-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-italic-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="stylesheet" href="/fonts/fonts.css">
            <script nonce="GQq--xxvo0PYRMzufvLMsg">
              (function () {
                try {
                  var t = localStorage.getItem("wons-sites-theme");
                  if (t) document.documentElement.setAttribute("data-theme", t);
                } catch (e) {}
              })();
            </script>
            <style>
              :root {
                --emerald:      #0d9d63;
                --emerald-deep: #077a4b;
                --emerald-dark: #05603a;
                --emerald-soft: #e7f6ee;
                --emerald-line: #c6e8d6;
          
                --heading:      #1d3b2c;
                --cta-bg:       #1d4d33;
                --cta-bg-hover: #266040;
                --cta-fg:       #ffffff;
          
                --canvas:    #fdfcf8;
                --surface:   #ffffff;
                --surface-2: #f2f6ef;
                --ink:       #22302a;
                --ink-2:     #435248;
                --muted:     #5f6f66;
                --faint:     #8fa096;
                --line:      #e6e9df;
                --line-soft: #eef1e8;
          
                --warn:      #b4690e;
                --warn-soft: #fdf3e4;
                --bad:       #c8372c;
                --bad-soft:  #fdeeec;
                --ok:        var(--emerald);
          
                 
                --band:       #0f100f;
                --band-2:     #171a18;
                --band-fg:    #ffffff;
                --band-muted: #9aa39e;
                --band-line:  #2a2f2c;
                --band-card:  #d5dad3;
          
                --r-xs: 8px;
                --r:    12px;
                --r-lg: 18px;
                --r-xl: 26px;
                --r-2xl: 34px;
                --r-pill: 999px;
          
                --shadow-sm: 0 1px 2px rgba(16,30,24,.05);
                --shadow:    0 1px 2px rgba(16,30,24,.04), 0 12px 28px -18px rgba(16,30,24,.24);
                --shadow-lg: 0 32px 64px -34px rgba(10,40,28,.40);
                --ring:      0 0 0 3px rgba(13,157,99,.20);
          
                --display: "Fraunces", Georgia, "Times New Roman", serif;
                --text:    "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
                --mono:    ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
          
                --maxw: min(1280px, calc(100vw - 3em));
                --nav-h: 68px;
                color-scheme: light;
              }
          
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) {
                  --emerald:      #2fc98a;
                  --emerald-deep: #21b077;
                  --emerald-dark: #8ce8bf;
                  --emerald-soft: #10281f;
                  --emerald-line: #1d4436;
                  --heading:      #eef2f0;
                  --cta-bg:       #2fc98a;
                  --cta-bg-hover: #4dd69c;
                  --cta-fg:       #06120d;
                  --canvas:    #0b0f0e;
                  --surface:   #121817;
                  --surface-2: #182120;
                  --ink:       #eef2f0;
                  --ink-2:     #c3ccc9;
                  --muted:     #97a3a0;
                  --faint:     #6a7674;
                  --line:      #222c2a;
                  --line-soft: #1a2322;
                  --warn:      #e0a55a;
                  --warn-soft: #2a2113;
                  --bad:       #f0776a;
                  --bad-soft:  #2c1613;
                  --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                  --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                  --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                  --ring:      0 0 0 3px rgba(47,201,138,.26);
                  color-scheme: dark;
                }
              }
              :root[data-theme="dark"] {
                --emerald:      #2fc98a;
                --emerald-deep: #21b077;
                --emerald-dark: #8ce8bf;
                --emerald-soft: #10281f;
                --emerald-line: #1d4436;
                --heading:      #eef2f0;
                --cta-bg:       #2fc98a;
                --cta-bg-hover: #4dd69c;
                --cta-fg:       #06120d;
                --canvas:    #0b0f0e;
                --surface:   #121817;
                --surface-2: #182120;
                --ink:       #eef2f0;
                --ink-2:     #c3ccc9;
                --muted:     #97a3a0;
                --faint:     #6a7674;
                --line:      #222c2a;
                --line-soft: #1a2322;
                --warn:      #e0a55a;
                --warn-soft: #2a2113;
                --bad:       #f0776a;
                --bad-soft:  #2c1613;
                --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                --ring:      0 0 0 3px rgba(47,201,138,.26);
                color-scheme: dark;
              }
              *, *::before, *::after { box-sizing: border-box; }
              html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
              body {
                margin: 0;
                font-family: var(--text);
                font-size: 16px; line-height: 1.6; letter-spacing: -.006em;
                color: var(--ink); background: var(--canvas);
                -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
              }
              a { color: inherit; text-decoration: none; }
              ::selection { background: var(--emerald); color: #fff; }
              img { max-width: 100%; height: auto; }
              hr { border: 0; border-top: 1px solid var(--line); margin: 2rem 0; }
          
              h1, h2 { font-family: var(--display); margin: 0 0 .6rem; }
              h3, h4 { font-family: var(--text); margin: 0 0 .6rem; }
              h1 { font-size: clamp(2.5rem, 5.4vw, 3.9rem); font-weight: 620; line-height: 1.06; letter-spacing: -.015em; color: var(--heading); }
              h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); font-weight: 600; line-height: 1.12; letter-spacing: -.012em; color: var(--heading); }
              h3 { font-size: 1.16rem; font-weight: 750; line-height: 1.25; letter-spacing: -.015em; color: var(--heading); }
              h4 { font-size: .98rem; font-weight: 750; letter-spacing: -.01em; }
          
               
              body:not(.app) h1,
              body:not(.app) h2 { font-family: var(--text); font-weight: 800; letter-spacing: -.04em; }
              body:not(.app) h1 { font-size: clamp(2.6rem, 6vw, 4.6rem); line-height: .98; }
              body:not(.app) h2 { font-size: clamp(2rem, 4.4vw, 3.4rem); line-height: 1.02; }
          
               
              body:not(.app) .d-xl,
              .d-xl { font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
                      font-size: clamp(3rem, 8.6vw, 7rem); line-height: .92; margin: 0; color: var(--heading); }
              body:not(.app) .d-lg,
              .d-lg { font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
                      font-size: clamp(2.2rem, 5vw, 3.9rem); line-height: 1; margin: 0; color: var(--heading); }
              body:not(.app) .d-thin,
              .d-thin { font-family: var(--text); font-weight: 300; letter-spacing: -.035em;
                        font-size: clamp(2rem, 5.4vw, 4.2rem); line-height: 1.04; margin: 0; color: var(--heading); }
              p  { margin: 0 0 1rem; }
              .lede { font-size: clamp(1.02rem, 1.6vw, 1.18rem); line-height: 1.55; color: var(--muted); max-width: 48ch; }
              .muted { color: var(--muted); }
              .faint { color: var(--faint); }
              .tiny  { font-size: .82rem; }
              .label {
                font-family: var(--mono); font-size: .7rem; font-weight: 500;
                letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              }
              .kicker {
                display: inline-flex; align-items: center; gap: .55rem;
                font-family: var(--mono); font-size: .71rem; font-weight: 500;
                letter-spacing: .16em; text-transform: uppercase; color: var(--emerald-deep);
              }
              .kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .6; }
              code {
                font-family: var(--mono); font-size: .85em;
                background: var(--surface-2); border: 1px solid var(--line);
                border-radius: 6px; padding: .08em .4em; color: var(--ink-2);
              }
          
              .shell {
                min-height: 100vh; display: flex; flex-direction: column;
                overflow-x: clip;
              }
              .wrap { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              .topbar {
                position: sticky; top: 0; z-index: 60; height: var(--nav-h);
                display: flex; align-items: center;
                background: color-mix(in srgb, var(--canvas) 88%, transparent);
                backdrop-filter: saturate(1.6) blur(14px); -webkit-backdrop-filter: saturate(1.6) blur(14px);
                border-bottom: 1px solid var(--line);
              }
              .topbar .bar { display: flex; align-items: center; gap: 1.4rem; width: 100%; }
          
               
              body:not(.app) .topbar {
                position: fixed; top: 0; left: 0; right: 0; height: auto;
                padding: 14px 0; background: none; border: 0;
                backdrop-filter: none; -webkit-backdrop-filter: none;
                transition: padding .25s ease;
              }
               
              body:not(.app) .topbar .bar {
                position: relative;
                padding: .5rem .55rem .5rem 1.15rem; border-radius: var(--r-pill);
                background: color-mix(in srgb, var(--surface) 92%, transparent);
                border: 1px solid var(--line); box-shadow: var(--shadow-sm);
                backdrop-filter: saturate(1.5) blur(16px); -webkit-backdrop-filter: saturate(1.5) blur(16px);
                transition: background .25s ease, border-color .25s ease, box-shadow .25s ease;
              }
          
               
              body.hero-top:not(.app) .topbar .bar {
                background: rgba(255, 255, 255, .12);
                border-color: rgba(255, 255, 255, .22);
                box-shadow: none;
              }
              body.hero-top:not(.app) .topbar .brand,
              body.hero-top:not(.app) .topbar .nav a.link,
              body.hero-top:not(.app) .topbar .nav-actions a.link { color: #fff; }
              body.hero-top:not(.app) .topbar .nav a.link:hover,
              body.hero-top:not(.app) .topbar .nav-actions a.link:hover { color: #fff; background: rgba(255,255,255,.16); }
              body.hero-top:not(.app) .topbar .icon-btn { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.24); color: #fff; }
              body.hero-top:not(.app) .topbar .icon-btn:hover { border-color: #fff; color: #fff; }
              body.hero-top:not(.app) .topbar .brand .mark { box-shadow: none; }
          
              body:not(.app) .topbar.stuck { padding: 8px 0; }
              body.hero-top:not(.app) .topbar.stuck .bar {
                background: color-mix(in srgb, var(--surface) 94%, transparent);
                border-color: var(--line); box-shadow: var(--shadow);
              }
              body.hero-top:not(.app) .topbar.stuck .brand { color: var(--heading); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link { color: var(--ink-2); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link:hover,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn { background: var(--surface); border-color: var(--line); color: var(--muted); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
          
              .brand { display: inline-flex; align-items: center; gap: .6rem; font-family: var(--text); font-weight: 800; letter-spacing: -.03em; font-size: 1.05rem; color: var(--heading); flex-shrink: 0; }
              .brand .mark {
                width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
                background: linear-gradient(145deg, var(--emerald), var(--emerald-dark));
                color: #fff; font-size: .82rem; font-weight: 800; letter-spacing: -.02em;
                box-shadow: 0 6px 14px -6px rgba(7,122,75,.7);
              }
              :root[data-theme="dark"] .brand .mark { color: #06120d; }
              .brand .mark-img { background: none; box-shadow: none; object-fit: contain; border-radius: 7px; }
              .brand .mark-dark { display: none; }
              :root[data-theme="dark"] .brand .mark-light { display: none; }
              :root[data-theme="dark"] .brand .mark-dark { display: block; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .brand .mark-light { display: none; }
                :root:not([data-theme="light"]) .brand .mark-dark { display: block; }
              }
          
              .nav { display: flex; align-items: center; justify-content: center; gap: .4rem; flex: 1; }
              .nav a.link, .nav-actions a.link {
                display: inline-flex; align-items: center; gap: .42rem;
                padding: .45rem .75rem; border-radius: var(--r-xs);
                font-size: .93rem; font-weight: 600; color: var(--ink-2);
                transition: color .15s, background .15s;
              }
              .nav a.link:hover, .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              .nav a.link.active { color: var(--heading); }
              .nav-actions { display: flex; align-items: center; gap: .45rem; flex-shrink: 0; }
          
              .icon-btn {
                display: grid; place-items: center; width: 36px; height: 36px; flex-shrink: 0;
                border: 1px solid var(--line); border-radius: var(--r-xs);
                background: var(--surface); color: var(--muted); cursor: pointer;
                font: inherit; font-size: .95rem; padding: 0;
                transition: border-color .15s, color .15s;
              }
              .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .theme-toggle .sun { display: none; } .theme-toggle .moon { display: block; }
              :root[data-theme="dark"] .theme-toggle .sun { display: block; }
              :root[data-theme="dark"] .theme-toggle .moon { display: none; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .theme-toggle .sun { display: block; }
                :root:not([data-theme="light"]) .theme-toggle .moon { display: none; }
              }
              #navToggle { display: none; }
          
              @media (max-width: 860px) {
                #navToggle { display: grid; }
                .nav-actions a.link.nav-login { display: none; }
                .nav {
                  display: none; position: absolute; top: var(--nav-h); left: 0; right: 0;
                  flex-direction: column; align-items: stretch; gap: .1rem;
                  padding: .8rem clamp(1.1rem, 4vw, 2rem) 1.2rem;
                  background: var(--surface); border-bottom: 1px solid var(--line);
                  box-shadow: var(--shadow-lg);
                }
                .topbar.open .nav { display: flex; }
          
                 
                body:not(.app) .nav {
                  top: calc(100% + .5rem); left: .25rem; right: .25rem;
                  border: 1px solid var(--line); border-radius: var(--r-lg);
                  padding: .6rem .7rem .8rem;
                }
                body.hero-top:not(.app) .topbar.open .nav a.link,
                body:not(.app) .topbar.open .nav a.link { color: var(--ink-2); }
                body.hero-top:not(.app) .topbar.open .nav a.link:hover { background: var(--surface-2); color: var(--heading); }
              }
          
               
              @media (max-width: 620px) {
                body:not(.app) .topbar .brand { font-size: 0; gap: 0; }
                body:not(.app) .topbar .brand .mark { font-size: .82rem; }
                body:not(.app) .topbar .bar { gap: .6rem; padding-left: .55rem; }
                body:not(.app) .topbar .nav-actions { gap: .35rem; }
                body:not(.app) .topbar .nav-actions .btn { padding: .5rem .85rem; font-size: .82rem; }
                body:not(.app) .icon-btn { width: 34px; height: 34px; }
              }
          
              main { flex: 1; padding: clamp(2.2rem, 5vw, 4rem) 0 clamp(3.5rem, 7vw, 5.5rem); }
               
              body:not(.app) main { padding-top: calc(var(--nav-h) + clamp(1.4rem, 4vw, 2.6rem)); }
              body.hero-top:not(.app) main { padding-top: 0; }
               
              body.hero-top:not(.app) .flash { margin-top: calc(var(--nav-h) + 1rem); }
              body.app main { padding: 0; }
              body.app .wrap { max-width: none; padding: 0; }
          
               
              .bleed { width: 100vw; margin-left: calc(50% - 50vw); }
          
              .site-footer {
                background: var(--band); color: var(--band-fg);
                padding: clamp(2.4rem, 5vw, 3.6rem) 0 1.2rem;
                overflow: hidden;
              }
              .site-footer .footer-name,
              .site-footer .footer-sub-head { color: var(--band-fg); }
              .site-footer .footer-tag,
              .site-footer .footer-sub-copy,
              .site-footer .footer-col a { color: var(--band-muted); }
              .site-footer .label { color: #6f7a75; }
              .site-footer .footer-col a:hover { color: var(--band-fg); }
              .site-footer input[type=email] {
                background: var(--band-2); border-color: var(--band-line); color: var(--band-fg);
              }
              .site-footer input[type=email]::placeholder { color: #6f7a75; }
              .site-footer .sub-btn { background: var(--emerald); color: #06120d; }
              .site-footer .sub-btn:hover { background: var(--emerald-deep); color: #fff; }
              .site-footer .footer-base { border-top-color: var(--band-line); color: #6f7a75; }
              .footer-grid {
                display: grid; grid-template-columns: 1.4fr .8fr .8fr 1.2fr; gap: 2rem;
                padding-bottom: clamp(1.4rem, 3vw, 2.2rem);
              }
              .footer-name {
                font-family: var(--text); font-weight: 800; letter-spacing: -.03em;
                font-size: 1.05rem; color: var(--heading);
              }
              .footer-tag { margin: .5rem 0 0; font-size: .88rem; color: var(--muted); max-width: 30ch; }
              .footer-col .label { display: block; margin-bottom: .7rem; }
              .footer-col a { display: block; padding: .24rem 0; font-size: .9rem; color: var(--muted); }
              .footer-col a:hover { color: var(--emerald-deep); }
              .footer-sub-head { font-size: .95rem; font-weight: 750; color: var(--heading); margin: 0 0 .35rem; }
              .footer-sub-copy { font-size: .84rem; color: var(--muted); margin: 0 0 .8rem; max-width: 32ch; }
              .footer-sub { display: flex; gap: .5rem; }
              .footer-sub input[type=email] { flex: 1; min-width: 0; }
              .footer-sub .sub-btn {
                display: grid; place-items: center; width: 46px; flex-shrink: 0;
                border: 0; border-radius: var(--r); cursor: pointer;
                background: var(--cta-bg); color: var(--cta-fg); font: inherit;
                transition: background .15s;
              }
              .footer-sub .sub-btn:hover { background: var(--cta-bg-hover); }
              .footer-base {
                display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
                border-top: 1px solid var(--line-soft); padding-top: 1.2rem;
                font-family: var(--mono); font-size: .72rem; color: var(--faint);
              }
              @media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
              @media (max-width: 520px) { .footer-grid { grid-template-columns: 1fr; gap: 1.4rem; } }
          
              .btn {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-family: var(--text); font-weight: 600; font-size: .95rem;
                line-height: 1; cursor: pointer; white-space: nowrap; text-decoration: none;
                padding: .78rem 1.3rem; border-radius: var(--r); border: 1px solid transparent;
                transition: transform .08s, filter .15s, border-color .15s, background .15s, color .15s;
              }
              .btn:active { transform: translateY(1px); }
              .btn-primary { background: var(--ink); color: var(--canvas); }
              .btn-primary:hover { filter: brightness(1.22); }
              :root[data-theme="dark"] .btn-primary { background: var(--emerald); color: #06120d; }
              .btn-accent {
                background: var(--cta-bg); color: var(--cta-fg);
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
              }
              .btn-accent:hover { background: var(--cta-bg-hover); }
              .btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line); box-shadow: var(--shadow-sm); }
              .btn-ghost:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .btn-quiet { background: transparent; color: var(--muted); padding-left: .6rem; padding-right: .6rem; }
              .btn-quiet:hover { color: var(--ink); }
              .btn-sm { padding: .5rem .85rem; font-size: .86rem; border-radius: var(--r-xs); }
              .btn-block { width: 100%; }
              .btn[disabled] { opacity: .5; cursor: not-allowed; }
          
               
              body:not(.app) .btn { border-radius: var(--r-pill); padding: .88rem 1.6rem; }
              body:not(.app) .btn-sm { padding: .55rem 1.05rem; font-size: .86rem; }
              body:not(.app) form button:not([class]) { border-radius: var(--r-pill); }
              .btn-onband { background: #fff; color: var(--band); }
              .btn-onband:hover { background: #fff; filter: brightness(.94); }
              .btn-outline-band { background: transparent; color: #fff; border-color: rgba(255,255,255,.32); }
              .btn-outline-band:hover { border-color: #fff; background: rgba(255,255,255,.08); }
          
               
              .band { position: relative; padding: clamp(3rem, 7vw, 6rem) 0; }
               
              .band-dark + .band-dark { padding-top: 0; }
              .band-dark { background: var(--band); color: var(--band-fg); }
               
              body:not(.app) .band-dark h1, body:not(.app) .band-dark h2,
              body:not(.app) .band-dark h3, body:not(.app) .band-dark .d-xl,
              body:not(.app) .band-dark .d-lg, body:not(.app) .band-dark .d-thin { color: var(--band-fg); }
              .band-dark .muted, .band-dark .lede { color: var(--band-muted); }
              .band-dark .label { color: #6f7a75; }
              .band-dark .kicker { color: var(--emerald); }
               
              .band-paper { background: var(--surface-2); color: var(--ink); }
              .band-accent { background: var(--emerald-deep); color: #fff; }
              body:not(.app) .band-accent h2, body:not(.app) .band-accent h3,
              body:not(.app) .band-accent .d-lg, body:not(.app) .band-accent .d-xl { color: #fff; }
              .band-accent .lede, .band-accent .muted { color: rgba(255,255,255,.78); }
              .band-accent .label, .band-accent .kicker { color: rgba(255,255,255,.66); }
              .band-accent .kicker::before { background: currentColor; }
              .band-inner { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              form button:not([class]) {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-weight: 600; cursor: pointer; color: var(--cta-fg); border: 0;
                background: var(--cta-bg);
                border-radius: var(--r); padding: .78rem 1.4rem;
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
                transition: background .15s, transform .08s;
              }
              form button:not([class]):hover { background: var(--cta-bg-hover); }
              form button:not([class]):active { transform: translateY(1px); }
          
              .card {
                background: var(--surface); border: 1px solid var(--line);
                border-radius: var(--r-lg); padding: 1.5rem 1.6rem; box-shadow: var(--shadow);
              }
              .card.tight { padding: 1.1rem 1.2rem; }
              .card.flush { padding: 0; overflow: hidden; }
              .panel { background: var(--surface-2); border: 1px solid var(--line-soft); border-radius: var(--r); padding: 1.1rem 1.2rem; }
              .stack > * + * { margin-top: 1.1rem; }
              .row { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
              .row-between { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
              .grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
              .grid-2 { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
              .center-narrow { max-width: 460px; margin: 0 auto; }
          
              .pill {
                display: inline-flex; align-items: center; gap: .35rem;
                font-family: var(--mono); font-size: .68rem; font-weight: 500;
                letter-spacing: .08em; text-transform: uppercase;
                padding: .26rem .6rem; border-radius: 999px;
                background: var(--surface-2); color: var(--muted); border: 1px solid var(--line);
              }
              .pill { align-self: flex-start; }
              .pill.ok   { background: var(--emerald-soft); color: var(--emerald-deep); border-color: var(--emerald-line); }
              .pill.warn { background: var(--warn-soft); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 32%, transparent); }
              .pill.bad  { background: var(--bad-soft); color: var(--bad); border-color: color-mix(in srgb, var(--bad) 30%, transparent); }
              .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
              .field { display: block; margin-bottom: 1.05rem; }
              .field > .lbl { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; font-size: .88rem; font-weight: 600; margin-bottom: .38rem; }
              .field > .lbl .hint { font-weight: 400; font-size: .8rem; color: var(--faint); }
              input[type=text], input[type=email], input[type=password], input[type=url],
              input[type=number], input[type=date], input[type=search], textarea, select {
                display: block; width: 100%; font: inherit; font-size: .95rem; color: var(--ink);
                background: var(--surface); border: 1px solid var(--line); border-radius: var(--r);
                padding: .72rem .9rem; transition: border-color .15s, box-shadow .15s;
              }
              textarea { min-height: 120px; resize: vertical; line-height: 1.55; }
              input::placeholder, textarea::placeholder { color: var(--faint); }
              input:focus, textarea:focus, select:focus { outline: 0; border-color: var(--emerald); box-shadow: var(--ring); }
              input[aria-invalid="true"], textarea[aria-invalid="true"] { border-color: var(--bad); }
              input[type=checkbox], input[type=radio] { accent-color: var(--emerald); width: auto; }
              .err { display: block; color: var(--bad); font-size: .84rem; font-weight: 500; margin-top: .35rem; }
              fieldset { border: 0; margin: 0; padding: 0; }
          
              .progress { height: 6px; border-radius: 999px; background: var(--surface-2); overflow: hidden; border: 1px solid var(--line-soft); }
              .progress > i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--emerald), var(--emerald-deep)); }
          
              .flash {
                display: flex; align-items: flex-start; gap: .6rem;
                background: var(--surface-2); color: var(--ink-2);
                border: 1px solid var(--line); border-radius: var(--r);
                padding: .8rem 1.05rem; margin-bottom: 1.4rem; font-weight: 500; font-size: .93rem;
                animation: flashIn .22s ease;
              }
              .flash::before { content: "→"; font-weight: 800; color: var(--muted); }
              .flash.warn {
                background: #fdf6e7; color: #8a5a00; border-color: #f0dcae;
              }
              :root[data-theme="dark"] .flash.warn { color: #8a5a00; }
              .flash.warn::before { content: "!"; }
              .flash.ok {
                background: #eaf7f0; color: #10633f; border-color: #bfe3d0;
              }
              :root[data-theme="dark"] .flash.ok { color: #10633f; }
              .flash.ok::before { content: "\2713"; color: #10633f; }
              .flash.error {
                background: #fdeceb; color: #8c2b22; border-color: #f3c8c4;
              }
              :root[data-theme="dark"] .flash.error { color: #8c2b22; }
              .flash.error::before { content: "\2715"; color: #8c2b22; }
              @keyframes flashIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
              .auth-centered { text-align: center; padding-top: clamp(.2rem, 2vw, 1rem); }
              .auth-centered .kicker { justify-content: center; }
              .auth-centered .lede { margin-left: auto; margin-right: auto; }
              .auth-centered .card { text-align: left; }
          
              .ticks { list-style: none; margin: 1.1rem 0; padding: 0; display: grid; gap: .55rem; font-size: .93rem; }
              .ticks li { display: flex; gap: .6rem; align-items: baseline; color: var(--ink-2); }
              .ticks li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
          
              table { width: 100%; border-collapse: collapse; }
              th, td { text-align: left; padding: .7rem .6rem; font-size: .92rem; }
              th { font-family: var(--mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--faint); font-weight: 500; border-bottom: 1px solid var(--line); }
              td { border-bottom: 1px solid var(--line-soft); }
              tr:last-child td { border-bottom: 0; }
          
              .page-head { margin-bottom: clamp(1.6rem, 3vw, 2.4rem); max-width: 58ch; }
              .page-head .kicker { margin-bottom: .9rem; }
              .backlink { display: inline-flex; align-items: center; gap: .35rem; color: var(--faint); font-size: .88rem; margin-bottom: .9rem; }
              .backlink:hover { color: var(--emerald-deep); }
          
              @media (prefers-reduced-motion: reduce) {
                *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
              }
            </style>
          <script src="/__wons/sdk/pocketbase.umd.js"></script><script src="/__wons/sdk/wons.umd.js" data-wons-global="Wons"></script></head>
          <body class=" hero-top">
            <div class="shell">
              
              <header class="topbar" id="topbar">
                <div class="wrap"><div class="bar">
                  <a class="brand" href="/">
                    
                      <img class="mark mark-img mark-light"
                           src="/__wons/download?a=0&amp;e=1786819381&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfamd1aGFzNnMzcC5wbmc&amp;s=7dc31ec4adb92d96d6c8b18d088022bd6bcbe729e1f8df03b1464f0e898df278" alt="" width="30" height="30">
                      
                        <img class="mark mark-img mark-dark" src="/__wons/download?a=0&amp;e=1786819381&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfZmx5MHF4YXBrOS5wbmc&amp;s=d1130a192b644701a7c6e6df17d509a8cf23ec32719638866f0909b1e51063b8" alt="" width="30" height="30">
                      
                    
                    WONS Sites
                  </a>
                  <nav class="nav" id="nav">
                    
                      <a class="link" href="/#product">Features</a>
                    
                      <a class="link" href="/themes">Themes</a>
                    
                      <a class="link" href="/#pricing">Pricing</a>
                    
                      <a class="link" href="/docs">Docs</a>
                    
                  </nav>
                  <div class="nav-actions">
                    
                      <a class="link nav-login" href="/login">Log in</a>
                      <a class="btn btn-accent btn-sm" href="/signup">Start Free</a>
                    
                    <button class="icon-btn theme-toggle" id="themeToggle" type="button" aria-label="Toggle dark mode">
                      <svg class="moon" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <path d="M20.4 14.7A8.7 8.7 0 0 1 9.3 3.6 8.7 8.7 0 1 0 20.4 14.7Z"/>
                      </svg>
                      <svg class="sun" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <circle cx="12" cy="12" r="4.1"/>
                        <path d="M12 2.5v2.2M12 19.3v2.2M4.6 4.6l1.6 1.6M17.8 17.8l1.6 1.6M2.5 12h2.2M19.3 12h2.2M4.6 19.4l1.6-1.6M17.8 6.2l1.6-1.6"/>
                      </svg>
                    </button>
                    <button class="icon-btn" id="navToggle" type="button" aria-label="Toggle menu" aria-expanded="false">☰</button>
                  </div>
                </div></div>
              </header>
              
          
              <main>
                <div class="wrap">
                  
                    
                  
                  
          
          
          
          <section class="auth bleed">
            <div class="auth-grid band-inner">
              <div class="auth-copy">
                <span class="auth-kicker">Step 2 of 4</span>
                <h1 class="auth-title">Create your<br>workspace</h1>
                <p class="auth-lede">
                  Your content lives here. Your site keeps living wherever it is hosted
                  today, reading everything from one address.
                </p>
          
                
                <div class="progress progress-band" role="progressbar" aria-valuenow="12" aria-valuemin="0" aria-valuemax="100">
                  <i style="width:12%"></i>
                </div>
                <ol class="steps">
                  
                    <li class=""><b>1</b>Choose a plan</li>
                  
                    <li class=""><b>2</b>Create your workspace</li>
                  
                    <li class=""><b>3</b>Add your content</li>
                  
                    <li class=""><b>4</b>Point your domain</li>
                  
                </ol>
          
                
                <div class="auth-cols">
                  <div>
                    <span class="auth-h">What you get today</span>
                    <ul class="auth-points">
                      <li>A dashboard for every word and image on your site</li>
                      <li>One API your existing host reads — no migration</li>
                      <li>Themes you can switch without a rebuild</li>
                      <li>Images stripped of location data, served through expiring links</li>
                    </ul>
                  </div>
                  <div>
                    <span class="auth-h">Right after this</span>
                    <div class="auth-next"><b>01</b><span>Name your site and claim the domain it will serve</span></div>
                    <div class="auth-next"><b>02</b><span>Fill in the pages you already have — we start you with a template</span></div>
                    <div class="auth-next"><b>03</b><span>Download one file for your host, and you are live</span></div>
                  </div>
                </div>
              </div>
          
              <div class="auth-card">
                <form method="post">
                  <input type="hidden" name="_csrf" value="U7ygdlDsPzGNhVUsgcCr.b490804661bdf6603f4969db6e01cc20">
                  <input type="hidden" name="plan" value="">
                  <label class="field">
                    <span class="lbl">Organisation<span class="hint">Shown as your site name</span></span>
                    <input type="text" name="organisation" value="" placeholder="Dragon View Hotel" required autofocus>
                    
                  </label>
          
                  <label class="field">
                    <span class="lbl">Work email</span>
                    <input type="email" name="email" value="" placeholder="you@yourdomain.bt" required>
                    
                  </label>
          
                  <label class="field">
                    <span class="lbl">Password<span class="hint">At least 10 characters</span></span>
                    <input type="password" name="password" required minlength="10" autocomplete="new-password">
                    
                  </label>
          
                  <button class="btn btn-accent btn-block btn-lg" type="submit">Create my workspace</button>
                  <p class="auth-fine">Free while you set it up. No card, no charge until you go live.</p>
                </form>
          
                <p class="auth-alt">
                  Already have a workspace? <a class="auth-link" href="/login">Sign in</a>
                </p>
              </div>
            </div>
          </section>
          
          <style>
            .auth {
              background: var(--band); color: var(--band-fg);
              min-height: min(100svh, 940px);
              display: flex; align-items: center;
              padding: calc(var(--nav-h) + 2.4rem) 0 clamp(2.4rem, 6vw, 4rem);
            }
            .auth-grid {
              display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
              gap: clamp(1.8rem, 5vw, 4rem); align-items: center; width: 100%;
            }
          
            .auth-kicker {
              display: inline-flex; align-items: center; gap: .55rem;
              font-family: var(--mono); font-size: .7rem; font-weight: 500;
              letter-spacing: .16em; text-transform: uppercase; color: var(--emerald);
            }
            .auth-kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .7; }
             
            .auth .auth-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.4rem, 5.6vw, 4.4rem); line-height: .96;
              color: #fff; margin: .9rem 0 1rem;
            }
            .auth-lede { max-width: 44ch; color: var(--band-muted); font-size: 1rem; line-height: 1.6; margin: 0 0 1.6rem; }
          
            .progress-band { background: rgba(255,255,255,.10); border-color: rgba(255,255,255,.16); }
            .steps { list-style: none; margin: .8rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem 1rem; font-size: .8rem; color: rgba(255,255,255,.5); }
            .steps li { display: flex; align-items: center; gap: .4rem; }
            .steps li b {
              display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%;
              background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18);
              font-size: .68rem; font-weight: 700; color: rgba(255,255,255,.6);
            }
            .steps li.done { color: var(--emerald); }
            .steps li.done b { background: var(--emerald); border-color: var(--emerald); color: #06120d; }
          
            .auth-cols {
              display: grid; grid-template-columns: 1fr 1fr; gap: 1.6rem;
              margin-top: 2rem; padding-top: 1.6rem; border-top: 1px solid rgba(255,255,255,.14);
            }
            .auth-h {
              display: block; margin-bottom: .7rem;
              font-family: var(--mono); font-size: .68rem; font-weight: 500;
              letter-spacing: .14em; text-transform: uppercase; color: #6f7a75;
            }
            .auth-points { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
            .auth-points li {
              display: flex; gap: .6rem; align-items: baseline;
              font-size: .88rem; line-height: 1.45; color: rgba(255,255,255,.76);
            }
            .auth-points li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
            .auth-next { display: flex; gap: .7rem; align-items: flex-start; font-size: .88rem; line-height: 1.45; color: rgba(255,255,255,.76); margin-bottom: .5rem; }
            .auth-next b { font-family: var(--mono); font-size: .66rem; letter-spacing: .1em; color: var(--emerald); padding-top: .22rem; }
          
            .auth-card {
              background: var(--surface); color: var(--ink);
              border: 1px solid var(--line); border-radius: var(--r-2xl);
              padding: clamp(1.5rem, 3.4vw, 2.4rem);
              box-shadow: 0 50px 100px -50px rgba(0,0,0,.85);
            }
            .auth-card .field:last-of-type { margin-bottom: 1.4rem; }
            .auth-fine { margin: .9rem 0 0; text-align: center; font-size: .8rem; color: var(--faint); }
            .auth-alt { margin: 1.2rem 0 0; text-align: center; font-size: .88rem; color: var(--muted); }
            .auth-link { color: var(--emerald-deep); font-weight: 600; }
            :root[data-theme="dark"] .auth-link { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .auth-link { color: var(--emerald); } }
            .btn-lg { padding: 1rem 1.9rem; font-size: 1rem; }
          
            @media (max-width: 980px) {
              .auth { min-height: 0; padding-top: calc(var(--nav-h) + 1.6rem); }
              .auth-grid { grid-template-columns: 1fr; gap: 2rem; }
              .auth-copy { order: 2; }
              .auth-card { order: 1; }
            }
            @media (max-width: 620px) { .auth-cols { grid-template-columns: 1fr; } }
          </style>
          
                </div>
              </main>
          
              
              <footer class="site-footer">
                <div class="wrap footer-grid">
                  <div>
                    <span class="footer-name">WONS Sites</span>
                    <p class="footer-tag">A website you can keep up to date yourself.</p>
                  </div>
                  <nav class="footer-col" aria-label="Product">
                    <span class="label">Product</span>
                    <a href="/themes">Themes</a>
                    <a href="/#product">What you can change</a>
                    <a href="/#pricing">Pricing</a>
                    <a href="/docs">Docs</a>
                  </nav>
                  <nav class="footer-col" aria-label="Account">
                    <span class="label">Account</span>
                    <a href="/login">Log in</a>
                    <a href="/signup">Start your site</a>
                    <a href="/dashboard">Dashboard</a>
                  </nav>
                  <div>
                    <p class="footer-sub-head">Start with your email</p>
                    <p class="footer-sub-copy">It takes you straight to sign-up — free plan, no card needed.</p>
                    <form class="footer-sub" action="/signup" method="get">
                      <input type="email" name="email" placeholder="Your email address" aria-label="Email address">
                      <button class="sub-btn" type="submit" aria-label="Start your site">
                        <svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </button>
                    </form>
                  </div>
                </div>
                <div class="wrap footer-base">
                  <span>© 2026 WONS Sites. All rights reserved.</span>
                  <span>Made by WONS</span>
                </div>
              </footer>
              
            </div>
          
            <script nonce="GQq--xxvo0PYRMzufvLMsg">
              var themeToggle = document.getElementById("themeToggle");
              if (themeToggle) themeToggle.addEventListener("click", function () {
                var root = document.documentElement;
                var current = root.getAttribute("data-theme");
                var systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
                var next = (current ? current === "dark" : systemDark) ? "light" : "dark";
                root.setAttribute("data-theme", next);
                try { localStorage.setItem("wons-sites-theme", next); } catch (e) {}
              });
          
              
              var navToggle = document.getElementById("navToggle");
              var topbar = document.getElementById("topbar");
              if (navToggle && topbar) navToggle.addEventListener("click", function () {
                var open = topbar.classList.toggle("open");
                navToggle.setAttribute("aria-expanded", open ? "true" : "false");
              });
          
              
              
              
              (function () {
                var bar = document.getElementById("topbar");
                if (!bar) return;
                var mark = function () {
                  bar.classList.toggle("stuck", window.scrollY > 72);
                };
                mark();
                window.addEventListener("scroll", mark, { passive: true });
              })();
          
              (function () {
                var path = location.pathname.replace(/\/+$/, "") || "/";
                var best = null, bestLen = -1;
                document.querySelectorAll(".nav a.link").forEach(function (a) {
                  var href = (a.getAttribute("href") || "").replace(/\/+$/, "") || "/";
                  var match = href === "/" ? path === "/" : (path === href || path.indexOf(href + "/") === 0);
                  if (match && href.length > bestLen) { best = a; bestLen = href.length; }
                });
                if (best) best.classList.add("active");
              })();
            </script>
          <script nonce="GQq--xxvo0PYRMzufvLMsg">(function(){
          	var es = new EventSource("/__wons/dev/reload");
          	es.onmessage = function(){ location.reload() };
          	// Close the stream the instant the page is left. Without this, each
          	// navigation leaves its SSE connection lingering; a few quick clicks
          	// exhaust the browser's ~6-per-origin HTTP/1.1 connection cap and every
          	// further request (including the next page) stalls until the stale
          	// streams time out. Closing on pagehide frees the slot immediately.
          	window.addEventListener("pagehide", function(){ es.close(); });
          })()</script></body>
          </html>
          
          Parameter
          email
          Evidence
          zaproxy@example.com
          Solution

          Do not pass sensitive information in URIs.

      2. Information Disclosure - Suspicious Comments (1)
        1. GET https://sites.wons.bt/theme-preview/vantage
          Alert tags
          Alert description

          The response appears to contain suspicious comments which may help an attacker.

          Other info

          The following pattern was used: \bFROM\b and was detected 2 times, the first in likely comment: "/*

          Vantage — renderer.

          Dark-first tech: glassy sticky header, radial hero glow, glow-ring hover

          state on cards and media. ", see evidence field for the suspicious comment/snippet.

          Request
          Request line and header section (355 bytes)
          GET https://sites.wons.bt/theme-preview/vantage HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          referer: https://sites.wons.bt/
          Cookie: wons_csrf=Emdv3uHo88D7XA2AtzQz.8d4ecc91c708b367dc6749814a1ba91d
          
          
          Request body (0 bytes)
          Response
          Status line and header section (680 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:43:04 GMT
          Content-Type: text/html; charset=utf-8
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-bqTNI6bgGpKtuvaVH7p_sw'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          content-length: 108293
          
          
          Response body (108293 bytes)
          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=1280">
          <title>Vantage — preview</title>
          <meta name="robots" content="noindex,nofollow">
          <style>
          @import url("/fonts/fonts.css");
          
          /*
            Vantage — dark-first tech and professional services.
            Near-black surfaces, teal/cyan accent, soft colour-glow shadows instead of
            plain drop shadows, crisp 8-12px corners. Dark values below are FALLBACKS —
            applyBranding() overwrites them from the customer's palette (including a
            full light mode) at runtime.
            Signature: a persistent right-edge quick-link rail alongside the top nav,
            hero eyebrows that type themselves out with a blinking cursor, a scan-line
            light sweep across cards on hover, and stat values that tick up in monospace
            the first time they scroll into view. The hero itself sits inside a
            console/terminal window frame (.vg-console) so the theme reads as
            unmistakably "dev tool" from the very first pixel, before any scroll or
            hover — the rail is now a grouped, bordered panel for the same reason.
          */
          
          :root {
            --vg-bg: #0b0d10;
            --vg-surface: #12161b;
            --vg-surface-2: #171c22;
            --vg-card: #141920;
            --vg-ink: #e7edf3;
            --vg-muted: #9aa7b4;
            --vg-subtle: #66717d;
            --vg-line: #232a32;
            --vg-line-strong: #313a44;
            --vg-primary: #2dd4bf;
            --vg-primary-h: #23b8a5;
            --vg-on-primary: #04211d;
            --vg-secondary: #161d3a;
            --vg-accent: #22d3ee;
            --vg-focus: #38bdf8;
            --vg-overlay: rgba(4, 7, 10, .82);
            --vg-link: #67e8f9;
            --vg-success: #34d399;
            --vg-warning: #fbbf24;
            --vg-danger: #f87171;
            --vg-heading: "Space Grotesk", "Segoe UI", sans-serif;
            --vg-body: "Manrope", "Segoe UI", sans-serif;
            --vg-radius-sm: 8px;
            --vg-radius: 12px;
            --vg-radius-lg: 18px;
            --vg-shadow: 0 1px 0 rgba(0, 0, 0, .4), 0 20px 46px rgba(0, 0, 0, .5);
            --vg-shadow-lg: 0 30px 80px rgba(0, 0, 0, .6);
            --vg-glow: 0 0 0 1px color-mix(in srgb, var(--vg-primary) 30%, transparent), 0 0 32px color-mix(in srgb, var(--vg-primary) 20%, transparent);
            --vg-maxw: 1220px;
            --vg-measure: 68ch;
            --vg-bleed: clamp(1.1rem, 5vw, 4rem);
            --vg-section: clamp(4rem, 2vw, 8rem);
            --vg-header-h: 76px;
          }
          
          * { box-sizing: border-box; }
          html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
          body {
            margin: 0;
            min-width: 320px;
            background:
              radial-gradient(circle at 12% -6%, color-mix(in srgb, var(--vg-primary) 12%, transparent), transparent 34rem),
              radial-gradient(circle at 92% 0%, color-mix(in srgb, var(--vg-accent) 8%, transparent), transparent 30rem),
              var(--vg-bg);
            color: var(--vg-ink);
            font-family: var(--vg-body);
            font-size: 16.5px;
            line-height: 1.68;
            letter-spacing: -.003em;
            -webkit-font-smoothing: antialiased;
            text-rendering: optimizeLegibility;
          }
          body.vg-nav-open { overflow: hidden; }
          button, input, select, textarea { font: inherit; }
          button { color: inherit; background: none; }
          img { display: block; max-width: 100%; height: auto; }
          a { color: inherit; text-decoration: none; }
          p { margin: 0 0 1.1rem; }
          
          h1, h2, h3, h4 {
            margin: 0;
            font-family: var(--vg-heading);
            line-height: 1.08;
            letter-spacing: -.02em;
            font-weight: 600;
            text-wrap: balance;
          }
          h1 { font-size: clamp(2.6rem, 3.4vw, 5.6rem); font-weight: 620; letter-spacing: -.03em; }
          h2 { font-size: clamp(1.9rem, 2.6vw, 3.5rem); font-weight: 610; letter-spacing: -.025em; }
          h3 { font-size: clamp(1.1rem, 1vw, 1.35rem); font-weight: 600; }
          h4 { font-size: .95rem; font-weight: 650; letter-spacing: -.01em; }
          
          ::selection { background: color-mix(in srgb, var(--vg-primary) 40%, transparent); color: var(--vg-ink); }
          :focus-visible { outline: 2px solid var(--vg-focus); outline-offset: 3px; border-radius: 4px; }
          
          .vg-wrap { width: 100%; max-width: var(--vg-maxw); margin: 0 auto; padding-inline: var(--vg-bleed); }
          .vg-skip {
            position: fixed; z-index: 999; left: 1rem; top: 1rem; transform: translateY(-180%);
            padding: .75rem 1rem; border-radius: var(--vg-radius-sm); background: var(--vg-primary); color: var(--vg-on-primary);
            font-weight: 700; transition: transform .2s;
          }
          .vg-skip:focus { transform: translateY(0); }
          
          .vg-eyebrow {
            display: inline-flex; align-items: center; gap: .6rem;
            color: var(--vg-accent);
            font-family: var(--vg-heading);
            font-size: .74rem; font-weight: 640; letter-spacing: .16em; text-transform: uppercase;
          }
          .vg-eyebrow::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; box-shadow: 0 0 10px currentColor; }
          .vg-lede { max-width: 56ch; color: var(--vg-muted); font-size: clamp(1.04rem, 1.4vw, 1.24rem); line-height: 1.6; }
          
          /* typing eyebrow */
          .vg-type-cursor {
            display: inline-block; width: 2px; height: .9em; margin-left: 3px;
            background: currentColor; vertical-align: -.12em;
            animation: vg-blink 1s step-end infinite;
          }
          @keyframes vg-blink { 50% { opacity: 0; } }
          
          /* announcement */
          .vg-announce {
            position: relative; z-index: 60; display: flex; justify-content: center; align-items: center; gap: .85rem; flex-wrap: wrap;
            padding: .68rem var(--vg-bleed);
            background: var(--vg-secondary); color: var(--vg-ink);
            border-bottom: 1px solid var(--vg-line);
            font-size: .84rem;
          }
          .vg-announce a { color: var(--vg-accent); font-weight: 700; }
          .vg-announce a:hover { text-decoration: underline; text-underline-offset: 4px; }
          
          /* header */
          .vg-header {
            position: sticky; top: 0; z-index: 50;
            border-bottom: 1px solid var(--vg-line);
            background: color-mix(in srgb, var(--vg-bg) 78%, transparent);
            backdrop-filter: blur(16px) saturate(1.3);
            -webkit-backdrop-filter: blur(16px) saturate(1.3);
          }
          .vg-header-row { min-height: var(--vg-header-h); display: flex; align-items: center; gap: 1.4rem; }
          .vg-brand { display: inline-flex; align-items: center; min-width: 160px; }
          .vg-brand img { width: auto; height: 34px; max-width: 220px; }
          .vg-brand .vg-wordmark { font-family: var(--vg-heading); font-weight: 660; font-size: 1.2rem; letter-spacing: -.02em; }
          .vg-brand .vg-wordmark::before { content: ""; display: inline-block; width: 9px; height: 9px; margin-right: .55rem; border-radius: 2px; background: var(--vg-primary); box-shadow: 0 0 12px color-mix(in srgb, var(--vg-primary) 70%, transparent); }
          .vg-nav { display: flex; align-items: center; gap: .1rem; margin-left: auto; }
          .vg-nav-item { position: relative; }
          .vg-nav-link {
            display: inline-flex; align-items: center; gap: .35rem;
            min-height: 42px; padding: .55rem .75rem;
            border-radius: var(--vg-radius-sm);
            color: var(--vg-muted); font-size: .89rem; font-weight: 560;
            transition: color .16s, background .16s;
          }
          .vg-nav-link:hover, .vg-nav-link.is-active { color: var(--vg-ink); background: var(--vg-surface); }
          .vg-nav-link.is-active { box-shadow: inset 0 -2px 0 var(--vg-primary); }
          .vg-nav-caret { font-size: .65rem; opacity: .7; transition: transform .18s; }
          .vg-nav-item:hover .vg-nav-caret, .vg-nav-item:focus-within .vg-nav-caret { transform: rotate(180deg); }
          .vg-nav-sub {
            position: absolute; left: 0; top: calc(100% + .5rem); min-width: 220px;
            padding: .5rem; border: 1px solid var(--vg-line); border-radius: var(--vg-radius);
            background: var(--vg-card); box-shadow: var(--vg-shadow-lg);
            opacity: 0; visibility: hidden; transform: translateY(-6px); transition: .16s ease;
          }
          .vg-nav-item:hover .vg-nav-sub, .vg-nav-item:focus-within .vg-nav-sub { opacity: 1; visibility: visible; transform: translateY(0); }
          .vg-nav-sub a { display: block; padding: .65rem .7rem; border-radius: 8px; color: var(--vg-muted); font-size: .88rem; font-weight: 560; }
          .vg-nav-sub a:hover, .vg-nav-sub a.is-active { color: var(--vg-ink); background: var(--vg-surface-2); }
          .vg-nav-cta { margin-left: .5rem; background: var(--vg-primary); color: var(--vg-on-primary) !important; font-weight: 680; box-shadow: var(--vg-glow); }
          .vg-nav-cta:hover { background: var(--vg-primary-h) !important; color: var(--vg-on-primary) !important; }
          .vg-header-actions { display: flex; align-items: center; gap: .4rem; }
          .vg-mode, .vg-burger {
            width: 40px; height: 40px; display: inline-grid; place-items: center;
            border: 1px solid var(--vg-line); border-radius: var(--vg-radius-sm); cursor: pointer;
            color: var(--vg-ink); transition: border-color .16s, background .16s;
          }
          .vg-mode:hover, .vg-burger:hover { border-color: var(--vg-line-strong); background: var(--vg-surface); }
          .vg-burger { display: none; position: relative; }
          .vg-burger span { position: absolute; width: 16px; height: 1.5px; border-radius: 2px; background: currentColor; transition: .2s; }
          .vg-burger span:nth-child(1) { transform: translateY(-5px); }
          .vg-burger span:nth-child(3) { transform: translateY(5px); }
          .vg-header.is-open .vg-burger span:nth-child(1) { transform: rotate(45deg); }
          .vg-header.is-open .vg-burger span:nth-child(2) { opacity: 0; }
          .vg-header.is-open .vg-burger span:nth-child(3) { transform: rotate(-45deg); }
          
          /* quick-link rail — secondary jump surface, additive to the top nav. Wrapped
             in its own bordered/tinted panel (not just floating icons) so it reads as
             a distinct piece of chrome even in a small, non-interactive screenshot. */
          .vg-rail {
            position: fixed; z-index: 55; right: 1.1rem; top: 50%; transform: translateY(-50%);
            display: flex; flex-direction: column; gap: .5rem;
            padding: .55rem; border-radius: 999px; border: 1px solid var(--vg-line-strong);
            background: color-mix(in srgb, var(--vg-card) 84%, transparent);
            backdrop-filter: blur(14px) saturate(1.2); -webkit-backdrop-filter: blur(14px) saturate(1.2);
            box-shadow: var(--vg-shadow);
          }
          .vg-rail-item {
            position: relative; width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center;
            border: 1px solid var(--vg-line); border-radius: 50%;
            background: color-mix(in srgb, var(--vg-surface) 88%, transparent);
            color: var(--vg-muted); cursor: pointer;
            transition: color .16s, border-color .16s, background .16s, transform .16s;
          }
          .vg-rail-item:hover, .vg-rail-item:focus-visible, .vg-rail-item.is-active {
            color: var(--vg-on-primary); background: var(--vg-primary); border-color: var(--vg-primary);
            box-shadow: var(--vg-glow); transform: translateX(-2px);
          }
          .vg-rail-dot { font-family: var(--vg-heading); font-size: .72rem; font-weight: 700; line-height: 1; }
          .vg-rail-up { width: 12px; height: 12px; }
          .vg-rail-tip {
            position: absolute; right: calc(100% + .6rem); top: 50%; transform: translateY(-50%) translateX(4px);
            padding: .4rem .65rem; border-radius: var(--vg-radius-sm); white-space: nowrap;
            background: var(--vg-card); border: 1px solid var(--vg-line); color: var(--vg-ink);
            font-size: .78rem; font-weight: 560; box-shadow: var(--vg-shadow);
            opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .15s ease, transform .15s ease;
          }
          .vg-rail-item:hover .vg-rail-tip, .vg-rail-item:focus-visible .vg-rail-tip { opacity: 1; visibility: visible; transform: translateY(-50%) translateX(0); }
          
          /* hero */
          .vg-hero { position: relative; overflow: clip; padding: clamp(2.4rem, 2vw, 5.5rem) 0 clamp(3rem, 2vw, 5.5rem); }
          .vg-hero::before {
            content: ""; position: absolute; left: 50%; top: -20%; width: 60vw; max-width: 900px; aspect-ratio: 1;
            background: radial-gradient(circle, color-mix(in srgb, var(--vg-primary) 16%, transparent), transparent 70%);
            transform: translateX(-50%); pointer-events: none;
          }
          
          /* console/terminal window frame around the hero — the theme's at-rest
             signature, visible before any scroll, hover or animation completes. */
          .vg-console {
            position: relative; z-index: 1;
            border: 1px solid var(--vg-line-strong); border-radius: var(--vg-radius-lg);
            background: color-mix(in srgb, var(--vg-card) 92%, transparent);
            box-shadow: var(--vg-shadow-lg); overflow: hidden;
          }
          .vg-console-bar {
            display: flex; align-items: center; gap: .4rem;
            padding: .65rem .95rem; border-bottom: 1px solid var(--vg-line); background: var(--vg-surface);
          }
          .vg-console-dot { width: 9px; height: 9px; border-radius: 50%; flex: none; }
          .vg-console-dot-a { background: var(--vg-danger); }
          .vg-console-dot-b { background: var(--vg-warning); }
          .vg-console-dot-c { background: var(--vg-success); }
          .vg-console-label {
            margin-left: .5rem; color: var(--vg-subtle);
            font-family: ui-monospace, "SF Mono", "Space Grotesk", Menlo, Consolas, monospace;
            font-size: .76rem; letter-spacing: .01em;
            overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
          }
          .vg-console-body { padding: clamp(1.9rem, 5vw, 3.6rem); }
          .vg-hero-grid { position: relative; display: grid; grid-template-columns: minmax(0, .96fr) minmax(340px, 1.04fr); gap: clamp(2.5rem, 6vw, 5.5rem); align-items: center; }
          .vg-hero-grid.vg-single { grid-template-columns: 1fr; max-width: 820px; }
          .vg-hero h1 { max-width: 12ch; margin: 1.2rem 0 1.3rem; }
          .vg-hero .vg-lede { color: var(--vg-ink); opacity: .82; }
          .vg-hero-desc { max-width: 52ch; margin-top: 1rem; color: var(--vg-muted); font-size: 1rem; }
          .vg-actions { display: flex; flex-wrap: wrap; gap: .65rem; margin-top: 1.9rem; }
          .vg-hero-media { position: relative; }
          .vg-hero-media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--vg-radius-lg); border: 1px solid var(--vg-line); box-shadow: var(--vg-shadow-lg); }
          .vg-hero-media::after {
            content: ""; position: absolute; inset: -1px; border-radius: var(--vg-radius-lg);
            box-shadow: var(--vg-glow); pointer-events: none;
          }
          
          .vg-btn {
            display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
            min-height: 46px; padding: .78rem 1.25rem; border: 1px solid transparent; border-radius: var(--vg-radius-sm);
            cursor: pointer; font-family: var(--vg-heading); font-size: .9rem; font-weight: 600; letter-spacing: -.005em;
            transition: transform .15s, background .16s, border-color .16s, box-shadow .16s;
          }
          .vg-btn:hover { transform: translateY(-1px); }
          .vg-btn:active { transform: translateY(0); }
          .vg-btn-primary { background: var(--vg-primary); color: var(--vg-on-primary); box-shadow: var(--vg-glow); }
          .vg-btn-primary:hover { background: var(--vg-primary-h); }
          .vg-btn-secondary { border-color: var(--vg-line-strong); background: var(--vg-surface); color: var(--vg-ink); }
          .vg-btn-secondary:hover { border-color: var(--vg-primary); color: var(--vg-primary); }
          .vg-btn-text { min-height: auto; padding: .3rem 0; border-radius: 0; color: var(--vg-accent); }
          .vg-btn-text:hover { transform: none; color: var(--vg-link); }
          .vg-icon { flex: none; transition: transform .16s; }
          .vg-btn:hover .vg-icon, .vg-more:hover .vg-icon { transform: translateX(3px); }
          
          /* sections */
          .vg-section { padding: var(--vg-section) 0; }
          .vg-section.alt { background: var(--vg-surface); border-block: 1px solid var(--vg-line); }
          .vg-section-head { max-width: 740px; margin-bottom: clamp(2rem, 5vw, 3.6rem); }
          .vg-section-head .vg-eyebrow { margin-bottom: .9rem; }
          .vg-section-head h2 { margin-bottom: .9rem; }
          .vg-section-actions { margin-top: clamp(1.8rem, 4vw, 2.8rem); }
          
          /* stats */
          .vg-stats-section { padding: 0 0 var(--vg-section); }
          .vg-stats {
            display: grid; grid-template-columns: repeat(var(--vg-cols, 4), minmax(0, 1fr));
            border: 1px solid var(--vg-line); border-radius: var(--vg-radius-lg); overflow: hidden; background: var(--vg-card);
          }
          .vg-stat { padding: clamp(1.4rem, 3vw, 2.1rem); border-right: 1px solid var(--vg-line); }
          .vg-stat:last-child { border-right: 0; }
          .vg-stat-value { font-family: var(--vg-heading); font-size: clamp(2rem, 3.6vw, 3.4rem); font-weight: 640; line-height: 1; letter-spacing: -.03em; color: var(--vg-primary); text-shadow: 0 0 24px color-mix(in srgb, var(--vg-primary) 35%, transparent); }
          .vg-stat-num { font-family: ui-monospace, "SF Mono", "Space Grotesk", Menlo, Consolas, monospace; font-variant-numeric: tabular-nums; }
          .vg-stat-label { margin-top: .6rem; color: var(--vg-muted); font-size: .84rem; font-weight: 560; }
          
          /* split */
          .vg-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, .92fr); gap: clamp(2.5rem, 7vw, 6.5rem); align-items: center; }
          .vg-split.reverse .vg-split-copy { order: 2; }
          .vg-split-copy .vg-rich { color: var(--vg-muted); }
          .vg-split-media img { width: 100%; aspect-ratio: 5 / 4; object-fit: cover; border-radius: var(--vg-radius-lg); border: 1px solid var(--vg-line); box-shadow: var(--vg-shadow); }
          
          /* cards */
          .vg-grid { display: grid; grid-template-columns: repeat(var(--vg-cols, 3), minmax(0, 1fr)); gap: clamp(1rem, 2.2vw, 1.4rem); }
          .vg-card {
            position: relative; display: flex; flex-direction: column; min-height: 100%; overflow: hidden;
            border: 1px solid var(--vg-line); border-radius: var(--vg-radius); background: var(--vg-card);
            transition: transform .2s, border-color .2s, box-shadow .2s;
          }
          .vg-card:hover { transform: translateY(-4px); border-color: color-mix(in srgb, var(--vg-primary) 45%, var(--vg-line)); box-shadow: var(--vg-glow); }
          .vg-card-media { display: block; overflow: hidden; background: var(--vg-surface-2); }
          .vg-card-media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform .4s ease; }
          .vg-card:hover .vg-card-media img { transform: scale(1.03); }
          .vg-card-body { position: relative; z-index: 3; display: flex; flex-direction: column; flex: 1; padding: 1.35rem 1.35rem 1.4rem; }
          
          /* scan-line sweep — sci-fi console hover, stays behind card copy (z-index 3) */
          .vg-card::after, .vg-gallery figure::after, .vg-quote-card::after {
            content: ""; position: absolute; left: 0; right: 0; top: -30%; height: 30%; z-index: 2;
            background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--vg-primary) 55%, transparent), transparent);
            opacity: 0; transform: translateY(-20%); pointer-events: none;
            transition: opacity .25s ease, transform .7s ease;
          }
          .vg-card:hover::after, .vg-card:focus-within::after,
          .vg-gallery figure:hover::after, .vg-gallery figure:focus-within::after,
          .vg-quote-card:hover::after, .vg-quote-card:focus-within::after {
            opacity: .85; transform: translateY(430%);
          }
          .vg-card h3 { margin-bottom: .5rem; }
          .vg-card p { margin: 0; color: var(--vg-muted); font-size: .93rem; line-height: 1.6; }
          .vg-card-meta { display: flex; flex-wrap: wrap; gap: .4rem .7rem; margin-bottom: .8rem; color: var(--vg-subtle); font-size: .7rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
          .vg-card-price { margin-top: .85rem; font-family: var(--vg-heading); font-size: 1.02rem; font-weight: 640; color: var(--vg-primary); }
          .vg-more { display: inline-flex; align-items: center; gap: .35rem; margin-top: auto; padding-top: 1.1rem; color: var(--vg-accent); font-size: .87rem; font-weight: 650; }
          .vg-card-icon { width: 40px; height: 40px; display: grid; place-items: center; margin-bottom: 1.15rem; border-radius: var(--vg-radius-sm); background: var(--vg-surface-2); color: var(--vg-primary); }
          .vg-card.no-media .vg-card-body { padding: 1.6rem; }
          
          /* gallery */
          .vg-gallery { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(.8rem, 2vw, 1.3rem); }
          .vg-gallery figure { grid-column: span 4; margin: 0; overflow: hidden; border: 1px solid var(--vg-line); border-radius: var(--vg-radius); background: var(--vg-card); transition: transform .2s, box-shadow .2s; }
          .vg-gallery figure:nth-child(1), .vg-gallery figure:nth-child(5) { grid-column: span 7; }
          .vg-gallery figure:nth-child(2), .vg-gallery figure:nth-child(6) { grid-column: span 5; }
          .vg-gallery figure:hover { transform: translateY(-3px); box-shadow: var(--vg-glow); }
          .vg-gallery-button { display: block; width: 100%; padding: 0; border: 0; background: transparent; text-align: left; cursor: zoom-in; }
          .vg-gallery img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform .4s; }
          .vg-gallery figure:nth-child(1) img, .vg-gallery figure:nth-child(5) img { aspect-ratio: 16 / 10; }
          .vg-gallery figure:hover img { transform: scale(1.02); }
          .vg-gallery figcaption { position: relative; z-index: 3; padding: 1.1rem 1.2rem 1.25rem; }
          .vg-fig-title { font-family: var(--vg-heading); font-weight: 620; }
          .vg-fig-sub { margin-top: .2rem; color: var(--vg-muted); font-size: .9rem; }
          .vg-meta { margin-top: .5rem; color: var(--vg-subtle); font-size: .68rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
          
          /* people */
          .vg-people { display: grid; grid-template-columns: repeat(var(--vg-cols, 4), minmax(0, 1fr)); gap: clamp(1rem, 2vw, 1.4rem); }
          .vg-person-image { overflow: hidden; border-radius: var(--vg-radius); border: 1px solid var(--vg-line); background: var(--vg-surface-2); }
          .vg-person img { width: 100%; aspect-ratio: 1; object-fit: cover; transition: transform .3s; }
          .vg-person:hover img { transform: scale(1.03); }
          .vg-person h3 { margin-top: .95rem; margin-bottom: .2rem; }
          .vg-person .vg-role { color: var(--vg-muted); font-size: .89rem; }
          
          /* rich content */
          .vg-rich { max-width: var(--vg-measure); font-size: 1.03rem; }
          .vg-rich > :first-child { margin-top: 0; }
          .vg-rich h2, .vg-rich h3, .vg-rich h4 { margin-top: 2.1rem; margin-bottom: .7rem; }
          .vg-rich p, .vg-rich li { color: color-mix(in srgb, var(--vg-ink) 82%, var(--vg-muted)); }
          .vg-rich ul, .vg-rich ol { margin: 0 0 1.35rem; padding-left: 1.2rem; }
          .vg-rich li { margin: .4rem 0; }
          .vg-rich blockquote { margin: 2rem 0; padding: .2rem 0 .2rem 1.35rem; border-left: 2px solid var(--vg-primary); font-family: var(--vg-heading); font-size: clamp(1.2rem, 2vw, 1.55rem); line-height: 1.42; }
          .vg-rich img { width: 100%; margin: 1.9rem 0; border-radius: var(--vg-radius); border: 1px solid var(--vg-line); }
          .vg-rich a { color: var(--vg-link); text-decoration: underline; text-underline-offset: 3px; }
          .vg-rich hr { border: 0; border-top: 1px solid var(--vg-line); margin: 2.2rem 0; }
          
          /* testimonials */
          .vg-testimonials { display: grid; grid-template-columns: repeat(var(--vg-cols, 2), minmax(0, 1fr)); gap: 1.15rem; }
          .vg-quote-card { position: relative; overflow: hidden; padding: clamp(1.5rem, 3.5vw, 2.3rem); border: 1px solid var(--vg-line); border-radius: var(--vg-radius-lg); background: var(--vg-card); }
          .vg-quote-card > * { position: relative; z-index: 3; }
          .vg-quote-mark { color: var(--vg-primary); font-family: var(--vg-heading); font-size: 3rem; line-height: .6; }
          .vg-quote-card blockquote { margin: 1rem 0 1.5rem; font-family: var(--vg-heading); font-size: clamp(1.15rem, 1.8vw, 1.4rem); line-height: 1.4; }
          .vg-quote-name { font-weight: 640; }
          .vg-quote-detail { color: var(--vg-muted); font-size: .87rem; }
          
          /* CTA */
          .vg-cta-band {
            position: relative; overflow: hidden;
            display: flex; align-items: center; justify-content: space-between; gap: 2rem; flex-wrap: wrap;
            padding: clamp(2.2rem, 6vw, 4.2rem); border-radius: var(--vg-radius-lg);
            background: var(--vg-secondary); border: 1px solid var(--vg-line-strong); color: var(--vg-ink);
          }
          .vg-cta-band::before {
            content: ""; position: absolute; right: -80px; top: -140px; width: 320px; height: 320px;
            background: radial-gradient(circle, color-mix(in srgb, var(--vg-accent) 30%, transparent), transparent 70%);
          }
          .vg-cta-band > * { position: relative; z-index: 1; }
          .vg-cta-band-copy { max-width: 700px; }
          .vg-cta-band .vg-eyebrow { margin-bottom: .9rem; }
          .vg-cta-band h2 { max-width: 16ch; margin-bottom: .7rem; }
          .vg-cta-band p { max-width: 52ch; margin: 0; color: var(--vg-muted); }
          
          /* page header and collection header */
          .vg-page-head { padding: clamp(3.4rem, 8vw, 6.6rem) 0 clamp(2.8rem, 7vw, 5.4rem); }
          .vg-page-head-grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(360px, 1.2fr); gap: clamp(2.5rem, 6vw, 5rem); align-items: end; }
          .vg-page-head h1 { margin: 1.1rem 0 1.1rem; max-width: 14ch; }
          .vg-page-banner img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--vg-radius-lg); border: 1px solid var(--vg-line); }
          .vg-breadcrumbs { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; color: var(--vg-subtle); font-size: .81rem; }
          .vg-breadcrumbs a:hover { color: var(--vg-accent); }
          
          /* detail */
          .vg-detail-hero { padding: clamp(2.6rem, 2vw, 5.4rem) 0 clamp(3rem, 2vw, 6rem); }
          .vg-detail-grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(360px, 1.1fr); gap: clamp(2.5rem, 6vw, 5.5rem); align-items: center; }
          .vg-detail-hero h1 { margin: .85rem 0 1rem; max-width: 13ch; }
          .vg-detail-hero img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--vg-radius-lg); border: 1px solid var(--vg-line); box-shadow: var(--vg-shadow); }
          .vg-detail-meta { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: 1.1rem; }
          .vg-detail-meta span { padding: .4rem .65rem; border: 1px solid var(--vg-line); border-radius: var(--vg-radius-sm); color: var(--vg-muted); font-size: .77rem; font-weight: 620; }
          .vg-detail-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, .38fr); gap: clamp(2.5rem, 7vw, 5.5rem); }
          .vg-detail-aside { align-self: start; position: sticky; top: calc(var(--vg-header-h) + 1.4rem); padding: 1.35rem; border: 1px solid var(--vg-line); border-radius: var(--vg-radius); background: var(--vg-card); }
          .vg-detail-aside h3 { margin-bottom: .85rem; }
          .vg-specs { margin: 0; }
          .vg-specs div { padding: .68rem 0; border-bottom: 1px solid var(--vg-line); }
          .vg-specs div:last-child { border-bottom: 0; }
          .vg-specs dt { color: var(--vg-subtle); font-size: .7rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
          .vg-specs dd { margin: .18rem 0 0; color: var(--vg-ink); }
          .vg-detail-gallery { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: .95rem; margin-top: 2.3rem; }
          .vg-detail-gallery img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--vg-radius); border: 1px solid var(--vg-line); }
          
          /* contact */
          .vg-contact-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.1rem; }
          .vg-contact-card { padding: 1.5rem; border: 1px solid var(--vg-line); border-radius: var(--vg-radius); background: var(--vg-card); }
          .vg-contact-card h3 { margin-bottom: .95rem; }
          .vg-contact-card dl { margin: 0; }
          .vg-contact-card dt { margin-top: .85rem; color: var(--vg-subtle); font-size: .7rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
          .vg-contact-card dt:first-child { margin-top: 0; }
          .vg-contact-card dd { margin: .2rem 0 0; color: var(--vg-muted); }
          .vg-contact-card a:hover { color: var(--vg-accent); }
          .vg-hours { width: 100%; border-collapse: collapse; }
          .vg-hours td { padding: .58rem 0; border-bottom: 1px solid var(--vg-line); color: var(--vg-muted); }
          .vg-hours td:last-child { text-align: right; }
          
          /* form */
          .vg-form-shell { display: grid; grid-template-columns: minmax(0, .55fr) minmax(0, 1fr); gap: clamp(2rem, 6vw, 5.5rem); }
          .vg-form-copy .vg-section-head { position: sticky; top: calc(var(--vg-header-h) + 1.4rem); }
          .vg-form { padding: clamp(1.4rem, 3.5vw, 2.3rem); border: 1px solid var(--vg-line); border-radius: var(--vg-radius-lg); background: var(--vg-card); }
          .vg-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.1rem; }
          .vg-field { display: flex; flex-direction: column; gap: .42rem; }
          .vg-field.full { grid-column: 1 / -1; }
          .vg-field label { font-size: .83rem; font-weight: 640; }
          .vg-required { color: var(--vg-primary); }
          .vg-field input, .vg-field select, .vg-field textarea {
            width: 100%; border: 1px solid var(--vg-line-strong); border-radius: var(--vg-radius-sm);
            background: var(--vg-bg); color: var(--vg-ink); padding: .8rem .85rem;
            transition: border-color .16s, box-shadow .16s;
          }
          .vg-field textarea { min-height: 140px; resize: vertical; }
          .vg-field input::placeholder, .vg-field textarea::placeholder { color: var(--vg-subtle); }
          .vg-field input:focus, .vg-field select:focus, .vg-field textarea:focus { border-color: var(--vg-focus); box-shadow: 0 0 0 3px color-mix(in srgb, var(--vg-focus) 24%, transparent); outline: none; }
          .vg-form-footer { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-top: 1.2rem; }
          .vg-form-note { margin: 0; color: var(--vg-subtle); font-size: .81rem; }
          .vg-form-status { margin-top: 1rem; padding: .8rem 1rem; border-radius: var(--vg-radius-sm); background: var(--vg-surface); color: var(--vg-muted); border: 1px solid var(--vg-line); }
          
          /* footer */
          .vg-footer { padding: clamp(3.6rem, 8vw, 6.4rem) 0 1.9rem; border-top: 1px solid var(--vg-line); background: var(--vg-surface); }
          .vg-footer-grid { display: grid; grid-template-columns: minmax(260px, 1.5fr) repeat(var(--vg-fcols, 2), minmax(150px, 1fr)); gap: clamp(2rem, 5vw, 4.5rem); }
          .vg-footer-logo { width: auto; height: 32px; max-width: 220px; margin-bottom: .9rem; }
          .vg-footer p { max-width: 36ch; color: var(--vg-muted); font-size: .92rem; }
          .vg-footer h4 { margin-bottom: .9rem; color: var(--vg-accent); font-size: .7rem; letter-spacing: .13em; text-transform: uppercase; }
          .vg-footer a { display: block; padding: .24rem 0; color: var(--vg-muted); font-size: .9rem; }
          .vg-footer a:hover { color: var(--vg-ink); }
          .vg-footer-bottom { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; margin-top: clamp(2.6rem, 6vw, 4.5rem); padding-top: 1.3rem; border-top: 1px solid var(--vg-line); color: var(--vg-subtle); font-size: .81rem; }
          .vg-social { display: flex; gap: .5rem; }
          .vg-social a { width: 38px; height: 38px; display: grid; place-items: center; padding: 0; border: 1px solid var(--vg-line); border-radius: var(--vg-radius-sm); }
          .vg-social a:hover { border-color: var(--vg-primary); color: var(--vg-primary); }
          
          /* states, lightbox, toast */
          .vg-loading, .vg-state { min-height: 70vh; display: grid; place-items: center; padding: 3rem 1.5rem; text-align: center; }
          .vg-state-box { max-width: 600px; }
          .vg-state-box h1 { margin: 1rem 0; }
          .vg-state-box p { color: var(--vg-muted); }
          .vg-spinner { width: 30px; height: 30px; margin: 0 auto 1rem; border: 2px solid var(--vg-line); border-top-color: var(--vg-primary); border-radius: 50%; animation: vg-spin .75s linear infinite; }
          @keyframes vg-spin { to { transform: rotate(360deg); } }
          [hidden] { display: none !important; }
          .vg-toast { position: fixed; z-index: 120; right: 1rem; bottom: 1rem; max-width: 340px; padding: .85rem 1rem; border: 1px solid var(--vg-line); border-radius: var(--vg-radius-sm); background: var(--vg-card); box-shadow: var(--vg-shadow-lg); color: var(--vg-ink); }
          .vg-lightbox { position: fixed; z-index: 100; inset: 0; display: grid; place-items: center; padding: clamp(1rem, 4vw, 3rem); background: var(--vg-overlay); }
          .vg-lightbox-stage { max-width: min(1200px, 92vw); max-height: 88vh; }
          .vg-lightbox-stage img { max-height: 82vh; border-radius: var(--vg-radius); box-shadow: var(--vg-shadow-lg); }
          .vg-lightbox-stage p { margin: .65rem 0 0; color: var(--vg-ink); text-align: center; }
          .vg-lightbox-close { position: absolute; right: 1rem; top: 1rem; width: 46px; height: 46px; border: 1px solid var(--vg-line-strong); border-radius: var(--vg-radius-sm); background: var(--vg-card); color: var(--vg-ink); font-size: 1.7rem; cursor: pointer; }
          
          /* asset placeholder */
          .vg-placeholder { display: flex; align-items: center; justify-content: center; background: var(--vg-surface-2); border: 1px dashed var(--vg-line-strong); border-radius: var(--vg-radius); color: var(--vg-subtle); min-height: 120px; }
          
          /* noscript */
          .vg-noscript { background: var(--vg-bg); }
          
          /* reveal */
          .vg-reveal { opacity: 0; transform: translateY(16px); transition: opacity .55s ease, transform .55s ease; }
          .vg-reveal.is-in { opacity: 1; transform: none; }
          
          @media (max-width: 1050px) {
            .vg-nav-link { padding-inline: .58rem; }
            .vg-hero-grid, .vg-page-head-grid, .vg-detail-grid { grid-template-columns: 1fr 1fr; }
            .vg-contact-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
          }
          
          @media (max-width: 900px) {
            :root { --vg-header-h: 68px; }
            .vg-brand { min-width: 0; }
            .vg-burger { display: inline-grid; }
            .vg-rail { display: none; }
            .vg-nav {
              position: fixed; inset: var(--vg-header-h) 0 auto 0; max-height: calc(100vh - var(--vg-header-h)); overflow: auto;
              display: none; flex-direction: column; align-items: stretch; gap: .2rem; margin: 0; padding: 1rem var(--vg-bleed) 1.4rem;
              border-bottom: 1px solid var(--vg-line); background: var(--vg-bg); box-shadow: var(--vg-shadow-lg);
            }
            .vg-header.is-open .vg-nav { display: flex; }
            .vg-nav-link { width: 100%; justify-content: space-between; border-radius: var(--vg-radius-sm); padding: .75rem .85rem; }
            .vg-nav-cta { margin: .5rem 0 0; justify-content: center; }
            .vg-nav-sub { position: static; display: block; min-width: 0; margin: .2rem 0 .4rem 1rem; padding: 0 0 0 .8rem; border: 0; border-left: 1px solid var(--vg-line); border-radius: 0; background: transparent; box-shadow: none; opacity: 1; visibility: visible; transform: none; }
            .vg-hero-grid, .vg-page-head-grid, .vg-detail-grid, .vg-split, .vg-form-shell { grid-template-columns: 1fr; }
            .vg-hero h1 { max-width: 13ch; }
            .vg-detail-body { grid-template-columns: 1fr; }
            .vg-detail-aside { position: static; }
            .vg-form-copy .vg-section-head { position: static; }
            .vg-footer-grid { grid-template-columns: 1.2fr 1fr 1fr; }
          }
          
          @media (max-width: 720px) {
            body { font-size: 15.5px; }
            .vg-hero { padding-top: 3rem; }
            .vg-stats { grid-template-columns: repeat(2, minmax(0,1fr)); }
            .vg-stat:nth-child(2) { border-right: 0; }
            .vg-stat:nth-child(-n+2) { border-bottom: 1px solid var(--vg-line); }
            .vg-grid, .vg-people { --vg-cols: 2 !important; }
            .vg-gallery figure, .vg-gallery figure:nth-child(n) { grid-column: span 6; }
            .vg-gallery img, .vg-gallery figure:nth-child(n) img { aspect-ratio: 4 / 3; }
            .vg-testimonials { --vg-cols: 1 !important; }
            .vg-contact-grid { grid-template-columns: 1fr; }
            .vg-form-grid { grid-template-columns: 1fr; }
            .vg-field.full { grid-column: auto; }
            .vg-footer-grid { grid-template-columns: 1fr 1fr; }
          }
          
          @media (max-width: 520px) {
            .vg-grid, .vg-people { --vg-cols: 1 !important; }
            .vg-gallery { display: block; }
            .vg-gallery figure { margin-bottom: .9rem; }
            .vg-stats { grid-template-columns: 1fr; }
            .vg-stat { border-right: 0; border-bottom: 1px solid var(--vg-line); }
            .vg-stat:last-child { border-bottom: 0; }
            .vg-detail-gallery { grid-template-columns: 1fr; }
            .vg-footer-grid { grid-template-columns: 1fr; }
          }
          
          @media (prefers-reduced-motion: reduce) {
            html { scroll-behavior: auto; }
            *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
            .vg-reveal { opacity: 1; transform: none; }
            .vg-type-cursor { animation: none; opacity: .55; }
            .vg-card::after, .vg-gallery figure::after, .vg-quote-card::after { display: none; }
          }
          
          </style>
          <style>html{scrollbar-width:none}::-webkit-scrollbar{display:none}</style>
          </head>
          <body>
          <div id="wons-site"><!-- vantage theme shell. Injected into the mount element before hydration. -->
          <p><a class="vg-skip" href="#main-content">Skip to content</a></p>
          <div class="vg-loading" role="status" data-region="loading" aria-live="polite">
          <div class="vg-spinner" aria-hidden="true">&nbsp;</div>
          <p>Loading the site&hellip;</p>
          </div>
          <div hidden="" data-region="site">
          <div class="vg-announce-wrap" data-region="announce">&nbsp;</div>
          <header class="vg-header" data-region="header">
          <div class="vg-wrap vg-header-row"><nav class="vg-nav" data-region="nav" aria-label="Primary navigation"></nav>
          <div class="vg-header-actions"><button class="vg-mode" type="button" data-action="mode" aria-label="Switch colour mode"> <span data-region="mode-icon" aria-hidden="true">◐</span> </button> <button class="vg-burger" type="button" data-action="menu" aria-label="Open navigation" aria-expanded="false"> </button></div>
          </div>
          </header><main id="main-content" tabindex="-1" data-region="main"></main><footer class="vg-footer" data-region="footer"></footer></div>
          <div class="vg-state vg-maintenance" hidden="" data-region="maintenance">
          <div class="vg-state-box"><span class="vg-eyebrow">Temporarily unavailable</span>
          <h1 data-region="maintenance-title">Site under maintenance</h1>
          <p data-region="maintenance-message">&nbsp;</p>
          </div>
          </div>
          <div class="vg-state vg-error" hidden="" data-region="error">
          <div class="vg-state-box"><span class="vg-eyebrow">Loading error</span>
          <h1>We could not load this site</h1>
          <p>Please refresh the page in a moment.</p>
          </div>
          </div>
          <div class="vg-toast" role="status" hidden="" data-region="toast" aria-live="polite">&nbsp;</div>
          <div class="vg-lightbox" role="dialog" hidden="" data-region="lightbox" aria-modal="true" aria-label="Image preview"><button class="vg-lightbox-close" type="button" data-action="lightbox-close" aria-label="Close image preview">&times;</button>
          <div class="vg-lightbox-stage" data-region="lightbox-stage">&nbsp;</div>
          </div>
          <noscript>
            &lt;div class="vg-state vg-noscript"&gt;
              &lt;div class="vg-state-box"&gt;
                &lt;h1&gt;JavaScript is required&lt;/h1&gt;
                &lt;p&gt;This site builds its pages in the browser. Please enable JavaScript to read it.&lt;/p&gt;
              &lt;/div&gt;
            &lt;/div&gt;
          </noscript></div>
          <script>window.WONS_SITE={api:"",domain:"preview",mount:"#wons-site",basePath:"/theme-preview/vantage",payload:{"schema_version":"1.0.0","status":"published","site":{"id":"demo","name":"Norbu & Daughters","legal_name":"Norbu & Daughters Private Limited","tagline":"A shop, a kitchen and a room upstairs","description":"A sample site, filled in the way a real one is: a few pages, a short list of what is on offer, and the details people actually ring up to ask for.","site_url":"https://example.bt","status":"published","default_language":"en","languages":["en"],"timezone":"Asia/Thimphu"},"branding":{"logos":{},"favicon":null,"theme":{"default_mode":"light","allow_mode_switch":true,"palette_source":"theme","modes":{"light":{"colors":{}},"dark":{"colors":{}}}}},"seo":{"default_title":"Norbu & Daughters","default_description":"A shop, a kitchen and a room upstairs.","robots":{"index":false,"follow":false}},"contact":{"emails":[{"label":"Enquiries","value":"hello@example.bt"}],"phones":[{"label":"Shop","value":"+975 2 000 000"}],"addresses":[{"label":"Shop","line_1":"Norzin Lam","line_2":"Opposite the clock tower","city":"Thimphu","state":null,"postal_code":"11001","country":"Bhutan","coordinates":{"latitude":null,"longitude":null}}],"social_links":[{"platform":"instagram","label":"Instagram","url":"https://example.bt"}],"business_hours":[{"days":["monday","tuesday","wednesday","thursday","friday"],"opens":"09:00","closes":"18:00"}]},"navigation":{"primary":{"label":"Primary navigation","items":[{"id":"n-home","label":"Home","target":{"type":"page","ref":"home"},"children":[]},{"id":"n-about","label":"About","target":{"type":"page","ref":"about"},"children":[]},{"id":"n-services","label":"What we do","target":{"type":"collection","ref":"services"},"children":[]},{"id":"n-contact","label":"Contact","target":{"type":"page","ref":"contact"},"children":[]}]},"footer":{"label":"Explore","items":[{"id":"f-about","label":"About","target":{"type":"page","ref":"about"},"children":[]},{"id":"f-services","label":"What we do","target":{"type":"collection","ref":"services"},"children":[]},{"id":"f-contact","label":"Contact","target":{"type":"page","ref":"contact"},"children":[]}]},"utility":{"label":"Utility navigation","items":[]}},"global_regions":{"announcement":{"enabled":true,"sections":[{"id":"ann","type":"announcement","data":{"message":"Open through Losar — the kitchen closes at four.","link_label":"See the hours","target":{"type":"page","ref":"contact"}}}]},"header":{"sections":[{"id":"hdr","type":"site_header","data":{"navigation":"navigation:primary"}}]},"footer":{"sections":[{"id":"f-id","type":"site_identity","data":{"description":"A shop, a kitchen and a room upstairs. Thimphu, since 1998."}},{"id":"f-nav","type":"navigation","data":{"navigation":"navigation:footer"}},{"id":"f-contact","type":"contact","data":{"source":"site:contact"}},{"id":"f-legal","type":"legal","data":{"copyright":"© {year} Norbu & Daughters. All rights reserved.","links":[]}}]}},"pages":[{"id":"home","title":"Home","slug":"home","path":"/","status":"published","template":"standard","language":"en","sections":[{"id":"hero","type":"hero","variant":"split","layout":{"alignment":"left","width":"wide"},"heading":{"eyebrow":"Thimphu, since 1998","title":"A shop, a kitchen and a room upstairs","subtitle":"Open six days a week","description":"Everything on this page is ordinary content typed into a form — a heading, a few lines, a list and a photograph. The design around it is the theme."},"media":{"primary":"asset:hero"},"actions":[{"label":"See what we do","style":"primary","icon":"arrow-right","target":{"type":"collection","ref":"services"}},{"label":"Find us","style":"text","target":{"type":"page","ref":"contact"}}]},{"id":"intro","type":"split_content","heading":{"eyebrow":"About","title":"Three rooms and a courtyard"},"media":{"primary":"asset:room"},"content":[{"type":"paragraph","text":"The shop came first, then the kitchen behind it, then the room upstairs when there were more of us than chairs."},{"type":"paragraph","text":"We change the menu when the vegetables change, which is more often than a website usually allows."}],"actions":[{"label":"Read more","style":"secondary","target":{"type":"page","ref":"about"}}]},{"id":"svc","type":"collection","heading":{"eyebrow":"What we do","title":"Four things, done properly"},"source":{"collection":"services","limit":4,"sort":{"field":"order","direction":"ascending"}}},{"id":"stats","type":"stats","heading":{"title":"Twenty-eight years of it"},"data":{"items":[{"label":"Years open","value":"28"},{"label":"Seats","value":"34"},{"label":"Suppliers","value":"12"},{"label":"Days a week","value":"6"}]}},{"id":"quotes","type":"testimonials","heading":{"eyebrow":"In their words","title":"What people say"},"data":{"items":[{"quote":"The only place in town where the menu is right on a Tuesday.","name":"Dechen","detail":"Thimphu"},{"quote":"We booked the upstairs room for eleven people and nobody had to stand.","name":"Karma","detail":"Paro"}]}},{"id":"cta","type":"call_to_action","heading":{"title":"Come by, or ring first","description":"The kitchen stops at four on a Saturday."},"actions":[{"label":"Contact us","style":"primary","target":{"type":"page","ref":"contact"}}]}]},{"id":"about","title":"About","slug":"about","path":"/about","status":"published","template":"standard","language":"en","sections":[{"id":"ab-h","type":"page_header","heading":{"eyebrow":"About","title":"Three rooms and a courtyard"}},{"id":"ab-t","type":"rich_text","content":[{"type":"paragraph","text":"The shop came first, then the kitchen behind it, then the room upstairs."},{"type":"paragraph","text":"This page exists so the preview has somewhere to go when you press a link."}]}]},{"id":"contact","title":"Contact","slug":"contact","path":"/contact","status":"published","template":"standard","language":"en","sections":[{"id":"ct-h","type":"page_header","heading":{"eyebrow":"Contact","title":"Find us"}},{"id":"ct-c","type":"contact"}]}],"collections":{"services":{"id":"services","label":"What we do","singular_label":"Service","item_type":"service","description":"The four things worth listing.","routing":{"index_path":"/what-we-do","item_path":"/what-we-do/{slug}"},"items":[{"id":"s-shop","type":"service","title":"The shop","slug":"the-shop","status":"published","order":1,"summary":"Dry goods, tea and whatever came up from Phuentsholing this week.","body":[{"type":"paragraph","text":"Open from nine."}],"media":{"featured":"asset:shop","thumbnail":null,"gallery":[]},"actions":[],"taxonomies":{"categories":[],"tags":[]},"dates":{"published_at":"2026-01-04T09:00:00+06:00","updated_at":null},"attributes":{"position":"Front room"},"extensions":{}},{"id":"s-kitchen","type":"service","title":"The kitchen","slug":"the-kitchen","status":"published","order":2,"summary":"One menu, rewritten when the vegetables change.","body":[{"type":"paragraph","text":"Lunch and an early dinner."}],"media":{"featured":"asset:kitchen","thumbnail":null,"gallery":[]},"actions":[],"taxonomies":{"categories":[],"tags":[]},"dates":{"published_at":"2026-01-04T09:00:00+06:00","updated_at":null},"attributes":{"position":"Behind the shop"},"extensions":{}},{"id":"s-room","type":"service","title":"The room upstairs","slug":"the-room-upstairs","status":"published","order":3,"summary":"Fourteen seats, one long table, booked by the evening.","body":[{"type":"paragraph","text":"Ring ahead."}],"media":{"featured":"asset:room","thumbnail":null,"gallery":[]},"actions":[],"taxonomies":{"categories":[],"tags":[]},"dates":{"published_at":"2026-01-04T09:00:00+06:00","updated_at":null},"attributes":{"position":"First floor"},"extensions":{}},{"id":"s-orders","type":"service","title":"Standing orders","slug":"standing-orders","status":"published","order":4,"summary":"The same box, the same day, every week.","body":[{"type":"paragraph","text":"Set it once."}],"media":{"featured":"asset:shop","thumbnail":null,"gallery":[]},"actions":[],"taxonomies":{"categories":[],"tags":[]},"dates":{"published_at":"2026-01-04T09:00:00+06:00","updated_at":null},"attributes":{"position":"By arrangement"},"extensions":{}}]}},"taxonomies":{"categories":[],"tags":[]},"assets":{"hero":{"id":"hero","type":"image","src":"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20800%22%3E%3Crect%20width%3D%221200%22%20height%3D%22800%22%20fill%3D%22%23e7e5e1%22%2F%3E%3Ccircle%20cx%3D%22880%22%20cy%3D%22250%22%20r%3D%22230%22%20fill%3D%22%23cfccc6%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22470%22%20width%3D%22640%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23cfccc6%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22530%22%20width%3D%22420%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23cfccc6%22%20opacity%3D%22.6%22%2F%3E%3C%2Fsvg%3E","alt":"Placeholder photograph","title":null,"caption":null,"mime_type":"image/svg+xml","width":1200,"height":800,"filesize":null,"metadata":{"focal_point":{"x":50,"y":45}}},"room":{"id":"room","type":"image","src":"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20800%22%3E%3Crect%20width%3D%221200%22%20height%3D%22800%22%20fill%3D%22%23e3e4e2%22%2F%3E%3Ccircle%20cx%3D%22880%22%20cy%3D%22250%22%20r%3D%22230%22%20fill%3D%22%23c9ccc8%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22470%22%20width%3D%22640%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23c9ccc8%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22530%22%20width%3D%22420%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23c9ccc8%22%20opacity%3D%22.6%22%2F%3E%3C%2Fsvg%3E","alt":"Placeholder photograph","title":null,"caption":null,"mime_type":"image/svg+xml","width":1200,"height":800,"filesize":null,"metadata":{"focal_point":{"x":50,"y":50}}},"shop":{"id":"shop","type":"image","src":"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20800%22%3E%3Crect%20width%3D%221200%22%20height%3D%22800%22%20fill%3D%22%23e8e6e2%22%2F%3E%3Ccircle%20cx%3D%22880%22%20cy%3D%22250%22%20r%3D%22230%22%20fill%3D%22%23d2cfc9%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22470%22%20width%3D%22640%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23d2cfc9%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22530%22%20width%3D%22420%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23d2cfc9%22%20opacity%3D%22.6%22%2F%3E%3C%2Fsvg%3E","alt":"Placeholder photograph","title":null,"caption":null,"mime_type":"image/svg+xml","width":1200,"height":800,"filesize":null,"metadata":{"focal_point":{"x":50,"y":50}}},"kitchen":{"id":"kitchen","type":"image","src":"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20800%22%3E%3Crect%20width%3D%221200%22%20height%3D%22800%22%20fill%3D%22%23e5e6e4%22%2F%3E%3Ccircle%20cx%3D%22880%22%20cy%3D%22250%22%20r%3D%22230%22%20fill%3D%22%23cbcec9%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22470%22%20width%3D%22640%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23cbcec9%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22530%22%20width%3D%22420%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23cbcec9%22%20opacity%3D%22.6%22%2F%3E%3C%2Fsvg%3E","alt":"Placeholder photograph","title":null,"caption":null,"mime_type":"image/svg+xml","width":1200,"height":800,"filesize":null,"metadata":{"focal_point":{"x":50,"y":50}}}},"forms":{},"redirects":[],"extensions":{},"generated_at":"2026-08-10T07:31:48.313Z"}};</script>
          <script>
          /*
            Vantage — renderer.
            Dark-first tech: glassy sticky header, radial hero glow, glow-ring hover
            state on cards and media. applyBranding() still reads whichever mode the
            payload has active — dark is only this theme's CSS fallback identity.
            Signature interaction: renderRail() fills a persistent right-edge quick-link
            rail alongside the top nav; typeEyebrows() types out the hero eyebrow with a
            blinking cursor on every render (budgeted to finish well under half a
            second, so a screenshot taken shortly after load reliably catches it
            complete); animateStats() ticks stat values up from zero in monospace the
            first time they scroll into view; the scan-line hover sweep on cards/gallery
            figures/quote cards is pure CSS (see theme.css). RENDERERS.hero frames its
            content in a console/terminal window (.vg-console) — three status dots plus
            a monospace label built from the real site domain/name — so the theme is
            recognisable at first paint, not just on interaction.
          
            Contract: WONS_SITE_THEME_SKILLS.md. boot.js injects theme.html into the mount
            element, sets window.WONS_SITE, then appends this file. No site data lives here.
          */
          (function () {
            "use strict";
          
            var CONFIG = window.WONS_SITE || {};
            var root = document.querySelector(CONFIG.mount || "#wons-site");
            if (!root) return;
          
            var DATA = null;
            var CURRENT_MODE = "dark";
            var BASE = String(CONFIG.basePath || "").replace(/\/+$/, "");
            var toastTimer = null;
          
            function el(name) { return root.querySelector('[data-region="' + name + '"]'); }
            function show(node, visible) { if (node) node.hidden = !visible; }
            function html(node, markup) { if (node) node.innerHTML = markup; }
            function esc(value) {
              return String(value == null ? "" : value).replace(/[&<>"']/g, function (char) {
                return { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }[char];
              });
            }
            function textWithBreaks(value) { return esc(value).replace(/\n/g, "<br>"); }
            function get(path, fallback) {
              var current = DATA;
              String(path || "").split(".").forEach(function (part) {
                if (current != null) current = current[part];
              });
              return current == null ? fallback : current;
            }
            function normalizePath(path) {
              var value = String(path || "/").split("?")[0].split("#")[0];
              if (BASE && value.indexOf(BASE) === 0) value = value.slice(BASE.length) || "/";
              value = value.replace(/\/index\.(html?|php)$/i, "") || "/";
              if (value.charAt(0) !== "/") value = "/" + value;
              value = value.replace(/\/{2,}/g, "/").replace(/\/+$/, "") || "/";
              return value;
            }
            function toHref(path) {
              var value = String(path || "/");
              if (value.charAt(0) !== "/") value = "/" + value;
              return (BASE || "") + value;
            }
            function currentPath() { return normalizePath(location.pathname); }
            function storageGet(key) { try { return window.localStorage ? window.localStorage.getItem(key) : null; } catch (error) { return null; } }
            function storageSet(key, value) { try { if (window.localStorage) window.localStorage.setItem(key, value); } catch (error) { /* storage can be blocked */ } }
          
            function asset(ref) {
              if (!ref) return null;
              if (typeof ref === "object" && ref.src) return ref;
              if (typeof ref !== "string") return null;
              if (ref.indexOf("asset:") === 0) return (DATA.assets || {})[ref.slice(6)] || null;
              if (/^(https?:)?\/\//.test(ref) || ref.indexOf("data:") === 0 || ref.indexOf("/") === 0 || ref.indexOf("assets/") === 0) {
                return { src: ref, alt: "" };
              }
              return null;
            }
            function focalStyle(found) {
              var focal = found && found.metadata && found.metadata.focal_point;
              if (!focal) return "";
              return ' style="object-position:' + Number(focal.x) + '% ' + Number(focal.y) + '%"';
            }
            function assetImg(ref, alt, className, eager) {
              var found = asset(ref);
              if (!found || !found.src) return "";
              return '<img src="' + esc(found.src) + '" alt="' + esc(alt || found.alt || "") + '"' +
                (className ? ' class="' + esc(className) + '"' : "") +
                (found.width ? ' width="' + esc(found.width) + '"' : "") +
                (found.height ? ' height="' + esc(found.height) + '"' : "") +
                (eager ? ' loading="eager" fetchpriority="high" decoding="async"' : ' loading="lazy" decoding="async"') +
                focalStyle(found) + ">";
            }
          
            function pageById(id) {
              return (DATA.pages || []).filter(function (page) { return page.id === id; })[0] || null;
            }
            function pageByPath(path) {
              var clean = normalizePath(path);
              return (DATA.pages || []).filter(function (page) {
                return page.status !== "draft" && normalizePath(page.path || "/") === clean;
              })[0] || null;
            }
            function collectionById(id) { return (DATA.collections || {})[id] || null; }
            function collectionItem(collection, ref) {
              if (!collection) return null;
              return (collection.items || []).filter(function (item) {
                return item.id === ref || item.slug === ref;
              })[0] || null;
            }
            function publishedItems(collection, limit, sort) {
              var items = ((collection && collection.items) || []).filter(function (item) {
                return item.status !== "draft" && item.status !== "archived";
              }).slice();
              var field = (sort && sort.field) || (typeof sort === "string" ? sort : "order");
              var descending = sort && sort.direction === "descending";
              function fieldValue(item, path) {
                var value = item;
                String(path).split(".").forEach(function (part) { if (value != null) value = value[part]; });
                return value;
              }
              items.sort(function (left, right) {
                var a = fieldValue(left, field), b = fieldValue(right, field);
                if (a == null && b == null) return 0;
                if (a == null) return 1;
                if (b == null) return -1;
                if (typeof a === "number" || typeof b === "number") return (descending ? -1 : 1) * (Number(a) - Number(b));
                return (descending ? -1 : 1) * String(a).localeCompare(String(b));
              });
              return limit ? items.slice(0, limit) : items;
            }
            function collectionFromSource(source) {
              var key = null;
              if (typeof source === "string") key = source.replace(/^collection:/, "");
              else if (source) key = source.collection || source.ref;
              return key ? collectionById(key) : null;
            }
          
            function patternMatch(pattern, path) {
              if (!pattern || pattern.indexOf("{slug}") < 0) return null;
              var escaped = pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace("\\{slug\\}", "([^/]+)");
              var match = normalizePath(path).match(new RegExp("^" + escaped.replace(/\/$/, "") + "$"));
              return match ? decodeURIComponent(match[1]) : null;
            }
            function resolveRoute(path) {
              var clean = normalizePath(path);
              var redirect = (DATA.redirects || []).filter(function (rule) { return normalizePath(rule.from) === clean; })[0];
              if (redirect) return { kind: "redirect", path: normalizePath(redirect.to) };
          
              var page = pageByPath(clean);
              if (page) return { kind: "page", page: page, path: clean };
          
              var collections = DATA.collections || {};
              var keys = Object.keys(collections);
              for (var i = 0; i < keys.length; i += 1) {
                var collection = collections[keys[i]];
                var routing = collection.routing || {};
                if (routing.index_path && normalizePath(routing.index_path) === clean) {
                  return { kind: "collection", collection: collection, path: clean };
                }
                var slug = patternMatch(routing.item_path, clean);
                if (slug) {
                  var item = collectionItem(collection, slug);
                  if (item && item.status !== "draft" && item.status !== "archived") {
                    return { kind: "item", collection: collection, item: item, path: clean };
                  }
                }
              }
              return { kind: "not-found", path: clean };
            }
          
            function linkFor(target) {
              if (!target) return { href: "#", external: false };
              if (target.type === "url") return { href: target.url || "#", external: !!target.new_window };
              if (target.type === "email") return { href: "mailto:" + (target.value || target.email || ""), external: true };
              if (target.type === "phone") return { href: "tel:" + (target.value || target.phone || ""), external: true };
              if (target.type === "page") {
                var page = pageById(target.ref);
                return { href: toHref(page ? page.path : "/"), external: false };
              }
              if (target.type === "collection") {
                var collection = collectionById(target.ref);
                return { href: toHref(collection && collection.routing ? collection.routing.index_path : "/"), external: false };
              }
              if (target.type === "collection_item") {
                var parent = collectionById(target.collection);
                var item = collectionItem(parent, target.ref);
                var pattern = parent && parent.routing && parent.routing.item_path;
                return { href: toHref(pattern && item ? pattern.replace("{slug}", item.slug || item.id) : "/"), external: false };
              }
              return { href: target.url || "#", external: false };
            }
          
            var ICONS = {
              "arrow-right": "M13.2 4.8 20.4 12l-7.2 7.2-1.4-1.4L17 13H4v-2h13l-5.2-4.8z",
              "chevron-right": "M8.6 5.6 10 4.2l7.8 7.8-7.8 7.8-1.4-1.4L14.9 12z",
              "phone": "M7 2h3l1.5 5-2 1.5a12 12 0 0 0 6 6l1.5-2 5 1.5v3a2 2 0 0 1-2 2A17 17 0 0 1 5 6a2 2 0 0 1 2-4z",
              "mail": "M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm1.4 2 7.6 6 7.6-6H4.4z",
              "map-pin": "M12 22s7-6.7 7-12a7 7 0 1 0-14 0c0 5.3 7 12 7 12zm0-9a3 3 0 1 1 0-6 3 3 0 0 1 0 6z",
              "calendar": "M7 2h2v2h6V2h2v2h3a1 1 0 0 1 1 1v3H2V5a1 1 0 0 1 1-1h3zM2 10h20v11a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z",
              "clock": "M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm1 5v5.4l4 2.3-1 1.7L11 13V7z",
              "download": "M11 3h2v10.2l3.6-3.6 1.4 1.4-6 6-6-6 1.4-1.4L11 13.2zM4 19h16v2H4z",
              "external": "M14 3h7v7h-2V6.4l-8.3 8.3-1.4-1.4L17.6 5H14zM5 5h6v2H7v10h10v-4h2v6H5z",
              "check": "M9.5 17.5 4 12l1.4-1.4 4.1 4.1 9.1-9.1L20 7z",
              "plus": "M11 3h2v8h8v2h-8v8h-2v-8H3v-2h8z",
              "bag": "M7 7V6a5 5 0 0 1 10 0v1h3l1 14H3L4 7zm2 0h6V6a3 3 0 0 0-6 0z"
            };
            function iconSvg(name, size) {
              var path = ICONS[String(name || "").toLowerCase()];
              if (!path) return "";
              size = size || 16;
              return '<svg class="vg-icon" viewBox="0 0 24 24" width="' + size + '" height="' + size + '" fill="currentColor" aria-hidden="true"><path d="' + path + '"/></svg>';
            }
            function anchor(label, target, className, icon) {
              var link = linkFor(target);
              return '<a href="' + esc(link.href) + '"' + (className ? ' class="' + esc(className) + '"' : "") +
                (link.external ? ' target="_blank" rel="noopener"' : "") + ">" + esc(label) + iconSvg(icon) + "</a>";
            }
            function actionClass(action, index) {
              if (action.style === "text") return "vg-btn vg-btn-text";
              if (action.style === "secondary" || index > 0) return "vg-btn vg-btn-secondary";
              return "vg-btn vg-btn-primary";
            }
            function actionRow(actions, className) {
              if (!actions || !actions.length) return "";
              return '<div class="' + (className || "vg-actions") + '">' + actions.map(function (action, index) {
                return anchor(action.label, action.target, actionClass(action, index), action.icon);
              }).join("") + "</div>";
            }
          
            function formatDate(value) {
              if (!value) return "";
              var date = new Date(value);
              if (isNaN(date.getTime())) return String(value);
              try { return new Intl.DateTimeFormat("en-GB", { day: "numeric", month: "long", year: "numeric" }).format(date); }
              catch (error) { return date.toDateString(); }
            }
            function contactValue(entry) { return entry ? String(entry.value || entry.address || entry.number || "") : ""; }
            function addressLine(entry) {
              if (!entry) return "";
              return [entry.line_1 || entry.street, entry.line_2, entry.city, entry.state, entry.postal_code, entry.country].filter(Boolean).join(", ");
            }
            function hoursDays(entry) {
              var days = entry && entry.days;
              if (!Array.isArray(days) || !days.length) return entry ? (entry.day || entry.label || "") : "";
              var short = days.map(function (day) { return day.charAt(0).toUpperCase() + day.slice(1, 3); });
              return days.length > 2 ? short[0] + "–" + short[short.length - 1] : short.join(", ");
            }
            function columnsFor(count) {
              if (count <= 1) return 1;
              if (count === 2) return 2;
              if (count === 4) return 4;
              return 3;
            }
          
            function applyFavicon(ref) {
              var found = asset(ref);
              if (!found || !found.src) return;
              var existing = document.querySelectorAll('link[rel~="icon"]');
              for (var i = 0; i < existing.length; i += 1) existing[i].parentNode.removeChild(existing[i]);
              var link = document.createElement("link");
              link.rel = "icon";
              if (found.mime_type) link.type = found.mime_type;
              link.href = found.src;
              document.head.appendChild(link);
            }
          
            function applyBranding(mode) {
              var branding = DATA.branding || {};
              var theme = branding.theme || {};
              var available = theme.modes || {};
              var preferred = mode || storageGet(get("site.id", "site") + ":mode") || theme.default_mode || "dark";
              if (preferred === "system") preferred = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
              if (!available[preferred]) preferred = available.dark ? "dark" : (available.light ? "light" : Object.keys(available)[0] || "dark");
              CURRENT_MODE = preferred;
          
              var palette = (available[preferred] || {}).colors || {};
              var brand = branding.brand_colors || {};
              var map = {
                "--vg-bg": palette.background,
                "--vg-surface": palette.surface,
                "--vg-surface-2": palette.surface_alt,
                "--vg-card": palette.surface_elevated,
                "--vg-ink": palette.text,
                "--vg-muted": palette.text_muted,
                "--vg-subtle": palette.text_subtle,
                "--vg-line": palette.border,
                "--vg-line-strong": palette.border_strong,
                "--vg-primary": palette.primary || brand.primary,
                "--vg-primary-h": palette.primary_hover || palette.primary_active || brand.primary,
                "--vg-on-primary": palette.primary_contrast,
                "--vg-secondary": palette.secondary || brand.secondary,
                "--vg-accent": palette.accent || brand.accent,
                "--vg-focus": palette.focus,
                "--vg-overlay": palette.overlay,
                "--vg-link": palette.link,
                "--vg-success": palette.success,
                "--vg-warning": palette.warning,
                "--vg-danger": palette.danger
              };
              Object.keys(map).forEach(function (name) { if (map[name]) document.documentElement.style.setProperty(name, map[name]); });
          
              var fonts = branding.fonts || {};
              if (fonts.heading) document.documentElement.style.setProperty("--vg-heading", fonts.heading);
              if (fonts.body) document.documentElement.style.setProperty("--vg-body", fonts.body);
              var radii = theme.radii || {};
              if (radii.small) document.documentElement.style.setProperty("--vg-radius-sm", radii.small);
              if (radii.medium) document.documentElement.style.setProperty("--vg-radius", radii.medium);
              if (radii.large) document.documentElement.style.setProperty("--vg-radius-lg", radii.large);
          
              document.documentElement.dataset.theme = preferred;
              var metaTheme = document.querySelector('meta[name="theme-color"]');
              if (metaTheme && palette.background) metaTheme.setAttribute("content", palette.background);
              var icon = el("mode-icon");
              if (icon) icon.textContent = preferred === "dark" ? "☀" : "◐";
          
              applyFavicon(branding.favicon);
            }
          
            function applySeo(title, description, imageRef) {
              var seo = DATA.seo || {};
              var rawTitle = title || seo.default_title || get("site.name", "");
              var template = seo.title_template || "{{title}}";
              document.title = template.indexOf("{{title}}") >= 0 ? template.replace("{{title}}", rawTitle) :
                (template.indexOf("%s") >= 0 ? template.replace("%s", rawTitle) : rawTitle);
          
              function setMeta(name, content, property) {
                if (!content) return;
                var selector = property ? 'meta[property="' + name + '"]' : 'meta[name="' + name + '"]';
                var node = document.querySelector(selector) || document.createElement("meta");
                node.setAttribute(property ? "property" : "name", name);
                node.setAttribute("content", content);
                if (!node.parentNode) document.head.appendChild(node);
              }
              var desc = description || seo.default_description || get("site.description", "");
              setMeta("description", desc, false);
              setMeta("og:title", document.title, true);
              setMeta("og:description", desc, true);
              var image = asset(imageRef || seo.default_image);
              if (image) setMeta("og:image", image.src, true);
            }
          
            function navIsActive(target, path) {
              var href = normalizePath(linkFor(target).href);
              if (href === "/") return path === "/";
              return path === href || path.indexOf(href + "/") === 0;
            }
            function renderNavItem(item, path) {
              var link = linkFor(item.target);
              var active = navIsActive(item.target, path);
              var children = item.children || [];
              return '<div class="vg-nav-item">' +
                '<a class="vg-nav-link' + (active ? " is-active" : "") + '" href="' + esc(link.href) + '"' +
                (link.external ? ' target="_blank" rel="noopener"' : "") + ' aria-current="' + (active ? "page" : "false") + '">' +
                esc(item.label) + (children.length ? '<span class="vg-nav-caret" aria-hidden="true">▾</span>' : "") + "</a>" +
                (children.length ? '<div class="vg-nav-sub">' + children.map(function (child) {
                  var childLink = linkFor(child.target);
                  var childActive = navIsActive(child.target, path);
                  return '<a href="' + esc(childLink.href) + '" class="' + (childActive ? "is-active" : "") + '"' +
                    (childLink.external ? ' target="_blank" rel="noopener"' : "") + ">" + esc(child.label) + "</a>";
                }).join("") + "</div>" : "") + "</div>";
            }
            function navList(ref) {
              var key = String(ref || "").replace(/^navigation:/, "");
              return ((DATA.navigation || {})[key] || {}).items || [];
            }
            function renderHeader() {
              var branding = DATA.branding || {};
              var logo = asset((branding.logos || {}).primary);
              html(el("brand"), logo ? assetImg((branding.logos || {}).primary, get("site.name", "")) : '<span class="vg-wordmark">' + esc(get("site.name", "")) + "</span>");
          
              var path = currentPath();
              var primary = get("navigation.primary.items", []);
              var utility = get("navigation.utility.items", []);
              var markup = primary.map(function (item) { return renderNavItem(item, path); }).join("");
              utility.forEach(function (item) {
                var link = linkFor(item.target);
                markup += '<a class="vg-nav-link vg-nav-cta' + (navIsActive(item.target, path) ? " is-active" : "") + '" href="' + esc(link.href) + '">' + esc(item.label) + "</a>";
              });
              html(el("nav"), markup);
          
              var allowMode = !!get("branding.theme.allow_mode_switch", false);
              var modeButton = root.querySelector('[data-action="mode"]');
              if (modeButton) modeButton.hidden = !allowMode;
          
              var announcement = get("global_regions.announcement", null);
              if (announcement && announcement.enabled && (announcement.sections || []).length) {
                var first = announcement.sections[0];
                var data = first.data || {};
                var heading = first.heading || {};
                var message = data.message || data.text || heading.title || heading.subtitle || "";
                var linkMarkup = data.target && data.link_label ? anchor(data.link_label, data.target) : "";
                html(el("announce"), message ? '<div class="vg-announce"><span>' + esc(message) + "</span>" + linkMarkup + "</div>" : "");
              } else html(el("announce"), "");
          
              renderRail(path);
            }
          
            // Persistent right-edge quick-link rail — additive to the top nav, not a
            // replacement. Monogram buttons for the first few primary nav items, plus
            // a fixed "back to top" button. Re-rendered alongside the header on every
            // route change so its active state tracks the current page.
            function renderRail(path) {
              var rail = el("rail");
              if (!rail) return;
              path = path || currentPath();
              var items = get("navigation.primary.items", []).slice(0, 5);
              var markup = items.map(function (item) {
                var link = linkFor(item.target);
                var active = navIsActive(item.target, path);
                var letter = String(item.label || "?").trim().charAt(0).toUpperCase() || "?";
                return '<a class="vg-rail-item' + (active ? " is-active" : "") + '" href="' + esc(link.href) + '"' +
                  (link.external ? ' target="_blank" rel="noopener"' : "") + ' aria-label="' + esc(item.label || "Link") + '">' +
                  '<span class="vg-rail-dot" aria-hidden="true">' + esc(letter) + '</span>' +
                  '<span class="vg-rail-tip">' + esc(item.label || "") + "</span></a>";
              }).join("");
              markup += '<button type="button" class="vg-rail-item" data-action="totop" aria-label="Back to top">' +
                '<svg class="vg-rail-up" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 4l8 8-1.4 1.4L13 7.8V20h-2V7.8l-5.6 5.6L4 12z"/></svg>' +
                '<span class="vg-rail-tip">Back to top</span></button>';
              html(rail, markup);
            }
          
            var SOCIAL_PATHS = {
              instagram: "M12 2.2c3.2 0 3.6 0 4.9.07 1.2.05 1.8.25 2.2.42.6.22 1 .48 1.4.9.4.4.7.8.9 1.4.2.4.4 1 .4 2.2.1 1.3.1 1.7.1 4.9s0 3.6-.1 4.9c0 1.2-.2 1.8-.4 2.2-.2.6-.5 1-.9 1.4-.4.4-.8.7-1.4.9-.4.2-1 .4-2.2.4-1.3.1-1.7.1-4.9.1s-3.6 0-4.9-.1c-1.2 0-1.8-.2-2.2-.4-.6-.2-1-.5-1.4-.9-.4-.4-.7-.8-.9-1.4-.2-.4-.4-1-.4-2.2C2.2 15.6 2.2 15.2 2.2 12s0-3.6.1-4.9c0-1.2.2-1.8.4-2.2.2-.6.5-1 .9-1.4.4-.4.8-.7 1.4-.9.4-.2 1-.4 2.2-.4C8.4 2.2 8.8 2.2 12 2.2zm0 3.2A6.6 6.6 0 1 0 18.6 12 6.6 6.6 0 0 0 12 5.4zm0 10.9A4.3 4.3 0 1 1 16.3 12 4.3 4.3 0 0 1 12 16.3zm6.9-11.1a1.5 1.5 0 1 1-1.5-1.5 1.5 1.5 0 0 1 1.5 1.5z",
              facebook: "M13.5 21v-8.2h2.8l.4-3.2h-3.2V7.5c0-.9.3-1.6 1.6-1.6h1.7V3.1A22 22 0 0 0 14.3 3c-2.5 0-4.2 1.5-4.2 4.3v2.3H7.3v3.2h2.8V21h3.4z",
              linkedin: "M6.9 8.4v11.4H3.1V8.4h3.8zM5 2.9a2.2 2.2 0 1 1 0 4.4 2.2 2.2 0 0 1 0-4.4zM9.3 8.4H13v1.6a4 4 0 0 1 3.6-2c2.6 0 4.4 1.7 4.4 5.3v6.5h-3.8v-5.9c0-1.6-.6-2.6-2-2.6a2.1 2.1 0 0 0-2 1.5 2.7 2.7 0 0 0-.1 1v6h-3.8V8.4z",
              "x": "M3 3l7.2 9.4L3.4 21h2.3l6.1-7 4.6 7H21l-7.5-9.9L20.3 3H18l-5.6 6.4L8.1 3z"
            };
            function socialIcon(platform) {
              var path = SOCIAL_PATHS[String(platform || "").toLowerCase()] || "M10.6 13.4a4 4 0 0 0 5.7 0l2.8-2.8a4 4 0 0 0-5.7-5.7l-1.4 1.4 1.4 1.4 1.4-1.4a2 2 0 0 1 2.9 2.9l-2.9 2.8a2 2 0 0 1-2.8 0zM13.4 10.6a4 4 0 0 0-5.7 0l-2.8 2.8a4 4 0 0 0 5.7 5.7l1.4-1.4-1.4-1.4-1.4 1.4a2 2 0 0 1-2.9-2.9l2.9-2.8a2 2 0 0 1 2.8 0z";
              return '<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="' + path + '"/></svg>';
            }
            function renderFooter() {
              var sections = get("global_regions.footer.sections", []);
              var contentSections = sections.filter(function (section) { return section.type !== "legal"; });
              var columns = contentSections.map(function (section) {
                var data = section.data || {};
                if (section.type === "site_identity") {
                  var logoRef = data.logo || get("branding.logos.light", get("branding.logos.primary", ""));
                  return '<div>' + (asset(logoRef) ? assetImg(logoRef, get("site.name", ""), "vg-footer-logo") : "<h3>" + esc(get("site.name", "")) + "</h3>") +
                    "<p>" + esc(data.description || get("site.description", "")) + "</p></div>";
                }
                if (section.type === "navigation") {
                  var group = navList(data.navigation);
                  if (!group.length) return "";
                  var label = String(data.navigation || "").replace(/^navigation:/, "");
                  return '<div><h4>' + esc(label.charAt(0).toUpperCase() + label.slice(1) || "Explore") + "</h4>" + group.map(function (item) {
                    return anchor(item.label, item.target);
                  }).join("") + "</div>";
                }
                if (section.type === "contact") {
                  var email = get("contact.emails.0", null), phone = get("contact.phones.0", null), address = get("contact.addresses.0", null);
                  if (!email && !phone && !address) return "";
                  return '<div><h4>Contact</h4>' +
                    (email ? '<a href="mailto:' + esc(contactValue(email)) + '">' + esc(contactValue(email)) + "</a>" : "") +
                    (phone ? '<a href="tel:' + esc(contactValue(phone)) + '">' + esc(contactValue(phone)) + "</a>" : "") +
                    (address ? "<p>" + esc(addressLine(address)) + "</p>" : "") + "</div>";
                }
                return "";
              }).filter(Boolean).join("");
          
              var legal = sections.filter(function (section) { return section.type === "legal"; })[0];
              var copyright = legal && legal.data && legal.data.copyright ? legal.data.copyright : "© {year} " + (get("site.legal_name", "") || get("site.name", ""));
              copyright = String(copyright).replace("{year}", new Date().getFullYear());
              var social = get("contact.social_links", []).map(function (link) {
                return '<a href="' + esc(link.url) + '" target="_blank" rel="noopener" aria-label="' + esc(link.label || link.platform || "Social link") + '">' + socialIcon(link.platform) + "</a>";
              }).join("");
          
              html(el("footer"), '<div class="vg-wrap"><div class="vg-footer-grid" style="--vg-fcols:' + Math.max(1, contentSections.filter(Boolean).length || 1) + '">' + columns +
                '</div><div class="vg-footer-bottom"><span>' + esc(copyright) + '</span><div class="vg-social">' + social + "</div></div></div>");
            }
          
            function sectionHeading(heading, level) {
              heading = heading || {};
              level = level || "h2";
              if (!heading.title && !heading.eyebrow && !heading.subtitle) return "";
              return '<div class="vg-section-head">' +
                (heading.eyebrow ? '<span class="vg-eyebrow">' + esc(heading.eyebrow) + "</span>" : "") +
                (heading.title ? "<" + level + ">" + esc(heading.title) + "</" + level + ">" : "") +
                (heading.subtitle ? '<p class="vg-lede">' + esc(heading.subtitle) + "</p>" : "") + "</div>";
            }
            function richContent(content) {
              if (!content) return "";
              if (typeof content === "string") return "<p>" + textWithBreaks(content) + "</p>";
              if (!Array.isArray(content)) return content.text ? "<p>" + textWithBreaks(content.text) + "</p>" : "";
              return content.map(function (node) {
                if (!node) return "";
                if (node.type === "paragraph") return "<p>" + textWithBreaks(node.text) + "</p>";
                if (node.type === "heading") {
                  var level = Math.min(Math.max(parseInt(node.level, 10) || 3, 2), 4);
                  return "<h" + level + ">" + esc(node.text) + "</h" + level + ">";
                }
                if (node.type === "list") {
                  var tag = node.ordered ? "ol" : "ul";
                  return "<" + tag + ">" + (node.items || []).map(function (item) {
                    return "<li>" + esc(typeof item === "string" ? item : item.text) + "</li>";
                  }).join("") + "</" + tag + ">";
                }
                if (node.type === "quote") return "<blockquote>" + esc(node.text) + "</blockquote>";
                if (node.type === "image") return assetImg(node.asset || node.src, node.alt || "");
                if (node.type === "divider") return "<hr>";
                return node.text ? "<p>" + textWithBreaks(node.text) + "</p>" : "";
              }).join("");
            }
          
            function cardMeta(item) {
              var attrs = item.attributes || {};
              var dates = item.dates || {};
              if (item.type === "product") return [attrs.edition, attrs.availability && String(attrs.availability).replace(/_/g, " ")].filter(Boolean);
              if (item.type === "article") return [formatDate(dates.published_at), attrs.reading_time].filter(Boolean);
              if (item.type === "project") return [attrs.place, attrs.year, attrs.stage].filter(Boolean);
              if (item.type === "service") return [attrs.lead_time].filter(Boolean);
              if (item.type === "person") return [attrs.position].filter(Boolean);
              return [];
            }
            function itemHref(collection, item) {
              var pattern = collection && collection.routing && collection.routing.item_path;
              return toHref(pattern ? pattern.replace("{slug}", item.slug || item.id) : "/");
            }
            function itemLabel(item) {
              if (item.type === "product") return "View item";
              if (item.type === "project") return "View project";
              if (item.type === "service") return "Explore service";
              if (item.type === "person") return "Meet " + String(item.title || "").split(" ")[0];
              return "Read more";
            }
            function renderCard(collection, item) {
              var image = item.media && (item.media.featured || item.media.image || item.media.thumbnail);
              var attrs = item.attributes || {};
              var meta = cardMeta(item);
              return '<article class="vg-card' + (asset(image) ? "" : " no-media") + '">' +
                (asset(image) ? '<a class="vg-card-media" href="' + esc(itemHref(collection, item)) + '">' + assetImg(image, item.title) + "</a>" : "") +
                '<div class="vg-card-body">' +
                (!asset(image) && attrs.icon ? '<div class="vg-card-icon">' + iconSvg(attrs.icon, 20) + "</div>" : "") +
                (meta.length ? '<div class="vg-card-meta">' + meta.map(function (value) { return "<span>" + esc(value) + "</span>"; }).join("") + "</div>" : "") +
                "<h3>" + esc(item.title || "") + "</h3>" +
                (item.summary ? "<p>" + esc(item.summary) + "</p>" : "") +
                (attrs.price_display ? '<div class="vg-card-price">' + esc(attrs.price_display) + "</div>" : "") +
                '<a class="vg-more" href="' + esc(itemHref(collection, item)) + '">' + esc(itemLabel(item)) + iconSvg("arrow-right") + "</a>" +
                "</div></article>";
            }
          
            var RENDERERS = {
              hero: function (section) {
                var heading = section.heading || {}, media = section.media || {};
                var imageRef = media.primary || media.asset || media.image || media.background;
                var consoleLabel = String(CONFIG.domain || get("site.id", "") || get("site.name", "site")).toLowerCase();
                return '<section class="vg-hero"><div class="vg-wrap"><div class="vg-console">' +
                  '<div class="vg-console-bar" aria-hidden="true">' +
                  '<span class="vg-console-dot vg-console-dot-a"></span><span class="vg-console-dot vg-console-dot-b"></span><span class="vg-console-dot vg-console-dot-c"></span>' +
                  '<span class="vg-console-label">' + esc(consoleLabel) + "</span></div>" +
                  '<div class="vg-console-body"><div class="vg-hero-grid' + (asset(imageRef) ? "" : " vg-single") + '">' +
                  '<div>' +
                  (heading.eyebrow ? '<span class="vg-eyebrow vg-type" data-type-text="' + esc(heading.eyebrow) + '"></span>' : "") +
                  "<h1>" + esc(heading.title || get("site.name", "")) + "</h1>" +
                  (heading.subtitle ? '<p class="vg-lede">' + esc(heading.subtitle) + "</p>" : "") +
                  (heading.description ? '<p class="vg-hero-desc">' + esc(heading.description) + "</p>" : "") +
                  actionRow(section.actions) + "</div>" +
                  (asset(imageRef) ? '<div class="vg-hero-media">' + assetImg(imageRef, heading.title, "", true) + "</div>" : "") +
                  "</div></div></div></div></section>";
              },
          
              page_header: function (section) {
                var heading = section.heading || {}, media = section.media || {};
                var imageRef = media.primary || media.asset || media.image || media.background;
                return '<section class="vg-page-head"><div class="vg-wrap"><div class="vg-page-head-grid' + (asset(imageRef) ? "" : " vg-single") + '"><div>' +
                  (heading.eyebrow ? '<span class="vg-eyebrow">' + esc(heading.eyebrow) + "</span>" : "") +
                  "<h1>" + esc(heading.title || "") + "</h1>" +
                  (heading.subtitle ? '<p class="vg-lede">' + esc(heading.subtitle) + "</p>" : "") +
                  "</div>" + (asset(imageRef) ? '<div class="vg-page-banner">' + assetImg(imageRef, heading.title, "", true) + "</div>" : "") +
                  "</div></div></section>";
              },
          
              rich_text: function (section) {
                return '<section class="vg-section"><div class="vg-wrap">' + sectionHeading(section.heading) +
                  '<div class="vg-rich">' + richContent(section.content) + "</div>" +
                  (section.actions && section.actions.length ? actionRow(section.actions, "vg-actions vg-section-actions") : "") +
                  "</div></section>";
              },
          
              split_content: function (section, index) {
                var media = section.media || {}, imageRef = media.primary || media.asset || media.image || media.background;
                return '<section class="vg-section' + (index % 2 ? " alt" : "") + '"><div class="vg-wrap"><div class="vg-split' + (section.variant === "reverse" ? " reverse" : "") + '">' +
                  '<div class="vg-split-copy">' + sectionHeading(section.heading) + '<div class="vg-rich">' + richContent(section.content) + "</div>" + actionRow(section.actions) + "</div>" +
                  (asset(imageRef) ? '<div class="vg-split-media">' + assetImg(imageRef, (section.heading || {}).title) + "</div>" : "") +
                  "</div></div></section>";
              },
          
              stats: function (section) {
                var items = (section.data || {}).items || [];
                if (!items.length) return "";
                return '<section class="vg-stats-section"><div class="vg-wrap">' + sectionHeading(section.heading) +
                  '<div class="vg-stats" style="--vg-cols:' + columnsFor(items.length) + '">' + items.map(function (item) {
                    return '<div class="vg-stat"><div class="vg-stat-value" data-stat-value="' + esc(item.value) + '">' + esc(item.value) + '</div><div class="vg-stat-label">' + esc(item.label) + "</div></div>";
                  }).join("") + "</div></div></section>";
              },
          
              collection: function (section) {
                var collection = collectionFromSource(section.source);
                if (!collection) return "";
                var limit = section.source && section.source.limit;
                var items = publishedItems(collection, limit || 6, section.source && section.source.sort);
                if (!items.length) return "";
                return '<section class="vg-section alt"><div class="vg-wrap">' + sectionHeading(section.heading || { title: collection.label, subtitle: collection.description }) +
                  '<div class="vg-grid" style="--vg-cols:' + columnsFor(items.length) + '">' + items.map(function (item) { return renderCard(collection, item); }).join("") + "</div>" +
                  (section.actions && section.actions.length ? actionRow(section.actions, "vg-actions vg-section-actions") : "") + "</div></section>";
              },
          
              gallery: function (section) {
                var collection = collectionFromSource(section.source);
                var items = publishedItems(collection, (section.source && section.source.limit) || 12);
                var allowLightbox = !section.data || section.data.allow_lightbox !== false;
                if (!items.length) return "";
                var figures = items.map(function (item) {
                  var ref = item.media && (item.media.featured || item.media.image);
                  var found = asset(ref);
                  if (!found) return "";
                  var attrs = item.attributes || {};
                  var meta = [attrs.place, attrs.year, attrs.stage].filter(Boolean).join(" · ");
                  var imageMarkup = assetImg(ref, item.title);
                  if (allowLightbox) imageMarkup = '<button type="button" class="vg-gallery-button" data-lightbox="' + esc(found.src) + '" data-caption="' + esc(item.title || item.summary || "") + '">' + imageMarkup + "</button>";
                  else imageMarkup = '<a class="vg-gallery-button" href="' + esc(itemHref(collection, item)) + '">' + imageMarkup + "</a>";
                  var showCaptions = !section.data || section.data.show_captions !== false;
                  return "<figure>" + imageMarkup + (showCaptions ? "<figcaption>" +
                    (item.title ? '<div class="vg-fig-title">' + esc(item.title) + "</div>" : "") +
                    (item.summary ? '<div class="vg-fig-sub">' + esc(item.summary) + "</div>" : "") +
                    (meta ? '<div class="vg-meta">' + esc(meta) + "</div>" : "") + "</figcaption>" : "") + "</figure>";
                }).join("");
                return '<section class="vg-section"><div class="vg-wrap">' + sectionHeading(section.heading || { title: collection.label, subtitle: collection.description }) +
                  '<div class="vg-gallery">' + figures + "</div>" +
                  (section.actions && section.actions.length ? actionRow(section.actions, "vg-actions vg-section-actions") : "") + "</div></section>";
              },
          
              people: function (section) {
                var collection = collectionFromSource(section.source);
                var items = publishedItems(collection);
                if (!items.length) return "";
                return '<section class="vg-section"><div class="vg-wrap">' + sectionHeading(section.heading || { title: collection.label, subtitle: collection.description }) +
                  '<div class="vg-people" style="--vg-cols:' + columnsFor(items.length) + '">' + items.map(function (person) {
                    var role = (person.attributes || {}).position || person.summary || "";
                    return '<a class="vg-person" href="' + esc(itemHref(collection, person)) + '"><div class="vg-person-image">' +
                      assetImg(person.media && person.media.featured, person.title) + "</div><h3>" + esc(person.title) + '</h3><div class="vg-role">' + esc(role) + "</div></a>";
                  }).join("") + "</div></div></section>";
              },
          
              testimonials: function (section) {
                var items = (section.data || {}).items || [];
                if (!items.length) return "";
                return '<section class="vg-section alt"><div class="vg-wrap">' + sectionHeading(section.heading) +
                  '<div class="vg-testimonials" style="--vg-cols:' + columnsFor(items.length) + '">' + items.map(function (item) {
                    return '<article class="vg-quote-card"><div class="vg-quote-mark">“</div><blockquote>' + esc(item.quote) + '</blockquote><div class="vg-quote-name">' + esc(item.name || "") + '</div><div class="vg-quote-detail">' + esc(item.detail || "") + "</div></article>";
                  }).join("") + "</div></div></section>";
              },
          
              call_to_action: function (section) {
                var heading = section.heading || {};
                return '<section class="vg-section"><div class="vg-wrap"><div class="vg-cta-band"><div class="vg-cta-band-copy">' +
                  (heading.eyebrow ? '<span class="vg-eyebrow">' + esc(heading.eyebrow) + "</span>" : "") +
                  "<h2>" + esc(heading.title || "") + "</h2>" +
                  (heading.subtitle ? "<p>" + esc(heading.subtitle) + "</p>" : "") + "</div>" +
                  actionRow(section.actions) + "</div></div></section>";
              },
          
              contact: function (section) {
                var emails = get("contact.emails", []), phones = get("contact.phones", []), addresses = get("contact.addresses", []), hours = get("contact.business_hours", []);
                return '<section class="vg-section alt"><div class="vg-wrap">' + sectionHeading(section.heading || { title: "Contact" }) + '<div class="vg-contact-grid">' +
                  '<article class="vg-contact-card"><h3>Write or call</h3><dl>' +
                  emails.map(function (entry) { var value = contactValue(entry); return "<dt>" + esc(entry.label || "Email") + '</dt><dd><a href="mailto:' + esc(value) + '">' + esc(value) + "</a></dd>"; }).join("") +
                  phones.map(function (entry) { var value = contactValue(entry); return "<dt>" + esc(entry.label || "Phone") + '</dt><dd><a href="tel:' + esc(value) + '">' + esc(value) + "</a></dd>"; }).join("") + "</dl></article>" +
                  '<article class="vg-contact-card"><h3>Visit</h3><dl>' + addresses.map(function (entry) { return "<dt>" + esc(entry.label || "Address") + "</dt><dd>" + esc(addressLine(entry)) + "</dd>"; }).join("") + "</dl></article>" +
                  '<article class="vg-contact-card"><h3>Opening hours</h3><table class="vg-hours">' + hours.map(function (entry) {
                    return "<tr><td>" + esc(hoursDays(entry)) + "</td><td>" + esc(entry.closed ? "Closed" : (entry.opens || "") + " – " + (entry.closes || "")) + "</td></tr>";
                  }).join("") + "</table></article></div></div></section>";
              },
          
              form: function (section) {
                var source = section.source || {};
                var form = (DATA.forms || {})[source.form || source.ref];
                if (!form) return "";
                var fields = (form.fields || []).map(function (field) {
                  var id = "field-" + field.id;
                  var full = field.type === "textarea" ? " full" : "";
                  var required = field.required ? " required" : "";
                  var requiredMark = field.required ? ' <span class="vg-required" aria-hidden="true">*</span>' : "";
                  var control = "";
                  if (field.type === "textarea") {
                    control = '<textarea id="' + esc(id) + '" name="' + esc(field.id) + '" placeholder="' + esc(field.placeholder || "") + '"' + required + "></textarea>";
                  } else if (field.type === "select") {
                    control = '<select id="' + esc(id) + '" name="' + esc(field.id) + '"' + required + '><option value="">' + esc(field.placeholder || "Select") + "</option>" +
                      (field.options || []).map(function (option) { var value = typeof option === "string" ? option : option.value; var label = typeof option === "string" ? option : option.label; return '<option value="' + esc(value) + '">' + esc(label) + "</option>"; }).join("") + "</select>";
                  } else {
                    control = '<input id="' + esc(id) + '" name="' + esc(field.id) + '" type="' + esc(field.type || "text") + '" placeholder="' + esc(field.placeholder || "") + '"' + required + ">";
                  }
                  return '<div class="vg-field' + full + '"><label for="' + esc(id) + '">' + esc(field.label || field.id) + requiredMark + "</label>" + control + "</div>";
                }).join("");
                return '<section class="vg-section"><div class="vg-wrap"><div class="vg-form-shell"><div class="vg-form-copy">' + sectionHeading(section.heading || { title: form.title, subtitle: form.description }) +
                  '</div><form class="vg-form" data-form-id="' + esc(form.id) + '" action="' + esc(form.action || "") + '" method="' + esc(form.method || "POST") + '"><div class="vg-form-grid">' + fields +
                  '</div><div class="vg-form-footer"><p class="vg-form-note">Fields marked * are required.</p><button class="vg-btn vg-btn-primary" type="submit">' + esc(form.submit_label || "Send") + iconSvg("arrow-right") +
                  '</button></div><div class="vg-form-status" data-form-status hidden></div></form></div></div></section>';
              }
            };
          
            function renderPage(page) {
              var markup = (page.sections || []).filter(function (section) { return section.enabled !== false; }).map(function (section, index) {
                var renderer = RENDERERS[section.type];
                return renderer ? renderer(section, index) : "";
              }).join("");
              html(el("main"), markup || emptyState("This page has no published sections.", "/"));
              var seo = page.seo || {};
              applySeo(seo.title || page.title, seo.description, seo.image);
            }
          
            function collectionHeading(collection) {
              return '<section class="vg-page-head"><div class="vg-wrap"><div class="vg-page-head-grid vg-single"><div>' +
                '<div class="vg-breadcrumbs"><a href="' + esc(toHref("/")) + '">Home</a><span>/</span><span>' + esc(collection.label) + "</span></div>" +
                '<span class="vg-eyebrow">Collection</span><h1>' + esc(collection.label || "") + "</h1>" +
                (collection.description ? '<p class="vg-lede">' + esc(collection.description) + "</p>" : "") + "</div></div></div></section>";
            }
            function renderCollectionPage(collection) {
              var items = publishedItems(collection);
              html(el("main"), collectionHeading(collection) + '<section class="vg-section alt"><div class="vg-wrap">' +
                (items.length ? '<div class="vg-grid" style="--vg-cols:' + columnsFor(items.length) + '">' + items.map(function (item) { return renderCard(collection, item); }).join("") + "</div>"
                  : '<p class="vg-lede">Nothing has been published here yet.</p>') + "</div></section>");
              applySeo(collection.label, collection.description, items[0] && items[0].media && items[0].media.featured);
            }
          
            function itemMeta(item) {
              var attrs = item.attributes || {}, dates = item.dates || {};
              if (item.type === "project") return [attrs.place, attrs.year, attrs.stage, attrs.area].filter(Boolean);
              if (item.type === "article") return [formatDate(dates.published_at), attrs.reading_time].filter(Boolean);
              if (item.type === "service") return [attrs.lead_time, attrs.starting_from].filter(Boolean);
              if (item.type === "product") return [attrs.price_display, attrs.edition, attrs.availability && String(attrs.availability).replace(/_/g, " ")].filter(Boolean);
              if (item.type === "person") return [attrs.position, attrs.department].filter(Boolean);
              return [];
            }
            function itemSpecs(item) {
              var attrs = item.attributes || {}, specs = (attrs.specifications || []).slice();
              if (attrs.sku) specs.push({ label: "Reference", value: attrs.sku });
              if (attrs.lead_time) specs.push({ label: "Typical timeline", value: attrs.lead_time });
              if (attrs.starting_from) specs.push({ label: "Fee guide", value: attrs.starting_from });
              if (attrs.area) specs.push({ label: "Area", value: attrs.area });
              if (attrs.place) specs.push({ label: "Location", value: attrs.place });
              return specs;
            }
            function renderItemPage(collection, item) {
              var image = item.media && item.media.featured;
              var meta = itemMeta(item);
              var specs = itemSpecs(item);
              var gallery = (item.media && item.media.gallery) || [];
              var related = publishedItems(collection).filter(function (candidate) { return candidate.id !== item.id; }).slice(0, 3);
              var eyebrow = collection.singular_label || item.type || "Detail";
              var body = '<section class="vg-detail-hero"><div class="vg-wrap"><div class="vg-detail-grid"><div>' +
                '<div class="vg-breadcrumbs"><a href="' + esc(toHref("/")) + '">Home</a><span>/</span><a href="' + esc(toHref((collection.routing && collection.routing.index_path) || "/")) + '">' + esc(collection.label) + "</a><span>/</span><span>" + esc(item.title) + "</span></div>" +
                '<span class="vg-eyebrow">' + esc(eyebrow) + "</span><h1>" + esc(item.title || "") + "</h1>" +
                (item.summary ? '<p class="vg-lede">' + esc(item.summary) + "</p>" : "") +
                (meta.length ? '<div class="vg-detail-meta">' + meta.map(function (value) { return "<span>" + esc(value) + "</span>"; }).join("") + "</div>" : "") +
                actionRow(item.actions) + "</div>" +
                (asset(image) ? '<div>' + assetImg(image, item.title, "", true) + "</div>" : "") + "</div></div></section>";
          
              body += '<section class="vg-section alt"><div class="vg-wrap"><div class="vg-detail-body"><div><div class="vg-rich">' + richContent(item.body) + "</div>" +
                (gallery.length ? '<div class="vg-detail-gallery">' + gallery.map(function (ref) { return assetImg(ref, item.title); }).join("") + "</div>" : "") + "</div>" +
                (specs.length ? '<aside class="vg-detail-aside"><h3>Details</h3><dl class="vg-specs">' + specs.map(function (spec) { return "<div><dt>" + esc(spec.label) + "</dt><dd>" + esc(spec.value) + "</dd></div>"; }).join("") + "</dl></aside>" : "") + "</div></div></section>";
          
              if (related.length) {
                body += '<section class="vg-section"><div class="vg-wrap">' + sectionHeading({ eyebrow: "More to explore", title: "Related " + String(collection.label || "items").toLowerCase() }) +
                  '<div class="vg-grid" style="--vg-cols:' + columnsFor(related.length) + '">' + related.map(function (candidate) { return renderCard(collection, candidate); }).join("") + "</div></div></section>";
              }
              html(el("main"), body);
              applySeo(item.title, item.summary, image);
            }
          
            function notFoundMarkup() {
              return '<section class="vg-section"><div class="vg-wrap"><span class="vg-eyebrow">404</span><h1>Page not found</h1><p class="vg-lede">The address may be outdated, or the content may no longer be published.</p><div class="vg-actions"><a class="vg-btn vg-btn-primary" href="' + esc(toHref("/")) + '">Back to the homepage</a></div></div></section>';
            }
            function emptyState(message, href) {
              return '<section class="vg-section"><div class="vg-wrap"><p class="vg-lede">' + esc(message) + '</p><div class="vg-actions"><a class="vg-btn vg-btn-secondary" href="' + esc(toHref(href || "/")) + '">Back to the homepage</a></div></div></section>';
            }
          
            function renderRoute(route) {
              if (route.kind === "redirect") {
                history.replaceState({}, "", toHref(route.path));
                route = resolveRoute(route.path);
              }
              if (route.kind === "page") renderPage(route.page);
              else if (route.kind === "collection") renderCollectionPage(route.collection);
              else if (route.kind === "item") renderItemPage(route.collection, route.item);
              else {
                html(el("main"), notFoundMarkup());
                applySeo("Page not found", "The requested page could not be found.");
              }
              renderHeader();
              typeEyebrows();
              animateStats();
              reveal();
            }
          
            function showToast(message) {
              var node = el("toast");
              if (!node) return;
              node.textContent = message;
              show(node, true);
              clearTimeout(toastTimer);
              toastTimer = setTimeout(function () { show(node, false); }, 4200);
            }
            function openLightbox(src, caption) {
              var lightbox = el("lightbox"), stage = el("lightbox-stage");
              if (!lightbox || !stage) return;
              html(stage, '<img src="' + esc(src) + '" alt="' + esc(caption || "") + '">' + (caption ? "<p>" + esc(caption) + "</p>" : ""));
              show(lightbox, true);
              document.body.style.overflow = "hidden";
              var close = root.querySelector('[data-action="lightbox-close"]');
              if (close) close.focus();
            }
            function closeLightbox() {
              var lightbox = el("lightbox");
              if (lightbox && lightbox.hidden) return;
              show(lightbox, false);
              document.body.style.overflow = "";
            }
          
            function handleFormSubmit(formNode) {
              var config = (DATA.forms || {})[formNode.getAttribute("data-form-id")] || {};
              var status = formNode.querySelector("[data-form-status]");
              if (!formNode.reportValidity()) return;
          
              var formData = new FormData(formNode);
              var action = config.action || formNode.action || "";
          
              if (action.indexOf("mailto:") === 0) {
                var lines = [];
                formData.forEach(function (value, key) {
                  var field = (config.fields || []).filter(function (candidate) { return candidate.id === key; })[0];
                  lines.push((field ? field.label : key) + ": " + value);
                });
                location.href = "mailto:" + action.slice(7) +
                  "?subject=" + encodeURIComponent("Website enquiry from " + (formData.get("name") || "a visitor")) +
                  "&body=" + encodeURIComponent(lines.join("\n\n"));
                if (status) { status.textContent = config.success_message || "Your email application should open now."; show(status, true); }
                return;
              }
          
              if (!action) {
                if (status) { status.textContent = config.error_message || "No form endpoint is configured."; show(status, true); }
                return;
              }
              var button = formNode.querySelector('button[type="submit"]');
              if (button) button.disabled = true;
              // POST the FormData object itself (no JSON.stringify, no manual Content-Type):
              // that keeps it a CORS "simple request" so the cross-origin submit doesn't
              // trigger a preflight the platform's static allow-list can't answer.
              fetch(action, {
                method: config.method || "POST",
                body: formData
              }).then(function (response) {
                if (!response.ok) throw new Error("HTTP " + response.status);
                formNode.reset();
                if (status) { status.textContent = config.success_message || "Thank you. Your message has been sent."; show(status, true); }
              }).catch(function () {
                if (status) { status.textContent = config.error_message || "The message could not be sent."; show(status, true); }
              }).finally(function () { if (button) button.disabled = false; });
            }
          
            function navigate(path, replace) {
              var clean = normalizePath(path);
              if (replace) history.replaceState({}, "", toHref(clean));
              else history.pushState({}, "", toHref(clean));
              renderRoute(resolveRoute(clean));
              var header = el("header");
              if (header) header.classList.remove("is-open");
              document.body.classList.remove("vg-nav-open");
              var burger = root.querySelector('[data-action="menu"]');
              if (burger) burger.setAttribute("aria-expanded", "false");
              window.scrollTo({ top: 0, behavior: "auto" });
              var main = el("main");
              if (main) main.focus({ preventScroll: true });
            }
          
            function bindBehaviour() {
              root.addEventListener("click", function (event) {
                var burger = event.target.closest && event.target.closest('[data-action="menu"]');
                if (burger) {
                  var header = el("header");
                  var open = header && header.classList.toggle("is-open");
                  burger.setAttribute("aria-expanded", open ? "true" : "false");
                  burger.setAttribute("aria-label", open ? "Close navigation" : "Open navigation");
                  document.body.classList.toggle("vg-nav-open", !!open);
                  return;
                }
                var mode = event.target.closest && event.target.closest('[data-action="mode"]');
                if (mode) {
                  var next = CURRENT_MODE === "dark" ? "light" : "dark";
                  storageSet(get("site.id", "site") + ":mode", next);
                  applyBranding(next);
                  showToast(next === "dark" ? "Dark mode enabled" : "Light mode enabled");
                  return;
                }
                var totop = event.target.closest && event.target.closest('[data-action="totop"]');
                if (totop) {
                  var reduceMotion = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
                  window.scrollTo({ top: 0, behavior: reduceMotion ? "auto" : "smooth" });
                  return;
                }
                var close = event.target.closest && event.target.closest('[data-action="lightbox-close"]');
                if (close || event.target === el("lightbox")) { closeLightbox(); return; }
                var preview = event.target.closest && event.target.closest("[data-lightbox]");
                if (preview) { event.preventDefault(); openLightbox(preview.getAttribute("data-lightbox"), preview.getAttribute("data-caption")); return; }
                var link = event.target.closest && event.target.closest("a[href]");
                if (!link || link.target === "_blank" || link.hasAttribute("download")) return;
                var href = link.getAttribute("href") || "";
                if (/^(mailto:|tel:|javascript:|#)/i.test(href)) return;
                var url = new URL(link.href, location.href);
                if (url.origin !== location.origin) return;
                var route = resolveRoute(url.pathname);
                if (route.kind === "not-found") return;
                event.preventDefault();
                navigate(url.pathname, false);
              });
          
              root.addEventListener("submit", function (event) {
                var form = event.target.closest && event.target.closest("form[data-form-id]");
                if (!form) return;
                event.preventDefault();
                handleFormSubmit(form);
              });
          
              window.addEventListener("popstate", function () { renderRoute(resolveRoute(currentPath())); window.scrollTo({ top: 0, behavior: "auto" }); });
              document.addEventListener("keydown", function (event) { if (event.key === "Escape") closeLightbox(); });
            }
          
            // Types out every hero eyebrow (`[data-type-text]`) character by character,
            // ending on a blinking cursor. The attribute value is the already-esc()'d
            // payload text; reading it back via getAttribute HTML-decodes it once, and
            // every character is then appended through textContent — never innerHTML —
            // so nothing in the customer's string can be parsed as markup mid-type.
            function typeEyebrows() {
              var reduceMotion = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
              root.querySelectorAll("[data-type-text]").forEach(function (node) {
                var text = node.getAttribute("data-type-text") || "";
                node.removeAttribute("data-type-text");
                node.textContent = "";
                var textSpan = document.createElement("span");
                var cursorSpan = document.createElement("span");
                cursorSpan.className = "vg-type-cursor";
                cursorSpan.setAttribute("aria-hidden", "true");
                node.appendChild(textSpan);
                node.appendChild(cursorSpan);
                if (reduceMotion || !text) { textSpan.textContent = text; return; }
                var chars = String(text).split("");
                // Budgeted to finish well under half a second regardless of eyebrow
                // length, so a screenshot taken shortly after load reliably lands on
                // the completed text rather than a partial, truncated-looking string.
                var perChar = Math.max(5, Math.min(18, 260 / chars.length));
                var i = 0;
                (function tick() {
                  if (i >= chars.length) return;
                  textSpan.textContent += chars[i];
                  i += 1;
                  setTimeout(tick, perChar);
                })();
              });
            }
          
            // Ticks each stats value up from zero once it scrolls into view. Only the
            // leading numeric portion is tweened; a non-numeric value ("N/A") is left
            // exactly as already rendered. One-shot per element, IntersectionObserver.
            function animateStats() {
              if (!("IntersectionObserver" in window)) return;
              if (window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
              var nodes = root.querySelectorAll("[data-stat-value]");
              if (!nodes.length) return;
              var observer = new IntersectionObserver(function (entries) {
                entries.forEach(function (entry) {
                  if (!entry.isIntersecting) return;
                  observer.unobserve(entry.target);
                  var raw = entry.target.getAttribute("data-stat-value") || "";
                  var match = raw.match(/^(-?[\d,]*\.?\d+)/);
                  if (!match) return;
                  var numText = match[1];
                  var target = parseFloat(numText.replace(/,/g, ""));
                  if (isNaN(target)) return;
                  var suffix = raw.slice(match[1].length);
                  var decimals = (numText.split(".")[1] || "").length;
                  entry.target.innerHTML = '<span class="vg-stat-num">0</span>' + esc(suffix);
                  var numSpan = entry.target.querySelector(".vg-stat-num");
                  var start = null, duration = 1000;
                  function frame(timestamp) {
                    if (start === null) start = timestamp;
                    var progress = Math.min((timestamp - start) / duration, 1);
                    var eased = 1 - Math.pow(1 - progress, 3);
                    var current = target * eased;
                    numSpan.textContent = decimals ? current.toFixed(decimals) : Math.round(current).toLocaleString();
                    if (progress < 1) requestAnimationFrame(frame);
                    else numSpan.textContent = decimals ? target.toFixed(decimals) : target.toLocaleString();
                  }
                  requestAnimationFrame(frame);
                });
              }, { threshold: 0.4 });
              nodes.forEach(function (node) { observer.observe(node); });
            }
          
            function reveal() {
              if (!("IntersectionObserver" in window)) return;
              var observer = new IntersectionObserver(function (entries) {
                entries.forEach(function (entry) {
                  if (entry.isIntersecting) { entry.target.classList.add("is-in"); observer.unobserve(entry.target); }
                });
              }, { rootMargin: "0px 0px -7% 0px" });
              root.querySelectorAll("main > section").forEach(function (section, index) {
                if (index === 0) return;
                section.classList.add("vg-reveal");
                observer.observe(section);
              });
            }
          
            function start(payload) {
              DATA = payload;
              show(el("loading"), false);
              if (!payload || payload.status === "maintenance" || get("site.status", "published") === "maintenance") {
                var maintenance = (payload && payload.maintenance) || {};
                html(el("maintenance-title"), esc(maintenance.headline || "Site under maintenance"));
                html(el("maintenance-message"), esc(maintenance.message || "Please check back soon."));
                show(el("maintenance"), true);
                document.title = maintenance.headline || "Site under maintenance";
                return;
              }
              applyBranding();
              show(el("site"), true);
              renderFooter();
              renderRoute(resolveRoute(currentPath()));
              bindBehaviour();
            }
            function fail(error) {
              if (window.console) console.error(error);
              show(el("loading"), false);
              show(el("error"), true);
            }
          
            if (CONFIG.payload) start(CONFIG.payload);
            else if (CONFIG.api) {
              fetch(CONFIG.api, { credentials: "omit" }).then(function (response) {
                if (!response.ok) throw new Error("HTTP " + response.status);
                return response.json();
              }).then(start).catch(fail);
            } else fail(new Error("No payload or API URL configured."));
          })();
          
          </script>
          </body>
          </html>
          Evidence
          icks stat values up from zero in monospace t
          Solution

          Remove all comments that return information that may help an attacker and fix any underlying problems they refer to.

      3. Modern Web Application (1)
        1. GET https://sites.wons.bt/theme-preview/signal-grid
          Alert tags
          • POLICY_QA_STD =
          • POLICY_PENTEST =
          • SYSTEMIC
          • POLICY_DEV_STD =
          Alert description

          The application appears to be a modern web application. If you need to explore it automatically then the Client Spider may well be more effective than the standard one.

          Other info

          A noScript tag has been found, which is an indication that the application works differently with JavaScript enabled compared to when it is not.

          Request
          Request line and header section (358 bytes)
          GET https://sites.wons.bt/theme-preview/signal-grid HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          referer: https://sites.wons.bt
          Cookie: wons_csrf=GAvXjBHcSNzE5JhQCILE.648451ec0314384fdb85fa68844a96f9
          
          
          Request body (0 bytes)
          Response
          Status line and header section (679 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:43:00 GMT
          Content-Type: text/html; charset=utf-8
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-YFl216N55xX-T3A4Xlnryg'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          content-length: 89816
          
          
          Response body (89816 bytes)
          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=1280">
          <title>Signal Grid — preview</title>
          <meta name="robots" content="noindex,nofollow">
          <style>
          /* WONS strict renderer structural layer — independent of Aster's visual styles. */
          :root{
            --a-bg:#0b0b0c;--a-surface:#121214;--a-surface-2:#1a1a1d;--a-card:#121214;--a-muted:#a6a39c;--a-subtle:#777570;--a-line:#ffffff27;
            --a-line-strong:#ffffff66;--a-primary:#ff2b1a;--a-primary-h:#db1e10;
            --a-on-primary:#fff;--a-secondary:#080809;--a-accent:#ff2b1a;--a-focus:#fff;
            --a-heading:Arial,Helvetica,sans-serif;--a-body:Arial,Helvetica,sans-serif;
            --a-radius-sm:0;--a-radius:0;--a-radius-lg:0;--a-shadow:none;--a-shadow-lg:none;
            --a-maxw:1500px;--a-measure:66ch;--a-bleed:clamp(1rem,2.4vw,2.25rem);
            --a-section:clamp(2.75rem,4.8vw,5.25rem);--a-header-h:72px
          }
          *{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
          body{margin:0;min-width:320px;background:var(--a-bg);color:var(--a-ink);font-family:var(--a-body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
          body.a-nav-open{overflow:hidden}button,input,select,textarea{font:inherit}button{color:inherit}img{display:block;max-width:100%;height:auto}a{color:inherit;text-decoration:none}p{margin:0 0 1rem}
          h1,h2,h3,h4{margin:0;font-family:var(--a-heading);line-height:.98;letter-spacing:-.045em;text-wrap:balance}
          h1{font-size:clamp(3.2rem,7vw,7.1rem)}h2{font-size:clamp(2.2rem,4.5vw,4.9rem)}h3{font-size:clamp(1.08rem,1.6vw,1.45rem)}h4{font-size:.9rem}
          ::selection{background:var(--a-primary);color:var(--a-on-primary)}:focus-visible{outline:2px solid var(--a-focus);outline-offset:4px}
          .a-app{overflow:clip}.a-wrap{width:100%;max-width:var(--a-maxw);margin:auto;padding-inline:var(--a-bleed)}
          .a-skip{position:fixed;z-index:999;left:1rem;top:1rem;transform:translateY(-180%);padding:.7rem 1rem;background:var(--a-ink);color:var(--a-bg)}.a-skip:focus{transform:none}
          .a-noscript{padding:1rem;text-align:center;background:#7f1d1d;color:#fff}
          .a-eyebrow,.a-kicker{display:inline-flex;align-items:center;gap:.55rem;color:var(--a-primary);font-size:.67rem;font-weight:700;letter-spacing:.17em;text-transform:uppercase}
          .a-lede{max-width:58ch;color:var(--a-muted);font-size:clamp(1rem,1.4vw,1.2rem);line-height:1.52}
          .a-announce{position:relative;z-index:60;display:flex;justify-content:center;gap:.8rem;padding:.55rem var(--a-bleed);background:var(--a-primary);color:var(--a-on-primary);font-size:.74rem}
          .a-header{position:sticky;top:0;z-index:50;height:var(--a-header-h);border-bottom:1px solid var(--a-line);background:color-mix(in srgb,var(--a-bg) 92%,transparent);backdrop-filter:blur(18px)}
          .a-header-inner{height:100%;display:flex;align-items:center;gap:1rem}.a-brand{display:inline-flex;align-items:center;margin-right:auto}.a-brand img{height:36px;width:auto;max-width:220px}.a-brand .a-wordmark{font-weight:800}
          .a-nav{display:flex;align-items:center;gap:.15rem}.a-nav-item{position:relative}.a-nav-link{display:inline-flex;align-items:center;gap:.25rem;padding:.65rem .72rem;color:var(--a-muted);font-size:.77rem;font-weight:650}.a-nav-link:hover,.a-nav-link.is-active{color:var(--a-ink)}
          .a-nav-caret{font-size:.62rem}.a-nav-sub{position:absolute;left:0;top:calc(100% + .65rem);min-width:220px;padding:.45rem;border:1px solid var(--a-line);background:var(--a-card);box-shadow:0 24px 70px #0008;opacity:0;visibility:hidden;transform:translateY(-5px);transition:.2s}
          .a-nav-item:hover .a-nav-sub,.a-nav-item:focus-within .a-nav-sub{opacity:1;visibility:visible;transform:none}.a-nav-sub a{display:block;padding:.65rem .7rem;color:var(--a-muted);font-size:.8rem}.a-nav-sub a:hover{background:var(--a-surface-2);color:var(--a-ink)}
          .a-nav-cta{margin-left:.4rem;}.a-header-actions{order:3;display:flex;gap:.4rem}.a-mode-toggle,.a-burger{width:38px;height:38px;border:1px solid var(--a-line);background:transparent;cursor:pointer}.a-burger{display:none;position:relative}.a-burger span{position:absolute;left:10px;width:17px;height:1px;background:currentColor}.a-burger span:nth-child(1){transform:translateY(-5px)}.a-burger span:nth-child(3){transform:translateY(5px)}
          .a-header.is-open .a-burger span:nth-child(1){transform:rotate(45deg)}.a-header.is-open .a-burger span:nth-child(2){opacity:0}.a-header.is-open .a-burger span:nth-child(3){transform:rotate(-45deg)}
          .a-hero{position:relative;isolation:isolate;min-height:min(760px,calc(100svh - var(--a-header-h)));display:grid;align-items:center;padding:clamp(2.2rem,5vw,4.5rem) 0;border-bottom:1px solid var(--a-line)}
          .a-hero-grid{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,.86fr) minmax(360px,1.14fr);gap:clamp(1.4rem,3vw,2.7rem);align-items:center}.a-hero-single{grid-template-columns:1fr;max-width:850px}.a-hero h1{margin:.7rem 0 1rem;max-width:10ch}.a-hero .a-lede{color:var(--a-ink);opacity:.82}.a-hero-desc{max-width:55ch;color:var(--a-muted);font-size:.92rem}
          .a-hero-actions,.a-section-actions{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:1.4rem}.a-hero-media{position:relative}.a-hero-media img{width:100%;height:min(62vh,560px);object-fit:cover}
          .a-btn{display:inline-flex;align-items:center;justify-content:center;gap:.7rem;min-height:46px;padding:.72rem 1rem;border:1px solid var(--a-line-strong);background:transparent;color:var(--a-ink);cursor:pointer;font-size:.76rem;font-weight:750;letter-spacing:.04em;transition:.2s}
          .a-btn-primary{background:var(--a-primary);border-color:var(--a-primary);color:var(--a-on-primary)}.a-btn:hover{transform:translateY(-2px)}.a-btn-primary:hover{background:var(--a-primary-h)}.a-btn-secondary:hover,.a-btn-ghost:hover{background:var(--a-ink);color:var(--a-bg)}.a-btn-text{min-height:auto;padding:.3rem 0;border:0;color:var(--a-primary)}
          .a-icon{flex:none;transition:transform .2s}.a-btn:hover .a-icon,.a-more:hover .a-icon{transform:translateX(4px)}
          .a-section{padding:var(--a-section) 0;border-bottom:1px solid var(--a-line)}.a-section.alt{background:var(--a-surface)}.a-section-head{display:grid;grid-template-columns:minmax(120px,.32fr) minmax(0,1fr);gap:1rem 2rem;max-width:1050px;margin-bottom:clamp(1.5rem,3vw,2.6rem)}.a-section-head .a-eyebrow{grid-column:1}.a-section-head h2,.a-section-head .a-lede{grid-column:2}.a-section-head .a-lede{margin-top:.15rem}
          .a-stats-section{padding:4em;border-bottom:1px solid var(--a-line)}.a-stats{display:grid;grid-template-columns:repeat(var(--a-cols,4),1fr);border-left:1px solid var(--a-line)}.a-stat{padding:1.25rem;border-right:1px solid var(--a-line)}.a-stat-value{font-family:var(--a-heading);font-size:clamp(2rem,4vw,4rem);font-weight:650;line-height:1;color:var(--a-primary)}.a-stat-label{margin-top:.45rem;color:var(--a-muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}
          .a-split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.4rem,3vw,2.6rem);align-items:center}.a-split.reverse .a-split-copy{order:2}.a-split-copy .a-section-head{display:block;margin-bottom:1rem}.a-split-copy .a-section-head>*{margin-bottom:.7rem}.a-split-copy .a-rich{color:var(--a-muted)}.a-split-media img{width:100%;aspect-ratio:5/4;object-fit:cover}
          .a-grid{display:grid;grid-template-columns:repeat(var(--a-cols,3),minmax(0,1fr));gap:1px;background:var(--a-line);border:1px solid var(--a-line)}.a-card{position:relative;display:flex;flex-direction:column;min-height:100%;overflow:hidden;background:var(--a-card);transition:transform .25s,background .25s}.a-card-media{display:block;overflow:hidden;background:var(--a-surface-2)}.a-card-media img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .5s,filter .5s}.a-card:hover .a-card-media img{transform:scale(1.035)}.a-card-body{display:flex;flex:1;flex-direction:column;padding:1rem}.a-card h3{margin:.25rem 0 .5rem}.a-card p{margin:0;color:var(--a-muted);font-size:.83rem}.a-card-meta{display:flex;gap:.4rem .65rem;flex-wrap:wrap;margin-bottom:.45rem;color:var(--a-subtle);font-size:.6rem;letter-spacing:.11em;text-transform:uppercase}.a-card-price{margin-top:.65rem;color:var(--a-primary);font-weight:700}.a-more{display:inline-flex;align-items:center;gap:.3rem;margin-top:auto;padding-top:.8rem;color:var(--a-primary);font-size:.72rem;font-weight:750}.a-card-icon{width:34px;height:34px;display:grid;place-items:center;margin-bottom:.8rem;border:1px solid var(--a-line);color:var(--a-primary)}
          .a-gallery{display:grid;grid-template-columns:repeat(12,1fr);gap:1px;background:var(--a-line);border:1px solid var(--a-line)}.a-gallery figure{grid-column:span 4;margin:0;background:var(--a-card);overflow:hidden}.a-gallery figure:nth-child(1),.a-gallery figure:nth-child(5){grid-column:span 7}.a-gallery figure:nth-child(2),.a-gallery figure:nth-child(6){grid-column:span 5}.a-gallery-button{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in}.a-gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .45s}.a-gallery figure:hover img{transform:scale(1.025)}.a-gallery figcaption{padding:.85rem 1rem}.a-fig-title{font-weight:750}.a-fig-sub{margin-top:.15rem;color:var(--a-muted);font-size:.76rem}.a-meta{margin-top:.35rem;color:var(--a-subtle);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase}
          .a-people{display:grid;grid-template-columns:repeat(var(--a-cols,4),1fr);gap:1px;background:var(--a-line)}.a-person{background:var(--a-bg);padding:1px}.a-person-image{overflow:hidden}.a-person img{width:100%;aspect-ratio:1;object-fit:cover;transition:transform .4s}.a-person:hover img{transform:scale(1.035)}.a-person h3{margin:.7rem .6rem .15rem}.a-person .role{margin:0 .6rem .7rem;color:var(--a-muted);font-size:.72rem}
          .a-rich{max-width:var(--a-measure)}.a-rich>*:first-child{margin-top:0}.a-rich h2,.a-rich h3,.a-rich h4{margin:1.6rem 0 .65rem}.a-rich p,.a-rich li{color:color-mix(in srgb,var(--a-ink) 82%,var(--a-muted))}.a-rich ul,.a-rich ol{padding-left:1.25rem}.a-rich blockquote{margin:1.6rem 0;padding:.2rem 0 .2rem 1rem;border-left:3px solid var(--a-primary);font-family:var(--a-heading);font-size:clamp(1.3rem,2.5vw,2rem)}.a-rich img{width:100%;margin:1.4rem 0}.a-rich a{color:var(--a-primary);text-decoration:underline}
          .a-testimonials{display:grid;grid-template-columns:repeat(var(--a-cols,2),1fr);gap:1px;background:var(--a-line)}.a-quote-card{padding:clamp(1.2rem,2.5vw,2rem);background:var(--a-card)}.a-quote-mark{color:var(--a-primary);font:3rem/1 Georgia,serif}.a-quote-card blockquote{margin:.55rem 0 1.2rem;font-family:var(--a-heading);font-size:clamp(1.25rem,2.2vw,1.85rem);line-height:1.2}.a-quote-name{font-weight:750}.a-quote-detail{color:var(--a-muted);font-size:.72rem}
          .a-cta-band{position:relative;display:grid;grid-template-columns:1fr auto;gap:1.5rem;align-items:end;padding:clamp(1.5rem,3vw,2.6rem);background:var(--a-secondary);color:var(--a-ink);border:1px solid var(--a-line)}.a-cta-band-copy{max-width:900px}.a-cta-band .a-eyebrow{margin-bottom:.65rem}.a-cta-band h2{max-width:16ch}.a-cta-band p{max-width:55ch;margin:.65rem 0 0;color:var(--a-muted)}
          .a-page-head,.a-detail-hero{padding:clamp(2.6rem,5vw,5rem) 0;border-bottom:1px solid var(--a-line)}.a-page-head-grid,.a-detail-grid{display:grid;grid-template-columns:.82fr 1.18fr;gap:clamp(1.4rem,3vw,2.8rem);align-items:end}.a-page-head h1,.a-detail-hero h1{max-width:11ch;margin:.65rem 0}.a-page-banner img,.a-detail-hero img{width:100%;aspect-ratio:16/10;object-fit:cover}.a-breadcrumbs{display:flex;gap:.4rem;margin-bottom:.65rem;color:var(--a-subtle);font-size:.68rem}.a-detail-meta{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.8rem}.a-detail-meta span{padding:.3rem .5rem;border:1px solid var(--a-line);color:var(--a-muted);font-size:.65rem}
          .a-detail-body{display:grid;grid-template-columns:1fr minmax(230px,.34fr);gap:clamp(1.5rem,4vw,3.5rem)}.a-detail-aside{position:sticky;top:calc(var(--a-header-h) + 1rem);align-self:start;padding:1rem;border:1px solid var(--a-line);background:var(--a-card)}.a-specs{margin:0}.a-specs div{padding:.6rem 0;border-bottom:1px solid var(--a-line)}.a-specs dt{color:var(--a-subtle);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase}.a-specs dd{margin:.15rem 0 0}.a-detail-gallery{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin-top:1.5rem}.a-detail-gallery img{width:100%;aspect-ratio:4/3;object-fit:cover}
          .a-contact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--a-line)}.a-contact-card{padding:1rem;background:var(--a-card)}.a-contact-card h3{margin-bottom:.7rem}.a-contact-card dl{margin:0}.a-contact-card dt{margin-top:.65rem;color:var(--a-subtle);font-size:.58rem;text-transform:uppercase;letter-spacing:.1em}.a-contact-card dd{margin:.12rem 0 0;color:var(--a-muted)}.a-hours{width:100%;border-collapse:collapse}.a-hours td{padding:.45rem 0;border-bottom:1px solid var(--a-line);color:var(--a-muted);font-size:.78rem}.a-hours td:last-child{text-align:right}
          .a-form-shell{display:grid;grid-template-columns:.55fr 1fr;gap:clamp(1.5rem,4vw,3.5rem)}.a-form{padding:1.2rem;border:1px solid var(--a-line);background:var(--a-card)}.a-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.a-field{display:flex;flex-direction:column;gap:.3rem}.a-field.full{grid-column:1/-1}.a-field label{font-size:.68rem;font-weight:750}.a-required{color:var(--a-primary)}.a-field input,.a-field select,.a-field textarea{width:100%;padding:.7rem;border:1px solid var(--a-line-strong);background:var(--a-bg);color:var(--a-ink);outline:0}.a-field textarea{min-height:130px;resize:vertical}.a-field input:focus,.a-field select:focus,.a-field textarea:focus{border-color:var(--a-focus)}.a-form-footer{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:1rem}.a-form-note{margin:0;color:var(--a-subtle);font-size:.67rem}.a-form-status{margin-top:.8rem;padding:.7rem;background:var(--a-surface)}
          .a-footer{padding:clamp(2.5rem,5vw,4.5rem) 0 1.25rem;background:var(--a-secondary);border-top:1px solid var(--a-line)}.a-footer-grid{display:grid;grid-template-columns:1.4fr repeat(var(--a-fcols,2),1fr);gap:clamp(1.2rem,3vw,3rem)}.a-footer-logo{height:38px;width:auto;max-width:220px;margin-bottom:.7rem}.a-footer p{max-width:38ch;color:var(--a-muted);font-size:.78rem}.a-footer h4{margin-bottom:.6rem;color:var(--a-primary);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase}.a-footer a{display:block;margin:.25rem 0;color:var(--a-muted);font-size:.78rem}.a-social{display:flex;gap:.45rem}.a-footer-bottom{display:flex;justify-content:space-between;gap:1rem;margin-top:2rem;padding-top:1rem;border-top:1px solid var(--a-line);color:var(--a-subtle);font-size:.62rem}
          .a-maintenance,.a-error,.a-loading{min-height:100vh;display:grid;place-items:center;padding:2rem}.a-state-box{max-width:620px}.a-spinner{width:42px;height:42px;margin:0 0 1rem;border:1px solid var(--a-line);border-top-color:var(--a-primary);border-radius:50%;animation:aSpin .8s linear infinite}.a-toast{position:fixed;z-index:90;right:1rem;bottom:1rem;padding:.7rem 1rem;background:var(--a-ink);color:var(--a-bg);font-size:.75rem}.a-lightbox{position:fixed;inset:0;z-index:100;background:#000e;display:grid;place-items:center;padding:3rem}.a-lightbox-stage img{max-height:82vh;max-width:90vw}.a-lightbox-close{position:absolute;right:1rem;top:1rem;width:40px;height:40px;border:1px solid #fff6;background:#000;color:#fff}.a-reveal{opacity:0;transform:translateY(26px);transition:opacity .65s,transform .65s cubic-bezier(.2,.8,.2,1)}.a-reveal.is-in{opacity:1;transform:none}
          @keyframes aSpin{to{transform:rotate(360deg)}}
          @media(max-width:900px){
            :root{--a-header-h:64px;--a-bleed:1rem;--a-section:2.75rem}.a-nav{display:none;position:fixed;inset:var(--a-header-h) 0 0;padding:1rem;background:var(--a-bg);overflow:auto}.a-header.is-open .a-nav{display:block}.a-nav-item,.a-nav-link{display:block;width:100%}.a-nav-link{padding:.85rem 0;border-bottom:1px solid var(--a-line)}.a-nav-sub{position:static;display:block;visibility:visible;opacity:1;transform:none;border:0;box-shadow:none;background:transparent}.a-burger{display:block}.a-mode-toggle{display:none}
            .a-hero{min-height:auto;padding:2.3rem 0}.a-hero-grid,.a-page-head-grid,.a-detail-grid,.a-split,.a-form-shell{grid-template-columns:1fr}.a-split.reverse .a-split-copy{order:0}.a-hero h1{font-size:clamp(3.25rem,8vw,5.7rem)}.a-hero-media img{height:auto;aspect-ratio:4/3}.a-section-head{display:block}.a-section-head>*{margin-bottom:.65rem}.a-grid{grid-template-columns:1fr}.a-gallery figure,.a-gallery figure:nth-child(n){grid-column:span 12}.a-people{grid-template-columns:repeat(2,1fr)}.a-stats{grid-template-columns:repeat(2,1fr)}.a-stat{border-bottom:1px solid var(--a-line)}.a-testimonials,.a-contact-grid{grid-template-columns:1fr}.a-cta-band{grid-template-columns:1fr}.a-detail-body{grid-template-columns:1fr}.a-detail-aside{position:static}.a-footer-grid{grid-template-columns:1fr 1fr}.a-footer-grid>*:first-child{grid-column:1/-1}
          }
          @media(max-width:560px){.a-form-grid{grid-template-columns:1fr}.a-field.full{grid-column:auto}.a-people{grid-template-columns:1fr 1fr}.a-footer-grid{grid-template-columns:1fr}.a-footer-grid>*:first-child{grid-column:auto}.a-footer-bottom{display:block}}
          @media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.a-reveal{opacity:1;transform:none}.a-spinner{animation:none}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}
          
          /* SIGNAL GRID — condensed kinetic editorial */
          :root{
            --a-bg:#0b0b0c;--a-surface:#101011;--a-surface-2:#181819;--a-card:#0d0d0e;
            --a-ink:#f2efe7;--a-muted:#aaa7a0;--a-subtle:#77746f;--a-line:#f2efe729;
            --a-line-strong:#f2efe773;--a-primary:#ff2b1a;--a-primary-h:#d91e11;
            --a-on-primary:#fff;--a-secondary:#070708;--a-accent:#ff2b1a;--a-focus:#ff2b1a;
            --a-heading:"Arial Narrow","Roboto Condensed",Impact,sans-serif;--a-body:"Helvetica Neue",Arial,sans-serif;
            --a-maxw:1600px;--a-header-h:68px;--a-section:clamp(2.5rem,4vw,4.25rem)
          }
          body{
            background:
              linear-gradient(90deg,transparent calc(100% - 1px),#ffffff0e 0) 0 0/6.25vw 100%,
              var(--a-bg)
          }
          .a-wrap{padding-inline:clamp(1.1rem,1.7vw,1.75rem)}
          .a-header{background:#0b0b0cf2}.a-header-inner{border-inline:1px solid var(--a-line)}
          .a-brand{min-width:200px;padding-left:.8rem}.a-brand .a-wordmark{font-family:var(--a-heading);font-size:1.28rem;letter-spacing:-.02em;text-transform:uppercase}
          .a-brand .a-wordmark::first-letter{color:var(--a-primary)}
          .a-nav{height:100%;border-left:1px solid var(--a-line)}.a-nav-item{height:100%;display:grid;align-items:center;border-right:1px solid var(--a-line)}
          .a-nav-link{height:100%;padding-inline:1rem;text-transform:uppercase;letter-spacing:.08em;font-size:.66rem}
          .a-nav-link:hover,.a-nav-link.is-active{background:var(--a-primary);color:#fff}.a-nav-cta{background:transparent!important}
          .a-mode-toggle,.a-burger{border:0;border-left:1px solid var(--a-line);color: var(--a-accent);height:100%;width:52px}
          .a-eyebrow::before{content:"";width:8px;height:8px;background:var(--a-primary)}
          .a-hero{min-height:700px;max-height:850px;overflow:hidden;padding:1.4rem 0}
          .a-hero::before{content:"01";position:absolute;left:0;top:17%;padding:.45rem .55rem;border-block:1px solid var(--a-primary);color:var(--a-primary);font:700 .66rem/1 var(--a-body);z-index:3}
          .a-hero::after{
            content:"";position:absolute;right:-7%;top:4%;width:58%;height:88%;z-index:0;
            background:
              linear-gradient(135deg,transparent 0 13%,#ffffff15 13.2% 13.5%,transparent 13.7%),
              linear-gradient(151deg,transparent 0 30%,#d8d8d8 30.2% 36%,#262629 36.2% 48%,#fafafa 48.2% 53%,#5f6064 53.2% 63%,transparent 63.2%),
              linear-gradient(22deg,transparent 0 40%,#f2efe735 40.2% 40.4%,transparent 40.6%);
            clip-path:polygon(5% 5%,78% 0,100% 24%,72% 44%,97% 66%,63% 100%,34% 69%,0 83%,20% 46%,0 27%);
            filter:drop-shadow(0 35px 32px #000);transform:perspective(900px) rotateY(-7deg);
            animation:signalShard 10s ease-in-out infinite
          }
          .a-hero-grid{grid-template-columns:minmax(390px,.78fr) minmax(500px,1.22fr);gap:1.4rem}
          .a-hero-copy{align-self:center;padding:1rem 0 1rem 2.2rem;border-left:1px solid var(--a-line)}
          .a-hero h1{font-size:clamp(5rem,4.8vw,9.1rem);line-height:.77;letter-spacing:-.065em;max-width:6.3ch;text-transform:none}
          .a-hero h1::after{content:".";color:var(--a-primary)}
          .a-hero .a-lede{max-width:31ch;margin-top:.35rem;font-size:1.05rem}
          .a-hero-desc{max-width:36ch}.a-hero-media{z-index:2;align-self:stretch;min-height:590px;border-left:1px solid var(--a-line)}
          .a-hero-media img{height:100%;min-height:590px;filter:grayscale(1) contrast(1.2);mix-blend-mode:lighten;clip-path:polygon(7% 0,100% 0,100% 88%,90% 100%,0 100%,0 8%)}
          .a-hero-media::after{content:"OBJ_07 / MOTION SURFACE";position:absolute;right:1rem;bottom:1rem;color:var(--a-ink);font:600 .58rem/1.5 monospace;letter-spacing:.08em;white-space:pre}
          .a-hero-actions{margin-top:1rem}.a-btn{border:0;border-bottom:1px solid var(--a-line-strong);padding:.65rem .1rem;min-height:38px;margin-right:1rem}
          .a-btn-primary{background:transparent;color:var(--a-primary);border-color:var(--a-primary)}.a-btn-primary:hover{background:transparent;color:#fff}
          .a-stats{margin-inline:auto;max-width:calc(var(--a-maxw) - 2 * var(--a-bleed));border-top:1px solid var(--a-line)}
          .a-stat{display:grid;grid-template-columns:auto 1fr;align-items:end;gap:.6rem;padding:.85rem 1rem}.a-stat-value{font-size:2.7rem}.a-stat-label{margin:0 0 .3rem}
          .a-section{position:relative}.a-section::before{content:attr(data-index);position:absolute;left:1rem;top:1rem;color:var(--a-subtle);font:.6rem monospace}
          .a-section-head{grid-template-columns:150px minmax(0,760px);margin-bottom:1.4rem}.a-section-head h2{text-transform:uppercase;font-size:clamp(2.6rem,5vw,5.5rem);line-height:.84}
          .a-grid{grid-template-columns:repeat(var(--a-cols,3),1fr)}.a-card:nth-child(even){background:#f2efe7;color:#111}.a-card:nth-child(even) p,.a-card:nth-child(even) .a-card-meta{color:#555}
          .a-card-body{min-height:170px;padding:.85rem}.a-card h3{text-transform:uppercase;font-family:var(--a-heading);font-size:1.65rem}.a-card-media img{filter:grayscale(1) contrast(1.1)}.a-card:hover{z-index:2;outline:1px solid var(--a-primary);transform:none}.a-card:hover .a-card-media img{filter:grayscale(0)}
          .a-card::before{content:counter(signal-card,decimal-leading-zero);counter-increment:signal-card;position:absolute;z-index:2;left:.7rem;top:.55rem;color:var(--a-primary);font:700 .78rem monospace}.a-grid{counter-reset:signal-card}
          .a-gallery figure:nth-child(even){background:#f2efe7;color:#111}.a-gallery img{filter:grayscale(1)}.a-gallery figure:hover img{filter:grayscale(0)}
          .a-person img{filter:grayscale(1)}.a-person:hover img{filter:none}.a-quote-card blockquote{font-family:Georgia,serif;font-style:italic}.a-quote-card:nth-child(even){background:var(--a-primary);color:#fff}
          .a-cta-band{background:var(--a-primary);color:#fff;border:0;clip-path:polygon(0 0,97% 0,100% 28%,100% 100%,0 100%)}.a-cta-band .a-eyebrow,.a-cta-band p{color:#fff}.a-cta-band .a-btn-primary{color:#fff;border-color:#fff}
          .a-page-head h1,.a-detail-hero h1{text-transform:uppercase;line-height:.82}.a-page-banner img,.a-detail-hero img{filter:grayscale(1);clip-path:polygon(4% 0,100% 0,100% 91%,95% 100%,0 100%,0 7%)}
          .a-form{border-top:4px solid var(--a-primary)}.a-field input,.a-field select,.a-field textarea{border-width:0 0 1px;background:transparent;padding-left:0}
          .a-footer-grid{border-inline:1px solid var(--a-line);padding-inline:1rem}
          @keyframes signalShard{50%{transform:perspective(900px) rotateY(1deg) translateY(-10px)}}
          @media(max-width:900px){
            body{background-size:25vw 100%}.a-brand{padding-left:0;min-width:auto}.a-hero{max-height:none;padding:1.5rem 0}.a-hero::after{width:90%;height:45%;right:-30%;top:48%;opacity:.75}.a-hero-copy{padding-left:.85rem}.a-hero-grid{grid-template-columns:1fr}.a-hero h1{font-size:clamp(4.2rem,20vw,7rem);max-width:6ch}.a-hero-media{min-height:330px;margin-top:.5rem}.a-hero-media img{min-height:330px}.a-section-head{grid-template-columns:1fr}.a-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;background:transparent;border:0}.a-card{min-width:82vw;scroll-snap-align:start;border:1px solid var(--a-line)}
          }
          [hidden] {
            display: none !important;
          }
          </style>
          <style>html{scrollbar-width:none}::-webkit-scrollbar{display:none}</style>
          </head>
          <body>
          <div id="wons-site"><p><a class="a-skip" href="#main-content">Skip to content</a></p>
          <div id="wons-site" class="a-app">
          <div class="a-loading" role="status" data-region="loading" aria-live="polite">
          <div>
          <div class="a-spinner" aria-hidden="true">&nbsp;</div>
          <p class="a-lede">Loading the site&hellip;</p>
          </div>
          </div>
          <div hidden="" data-region="site">
          <div data-region="announce">&nbsp;</div>
          <header class="a-header" data-region="header">
          <div class="a-wrap a-header-inner">
          <div class="a-header-actions"><button class="a-mode-toggle" type="button" aria-label="Switch colour mode" data-action="mode"> <span aria-hidden="true" data-region="mode-icon">◐</span> </button> <button class="a-burger" type="button" aria-label="Open navigation" aria-expanded="false" data-action="menu"> </button></div>
          <nav class="a-nav" data-region="nav" aria-label="Primary navigation"></nav></div>
          </header><main id="main-content" tabindex="-1" data-region="main"></main><footer class="a-footer" data-region="footer"></footer></div>
          <div class="a-maintenance" hidden="" data-region="maintenance">
          <div class="a-state-box"><span class="a-eyebrow">Temporarily unavailable</span>
          <h1 data-region="maintenance-title">Site under maintenance</h1>
          <p class="a-lede" data-region="maintenance-message">&nbsp;</p>
          </div>
          </div>
          <div class="a-error" hidden="" data-region="error">
          <div class="a-state-box"><span class="a-eyebrow">Loading error</span>
          <h1>We could not load this site</h1>
          <p class="a-lede">Check that <code>site-data.json</code> is available, then refresh the page.</p>
          </div>
          </div>
          <div class="a-toast" role="status" hidden="" data-region="toast" aria-live="polite">&nbsp;</div>
          <div class="a-lightbox" role="dialog" hidden="" data-region="lightbox" aria-modal="true" aria-label="Image preview"><button class="a-lightbox-close" type="button" data-action="lightbox-close" aria-label="Close image preview">&times;</button>
          <div class="a-lightbox-stage" data-region="lightbox-stage">&nbsp;</div>
          </div>
          </div>
          <noscript>
              &amp;lt;div class="a-noscript"&amp;gt;This website needs JavaScript to render its JSON content.&amp;lt;/div&amp;gt;
            </noscript></div>
          <script>window.WONS_SITE={api:"",domain:"preview",mount:"#wons-site",basePath:"/theme-preview/signal-grid",payload:{"schema_version":"1.0.0","status":"published","site":{"id":"demo","name":"Norbu & Daughters","legal_name":"Norbu & Daughters Private Limited","tagline":"A shop, a kitchen and a room upstairs","description":"A sample site, filled in the way a real one is: a few pages, a short list of what is on offer, and the details people actually ring up to ask for.","site_url":"https://example.bt","status":"published","default_language":"en","languages":["en"],"timezone":"Asia/Thimphu"},"branding":{"logos":{},"favicon":null,"theme":{"default_mode":"light","allow_mode_switch":true,"palette_source":"theme","modes":{"light":{"colors":{}},"dark":{"colors":{}}}}},"seo":{"default_title":"Norbu & Daughters","default_description":"A shop, a kitchen and a room upstairs.","robots":{"index":false,"follow":false}},"contact":{"emails":[{"label":"Enquiries","value":"hello@example.bt"}],"phones":[{"label":"Shop","value":"+975 2 000 000"}],"addresses":[{"label":"Shop","line_1":"Norzin Lam","line_2":"Opposite the clock tower","city":"Thimphu","state":null,"postal_code":"11001","country":"Bhutan","coordinates":{"latitude":null,"longitude":null}}],"social_links":[{"platform":"instagram","label":"Instagram","url":"https://example.bt"}],"business_hours":[{"days":["monday","tuesday","wednesday","thursday","friday"],"opens":"09:00","closes":"18:00"}]},"navigation":{"primary":{"label":"Primary navigation","items":[{"id":"n-home","label":"Home","target":{"type":"page","ref":"home"},"children":[]},{"id":"n-about","label":"About","target":{"type":"page","ref":"about"},"children":[]},{"id":"n-services","label":"What we do","target":{"type":"collection","ref":"services"},"children":[]},{"id":"n-contact","label":"Contact","target":{"type":"page","ref":"contact"},"children":[]}]},"footer":{"label":"Explore","items":[{"id":"f-about","label":"About","target":{"type":"page","ref":"about"},"children":[]},{"id":"f-services","label":"What we do","target":{"type":"collection","ref":"services"},"children":[]},{"id":"f-contact","label":"Contact","target":{"type":"page","ref":"contact"},"children":[]}]},"utility":{"label":"Utility navigation","items":[]}},"global_regions":{"announcement":{"enabled":true,"sections":[{"id":"ann","type":"announcement","data":{"message":"Open through Losar — the kitchen closes at four.","link_label":"See the hours","target":{"type":"page","ref":"contact"}}}]},"header":{"sections":[{"id":"hdr","type":"site_header","data":{"navigation":"navigation:primary"}}]},"footer":{"sections":[{"id":"f-id","type":"site_identity","data":{"description":"A shop, a kitchen and a room upstairs. Thimphu, since 1998."}},{"id":"f-nav","type":"navigation","data":{"navigation":"navigation:footer"}},{"id":"f-contact","type":"contact","data":{"source":"site:contact"}},{"id":"f-legal","type":"legal","data":{"copyright":"© {year} Norbu & Daughters. All rights reserved.","links":[]}}]}},"pages":[{"id":"home","title":"Home","slug":"home","path":"/","status":"published","template":"standard","language":"en","sections":[{"id":"hero","type":"hero","variant":"split","layout":{"alignment":"left","width":"wide"},"heading":{"eyebrow":"Thimphu, since 1998","title":"A shop, a kitchen and a room upstairs","subtitle":"Open six days a week","description":"Everything on this page is ordinary content typed into a form — a heading, a few lines, a list and a photograph. The design around it is the theme."},"media":{"primary":"asset:hero"},"actions":[{"label":"See what we do","style":"primary","icon":"arrow-right","target":{"type":"collection","ref":"services"}},{"label":"Find us","style":"text","target":{"type":"page","ref":"contact"}}]},{"id":"intro","type":"split_content","heading":{"eyebrow":"About","title":"Three rooms and a courtyard"},"media":{"primary":"asset:room"},"content":[{"type":"paragraph","text":"The shop came first, then the kitchen behind it, then the room upstairs when there were more of us than chairs."},{"type":"paragraph","text":"We change the menu when the vegetables change, which is more often than a website usually allows."}],"actions":[{"label":"Read more","style":"secondary","target":{"type":"page","ref":"about"}}]},{"id":"svc","type":"collection","heading":{"eyebrow":"What we do","title":"Four things, done properly"},"source":{"collection":"services","limit":4,"sort":{"field":"order","direction":"ascending"}}},{"id":"stats","type":"stats","heading":{"title":"Twenty-eight years of it"},"data":{"items":[{"label":"Years open","value":"28"},{"label":"Seats","value":"34"},{"label":"Suppliers","value":"12"},{"label":"Days a week","value":"6"}]}},{"id":"quotes","type":"testimonials","heading":{"eyebrow":"In their words","title":"What people say"},"data":{"items":[{"quote":"The only place in town where the menu is right on a Tuesday.","name":"Dechen","detail":"Thimphu"},{"quote":"We booked the upstairs room for eleven people and nobody had to stand.","name":"Karma","detail":"Paro"}]}},{"id":"cta","type":"call_to_action","heading":{"title":"Come by, or ring first","description":"The kitchen stops at four on a Saturday."},"actions":[{"label":"Contact us","style":"primary","target":{"type":"page","ref":"contact"}}]}]},{"id":"about","title":"About","slug":"about","path":"/about","status":"published","template":"standard","language":"en","sections":[{"id":"ab-h","type":"page_header","heading":{"eyebrow":"About","title":"Three rooms and a courtyard"}},{"id":"ab-t","type":"rich_text","content":[{"type":"paragraph","text":"The shop came first, then the kitchen behind it, then the room upstairs."},{"type":"paragraph","text":"This page exists so the preview has somewhere to go when you press a link."}]}]},{"id":"contact","title":"Contact","slug":"contact","path":"/contact","status":"published","template":"standard","language":"en","sections":[{"id":"ct-h","type":"page_header","heading":{"eyebrow":"Contact","title":"Find us"}},{"id":"ct-c","type":"contact"}]}],"collections":{"services":{"id":"services","label":"What we do","singular_label":"Service","item_type":"service","description":"The four things worth listing.","routing":{"index_path":"/what-we-do","item_path":"/what-we-do/{slug}"},"items":[{"id":"s-shop","type":"service","title":"The shop","slug":"the-shop","status":"published","order":1,"summary":"Dry goods, tea and whatever came up from Phuentsholing this week.","body":[{"type":"paragraph","text":"Open from nine."}],"media":{"featured":"asset:shop","thumbnail":null,"gallery":[]},"actions":[],"taxonomies":{"categories":[],"tags":[]},"dates":{"published_at":"2026-01-04T09:00:00+06:00","updated_at":null},"attributes":{"position":"Front room"},"extensions":{}},{"id":"s-kitchen","type":"service","title":"The kitchen","slug":"the-kitchen","status":"published","order":2,"summary":"One menu, rewritten when the vegetables change.","body":[{"type":"paragraph","text":"Lunch and an early dinner."}],"media":{"featured":"asset:kitchen","thumbnail":null,"gallery":[]},"actions":[],"taxonomies":{"categories":[],"tags":[]},"dates":{"published_at":"2026-01-04T09:00:00+06:00","updated_at":null},"attributes":{"position":"Behind the shop"},"extensions":{}},{"id":"s-room","type":"service","title":"The room upstairs","slug":"the-room-upstairs","status":"published","order":3,"summary":"Fourteen seats, one long table, booked by the evening.","body":[{"type":"paragraph","text":"Ring ahead."}],"media":{"featured":"asset:room","thumbnail":null,"gallery":[]},"actions":[],"taxonomies":{"categories":[],"tags":[]},"dates":{"published_at":"2026-01-04T09:00:00+06:00","updated_at":null},"attributes":{"position":"First floor"},"extensions":{}},{"id":"s-orders","type":"service","title":"Standing orders","slug":"standing-orders","status":"published","order":4,"summary":"The same box, the same day, every week.","body":[{"type":"paragraph","text":"Set it once."}],"media":{"featured":"asset:shop","thumbnail":null,"gallery":[]},"actions":[],"taxonomies":{"categories":[],"tags":[]},"dates":{"published_at":"2026-01-04T09:00:00+06:00","updated_at":null},"attributes":{"position":"By arrangement"},"extensions":{}}]}},"taxonomies":{"categories":[],"tags":[]},"assets":{"hero":{"id":"hero","type":"image","src":"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20800%22%3E%3Crect%20width%3D%221200%22%20height%3D%22800%22%20fill%3D%22%23e7e5e1%22%2F%3E%3Ccircle%20cx%3D%22880%22%20cy%3D%22250%22%20r%3D%22230%22%20fill%3D%22%23cfccc6%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22470%22%20width%3D%22640%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23cfccc6%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22530%22%20width%3D%22420%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23cfccc6%22%20opacity%3D%22.6%22%2F%3E%3C%2Fsvg%3E","alt":"Placeholder photograph","title":null,"caption":null,"mime_type":"image/svg+xml","width":1200,"height":800,"filesize":null,"metadata":{"focal_point":{"x":50,"y":45}}},"room":{"id":"room","type":"image","src":"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20800%22%3E%3Crect%20width%3D%221200%22%20height%3D%22800%22%20fill%3D%22%23e3e4e2%22%2F%3E%3Ccircle%20cx%3D%22880%22%20cy%3D%22250%22%20r%3D%22230%22%20fill%3D%22%23c9ccc8%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22470%22%20width%3D%22640%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23c9ccc8%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22530%22%20width%3D%22420%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23c9ccc8%22%20opacity%3D%22.6%22%2F%3E%3C%2Fsvg%3E","alt":"Placeholder photograph","title":null,"caption":null,"mime_type":"image/svg+xml","width":1200,"height":800,"filesize":null,"metadata":{"focal_point":{"x":50,"y":50}}},"shop":{"id":"shop","type":"image","src":"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20800%22%3E%3Crect%20width%3D%221200%22%20height%3D%22800%22%20fill%3D%22%23e8e6e2%22%2F%3E%3Ccircle%20cx%3D%22880%22%20cy%3D%22250%22%20r%3D%22230%22%20fill%3D%22%23d2cfc9%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22470%22%20width%3D%22640%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23d2cfc9%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22530%22%20width%3D%22420%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23d2cfc9%22%20opacity%3D%22.6%22%2F%3E%3C%2Fsvg%3E","alt":"Placeholder photograph","title":null,"caption":null,"mime_type":"image/svg+xml","width":1200,"height":800,"filesize":null,"metadata":{"focal_point":{"x":50,"y":50}}},"kitchen":{"id":"kitchen","type":"image","src":"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20800%22%3E%3Crect%20width%3D%221200%22%20height%3D%22800%22%20fill%3D%22%23e5e6e4%22%2F%3E%3Ccircle%20cx%3D%22880%22%20cy%3D%22250%22%20r%3D%22230%22%20fill%3D%22%23cbcec9%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22470%22%20width%3D%22640%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23cbcec9%22%2F%3E%3Crect%20x%3D%2290%22%20y%3D%22530%22%20width%3D%22420%22%20height%3D%2226%22%20rx%3D%2213%22%20fill%3D%22%23cbcec9%22%20opacity%3D%22.6%22%2F%3E%3C%2Fsvg%3E","alt":"Placeholder photograph","title":null,"caption":null,"mime_type":"image/svg+xml","width":1200,"height":800,"filesize":null,"metadata":{"focal_point":{"x":50,"y":50}}}},"forms":{},"redirects":[],"extensions":{},"generated_at":"2026-08-10T07:31:45.528Z"}};</script>
          <script>
          /* Aster — data-driven static site renderer. No dependencies, no build step. */
          (function () {
            "use strict";
          
            var CONFIG = window.WONS_SITE || {};
            var root = document.querySelector(CONFIG.mount || "#wons-site");
            if (!root) return;
          
            var DATA = null;
            var CURRENT_MODE = "light";
            var BASE = String(CONFIG.basePath || "").replace(/\/+$/, "");
            var toastTimer = null;
          
            function el(name) { return root.querySelector('[data-region="' + name + '"]'); }
            function show(node, visible) { if (node) node.hidden = !visible; }
            function html(node, markup) { if (node) node.innerHTML = markup; }
            function esc(value) {
              return String(value == null ? "" : value).replace(/[&<>"']/g, function (char) {
                return { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }[char];
              });
            }
            function textWithBreaks(value) { return esc(value).replace(/\n/g, "<br>"); }
            function get(path, fallback) {
              var current = DATA;
              String(path || "").split(".").forEach(function (part) {
                if (current != null) current = current[part];
              });
              return current == null ? fallback : current;
            }
            function normalizePath(path) {
              var value = String(path || "/").split("?")[0].split("#")[0];
              if (BASE && value.indexOf(BASE) === 0) value = value.slice(BASE.length) || "/";
              value = value.replace(/\/index\.(html?|php)$/i, "") || "/";
              if (value.charAt(0) !== "/") value = "/" + value;
              value = value.replace(/\/{2,}/g, "/").replace(/\/+$/, "") || "/";
              return value;
            }
            function toHref(path) {
              var value = String(path || "/");
              if (value.charAt(0) !== "/") value = "/" + value;
              return (BASE || "") + value;
            }
            function currentPath() { return normalizePath(location.pathname); }
            function storageGet(key) { try { return window.localStorage ? window.localStorage.getItem(key) : null; } catch (error) { return null; } }
            function storageSet(key, value) { try { if (window.localStorage) window.localStorage.setItem(key, value); } catch (error) { /* storage can be blocked */ } }
          
            function asset(ref) {
              if (!ref) return null;
              if (typeof ref === "object" && ref.src) return ref;
              if (typeof ref !== "string") return null;
              if (ref.indexOf("asset:") === 0) return (DATA.assets || {})[ref.slice(6)] || null;
              if (/^(https?:)?\/\//.test(ref) || ref.indexOf("data:") === 0 || ref.indexOf("/") === 0 || ref.indexOf("assets/") === 0) {
                return { src: ref, alt: "" };
              }
              return null;
            }
            function assetImg(ref, alt, className, eager) {
              var found = asset(ref);
              if (!found || !found.src) return "";
              return '<img src="' + esc(found.src) + '" alt="' + esc(alt || found.alt || "") + '"' +
                (className ? ' class="' + esc(className) + '"' : "") +
                (found.width ? ' width="' + esc(found.width) + '"' : "") +
                (found.height ? ' height="' + esc(found.height) + '"' : "") +
                (eager ? ' loading="eager" fetchpriority="high" decoding="async"' : ' loading="lazy" decoding="async"') + ">";
            }
          
            function pageById(id) {
              return (DATA.pages || []).filter(function (page) { return page.id === id; })[0] || null;
            }
            function pageByPath(path) {
              var clean = normalizePath(path);
              return (DATA.pages || []).filter(function (page) {
                return page.status !== "draft" && normalizePath(page.path || "/") === clean;
              })[0] || null;
            }
            function collectionById(id) { return (DATA.collections || {})[id] || null; }
            function collectionItem(collection, ref) {
              if (!collection) return null;
              return (collection.items || []).filter(function (item) {
                return item.id === ref || item.slug === ref;
              })[0] || null;
            }
            function publishedItems(collection, limit, sort) {
              var items = ((collection && collection.items) || []).filter(function (item) {
                return item.status !== "draft" && item.status !== "archived";
              }).slice();
              var field = (sort && sort.field) || "order";
              var descending = sort && sort.direction === "descending";
              function fieldValue(item, path) {
                var value = item;
                String(path).split(".").forEach(function (part) { if (value != null) value = value[part]; });
                return value;
              }
              items.sort(function (left, right) {
                var a = fieldValue(left, field), b = fieldValue(right, field);
                if (a == null && b == null) return 0;
                if (a == null) return 1;
                if (b == null) return -1;
                if (typeof a === "number" || typeof b === "number") return (descending ? -1 : 1) * (Number(a) - Number(b));
                return (descending ? -1 : 1) * String(a).localeCompare(String(b));
              });
              return limit ? items.slice(0, limit) : items;
            }
            function collectionFromSource(source) {
              var key = null;
              if (typeof source === "string") key = source.replace(/^collection:/, "");
              else if (source) key = source.collection || source.ref;
              return key ? collectionById(key) : null;
            }
          
            function patternMatch(pattern, path) {
              if (!pattern || pattern.indexOf("{slug}") < 0) return null;
              var escaped = pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace("\\{slug\\}", "([^/]+)");
              var match = normalizePath(path).match(new RegExp("^" + escaped.replace(/\/$/, "") + "$"));
              return match ? decodeURIComponent(match[1]) : null;
            }
            function resolveRoute(path) {
              var clean = normalizePath(path);
              var redirect = (DATA.redirects || []).filter(function (rule) { return normalizePath(rule.from) === clean; })[0];
              if (redirect) return { kind: "redirect", path: normalizePath(redirect.to) };
          
              var page = pageByPath(clean);
              if (page) return { kind: "page", page: page, path: clean };
          
              var collections = DATA.collections || {};
              var keys = Object.keys(collections);
              for (var i = 0; i < keys.length; i += 1) {
                var collection = collections[keys[i]];
                var routing = collection.routing || {};
                if (routing.index_path && normalizePath(routing.index_path) === clean) {
                  return { kind: "collection", collection: collection, path: clean };
                }
                var slug = patternMatch(routing.item_path, clean);
                if (slug) {
                  var item = collectionItem(collection, slug);
                  if (item && item.status !== "draft" && item.status !== "archived") {
                    return { kind: "item", collection: collection, item: item, path: clean };
                  }
                }
              }
              return { kind: "not-found", path: clean };
            }
          
            function linkFor(target) {
              if (!target) return { href: "#", external: false };
              if (target.type === "url") return { href: target.url || "#", external: !!target.new_window };
              if (target.type === "email") return { href: "mailto:" + (target.value || target.email || ""), external: true };
              if (target.type === "phone") return { href: "tel:" + (target.value || target.phone || ""), external: true };
              if (target.type === "page") {
                var page = pageById(target.ref);
                return { href: toHref(page ? page.path : "/"), external: false };
              }
              if (target.type === "collection") {
                var collection = collectionById(target.ref);
                return { href: toHref(collection && collection.routing ? collection.routing.index_path : "/"), external: false };
              }
              if (target.type === "collection_item") {
                var parent = collectionById(target.collection);
                var item = collectionItem(parent, target.ref);
                var pattern = parent && parent.routing && parent.routing.item_path;
                return { href: toHref(pattern && item ? pattern.replace("{slug}", item.slug || item.id) : "/"), external: false };
              }
              return { href: target.url || "#", external: false };
            }
          
            var ICONS = {
              "arrow-right": "M4 12h14M13 6l6 6-6 6",
              "chevron-right": "M9 5l7 7-7 7",
              "phone": "M6 3h3l2 5-2.5 1.5a11 11 0 0 0 5 5L15 12l5 2v3a2 2 0 0 1-2.2 2A16 16 0 0 1 4 5.2 2 2 0 0 1 6 3z",
              "mail": "M3 6h18v12H3zM3 7l9 6 9-6",
              "map-pin": "M12 21s7-6.3 7-11a7 7 0 1 0-14 0c0 4.7 7 11 7 11z M12 12a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z",
              "clock": "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18z M12 7v5l3 2",
              "download": "M12 3v12M7 11l5 5 5-5M4 20h16",
              "external": "M14 4h6v6M20 4l-9 9M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5",
              "check": "M4 12.5l5 5L20 6",
              "plus": "M12 5v14M5 12h14",
              "plan": "M4 5h16v14H4zM9 5v14M4 11h5M14 5v7h6",
              "craft": "M4 20l5-5m2-2 7-7 2 2-7 7m-3-1-3-3 3-3 3 3z",
              "house": "M3 11l9-8 9 8v10h-6v-7H9v7H3z"
            };
            function iconSvg(name, size) {
              var path = ICONS[String(name || "").toLowerCase()];
              if (!path) return "";
              size = size || 16;
              return '<svg class="a-icon" viewBox="0 0 24 24" width="' + size + '" height="' + size + '" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="' + path + '"/></svg>';
            }
            function anchor(label, target, className, icon) {
              var link = linkFor(target);
              return '<a href="' + esc(link.href) + '"' + (className ? ' class="' + esc(className) + '"' : "") +
                (link.external ? ' target="_blank" rel="noopener"' : "") + ">" + esc(label) + iconSvg(icon) + "</a>";
            }
            function actionClass(action, index) {
              if (action.style === "text") return "a-btn a-btn-text";
              if (action.style === "secondary" || index > 0) return "a-btn a-btn-secondary";
              return "a-btn a-btn-primary";
            }
            function actionRow(actions, className) {
              if (!actions || !actions.length) return "";
              return '<div class="' + (className || "a-hero-actions") + '">' + actions.map(function (action, index) {
                return anchor(action.label, action.target, actionClass(action, index), action.icon);
              }).join("") + "</div>";
            }
          
            function formatDate(value) {
              if (!value) return "";
              var date = new Date(value);
              if (isNaN(date.getTime())) return String(value);
              try { return new Intl.DateTimeFormat("en-GB", { day: "numeric", month: "long", year: "numeric" }).format(date); }
              catch (error) { return date.toDateString(); }
            }
            function contactValue(entry) { return entry ? String(entry.value || entry.address || entry.number || "") : ""; }
            function addressLine(entry) {
              if (!entry) return "";
              return [entry.line_1 || entry.street, entry.line_2, entry.city, entry.state, entry.postal_code, entry.country].filter(Boolean).join(", ");
            }
            function hoursDays(entry) {
              var days = entry && entry.days;
              if (!Array.isArray(days) || !days.length) return entry ? (entry.day || entry.label || "") : "";
              var short = days.map(function (day) { return day.charAt(0).toUpperCase() + day.slice(1, 3); });
              return days.length > 2 ? short[0] + "–" + short[short.length - 1] : short.join(", ");
            }
            function columnsFor(count) {
              if (count <= 1) return 1;
              if (count === 2) return 2;
              if (count === 4) return 4;
              return 3;
            }
          
            function applyBranding(mode) {
              var branding = DATA.branding || {};
              var theme = branding.theme || {};
              var available = theme.modes || {};
              var preferred = mode || storageGet((get("site.id", "site")) + ":mode") || theme.default_mode || "light";
              if (preferred === "system") preferred = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
              if (!available[preferred]) preferred = available.light ? "light" : Object.keys(available)[0] || "light";
              CURRENT_MODE = preferred;
          
              var palette = (available[preferred] || {}).colors || {};
              var brand = branding.brand_colors || {};
              var map = {
                "--a-bg": palette.background,
                "--a-surface": palette.surface,
                "--a-surface-2": palette.surface_alt,
                "--a-card": palette.surface_elevated,
                "--a-ink": palette.text,
                "--a-muted": palette.text_muted,
                "--a-subtle": palette.text_subtle,
                "--a-line": palette.border,
                "--a-line-strong": palette.border_strong,
                "--a-primary": palette.primary || brand.primary,
                "--a-primary-h": palette.primary_hover || brand.primary,
                "--a-on-primary": palette.primary_contrast,
                "--a-secondary": palette.secondary || brand.secondary,
                "--a-accent": palette.accent || brand.accent,
                "--a-focus": palette.focus,
                "--a-overlay": palette.overlay
              };
              Object.keys(map).forEach(function (name) { if (map[name]) document.documentElement.style.setProperty(name, map[name]); });
          
              var fonts = branding.fonts || {};
              if (fonts.heading) document.documentElement.style.setProperty("--a-heading", fonts.heading);
              if (fonts.body) document.documentElement.style.setProperty("--a-body", fonts.body);
              var radii = theme.radii || {};
              if (radii.small) document.documentElement.style.setProperty("--a-radius-sm", radii.small);
              if (radii.medium) document.documentElement.style.setProperty("--a-radius", radii.medium);
              if (radii.large) document.documentElement.style.setProperty("--a-radius-lg", radii.large);
          
              document.documentElement.dataset.theme = preferred;
              var metaTheme = document.querySelector('meta[name="theme-color"]');
              if (metaTheme && palette.background) metaTheme.setAttribute("content", palette.background);
              var icon = el("mode-icon");
              if (icon) icon.textContent = preferred === "dark" ? "☀" : "◐";
          
              var favicon = asset(branding.favicon);
              if (favicon) {
                var link = document.querySelector('link[rel="icon"]') || document.createElement("link");
                link.rel = "icon";
                link.href = favicon.src;
                document.head.appendChild(link);
              }
            }
          
            function applySeo(title, description, imageRef) {
              var seo = DATA.seo || {};
              var rawTitle = title || seo.default_title || get("site.name", "");
              var template = seo.title_template || "{{title}}";
              document.title = template.indexOf("{{title}}") >= 0 ? template.replace("{{title}}", rawTitle) :
                (template.indexOf("%s") >= 0 ? template.replace("%s", rawTitle) : rawTitle);
          
              function setMeta(name, content, property) {
                if (!content) return;
                var selector = property ? 'meta[property="' + name + '"]' : 'meta[name="' + name + '"]';
                var node = document.querySelector(selector) || document.createElement("meta");
                node.setAttribute(property ? "property" : "name", name);
                node.setAttribute("content", content);
                if (!node.parentNode) document.head.appendChild(node);
              }
              var desc = description || seo.default_description || get("site.description", "");
              setMeta("description", desc, false);
              setMeta("og:title", document.title, true);
              setMeta("og:description", desc, true);
              var image = asset(imageRef || seo.default_image);
              if (image) setMeta("og:image", image.src, true);
            }
          
            function navIsActive(target, path) {
              var href = normalizePath(linkFor(target).href);
              if (href === "/") return path === "/";
              return path === href || path.indexOf(href + "/") === 0;
            }
            function renderNavItem(item, path) {
              var link = linkFor(item.target);
              var active = navIsActive(item.target, path);
              var children = item.children || [];
              return '<div class="a-nav-item">' +
                '<a class="a-nav-link' + (active ? " is-active" : "") + '" href="' + esc(link.href) + '"' +
                (link.external ? ' target="_blank" rel="noopener"' : "") + ' aria-current="' + (active ? "page" : "false") + '">' +
                esc(item.label) + (children.length ? '<span class="a-nav-caret" aria-hidden="true">▾</span>' : "") + "</a>" +
                (children.length ? '<div class="a-nav-sub">' + children.map(function (child) {
                  var childLink = linkFor(child.target);
                  var childActive = navIsActive(child.target, path);
                  return '<a href="' + esc(childLink.href) + '" class="' + (childActive ? "is-active" : "") + '"' +
                    (childLink.external ? ' target="_blank" rel="noopener"' : "") + ">" + esc(child.label) + "</a>";
                }).join("") + "</div>" : "") + "</div>";
            }
            function renderHeader() {
              var branding = DATA.branding || {};
              var logo = asset((branding.logos || {}).primary);
              html(el("brand"), logo ? assetImg((branding.logos || {}).primary, get("site.name", "")) : '<span class="a-wordmark">' + esc(get("site.name", "")) + "</span>");
          
              var path = currentPath();
              var primary = get("navigation.primary.items", []);
              var utility = get("navigation.utility.items", []);
              var markup = primary.map(function (item) { return renderNavItem(item, path); }).join("");
              utility.forEach(function (item) {
                var link = linkFor(item.target);
                markup += '<a class="a-nav-link a-nav-cta' + (navIsActive(item.target, path) ? " is-active" : "") + '" href="' + esc(link.href) + '">' + esc(item.label) + "</a>";
              });
              html(el("nav"), markup);
          
              var allowMode = !!get("branding.theme.allow_mode_switch", false);
              var modeButton = root.querySelector('[data-action="mode"]');
              if (modeButton) modeButton.hidden = !allowMode;
          
              var announcement = get("global_regions.announcement", null);
              if (announcement && announcement.enabled && (announcement.sections || []).length) {
                var first = announcement.sections[0];
                var data = first.data || {};
                var heading = first.heading || {};
                var message = data.message || data.text || heading.title || heading.subtitle || "";
                var linkMarkup = data.target && data.link_label ? anchor(data.link_label, data.target) : "";
                html(el("announce"), '<div class="a-announce"><span>' + esc(message) + "</span>" + linkMarkup + "</div>");
              } else html(el("announce"), "");
            }
          
            var SOCIAL_PATHS = {
              instagram: "M12 2.2c3.2 0 3.6 0 4.9.07 1.2.05 1.8.25 2.2.42.6.22 1 .48 1.4.9.4.4.7.8.9 1.4.2.4.4 1 .4 2.2.1 1.3.1 1.7.1 4.9s0 3.6-.1 4.9c0 1.2-.2 1.8-.4 2.2-.2.6-.5 1-.9 1.4-.4.4-.8.7-1.4.9-.4.2-1 .4-2.2.4-1.3.1-1.7.1-4.9.1s-3.6 0-4.9-.1c-1.2 0-1.8-.2-2.2-.4-.6-.2-1-.5-1.4-.9-.4-.4-.7-.8-.9-1.4-.2-.4-.4-1-.4-2.2C2.2 15.6 2.2 15.2 2.2 12s0-3.6.1-4.9c0-1.2.2-1.8.4-2.2.2-.6.5-1 .9-1.4.4-.4.8-.7 1.4-.9.4-.2 1-.4 2.2-.4C8.4 2.2 8.8 2.2 12 2.2zm0 3.2A6.6 6.6 0 1 0 18.6 12 6.6 6.6 0 0 0 12 5.4zm0 10.9A4.3 4.3 0 1 1 16.3 12 4.3 4.3 0 0 1 12 16.3zm6.9-11.1a1.5 1.5 0 1 1-1.5-1.5 1.5 1.5 0 0 1 1.5 1.5z",
              facebook: "M13.5 21v-8.2h2.8l.4-3.2h-3.2V7.5c0-.9.3-1.6 1.6-1.6h1.7V3.1A22 22 0 0 0 14.3 3c-2.5 0-4.2 1.5-4.2 4.3v2.3H7.3v3.2h2.8V21h3.4z",
              linkedin: "M6.9 8.4v11.4H3.1V8.4h3.8zM5 2.9a2.2 2.2 0 1 1 0 4.4 2.2 2.2 0 0 1 0-4.4zM9.3 8.4H13v1.6a4 4 0 0 1 3.6-2c2.6 0 4.4 1.7 4.4 5.3v6.5h-3.8v-5.9c0-1.6-.6-2.6-2-2.6a2.1 2.1 0 0 0-2 1.5 2.7 2.7 0 0 0-.1 1v6h-3.8V8.4z"
            };
            function socialIcon(platform) {
              var path = SOCIAL_PATHS[String(platform || "").toLowerCase()] || "M10.6 13.4a4 4 0 0 0 5.7 0l2.8-2.8a4 4 0 0 0-5.7-5.7l-1.4 1.4 1.4 1.4 1.4-1.4a2 2 0 0 1 2.9 2.9l-2.9 2.8a2 2 0 0 1-2.8 0zM13.4 10.6a4 4 0 0 0-5.7 0l-2.8 2.8a4 4 0 0 0 5.7 5.7l1.4-1.4-1.4-1.4-1.4 1.4a2 2 0 0 1-2.9-2.9l2.9-2.8a2 2 0 0 1 2.8 0z";
              return '<svg viewBox="0 0 24 24" width="17" height="17" fill="currentColor" aria-hidden="true"><path d="' + path + '"/></svg>';
            }
            function renderFooter() {
              var sections = get("global_regions.footer.sections", []);
              var contentSections = sections.filter(function (section) { return section.type !== "legal"; });
              var columns = contentSections.map(function (section) {
                var data = section.data || {};
                if (section.type === "site_identity") {
                  var logoRef = data.logo || get("branding.logos.light", get("branding.logos.primary", ""));
                  return '<div>' + (asset(logoRef) ? assetImg(logoRef, get("site.name", ""), "a-footer-logo") : "<h3>" + esc(get("site.name", "")) + "</h3>") +
                    "<p>" + esc(data.description || get("site.description", "")) + "</p></div>";
                }
                if (section.type === "navigation") {
                  var key = String(data.navigation || "").replace("navigation:", "");
                  var group = (DATA.navigation || {})[key] || {};
                  if (!(group.items || []).length) return "";
                  return '<div><h4>' + esc(group.label || "Explore") + "</h4>" + group.items.map(function (item) {
                    return anchor(item.label, item.target);
                  }).join("") + "</div>";
                }
                if (section.type === "contact") {
                  var email = get("contact.emails.0", null), phone = get("contact.phones.0", null), address = get("contact.addresses.0", null);
                  return '<div><h4>Contact</h4>' +
                    (email ? '<a href="mailto:' + esc(contactValue(email)) + '">' + esc(contactValue(email)) + "</a>" : "") +
                    (phone ? '<a href="tel:' + esc(contactValue(phone)) + '">' + esc(contactValue(phone)) + "</a>" : "") +
                    (address ? "<p>" + esc(addressLine(address)) + "</p>" : "") + "</div>";
                }
                return "";
              }).join("");
          
              var legal = sections.filter(function (section) { return section.type === "legal"; })[0];
              var copyright = legal && legal.data && legal.data.copyright ? legal.data.copyright : "© {year} " + (get("site.legal_name", "") || get("site.name", ""));
              copyright = copyright.replace("{year}", new Date().getFullYear());
              var social = get("contact.social_links", []).map(function (link) {
                return '<a href="' + esc(link.url) + '" target="_blank" rel="noopener" aria-label="' + esc(link.label || link.platform || "Social link") + '">' + socialIcon(link.platform) + "</a>";
              }).join("");
          
              html(el("footer"), '<div class="a-wrap"><div class="a-footer-grid" style="--a-fcols:' + Math.max(1, contentSections.length - 1) + '">' + columns +
                '</div><div class="a-footer-bottom"><span>' + esc(copyright) + '</span><div class="a-social">' + social + "</div></div></div>");
            }
          
            function sectionHeading(heading, level) {
              heading = heading || {};
              level = level || "h2";
              if (!heading.title && !heading.eyebrow && !heading.subtitle) return "";
              return '<div class="a-section-head">' +
                (heading.eyebrow ? '<span class="a-eyebrow">' + esc(heading.eyebrow) + "</span>" : "") +
                (heading.title ? "<" + level + ">" + esc(heading.title) + "</" + level + ">" : "") +
                (heading.subtitle ? '<p class="a-lede">' + esc(heading.subtitle) + "</p>" : "") + "</div>";
            }
            function richContent(content) {
              if (!content) return "";
              if (typeof content === "string") return "<p>" + textWithBreaks(content) + "</p>";
              if (!Array.isArray(content)) return content.text ? "<p>" + textWithBreaks(content.text) + "</p>" : "";
              return content.map(function (node) {
                if (!node) return "";
                if (node.type === "paragraph") return "<p>" + textWithBreaks(node.text) + "</p>";
                if (node.type === "heading") {
                  var level = Math.min(Math.max(parseInt(node.level, 10) || 3, 2), 4);
                  return "<h" + level + ">" + esc(node.text) + "</h" + level + ">";
                }
                if (node.type === "list") {
                  var tag = node.ordered ? "ol" : "ul";
                  return "<" + tag + ">" + (node.items || []).map(function (item) {
                    return "<li>" + esc(typeof item === "string" ? item : item.text) + "</li>";
                  }).join("") + "</" + tag + ">";
                }
                if (node.type === "quote") return "<blockquote>" + esc(node.text) + "</blockquote>";
                if (node.type === "image") return assetImg(node.asset || node.src, node.alt || "");
                if (node.type === "divider") return "<hr>";
                return node.text ? "<p>" + esc(node.text) + "</p>" : "";
              }).join("");
            }
          
            function cardMeta(item) {
              var attrs = item.attributes || {};
              var dates = item.dates || {};
              if (item.type === "product") return [attrs.edition, attrs.availability && String(attrs.availability).replace(/_/g, " ")].filter(Boolean);
              if (item.type === "article") return [formatDate(dates.published_at || dates.published), attrs.reading_time].filter(Boolean);
              if (item.type === "project") return [attrs.place, attrs.year, attrs.stage].filter(Boolean);
              if (item.type === "service") return [attrs.lead_time].filter(Boolean);
              if (item.type === "person") return [attrs.position].filter(Boolean);
              return [];
            }
            function itemHref(collection, item) {
              var pattern = collection && collection.routing && collection.routing.item_path;
              return toHref(pattern ? pattern.replace("{slug}", item.slug || item.id) : "/");
            }
            function itemLabel(item) {
              if (item.type === "product") return "View object";
              if (item.type === "project") return "View project";
              if (item.type === "service") return "Explore service";
              if (item.type === "person") return "Meet " + String(item.title || "").split(" ")[0];
              return "Read article";
            }
            function renderCard(collection, item) {
              var image = item.media && (item.media.featured || item.media.image || item.media.thumbnail);
              var attrs = item.attributes || {};
              var meta = cardMeta(item);
              return '<article class="a-card' + (image ? "" : " no-media") + '">' +
                (image ? '<a class="a-card-media" href="' + esc(itemHref(collection, item)) + '">' + assetImg(image, item.title) + "</a>" : "") +
                '<div class="a-card-body">' +
                (!image && attrs.icon ? '<div class="a-card-icon">' + iconSvg(attrs.icon, 21) + "</div>" : "") +
                (meta.length ? '<div class="a-card-meta">' + meta.map(function (value) { return "<span>" + esc(value) + "</span>"; }).join("") + "</div>" : "") +
                "<h3>" + esc(item.title || "") + "</h3>" +
                (item.summary ? "<p>" + esc(item.summary) + "</p>" : "") +
                (attrs.price_display ? '<div class="a-card-price">' + esc(attrs.price_display) + "</div>" : "") +
                '<a class="a-more" href="' + esc(itemHref(collection, item)) + '">' + esc(itemLabel(item)) + iconSvg("arrow-right") + "</a>" +
                "</div></article>";
            }
          
            var RENDERERS = {
              hero: function (section) {
                var heading = section.heading || {}, media = section.media || {};
                var imageRef = media.primary || media.asset || media.image || media.background;
                return '<section class="a-hero"><div class="a-wrap"><div class="a-hero-grid' + (asset(imageRef) ? "" : " a-hero-single") + '">' +
                  '<div class="a-hero-copy">' +
                  (heading.eyebrow ? '<span class="a-eyebrow">' + esc(heading.eyebrow) + "</span>" : "") +
                  "<h1>" + esc(heading.title || get("site.name", "")) + "</h1>" +
                  (heading.subtitle ? '<p class="a-lede">' + esc(heading.subtitle) + "</p>" : "") +
                  (heading.description ? '<p class="a-hero-desc">' + esc(heading.description) + "</p>" : "") +
                  actionRow(section.actions) + "</div>" +
                  (asset(imageRef) ? '<div class="a-hero-media">' + assetImg(imageRef, heading.title, "", true) + "</div>" : "") +
                  "</div></div></section>";
              },
          
              page_header: function (section) {
                var heading = section.heading || {}, media = section.media || {};
                var imageRef = media.primary || media.asset || media.image || media.background;
                return '<section class="a-page-head"><div class="a-wrap"><div class="a-page-head-grid' + (asset(imageRef) ? "" : " a-hero-single") + '"><div>' +
                  (heading.eyebrow ? '<span class="a-eyebrow">' + esc(heading.eyebrow) + "</span>" : "") +
                  "<h1>" + esc(heading.title || "") + "</h1>" +
                  (heading.subtitle ? '<p class="a-lede">' + esc(heading.subtitle) + "</p>" : "") +
                  "</div>" + (asset(imageRef) ? '<div class="a-page-banner">' + assetImg(imageRef, heading.title, "", true) + "</div>" : "") +
                  "</div></div></section>";
              },
          
              rich_text: function (section) {
                return '<section class="a-section"><div class="a-wrap">' + sectionHeading(section.heading) +
                  '<div class="a-rich">' + richContent(section.content) + "</div>" +
                  (section.actions && section.actions.length ? actionRow(section.actions, "a-hero-actions a-section-actions") : "") +
                  "</div></section>";
              },
          
              split_content: function (section, index) {
                var media = section.media || {}, imageRef = media.primary || media.asset || media.image || media.background;
                return '<section class="a-section' + (index % 2 ? " alt" : "") + '"><div class="a-wrap"><div class="a-split' + (section.variant === "reverse" ? " reverse" : "") + '">' +
                  '<div class="a-split-copy">' + sectionHeading(section.heading) + '<div class="a-rich">' + richContent(section.content) + "</div>" + actionRow(section.actions) + "</div>" +
                  (asset(imageRef) ? '<div class="a-split-media">' + assetImg(imageRef, (section.heading || {}).title) + "</div>" : "") +
                  "</div></div></section>";
              },
          
              stats: function (section) {
                var items = (section.data || {}).items || [];
                if (!items.length) return "";
                return '<section class="a-stats-section"><div class="a-wrap">' + sectionHeading(section.heading) +
                  '<div class="a-stats" style="--a-cols:' + columnsFor(items.length) + '">' + items.map(function (item) {
                    return '<div class="a-stat"><div class="a-stat-value">' + esc(item.value) + '</div><div class="a-stat-label">' + esc(item.label) + "</div></div>";
                  }).join("") + "</div></div></section>";
              },
          
              collection: function (section) {
                var collection = collectionFromSource(section.source);
                if (!collection) return "";
                var limit = section.source && section.source.limit;
                var items = publishedItems(collection, limit || 6, section.source && section.source.sort);
                if (!items.length) return "";
                return '<section class="a-section alt"><div class="a-wrap">' + sectionHeading(section.heading || { title: collection.label, subtitle: collection.description }) +
                  '<div class="a-grid" style="--a-cols:' + columnsFor(items.length) + '">' + items.map(function (item) { return renderCard(collection, item); }).join("") + "</div>" +
                  (section.actions && section.actions.length ? actionRow(section.actions, "a-hero-actions a-section-actions") : "") + "</div></section>";
              },
          
              gallery: function (section) {
                var collection = collectionFromSource(section.source);
                var items = publishedItems(collection, (section.source && section.source.limit) || 12);
                var allowLightbox = !section.data || section.data.allow_lightbox !== false;
                if (!items.length) return "";
                var figures = items.map(function (item) {
                  var ref = item.media && (item.media.featured || item.media.image);
                  var found = asset(ref);
                  if (!found) return "";
                  var attrs = item.attributes || {};
                  var meta = [attrs.place, attrs.year, attrs.stage].filter(Boolean).join(" · ");
                  var imageMarkup = assetImg(ref, item.title);
                  if (allowLightbox) imageMarkup = '<button type="button" class="a-gallery-button" data-lightbox="' + esc(found.src) + '" data-caption="' + esc(item.title || item.summary || "") + '">' + imageMarkup + "</button>";
                  else imageMarkup = '<a class="a-gallery-button" href="' + esc(itemHref(collection, item)) + '">' + imageMarkup + "</a>";
                  return "<figure>" + imageMarkup + "<figcaption>" +
                    (item.title ? '<div class="a-fig-title">' + esc(item.title) + "</div>" : "") +
                    (item.summary ? '<div class="a-fig-sub">' + esc(item.summary) + "</div>" : "") +
                    (meta ? '<div class="a-meta">' + esc(meta) + "</div>" : "") + "</figcaption></figure>";
                }).join("");
                return '<section class="a-section"><div class="a-wrap">' + sectionHeading(section.heading || { title: collection.label, subtitle: collection.description }) +
                  '<div class="a-gallery">' + figures + "</div>" +
                  (section.actions && section.actions.length ? actionRow(section.actions, "a-hero-actions a-section-actions") : "") + "</div></section>";
              },
          
              people: function (section) {
                var collection = collectionFromSource(section.source);
                var items = publishedItems(collection);
                if (!items.length) return "";
                return '<section class="a-section"><div class="a-wrap">' + sectionHeading(section.heading || { title: collection.label, subtitle: collection.description }) +
                  '<div class="a-people" style="--a-cols:' + columnsFor(items.length) + '">' + items.map(function (person) {
                    var role = (person.attributes || {}).position || person.summary || "";
                    return '<a class="a-person" href="' + esc(itemHref(collection, person)) + '"><div class="a-person-image">' +
                      assetImg(person.media && person.media.featured, person.title) + "</div><h3>" + esc(person.title) + '</h3><div class="role">' + esc(role) + "</div></a>";
                  }).join("") + "</div></div></section>";
              },
          
              testimonials: function (section) {
                var items = (section.data || {}).items || [];
                if (!items.length) return "";
                return '<section class="a-section alt"><div class="a-wrap">' + sectionHeading(section.heading) +
                  '<div class="a-testimonials" style="--a-cols:' + columnsFor(items.length) + '">' + items.map(function (item) {
                    return '<article class="a-quote-card"><div class="a-quote-mark">“</div><blockquote>' + esc(item.quote) + '</blockquote><div class="a-quote-name">' + esc(item.name || "") + '</div><div class="a-quote-detail">' + esc(item.detail || "") + "</div></article>";
                  }).join("") + "</div></div></section>";
              },
          
              call_to_action: function (section) {
                var heading = section.heading || {};
                return '<section class="a-section"><div class="a-wrap"><div class="a-cta-band"><div class="a-cta-band-copy">' +
                  (heading.eyebrow ? '<span class="a-eyebrow">' + esc(heading.eyebrow) + "</span>" : "") +
                  "<h2>" + esc(heading.title || "") + "</h2>" +
                  (heading.subtitle ? "<p>" + esc(heading.subtitle) + "</p>" : "") + "</div>" +
                  actionRow(section.actions) + "</div></div></section>";
              },
          
              contact: function (section) {
                var emails = get("contact.emails", []), phones = get("contact.phones", []), addresses = get("contact.addresses", []), hours = get("contact.business_hours", []);
                return '<section class="a-section alt"><div class="a-wrap">' + sectionHeading(section.heading || { title: "Contact" }) + '<div class="a-contact-grid">' +
                  '<article class="a-contact-card"><h3>Write or call</h3><dl>' +
                  emails.map(function (entry) { var value = contactValue(entry); return "<dt>" + esc(entry.label || "Email") + '</dt><dd><a href="mailto:' + esc(value) + '">' + esc(value) + "</a></dd>"; }).join("") +
                  phones.map(function (entry) { var value = contactValue(entry); return "<dt>" + esc(entry.label || "Phone") + '</dt><dd><a href="tel:' + esc(value) + '">' + esc(value) + "</a></dd>"; }).join("") + "</dl></article>" +
                  '<article class="a-contact-card"><h3>Visit</h3><dl>' + addresses.map(function (entry) { return "<dt>" + esc(entry.label || "Address") + "</dt><dd>" + esc(addressLine(entry)) + "</dd>"; }).join("") + "</dl></article>" +
                  '<article class="a-contact-card"><h3>Opening hours</h3><table class="a-hours">' + hours.map(function (entry) {
                    return "<tr><td>" + esc(hoursDays(entry)) + "</td><td>" + esc(entry.closed ? "Closed" : (entry.opens || "") + " – " + (entry.closes || "")) + "</td></tr>";
                  }).join("") + "</table></article></div></div></section>";
              },
          
              form: function (section) {
                var source = section.source || {};
                var form = (DATA.forms || {})[source.form || source.ref];
                if (!form) return "";
                var fields = (form.fields || []).map(function (field) {
                  var id = "field-" + field.id;
                  var full = field.type === "textarea" ? " full" : "";
                  var required = field.required ? " required" : "";
                  var requiredMark = field.required ? ' <span class="a-required" aria-hidden="true">*</span>' : "";
                  var control = "";
                  if (field.type === "textarea") {
                    control = '<textarea id="' + esc(id) + '" name="' + esc(field.id) + '" placeholder="' + esc(field.placeholder || "") + '"' + required + "></textarea>";
                  } else if (field.type === "select") {
                    control = '<select id="' + esc(id) + '" name="' + esc(field.id) + '"' + required + '><option value="">' + esc(field.placeholder || "Select") + "</option>" +
                      (field.options || []).map(function (option) { var value = typeof option === "string" ? option : option.value; var label = typeof option === "string" ? option : option.label; return '<option value="' + esc(value) + '">' + esc(label) + "</option>"; }).join("") + "</select>";
                  } else {
                    control = '<input id="' + esc(id) + '" name="' + esc(field.id) + '" type="' + esc(field.type || "text") + '" placeholder="' + esc(field.placeholder || "") + '"' + required + ">";
                  }
                  return '<div class="a-field' + full + '"><label for="' + esc(id) + '">' + esc(field.label || field.id) + requiredMark + "</label>" + control + "</div>";
                }).join("");
                return '<section class="a-section"><div class="a-wrap"><div class="a-form-shell"><div class="a-form-copy">' + sectionHeading(section.heading || { title: form.title, subtitle: form.description }) +
                  '</div><form class="a-form" data-form-id="' + esc(form.id) + '" action="' + esc(form.action || "") + '" method="' + esc(form.method || "POST") + '"><div class="a-form-grid">' + fields +
                  '</div><div class="a-form-footer"><p class="a-form-note">Fields marked * are required.</p><button class="a-btn a-btn-primary" type="submit">' + esc(form.submit_label || "Send") + iconSvg("arrow-right") +
                  '</button></div><div class="a-form-status" data-form-status hidden></div></form></div></div></section>';
              }
            };
          
            function renderPage(page) {
              var markup = (page.sections || []).filter(function (section) { return section.enabled !== false; }).map(function (section, index) {
                var renderer = RENDERERS[section.type];
                return renderer ? renderer(section, index) : "";
              }).join("");
              html(el("main"), markup || emptyState("This page has no published sections.", "/"));
              var seo = page.seo || {};
              applySeo(seo.title || page.title, seo.description, seo.image);
            }
          
            function collectionHeading(collection) {
              return '<section class="a-page-head"><div class="a-wrap"><div class="a-page-head-grid a-hero-single"><div>' +
                '<div class="a-breadcrumbs"><a href="' + esc(toHref("/")) + '">Home</a><span>/</span><span>' + esc(collection.label) + "</span></div>" +
                '<span class="a-eyebrow">Collection</span><h1>' + esc(collection.label || "") + "</h1>" +
                (collection.description ? '<p class="a-lede">' + esc(collection.description) + "</p>" : "") + "</div></div></div></section>";
            }
            function renderCollectionPage(collection) {
              var items = publishedItems(collection);
              html(el("main"), collectionHeading(collection) + '<section class="a-section alt"><div class="a-wrap"><div class="a-grid" style="--a-cols:' + columnsFor(items.length) + '">' +
                items.map(function (item) { return renderCard(collection, item); }).join("") + "</div></div></section>");
              applySeo(collection.label, collection.description, items[0] && items[0].media && items[0].media.featured);
            }
          
            function itemMeta(item) {
              var attrs = item.attributes || {}, dates = item.dates || {};
              if (item.type === "project") return [attrs.place, attrs.year, attrs.stage, attrs.area].filter(Boolean);
              if (item.type === "article") return [formatDate(dates.published_at || dates.published), attrs.reading_time].filter(Boolean);
              if (item.type === "service") return [attrs.lead_time, attrs.starting_from].filter(Boolean);
              if (item.type === "product") return [attrs.price_display, attrs.edition, attrs.availability && String(attrs.availability).replace(/_/g, " ")].filter(Boolean);
              if (item.type === "person") return [attrs.position, attrs.department].filter(Boolean);
              return [];
            }
            function itemSpecs(item) {
              var attrs = item.attributes || {}, specs = (attrs.specifications || []).slice();
              if (attrs.sku) specs.push({ label: "Reference", value: attrs.sku });
              if (attrs.lead_time) specs.push({ label: "Typical timeline", value: attrs.lead_time });
              if (attrs.starting_from) specs.push({ label: "Fee guide", value: attrs.starting_from });
              if (attrs.area) specs.push({ label: "Area", value: attrs.area });
              if (attrs.place) specs.push({ label: "Location", value: attrs.place });
              return specs;
            }
            function renderItemPage(collection, item) {
              var image = item.media && item.media.featured;
              var meta = itemMeta(item);
              var specs = itemSpecs(item);
              var gallery = item.media && item.media.gallery || [];
              var related = publishedItems(collection).filter(function (candidate) { return candidate.id !== item.id; }).slice(0, 3);
              var eyebrow = collection.singular_label || item.type || "Detail";
              var body = '<section class="a-detail-hero"><div class="a-wrap"><div class="a-detail-grid"><div>' +
                '<div class="a-breadcrumbs"><a href="' + esc(toHref("/")) + '">Home</a><span>/</span><a href="' + esc(toHref(collection.routing && collection.routing.index_path || "/")) + '">' + esc(collection.label) + "</a><span>/</span><span>" + esc(item.title) + "</span></div>" +
                '<span class="a-eyebrow">' + esc(eyebrow) + "</span><h1>" + esc(item.title || "") + "</h1>" +
                (item.summary ? '<p class="a-lede">' + esc(item.summary) + "</p>" : "") +
                (meta.length ? '<div class="a-detail-meta">' + meta.map(function (value) { return "<span>" + esc(value) + "</span>"; }).join("") + "</div>" : "") +
                actionRow(item.actions) + "</div>" +
                (asset(image) ? '<div>' + assetImg(image, item.title, "", true) + "</div>" : "") + "</div></div></section>";
          
              body += '<section class="a-section alt"><div class="a-wrap"><div class="a-detail-body"><div><div class="a-rich">' + richContent(item.body) + "</div>" +
                (gallery.length ? '<div class="a-detail-gallery">' + gallery.map(function (ref) { return assetImg(ref, item.title); }).join("") + "</div>" : "") + "</div>" +
                (specs.length ? '<aside class="a-detail-aside"><h3>Details</h3><dl class="a-specs">' + specs.map(function (spec) { return "<div><dt>" + esc(spec.label) + "</dt><dd>" + esc(spec.value) + "</dd></div>"; }).join("") + "</dl></aside>" : "") + "</div></div></section>";
          
              if (related.length) {
                body += '<section class="a-section"><div class="a-wrap">' + sectionHeading({ eyebrow: "More to explore", title: "Related " + String(collection.label || "items").toLowerCase() }) +
                  '<div class="a-grid" style="--a-cols:' + columnsFor(related.length) + '">' + related.map(function (candidate) { return renderCard(collection, candidate); }).join("") + "</div></div></section>";
              }
              html(el("main"), body);
              applySeo(item.title, item.summary, image);
            }
          
            function emptyState(message, href) {
              return '<section class="a-section"><div class="a-wrap"><span class="a-eyebrow">404</span><h1>Page not found</h1><p class="a-lede">' + esc(message) + '</p><div class="a-hero-actions"><a class="a-btn a-btn-primary" href="' + esc(toHref(href || "/")) + '">Back to the homepage</a></div></div></section>';
            }
          
            function renderRoute(route) {
              if (route.kind === "redirect") {
                history.replaceState({}, "", toHref(route.path));
                route = resolveRoute(route.path);
              }
              if (route.kind === "page") renderPage(route.page);
              else if (route.kind === "collection") renderCollectionPage(route.collection);
              else if (route.kind === "item") renderItemPage(route.collection, route.item);
              else {
                html(el("main"), emptyState("The address may be outdated, or the content may no longer be published.", "/"));
                applySeo("Page not found", "The requested page could not be found.");
              }
              renderHeader();
              reveal();
            }
          
            function showToast(message) {
              var node = el("toast");
              if (!node) return;
              node.textContent = message;
              show(node, true);
              clearTimeout(toastTimer);
              toastTimer = setTimeout(function () { show(node, false); }, 4200);
            }
            function openLightbox(src, caption) {
              var lightbox = el("lightbox"), stage = el("lightbox-stage");
              if (!lightbox || !stage) return;
              html(stage, '<img src="' + esc(src) + '" alt="' + esc(caption || "") + '">' + (caption ? "<p>" + esc(caption) + "</p>" : ""));
              show(lightbox, true);
              document.body.style.overflow = "hidden";
              var close = root.querySelector('[data-action="lightbox-close"]');
              if (close) close.focus();
            }
            function closeLightbox() {
              show(el("lightbox"), false);
              document.body.style.overflow = "";
            }
          
            function handleFormSubmit(formNode) {
              var id = formNode.getAttribute("data-form-id");
              var config = (DATA.forms || {})[id] || {};
              var status = formNode.querySelector("[data-form-status]");
              if (!formNode.reportValidity()) return;
              var formData = new FormData(formNode);
              var entries = [];
              formData.forEach(function (value, key) {
                var field = (config.fields || []).filter(function (candidate) { return candidate.id === key; })[0];
                entries.push((field ? field.label : key) + ": " + value);
              });
              var action = config.action || formNode.action || "";
              if (action.indexOf("mailto:") === 0) {
                var email = action.slice(7);
                var subject = "Website enquiry from " + (formData.get("name") || "a visitor");
                location.href = "mailto:" + encodeURIComponent(email).replace(/%40/g, "@") + "?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(entries.join("\n\n"));
                if (status) { status.textContent = config.success_message || "Your email application should open now."; show(status, true); }
                return;
              }
              if (!action) {
                if (status) { status.textContent = config.error_message || "No form endpoint is configured."; show(status, true); }
                return;
              }
              var button = formNode.querySelector('button[type="submit"]');
              if (button) button.disabled = true;
              fetch(action, {
                method: config.method || formNode.method || "POST",
                headers: { "Content-Type": "application/json" },
                body: JSON.stringify(Object.fromEntries(formData.entries()))
              }).then(function (response) {
                if (!response.ok) throw new Error("HTTP " + response.status);
                formNode.reset();
                if (status) { status.textContent = config.success_message || "Thank you. Your message has been sent."; show(status, true); }
              }).catch(function () {
                if (status) { status.textContent = config.error_message || "The message could not be sent."; show(status, true); }
              }).finally(function () { if (button) button.disabled = false; });
            }
          
            function navigate(path, replace) {
              var clean = normalizePath(path);
              if (replace) history.replaceState({}, "", toHref(clean));
              else history.pushState({}, "", toHref(clean));
              renderRoute(resolveRoute(clean));
              var header = el("header");
              if (header) header.classList.remove("is-open");
              document.body.classList.remove("a-nav-open");
              var burger = root.querySelector('[data-action="menu"]');
              if (burger) burger.setAttribute("aria-expanded", "false");
              window.scrollTo({ top: 0, behavior: "auto" });
              var main = el("main");
              if (main) main.focus({ preventScroll: true });
            }
          
            function bindBehaviour() {
              var header = el("header");
              var burger = root.querySelector('[data-action="menu"]');
              if (burger && header) {
                burger.addEventListener("click", function () {
                  var open = header.classList.toggle("is-open");
                  burger.setAttribute("aria-expanded", open ? "true" : "false");
                  burger.setAttribute("aria-label", open ? "Close navigation" : "Open navigation");
                  document.body.classList.toggle("a-nav-open", open);
                });
              }
              var modeButton = root.querySelector('[data-action="mode"]');
              if (modeButton) modeButton.addEventListener("click", function () {
                var next = CURRENT_MODE === "dark" ? "light" : "dark";
                storageSet(get("site.id", "site") + ":mode", next);
                applyBranding(next);
                showToast(next === "dark" ? "Dark mode enabled" : "Light mode enabled");
              });
          
              root.addEventListener("click", function (event) {
                var close = event.target.closest && event.target.closest('[data-action="lightbox-close"]');
                if (close || event.target === el("lightbox")) { closeLightbox(); return; }
                var preview = event.target.closest && event.target.closest("[data-lightbox]");
                if (preview) { event.preventDefault(); openLightbox(preview.getAttribute("data-lightbox"), preview.getAttribute("data-caption")); return; }
                var link = event.target.closest && event.target.closest("a[href]");
                if (!link || link.target === "_blank" || link.hasAttribute("download")) return;
                var href = link.getAttribute("href") || "";
                if (/^(mailto:|tel:|javascript:|#)/i.test(href)) return;
                var url = new URL(link.href, location.href);
                if (url.origin !== location.origin) return;
                var route = resolveRoute(url.pathname);
                if (route.kind === "not-found") return;
                event.preventDefault();
                navigate(url.pathname, false);
              });
          
              root.addEventListener("submit", function (event) {
                var form = event.target.closest && event.target.closest("form[data-form-id]");
                if (!form) return;
                event.preventDefault();
                handleFormSubmit(form);
              });
          
              window.addEventListener("popstate", function () { renderRoute(resolveRoute(currentPath())); window.scrollTo({ top: 0, behavior: "auto" }); });
              document.addEventListener("keydown", function (event) { if (event.key === "Escape") closeLightbox(); });
            }
          
            function reveal() {
              if (!("IntersectionObserver" in window)) return;
              var observer = new IntersectionObserver(function (entries) {
                entries.forEach(function (entry) {
                  if (entry.isIntersecting) { entry.target.classList.add("is-in"); observer.unobserve(entry.target); }
                });
              }, { rootMargin: "0px 0px -7% 0px" });
              root.querySelectorAll("main > section").forEach(function (section, index) {
                if (index === 0) return;
                section.classList.add("a-reveal");
                observer.observe(section);
              });
            }
          
            function start(payload) {
              DATA = payload;
              show(el("loading"), false);
              if (!payload || payload.status === "maintenance" || get("site.status", "published") === "maintenance") {
                var maintenance = payload && payload.maintenance || {};
                html(el("maintenance-title"), esc(maintenance.headline || "Site under maintenance"));
                html(el("maintenance-message"), esc(maintenance.message || "Please check back soon."));
                show(el("maintenance"), true);
                document.title = maintenance.headline || "Site under maintenance";
                return;
              }
              applyBranding();
              show(el("site"), true);
              renderFooter();
              renderRoute(resolveRoute(currentPath()));
              bindBehaviour();
            }
            function fail(error) {
              if (window.console) console.error(error);
              show(el("loading"), false);
              show(el("error"), true);
            }
          
            if (CONFIG.payload) start(CONFIG.payload);
            else if (CONFIG.api) {
              fetch(CONFIG.api, { credentials: "omit" }).then(function (response) {
                if (!response.ok) throw new Error("HTTP " + response.status);
                return response.json();
              }).then(start).catch(fail);
            } else fail(new Error("No payload or API URL configured."));
          })();
          
          </script>
          </body>
          </html>
          Evidence
          <noscript>
              &amp;lt;div class="a-noscript"&amp;gt;This website needs JavaScript to render its JSON content.&amp;lt;/div&amp;gt;
            </noscript>
          Solution

          This is an informational alert and so no changes are required.

      4. Session Management Response Identified (1)
        1. GET https://sites.wons.bt
          Alert tags
          Alert description

          The given response has been identified as containing a session management token. The 'Other Info' field contains a set of header tokens that can be used in the Header Based Session Management Method. If the request is in a context which has a Session Management Method set to "Auto-Detect" then this rule will change the session management to use the tokens identified.

          Other info

          cookie:wons_csrf

          Request
          Request line and header section (227 bytes)
          GET https://sites.wons.bt HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          
          
          Request body (0 bytes)
          Response
          Status line and header section (805 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:42:54 GMT
          Content-Type: text/html; charset=utf-8
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-iB8Q5DnSVjWx_AOLdlto8Q'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Set-Cookie: wons_csrf=y550JyNiyw54uLkFFzWS.e2ec5c27689fa4cf2714635ce48a4a48; Path=/; Max-Age=2592000; HttpOnly; SameSite=Lax
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          content-length: 81797
          
          
          Response body (81797 bytes)
          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>WONS Sites — your website, edited like a dashboard</title>
            <meta name="description" content="A website you can keep up to date yourself. Pick a look, fill in your pages, and it is live — no domain to buy, no developer, no rebuilds.">
            
              <link rel="icon" href="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfNHZ2NmczbWVkby5wbmc&amp;s=9821682f6dcdfe2a0cd279db1dd9c9d12d0cc8dda08970ee8913adbff07f2aee">
            
            <link rel="preload" href="/fonts/Manrope-500-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-italic-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="stylesheet" href="/fonts/fonts.css">
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              (function () {
                try {
                  var t = localStorage.getItem("wons-sites-theme");
                  if (t) document.documentElement.setAttribute("data-theme", t);
                } catch (e) {}
              })();
            </script>
            <style>
              :root {
                --emerald:      #0d9d63;
                --emerald-deep: #077a4b;
                --emerald-dark: #05603a;
                --emerald-soft: #e7f6ee;
                --emerald-line: #c6e8d6;
          
                --heading:      #1d3b2c;
                --cta-bg:       #1d4d33;
                --cta-bg-hover: #266040;
                --cta-fg:       #ffffff;
          
                --canvas:    #fdfcf8;
                --surface:   #ffffff;
                --surface-2: #f2f6ef;
                --ink:       #22302a;
                --ink-2:     #435248;
                --muted:     #5f6f66;
                --faint:     #8fa096;
                --line:      #e6e9df;
                --line-soft: #eef1e8;
          
                --warn:      #b4690e;
                --warn-soft: #fdf3e4;
                --bad:       #c8372c;
                --bad-soft:  #fdeeec;
                --ok:        var(--emerald);
          
                 
                --band:       #0f100f;
                --band-2:     #171a18;
                --band-fg:    #ffffff;
                --band-muted: #9aa39e;
                --band-line:  #2a2f2c;
                --band-card:  #d5dad3;
          
                --r-xs: 8px;
                --r:    12px;
                --r-lg: 18px;
                --r-xl: 26px;
                --r-2xl: 34px;
                --r-pill: 999px;
          
                --shadow-sm: 0 1px 2px rgba(16,30,24,.05);
                --shadow:    0 1px 2px rgba(16,30,24,.04), 0 12px 28px -18px rgba(16,30,24,.24);
                --shadow-lg: 0 32px 64px -34px rgba(10,40,28,.40);
                --ring:      0 0 0 3px rgba(13,157,99,.20);
          
                --display: "Fraunces", Georgia, "Times New Roman", serif;
                --text:    "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
                --mono:    ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
          
                --maxw: min(1280px, calc(100vw - 3em));
                --nav-h: 68px;
                color-scheme: light;
              }
          
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) {
                  --emerald:      #2fc98a;
                  --emerald-deep: #21b077;
                  --emerald-dark: #8ce8bf;
                  --emerald-soft: #10281f;
                  --emerald-line: #1d4436;
                  --heading:      #eef2f0;
                  --cta-bg:       #2fc98a;
                  --cta-bg-hover: #4dd69c;
                  --cta-fg:       #06120d;
                  --canvas:    #0b0f0e;
                  --surface:   #121817;
                  --surface-2: #182120;
                  --ink:       #eef2f0;
                  --ink-2:     #c3ccc9;
                  --muted:     #97a3a0;
                  --faint:     #6a7674;
                  --line:      #222c2a;
                  --line-soft: #1a2322;
                  --warn:      #e0a55a;
                  --warn-soft: #2a2113;
                  --bad:       #f0776a;
                  --bad-soft:  #2c1613;
                  --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                  --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                  --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                  --ring:      0 0 0 3px rgba(47,201,138,.26);
                  color-scheme: dark;
                }
              }
              :root[data-theme="dark"] {
                --emerald:      #2fc98a;
                --emerald-deep: #21b077;
                --emerald-dark: #8ce8bf;
                --emerald-soft: #10281f;
                --emerald-line: #1d4436;
                --heading:      #eef2f0;
                --cta-bg:       #2fc98a;
                --cta-bg-hover: #4dd69c;
                --cta-fg:       #06120d;
                --canvas:    #0b0f0e;
                --surface:   #121817;
                --surface-2: #182120;
                --ink:       #eef2f0;
                --ink-2:     #c3ccc9;
                --muted:     #97a3a0;
                --faint:     #6a7674;
                --line:      #222c2a;
                --line-soft: #1a2322;
                --warn:      #e0a55a;
                --warn-soft: #2a2113;
                --bad:       #f0776a;
                --bad-soft:  #2c1613;
                --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                --ring:      0 0 0 3px rgba(47,201,138,.26);
                color-scheme: dark;
              }
              *, *::before, *::after { box-sizing: border-box; }
              html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
              body {
                margin: 0;
                font-family: var(--text);
                font-size: 16px; line-height: 1.6; letter-spacing: -.006em;
                color: var(--ink); background: var(--canvas);
                -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
              }
              a { color: inherit; text-decoration: none; }
              ::selection { background: var(--emerald); color: #fff; }
              img { max-width: 100%; height: auto; }
              hr { border: 0; border-top: 1px solid var(--line); margin: 2rem 0; }
          
              h1, h2 { font-family: var(--display); margin: 0 0 .6rem; }
              h3, h4 { font-family: var(--text); margin: 0 0 .6rem; }
              h1 { font-size: clamp(2.5rem, 5.4vw, 3.9rem); font-weight: 620; line-height: 1.06; letter-spacing: -.015em; color: var(--heading); }
              h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); font-weight: 600; line-height: 1.12; letter-spacing: -.012em; color: var(--heading); }
              h3 { font-size: 1.16rem; font-weight: 750; line-height: 1.25; letter-spacing: -.015em; color: var(--heading); }
              h4 { font-size: .98rem; font-weight: 750; letter-spacing: -.01em; }
          
               
              body:not(.app) h1,
              body:not(.app) h2 { font-family: var(--text); font-weight: 800; letter-spacing: -.04em; }
              body:not(.app) h1 { font-size: clamp(2.6rem, 6vw, 4.6rem); line-height: .98; }
              body:not(.app) h2 { font-size: clamp(2rem, 4.4vw, 3.4rem); line-height: 1.02; }
          
               
              body:not(.app) .d-xl,
              .d-xl { font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
                      font-size: clamp(3rem, 8.6vw, 7rem); line-height: .92; margin: 0; color: var(--heading); }
              body:not(.app) .d-lg,
              .d-lg { font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
                      font-size: clamp(2.2rem, 5vw, 3.9rem); line-height: 1; margin: 0; color: var(--heading); }
              body:not(.app) .d-thin,
              .d-thin { font-family: var(--text); font-weight: 300; letter-spacing: -.035em;
                        font-size: clamp(2rem, 5.4vw, 4.2rem); line-height: 1.04; margin: 0; color: var(--heading); }
              p  { margin: 0 0 1rem; }
              .lede { font-size: clamp(1.02rem, 1.6vw, 1.18rem); line-height: 1.55; color: var(--muted); max-width: 48ch; }
              .muted { color: var(--muted); }
              .faint { color: var(--faint); }
              .tiny  { font-size: .82rem; }
              .label {
                font-family: var(--mono); font-size: .7rem; font-weight: 500;
                letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              }
              .kicker {
                display: inline-flex; align-items: center; gap: .55rem;
                font-family: var(--mono); font-size: .71rem; font-weight: 500;
                letter-spacing: .16em; text-transform: uppercase; color: var(--emerald-deep);
              }
              .kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .6; }
              code {
                font-family: var(--mono); font-size: .85em;
                background: var(--surface-2); border: 1px solid var(--line);
                border-radius: 6px; padding: .08em .4em; color: var(--ink-2);
              }
          
              .shell {
                min-height: 100vh; display: flex; flex-direction: column;
                overflow-x: clip;
              }
              .wrap { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              .topbar {
                position: sticky; top: 0; z-index: 60; height: var(--nav-h);
                display: flex; align-items: center;
                background: color-mix(in srgb, var(--canvas) 88%, transparent);
                backdrop-filter: saturate(1.6) blur(14px); -webkit-backdrop-filter: saturate(1.6) blur(14px);
                border-bottom: 1px solid var(--line);
              }
              .topbar .bar { display: flex; align-items: center; gap: 1.4rem; width: 100%; }
          
               
              body:not(.app) .topbar {
                position: fixed; top: 0; left: 0; right: 0; height: auto;
                padding: 14px 0; background: none; border: 0;
                backdrop-filter: none; -webkit-backdrop-filter: none;
                transition: padding .25s ease;
              }
               
              body:not(.app) .topbar .bar {
                position: relative;
                padding: .5rem .55rem .5rem 1.15rem; border-radius: var(--r-pill);
                background: color-mix(in srgb, var(--surface) 92%, transparent);
                border: 1px solid var(--line); box-shadow: var(--shadow-sm);
                backdrop-filter: saturate(1.5) blur(16px); -webkit-backdrop-filter: saturate(1.5) blur(16px);
                transition: background .25s ease, border-color .25s ease, box-shadow .25s ease;
              }
          
               
              body.hero-top:not(.app) .topbar .bar {
                background: rgba(255, 255, 255, .12);
                border-color: rgba(255, 255, 255, .22);
                box-shadow: none;
              }
              body.hero-top:not(.app) .topbar .brand,
              body.hero-top:not(.app) .topbar .nav a.link,
              body.hero-top:not(.app) .topbar .nav-actions a.link { color: #fff; }
              body.hero-top:not(.app) .topbar .nav a.link:hover,
              body.hero-top:not(.app) .topbar .nav-actions a.link:hover { color: #fff; background: rgba(255,255,255,.16); }
              body.hero-top:not(.app) .topbar .icon-btn { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.24); color: #fff; }
              body.hero-top:not(.app) .topbar .icon-btn:hover { border-color: #fff; color: #fff; }
              body.hero-top:not(.app) .topbar .brand .mark { box-shadow: none; }
          
              body:not(.app) .topbar.stuck { padding: 8px 0; }
              body.hero-top:not(.app) .topbar.stuck .bar {
                background: color-mix(in srgb, var(--surface) 94%, transparent);
                border-color: var(--line); box-shadow: var(--shadow);
              }
              body.hero-top:not(.app) .topbar.stuck .brand { color: var(--heading); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link { color: var(--ink-2); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link:hover,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn { background: var(--surface); border-color: var(--line); color: var(--muted); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
          
              .brand { display: inline-flex; align-items: center; gap: .6rem; font-family: var(--text); font-weight: 800; letter-spacing: -.03em; font-size: 1.05rem; color: var(--heading); flex-shrink: 0; }
              .brand .mark {
                width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
                background: linear-gradient(145deg, var(--emerald), var(--emerald-dark));
                color: #fff; font-size: .82rem; font-weight: 800; letter-spacing: -.02em;
                box-shadow: 0 6px 14px -6px rgba(7,122,75,.7);
              }
              :root[data-theme="dark"] .brand .mark { color: #06120d; }
              .brand .mark-img { background: none; box-shadow: none; object-fit: contain; border-radius: 7px; }
              .brand .mark-dark { display: none; }
              :root[data-theme="dark"] .brand .mark-light { display: none; }
              :root[data-theme="dark"] .brand .mark-dark { display: block; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .brand .mark-light { display: none; }
                :root:not([data-theme="light"]) .brand .mark-dark { display: block; }
              }
          
              .nav { display: flex; align-items: center; justify-content: center; gap: .4rem; flex: 1; }
              .nav a.link, .nav-actions a.link {
                display: inline-flex; align-items: center; gap: .42rem;
                padding: .45rem .75rem; border-radius: var(--r-xs);
                font-size: .93rem; font-weight: 600; color: var(--ink-2);
                transition: color .15s, background .15s;
              }
              .nav a.link:hover, .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              .nav a.link.active { color: var(--heading); }
              .nav-actions { display: flex; align-items: center; gap: .45rem; flex-shrink: 0; }
          
              .icon-btn {
                display: grid; place-items: center; width: 36px; height: 36px; flex-shrink: 0;
                border: 1px solid var(--line); border-radius: var(--r-xs);
                background: var(--surface); color: var(--muted); cursor: pointer;
                font: inherit; font-size: .95rem; padding: 0;
                transition: border-color .15s, color .15s;
              }
              .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .theme-toggle .sun { display: none; } .theme-toggle .moon { display: block; }
              :root[data-theme="dark"] .theme-toggle .sun { display: block; }
              :root[data-theme="dark"] .theme-toggle .moon { display: none; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .theme-toggle .sun { display: block; }
                :root:not([data-theme="light"]) .theme-toggle .moon { display: none; }
              }
              #navToggle { display: none; }
          
              @media (max-width: 860px) {
                #navToggle { display: grid; }
                .nav-actions a.link.nav-login { display: none; }
                .nav {
                  display: none; position: absolute; top: var(--nav-h); left: 0; right: 0;
                  flex-direction: column; align-items: stretch; gap: .1rem;
                  padding: .8rem clamp(1.1rem, 4vw, 2rem) 1.2rem;
                  background: var(--surface); border-bottom: 1px solid var(--line);
                  box-shadow: var(--shadow-lg);
                }
                .topbar.open .nav { display: flex; }
          
                 
                body:not(.app) .nav {
                  top: calc(100% + .5rem); left: .25rem; right: .25rem;
                  border: 1px solid var(--line); border-radius: var(--r-lg);
                  padding: .6rem .7rem .8rem;
                }
                body.hero-top:not(.app) .topbar.open .nav a.link,
                body:not(.app) .topbar.open .nav a.link { color: var(--ink-2); }
                body.hero-top:not(.app) .topbar.open .nav a.link:hover { background: var(--surface-2); color: var(--heading); }
              }
          
               
              @media (max-width: 620px) {
                body:not(.app) .topbar .brand { font-size: 0; gap: 0; }
                body:not(.app) .topbar .brand .mark { font-size: .82rem; }
                body:not(.app) .topbar .bar { gap: .6rem; padding-left: .55rem; }
                body:not(.app) .topbar .nav-actions { gap: .35rem; }
                body:not(.app) .topbar .nav-actions .btn { padding: .5rem .85rem; font-size: .82rem; }
                body:not(.app) .icon-btn { width: 34px; height: 34px; }
              }
          
              main { flex: 1; padding: clamp(2.2rem, 5vw, 4rem) 0 clamp(3.5rem, 7vw, 5.5rem); }
               
              body:not(.app) main { padding-top: calc(var(--nav-h) + clamp(1.4rem, 4vw, 2.6rem)); }
              body.hero-top:not(.app) main { padding-top: 0; }
               
              body.hero-top:not(.app) .flash { margin-top: calc(var(--nav-h) + 1rem); }
              body.app main { padding: 0; }
              body.app .wrap { max-width: none; padding: 0; }
          
               
              .bleed { width: 100vw; margin-left: calc(50% - 50vw); }
          
              .site-footer {
                background: var(--band); color: var(--band-fg);
                padding: clamp(2.4rem, 5vw, 3.6rem) 0 1.2rem;
                overflow: hidden;
              }
              .site-footer .footer-name,
              .site-footer .footer-sub-head { color: var(--band-fg); }
              .site-footer .footer-tag,
              .site-footer .footer-sub-copy,
              .site-footer .footer-col a { color: var(--band-muted); }
              .site-footer .label { color: #6f7a75; }
              .site-footer .footer-col a:hover { color: var(--band-fg); }
              .site-footer input[type=email] {
                background: var(--band-2); border-color: var(--band-line); color: var(--band-fg);
              }
              .site-footer input[type=email]::placeholder { color: #6f7a75; }
              .site-footer .sub-btn { background: var(--emerald); color: #06120d; }
              .site-footer .sub-btn:hover { background: var(--emerald-deep); color: #fff; }
              .site-footer .footer-base { border-top-color: var(--band-line); color: #6f7a75; }
              .footer-grid {
                display: grid; grid-template-columns: 1.4fr .8fr .8fr 1.2fr; gap: 2rem;
                padding-bottom: clamp(1.4rem, 3vw, 2.2rem);
              }
              .footer-name {
                font-family: var(--text); font-weight: 800; letter-spacing: -.03em;
                font-size: 1.05rem; color: var(--heading);
              }
              .footer-tag { margin: .5rem 0 0; font-size: .88rem; color: var(--muted); max-width: 30ch; }
              .footer-col .label { display: block; margin-bottom: .7rem; }
              .footer-col a { display: block; padding: .24rem 0; font-size: .9rem; color: var(--muted); }
              .footer-col a:hover { color: var(--emerald-deep); }
              .footer-sub-head { font-size: .95rem; font-weight: 750; color: var(--heading); margin: 0 0 .35rem; }
              .footer-sub-copy { font-size: .84rem; color: var(--muted); margin: 0 0 .8rem; max-width: 32ch; }
              .footer-sub { display: flex; gap: .5rem; }
              .footer-sub input[type=email] { flex: 1; min-width: 0; }
              .footer-sub .sub-btn {
                display: grid; place-items: center; width: 46px; flex-shrink: 0;
                border: 0; border-radius: var(--r); cursor: pointer;
                background: var(--cta-bg); color: var(--cta-fg); font: inherit;
                transition: background .15s;
              }
              .footer-sub .sub-btn:hover { background: var(--cta-bg-hover); }
              .footer-base {
                display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
                border-top: 1px solid var(--line-soft); padding-top: 1.2rem;
                font-family: var(--mono); font-size: .72rem; color: var(--faint);
              }
              @media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
              @media (max-width: 520px) { .footer-grid { grid-template-columns: 1fr; gap: 1.4rem; } }
          
              .btn {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-family: var(--text); font-weight: 600; font-size: .95rem;
                line-height: 1; cursor: pointer; white-space: nowrap; text-decoration: none;
                padding: .78rem 1.3rem; border-radius: var(--r); border: 1px solid transparent;
                transition: transform .08s, filter .15s, border-color .15s, background .15s, color .15s;
              }
              .btn:active { transform: translateY(1px); }
              .btn-primary { background: var(--ink); color: var(--canvas); }
              .btn-primary:hover { filter: brightness(1.22); }
              :root[data-theme="dark"] .btn-primary { background: var(--emerald); color: #06120d; }
              .btn-accent {
                background: var(--cta-bg); color: var(--cta-fg);
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
              }
              .btn-accent:hover { background: var(--cta-bg-hover); }
              .btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line); box-shadow: var(--shadow-sm); }
              .btn-ghost:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .btn-quiet { background: transparent; color: var(--muted); padding-left: .6rem; padding-right: .6rem; }
              .btn-quiet:hover { color: var(--ink); }
              .btn-sm { padding: .5rem .85rem; font-size: .86rem; border-radius: var(--r-xs); }
              .btn-block { width: 100%; }
              .btn[disabled] { opacity: .5; cursor: not-allowed; }
          
               
              body:not(.app) .btn { border-radius: var(--r-pill); padding: .88rem 1.6rem; }
              body:not(.app) .btn-sm { padding: .55rem 1.05rem; font-size: .86rem; }
              body:not(.app) form button:not([class]) { border-radius: var(--r-pill); }
              .btn-onband { background: #fff; color: var(--band); }
              .btn-onband:hover { background: #fff; filter: brightness(.94); }
              .btn-outline-band { background: transparent; color: #fff; border-color: rgba(255,255,255,.32); }
              .btn-outline-band:hover { border-color: #fff; background: rgba(255,255,255,.08); }
          
               
              .band { position: relative; padding: clamp(3rem, 7vw, 6rem) 0; }
               
              .band-dark + .band-dark { padding-top: 0; }
              .band-dark { background: var(--band); color: var(--band-fg); }
               
              body:not(.app) .band-dark h1, body:not(.app) .band-dark h2,
              body:not(.app) .band-dark h3, body:not(.app) .band-dark .d-xl,
              body:not(.app) .band-dark .d-lg, body:not(.app) .band-dark .d-thin { color: var(--band-fg); }
              .band-dark .muted, .band-dark .lede { color: var(--band-muted); }
              .band-dark .label { color: #6f7a75; }
              .band-dark .kicker { color: var(--emerald); }
               
              .band-paper { background: var(--surface-2); color: var(--ink); }
              .band-accent { background: var(--emerald-deep); color: #fff; }
              body:not(.app) .band-accent h2, body:not(.app) .band-accent h3,
              body:not(.app) .band-accent .d-lg, body:not(.app) .band-accent .d-xl { color: #fff; }
              .band-accent .lede, .band-accent .muted { color: rgba(255,255,255,.78); }
              .band-accent .label, .band-accent .kicker { color: rgba(255,255,255,.66); }
              .band-accent .kicker::before { background: currentColor; }
              .band-inner { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              form button:not([class]) {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-weight: 600; cursor: pointer; color: var(--cta-fg); border: 0;
                background: var(--cta-bg);
                border-radius: var(--r); padding: .78rem 1.4rem;
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
                transition: background .15s, transform .08s;
              }
              form button:not([class]):hover { background: var(--cta-bg-hover); }
              form button:not([class]):active { transform: translateY(1px); }
          
              .card {
                background: var(--surface); border: 1px solid var(--line);
                border-radius: var(--r-lg); padding: 1.5rem 1.6rem; box-shadow: var(--shadow);
              }
              .card.tight { padding: 1.1rem 1.2rem; }
              .card.flush { padding: 0; overflow: hidden; }
              .panel { background: var(--surface-2); border: 1px solid var(--line-soft); border-radius: var(--r); padding: 1.1rem 1.2rem; }
              .stack > * + * { margin-top: 1.1rem; }
              .row { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
              .row-between { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
              .grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
              .grid-2 { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
              .center-narrow { max-width: 460px; margin: 0 auto; }
          
              .pill {
                display: inline-flex; align-items: center; gap: .35rem;
                font-family: var(--mono); font-size: .68rem; font-weight: 500;
                letter-spacing: .08em; text-transform: uppercase;
                padding: .26rem .6rem; border-radius: 999px;
                background: var(--surface-2); color: var(--muted); border: 1px solid var(--line);
              }
              .pill { align-self: flex-start; }
              .pill.ok   { background: var(--emerald-soft); color: var(--emerald-deep); border-color: var(--emerald-line); }
              .pill.warn { background: var(--warn-soft); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 32%, transparent); }
              .pill.bad  { background: var(--bad-soft); color: var(--bad); border-color: color-mix(in srgb, var(--bad) 30%, transparent); }
              .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
              .field { display: block; margin-bottom: 1.05rem; }
              .field > .lbl { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; font-size: .88rem; font-weight: 600; margin-bottom: .38rem; }
              .field > .lbl .hint { font-weight: 400; font-size: .8rem; color: var(--faint); }
              input[type=text], input[type=email], input[type=password], input[type=url],
              input[type=number], input[type=date], input[type=search], textarea, select {
                display: block; width: 100%; font: inherit; font-size: .95rem; color: var(--ink);
                background: var(--surface); border: 1px solid var(--line); border-radius: var(--r);
                padding: .72rem .9rem; transition: border-color .15s, box-shadow .15s;
              }
              textarea { min-height: 120px; resize: vertical; line-height: 1.55; }
              input::placeholder, textarea::placeholder { color: var(--faint); }
              input:focus, textarea:focus, select:focus { outline: 0; border-color: var(--emerald); box-shadow: var(--ring); }
              input[aria-invalid="true"], textarea[aria-invalid="true"] { border-color: var(--bad); }
              input[type=checkbox], input[type=radio] { accent-color: var(--emerald); width: auto; }
              .err { display: block; color: var(--bad); font-size: .84rem; font-weight: 500; margin-top: .35rem; }
              fieldset { border: 0; margin: 0; padding: 0; }
          
              .progress { height: 6px; border-radius: 999px; background: var(--surface-2); overflow: hidden; border: 1px solid var(--line-soft); }
              .progress > i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--emerald), var(--emerald-deep)); }
          
              .flash {
                display: flex; align-items: flex-start; gap: .6rem;
                background: var(--surface-2); color: var(--ink-2);
                border: 1px solid var(--line); border-radius: var(--r);
                padding: .8rem 1.05rem; margin-bottom: 1.4rem; font-weight: 500; font-size: .93rem;
                animation: flashIn .22s ease;
              }
              .flash::before { content: "→"; font-weight: 800; color: var(--muted); }
              .flash.warn {
                background: #fdf6e7; color: #8a5a00; border-color: #f0dcae;
              }
              :root[data-theme="dark"] .flash.warn { color: #8a5a00; }
              .flash.warn::before { content: "!"; }
              .flash.ok {
                background: #eaf7f0; color: #10633f; border-color: #bfe3d0;
              }
              :root[data-theme="dark"] .flash.ok { color: #10633f; }
              .flash.ok::before { content: "\2713"; color: #10633f; }
              .flash.error {
                background: #fdeceb; color: #8c2b22; border-color: #f3c8c4;
              }
              :root[data-theme="dark"] .flash.error { color: #8c2b22; }
              .flash.error::before { content: "\2715"; color: #8c2b22; }
              @keyframes flashIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
              .auth-centered { text-align: center; padding-top: clamp(.2rem, 2vw, 1rem); }
              .auth-centered .kicker { justify-content: center; }
              .auth-centered .lede { margin-left: auto; margin-right: auto; }
              .auth-centered .card { text-align: left; }
          
              .ticks { list-style: none; margin: 1.1rem 0; padding: 0; display: grid; gap: .55rem; font-size: .93rem; }
              .ticks li { display: flex; gap: .6rem; align-items: baseline; color: var(--ink-2); }
              .ticks li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
          
              table { width: 100%; border-collapse: collapse; }
              th, td { text-align: left; padding: .7rem .6rem; font-size: .92rem; }
              th { font-family: var(--mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--faint); font-weight: 500; border-bottom: 1px solid var(--line); }
              td { border-bottom: 1px solid var(--line-soft); }
              tr:last-child td { border-bottom: 0; }
          
              .page-head { margin-bottom: clamp(1.6rem, 3vw, 2.4rem); max-width: 58ch; }
              .page-head .kicker { margin-bottom: .9rem; }
              .backlink { display: inline-flex; align-items: center; gap: .35rem; color: var(--faint); font-size: .88rem; margin-bottom: .9rem; }
              .backlink:hover { color: var(--emerald-deep); }
          
              @media (prefers-reduced-motion: reduce) {
                *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
              }
            </style>
          <script src="/__wons/sdk/pocketbase.umd.js"></script><script src="/__wons/sdk/wons.umd.js" data-wons-global="Wons"></script></head>
          <body class=" hero-top">
            <div class="shell">
              
              <header class="topbar" id="topbar">
                <div class="wrap"><div class="bar">
                  <a class="brand" href="/">
                    
                      <img class="mark mark-img mark-light"
                           src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfamd1aGFzNnMzcC5wbmc&amp;s=3ac7de0667a74e2dd9a505b782187df00961b7c1becb2295ec58ea7be28ed09d" alt="" width="30" height="30">
                      
                        <img class="mark mark-img mark-dark" src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfZmx5MHF4YXBrOS5wbmc&amp;s=394107603c20e2e16f57f48cc71aeda97460e22e87ebcf8ec27284364a7ea208" alt="" width="30" height="30">
                      
                    
                    WONS Sites
                  </a>
                  <nav class="nav" id="nav">
                    
                      <a class="link" href="/#product">Features</a>
                    
                      <a class="link" href="/themes">Themes</a>
                    
                      <a class="link" href="/#pricing">Pricing</a>
                    
                      <a class="link" href="/docs">Docs</a>
                    
                  </nav>
                  <div class="nav-actions">
                    
                      <a class="link nav-login" href="/login">Log in</a>
                      <a class="btn btn-accent btn-sm" href="/signup">Start Free</a>
                    
                    <button class="icon-btn theme-toggle" id="themeToggle" type="button" aria-label="Toggle dark mode">
                      <svg class="moon" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <path d="M20.4 14.7A8.7 8.7 0 0 1 9.3 3.6 8.7 8.7 0 1 0 20.4 14.7Z"/>
                      </svg>
                      <svg class="sun" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <circle cx="12" cy="12" r="4.1"/>
                        <path d="M12 2.5v2.2M12 19.3v2.2M4.6 4.6l1.6 1.6M17.8 17.8l1.6 1.6M2.5 12h2.2M19.3 12h2.2M4.6 19.4l1.6-1.6M17.8 6.2l1.6-1.6"/>
                      </svg>
                    </button>
                    <button class="icon-btn" id="navToggle" type="button" aria-label="Toggle menu" aria-expanded="false">☰</button>
                  </div>
                </div></div>
              </header>
              
          
              <main>
                <div class="wrap">
                  
                    
                  
                  
          
          
          <section class="hero bleed">
            <div class="hero-art" aria-hidden="true">
              
                
                  <div class="hero-shot hs-a">
                    <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-b">
                    <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-c">
                    <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
              
            </div>
            <div class="hero-veil" aria-hidden="true"></div>
          
            <div class="hero-inner band-inner">
              <div class="hero-meta">
                
                
                <div class="hm">
                  <span class="hm-k">Plan</span>
                  <span class="hm-v">Free forever</span>
                  <span class="hm-n">No card, nothing to cancel</span>
                </div>
                
                <div class="hm">
                  <span class="hm-k">Address</span>
                  <span class="hm-v">yourname.sites.wons.bt</span>
                  <span class="hm-n">Included the moment you sign up</span>
                </div>
                
                <div class="hm hm-last">
                  <span class="hm-k">Themes</span>
                  <span class="hm-v">15 to choose from</span>
                  <span class="hm-n">Switch any time, content stays</span>
                </div>
                
              </div>
          
              <div class="hero-body">
                <h1 class="hero-title">Build a website.<br>Share your world.</h1>
                <div class="hero-foot">
                  <div class="hero-actions">
                    <a class="btn btn-accent btn-lg" href="/signup">Start free
                      <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                    </a>
                    <a class="btn btn-outline-band btn-lg" href="#looks">See the themes</a>
                  </div>
                  <p class="hero-note">
                    For shops, schools, communities, creators and small organisations.
                    No coding, and nothing to buy before you begin.
                  </p>
                </div>
              </div>
            </div>
          </section>
          
          
          <section class="section reasons" id="why">
            <h2 class="d-xl reasons-title rv">Reasons to<br>start today</h2>
            <div class="reasons-copy rv">
              <p>
                <em>A website you can keep up to date yourself.</em> Most sites go stale
                because changing one line means calling whoever built it. Here every
                part of the page is a form — <em>a rate, a menu, an opening hour, a
                photograph</em> — and the change is live on the next visit.
              </p>
              <p>
                Your content lives here. <em>Your site can stay wherever it is hosted
                today</em>, reading everything from one address.
              </p>
            </div>
          </section>
          
          
          
          <section class="section statement">
            <p class="d-thin statement-line rv">A brochure site costs<br>Nu. 40,000 – 90,000 to rebuild</p>
            <div class="range rv">
              <span class="range-a">Rebuild</span>
              <span class="range-arrow" aria-hidden="true">
                <svg viewBox="0 0 120 12" preserveAspectRatio="none"><path d="M2 6h108M104 2l7 4-7 4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
              </span>
              <span class="range-b">Free</span>
              <span class="range-tail">to start here</span>
            </div>
          </section>
          
          
          <section class="section tilt-section" id="product">
            <div class="tilt-head rv">
              <span class="kicker">Yours to change</span>
              <h2>The things that actually go out of date.</h2>
            </div>
            <div class="tilt-row" aria-label="Examples of content you edit yourself">
              
                <figure class="tilt-card ct-a">
                  <span class="tc-field">Room rate</span>
                  <span class="tc-value">Nu. 3,500 / night</span>
                  <figcaption class="tc-note">Before the season turns</figcaption>
                </figure>
              
                <figure class="tilt-card ct-b">
                  <span class="tc-field">Today&#39;s menu</span>
                  <span class="tc-value">Ema datshi, red rice</span>
                  <figcaption class="tc-note">From your phone</figcaption>
                </figure>
              
                <figure class="tilt-card ct-c">
                  <span class="tc-field">Opening hours</span>
                  <span class="tc-value">Closed for Losar</span>
                  <figcaption class="tc-note">Set it and forget it</figcaption>
                </figure>
              
                <figure class="tilt-card ct-d">
                  <span class="tc-field">Team</span>
                  <span class="tc-value">Pema — Front desk</span>
                  <figcaption class="tc-note">A new photo when someone joins</figcaption>
                </figure>
              
                <figure class="tilt-card ct-e">
                  <span class="tc-field">Tour dates</span>
                  <span class="tc-value">Mar 14 – Mar 22</span>
                  <figcaption class="tc-note">Next spring, added early</figcaption>
                </figure>
              
                <figure class="tilt-card ct-f">
                  <span class="tc-field">Notice</span>
                  <span class="tc-value">Road open again</span>
                  <figcaption class="tc-note">Across the top of every page</figcaption>
                </figure>
              
            </div>
          </section>
          
          
          <section class="band band-dark bleed" id="how">
            <div class="band-inner">
              <h2 class="d-lg steps-title">How it goes</h2>
              <p class="steps-sub">Three screens between an empty account and a site people can read.</p>
          
              <div class="steps">
                
                  <details class="step" open>
                    <summary class="step-head">
                      <span class="step-n">01</span>
                      <span class="step-kind">Sign up</span>
                      <span class="step-time">About a minute</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Create your workspace</h3>
                        <div class="step-tags">
                          <span class="step-tag">Free plan</span><span class="step-tag">No card</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">One form. An organisation name, an email and a password.</p>
                        <p class="step-body">Your workspace is created and you are taken straight into the dashboard. The email confirmation is for account recovery — it does not hold anything up.</p>
                        <a class="btn btn-accent btn-sm" href="/signup">Create a workspace</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">02</span>
                      <span class="step-kind">Fill it in</span>
                      <span class="step-time">As long as you like</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Put your content in</h3>
                        <div class="step-tags">
                          <span class="step-tag">Forms</span><span class="step-tag">Your images</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Pages, photos, contact details, opening hours — in forms, not code.</p>
                        <p class="step-body">Photographs are stripped of their location data on upload and served through links that expire, so an address in a camera&#39;s metadata never reaches the public site.</p>
                        <a class="btn btn-accent btn-sm" href="#product">See what you can change</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">03</span>
                      <span class="step-kind">Go live</span>
                      <span class="step-time">One page of instructions</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Point your site here</h3>
                        <div class="step-tags">
                          <span class="step-tag">One file</span><span class="step-tag">We help</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Use the address that comes with the account, or your own domain.</p>
                        <p class="step-body">Dashboard → Install generates one index.html or index.php for your host, with your title, description and social preview already in it. Drop it in place and the site reads everything from here.</p>
                        <a class="btn btn-accent btn-sm" href="/docs">Read the install guide</a>
                      </div>
                    </div>
                  </details>
                
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed" id="looks">
            <div class="band-inner">
              <div class="looks-head">
                <h2 class="d-lg">Start with a<br>design you love</h2>
                <div class="looks-aside">
                  <span class="looks-count">15 themes</span>
                  <p class="looks-note">
                    Every card below is the theme itself, rendering the same demo site with
                    the same code your own site would run. Nothing here is a screenshot
                    that can drift out of date.
                  </p>
                </div>
              </div>
          
              <div class="looks">
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Vantage</h3>
                      <p class="look-tag">Dark-first tech and professional services.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#2dd4bf" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#22d3ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#e7edf3" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0b0d10" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#171c22" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#vantage">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Aster</h3>
                      <p class="look-tag">Clean editorial layout for hotels, offices and organisations.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#5b3428" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#c99b3d" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#1d2422" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#f8f5ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#eae2d4" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#aster">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Verdant</h3>
                      <p class="look-tag">Dark Botanical Luxe Theme</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#c39a4e" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#e0b674" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#f0e9d8" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0d1712" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#152219" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#verdant">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
              </div>
          
              <div class="looks-foot">
                <a class="btn btn-onband" href="/themes">
                  Browse all 15 themes
                  <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                </a>
                <span class="looks-more">Switching later never touches what you wrote.</span>
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed band-tight">
            <div class="band-inner">
              <div class="feat-head">
                <h2 class="d-lg">Works with the host<br>you already have</h2>
                <a class="btn btn-onband" href="/signup">Start your site</a>
              </div>
              <div class="feats">
                
                  <div class="feat">
                    <span class="feat-n">01</span>
                    <h3 class="feat-title">Everything in one place</h3>
                    <p class="feat-body">Your pages, photos, menus, opening hours, staff and services. Change them in a form; the site shows the change on the next visit.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">02</span>
                    <h3 class="feat-title">An address, included</h3>
                    <p class="feat-body">Every site gets its own address the moment you create it, so there is nothing to buy before you begin. Bring your own domain later if you want one.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">03</span>
                    <h3 class="feat-title">Themes you can switch</h3>
                    <p class="feat-body">Change how the site looks without touching a word of what you wrote. Your colours, logo and type carry across.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">04</span>
                    <h3 class="feat-title">We help you go live</h3>
                    <p class="feat-body">Already have a domain or a host? Tell us and we will set it up with you. There is one small file to put in place, and we will walk you through it.</p>
                  </div>
                
              </div>
            </div>
          </section>
          
          
          <section class="band band-paper bleed" id="pricing">
            <div class="band-inner">
              <div class="price-head">
                <h2 class="d-lg">Start free.<br>Pay when it earns it.</h2>
                <p class="price-sub">
                  Priced against what a rebuild costs, not against what a page of HTML
                  costs. Every plan keeps the site current instead of shipping it once.
                </p>
              </div>
          
              
                <article class="plan-hero">
                  <div class="plan-hero-main">
                    <span class="plan-kicker">Free</span>
                    <p class="plan-tagline">Your site online at no cost, supported by adverts.</p>
                    <div class="plan-price">Free<span>forever</span></div>
                    <p class="plan-anchor">No money. Your pages carry adverts instead.</p>
                    <a class="btn btn-onband btn-block btn-lg" href="/signup?plan=free">Choose Free</a>
                    <p class="plan-note">No card. Nothing to cancel.</p>
                  </div>
                  <ul class="plan-list">
                    <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                  </ul>
                </article>
          
                
                  <div class="ladder-head">
                    <h3>Outgrown the adverts?</h3>
                    <p>Paid plans remove them, from Nu. 299 a year.</p>
                  </div>
                  <div class="ladder">
                    
                      <a class="ladder-item" href="/signup?plan=lifesaver">
                        <span class="ladder-name">Life Saver</span>
                        <span class="ladder-price">Nu. 299<span>per year</span></span>
                        <span class="ladder-note">Supported by local Ads</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=starter">
                        <span class="ladder-name">Starter</span>
                        <span class="ladder-price">Nu. 999<span>per year</span></span>
                        <span class="ladder-note">One site, the essentials.</span>
                      </a>
                    
                      <a class="ladder-item ladder-best" href="/signup?plan=business">
                        <span class="ladder-name">Business <em>most chosen</em></span>
                        <span class="ladder-price">Nu. 1,599<span>per year</span></span>
                        <span class="ladder-note">More space, Full analytics.</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=agency">
                        <span class="ladder-name">Agency</span>
                        <span class="ladder-price">Nu. 2,599<span>per year</span></span>
                        <span class="ladder-note">Triple pack, white-labelled.</span>
                      </a>
                    
                  </div>
          
                  <details class="compare">
                    <summary>Compare every plan in full</summary>
                    <div class="compare-grid">
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Free</span>
                          <div class="compare-price">Free<span>forever</span></div>
                          <p class="compare-anchor">No money. Your pages carry adverts instead.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=free">Choose Free</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Life Saver</span>
                          <div class="compare-price">Nu. 299<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 25 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Local adverts only</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=lifesaver">Choose Life Saver</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Starter</span>
                          <div class="compare-price">Nu. 999<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 83 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>50 MB assets</li><li>Free themes included</li><li>White-label dashboard</li><li>Email Support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=starter">Start with Starter</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Business</span>
                          <div class="compare-price">Nu. 1,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 800 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>2 sites, 2 domains</li><li>200 MB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics &#43; priority support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=business">Choose Business</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Agency</span>
                          <div class="compare-price">Nu. 2,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 866 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>3 sites, 3 domains</li><li>1 GB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=agency">Talk to us</a>
                        </div>
                      
                    </div>
                  </details>
                
              
            </div>
          </section>
          
          
          <section class="section faq-section" id="questions">
            <div class="faq-head rv">
              <h2 class="d-lg">Answering the<br>main things</h2>
              <p class="faq-sub">If yours is not here, write to us — a person in Thimphu answers.</p>
            </div>
            <div class="faq rv">
              
                <details class="qa" open>
                  <summary>
                    <span class="qa-q">Do I need to buy a domain?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. Your site gets an address the moment you create it and works straight away. If you would rather use your own domain, you can add it later without starting again — and we will help you point it here.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">I already have a website. Do I throw it away?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. If you like how it looks, it can keep its host and its address and take its content from here instead — one small file changes hands and we set that up with you. If you do not like how it looks, pick a theme.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens when I get stuck?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">You write to us and a person in Thimphu answers. Setting up a domain, moving an old site across, or a theme built for you — those are things we do, not things you are left to work out.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Can I change theme after the site is live?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Yes, and it does not touch a word of what you wrote. Content and look are stored separately: the theme is three files served from here, your content is the data behind them. Switch, look at it, switch back if you prefer the old one.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens if I stop paying?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">The site stays where it is and starts serving its own maintenance page instead of your content, and we email you every day until it is sorted. Nothing is deleted while that is going on — renew and the same pages come straight back.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Who can see the images I upload?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Only people you send to your site. Image files are not reachable by guessing a URL: the site payload carries signed links that expire, and the stored file paths are never published.</p>
                </details>
              
            </div>
          </section>
          
          
          <section class="section" id="themes">
            <div class="maker rv">
              <div>
                <span class="kicker">For designers &amp; developers <span class="pill">soon</span></span>
                <h3 class="maker-title">Build a theme and sell it here.</h3>
                <p class="maker-body">
                  Set your own price, keep most of it, withdraw from your wallet when you
                  like. Not open yet — no submissions and no date promised, but it is
                  being built.
                </p>
              </div>
            </div>
          </section>
          
          
          <section class="closing rv">
            <h2 class="d-xl closing-title">Your idea deserves<br>a beautiful home.</h2>
            <p class="closing-sub">Your content is already written — put it somewhere you can change it.</p>
            <a class="btn btn-accent btn-lg" href="/signup">Start free
              <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
            </a>
          </section>
          
          <style>
             
            .hero {
              position: relative; isolation: isolate; overflow: hidden;
              background: var(--band); color: var(--band-fg);
              min-height: min(94svh, 820px);
              display: flex; align-items: stretch;
              padding: calc(var(--nav-h) + 2.2rem) 0 clamp(2rem, 4vw, 3.2rem);
            }
            .hero-inner { display: flex; flex-direction: column; justify-content: space-between; gap: 2rem; width: 100%; }
          
             
            .hero-art { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
            .hero-shot {
              position: absolute; width: clamp(320px, 33vw, 560px); aspect-ratio: 16 / 10;
              border-radius: 20px; overflow: hidden; line-height: 0;
              box-shadow: 0 60px 120px -40px rgba(0,0,0,.9);
              border: 1px solid rgba(255,255,255,.10);
              background: var(--surface);
            }
            .hero-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .35));
              pointer-events: none;
            }
            .hs-a { right: 4%;  top: 12%; transform: rotate(4deg); }
            .hs-b { right: 27%; top: 34%; transform: rotate(-5deg); opacity: .82; }
            .hs-c { right: 12%; bottom: -6%; transform: rotate(8deg); opacity: .62; }
          
            .hero-veil {
              position: absolute; inset: 0; z-index: 1; pointer-events: none;
              background:
                linear-gradient(78deg, var(--band) 30%, rgba(15,16,15,.86) 52%, rgba(15,16,15,.42) 100%),
                linear-gradient(0deg, var(--band) 2%, rgba(15,16,15,0) 45%);
            }
            .hero-inner { position: relative; z-index: 2; }
          
            .hero-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.4rem; max-width: 760px; }
            .hm { display: flex; flex-direction: column; gap: .18rem; padding-left: 1rem; border-left: 1px solid rgba(255,255,255,.18); }
            .hm-k { font-family: var(--mono); font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.5); }
            .hm-v { font-size: 1.02rem; font-weight: 700; letter-spacing: -.02em; color: #fff; }
            .hm-n { font-size: .8rem; color: rgba(255,255,255,.55); line-height: 1.4; }
          
             
            .hero .hero-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.9rem, 8.4vw, 7.2rem); line-height: .92;
              color: #fff; margin: 0 0 1.6rem;
            }
            .hero-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; flex-wrap: wrap; }
            .hero-actions { display: flex; gap: .7rem; flex-wrap: wrap; }
            .btn-lg { padding: 1rem 1.9rem; font-size: 1rem; }
            .hero-note { margin: 0; max-width: 40ch; font-size: .92rem; line-height: 1.55; color: rgba(255,255,255,.62); }
          
            @media (max-width: 860px) {
              .hero { min-height: 0; padding-top: calc(var(--nav-h) + 1.6rem); }
              .hero-meta { grid-template-columns: 1fr 1fr; gap: 1rem; }
              .hm-last { display: none; }
              .hero-shot { width: 74vw; }
              .hs-a { right: -22%; top: 6%; opacity: .5; }
              .hs-b { right: 2%; top: 30%; opacity: .38; }
              .hs-c { display: none; }
              .hero-body { margin-top: 3.5rem; }
               
              .hero-veil {
                background:
                  linear-gradient(180deg, rgba(15,16,15,.94) 0%, rgba(15,16,15,.74) 30%, rgba(15,16,15,.93) 62%, var(--band) 92%);
              }
            }
            @media (max-width: 520px) {
              .hero-meta { grid-template-columns: 1fr; }
              .hero-actions .btn { width: 100%; }
            }
          
             
            .section { padding: clamp(3rem, 7vw, 6rem) 0 0; }
          
             
            .reasons { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(1.6rem, 5vw, 4rem); align-items: end; }
            .reasons-title { margin: 0; }
            .reasons-copy p { font-size: clamp(1rem, 1.5vw, 1.14rem); line-height: 1.55; color: var(--ink-2); margin: 0 0 1rem; }
            .reasons-copy p:last-child { margin-bottom: 0; }
            .reasons-copy em { font-style: normal; color: var(--emerald-deep); }
            :root[data-theme="dark"] .reasons-copy em { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .reasons-copy em { color: var(--emerald); } }
            @media (max-width: 900px) { .reasons { grid-template-columns: 1fr; align-items: start; } }
          
             
            .statement { text-align: center; }
            .statement-line { max-width: 22ch; margin: 0 auto; }
            .range {
              display: flex; align-items: center; justify-content: center; gap: clamp(.7rem, 2.4vw, 1.6rem);
              flex-wrap: wrap; margin-top: clamp(1.4rem, 3vw, 2.4rem);
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.8rem, 5vw, 3.6rem); line-height: 1; color: var(--emerald-deep);
            }
            :root[data-theme="dark"] .range { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .range { color: var(--emerald); } }
            .range-a { color: var(--faint); }
            .range-arrow { display: block; width: clamp(60px, 12vw, 150px); color: currentColor; }
            .range-arrow svg { display: block; width: 100%; height: 12px; }
            .range-tail {
              font-family: var(--mono); font-weight: 500; font-size: .74rem;
              letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              align-self: center;
            }
          
             
            .tilt-section { padding-top: clamp(2.2rem, 5vw, 4rem); }
            .tilt-head { max-width: 40ch; margin-bottom: clamp(1.2rem, 3vw, 2rem); }
            .tilt-head .kicker { margin-bottom: .9rem; }
             
            .tilt-row {
              display: flex; gap: clamp(.7rem, 1.6vw, 1.2rem); align-items: flex-start;
              overflow-x: auto; padding: 1.6rem .2rem 2.2rem; scrollbar-width: none;
              width: calc(100vw - (50vw - 50%)); margin-right: calc(50% - 50vw);
            }
            .tilt-row::-webkit-scrollbar { display: none; }
            .tilt-card {
              flex: 0 0 auto; width: clamp(190px, 21vw, 250px); margin: 0;
              display: flex; flex-direction: column; gap: .3rem;
              background: var(--surface); border: 1px solid var(--line);
              border-radius: var(--r-lg); padding: 1.1rem 1.15rem 1.2rem;
              box-shadow: var(--shadow);
              transition: transform .35s cubic-bezier(.2,.8,.2,1);
            }
            .tilt-card:hover { transform: rotate(0deg) translateY(-6px); }
            .ct-a { transform: rotate(-3deg); }
            .ct-b { transform: rotate(2.2deg) translateY(14px); }
            .ct-c { transform: rotate(-1.4deg) translateY(-6px); }
            .ct-d { transform: rotate(3.4deg) translateY(10px); }
            .ct-e { transform: rotate(-2.6deg); }
            .ct-f { transform: rotate(1.6deg) translateY(16px); }
            .tc-field { font-family: var(--mono); font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; color: var(--faint); }
            .tc-value { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: var(--heading); line-height: 1.25; }
            .tc-note { font-size: .8rem; color: var(--muted); margin: .35rem 0 0; line-height: 1.4; }
            @media (prefers-reduced-motion: reduce) { .tilt-card { transition: none; } }
          
             
            .band-tight { padding: clamp(2.4rem, 5vw, 4rem) 0; }
            .steps-title { margin-bottom: .6rem; }
            .steps-sub { color: var(--band-muted); margin: 0 0 clamp(1.6rem, 4vw, 2.6rem); max-width: 48ch; }
            .steps { display: grid; gap: .9rem; }
          
            .step { border-radius: var(--r-xl); }
            .step-head {
              display: flex; align-items: center; gap: 1rem; cursor: pointer; list-style: none;
              background: var(--emerald-deep); color: #fff;
              border-radius: var(--r-pill); padding: .85rem 1rem .85rem 1.5rem;
            }
            .step-head::-webkit-details-marker { display: none; }
            .step-n { font-family: var(--mono); font-size: .72rem; letter-spacing: .14em; opacity: .7; }
            .step-kind { font-size: clamp(1.05rem, 2vw, 1.45rem); font-weight: 800; letter-spacing: -.03em; }
            .step-time { margin-left: auto; font-size: .84rem; color: rgba(255,255,255,.78); }
            .step-chev {
              display: grid; place-items: center; width: 38px; height: 38px; flex-shrink: 0;
              border-radius: 50%; background: rgba(255,255,255,.18); color: #fff;
              transition: transform .25s ease;
            }
            .step:not([open]) .step-chev { transform: rotate(180deg); }
          
            .step-card {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
              gap: clamp(1.2rem, 3vw, 2.6rem);
              background: var(--band-card); color: #14170f;
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.2vw, 2.4rem);
              margin-top: .55rem;
            }
             
            .band-dark .step-card .step-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3.6vw, 2.7rem); line-height: 1.02;
              color: #14170f; margin: 0 0 1rem;
            }
            .step-tags { display: flex; flex-wrap: wrap; gap: .4rem; }
            .step-tag {
              font-family: var(--mono); font-size: .66rem; letter-spacing: .1em; text-transform: uppercase;
              background: rgba(20,23,15,.08); border: 1px solid rgba(20,23,15,.12);
              border-radius: var(--r-pill); padding: .3rem .7rem; color: #3c433a;
            }
            .step-lede { font-size: 1.02rem; font-weight: 650; color: #14170f; margin: 0 0 .6rem; letter-spacing: -.01em; }
            .step-body { font-size: .93rem; line-height: 1.6; color: #3c433a; margin: 0 0 1.2rem; }
            .step-right .btn-accent { background: #14170f; color: #fff; box-shadow: none; }
            .step-right .btn-accent:hover { background: #2c332a; }
            @media (max-width: 780px) {
              .step-card { grid-template-columns: 1fr; }
              .step-time { display: none; }
            }
          
             
            .looks-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .85fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .looks-count { font-family: var(--mono); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--emerald); }
            .looks-note { color: var(--band-muted); font-size: .92rem; line-height: 1.6; margin: .5rem 0 0; }
            .looks { display: grid; gap: clamp(.8rem, 2vw, 1.2rem); }
             
            .look {
              display: flex; flex-direction: column;
              background: var(--band-2); border-radius: var(--r-2xl); overflow: hidden;
              border: 1px solid var(--band-line);
              transition: border-color .25s ease, transform .25s ease;
            }
            .look:hover { border-color: var(--emerald); transform: translateY(-3px); }
             
            .look-shot { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--surface); }
            .look-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .3));
              pointer-events: none;
            }
            .look-swatch { line-height: 0; margin-top: .3rem; }
            .look-swatch svg { display: block; }
            .look-meta {
              background: #fff; color: #14170f; padding: clamp(1.2rem, 2.4vw, 1.7rem);
              display: flex; flex-direction: column; gap: .45rem; flex: 1;
            }
             
            .band-dark .look .look-name {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.02; color: #14170f; margin: 0;
            }
            .look-tag { margin: 0; font-size: .95rem; line-height: 1.5; color: #4b534a; max-width: 40ch; }
            .look-link {
              display: inline-flex; align-items: center; gap: .45rem; margin-top: auto; padding-top: .6rem;
              font-size: .88rem; font-weight: 700; color: var(--emerald-deep);
            }
            .look:hover .look-link svg { transform: translateX(3px); }
            .look-link svg { transition: transform .2s ease; }
            .looks-foot {
              display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap;
              margin-top: clamp(1.4rem, 3vw, 2.2rem);
            }
            .looks-more { color: var(--band-muted); font-size: .86rem; }
            @media (min-width: 760px) { .looks { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); } }
            @media (max-width: 620px) { .looks-head { grid-template-columns: 1fr; } }
          
             
            .feat-head {
              display: flex; align-items: flex-end; justify-content: space-between;
              gap: 1.4rem; flex-wrap: wrap; margin-bottom: clamp(1.6rem, 4vw, 2.6rem);
            }
            .feats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(1.2rem, 2.6vw, 2.2rem); }
            .feat { padding-top: 1.1rem; border-top: 1px solid var(--band-line); }
            .feat-n { font-family: var(--mono); font-size: .7rem; letter-spacing: .16em; color: var(--emerald); }
            .feat-title { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: #fff; margin: .7rem 0 .45rem; }
            .feat-body { font-size: .88rem; line-height: 1.6; color: var(--band-muted); margin: 0; }
            @media (max-width: 900px) { .feats { grid-template-columns: 1fr 1fr; } }
            @media (max-width: 520px) { .feats { grid-template-columns: 1fr; } }
          
             
            .price-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .price-sub { margin: 0; color: var(--muted); font-size: .98rem; line-height: 1.6; }
          
             
            .plan-hero {
              display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
              gap: clamp(1.4rem, 4vw, 3rem); align-items: start;
              background: var(--emerald-deep); color: #fff;
              border: 1px solid var(--emerald-deep);
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.4vw, 2.6rem);
              box-shadow: 0 30px 60px -34px color-mix(in srgb, var(--emerald-deep) 70%, transparent);
            }
            .plan-hero-main { display: flex; flex-direction: column; }
            .plan-kicker {
              font-family: var(--mono); font-size: .7rem; font-weight: 500;
              letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.66);
            }
            .plan-tagline { margin: .5rem 0 0; font-size: .95rem; line-height: 1.5; color: rgba(255,255,255,.86); }
            .plan-price {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.8rem, 6vw, 4.4rem); line-height: 1; margin: .7rem 0 .2rem; color: #fff;
            }
            .plan-price span { display: block; font-size: .82rem; font-weight: 500; letter-spacing: 0; color: rgba(255,255,255,.66); margin-top: .4rem; }
            .plan-anchor { margin: .3rem 0 1.2rem; font-size: .86rem; color: rgba(255,255,255,.72); }
            .plan-note { margin: .8rem 0 0; text-align: center; font-size: .8rem; color: rgba(255,255,255,.6); }
            .plan-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; font-size: .95rem; }
            .plan-list li { display: flex; gap: .6rem; align-items: baseline; color: rgba(255,255,255,.9); }
            .plan-list li::before { content: "✓"; color: #fff; font-weight: 700; font-size: .85em; flex-shrink: 0; opacity: .8; }
            @media (min-width: 900px) { .plan-hero .plan-list { grid-template-columns: 1fr 1fr; gap: .55rem 1.4rem; } }
            @media (max-width: 780px) { .plan-hero, .price-head { grid-template-columns: 1fr; } }
          
            .ladder-head { margin: clamp(2rem, 4.5vw, 3rem) 0 .9rem; }
            .ladder-head h3 { font-size: 1.15rem; margin: 0; color: var(--heading); }
            .ladder-head p { margin: .2rem 0 0; font-size: .88rem; color: var(--muted); }
            .ladder { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: .7rem; }
            .ladder-item {
              display: grid; gap: .2rem; padding: 1rem 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg);
              background: var(--surface); transition: border-color .18s ease, transform .18s ease;
            }
            .ladder-item:hover { border-color: var(--emerald); transform: translateY(-2px); }
            .ladder-best { border-color: var(--emerald); }
            .ladder-name { font-weight: 750; font-size: .95rem; color: var(--heading); }
            .ladder-name em {
              font-style: normal; font-family: var(--mono); font-size: .6rem; letter-spacing: .09em;
              text-transform: uppercase; color: var(--emerald-deep); margin-left: .3rem;
            }
            .ladder-price { font-family: var(--text); font-weight: 800; font-size: 1.25rem; letter-spacing: -.03em; color: var(--heading); }
            .ladder-price span { font-weight: 500; font-size: .74rem; letter-spacing: 0; color: var(--faint); margin-left: .35rem; }
            .ladder-note { font-size: .82rem; line-height: 1.45; color: var(--muted); }
          
            .compare { margin-top: 1.4rem; }
            .compare summary {
              cursor: pointer; font-size: .9rem; font-weight: 700; color: var(--emerald-deep);
              padding: .6rem 0; list-style: none;
            }
            .compare summary::-webkit-details-marker { display: none; }
            .compare summary::before { content: "+ "; font-family: var(--mono); }
            .compare[open] summary::before { content: "− "; }
            .compare-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .8rem; margin-top: .9rem; }
            .compare-col {
              display: flex; flex-direction: column; padding: 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface);
            }
            .compare-price { font-family: var(--text); font-weight: 800; font-size: 1.6rem; letter-spacing: -.035em; color: var(--heading); margin-top: .4rem; }
            .compare-price span { display: block; font-size: .74rem; font-weight: 500; letter-spacing: 0; color: var(--faint); margin-top: .2rem; }
            .compare-anchor { margin: .4rem 0 .7rem; font-size: .82rem; color: var(--muted); }
             
            .compare-col .plan-list li { color: var(--ink-2); }
            .compare-col .plan-list li::before { color: var(--emerald); opacity: 1; }
            .compare-col .plan-kicker { color: var(--faint); }
            .compare-col .plan-list { margin-bottom: 1rem; font-size: .86rem; }
            .compare-col .btn { margin-top: auto; }
          
             
            .faq-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1rem, 4vw, 3rem); align-items: end; margin-bottom: clamp(1.4rem, 3vw, 2.2rem);
            }
            .faq-sub { margin: 0; color: var(--muted); }
            .faq { border-top: 1px solid var(--line); }
            .qa { border-bottom: 1px solid var(--line); }
            .qa summary {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              cursor: pointer; list-style: none; padding: 1.3rem 0;
            }
            .qa summary::-webkit-details-marker { display: none; }
            .qa-q { font-size: clamp(1rem, 1.8vw, 1.18rem); font-weight: 750; letter-spacing: -.02em; color: var(--heading); }
            .qa-sign {
              position: relative; flex-shrink: 0; width: 34px; height: 34px; border-radius: 50%;
              border: 1px solid var(--line); background: var(--surface);
              transition: border-color .2s ease, background .2s ease;
            }
            .qa-sign::before, .qa-sign::after {
              content: ""; position: absolute; left: 50%; top: 50%; background: var(--ink-2);
              transform: translate(-50%, -50%); transition: opacity .2s ease;
            }
            .qa-sign::before { width: 13px; height: 1.6px; }
            .qa-sign::after { width: 1.6px; height: 13px; }
            .qa[open] .qa-sign { border-color: var(--emerald); background: var(--emerald-soft); }
            .qa[open] .qa-sign::after { opacity: 0; }
            .qa[open] .qa-sign::before { background: var(--emerald-deep); }
            .qa:hover .qa-sign { border-color: var(--emerald); }
            .qa-a { margin: 0 0 1.4rem; color: var(--muted); max-width: 74ch; line-height: 1.6; }
            @media (max-width: 780px) { .faq-head { grid-template-columns: 1fr; align-items: start; } }
          
             
            .maker {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              flex-wrap: wrap; padding: clamp(1.2rem, 3vw, 1.8rem);
              border: 1px dashed var(--line); border-radius: var(--r-lg); background: var(--surface-2);
            }
            .maker-title { margin: .55rem 0 .3rem; font-size: 1.2rem; }
            .maker-body { margin: 0; max-width: 56ch; font-size: .88rem; color: var(--muted); }
          
             
            .closing { text-align: center; padding: clamp(3.4rem, 8vw, 6.5rem) 0 clamp(1rem, 3vw, 2rem); }
            .closing-title { margin: 0 auto; max-width: 18ch; }
            .closing-sub { margin: 1.1rem auto 1.9rem; max-width: 46ch; color: var(--muted); font-size: 1.02rem; }
          
             
            html.rv-on .rv { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s ease; }
            html.rv-on .rv.in { opacity: 1; transform: none; }
            @media (prefers-reduced-motion: reduce) {
              html.rv-on .rv { opacity: 1; transform: none; transition: none; }
            }
          </style>
          
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
            
            
            (function () {
              if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
              if (!("IntersectionObserver" in window)) return;
              document.documentElement.classList.add("rv-on");
              var io = new IntersectionObserver(function (entries) {
                entries.forEach(function (entry) {
                  if (entry.isIntersecting) {
                    entry.target.classList.add("in");
                    io.unobserve(entry.target);
                  }
                });
              }, { rootMargin: "0px 0px -8% 0px", threshold: 0.08 });
              document.querySelectorAll(".rv").forEach(function (el) { io.observe(el); });
            })();
          
            
            
            
            
            
            (function () {
              var PREVIEW_WIDTH = 1280;
              var boxes = document.querySelectorAll(".look-shot, .hero-shot");
              function fit() {
                boxes.forEach(function (box) {
                  if (!box.querySelector(".pv")) return;
                  box.style.setProperty("--pv", box.clientWidth / PREVIEW_WIDTH);
                });
              }
              fit();
              window.addEventListener("resize", fit, { passive: true });
              if ("ResizeObserver" in window) {
                var ro = new ResizeObserver(fit);
                boxes.forEach(function (box) { ro.observe(box); });
              }
            })();
          
            
            
            
            (function () {
              var steps = Array.prototype.slice.call(document.querySelectorAll(".steps .step"));
              steps.forEach(function (step) {
                step.addEventListener("toggle", function () {
                  if (!step.open) return;
                  steps.forEach(function (other) { if (other !== step) other.open = false; });
                });
              });
            })();
          </script>
          
                </div>
              </main>
          
              
              <footer class="site-footer">
                <div class="wrap footer-grid">
                  <div>
                    <span class="footer-name">WONS Sites</span>
                    <p class="footer-tag">A website you can keep up to date yourself.</p>
                  </div>
                  <nav class="footer-col" aria-label="Product">
                    <span class="label">Product</span>
                    <a href="/themes">Themes</a>
                    <a href="/#product">What you can change</a>
                    <a href="/#pricing">Pricing</a>
                    <a href="/docs">Docs</a>
                  </nav>
                  <nav class="footer-col" aria-label="Account">
                    <span class="label">Account</span>
                    <a href="/login">Log in</a>
                    <a href="/signup">Start your site</a>
                    <a href="/dashboard">Dashboard</a>
                  </nav>
                  <div>
                    <p class="footer-sub-head">Start with your email</p>
                    <p class="footer-sub-copy">It takes you straight to sign-up — free plan, no card needed.</p>
                    <form class="footer-sub" action="/signup" method="get">
                      <input type="email" name="email" placeholder="Your email address" aria-label="Email address">
                      <button class="sub-btn" type="submit" aria-label="Start your site">
                        <svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </button>
                    </form>
                  </div>
                </div>
                <div class="wrap footer-base">
                  <span>© 2026 WONS Sites. All rights reserved.</span>
                  <span>Made by WONS</span>
                </div>
              </footer>
              
            </div>
          
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              var themeToggle = document.getElementById("themeToggle");
              if (themeToggle) themeToggle.addEventListener("click", function () {
                var root = document.documentElement;
                var current = root.getAttribute("data-theme");
                var systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
                var next = (current ? current === "dark" : systemDark) ? "light" : "dark";
                root.setAttribute("data-theme", next);
                try { localStorage.setItem("wons-sites-theme", next); } catch (e) {}
              });
          
              
              var navToggle = document.getElementById("navToggle");
              var topbar = document.getElementById("topbar");
              if (navToggle && topbar) navToggle.addEventListener("click", function () {
                var open = topbar.classList.toggle("open");
                navToggle.setAttribute("aria-expanded", open ? "true" : "false");
              });
          
              
              
              
              (function () {
                var bar = document.getElementById("topbar");
                if (!bar) return;
                var mark = function () {
                  bar.classList.toggle("stuck", window.scrollY > 72);
                };
                mark();
                window.addEventListener("scroll", mark, { passive: true });
              })();
          
              (function () {
                var path = location.pathname.replace(/\/+$/, "") || "/";
                var best = null, bestLen = -1;
                document.querySelectorAll(".nav a.link").forEach(function (a) {
                  var href = (a.getAttribute("href") || "").replace(/\/+$/, "") || "/";
                  var match = href === "/" ? path === "/" : (path === href || path.indexOf(href + "/") === 0);
                  if (match && href.length > bestLen) { best = a; bestLen = href.length; }
                });
                if (best) best.classList.add("active");
              })();
            </script>
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">(function(){
          	var es = new EventSource("/__wons/dev/reload");
          	es.onmessage = function(){ location.reload() };
          	// Close the stream the instant the page is left. Without this, each
          	// navigation leaves its SSE connection lingering; a few quick clicks
          	// exhaust the browser's ~6-per-origin HTTP/1.1 connection cap and every
          	// further request (including the next page) stalls until the stale
          	// streams time out. Closing on pagehide frees the slot immediately.
          	window.addEventListener("pagehide", function(){ es.close(); });
          })()</script></body>
          </html>
          
          Parameter
          wons_csrf
          Evidence
          wons_csrf
          Solution

          This is an informational alert rather than a vulnerability and so there is nothing to fix.

      5. User Agent Fuzzer (1)
        1. GET https://sites.wons.bt/
          Alert tags
          • CUSTOM_PAYLOADS =
          • POLICY_PENTEST =
          • SYSTEMIC
          Alert description

          Check for differences in response based on fuzzed User Agent (eg. mobile sites, access as a Search Engine Crawler). Compares the response statuscode and the hashcode of the response body with the original response.

          Request
          Request line and header section (469 bytes)
          GET https://sites.wons.bt/ HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)
          Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
          Accept-Language: en-US,en;q=0.5
          Connection: keep-alive
          Cookie: wons_csrf=7MjMV85dc1ZdN5x79yOE.3d4f59497ad5fcd3369e9f0c32e5fd5a
          Upgrade-Insecure-Requests: 1
          Sec-Fetch-Dest: document
          Sec-Fetch-Mode: navigate
          Sec-Fetch-Site: none
          Sec-Fetch-User: ?1
          Priority: u=0, i
          
          
          Request body (0 bytes)
          Response
          Status line and header section (279 bytes)
          HTTP/1.1 403 Forbidden
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:48:59 GMT
          Content-Type: application/json
          Content-Length: 52
          Connection: keep-alive
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Xss-Protection: 1; mode=block
          
          
          Response body (52 bytes)
          {"data":{},"message":"Access denied.","status":403}
          
          Parameter
          Header User-Agent
          Attack
          Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)
  8. Risk=Informational, Confidence=Low (2)

    1. https://sites.wons.bt (2)

      1. Re-examine Cache-control Directives (1)
        1. GET https://sites.wons.bt
          Alert tags
          Alert description

          The cache-control header has not been set properly or is missing, allowing the browser and proxies to cache content. For static assets like css, js, or image files this might be intended, however, the resources should be reviewed to ensure that no sensitive content will be cached.

          Request
          Request line and header section (227 bytes)
          GET https://sites.wons.bt HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          
          
          Request body (0 bytes)
          Response
          Status line and header section (805 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:42:54 GMT
          Content-Type: text/html; charset=utf-8
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-iB8Q5DnSVjWx_AOLdlto8Q'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Set-Cookie: wons_csrf=y550JyNiyw54uLkFFzWS.e2ec5c27689fa4cf2714635ce48a4a48; Path=/; Max-Age=2592000; HttpOnly; SameSite=Lax
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          content-length: 81797
          
          
          Response body (81797 bytes)
          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>WONS Sites — your website, edited like a dashboard</title>
            <meta name="description" content="A website you can keep up to date yourself. Pick a look, fill in your pages, and it is live — no domain to buy, no developer, no rebuilds.">
            
              <link rel="icon" href="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfNHZ2NmczbWVkby5wbmc&amp;s=9821682f6dcdfe2a0cd279db1dd9c9d12d0cc8dda08970ee8913adbff07f2aee">
            
            <link rel="preload" href="/fonts/Manrope-500-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-italic-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="stylesheet" href="/fonts/fonts.css">
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              (function () {
                try {
                  var t = localStorage.getItem("wons-sites-theme");
                  if (t) document.documentElement.setAttribute("data-theme", t);
                } catch (e) {}
              })();
            </script>
            <style>
              :root {
                --emerald:      #0d9d63;
                --emerald-deep: #077a4b;
                --emerald-dark: #05603a;
                --emerald-soft: #e7f6ee;
                --emerald-line: #c6e8d6;
          
                --heading:      #1d3b2c;
                --cta-bg:       #1d4d33;
                --cta-bg-hover: #266040;
                --cta-fg:       #ffffff;
          
                --canvas:    #fdfcf8;
                --surface:   #ffffff;
                --surface-2: #f2f6ef;
                --ink:       #22302a;
                --ink-2:     #435248;
                --muted:     #5f6f66;
                --faint:     #8fa096;
                --line:      #e6e9df;
                --line-soft: #eef1e8;
          
                --warn:      #b4690e;
                --warn-soft: #fdf3e4;
                --bad:       #c8372c;
                --bad-soft:  #fdeeec;
                --ok:        var(--emerald);
          
                 
                --band:       #0f100f;
                --band-2:     #171a18;
                --band-fg:    #ffffff;
                --band-muted: #9aa39e;
                --band-line:  #2a2f2c;
                --band-card:  #d5dad3;
          
                --r-xs: 8px;
                --r:    12px;
                --r-lg: 18px;
                --r-xl: 26px;
                --r-2xl: 34px;
                --r-pill: 999px;
          
                --shadow-sm: 0 1px 2px rgba(16,30,24,.05);
                --shadow:    0 1px 2px rgba(16,30,24,.04), 0 12px 28px -18px rgba(16,30,24,.24);
                --shadow-lg: 0 32px 64px -34px rgba(10,40,28,.40);
                --ring:      0 0 0 3px rgba(13,157,99,.20);
          
                --display: "Fraunces", Georgia, "Times New Roman", serif;
                --text:    "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
                --mono:    ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
          
                --maxw: min(1280px, calc(100vw - 3em));
                --nav-h: 68px;
                color-scheme: light;
              }
          
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) {
                  --emerald:      #2fc98a;
                  --emerald-deep: #21b077;
                  --emerald-dark: #8ce8bf;
                  --emerald-soft: #10281f;
                  --emerald-line: #1d4436;
                  --heading:      #eef2f0;
                  --cta-bg:       #2fc98a;
                  --cta-bg-hover: #4dd69c;
                  --cta-fg:       #06120d;
                  --canvas:    #0b0f0e;
                  --surface:   #121817;
                  --surface-2: #182120;
                  --ink:       #eef2f0;
                  --ink-2:     #c3ccc9;
                  --muted:     #97a3a0;
                  --faint:     #6a7674;
                  --line:      #222c2a;
                  --line-soft: #1a2322;
                  --warn:      #e0a55a;
                  --warn-soft: #2a2113;
                  --bad:       #f0776a;
                  --bad-soft:  #2c1613;
                  --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                  --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                  --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                  --ring:      0 0 0 3px rgba(47,201,138,.26);
                  color-scheme: dark;
                }
              }
              :root[data-theme="dark"] {
                --emerald:      #2fc98a;
                --emerald-deep: #21b077;
                --emerald-dark: #8ce8bf;
                --emerald-soft: #10281f;
                --emerald-line: #1d4436;
                --heading:      #eef2f0;
                --cta-bg:       #2fc98a;
                --cta-bg-hover: #4dd69c;
                --cta-fg:       #06120d;
                --canvas:    #0b0f0e;
                --surface:   #121817;
                --surface-2: #182120;
                --ink:       #eef2f0;
                --ink-2:     #c3ccc9;
                --muted:     #97a3a0;
                --faint:     #6a7674;
                --line:      #222c2a;
                --line-soft: #1a2322;
                --warn:      #e0a55a;
                --warn-soft: #2a2113;
                --bad:       #f0776a;
                --bad-soft:  #2c1613;
                --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                --ring:      0 0 0 3px rgba(47,201,138,.26);
                color-scheme: dark;
              }
              *, *::before, *::after { box-sizing: border-box; }
              html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
              body {
                margin: 0;
                font-family: var(--text);
                font-size: 16px; line-height: 1.6; letter-spacing: -.006em;
                color: var(--ink); background: var(--canvas);
                -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
              }
              a { color: inherit; text-decoration: none; }
              ::selection { background: var(--emerald); color: #fff; }
              img { max-width: 100%; height: auto; }
              hr { border: 0; border-top: 1px solid var(--line); margin: 2rem 0; }
          
              h1, h2 { font-family: var(--display); margin: 0 0 .6rem; }
              h3, h4 { font-family: var(--text); margin: 0 0 .6rem; }
              h1 { font-size: clamp(2.5rem, 5.4vw, 3.9rem); font-weight: 620; line-height: 1.06; letter-spacing: -.015em; color: var(--heading); }
              h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); font-weight: 600; line-height: 1.12; letter-spacing: -.012em; color: var(--heading); }
              h3 { font-size: 1.16rem; font-weight: 750; line-height: 1.25; letter-spacing: -.015em; color: var(--heading); }
              h4 { font-size: .98rem; font-weight: 750; letter-spacing: -.01em; }
          
               
              body:not(.app) h1,
              body:not(.app) h2 { font-family: var(--text); font-weight: 800; letter-spacing: -.04em; }
              body:not(.app) h1 { font-size: clamp(2.6rem, 6vw, 4.6rem); line-height: .98; }
              body:not(.app) h2 { font-size: clamp(2rem, 4.4vw, 3.4rem); line-height: 1.02; }
          
               
              body:not(.app) .d-xl,
              .d-xl { font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
                      font-size: clamp(3rem, 8.6vw, 7rem); line-height: .92; margin: 0; color: var(--heading); }
              body:not(.app) .d-lg,
              .d-lg { font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
                      font-size: clamp(2.2rem, 5vw, 3.9rem); line-height: 1; margin: 0; color: var(--heading); }
              body:not(.app) .d-thin,
              .d-thin { font-family: var(--text); font-weight: 300; letter-spacing: -.035em;
                        font-size: clamp(2rem, 5.4vw, 4.2rem); line-height: 1.04; margin: 0; color: var(--heading); }
              p  { margin: 0 0 1rem; }
              .lede { font-size: clamp(1.02rem, 1.6vw, 1.18rem); line-height: 1.55; color: var(--muted); max-width: 48ch; }
              .muted { color: var(--muted); }
              .faint { color: var(--faint); }
              .tiny  { font-size: .82rem; }
              .label {
                font-family: var(--mono); font-size: .7rem; font-weight: 500;
                letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              }
              .kicker {
                display: inline-flex; align-items: center; gap: .55rem;
                font-family: var(--mono); font-size: .71rem; font-weight: 500;
                letter-spacing: .16em; text-transform: uppercase; color: var(--emerald-deep);
              }
              .kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .6; }
              code {
                font-family: var(--mono); font-size: .85em;
                background: var(--surface-2); border: 1px solid var(--line);
                border-radius: 6px; padding: .08em .4em; color: var(--ink-2);
              }
          
              .shell {
                min-height: 100vh; display: flex; flex-direction: column;
                overflow-x: clip;
              }
              .wrap { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              .topbar {
                position: sticky; top: 0; z-index: 60; height: var(--nav-h);
                display: flex; align-items: center;
                background: color-mix(in srgb, var(--canvas) 88%, transparent);
                backdrop-filter: saturate(1.6) blur(14px); -webkit-backdrop-filter: saturate(1.6) blur(14px);
                border-bottom: 1px solid var(--line);
              }
              .topbar .bar { display: flex; align-items: center; gap: 1.4rem; width: 100%; }
          
               
              body:not(.app) .topbar {
                position: fixed; top: 0; left: 0; right: 0; height: auto;
                padding: 14px 0; background: none; border: 0;
                backdrop-filter: none; -webkit-backdrop-filter: none;
                transition: padding .25s ease;
              }
               
              body:not(.app) .topbar .bar {
                position: relative;
                padding: .5rem .55rem .5rem 1.15rem; border-radius: var(--r-pill);
                background: color-mix(in srgb, var(--surface) 92%, transparent);
                border: 1px solid var(--line); box-shadow: var(--shadow-sm);
                backdrop-filter: saturate(1.5) blur(16px); -webkit-backdrop-filter: saturate(1.5) blur(16px);
                transition: background .25s ease, border-color .25s ease, box-shadow .25s ease;
              }
          
               
              body.hero-top:not(.app) .topbar .bar {
                background: rgba(255, 255, 255, .12);
                border-color: rgba(255, 255, 255, .22);
                box-shadow: none;
              }
              body.hero-top:not(.app) .topbar .brand,
              body.hero-top:not(.app) .topbar .nav a.link,
              body.hero-top:not(.app) .topbar .nav-actions a.link { color: #fff; }
              body.hero-top:not(.app) .topbar .nav a.link:hover,
              body.hero-top:not(.app) .topbar .nav-actions a.link:hover { color: #fff; background: rgba(255,255,255,.16); }
              body.hero-top:not(.app) .topbar .icon-btn { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.24); color: #fff; }
              body.hero-top:not(.app) .topbar .icon-btn:hover { border-color: #fff; color: #fff; }
              body.hero-top:not(.app) .topbar .brand .mark { box-shadow: none; }
          
              body:not(.app) .topbar.stuck { padding: 8px 0; }
              body.hero-top:not(.app) .topbar.stuck .bar {
                background: color-mix(in srgb, var(--surface) 94%, transparent);
                border-color: var(--line); box-shadow: var(--shadow);
              }
              body.hero-top:not(.app) .topbar.stuck .brand { color: var(--heading); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link { color: var(--ink-2); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link:hover,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn { background: var(--surface); border-color: var(--line); color: var(--muted); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
          
              .brand { display: inline-flex; align-items: center; gap: .6rem; font-family: var(--text); font-weight: 800; letter-spacing: -.03em; font-size: 1.05rem; color: var(--heading); flex-shrink: 0; }
              .brand .mark {
                width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
                background: linear-gradient(145deg, var(--emerald), var(--emerald-dark));
                color: #fff; font-size: .82rem; font-weight: 800; letter-spacing: -.02em;
                box-shadow: 0 6px 14px -6px rgba(7,122,75,.7);
              }
              :root[data-theme="dark"] .brand .mark { color: #06120d; }
              .brand .mark-img { background: none; box-shadow: none; object-fit: contain; border-radius: 7px; }
              .brand .mark-dark { display: none; }
              :root[data-theme="dark"] .brand .mark-light { display: none; }
              :root[data-theme="dark"] .brand .mark-dark { display: block; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .brand .mark-light { display: none; }
                :root:not([data-theme="light"]) .brand .mark-dark { display: block; }
              }
          
              .nav { display: flex; align-items: center; justify-content: center; gap: .4rem; flex: 1; }
              .nav a.link, .nav-actions a.link {
                display: inline-flex; align-items: center; gap: .42rem;
                padding: .45rem .75rem; border-radius: var(--r-xs);
                font-size: .93rem; font-weight: 600; color: var(--ink-2);
                transition: color .15s, background .15s;
              }
              .nav a.link:hover, .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              .nav a.link.active { color: var(--heading); }
              .nav-actions { display: flex; align-items: center; gap: .45rem; flex-shrink: 0; }
          
              .icon-btn {
                display: grid; place-items: center; width: 36px; height: 36px; flex-shrink: 0;
                border: 1px solid var(--line); border-radius: var(--r-xs);
                background: var(--surface); color: var(--muted); cursor: pointer;
                font: inherit; font-size: .95rem; padding: 0;
                transition: border-color .15s, color .15s;
              }
              .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .theme-toggle .sun { display: none; } .theme-toggle .moon { display: block; }
              :root[data-theme="dark"] .theme-toggle .sun { display: block; }
              :root[data-theme="dark"] .theme-toggle .moon { display: none; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .theme-toggle .sun { display: block; }
                :root:not([data-theme="light"]) .theme-toggle .moon { display: none; }
              }
              #navToggle { display: none; }
          
              @media (max-width: 860px) {
                #navToggle { display: grid; }
                .nav-actions a.link.nav-login { display: none; }
                .nav {
                  display: none; position: absolute; top: var(--nav-h); left: 0; right: 0;
                  flex-direction: column; align-items: stretch; gap: .1rem;
                  padding: .8rem clamp(1.1rem, 4vw, 2rem) 1.2rem;
                  background: var(--surface); border-bottom: 1px solid var(--line);
                  box-shadow: var(--shadow-lg);
                }
                .topbar.open .nav { display: flex; }
          
                 
                body:not(.app) .nav {
                  top: calc(100% + .5rem); left: .25rem; right: .25rem;
                  border: 1px solid var(--line); border-radius: var(--r-lg);
                  padding: .6rem .7rem .8rem;
                }
                body.hero-top:not(.app) .topbar.open .nav a.link,
                body:not(.app) .topbar.open .nav a.link { color: var(--ink-2); }
                body.hero-top:not(.app) .topbar.open .nav a.link:hover { background: var(--surface-2); color: var(--heading); }
              }
          
               
              @media (max-width: 620px) {
                body:not(.app) .topbar .brand { font-size: 0; gap: 0; }
                body:not(.app) .topbar .brand .mark { font-size: .82rem; }
                body:not(.app) .topbar .bar { gap: .6rem; padding-left: .55rem; }
                body:not(.app) .topbar .nav-actions { gap: .35rem; }
                body:not(.app) .topbar .nav-actions .btn { padding: .5rem .85rem; font-size: .82rem; }
                body:not(.app) .icon-btn { width: 34px; height: 34px; }
              }
          
              main { flex: 1; padding: clamp(2.2rem, 5vw, 4rem) 0 clamp(3.5rem, 7vw, 5.5rem); }
               
              body:not(.app) main { padding-top: calc(var(--nav-h) + clamp(1.4rem, 4vw, 2.6rem)); }
              body.hero-top:not(.app) main { padding-top: 0; }
               
              body.hero-top:not(.app) .flash { margin-top: calc(var(--nav-h) + 1rem); }
              body.app main { padding: 0; }
              body.app .wrap { max-width: none; padding: 0; }
          
               
              .bleed { width: 100vw; margin-left: calc(50% - 50vw); }
          
              .site-footer {
                background: var(--band); color: var(--band-fg);
                padding: clamp(2.4rem, 5vw, 3.6rem) 0 1.2rem;
                overflow: hidden;
              }
              .site-footer .footer-name,
              .site-footer .footer-sub-head { color: var(--band-fg); }
              .site-footer .footer-tag,
              .site-footer .footer-sub-copy,
              .site-footer .footer-col a { color: var(--band-muted); }
              .site-footer .label { color: #6f7a75; }
              .site-footer .footer-col a:hover { color: var(--band-fg); }
              .site-footer input[type=email] {
                background: var(--band-2); border-color: var(--band-line); color: var(--band-fg);
              }
              .site-footer input[type=email]::placeholder { color: #6f7a75; }
              .site-footer .sub-btn { background: var(--emerald); color: #06120d; }
              .site-footer .sub-btn:hover { background: var(--emerald-deep); color: #fff; }
              .site-footer .footer-base { border-top-color: var(--band-line); color: #6f7a75; }
              .footer-grid {
                display: grid; grid-template-columns: 1.4fr .8fr .8fr 1.2fr; gap: 2rem;
                padding-bottom: clamp(1.4rem, 3vw, 2.2rem);
              }
              .footer-name {
                font-family: var(--text); font-weight: 800; letter-spacing: -.03em;
                font-size: 1.05rem; color: var(--heading);
              }
              .footer-tag { margin: .5rem 0 0; font-size: .88rem; color: var(--muted); max-width: 30ch; }
              .footer-col .label { display: block; margin-bottom: .7rem; }
              .footer-col a { display: block; padding: .24rem 0; font-size: .9rem; color: var(--muted); }
              .footer-col a:hover { color: var(--emerald-deep); }
              .footer-sub-head { font-size: .95rem; font-weight: 750; color: var(--heading); margin: 0 0 .35rem; }
              .footer-sub-copy { font-size: .84rem; color: var(--muted); margin: 0 0 .8rem; max-width: 32ch; }
              .footer-sub { display: flex; gap: .5rem; }
              .footer-sub input[type=email] { flex: 1; min-width: 0; }
              .footer-sub .sub-btn {
                display: grid; place-items: center; width: 46px; flex-shrink: 0;
                border: 0; border-radius: var(--r); cursor: pointer;
                background: var(--cta-bg); color: var(--cta-fg); font: inherit;
                transition: background .15s;
              }
              .footer-sub .sub-btn:hover { background: var(--cta-bg-hover); }
              .footer-base {
                display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
                border-top: 1px solid var(--line-soft); padding-top: 1.2rem;
                font-family: var(--mono); font-size: .72rem; color: var(--faint);
              }
              @media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
              @media (max-width: 520px) { .footer-grid { grid-template-columns: 1fr; gap: 1.4rem; } }
          
              .btn {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-family: var(--text); font-weight: 600; font-size: .95rem;
                line-height: 1; cursor: pointer; white-space: nowrap; text-decoration: none;
                padding: .78rem 1.3rem; border-radius: var(--r); border: 1px solid transparent;
                transition: transform .08s, filter .15s, border-color .15s, background .15s, color .15s;
              }
              .btn:active { transform: translateY(1px); }
              .btn-primary { background: var(--ink); color: var(--canvas); }
              .btn-primary:hover { filter: brightness(1.22); }
              :root[data-theme="dark"] .btn-primary { background: var(--emerald); color: #06120d; }
              .btn-accent {
                background: var(--cta-bg); color: var(--cta-fg);
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
              }
              .btn-accent:hover { background: var(--cta-bg-hover); }
              .btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line); box-shadow: var(--shadow-sm); }
              .btn-ghost:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .btn-quiet { background: transparent; color: var(--muted); padding-left: .6rem; padding-right: .6rem; }
              .btn-quiet:hover { color: var(--ink); }
              .btn-sm { padding: .5rem .85rem; font-size: .86rem; border-radius: var(--r-xs); }
              .btn-block { width: 100%; }
              .btn[disabled] { opacity: .5; cursor: not-allowed; }
          
               
              body:not(.app) .btn { border-radius: var(--r-pill); padding: .88rem 1.6rem; }
              body:not(.app) .btn-sm { padding: .55rem 1.05rem; font-size: .86rem; }
              body:not(.app) form button:not([class]) { border-radius: var(--r-pill); }
              .btn-onband { background: #fff; color: var(--band); }
              .btn-onband:hover { background: #fff; filter: brightness(.94); }
              .btn-outline-band { background: transparent; color: #fff; border-color: rgba(255,255,255,.32); }
              .btn-outline-band:hover { border-color: #fff; background: rgba(255,255,255,.08); }
          
               
              .band { position: relative; padding: clamp(3rem, 7vw, 6rem) 0; }
               
              .band-dark + .band-dark { padding-top: 0; }
              .band-dark { background: var(--band); color: var(--band-fg); }
               
              body:not(.app) .band-dark h1, body:not(.app) .band-dark h2,
              body:not(.app) .band-dark h3, body:not(.app) .band-dark .d-xl,
              body:not(.app) .band-dark .d-lg, body:not(.app) .band-dark .d-thin { color: var(--band-fg); }
              .band-dark .muted, .band-dark .lede { color: var(--band-muted); }
              .band-dark .label { color: #6f7a75; }
              .band-dark .kicker { color: var(--emerald); }
               
              .band-paper { background: var(--surface-2); color: var(--ink); }
              .band-accent { background: var(--emerald-deep); color: #fff; }
              body:not(.app) .band-accent h2, body:not(.app) .band-accent h3,
              body:not(.app) .band-accent .d-lg, body:not(.app) .band-accent .d-xl { color: #fff; }
              .band-accent .lede, .band-accent .muted { color: rgba(255,255,255,.78); }
              .band-accent .label, .band-accent .kicker { color: rgba(255,255,255,.66); }
              .band-accent .kicker::before { background: currentColor; }
              .band-inner { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              form button:not([class]) {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-weight: 600; cursor: pointer; color: var(--cta-fg); border: 0;
                background: var(--cta-bg);
                border-radius: var(--r); padding: .78rem 1.4rem;
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
                transition: background .15s, transform .08s;
              }
              form button:not([class]):hover { background: var(--cta-bg-hover); }
              form button:not([class]):active { transform: translateY(1px); }
          
              .card {
                background: var(--surface); border: 1px solid var(--line);
                border-radius: var(--r-lg); padding: 1.5rem 1.6rem; box-shadow: var(--shadow);
              }
              .card.tight { padding: 1.1rem 1.2rem; }
              .card.flush { padding: 0; overflow: hidden; }
              .panel { background: var(--surface-2); border: 1px solid var(--line-soft); border-radius: var(--r); padding: 1.1rem 1.2rem; }
              .stack > * + * { margin-top: 1.1rem; }
              .row { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
              .row-between { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
              .grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
              .grid-2 { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
              .center-narrow { max-width: 460px; margin: 0 auto; }
          
              .pill {
                display: inline-flex; align-items: center; gap: .35rem;
                font-family: var(--mono); font-size: .68rem; font-weight: 500;
                letter-spacing: .08em; text-transform: uppercase;
                padding: .26rem .6rem; border-radius: 999px;
                background: var(--surface-2); color: var(--muted); border: 1px solid var(--line);
              }
              .pill { align-self: flex-start; }
              .pill.ok   { background: var(--emerald-soft); color: var(--emerald-deep); border-color: var(--emerald-line); }
              .pill.warn { background: var(--warn-soft); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 32%, transparent); }
              .pill.bad  { background: var(--bad-soft); color: var(--bad); border-color: color-mix(in srgb, var(--bad) 30%, transparent); }
              .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
              .field { display: block; margin-bottom: 1.05rem; }
              .field > .lbl { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; font-size: .88rem; font-weight: 600; margin-bottom: .38rem; }
              .field > .lbl .hint { font-weight: 400; font-size: .8rem; color: var(--faint); }
              input[type=text], input[type=email], input[type=password], input[type=url],
              input[type=number], input[type=date], input[type=search], textarea, select {
                display: block; width: 100%; font: inherit; font-size: .95rem; color: var(--ink);
                background: var(--surface); border: 1px solid var(--line); border-radius: var(--r);
                padding: .72rem .9rem; transition: border-color .15s, box-shadow .15s;
              }
              textarea { min-height: 120px; resize: vertical; line-height: 1.55; }
              input::placeholder, textarea::placeholder { color: var(--faint); }
              input:focus, textarea:focus, select:focus { outline: 0; border-color: var(--emerald); box-shadow: var(--ring); }
              input[aria-invalid="true"], textarea[aria-invalid="true"] { border-color: var(--bad); }
              input[type=checkbox], input[type=radio] { accent-color: var(--emerald); width: auto; }
              .err { display: block; color: var(--bad); font-size: .84rem; font-weight: 500; margin-top: .35rem; }
              fieldset { border: 0; margin: 0; padding: 0; }
          
              .progress { height: 6px; border-radius: 999px; background: var(--surface-2); overflow: hidden; border: 1px solid var(--line-soft); }
              .progress > i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--emerald), var(--emerald-deep)); }
          
              .flash {
                display: flex; align-items: flex-start; gap: .6rem;
                background: var(--surface-2); color: var(--ink-2);
                border: 1px solid var(--line); border-radius: var(--r);
                padding: .8rem 1.05rem; margin-bottom: 1.4rem; font-weight: 500; font-size: .93rem;
                animation: flashIn .22s ease;
              }
              .flash::before { content: "→"; font-weight: 800; color: var(--muted); }
              .flash.warn {
                background: #fdf6e7; color: #8a5a00; border-color: #f0dcae;
              }
              :root[data-theme="dark"] .flash.warn { color: #8a5a00; }
              .flash.warn::before { content: "!"; }
              .flash.ok {
                background: #eaf7f0; color: #10633f; border-color: #bfe3d0;
              }
              :root[data-theme="dark"] .flash.ok { color: #10633f; }
              .flash.ok::before { content: "\2713"; color: #10633f; }
              .flash.error {
                background: #fdeceb; color: #8c2b22; border-color: #f3c8c4;
              }
              :root[data-theme="dark"] .flash.error { color: #8c2b22; }
              .flash.error::before { content: "\2715"; color: #8c2b22; }
              @keyframes flashIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
              .auth-centered { text-align: center; padding-top: clamp(.2rem, 2vw, 1rem); }
              .auth-centered .kicker { justify-content: center; }
              .auth-centered .lede { margin-left: auto; margin-right: auto; }
              .auth-centered .card { text-align: left; }
          
              .ticks { list-style: none; margin: 1.1rem 0; padding: 0; display: grid; gap: .55rem; font-size: .93rem; }
              .ticks li { display: flex; gap: .6rem; align-items: baseline; color: var(--ink-2); }
              .ticks li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
          
              table { width: 100%; border-collapse: collapse; }
              th, td { text-align: left; padding: .7rem .6rem; font-size: .92rem; }
              th { font-family: var(--mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--faint); font-weight: 500; border-bottom: 1px solid var(--line); }
              td { border-bottom: 1px solid var(--line-soft); }
              tr:last-child td { border-bottom: 0; }
          
              .page-head { margin-bottom: clamp(1.6rem, 3vw, 2.4rem); max-width: 58ch; }
              .page-head .kicker { margin-bottom: .9rem; }
              .backlink { display: inline-flex; align-items: center; gap: .35rem; color: var(--faint); font-size: .88rem; margin-bottom: .9rem; }
              .backlink:hover { color: var(--emerald-deep); }
          
              @media (prefers-reduced-motion: reduce) {
                *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
              }
            </style>
          <script src="/__wons/sdk/pocketbase.umd.js"></script><script src="/__wons/sdk/wons.umd.js" data-wons-global="Wons"></script></head>
          <body class=" hero-top">
            <div class="shell">
              
              <header class="topbar" id="topbar">
                <div class="wrap"><div class="bar">
                  <a class="brand" href="/">
                    
                      <img class="mark mark-img mark-light"
                           src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfamd1aGFzNnMzcC5wbmc&amp;s=3ac7de0667a74e2dd9a505b782187df00961b7c1becb2295ec58ea7be28ed09d" alt="" width="30" height="30">
                      
                        <img class="mark mark-img mark-dark" src="/__wons/download?a=0&amp;e=1786819373&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfZmx5MHF4YXBrOS5wbmc&amp;s=394107603c20e2e16f57f48cc71aeda97460e22e87ebcf8ec27284364a7ea208" alt="" width="30" height="30">
                      
                    
                    WONS Sites
                  </a>
                  <nav class="nav" id="nav">
                    
                      <a class="link" href="/#product">Features</a>
                    
                      <a class="link" href="/themes">Themes</a>
                    
                      <a class="link" href="/#pricing">Pricing</a>
                    
                      <a class="link" href="/docs">Docs</a>
                    
                  </nav>
                  <div class="nav-actions">
                    
                      <a class="link nav-login" href="/login">Log in</a>
                      <a class="btn btn-accent btn-sm" href="/signup">Start Free</a>
                    
                    <button class="icon-btn theme-toggle" id="themeToggle" type="button" aria-label="Toggle dark mode">
                      <svg class="moon" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <path d="M20.4 14.7A8.7 8.7 0 0 1 9.3 3.6 8.7 8.7 0 1 0 20.4 14.7Z"/>
                      </svg>
                      <svg class="sun" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <circle cx="12" cy="12" r="4.1"/>
                        <path d="M12 2.5v2.2M12 19.3v2.2M4.6 4.6l1.6 1.6M17.8 17.8l1.6 1.6M2.5 12h2.2M19.3 12h2.2M4.6 19.4l1.6-1.6M17.8 6.2l1.6-1.6"/>
                      </svg>
                    </button>
                    <button class="icon-btn" id="navToggle" type="button" aria-label="Toggle menu" aria-expanded="false">☰</button>
                  </div>
                </div></div>
              </header>
              
          
              <main>
                <div class="wrap">
                  
                    
                  
                  
          
          
          <section class="hero bleed">
            <div class="hero-art" aria-hidden="true">
              
                
                  <div class="hero-shot hs-a">
                    <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-b">
                    <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
                  <div class="hero-shot hs-c">
                    <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                            tabindex="-1" scrolling="no" aria-hidden="true" sandbox="allow-scripts"></iframe>
                  </div>
                
              
            </div>
            <div class="hero-veil" aria-hidden="true"></div>
          
            <div class="hero-inner band-inner">
              <div class="hero-meta">
                
                
                <div class="hm">
                  <span class="hm-k">Plan</span>
                  <span class="hm-v">Free forever</span>
                  <span class="hm-n">No card, nothing to cancel</span>
                </div>
                
                <div class="hm">
                  <span class="hm-k">Address</span>
                  <span class="hm-v">yourname.sites.wons.bt</span>
                  <span class="hm-n">Included the moment you sign up</span>
                </div>
                
                <div class="hm hm-last">
                  <span class="hm-k">Themes</span>
                  <span class="hm-v">15 to choose from</span>
                  <span class="hm-n">Switch any time, content stays</span>
                </div>
                
              </div>
          
              <div class="hero-body">
                <h1 class="hero-title">Build a website.<br>Share your world.</h1>
                <div class="hero-foot">
                  <div class="hero-actions">
                    <a class="btn btn-accent btn-lg" href="/signup">Start free
                      <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                    </a>
                    <a class="btn btn-outline-band btn-lg" href="#looks">See the themes</a>
                  </div>
                  <p class="hero-note">
                    For shops, schools, communities, creators and small organisations.
                    No coding, and nothing to buy before you begin.
                  </p>
                </div>
              </div>
            </div>
          </section>
          
          
          <section class="section reasons" id="why">
            <h2 class="d-xl reasons-title rv">Reasons to<br>start today</h2>
            <div class="reasons-copy rv">
              <p>
                <em>A website you can keep up to date yourself.</em> Most sites go stale
                because changing one line means calling whoever built it. Here every
                part of the page is a form — <em>a rate, a menu, an opening hour, a
                photograph</em> — and the change is live on the next visit.
              </p>
              <p>
                Your content lives here. <em>Your site can stay wherever it is hosted
                today</em>, reading everything from one address.
              </p>
            </div>
          </section>
          
          
          
          <section class="section statement">
            <p class="d-thin statement-line rv">A brochure site costs<br>Nu. 40,000 – 90,000 to rebuild</p>
            <div class="range rv">
              <span class="range-a">Rebuild</span>
              <span class="range-arrow" aria-hidden="true">
                <svg viewBox="0 0 120 12" preserveAspectRatio="none"><path d="M2 6h108M104 2l7 4-7 4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
              </span>
              <span class="range-b">Free</span>
              <span class="range-tail">to start here</span>
            </div>
          </section>
          
          
          <section class="section tilt-section" id="product">
            <div class="tilt-head rv">
              <span class="kicker">Yours to change</span>
              <h2>The things that actually go out of date.</h2>
            </div>
            <div class="tilt-row" aria-label="Examples of content you edit yourself">
              
                <figure class="tilt-card ct-a">
                  <span class="tc-field">Room rate</span>
                  <span class="tc-value">Nu. 3,500 / night</span>
                  <figcaption class="tc-note">Before the season turns</figcaption>
                </figure>
              
                <figure class="tilt-card ct-b">
                  <span class="tc-field">Today&#39;s menu</span>
                  <span class="tc-value">Ema datshi, red rice</span>
                  <figcaption class="tc-note">From your phone</figcaption>
                </figure>
              
                <figure class="tilt-card ct-c">
                  <span class="tc-field">Opening hours</span>
                  <span class="tc-value">Closed for Losar</span>
                  <figcaption class="tc-note">Set it and forget it</figcaption>
                </figure>
              
                <figure class="tilt-card ct-d">
                  <span class="tc-field">Team</span>
                  <span class="tc-value">Pema — Front desk</span>
                  <figcaption class="tc-note">A new photo when someone joins</figcaption>
                </figure>
              
                <figure class="tilt-card ct-e">
                  <span class="tc-field">Tour dates</span>
                  <span class="tc-value">Mar 14 – Mar 22</span>
                  <figcaption class="tc-note">Next spring, added early</figcaption>
                </figure>
              
                <figure class="tilt-card ct-f">
                  <span class="tc-field">Notice</span>
                  <span class="tc-value">Road open again</span>
                  <figcaption class="tc-note">Across the top of every page</figcaption>
                </figure>
              
            </div>
          </section>
          
          
          <section class="band band-dark bleed" id="how">
            <div class="band-inner">
              <h2 class="d-lg steps-title">How it goes</h2>
              <p class="steps-sub">Three screens between an empty account and a site people can read.</p>
          
              <div class="steps">
                
                  <details class="step" open>
                    <summary class="step-head">
                      <span class="step-n">01</span>
                      <span class="step-kind">Sign up</span>
                      <span class="step-time">About a minute</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Create your workspace</h3>
                        <div class="step-tags">
                          <span class="step-tag">Free plan</span><span class="step-tag">No card</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">One form. An organisation name, an email and a password.</p>
                        <p class="step-body">Your workspace is created and you are taken straight into the dashboard. The email confirmation is for account recovery — it does not hold anything up.</p>
                        <a class="btn btn-accent btn-sm" href="/signup">Create a workspace</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">02</span>
                      <span class="step-kind">Fill it in</span>
                      <span class="step-time">As long as you like</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Put your content in</h3>
                        <div class="step-tags">
                          <span class="step-tag">Forms</span><span class="step-tag">Your images</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Pages, photos, contact details, opening hours — in forms, not code.</p>
                        <p class="step-body">Photographs are stripped of their location data on upload and served through links that expire, so an address in a camera&#39;s metadata never reaches the public site.</p>
                        <a class="btn btn-accent btn-sm" href="#product">See what you can change</a>
                      </div>
                    </div>
                  </details>
                
                  <details class="step" >
                    <summary class="step-head">
                      <span class="step-n">03</span>
                      <span class="step-kind">Go live</span>
                      <span class="step-time">One page of instructions</span>
                      <span class="step-chev" aria-hidden="true">
                        <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 15l6-6 6 6"/></svg>
                      </span>
                    </summary>
                    <div class="step-card">
                      <div class="step-left">
                        <h3 class="step-title">Point your site here</h3>
                        <div class="step-tags">
                          <span class="step-tag">One file</span><span class="step-tag">We help</span>
                        </div>
                      </div>
                      <div class="step-right">
                        <p class="step-lede">Use the address that comes with the account, or your own domain.</p>
                        <p class="step-body">Dashboard → Install generates one index.html or index.php for your host, with your title, description and social preview already in it. Drop it in place and the site reads everything from here.</p>
                        <a class="btn btn-accent btn-sm" href="/docs">Read the install guide</a>
                      </div>
                    </div>
                  </details>
                
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed" id="looks">
            <div class="band-inner">
              <div class="looks-head">
                <h2 class="d-lg">Start with a<br>design you love</h2>
                <div class="looks-aside">
                  <span class="looks-count">15 themes</span>
                  <p class="looks-note">
                    Every card below is the theme itself, rendering the same demo site with
                    the same code your own site would run. Nothing here is a screenshot
                    that can drift out of date.
                  </p>
                </div>
              </div>
          
              <div class="looks">
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/vantage" title="Vantage — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Vantage</h3>
                      <p class="look-tag">Dark-first tech and professional services.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#2dd4bf" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#22d3ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#e7edf3" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0b0d10" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#171c22" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#vantage">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/aster" title="Aster — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Aster</h3>
                      <p class="look-tag">Clean editorial layout for hotels, offices and organisations.</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#5b3428" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#c99b3d" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#1d2422" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#f8f5ee" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#eae2d4" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#aster">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
                  <article class="look">
                    
                    <div class="look-shot">
                      <iframe class="pv" src="/theme-preview/verdant" title="Verdant — preview"
                              loading="lazy" tabindex="-1" scrolling="no" sandbox="allow-scripts"></iframe>
                    </div>
                    <div class="look-meta">
                      <h3 class="look-name">Verdant</h3>
                      <p class="look-tag">Dark Botanical Luxe Theme</p>
                      <div class="look-swatch"><svg class="swatch-svg" viewBox="0 0 118 18" width="118" height="18" role="presentation" aria-hidden="true" focusable="false"><circle cx="9" cy="9" r="8.25" fill="#c39a4e" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="34" cy="9" r="8.25" fill="#e0b674" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="59" cy="9" r="8.25" fill="#f0e9d8" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="84" cy="9" r="8.25" fill="#0d1712" stroke="rgba(0,0,0,.16)" stroke-width="1"/><circle cx="109" cy="9" r="8.25" fill="#152219" stroke="rgba(0,0,0,.16)" stroke-width="1"/></svg></div>
                      <a class="look-link" href="/themes#verdant">
                        Look closer
                        <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </a>
                    </div>
                  </article>
                
              </div>
          
              <div class="looks-foot">
                <a class="btn btn-onband" href="/themes">
                  Browse all 15 themes
                  <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                </a>
                <span class="looks-more">Switching later never touches what you wrote.</span>
              </div>
            </div>
          </section>
          
          
          
          <section class="band band-dark bleed band-tight">
            <div class="band-inner">
              <div class="feat-head">
                <h2 class="d-lg">Works with the host<br>you already have</h2>
                <a class="btn btn-onband" href="/signup">Start your site</a>
              </div>
              <div class="feats">
                
                  <div class="feat">
                    <span class="feat-n">01</span>
                    <h3 class="feat-title">Everything in one place</h3>
                    <p class="feat-body">Your pages, photos, menus, opening hours, staff and services. Change them in a form; the site shows the change on the next visit.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">02</span>
                    <h3 class="feat-title">An address, included</h3>
                    <p class="feat-body">Every site gets its own address the moment you create it, so there is nothing to buy before you begin. Bring your own domain later if you want one.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">03</span>
                    <h3 class="feat-title">Themes you can switch</h3>
                    <p class="feat-body">Change how the site looks without touching a word of what you wrote. Your colours, logo and type carry across.</p>
                  </div>
                
                  <div class="feat">
                    <span class="feat-n">04</span>
                    <h3 class="feat-title">We help you go live</h3>
                    <p class="feat-body">Already have a domain or a host? Tell us and we will set it up with you. There is one small file to put in place, and we will walk you through it.</p>
                  </div>
                
              </div>
            </div>
          </section>
          
          
          <section class="band band-paper bleed" id="pricing">
            <div class="band-inner">
              <div class="price-head">
                <h2 class="d-lg">Start free.<br>Pay when it earns it.</h2>
                <p class="price-sub">
                  Priced against what a rebuild costs, not against what a page of HTML
                  costs. Every plan keeps the site current instead of shipping it once.
                </p>
              </div>
          
              
                <article class="plan-hero">
                  <div class="plan-hero-main">
                    <span class="plan-kicker">Free</span>
                    <p class="plan-tagline">Your site online at no cost, supported by adverts.</p>
                    <div class="plan-price">Free<span>forever</span></div>
                    <p class="plan-anchor">No money. Your pages carry adverts instead.</p>
                    <a class="btn btn-onband btn-block btn-lg" href="/signup?plan=free">Choose Free</a>
                    <p class="plan-note">No card. Nothing to cancel.</p>
                  </div>
                  <ul class="plan-list">
                    <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                  </ul>
                </article>
          
                
                  <div class="ladder-head">
                    <h3>Outgrown the adverts?</h3>
                    <p>Paid plans remove them, from Nu. 299 a year.</p>
                  </div>
                  <div class="ladder">
                    
                      <a class="ladder-item" href="/signup?plan=lifesaver">
                        <span class="ladder-name">Life Saver</span>
                        <span class="ladder-price">Nu. 299<span>per year</span></span>
                        <span class="ladder-note">Supported by local Ads</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=starter">
                        <span class="ladder-name">Starter</span>
                        <span class="ladder-price">Nu. 999<span>per year</span></span>
                        <span class="ladder-note">One site, the essentials.</span>
                      </a>
                    
                      <a class="ladder-item ladder-best" href="/signup?plan=business">
                        <span class="ladder-name">Business <em>most chosen</em></span>
                        <span class="ladder-price">Nu. 1,599<span>per year</span></span>
                        <span class="ladder-note">More space, Full analytics.</span>
                      </a>
                    
                      <a class="ladder-item" href="/signup?plan=agency">
                        <span class="ladder-name">Agency</span>
                        <span class="ladder-price">Nu. 2,599<span>per year</span></span>
                        <span class="ladder-note">Triple pack, white-labelled.</span>
                      </a>
                    
                  </div>
          
                  <details class="compare">
                    <summary>Compare every plan in full</summary>
                    <div class="compare-grid">
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Free</span>
                          <div class="compare-price">Free<span>forever</span></div>
                          <p class="compare-anchor">No money. Your pages carry adverts instead.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Adverts shown on your pages</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=free">Choose Free</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Life Saver</span>
                          <div class="compare-price">Nu. 299<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 25 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>20 MB assets</li><li>Free themes included</li><li>Your site online, free forever</li><li>Local adverts only</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=lifesaver">Choose Life Saver</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Starter</span>
                          <div class="compare-price">Nu. 999<span>per year</span></div>
                          <p class="compare-anchor">About Nu. 83 a month to keep your site current.</p>
                          <ul class="plan-list">
                            <li>1 site, 1 domain</li><li>50 MB assets</li><li>Free themes included</li><li>White-label dashboard</li><li>Email Support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=starter">Start with Starter</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Business</span>
                          <div class="compare-price">Nu. 1,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 800 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>2 sites, 2 domains</li><li>200 MB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics &#43; priority support</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=business">Choose Business</a>
                        </div>
                      
                        <div class="compare-col">
                          <span class="plan-kicker">Agency</span>
                          <div class="compare-price">Nu. 2,599<span>per year</span></div>
                          <p class="compare-anchor">Around Nu. 866 per site, for 1 year.</p>
                          <ul class="plan-list">
                            <li>3 sites, 3 domains</li><li>1 GB assets</li><li>All themes included</li><li>White-label dashboard</li><li>Analytics</li>
                          </ul>
                          <a class="btn btn-ghost btn-sm btn-block" href="/signup?plan=agency">Talk to us</a>
                        </div>
                      
                    </div>
                  </details>
                
              
            </div>
          </section>
          
          
          <section class="section faq-section" id="questions">
            <div class="faq-head rv">
              <h2 class="d-lg">Answering the<br>main things</h2>
              <p class="faq-sub">If yours is not here, write to us — a person in Thimphu answers.</p>
            </div>
            <div class="faq rv">
              
                <details class="qa" open>
                  <summary>
                    <span class="qa-q">Do I need to buy a domain?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. Your site gets an address the moment you create it and works straight away. If you would rather use your own domain, you can add it later without starting again — and we will help you point it here.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">I already have a website. Do I throw it away?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">No. If you like how it looks, it can keep its host and its address and take its content from here instead — one small file changes hands and we set that up with you. If you do not like how it looks, pick a theme.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens when I get stuck?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">You write to us and a person in Thimphu answers. Setting up a domain, moving an old site across, or a theme built for you — those are things we do, not things you are left to work out.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Can I change theme after the site is live?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Yes, and it does not touch a word of what you wrote. Content and look are stored separately: the theme is three files served from here, your content is the data behind them. Switch, look at it, switch back if you prefer the old one.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">What happens if I stop paying?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">The site stays where it is and starts serving its own maintenance page instead of your content, and we email you every day until it is sorted. Nothing is deleted while that is going on — renew and the same pages come straight back.</p>
                </details>
              
                <details class="qa" >
                  <summary>
                    <span class="qa-q">Who can see the images I upload?</span>
                    <span class="qa-sign" aria-hidden="true"></span>
                  </summary>
                  <p class="qa-a">Only people you send to your site. Image files are not reachable by guessing a URL: the site payload carries signed links that expire, and the stored file paths are never published.</p>
                </details>
              
            </div>
          </section>
          
          
          <section class="section" id="themes">
            <div class="maker rv">
              <div>
                <span class="kicker">For designers &amp; developers <span class="pill">soon</span></span>
                <h3 class="maker-title">Build a theme and sell it here.</h3>
                <p class="maker-body">
                  Set your own price, keep most of it, withdraw from your wallet when you
                  like. Not open yet — no submissions and no date promised, but it is
                  being built.
                </p>
              </div>
            </div>
          </section>
          
          
          <section class="closing rv">
            <h2 class="d-xl closing-title">Your idea deserves<br>a beautiful home.</h2>
            <p class="closing-sub">Your content is already written — put it somewhere you can change it.</p>
            <a class="btn btn-accent btn-lg" href="/signup">Start free
              <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
            </a>
          </section>
          
          <style>
             
            .hero {
              position: relative; isolation: isolate; overflow: hidden;
              background: var(--band); color: var(--band-fg);
              min-height: min(94svh, 820px);
              display: flex; align-items: stretch;
              padding: calc(var(--nav-h) + 2.2rem) 0 clamp(2rem, 4vw, 3.2rem);
            }
            .hero-inner { display: flex; flex-direction: column; justify-content: space-between; gap: 2rem; width: 100%; }
          
             
            .hero-art { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
            .hero-shot {
              position: absolute; width: clamp(320px, 33vw, 560px); aspect-ratio: 16 / 10;
              border-radius: 20px; overflow: hidden; line-height: 0;
              box-shadow: 0 60px 120px -40px rgba(0,0,0,.9);
              border: 1px solid rgba(255,255,255,.10);
              background: var(--surface);
            }
            .hero-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .35));
              pointer-events: none;
            }
            .hs-a { right: 4%;  top: 12%; transform: rotate(4deg); }
            .hs-b { right: 27%; top: 34%; transform: rotate(-5deg); opacity: .82; }
            .hs-c { right: 12%; bottom: -6%; transform: rotate(8deg); opacity: .62; }
          
            .hero-veil {
              position: absolute; inset: 0; z-index: 1; pointer-events: none;
              background:
                linear-gradient(78deg, var(--band) 30%, rgba(15,16,15,.86) 52%, rgba(15,16,15,.42) 100%),
                linear-gradient(0deg, var(--band) 2%, rgba(15,16,15,0) 45%);
            }
            .hero-inner { position: relative; z-index: 2; }
          
            .hero-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.4rem; max-width: 760px; }
            .hm { display: flex; flex-direction: column; gap: .18rem; padding-left: 1rem; border-left: 1px solid rgba(255,255,255,.18); }
            .hm-k { font-family: var(--mono); font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.5); }
            .hm-v { font-size: 1.02rem; font-weight: 700; letter-spacing: -.02em; color: #fff; }
            .hm-n { font-size: .8rem; color: rgba(255,255,255,.55); line-height: 1.4; }
          
             
            .hero .hero-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.9rem, 8.4vw, 7.2rem); line-height: .92;
              color: #fff; margin: 0 0 1.6rem;
            }
            .hero-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; flex-wrap: wrap; }
            .hero-actions { display: flex; gap: .7rem; flex-wrap: wrap; }
            .btn-lg { padding: 1rem 1.9rem; font-size: 1rem; }
            .hero-note { margin: 0; max-width: 40ch; font-size: .92rem; line-height: 1.55; color: rgba(255,255,255,.62); }
          
            @media (max-width: 860px) {
              .hero { min-height: 0; padding-top: calc(var(--nav-h) + 1.6rem); }
              .hero-meta { grid-template-columns: 1fr 1fr; gap: 1rem; }
              .hm-last { display: none; }
              .hero-shot { width: 74vw; }
              .hs-a { right: -22%; top: 6%; opacity: .5; }
              .hs-b { right: 2%; top: 30%; opacity: .38; }
              .hs-c { display: none; }
              .hero-body { margin-top: 3.5rem; }
               
              .hero-veil {
                background:
                  linear-gradient(180deg, rgba(15,16,15,.94) 0%, rgba(15,16,15,.74) 30%, rgba(15,16,15,.93) 62%, var(--band) 92%);
              }
            }
            @media (max-width: 520px) {
              .hero-meta { grid-template-columns: 1fr; }
              .hero-actions .btn { width: 100%; }
            }
          
             
            .section { padding: clamp(3rem, 7vw, 6rem) 0 0; }
          
             
            .reasons { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(1.6rem, 5vw, 4rem); align-items: end; }
            .reasons-title { margin: 0; }
            .reasons-copy p { font-size: clamp(1rem, 1.5vw, 1.14rem); line-height: 1.55; color: var(--ink-2); margin: 0 0 1rem; }
            .reasons-copy p:last-child { margin-bottom: 0; }
            .reasons-copy em { font-style: normal; color: var(--emerald-deep); }
            :root[data-theme="dark"] .reasons-copy em { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .reasons-copy em { color: var(--emerald); } }
            @media (max-width: 900px) { .reasons { grid-template-columns: 1fr; align-items: start; } }
          
             
            .statement { text-align: center; }
            .statement-line { max-width: 22ch; margin: 0 auto; }
            .range {
              display: flex; align-items: center; justify-content: center; gap: clamp(.7rem, 2.4vw, 1.6rem);
              flex-wrap: wrap; margin-top: clamp(1.4rem, 3vw, 2.4rem);
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.8rem, 5vw, 3.6rem); line-height: 1; color: var(--emerald-deep);
            }
            :root[data-theme="dark"] .range { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .range { color: var(--emerald); } }
            .range-a { color: var(--faint); }
            .range-arrow { display: block; width: clamp(60px, 12vw, 150px); color: currentColor; }
            .range-arrow svg { display: block; width: 100%; height: 12px; }
            .range-tail {
              font-family: var(--mono); font-weight: 500; font-size: .74rem;
              letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              align-self: center;
            }
          
             
            .tilt-section { padding-top: clamp(2.2rem, 5vw, 4rem); }
            .tilt-head { max-width: 40ch; margin-bottom: clamp(1.2rem, 3vw, 2rem); }
            .tilt-head .kicker { margin-bottom: .9rem; }
             
            .tilt-row {
              display: flex; gap: clamp(.7rem, 1.6vw, 1.2rem); align-items: flex-start;
              overflow-x: auto; padding: 1.6rem .2rem 2.2rem; scrollbar-width: none;
              width: calc(100vw - (50vw - 50%)); margin-right: calc(50% - 50vw);
            }
            .tilt-row::-webkit-scrollbar { display: none; }
            .tilt-card {
              flex: 0 0 auto; width: clamp(190px, 21vw, 250px); margin: 0;
              display: flex; flex-direction: column; gap: .3rem;
              background: var(--surface); border: 1px solid var(--line);
              border-radius: var(--r-lg); padding: 1.1rem 1.15rem 1.2rem;
              box-shadow: var(--shadow);
              transition: transform .35s cubic-bezier(.2,.8,.2,1);
            }
            .tilt-card:hover { transform: rotate(0deg) translateY(-6px); }
            .ct-a { transform: rotate(-3deg); }
            .ct-b { transform: rotate(2.2deg) translateY(14px); }
            .ct-c { transform: rotate(-1.4deg) translateY(-6px); }
            .ct-d { transform: rotate(3.4deg) translateY(10px); }
            .ct-e { transform: rotate(-2.6deg); }
            .ct-f { transform: rotate(1.6deg) translateY(16px); }
            .tc-field { font-family: var(--mono); font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; color: var(--faint); }
            .tc-value { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: var(--heading); line-height: 1.25; }
            .tc-note { font-size: .8rem; color: var(--muted); margin: .35rem 0 0; line-height: 1.4; }
            @media (prefers-reduced-motion: reduce) { .tilt-card { transition: none; } }
          
             
            .band-tight { padding: clamp(2.4rem, 5vw, 4rem) 0; }
            .steps-title { margin-bottom: .6rem; }
            .steps-sub { color: var(--band-muted); margin: 0 0 clamp(1.6rem, 4vw, 2.6rem); max-width: 48ch; }
            .steps { display: grid; gap: .9rem; }
          
            .step { border-radius: var(--r-xl); }
            .step-head {
              display: flex; align-items: center; gap: 1rem; cursor: pointer; list-style: none;
              background: var(--emerald-deep); color: #fff;
              border-radius: var(--r-pill); padding: .85rem 1rem .85rem 1.5rem;
            }
            .step-head::-webkit-details-marker { display: none; }
            .step-n { font-family: var(--mono); font-size: .72rem; letter-spacing: .14em; opacity: .7; }
            .step-kind { font-size: clamp(1.05rem, 2vw, 1.45rem); font-weight: 800; letter-spacing: -.03em; }
            .step-time { margin-left: auto; font-size: .84rem; color: rgba(255,255,255,.78); }
            .step-chev {
              display: grid; place-items: center; width: 38px; height: 38px; flex-shrink: 0;
              border-radius: 50%; background: rgba(255,255,255,.18); color: #fff;
              transition: transform .25s ease;
            }
            .step:not([open]) .step-chev { transform: rotate(180deg); }
          
            .step-card {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
              gap: clamp(1.2rem, 3vw, 2.6rem);
              background: var(--band-card); color: #14170f;
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.2vw, 2.4rem);
              margin-top: .55rem;
            }
             
            .band-dark .step-card .step-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3.6vw, 2.7rem); line-height: 1.02;
              color: #14170f; margin: 0 0 1rem;
            }
            .step-tags { display: flex; flex-wrap: wrap; gap: .4rem; }
            .step-tag {
              font-family: var(--mono); font-size: .66rem; letter-spacing: .1em; text-transform: uppercase;
              background: rgba(20,23,15,.08); border: 1px solid rgba(20,23,15,.12);
              border-radius: var(--r-pill); padding: .3rem .7rem; color: #3c433a;
            }
            .step-lede { font-size: 1.02rem; font-weight: 650; color: #14170f; margin: 0 0 .6rem; letter-spacing: -.01em; }
            .step-body { font-size: .93rem; line-height: 1.6; color: #3c433a; margin: 0 0 1.2rem; }
            .step-right .btn-accent { background: #14170f; color: #fff; box-shadow: none; }
            .step-right .btn-accent:hover { background: #2c332a; }
            @media (max-width: 780px) {
              .step-card { grid-template-columns: 1fr; }
              .step-time { display: none; }
            }
          
             
            .looks-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .85fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .looks-count { font-family: var(--mono); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--emerald); }
            .looks-note { color: var(--band-muted); font-size: .92rem; line-height: 1.6; margin: .5rem 0 0; }
            .looks { display: grid; gap: clamp(.8rem, 2vw, 1.2rem); }
             
            .look {
              display: flex; flex-direction: column;
              background: var(--band-2); border-radius: var(--r-2xl); overflow: hidden;
              border: 1px solid var(--band-line);
              transition: border-color .25s ease, transform .25s ease;
            }
            .look:hover { border-color: var(--emerald); transform: translateY(-3px); }
             
            .look-shot { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--surface); }
            .look-shot .pv {
              position: absolute; top: 0; left: 0; width: 1280px; height: 800px;
              border: 0; transform-origin: 0 0; transform: scale(var(--pv, .3));
              pointer-events: none;
            }
            .look-swatch { line-height: 0; margin-top: .3rem; }
            .look-swatch svg { display: block; }
            .look-meta {
              background: #fff; color: #14170f; padding: clamp(1.2rem, 2.4vw, 1.7rem);
              display: flex; flex-direction: column; gap: .45rem; flex: 1;
            }
             
            .band-dark .look .look-name {
              font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
              font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.02; color: #14170f; margin: 0;
            }
            .look-tag { margin: 0; font-size: .95rem; line-height: 1.5; color: #4b534a; max-width: 40ch; }
            .look-link {
              display: inline-flex; align-items: center; gap: .45rem; margin-top: auto; padding-top: .6rem;
              font-size: .88rem; font-weight: 700; color: var(--emerald-deep);
            }
            .look:hover .look-link svg { transform: translateX(3px); }
            .look-link svg { transition: transform .2s ease; }
            .looks-foot {
              display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap;
              margin-top: clamp(1.4rem, 3vw, 2.2rem);
            }
            .looks-more { color: var(--band-muted); font-size: .86rem; }
            @media (min-width: 760px) { .looks { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); } }
            @media (max-width: 620px) { .looks-head { grid-template-columns: 1fr; } }
          
             
            .feat-head {
              display: flex; align-items: flex-end; justify-content: space-between;
              gap: 1.4rem; flex-wrap: wrap; margin-bottom: clamp(1.6rem, 4vw, 2.6rem);
            }
            .feats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(1.2rem, 2.6vw, 2.2rem); }
            .feat { padding-top: 1.1rem; border-top: 1px solid var(--band-line); }
            .feat-n { font-family: var(--mono); font-size: .7rem; letter-spacing: .16em; color: var(--emerald); }
            .feat-title { font-size: 1.05rem; font-weight: 750; letter-spacing: -.02em; color: #fff; margin: .7rem 0 .45rem; }
            .feat-body { font-size: .88rem; line-height: 1.6; color: var(--band-muted); margin: 0; }
            @media (max-width: 900px) { .feats { grid-template-columns: 1fr 1fr; } }
            @media (max-width: 520px) { .feats { grid-template-columns: 1fr; } }
          
             
            .price-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1.2rem, 4vw, 3rem); align-items: end;
              margin-bottom: clamp(1.8rem, 4vw, 2.8rem);
            }
            .price-sub { margin: 0; color: var(--muted); font-size: .98rem; line-height: 1.6; }
          
             
            .plan-hero {
              display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
              gap: clamp(1.4rem, 4vw, 3rem); align-items: start;
              background: var(--emerald-deep); color: #fff;
              border: 1px solid var(--emerald-deep);
              border-radius: var(--r-2xl); padding: clamp(1.4rem, 3.4vw, 2.6rem);
              box-shadow: 0 30px 60px -34px color-mix(in srgb, var(--emerald-deep) 70%, transparent);
            }
            .plan-hero-main { display: flex; flex-direction: column; }
            .plan-kicker {
              font-family: var(--mono); font-size: .7rem; font-weight: 500;
              letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.66);
            }
            .plan-tagline { margin: .5rem 0 0; font-size: .95rem; line-height: 1.5; color: rgba(255,255,255,.86); }
            .plan-price {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.8rem, 6vw, 4.4rem); line-height: 1; margin: .7rem 0 .2rem; color: #fff;
            }
            .plan-price span { display: block; font-size: .82rem; font-weight: 500; letter-spacing: 0; color: rgba(255,255,255,.66); margin-top: .4rem; }
            .plan-anchor { margin: .3rem 0 1.2rem; font-size: .86rem; color: rgba(255,255,255,.72); }
            .plan-note { margin: .8rem 0 0; text-align: center; font-size: .8rem; color: rgba(255,255,255,.6); }
            .plan-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; font-size: .95rem; }
            .plan-list li { display: flex; gap: .6rem; align-items: baseline; color: rgba(255,255,255,.9); }
            .plan-list li::before { content: "✓"; color: #fff; font-weight: 700; font-size: .85em; flex-shrink: 0; opacity: .8; }
            @media (min-width: 900px) { .plan-hero .plan-list { grid-template-columns: 1fr 1fr; gap: .55rem 1.4rem; } }
            @media (max-width: 780px) { .plan-hero, .price-head { grid-template-columns: 1fr; } }
          
            .ladder-head { margin: clamp(2rem, 4.5vw, 3rem) 0 .9rem; }
            .ladder-head h3 { font-size: 1.15rem; margin: 0; color: var(--heading); }
            .ladder-head p { margin: .2rem 0 0; font-size: .88rem; color: var(--muted); }
            .ladder { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: .7rem; }
            .ladder-item {
              display: grid; gap: .2rem; padding: 1rem 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg);
              background: var(--surface); transition: border-color .18s ease, transform .18s ease;
            }
            .ladder-item:hover { border-color: var(--emerald); transform: translateY(-2px); }
            .ladder-best { border-color: var(--emerald); }
            .ladder-name { font-weight: 750; font-size: .95rem; color: var(--heading); }
            .ladder-name em {
              font-style: normal; font-family: var(--mono); font-size: .6rem; letter-spacing: .09em;
              text-transform: uppercase; color: var(--emerald-deep); margin-left: .3rem;
            }
            .ladder-price { font-family: var(--text); font-weight: 800; font-size: 1.25rem; letter-spacing: -.03em; color: var(--heading); }
            .ladder-price span { font-weight: 500; font-size: .74rem; letter-spacing: 0; color: var(--faint); margin-left: .35rem; }
            .ladder-note { font-size: .82rem; line-height: 1.45; color: var(--muted); }
          
            .compare { margin-top: 1.4rem; }
            .compare summary {
              cursor: pointer; font-size: .9rem; font-weight: 700; color: var(--emerald-deep);
              padding: .6rem 0; list-style: none;
            }
            .compare summary::-webkit-details-marker { display: none; }
            .compare summary::before { content: "+ "; font-family: var(--mono); }
            .compare[open] summary::before { content: "− "; }
            .compare-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .8rem; margin-top: .9rem; }
            .compare-col {
              display: flex; flex-direction: column; padding: 1.2rem;
              border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface);
            }
            .compare-price { font-family: var(--text); font-weight: 800; font-size: 1.6rem; letter-spacing: -.035em; color: var(--heading); margin-top: .4rem; }
            .compare-price span { display: block; font-size: .74rem; font-weight: 500; letter-spacing: 0; color: var(--faint); margin-top: .2rem; }
            .compare-anchor { margin: .4rem 0 .7rem; font-size: .82rem; color: var(--muted); }
             
            .compare-col .plan-list li { color: var(--ink-2); }
            .compare-col .plan-list li::before { color: var(--emerald); opacity: 1; }
            .compare-col .plan-kicker { color: var(--faint); }
            .compare-col .plan-list { margin-bottom: 1rem; font-size: .86rem; }
            .compare-col .btn { margin-top: auto; }
          
             
            .faq-head {
              display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
              gap: clamp(1rem, 4vw, 3rem); align-items: end; margin-bottom: clamp(1.4rem, 3vw, 2.2rem);
            }
            .faq-sub { margin: 0; color: var(--muted); }
            .faq { border-top: 1px solid var(--line); }
            .qa { border-bottom: 1px solid var(--line); }
            .qa summary {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              cursor: pointer; list-style: none; padding: 1.3rem 0;
            }
            .qa summary::-webkit-details-marker { display: none; }
            .qa-q { font-size: clamp(1rem, 1.8vw, 1.18rem); font-weight: 750; letter-spacing: -.02em; color: var(--heading); }
            .qa-sign {
              position: relative; flex-shrink: 0; width: 34px; height: 34px; border-radius: 50%;
              border: 1px solid var(--line); background: var(--surface);
              transition: border-color .2s ease, background .2s ease;
            }
            .qa-sign::before, .qa-sign::after {
              content: ""; position: absolute; left: 50%; top: 50%; background: var(--ink-2);
              transform: translate(-50%, -50%); transition: opacity .2s ease;
            }
            .qa-sign::before { width: 13px; height: 1.6px; }
            .qa-sign::after { width: 1.6px; height: 13px; }
            .qa[open] .qa-sign { border-color: var(--emerald); background: var(--emerald-soft); }
            .qa[open] .qa-sign::after { opacity: 0; }
            .qa[open] .qa-sign::before { background: var(--emerald-deep); }
            .qa:hover .qa-sign { border-color: var(--emerald); }
            .qa-a { margin: 0 0 1.4rem; color: var(--muted); max-width: 74ch; line-height: 1.6; }
            @media (max-width: 780px) { .faq-head { grid-template-columns: 1fr; align-items: start; } }
          
             
            .maker {
              display: flex; align-items: center; justify-content: space-between; gap: 1.4rem;
              flex-wrap: wrap; padding: clamp(1.2rem, 3vw, 1.8rem);
              border: 1px dashed var(--line); border-radius: var(--r-lg); background: var(--surface-2);
            }
            .maker-title { margin: .55rem 0 .3rem; font-size: 1.2rem; }
            .maker-body { margin: 0; max-width: 56ch; font-size: .88rem; color: var(--muted); }
          
             
            .closing { text-align: center; padding: clamp(3.4rem, 8vw, 6.5rem) 0 clamp(1rem, 3vw, 2rem); }
            .closing-title { margin: 0 auto; max-width: 18ch; }
            .closing-sub { margin: 1.1rem auto 1.9rem; max-width: 46ch; color: var(--muted); font-size: 1.02rem; }
          
             
            html.rv-on .rv { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s ease; }
            html.rv-on .rv.in { opacity: 1; transform: none; }
            @media (prefers-reduced-motion: reduce) {
              html.rv-on .rv { opacity: 1; transform: none; transition: none; }
            }
          </style>
          
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
            
            
            (function () {
              if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
              if (!("IntersectionObserver" in window)) return;
              document.documentElement.classList.add("rv-on");
              var io = new IntersectionObserver(function (entries) {
                entries.forEach(function (entry) {
                  if (entry.isIntersecting) {
                    entry.target.classList.add("in");
                    io.unobserve(entry.target);
                  }
                });
              }, { rootMargin: "0px 0px -8% 0px", threshold: 0.08 });
              document.querySelectorAll(".rv").forEach(function (el) { io.observe(el); });
            })();
          
            
            
            
            
            
            (function () {
              var PREVIEW_WIDTH = 1280;
              var boxes = document.querySelectorAll(".look-shot, .hero-shot");
              function fit() {
                boxes.forEach(function (box) {
                  if (!box.querySelector(".pv")) return;
                  box.style.setProperty("--pv", box.clientWidth / PREVIEW_WIDTH);
                });
              }
              fit();
              window.addEventListener("resize", fit, { passive: true });
              if ("ResizeObserver" in window) {
                var ro = new ResizeObserver(fit);
                boxes.forEach(function (box) { ro.observe(box); });
              }
            })();
          
            
            
            
            (function () {
              var steps = Array.prototype.slice.call(document.querySelectorAll(".steps .step"));
              steps.forEach(function (step) {
                step.addEventListener("toggle", function () {
                  if (!step.open) return;
                  steps.forEach(function (other) { if (other !== step) other.open = false; });
                });
              });
            })();
          </script>
          
                </div>
              </main>
          
              
              <footer class="site-footer">
                <div class="wrap footer-grid">
                  <div>
                    <span class="footer-name">WONS Sites</span>
                    <p class="footer-tag">A website you can keep up to date yourself.</p>
                  </div>
                  <nav class="footer-col" aria-label="Product">
                    <span class="label">Product</span>
                    <a href="/themes">Themes</a>
                    <a href="/#product">What you can change</a>
                    <a href="/#pricing">Pricing</a>
                    <a href="/docs">Docs</a>
                  </nav>
                  <nav class="footer-col" aria-label="Account">
                    <span class="label">Account</span>
                    <a href="/login">Log in</a>
                    <a href="/signup">Start your site</a>
                    <a href="/dashboard">Dashboard</a>
                  </nav>
                  <div>
                    <p class="footer-sub-head">Start with your email</p>
                    <p class="footer-sub-copy">It takes you straight to sign-up — free plan, no card needed.</p>
                    <form class="footer-sub" action="/signup" method="get">
                      <input type="email" name="email" placeholder="Your email address" aria-label="Email address">
                      <button class="sub-btn" type="submit" aria-label="Start your site">
                        <svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </button>
                    </form>
                  </div>
                </div>
                <div class="wrap footer-base">
                  <span>© 2026 WONS Sites. All rights reserved.</span>
                  <span>Made by WONS</span>
                </div>
              </footer>
              
            </div>
          
            <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">
              var themeToggle = document.getElementById("themeToggle");
              if (themeToggle) themeToggle.addEventListener("click", function () {
                var root = document.documentElement;
                var current = root.getAttribute("data-theme");
                var systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
                var next = (current ? current === "dark" : systemDark) ? "light" : "dark";
                root.setAttribute("data-theme", next);
                try { localStorage.setItem("wons-sites-theme", next); } catch (e) {}
              });
          
              
              var navToggle = document.getElementById("navToggle");
              var topbar = document.getElementById("topbar");
              if (navToggle && topbar) navToggle.addEventListener("click", function () {
                var open = topbar.classList.toggle("open");
                navToggle.setAttribute("aria-expanded", open ? "true" : "false");
              });
          
              
              
              
              (function () {
                var bar = document.getElementById("topbar");
                if (!bar) return;
                var mark = function () {
                  bar.classList.toggle("stuck", window.scrollY > 72);
                };
                mark();
                window.addEventListener("scroll", mark, { passive: true });
              })();
          
              (function () {
                var path = location.pathname.replace(/\/+$/, "") || "/";
                var best = null, bestLen = -1;
                document.querySelectorAll(".nav a.link").forEach(function (a) {
                  var href = (a.getAttribute("href") || "").replace(/\/+$/, "") || "/";
                  var match = href === "/" ? path === "/" : (path === href || path.indexOf(href + "/") === 0);
                  if (match && href.length > bestLen) { best = a; bestLen = href.length; }
                });
                if (best) best.classList.add("active");
              })();
            </script>
          <script nonce="iB8Q5DnSVjWx_AOLdlto8Q">(function(){
          	var es = new EventSource("/__wons/dev/reload");
          	es.onmessage = function(){ location.reload() };
          	// Close the stream the instant the page is left. Without this, each
          	// navigation leaves its SSE connection lingering; a few quick clicks
          	// exhaust the browser's ~6-per-origin HTTP/1.1 connection cap and every
          	// further request (including the next page) stalls until the stale
          	// streams time out. Closing on pagehide frees the slot immediately.
          	window.addEventListener("pagehide", function(){ es.close(); });
          })()</script></body>
          </html>
          
          Parameter
          cache-control
          Solution

          For secure content, ensure the cache-control HTTP header is set with "no-cache, no-store, must-revalidate". If an asset should be cached consider setting the directives "public, max-age, immutable".

      2. User Controllable HTML Element Attribute (Potential XSS) (1)
        1. GET https://sites.wons.bt/signup?plan=lifesaver
          Alert tags
          Alert description

          This check looks at user-supplied input in query string parameters and POST data to identify where certain HTML attribute values might be controlled. This provides hot-spot detection for XSS (cross-site scripting) that will require further review by a security analyst to determine exploitability.

          Other info

          User-controlled HTML attribute values were found. Try injecting special characters to see if XSS might be possible. The page at the following URL:

          https://sites.wons.bt/signup?plan=lifesaver

          appears to include user input in:

          a(n) [input] tag [value] attribute

          The user input found was:

          plan=lifesaver

          The user-controlled value was:

          lifesaver

          Request
          Request line and header section (354 bytes)
          GET https://sites.wons.bt/signup?plan=lifesaver HTTP/1.1
          host: sites.wons.bt
          user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
          pragma: no-cache
          cache-control: no-cache
          referer: https://sites.wons.bt
          Cookie: wons_csrf=nuZYRg1eASWdxmwv9zCe.7810b82eecae565becf5b8c149b9ba43
          
          
          Request body (0 bytes)
          Response
          Status line and header section (805 bytes)
          HTTP/1.1 200 OK
          Server: nginx/1.18.0 (Ubuntu)
          Date: Fri, 14 Aug 2026 18:42:58 GMT
          Content-Type: text/html; charset=utf-8
          Connection: keep-alive
          Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; script-src 'self' 'nonce-ULzaG9cSiTvmgMkJaMFXBA'
          Permissions-Policy: camera=(), microphone=(), geolocation=()
          Referrer-Policy: strict-origin-when-cross-origin
          Set-Cookie: wons_csrf=bo7C3HBznzofZroi7pP2.875fef2620a865dadb384646bd0bc62e; Path=/; Max-Age=2592000; HttpOnly; SameSite=Lax
          Vary: Origin
          X-Content-Type-Options: nosniff
          X-Frame-Options: SAMEORIGIN
          X-Permitted-Cross-Domain-Policies: none
          X-Xss-Protection: 1; mode=block
          content-length: 41348
          
          
          Response body (41348 bytes)
          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>Create your site workspace — WONS Sites</title>
            <meta name="description" content="A website you can keep up to date yourself. Pick a look, fill in your pages, and it is live — no domain to buy, no developer, no rebuilds.">
            
              <link rel="icon" href="/__wons/download?a=0&amp;e=1786819378&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfNHZ2NmczbWVkby5wbmc&amp;s=2ed6b63b7d6ff7769a802e61a9e25ed0f6f5767583c686f5718cfc27c8868af1">
            
            <link rel="preload" href="/fonts/Manrope-500-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="preload" href="/fonts/Fraunces-italic-latin.woff2" as="font" type="font/woff2" crossorigin>
            <link rel="stylesheet" href="/fonts/fonts.css">
            <script nonce="ULzaG9cSiTvmgMkJaMFXBA">
              (function () {
                try {
                  var t = localStorage.getItem("wons-sites-theme");
                  if (t) document.documentElement.setAttribute("data-theme", t);
                } catch (e) {}
              })();
            </script>
            <style>
              :root {
                --emerald:      #0d9d63;
                --emerald-deep: #077a4b;
                --emerald-dark: #05603a;
                --emerald-soft: #e7f6ee;
                --emerald-line: #c6e8d6;
          
                --heading:      #1d3b2c;
                --cta-bg:       #1d4d33;
                --cta-bg-hover: #266040;
                --cta-fg:       #ffffff;
          
                --canvas:    #fdfcf8;
                --surface:   #ffffff;
                --surface-2: #f2f6ef;
                --ink:       #22302a;
                --ink-2:     #435248;
                --muted:     #5f6f66;
                --faint:     #8fa096;
                --line:      #e6e9df;
                --line-soft: #eef1e8;
          
                --warn:      #b4690e;
                --warn-soft: #fdf3e4;
                --bad:       #c8372c;
                --bad-soft:  #fdeeec;
                --ok:        var(--emerald);
          
                 
                --band:       #0f100f;
                --band-2:     #171a18;
                --band-fg:    #ffffff;
                --band-muted: #9aa39e;
                --band-line:  #2a2f2c;
                --band-card:  #d5dad3;
          
                --r-xs: 8px;
                --r:    12px;
                --r-lg: 18px;
                --r-xl: 26px;
                --r-2xl: 34px;
                --r-pill: 999px;
          
                --shadow-sm: 0 1px 2px rgba(16,30,24,.05);
                --shadow:    0 1px 2px rgba(16,30,24,.04), 0 12px 28px -18px rgba(16,30,24,.24);
                --shadow-lg: 0 32px 64px -34px rgba(10,40,28,.40);
                --ring:      0 0 0 3px rgba(13,157,99,.20);
          
                --display: "Fraunces", Georgia, "Times New Roman", serif;
                --text:    "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
                --mono:    ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
          
                --maxw: min(1280px, calc(100vw - 3em));
                --nav-h: 68px;
                color-scheme: light;
              }
          
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) {
                  --emerald:      #2fc98a;
                  --emerald-deep: #21b077;
                  --emerald-dark: #8ce8bf;
                  --emerald-soft: #10281f;
                  --emerald-line: #1d4436;
                  --heading:      #eef2f0;
                  --cta-bg:       #2fc98a;
                  --cta-bg-hover: #4dd69c;
                  --cta-fg:       #06120d;
                  --canvas:    #0b0f0e;
                  --surface:   #121817;
                  --surface-2: #182120;
                  --ink:       #eef2f0;
                  --ink-2:     #c3ccc9;
                  --muted:     #97a3a0;
                  --faint:     #6a7674;
                  --line:      #222c2a;
                  --line-soft: #1a2322;
                  --warn:      #e0a55a;
                  --warn-soft: #2a2113;
                  --bad:       #f0776a;
                  --bad-soft:  #2c1613;
                  --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                  --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                  --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                  --ring:      0 0 0 3px rgba(47,201,138,.26);
                  color-scheme: dark;
                }
              }
              :root[data-theme="dark"] {
                --emerald:      #2fc98a;
                --emerald-deep: #21b077;
                --emerald-dark: #8ce8bf;
                --emerald-soft: #10281f;
                --emerald-line: #1d4436;
                --heading:      #eef2f0;
                --cta-bg:       #2fc98a;
                --cta-bg-hover: #4dd69c;
                --cta-fg:       #06120d;
                --canvas:    #0b0f0e;
                --surface:   #121817;
                --surface-2: #182120;
                --ink:       #eef2f0;
                --ink-2:     #c3ccc9;
                --muted:     #97a3a0;
                --faint:     #6a7674;
                --line:      #222c2a;
                --line-soft: #1a2322;
                --warn:      #e0a55a;
                --warn-soft: #2a2113;
                --bad:       #f0776a;
                --bad-soft:  #2c1613;
                --shadow-sm: 0 1px 2px rgba(0,0,0,.45);
                --shadow:    0 1px 2px rgba(0,0,0,.5), 0 14px 32px -20px rgba(0,0,0,.8);
                --shadow-lg: 0 36px 72px -38px rgba(0,0,0,.9);
                --ring:      0 0 0 3px rgba(47,201,138,.26);
                color-scheme: dark;
              }
              *, *::before, *::after { box-sizing: border-box; }
              html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
              body {
                margin: 0;
                font-family: var(--text);
                font-size: 16px; line-height: 1.6; letter-spacing: -.006em;
                color: var(--ink); background: var(--canvas);
                -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
              }
              a { color: inherit; text-decoration: none; }
              ::selection { background: var(--emerald); color: #fff; }
              img { max-width: 100%; height: auto; }
              hr { border: 0; border-top: 1px solid var(--line); margin: 2rem 0; }
          
              h1, h2 { font-family: var(--display); margin: 0 0 .6rem; }
              h3, h4 { font-family: var(--text); margin: 0 0 .6rem; }
              h1 { font-size: clamp(2.5rem, 5.4vw, 3.9rem); font-weight: 620; line-height: 1.06; letter-spacing: -.015em; color: var(--heading); }
              h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); font-weight: 600; line-height: 1.12; letter-spacing: -.012em; color: var(--heading); }
              h3 { font-size: 1.16rem; font-weight: 750; line-height: 1.25; letter-spacing: -.015em; color: var(--heading); }
              h4 { font-size: .98rem; font-weight: 750; letter-spacing: -.01em; }
          
               
              body:not(.app) h1,
              body:not(.app) h2 { font-family: var(--text); font-weight: 800; letter-spacing: -.04em; }
              body:not(.app) h1 { font-size: clamp(2.6rem, 6vw, 4.6rem); line-height: .98; }
              body:not(.app) h2 { font-size: clamp(2rem, 4.4vw, 3.4rem); line-height: 1.02; }
          
               
              body:not(.app) .d-xl,
              .d-xl { font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
                      font-size: clamp(3rem, 8.6vw, 7rem); line-height: .92; margin: 0; color: var(--heading); }
              body:not(.app) .d-lg,
              .d-lg { font-family: var(--text); font-weight: 800; letter-spacing: -.04em;
                      font-size: clamp(2.2rem, 5vw, 3.9rem); line-height: 1; margin: 0; color: var(--heading); }
              body:not(.app) .d-thin,
              .d-thin { font-family: var(--text); font-weight: 300; letter-spacing: -.035em;
                        font-size: clamp(2rem, 5.4vw, 4.2rem); line-height: 1.04; margin: 0; color: var(--heading); }
              p  { margin: 0 0 1rem; }
              .lede { font-size: clamp(1.02rem, 1.6vw, 1.18rem); line-height: 1.55; color: var(--muted); max-width: 48ch; }
              .muted { color: var(--muted); }
              .faint { color: var(--faint); }
              .tiny  { font-size: .82rem; }
              .label {
                font-family: var(--mono); font-size: .7rem; font-weight: 500;
                letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
              }
              .kicker {
                display: inline-flex; align-items: center; gap: .55rem;
                font-family: var(--mono); font-size: .71rem; font-weight: 500;
                letter-spacing: .16em; text-transform: uppercase; color: var(--emerald-deep);
              }
              .kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .6; }
              code {
                font-family: var(--mono); font-size: .85em;
                background: var(--surface-2); border: 1px solid var(--line);
                border-radius: 6px; padding: .08em .4em; color: var(--ink-2);
              }
          
              .shell {
                min-height: 100vh; display: flex; flex-direction: column;
                overflow-x: clip;
              }
              .wrap { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              .topbar {
                position: sticky; top: 0; z-index: 60; height: var(--nav-h);
                display: flex; align-items: center;
                background: color-mix(in srgb, var(--canvas) 88%, transparent);
                backdrop-filter: saturate(1.6) blur(14px); -webkit-backdrop-filter: saturate(1.6) blur(14px);
                border-bottom: 1px solid var(--line);
              }
              .topbar .bar { display: flex; align-items: center; gap: 1.4rem; width: 100%; }
          
               
              body:not(.app) .topbar {
                position: fixed; top: 0; left: 0; right: 0; height: auto;
                padding: 14px 0; background: none; border: 0;
                backdrop-filter: none; -webkit-backdrop-filter: none;
                transition: padding .25s ease;
              }
               
              body:not(.app) .topbar .bar {
                position: relative;
                padding: .5rem .55rem .5rem 1.15rem; border-radius: var(--r-pill);
                background: color-mix(in srgb, var(--surface) 92%, transparent);
                border: 1px solid var(--line); box-shadow: var(--shadow-sm);
                backdrop-filter: saturate(1.5) blur(16px); -webkit-backdrop-filter: saturate(1.5) blur(16px);
                transition: background .25s ease, border-color .25s ease, box-shadow .25s ease;
              }
          
               
              body.hero-top:not(.app) .topbar .bar {
                background: rgba(255, 255, 255, .12);
                border-color: rgba(255, 255, 255, .22);
                box-shadow: none;
              }
              body.hero-top:not(.app) .topbar .brand,
              body.hero-top:not(.app) .topbar .nav a.link,
              body.hero-top:not(.app) .topbar .nav-actions a.link { color: #fff; }
              body.hero-top:not(.app) .topbar .nav a.link:hover,
              body.hero-top:not(.app) .topbar .nav-actions a.link:hover { color: #fff; background: rgba(255,255,255,.16); }
              body.hero-top:not(.app) .topbar .icon-btn { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.24); color: #fff; }
              body.hero-top:not(.app) .topbar .icon-btn:hover { border-color: #fff; color: #fff; }
              body.hero-top:not(.app) .topbar .brand .mark { box-shadow: none; }
          
              body:not(.app) .topbar.stuck { padding: 8px 0; }
              body.hero-top:not(.app) .topbar.stuck .bar {
                background: color-mix(in srgb, var(--surface) 94%, transparent);
                border-color: var(--line); box-shadow: var(--shadow);
              }
              body.hero-top:not(.app) .topbar.stuck .brand { color: var(--heading); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link { color: var(--ink-2); }
              body.hero-top:not(.app) .topbar.stuck .nav a.link:hover,
              body.hero-top:not(.app) .topbar.stuck .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn { background: var(--surface); border-color: var(--line); color: var(--muted); }
              body.hero-top:not(.app) .topbar.stuck .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
          
              .brand { display: inline-flex; align-items: center; gap: .6rem; font-family: var(--text); font-weight: 800; letter-spacing: -.03em; font-size: 1.05rem; color: var(--heading); flex-shrink: 0; }
              .brand .mark {
                width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
                background: linear-gradient(145deg, var(--emerald), var(--emerald-dark));
                color: #fff; font-size: .82rem; font-weight: 800; letter-spacing: -.02em;
                box-shadow: 0 6px 14px -6px rgba(7,122,75,.7);
              }
              :root[data-theme="dark"] .brand .mark { color: #06120d; }
              .brand .mark-img { background: none; box-shadow: none; object-fit: contain; border-radius: 7px; }
              .brand .mark-dark { display: none; }
              :root[data-theme="dark"] .brand .mark-light { display: none; }
              :root[data-theme="dark"] .brand .mark-dark { display: block; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .brand .mark-light { display: none; }
                :root:not([data-theme="light"]) .brand .mark-dark { display: block; }
              }
          
              .nav { display: flex; align-items: center; justify-content: center; gap: .4rem; flex: 1; }
              .nav a.link, .nav-actions a.link {
                display: inline-flex; align-items: center; gap: .42rem;
                padding: .45rem .75rem; border-radius: var(--r-xs);
                font-size: .93rem; font-weight: 600; color: var(--ink-2);
                transition: color .15s, background .15s;
              }
              .nav a.link:hover, .nav-actions a.link:hover { color: var(--heading); background: var(--surface-2); }
              .nav a.link.active { color: var(--heading); }
              .nav-actions { display: flex; align-items: center; gap: .45rem; flex-shrink: 0; }
          
              .icon-btn {
                display: grid; place-items: center; width: 36px; height: 36px; flex-shrink: 0;
                border: 1px solid var(--line); border-radius: var(--r-xs);
                background: var(--surface); color: var(--muted); cursor: pointer;
                font: inherit; font-size: .95rem; padding: 0;
                transition: border-color .15s, color .15s;
              }
              .icon-btn:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .theme-toggle .sun { display: none; } .theme-toggle .moon { display: block; }
              :root[data-theme="dark"] .theme-toggle .sun { display: block; }
              :root[data-theme="dark"] .theme-toggle .moon { display: none; }
              @media (prefers-color-scheme: dark) {
                :root:not([data-theme="light"]) .theme-toggle .sun { display: block; }
                :root:not([data-theme="light"]) .theme-toggle .moon { display: none; }
              }
              #navToggle { display: none; }
          
              @media (max-width: 860px) {
                #navToggle { display: grid; }
                .nav-actions a.link.nav-login { display: none; }
                .nav {
                  display: none; position: absolute; top: var(--nav-h); left: 0; right: 0;
                  flex-direction: column; align-items: stretch; gap: .1rem;
                  padding: .8rem clamp(1.1rem, 4vw, 2rem) 1.2rem;
                  background: var(--surface); border-bottom: 1px solid var(--line);
                  box-shadow: var(--shadow-lg);
                }
                .topbar.open .nav { display: flex; }
          
                 
                body:not(.app) .nav {
                  top: calc(100% + .5rem); left: .25rem; right: .25rem;
                  border: 1px solid var(--line); border-radius: var(--r-lg);
                  padding: .6rem .7rem .8rem;
                }
                body.hero-top:not(.app) .topbar.open .nav a.link,
                body:not(.app) .topbar.open .nav a.link { color: var(--ink-2); }
                body.hero-top:not(.app) .topbar.open .nav a.link:hover { background: var(--surface-2); color: var(--heading); }
              }
          
               
              @media (max-width: 620px) {
                body:not(.app) .topbar .brand { font-size: 0; gap: 0; }
                body:not(.app) .topbar .brand .mark { font-size: .82rem; }
                body:not(.app) .topbar .bar { gap: .6rem; padding-left: .55rem; }
                body:not(.app) .topbar .nav-actions { gap: .35rem; }
                body:not(.app) .topbar .nav-actions .btn { padding: .5rem .85rem; font-size: .82rem; }
                body:not(.app) .icon-btn { width: 34px; height: 34px; }
              }
          
              main { flex: 1; padding: clamp(2.2rem, 5vw, 4rem) 0 clamp(3.5rem, 7vw, 5.5rem); }
               
              body:not(.app) main { padding-top: calc(var(--nav-h) + clamp(1.4rem, 4vw, 2.6rem)); }
              body.hero-top:not(.app) main { padding-top: 0; }
               
              body.hero-top:not(.app) .flash { margin-top: calc(var(--nav-h) + 1rem); }
              body.app main { padding: 0; }
              body.app .wrap { max-width: none; padding: 0; }
          
               
              .bleed { width: 100vw; margin-left: calc(50% - 50vw); }
          
              .site-footer {
                background: var(--band); color: var(--band-fg);
                padding: clamp(2.4rem, 5vw, 3.6rem) 0 1.2rem;
                overflow: hidden;
              }
              .site-footer .footer-name,
              .site-footer .footer-sub-head { color: var(--band-fg); }
              .site-footer .footer-tag,
              .site-footer .footer-sub-copy,
              .site-footer .footer-col a { color: var(--band-muted); }
              .site-footer .label { color: #6f7a75; }
              .site-footer .footer-col a:hover { color: var(--band-fg); }
              .site-footer input[type=email] {
                background: var(--band-2); border-color: var(--band-line); color: var(--band-fg);
              }
              .site-footer input[type=email]::placeholder { color: #6f7a75; }
              .site-footer .sub-btn { background: var(--emerald); color: #06120d; }
              .site-footer .sub-btn:hover { background: var(--emerald-deep); color: #fff; }
              .site-footer .footer-base { border-top-color: var(--band-line); color: #6f7a75; }
              .footer-grid {
                display: grid; grid-template-columns: 1.4fr .8fr .8fr 1.2fr; gap: 2rem;
                padding-bottom: clamp(1.4rem, 3vw, 2.2rem);
              }
              .footer-name {
                font-family: var(--text); font-weight: 800; letter-spacing: -.03em;
                font-size: 1.05rem; color: var(--heading);
              }
              .footer-tag { margin: .5rem 0 0; font-size: .88rem; color: var(--muted); max-width: 30ch; }
              .footer-col .label { display: block; margin-bottom: .7rem; }
              .footer-col a { display: block; padding: .24rem 0; font-size: .9rem; color: var(--muted); }
              .footer-col a:hover { color: var(--emerald-deep); }
              .footer-sub-head { font-size: .95rem; font-weight: 750; color: var(--heading); margin: 0 0 .35rem; }
              .footer-sub-copy { font-size: .84rem; color: var(--muted); margin: 0 0 .8rem; max-width: 32ch; }
              .footer-sub { display: flex; gap: .5rem; }
              .footer-sub input[type=email] { flex: 1; min-width: 0; }
              .footer-sub .sub-btn {
                display: grid; place-items: center; width: 46px; flex-shrink: 0;
                border: 0; border-radius: var(--r); cursor: pointer;
                background: var(--cta-bg); color: var(--cta-fg); font: inherit;
                transition: background .15s;
              }
              .footer-sub .sub-btn:hover { background: var(--cta-bg-hover); }
              .footer-base {
                display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
                border-top: 1px solid var(--line-soft); padding-top: 1.2rem;
                font-family: var(--mono); font-size: .72rem; color: var(--faint);
              }
              @media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
              @media (max-width: 520px) { .footer-grid { grid-template-columns: 1fr; gap: 1.4rem; } }
          
              .btn {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-family: var(--text); font-weight: 600; font-size: .95rem;
                line-height: 1; cursor: pointer; white-space: nowrap; text-decoration: none;
                padding: .78rem 1.3rem; border-radius: var(--r); border: 1px solid transparent;
                transition: transform .08s, filter .15s, border-color .15s, background .15s, color .15s;
              }
              .btn:active { transform: translateY(1px); }
              .btn-primary { background: var(--ink); color: var(--canvas); }
              .btn-primary:hover { filter: brightness(1.22); }
              :root[data-theme="dark"] .btn-primary { background: var(--emerald); color: #06120d; }
              .btn-accent {
                background: var(--cta-bg); color: var(--cta-fg);
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
              }
              .btn-accent:hover { background: var(--cta-bg-hover); }
              .btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line); box-shadow: var(--shadow-sm); }
              .btn-ghost:hover { border-color: var(--emerald); color: var(--emerald-deep); }
              .btn-quiet { background: transparent; color: var(--muted); padding-left: .6rem; padding-right: .6rem; }
              .btn-quiet:hover { color: var(--ink); }
              .btn-sm { padding: .5rem .85rem; font-size: .86rem; border-radius: var(--r-xs); }
              .btn-block { width: 100%; }
              .btn[disabled] { opacity: .5; cursor: not-allowed; }
          
               
              body:not(.app) .btn { border-radius: var(--r-pill); padding: .88rem 1.6rem; }
              body:not(.app) .btn-sm { padding: .55rem 1.05rem; font-size: .86rem; }
              body:not(.app) form button:not([class]) { border-radius: var(--r-pill); }
              .btn-onband { background: #fff; color: var(--band); }
              .btn-onband:hover { background: #fff; filter: brightness(.94); }
              .btn-outline-band { background: transparent; color: #fff; border-color: rgba(255,255,255,.32); }
              .btn-outline-band:hover { border-color: #fff; background: rgba(255,255,255,.08); }
          
               
              .band { position: relative; padding: clamp(3rem, 7vw, 6rem) 0; }
               
              .band-dark + .band-dark { padding-top: 0; }
              .band-dark { background: var(--band); color: var(--band-fg); }
               
              body:not(.app) .band-dark h1, body:not(.app) .band-dark h2,
              body:not(.app) .band-dark h3, body:not(.app) .band-dark .d-xl,
              body:not(.app) .band-dark .d-lg, body:not(.app) .band-dark .d-thin { color: var(--band-fg); }
              .band-dark .muted, .band-dark .lede { color: var(--band-muted); }
              .band-dark .label { color: #6f7a75; }
              .band-dark .kicker { color: var(--emerald); }
               
              .band-paper { background: var(--surface-2); color: var(--ink); }
              .band-accent { background: var(--emerald-deep); color: #fff; }
              body:not(.app) .band-accent h2, body:not(.app) .band-accent h3,
              body:not(.app) .band-accent .d-lg, body:not(.app) .band-accent .d-xl { color: #fff; }
              .band-accent .lede, .band-accent .muted { color: rgba(255,255,255,.78); }
              .band-accent .label, .band-accent .kicker { color: rgba(255,255,255,.66); }
              .band-accent .kicker::before { background: currentColor; }
              .band-inner { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(1.1rem, 4vw, 2rem); }
          
              form button:not([class]) {
                display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
                font: inherit; font-weight: 600; cursor: pointer; color: var(--cta-fg); border: 0;
                background: var(--cta-bg);
                border-radius: var(--r); padding: .78rem 1.4rem;
                box-shadow: 0 14px 28px -16px color-mix(in srgb, var(--cta-bg) 80%, transparent);
                transition: background .15s, transform .08s;
              }
              form button:not([class]):hover { background: var(--cta-bg-hover); }
              form button:not([class]):active { transform: translateY(1px); }
          
              .card {
                background: var(--surface); border: 1px solid var(--line);
                border-radius: var(--r-lg); padding: 1.5rem 1.6rem; box-shadow: var(--shadow);
              }
              .card.tight { padding: 1.1rem 1.2rem; }
              .card.flush { padding: 0; overflow: hidden; }
              .panel { background: var(--surface-2); border: 1px solid var(--line-soft); border-radius: var(--r); padding: 1.1rem 1.2rem; }
              .stack > * + * { margin-top: 1.1rem; }
              .row { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
              .row-between { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
              .grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
              .grid-2 { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
              .center-narrow { max-width: 460px; margin: 0 auto; }
          
              .pill {
                display: inline-flex; align-items: center; gap: .35rem;
                font-family: var(--mono); font-size: .68rem; font-weight: 500;
                letter-spacing: .08em; text-transform: uppercase;
                padding: .26rem .6rem; border-radius: 999px;
                background: var(--surface-2); color: var(--muted); border: 1px solid var(--line);
              }
              .pill { align-self: flex-start; }
              .pill.ok   { background: var(--emerald-soft); color: var(--emerald-deep); border-color: var(--emerald-line); }
              .pill.warn { background: var(--warn-soft); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 32%, transparent); }
              .pill.bad  { background: var(--bad-soft); color: var(--bad); border-color: color-mix(in srgb, var(--bad) 30%, transparent); }
              .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
              .field { display: block; margin-bottom: 1.05rem; }
              .field > .lbl { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; font-size: .88rem; font-weight: 600; margin-bottom: .38rem; }
              .field > .lbl .hint { font-weight: 400; font-size: .8rem; color: var(--faint); }
              input[type=text], input[type=email], input[type=password], input[type=url],
              input[type=number], input[type=date], input[type=search], textarea, select {
                display: block; width: 100%; font: inherit; font-size: .95rem; color: var(--ink);
                background: var(--surface); border: 1px solid var(--line); border-radius: var(--r);
                padding: .72rem .9rem; transition: border-color .15s, box-shadow .15s;
              }
              textarea { min-height: 120px; resize: vertical; line-height: 1.55; }
              input::placeholder, textarea::placeholder { color: var(--faint); }
              input:focus, textarea:focus, select:focus { outline: 0; border-color: var(--emerald); box-shadow: var(--ring); }
              input[aria-invalid="true"], textarea[aria-invalid="true"] { border-color: var(--bad); }
              input[type=checkbox], input[type=radio] { accent-color: var(--emerald); width: auto; }
              .err { display: block; color: var(--bad); font-size: .84rem; font-weight: 500; margin-top: .35rem; }
              fieldset { border: 0; margin: 0; padding: 0; }
          
              .progress { height: 6px; border-radius: 999px; background: var(--surface-2); overflow: hidden; border: 1px solid var(--line-soft); }
              .progress > i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--emerald), var(--emerald-deep)); }
          
              .flash {
                display: flex; align-items: flex-start; gap: .6rem;
                background: var(--surface-2); color: var(--ink-2);
                border: 1px solid var(--line); border-radius: var(--r);
                padding: .8rem 1.05rem; margin-bottom: 1.4rem; font-weight: 500; font-size: .93rem;
                animation: flashIn .22s ease;
              }
              .flash::before { content: "→"; font-weight: 800; color: var(--muted); }
              .flash.warn {
                background: #fdf6e7; color: #8a5a00; border-color: #f0dcae;
              }
              :root[data-theme="dark"] .flash.warn { color: #8a5a00; }
              .flash.warn::before { content: "!"; }
              .flash.ok {
                background: #eaf7f0; color: #10633f; border-color: #bfe3d0;
              }
              :root[data-theme="dark"] .flash.ok { color: #10633f; }
              .flash.ok::before { content: "\2713"; color: #10633f; }
              .flash.error {
                background: #fdeceb; color: #8c2b22; border-color: #f3c8c4;
              }
              :root[data-theme="dark"] .flash.error { color: #8c2b22; }
              .flash.error::before { content: "\2715"; color: #8c2b22; }
              @keyframes flashIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
              .auth-centered { text-align: center; padding-top: clamp(.2rem, 2vw, 1rem); }
              .auth-centered .kicker { justify-content: center; }
              .auth-centered .lede { margin-left: auto; margin-right: auto; }
              .auth-centered .card { text-align: left; }
          
              .ticks { list-style: none; margin: 1.1rem 0; padding: 0; display: grid; gap: .55rem; font-size: .93rem; }
              .ticks li { display: flex; gap: .6rem; align-items: baseline; color: var(--ink-2); }
              .ticks li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
          
              table { width: 100%; border-collapse: collapse; }
              th, td { text-align: left; padding: .7rem .6rem; font-size: .92rem; }
              th { font-family: var(--mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--faint); font-weight: 500; border-bottom: 1px solid var(--line); }
              td { border-bottom: 1px solid var(--line-soft); }
              tr:last-child td { border-bottom: 0; }
          
              .page-head { margin-bottom: clamp(1.6rem, 3vw, 2.4rem); max-width: 58ch; }
              .page-head .kicker { margin-bottom: .9rem; }
              .backlink { display: inline-flex; align-items: center; gap: .35rem; color: var(--faint); font-size: .88rem; margin-bottom: .9rem; }
              .backlink:hover { color: var(--emerald-deep); }
          
              @media (prefers-reduced-motion: reduce) {
                *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
              }
            </style>
          <script src="/__wons/sdk/pocketbase.umd.js"></script><script src="/__wons/sdk/wons.umd.js" data-wons-global="Wons"></script></head>
          <body class=" hero-top">
            <div class="shell">
              
              <header class="topbar" id="topbar">
                <div class="wrap"><div class="bar">
                  <a class="brand" href="/">
                    
                      <img class="mark mark-img mark-light"
                           src="/__wons/download?a=0&amp;e=1786819378&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfamd1aGFzNnMzcC5wbmc&amp;s=743b059e3bd990dbf388d37c6ab2430dc7b2a03d82f72815fbf95547ffb217c5" alt="" width="30" height="30">
                      
                        <img class="mark mark-img mark-dark" src="/__wons/download?a=0&amp;e=1786819378&amp;k=cGJjXzQyNjEwMDE0MTQvdWkyZWYwYmF5ZXF6NWExL3dvbnNfZmx5MHF4YXBrOS5wbmc&amp;s=90b82cf9b1cc26c14a76a7ed74d1bd50f21075e7ec6d23f3058d77c343c0f586" alt="" width="30" height="30">
                      
                    
                    WONS Sites
                  </a>
                  <nav class="nav" id="nav">
                    
                      <a class="link" href="/#product">Features</a>
                    
                      <a class="link" href="/themes">Themes</a>
                    
                      <a class="link" href="/#pricing">Pricing</a>
                    
                      <a class="link" href="/docs">Docs</a>
                    
                  </nav>
                  <div class="nav-actions">
                    
                      <a class="link nav-login" href="/login">Log in</a>
                      <a class="btn btn-accent btn-sm" href="/signup">Start Free</a>
                    
                    <button class="icon-btn theme-toggle" id="themeToggle" type="button" aria-label="Toggle dark mode">
                      <svg class="moon" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <path d="M20.4 14.7A8.7 8.7 0 0 1 9.3 3.6 8.7 8.7 0 1 0 20.4 14.7Z"/>
                      </svg>
                      <svg class="sun" viewBox="0 0 24 24" width="17" height="17" fill="none"
                           stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
                           stroke-linejoin="round" aria-hidden="true" focusable="false">
                        <circle cx="12" cy="12" r="4.1"/>
                        <path d="M12 2.5v2.2M12 19.3v2.2M4.6 4.6l1.6 1.6M17.8 17.8l1.6 1.6M2.5 12h2.2M19.3 12h2.2M4.6 19.4l1.6-1.6M17.8 6.2l1.6-1.6"/>
                      </svg>
                    </button>
                    <button class="icon-btn" id="navToggle" type="button" aria-label="Toggle menu" aria-expanded="false">☰</button>
                  </div>
                </div></div>
              </header>
              
          
              <main>
                <div class="wrap">
                  
                    
                  
                  
          
          
          
          <section class="auth bleed">
            <div class="auth-grid band-inner">
              <div class="auth-copy">
                <span class="auth-kicker">Step 2 of 4</span>
                <h1 class="auth-title">Create your<br>workspace</h1>
                <p class="auth-lede">
                  Your content lives here. Your site keeps living wherever it is hosted
                  today, reading everything from one address.
                </p>
          
                
                <div class="progress progress-band" role="progressbar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
                  <i style="width:25%"></i>
                </div>
                <ol class="steps">
                  
                    <li class="done"><b>1</b>Choose a plan</li>
                  
                    <li class=""><b>2</b>Create your workspace</li>
                  
                    <li class=""><b>3</b>Add your content</li>
                  
                    <li class=""><b>4</b>Point your domain</li>
                  
                </ol>
          
                
                <div class="auth-cols">
                  <div>
                    <span class="auth-h">What you get today</span>
                    <ul class="auth-points">
                      <li>A dashboard for every word and image on your site</li>
                      <li>One API your existing host reads — no migration</li>
                      <li>Themes you can switch without a rebuild</li>
                      <li>Images stripped of location data, served through expiring links</li>
                    </ul>
                  </div>
                  <div>
                    <span class="auth-h">Right after this</span>
                    <div class="auth-next"><b>01</b><span>Name your site and claim the domain it will serve</span></div>
                    <div class="auth-next"><b>02</b><span>Fill in the pages you already have — we start you with a template</span></div>
                    <div class="auth-next"><b>03</b><span>Download one file for your host, and you are live</span></div>
                  </div>
                </div>
              </div>
          
              <div class="auth-card">
                <form method="post">
                  <input type="hidden" name="_csrf" value="bo7C3HBznzofZroi7pP2.875fef2620a865dadb384646bd0bc62e">
                  <input type="hidden" name="plan" value="lifesaver">
                  <label class="field">
                    <span class="lbl">Organisation<span class="hint">Shown as your site name</span></span>
                    <input type="text" name="organisation" value="" placeholder="Dragon View Hotel" required autofocus>
                    
                  </label>
          
                  <label class="field">
                    <span class="lbl">Work email</span>
                    <input type="email" name="email" value="" placeholder="you@yourdomain.bt" required>
                    
                  </label>
          
                  <label class="field">
                    <span class="lbl">Password<span class="hint">At least 10 characters</span></span>
                    <input type="password" name="password" required minlength="10" autocomplete="new-password">
                    
                  </label>
          
                  <button class="btn btn-accent btn-block btn-lg" type="submit">Create my workspace</button>
                  <p class="auth-fine">Free while you set it up. No card, no charge until you go live.</p>
                </form>
          
                <p class="auth-alt">
                  Already have a workspace? <a class="auth-link" href="/login">Sign in</a>
                </p>
              </div>
            </div>
          </section>
          
          <style>
            .auth {
              background: var(--band); color: var(--band-fg);
              min-height: min(100svh, 940px);
              display: flex; align-items: center;
              padding: calc(var(--nav-h) + 2.4rem) 0 clamp(2.4rem, 6vw, 4rem);
            }
            .auth-grid {
              display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
              gap: clamp(1.8rem, 5vw, 4rem); align-items: center; width: 100%;
            }
          
            .auth-kicker {
              display: inline-flex; align-items: center; gap: .55rem;
              font-family: var(--mono); font-size: .7rem; font-weight: 500;
              letter-spacing: .16em; text-transform: uppercase; color: var(--emerald);
            }
            .auth-kicker::before { content: ""; width: 20px; height: 1.5px; background: currentColor; opacity: .7; }
             
            .auth .auth-title {
              font-family: var(--text); font-weight: 800; letter-spacing: -.045em;
              font-size: clamp(2.4rem, 5.6vw, 4.4rem); line-height: .96;
              color: #fff; margin: .9rem 0 1rem;
            }
            .auth-lede { max-width: 44ch; color: var(--band-muted); font-size: 1rem; line-height: 1.6; margin: 0 0 1.6rem; }
          
            .progress-band { background: rgba(255,255,255,.10); border-color: rgba(255,255,255,.16); }
            .steps { list-style: none; margin: .8rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem 1rem; font-size: .8rem; color: rgba(255,255,255,.5); }
            .steps li { display: flex; align-items: center; gap: .4rem; }
            .steps li b {
              display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%;
              background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18);
              font-size: .68rem; font-weight: 700; color: rgba(255,255,255,.6);
            }
            .steps li.done { color: var(--emerald); }
            .steps li.done b { background: var(--emerald); border-color: var(--emerald); color: #06120d; }
          
            .auth-cols {
              display: grid; grid-template-columns: 1fr 1fr; gap: 1.6rem;
              margin-top: 2rem; padding-top: 1.6rem; border-top: 1px solid rgba(255,255,255,.14);
            }
            .auth-h {
              display: block; margin-bottom: .7rem;
              font-family: var(--mono); font-size: .68rem; font-weight: 500;
              letter-spacing: .14em; text-transform: uppercase; color: #6f7a75;
            }
            .auth-points { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
            .auth-points li {
              display: flex; gap: .6rem; align-items: baseline;
              font-size: .88rem; line-height: 1.45; color: rgba(255,255,255,.76);
            }
            .auth-points li::before { content: "✓"; color: var(--emerald); font-weight: 700; font-size: .85em; flex-shrink: 0; }
            .auth-next { display: flex; gap: .7rem; align-items: flex-start; font-size: .88rem; line-height: 1.45; color: rgba(255,255,255,.76); margin-bottom: .5rem; }
            .auth-next b { font-family: var(--mono); font-size: .66rem; letter-spacing: .1em; color: var(--emerald); padding-top: .22rem; }
          
            .auth-card {
              background: var(--surface); color: var(--ink);
              border: 1px solid var(--line); border-radius: var(--r-2xl);
              padding: clamp(1.5rem, 3.4vw, 2.4rem);
              box-shadow: 0 50px 100px -50px rgba(0,0,0,.85);
            }
            .auth-card .field:last-of-type { margin-bottom: 1.4rem; }
            .auth-fine { margin: .9rem 0 0; text-align: center; font-size: .8rem; color: var(--faint); }
            .auth-alt { margin: 1.2rem 0 0; text-align: center; font-size: .88rem; color: var(--muted); }
            .auth-link { color: var(--emerald-deep); font-weight: 600; }
            :root[data-theme="dark"] .auth-link { color: var(--emerald); }
            @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .auth-link { color: var(--emerald); } }
            .btn-lg { padding: 1rem 1.9rem; font-size: 1rem; }
          
            @media (max-width: 980px) {
              .auth { min-height: 0; padding-top: calc(var(--nav-h) + 1.6rem); }
              .auth-grid { grid-template-columns: 1fr; gap: 2rem; }
              .auth-copy { order: 2; }
              .auth-card { order: 1; }
            }
            @media (max-width: 620px) { .auth-cols { grid-template-columns: 1fr; } }
          </style>
          
                </div>
              </main>
          
              
              <footer class="site-footer">
                <div class="wrap footer-grid">
                  <div>
                    <span class="footer-name">WONS Sites</span>
                    <p class="footer-tag">A website you can keep up to date yourself.</p>
                  </div>
                  <nav class="footer-col" aria-label="Product">
                    <span class="label">Product</span>
                    <a href="/themes">Themes</a>
                    <a href="/#product">What you can change</a>
                    <a href="/#pricing">Pricing</a>
                    <a href="/docs">Docs</a>
                  </nav>
                  <nav class="footer-col" aria-label="Account">
                    <span class="label">Account</span>
                    <a href="/login">Log in</a>
                    <a href="/signup">Start your site</a>
                    <a href="/dashboard">Dashboard</a>
                  </nav>
                  <div>
                    <p class="footer-sub-head">Start with your email</p>
                    <p class="footer-sub-copy">It takes you straight to sign-up — free plan, no card needed.</p>
                    <form class="footer-sub" action="/signup" method="get">
                      <input type="email" name="email" placeholder="Your email address" aria-label="Email address">
                      <button class="sub-btn" type="submit" aria-label="Start your site">
                        <svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
                      </button>
                    </form>
                  </div>
                </div>
                <div class="wrap footer-base">
                  <span>© 2026 WONS Sites. All rights reserved.</span>
                  <span>Made by WONS</span>
                </div>
              </footer>
              
            </div>
          
            <script nonce="ULzaG9cSiTvmgMkJaMFXBA">
              var themeToggle = document.getElementById("themeToggle");
              if (themeToggle) themeToggle.addEventListener("click", function () {
                var root = document.documentElement;
                var current = root.getAttribute("data-theme");
                var systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
                var next = (current ? current === "dark" : systemDark) ? "light" : "dark";
                root.setAttribute("data-theme", next);
                try { localStorage.setItem("wons-sites-theme", next); } catch (e) {}
              });
          
              
              var navToggle = document.getElementById("navToggle");
              var topbar = document.getElementById("topbar");
              if (navToggle && topbar) navToggle.addEventListener("click", function () {
                var open = topbar.classList.toggle("open");
                navToggle.setAttribute("aria-expanded", open ? "true" : "false");
              });
          
              
              
              
              (function () {
                var bar = document.getElementById("topbar");
                if (!bar) return;
                var mark = function () {
                  bar.classList.toggle("stuck", window.scrollY > 72);
                };
                mark();
                window.addEventListener("scroll", mark, { passive: true });
              })();
          
              (function () {
                var path = location.pathname.replace(/\/+$/, "") || "/";
                var best = null, bestLen = -1;
                document.querySelectorAll(".nav a.link").forEach(function (a) {
                  var href = (a.getAttribute("href") || "").replace(/\/+$/, "") || "/";
                  var match = href === "/" ? path === "/" : (path === href || path.indexOf(href + "/") === 0);
                  if (match && href.length > bestLen) { best = a; bestLen = href.length; }
                });
                if (best) best.classList.add("active");
              })();
            </script>
          <script nonce="ULzaG9cSiTvmgMkJaMFXBA">(function(){
          	var es = new EventSource("/__wons/dev/reload");
          	es.onmessage = function(){ location.reload() };
          	// Close the stream the instant the page is left. Without this, each
          	// navigation leaves its SSE connection lingering; a few quick clicks
          	// exhaust the browser's ~6-per-origin HTTP/1.1 connection cap and every
          	// further request (including the next page) stalls until the stale
          	// streams time out. Closing on pagehide frees the slot immediately.
          	window.addEventListener("pagehide", function(){ es.close(); });
          })()</script></body>
          </html>
          
          Parameter
          plan
          Solution

          Validate all input and sanitize output it before writing to any HTML attributes.

Appendix

Alert Types

This section contains additional information on the types of alerts in the report.

  1. Content Security Policy (CSP) Header Not Set

    Source raised by a passive scanner (Content Security Policy (CSP) Header Not Set)
    CWE ID 693
    WASC ID 15
    Reference
    1. https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP
    2. https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html
    3. https://www.w3.org/TR/CSP/
    4. https://w3c.github.io/webappsec-csp/
    5. https://web.dev/articles/csp
    6. https://caniuse.com/#feat=contentsecuritypolicy
    7. https://content-security-policy.com/
  2. Cross-Domain Misconfiguration

    Source raised by a passive scanner (Cross-Domain Misconfiguration)
    CWE ID 264
    WASC ID 14
    Reference
    1. https://vulncat.fortify.com/en/detail?category=HTML5&subcategory=Overly%20Permissive%20CORS%20Policy
  3. Cookie Without Secure Flag

    Source raised by a passive scanner (Cookie Without Secure Flag)
    CWE ID 614
    WASC ID 13
    Reference
    1. https://owasp.org/www-project-web-security-testing-guide/v41/4-Web_Application_Security_Testing/06-Session_Management_Testing/02-Testing_for_Cookies_Attributes.html
  4. Server Leaks Version Information via "Server" HTTP Response Header Field

    Source raised by a passive scanner (HTTP Server Response Header)
    CWE ID 497
    WASC ID 13
    Reference
    1. https://httpd.apache.org/docs/current/mod/core.html#servertokens
    2. https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ff648552(v=pandp.10)
    3. https://www.troyhunt.com/shhh-dont-let-your-response-headers/
  5. Strict-Transport-Security Header Not Set

    Source raised by a passive scanner (Strict-Transport-Security Header)
    CWE ID 319
    WASC ID 15
    Reference
    1. https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Strict_Transport_Security_Cheat_Sheet.html
    2. https://owasp.org/www-community/Security_Headers
    3. https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
    4. https://caniuse.com/stricttransportsecurity
    5. https://datatracker.ietf.org/doc/html/rfc6797
  6. Timestamp Disclosure - Unix

    Source raised by a passive scanner (Timestamp Disclosure)
    CWE ID 497
    WASC ID 13
    Reference
    1. https://cwe.mitre.org/data/definitions/200.html
  7. Authentication Request Identified

    Source raised by a passive scanner (Authentication Request Identified)
    Reference
    1. https://www.zaproxy.org/docs/desktop/addons/authentication-helper/auth-req-id/
  8. Content Security Policy (CSP) Report-Only Header Found

    Source raised by a passive scanner (Content Security Policy (CSP) Header Not Set)
    CWE ID 693
    WASC ID 15
    Reference
    1. https://www.w3.org/TR/CSP2/
    2. https://w3c.github.io/webappsec-csp/
    3. https://caniuse.com/#feat=contentsecuritypolicy
    4. https://content-security-policy.com/
  9. Information Disclosure - Sensitive Information in URL

    Source raised by a passive scanner (Information Disclosure - Sensitive Information in URL)
    CWE ID 598
    WASC ID 13
  10. Information Disclosure - Suspicious Comments

    Source raised by a passive scanner (Information Disclosure - Suspicious Comments)
    CWE ID 615
    WASC ID 13
  11. Modern Web Application

    Source raised by a passive scanner (Modern Web Application)
  12. Re-examine Cache-control Directives

    Source raised by a passive scanner (Re-examine Cache-control Directives)
    CWE ID 525
    WASC ID 13
    Reference
    1. https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html#web-content-caching
    2. https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cache-Control
    3. https://grayduck.mn/2021/09/13/cache-control-recommendations/
  13. Session Management Response Identified

    Source raised by a passive scanner (Session Management Response Identified)
    Reference
    1. https://www.zaproxy.org/docs/desktop/addons/authentication-helper/session-mgmt-id/
  14. User Agent Fuzzer

    Source raised by an active scanner (User Agent Fuzzer)
    Reference
    1. https://owasp.org/wstg
  15. User Controllable HTML Element Attribute (Potential XSS)

    Source raised by a passive scanner (User Controllable HTML Element Attribute (Potential XSS))
    CWE ID 20
    WASC ID 20
    Reference
    1. https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html