@nebularstreams/statify 3.0.6 → 3.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/website.simple/website.css +1 -1
- package/dist/website.software/website.css +1 -1
- package/dist/website.worlds/website.css +1 -1
- package/package.json +2 -1
- package/skill/statify-site/SKILL.md +53 -0
- package/skill/statify-site/agents/openai.yaml +4 -0
- package/skill/statify-site/references/authoring.md +121 -0
- package/skill/statify-site/references/landing-pages.md +107 -0
- package/skill/statify-site/references/skins.md +150 -0
- package/src.website/css/css-core/ui.navibar.css +95 -1
- package/src.website/css/css-core/ui.qrcode.css +20 -0
- package/src.website/src/app/app.style.mjs +2 -0
- package/templates/documentation/metadata.json +3 -6
- package/templates/landing/metadata.json +1 -1
- package/templates/landing/pages/docs/cookies.md +25 -0
- package/templates/landing/pages/docs/index.md +13 -0
- package/templates/landing/pages/docs/privacy.md +50 -0
- package/templates/landing/pages/docs/tos.md +49 -0
- package/templates/landing/pages/index.json +3 -3
- package/templates/landing-rich/assets/app/webfonts/fa-brands-400.woff2 +0 -0
- package/templates/landing-rich/assets/app/webfonts/fa-solid-900.woff2 +0 -0
- package/templates/landing-rich/assets/app/website.css +32 -0
- package/templates/landing-rich/assets/app/website.min.js +6 -0
- package/templates/landing-rich/assets/res/carousel/image-1.webp +0 -0
- package/templates/landing-rich/assets/res/carousel/image-2.webp +0 -0
- package/templates/landing-rich/assets/res/carousel/image-3.webp +0 -0
- package/templates/landing-rich/assets/res/custom.css +122 -0
- package/templates/landing-rich/assets/res/logos/favicon.ico +0 -0
- package/templates/landing-rich/assets/res/logos/favicon.png +0 -0
- package/templates/landing-rich/assets/res/logos/logo.medallion.png +0 -0
- package/templates/landing-rich/assets/res/logos/logo.white.png +0 -0
- package/templates/landing-rich/assets/res/proj/banda-tech-client.webp +0 -0
- package/templates/landing-rich/assets/res/proj/banda-tech-server.webp +0 -0
- package/templates/landing-rich/assets/res/proj/proj-common-ground.webp +0 -0
- package/templates/landing-rich/assets/res/proj/proj-fieldnote.webp +0 -0
- package/templates/landing-rich/assets/res/proj/proj-tribes.webp +0 -0
- package/templates/landing-rich/images.json +932 -0
- package/templates/landing-rich/metadata.json +115 -0
- package/templates/landing-rich/pages/docs/cookies.md +25 -0
- package/templates/landing-rich/pages/docs/index.md +13 -0
- package/templates/landing-rich/pages/docs/privacy.md +50 -0
- package/templates/landing-rich/pages/docs/tos.md +49 -0
- package/templates/landing-rich/pages/faq.json +68 -0
- package/templates/landing-rich/pages/index.json +333 -0
- package/templates/landing-rich/pages/res/bg/molecule.svg +3 -0
- package/templates/landing-rich/pages/res/custom.css +270 -0
- package/templates/landing-rich/pages/res/icon-1024.png +0 -0
- package/templates/landing-rich/pages/res/index/cooking-0.webp +0 -0
- package/templates/landing-rich/pages/res/index/cooking-1.webp +0 -0
- package/templates/landing-rich/pages/res/index/cooking-2.webp +0 -0
- package/templates/landing-rich/pages/res/index/cooking-3.webp +0 -0
- package/templates/landing-rich/pages/res/index/icon-holopoke.png +0 -0
- package/templates/landing-rich/pages/res/index/obscene-diagram.webp +0 -0
- package/templates/landing-rich/pages/res/index/obscene-screenshot.webp +0 -0
- package/templates/landing-rich/pages/res/index/obscene-screenshots.png +0 -0
- package/templates/landing-rich/pages/res/index/obscene-studio-midi-controllers-3.webp +0 -0
- package/templates/landing-rich/pages/res/index/scr-avion-dentro.webp +0 -0
- package/templates/landing-rich/pages/res/index/scr-avion.webp +0 -0
- package/templates/landing-rich/pages/res/index/scr-football-0.webp +0 -0
- package/templates/landing-rich/pages/res/index/scr-football-0a.webp +0 -0
- package/templates/landing-rich/pages/res/index/scr-football-1.webp +0 -0
- package/templates/landing-rich/pages/res/index/scr-football-1b.webp +0 -0
- package/templates/landing-rich/pages/res/index/scr-football-jp.webp +0 -0
- package/templates/landing-rich/pages/res/index/scr-gaming-warning-mini.webp +0 -0
- package/templates/landing-rich/pages/res/index/scr-gaming-warning.webp +0 -0
- package/templates/landing-rich/pages/res/index/scr-music-clubbing.webp +0 -0
- package/templates/landing-rich/pages/res/index/scr-pollos-hermanos.webp +0 -0
- package/templates/landing-rich/pages/res/index/shot-livestream.webp +0 -0
- package/templates/landing-rich/pages/res/index/studio-screenshot.webp +0 -0
- package/templates/landing-rich/pages/res/trans-horizontal.png +0 -0
- package/templates/landing-rich/pages/res/videos/obscene-promo-720.mp4 +0 -0
- package/templates/landing-rich/pages/res/videos/obscene-promo-720.webp +0 -0
- package/templates/landing-rich/pages/res/videos/obscene-studio-showcase-1.mp4 +0 -0
- package/templates/landing-rich/pages/res/videos/obscene-studio-showcase-1.webp +0 -0
- package/tool/cli.js +1 -1
- package/src.website/package-lock.json +0 -2151
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Skin variables
|
|
2
|
+
|
|
3
|
+
Statify's shared `website.css` defines a variable-driven light/dark skin. Override these variables in the template-local stylesheet, normally `assets/res/custom.css`; do not edit the compiled application stylesheet.
|
|
4
|
+
|
|
5
|
+
Use `:root` for a value shared by both modes. Use `.skinroot.light` or `.skinroot.dark` when a token needs different contrast in each mode. Keep overrides limited to variables the design actually needs.
|
|
6
|
+
|
|
7
|
+
## Core surface and text tokens
|
|
8
|
+
|
|
9
|
+
| Variable | Role |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| `--window-background` | Main application background |
|
|
12
|
+
| `--window-background-0` | Lowest dark-skin surface step |
|
|
13
|
+
| `--window-background-1` | First raised dark-skin surface step |
|
|
14
|
+
| `--window-background-2` | Second raised dark-skin surface step |
|
|
15
|
+
| `--window-background-3` | Third raised dark-skin surface step |
|
|
16
|
+
| `--window-background-hi` | Highlighted or raised surface |
|
|
17
|
+
| `--window-background-lo` | Recessed light-skin surface |
|
|
18
|
+
| `--primary-color` | Primary chrome or strong surface color |
|
|
19
|
+
| `--black` | Stable black token |
|
|
20
|
+
| `--text` | Main text color |
|
|
21
|
+
| `--text-lo` | Secondary or subdued text |
|
|
22
|
+
| `--border-color` | Borders and separators |
|
|
23
|
+
| `--placeholder` | Placeholder or empty-state surface |
|
|
24
|
+
| `--inputs` | Input background |
|
|
25
|
+
| `--shadow-color` | Shadow color |
|
|
26
|
+
|
|
27
|
+
The numbered `--window-background-*` variables are present in the dark source skin, while `--window-background-lo` is present in the light source skin. A custom stylesheet may define the complete set in both modes when its components need them.
|
|
28
|
+
|
|
29
|
+
## Accent and foreground tokens
|
|
30
|
+
|
|
31
|
+
The templates define the main branding accents locally:
|
|
32
|
+
|
|
33
|
+
| Variable | Role |
|
|
34
|
+
| --- | --- |
|
|
35
|
+
| `--accent` | Primary brand/action color |
|
|
36
|
+
| `--accent-tx` | Translucent or softer accent used by decorative treatments |
|
|
37
|
+
|
|
38
|
+
The shared skin provides related foreground and state tokens:
|
|
39
|
+
|
|
40
|
+
| Variable | Role |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| `--accent-light` | Pale accent surface, especially in light mode |
|
|
43
|
+
| `--accent-alt` | Alternate accent |
|
|
44
|
+
| `--text-over-accent` | Text placed over the main accent |
|
|
45
|
+
| `--text-over-accent-hover` | Hover text over the main accent |
|
|
46
|
+
| `--text-over-primary` | Text placed over the primary surface |
|
|
47
|
+
| `--text-over-primary-hover` | Hover text over the primary surface |
|
|
48
|
+
|
|
49
|
+
Check text-over-color pairs together. A visually attractive accent is not usable if `--text-over-accent` lacks contrast.
|
|
50
|
+
|
|
51
|
+
## Status and overlay tokens
|
|
52
|
+
|
|
53
|
+
| Variable | Role |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| `--back-success` | Success-message background |
|
|
56
|
+
| `--back-warning` | Warning-message background |
|
|
57
|
+
| `--back-error` | Error-message background |
|
|
58
|
+
| `--bg-ok` | Strong success indicator |
|
|
59
|
+
| `--bg-warning` | Strong warning indicator |
|
|
60
|
+
| `--bg-error` | Strong error indicator |
|
|
61
|
+
| `--alpha-band` | Translucent band or overlay |
|
|
62
|
+
| `--alpha-gradient` | Overlay/gradient endpoint |
|
|
63
|
+
| `--green` | Generic green utility color |
|
|
64
|
+
| `--orange` | Generic orange utility color |
|
|
65
|
+
| `--red` | Generic red utility color |
|
|
66
|
+
|
|
67
|
+
`--bg-ok`, `--bg-warning`, and `--bg-error` are declared by the light skin; define dark equivalents only if components using them need different dark-mode values. Preserve recognizable success, warning, and error meaning.
|
|
68
|
+
|
|
69
|
+
## Section backgrounds
|
|
70
|
+
|
|
71
|
+
The `.back-zero`, `.back-one`, `.back-two`, and `.back-three` helpers consume matching variables:
|
|
72
|
+
|
|
73
|
+
| Variable | Default intent |
|
|
74
|
+
| --- | --- |
|
|
75
|
+
| `--back-zero` | Base section background |
|
|
76
|
+
| `--back-one` | First contrasting section background |
|
|
77
|
+
| `--back-two` | Second contrasting section background |
|
|
78
|
+
| `--back-three` | Third contrasting section background |
|
|
79
|
+
|
|
80
|
+
The default dark skin derives these from the window surfaces with 45-degree gradients. They may also be solid colors. Some templates define additional local levels such as `--back-four` and `--back-five`; these are template extensions, not base skin variables.
|
|
81
|
+
|
|
82
|
+
Example paired palette:
|
|
83
|
+
|
|
84
|
+
```css
|
|
85
|
+
.skinroot.light {
|
|
86
|
+
--back-zero: #ffffff;
|
|
87
|
+
--back-one: #f6f2ff;
|
|
88
|
+
--back-two: #e8dcff;
|
|
89
|
+
--back-three: #cab0ff;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.skinroot.dark {
|
|
93
|
+
--back-zero: #111111;
|
|
94
|
+
--back-one: #211934;
|
|
95
|
+
--back-two: #32234f;
|
|
96
|
+
--back-three: #49316f;
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Only define levels used by the page. Check the main and subdued text colors against every chosen level.
|
|
101
|
+
|
|
102
|
+
## Responsive font variables
|
|
103
|
+
|
|
104
|
+
The application provides root font sizes by breakpoint:
|
|
105
|
+
|
|
106
|
+
| Variable | Source default |
|
|
107
|
+
| --- | --- |
|
|
108
|
+
| `--font-xs` | `16px` |
|
|
109
|
+
| `--font-sm` | `16px` |
|
|
110
|
+
| `--font-md` | `18px` |
|
|
111
|
+
| `--font-lg` | `18px` |
|
|
112
|
+
| `--font-xl` | `18px` |
|
|
113
|
+
| `--font-fullhd` | `20px` |
|
|
114
|
+
|
|
115
|
+
Override these only when the site needs a different global type scale. Preserve readable mobile sizes and test long headings, navigation labels, tables, and code blocks after changing them.
|
|
116
|
+
|
|
117
|
+
## Control-size variables
|
|
118
|
+
|
|
119
|
+
| Variable | Source default | Role |
|
|
120
|
+
| --- | --- | --- |
|
|
121
|
+
| `--unitsize` | `3rem` | Standard control and navigation unit |
|
|
122
|
+
| `--unitsize-small` | `2.54rem` | Compact control unit |
|
|
123
|
+
|
|
124
|
+
These are structural variables rather than branding colors. Change them cautiously because many controls, icons, and navigation elements share them.
|
|
125
|
+
|
|
126
|
+
## Practical starter override
|
|
127
|
+
|
|
128
|
+
For most sites, begin with the accents and leave the structural defaults alone:
|
|
129
|
+
|
|
130
|
+
```css
|
|
131
|
+
:root {
|
|
132
|
+
--accent: #ff8800;
|
|
133
|
+
--accent-tx: rgba(255, 136, 0, 0.5);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.skinroot.light {
|
|
137
|
+
--accent: #b74d00;
|
|
138
|
+
--accent-light: #fff1e6;
|
|
139
|
+
--text-over-accent: #ffffff;
|
|
140
|
+
--text-over-accent-hover: #ffffff;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.skinroot.dark {
|
|
144
|
+
--accent: #ff9d3d;
|
|
145
|
+
--text-over-accent: #111111;
|
|
146
|
+
--text-over-accent-hover: #000000;
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Preview the generated site in both skins at narrow and wide widths. Verify ordinary text, muted text, links, buttons, inputs, borders, cards, status colors, and every section-background level used by the page.
|
|
@@ -1,7 +1,101 @@
|
|
|
1
|
+
|
|
2
|
+
nav a {
|
|
3
|
+
color: inherit !important;
|
|
4
|
+
text-decoration: none
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
nav a:hover {
|
|
8
|
+
text-decoration: underline
|
|
9
|
+
}
|
|
10
|
+
|
|
1
11
|
nav.titlebar {
|
|
2
|
-
|
|
12
|
+
z-index: 1000;
|
|
13
|
+
align-items: center;
|
|
14
|
+
white-space: nowrap;
|
|
15
|
+
font-variant: all-small-caps
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
nav.titlebar>* {
|
|
19
|
+
margin: 0 .5rem;
|
|
20
|
+
text-overflow: ellipsis;
|
|
21
|
+
overflow: hidden
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
nav.titlebar .square {
|
|
25
|
+
flex-shrink: 0;
|
|
26
|
+
display: inline-block;
|
|
27
|
+
margin: 0;
|
|
28
|
+
padding: 0 1rem;
|
|
29
|
+
border-left: solid 1px var(--border-color);
|
|
30
|
+
height: var(--unitsize);
|
|
31
|
+
line-height: var(--unitsize)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
nav.titlebar .inter,nav.titlebar .mute {
|
|
35
|
+
flex-shrink: 0
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
nav.titlebar>.inter:after {
|
|
39
|
+
content: "\f0da";
|
|
40
|
+
font-family: "Font Awesome 5 Free";
|
|
41
|
+
padding-left: 1rem
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
nav.titlebar>.sep {
|
|
45
|
+
padding: 0;
|
|
46
|
+
color: var(--text-lo)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.naviholder i {
|
|
50
|
+
line-height: inherit
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
nav.autohide {
|
|
54
|
+
transition: opacity .5s linear
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.scrolltop nav.autohide {
|
|
58
|
+
opacity: 0
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
nav .transbutton {
|
|
62
|
+
background: transparent;
|
|
63
|
+
border: 0;
|
|
64
|
+
color: var(--text);
|
|
65
|
+
cursor: pointer;
|
|
66
|
+
margin: 0;
|
|
67
|
+
border-left: solid 1px var(--border-color)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
nav.tab-menu.flexrow {
|
|
71
|
+
|
|
72
|
+
right: 0;
|
|
73
|
+
left: 0;
|
|
74
|
+
padding-left: 0.5rem;
|
|
75
|
+
box-shadow: 0 0 2px var(--shadow-color);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
nav input {
|
|
79
|
+
border: 0;
|
|
80
|
+
border-radius: 2rem;
|
|
81
|
+
padding: 0.25rem 0.25rem 0.25rem 0.5rem;
|
|
3
82
|
}
|
|
4
83
|
|
|
84
|
+
nav.tab-menu > .tab-menu-item.selected-tab-item {
|
|
85
|
+
color: var(--accent);
|
|
86
|
+
border-radius: 10rem;
|
|
87
|
+
display: inline-block;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
nav.subbar {
|
|
91
|
+
z-index: 100;
|
|
92
|
+
line-height: 2rem;
|
|
93
|
+
border-top: dashed 1px var(--border-color);
|
|
94
|
+
font-variant: all-small-caps;
|
|
95
|
+
height: 2rem;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
|
|
5
99
|
nav.tab-menu.flexrow {
|
|
6
100
|
|
|
7
101
|
right: 0;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
figure.qrcode {
|
|
2
|
+
width: 30%;
|
|
3
|
+
background-color: rgba(0, 0, 0, 0.4);
|
|
4
|
+
padding: .5rem;
|
|
5
|
+
border-radius: .5rem;
|
|
6
|
+
position: relative;
|
|
7
|
+
max-width: 200px;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
figure.qrcode:before {
|
|
11
|
+
content: "read in your mobile";
|
|
12
|
+
font-size: .5rem;
|
|
13
|
+
position: absolute;
|
|
14
|
+
color: white;
|
|
15
|
+
top: -0.8rem;
|
|
16
|
+
width: 100%;
|
|
17
|
+
left: 0;
|
|
18
|
+
text-align: center;
|
|
19
|
+
text-shadow: 1px 1px black;
|
|
20
|
+
}
|
|
@@ -24,6 +24,8 @@ import "../../css/css-core/root.css";
|
|
|
24
24
|
import "../../css/css-core/root.fullheight.css";
|
|
25
25
|
import "../../css/css-core/ui.dialog.round.css";
|
|
26
26
|
import "../../css/css-core/ui.notifications.css";
|
|
27
|
+
import "../../css/css-core/ui.navibar.css";
|
|
28
|
+
import "../../css/css-core/ui.qrcode.css";
|
|
27
29
|
|
|
28
30
|
import "../../css/css-featurelist/feature.css";
|
|
29
31
|
import "../../css/css-featurelist/tail.css";
|
|
@@ -86,16 +86,13 @@
|
|
|
86
86
|
"navibar": {
|
|
87
87
|
"home": "/",
|
|
88
88
|
"logo": "res/logos/logo.medallion.png",
|
|
89
|
-
"displayTitle":
|
|
89
|
+
"displayTitle": true,
|
|
90
90
|
"autoHide": true,
|
|
91
91
|
"links": {
|
|
92
92
|
"documents": {
|
|
93
93
|
"static": true,
|
|
94
|
-
"icon": "file",
|
|
95
|
-
"class": "
|
|
96
|
-
},
|
|
97
|
-
"SPACER": {
|
|
98
|
-
"separator": true
|
|
94
|
+
"icon": "file-alt",
|
|
95
|
+
"class": "inter"
|
|
99
96
|
}
|
|
100
97
|
}
|
|
101
98
|
},
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Cookies and Local Storage
|
|
2
|
+
|
|
3
|
+
**Example policy — replace before publishing. Last updated: September 17, 2026.**
|
|
4
|
+
|
|
5
|
+
This page explains how the Brightfield Labs website uses cookies and browser storage.
|
|
6
|
+
|
|
7
|
+
## What we store
|
|
8
|
+
|
|
9
|
+
The website does not use advertising or third-party tracking cookies. It stores only preferences requested by the visitor.
|
|
10
|
+
|
|
11
|
+
| Storage key | Purpose | Duration |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| `brightfield.preferences` | Remembers theme and policy-notice choices | Until changed or deleted |
|
|
14
|
+
|
|
15
|
+
This information remains in the visitor's browser and is not used to create an advertising profile.
|
|
16
|
+
|
|
17
|
+
## Managing stored data
|
|
18
|
+
|
|
19
|
+
Visitors can remove local preferences through their browser's privacy or site-data settings. Removing them resets the saved theme and may display the policy notice again.
|
|
20
|
+
|
|
21
|
+
If optional analytics or other cookies are introduced, this policy and the website's consent controls should be updated before those technologies are enabled.
|
|
22
|
+
|
|
23
|
+
## Contact
|
|
24
|
+
|
|
25
|
+
Questions about this example policy can be sent to [privacy@example.com](mailto:privacy@example.com).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Documentation
|
|
2
|
+
|
|
3
|
+
Welcome to the Brightfield Labs documentation center. Use this template for product guides, company policies, technical references, or any other structured content.
|
|
4
|
+
|
|
5
|
+
## Company Policies
|
|
6
|
+
|
|
7
|
+
* [Terms of Service](tos.md)
|
|
8
|
+
* [Privacy Policy](privacy.md)
|
|
9
|
+
* [Cookies and Local Storage](cookies.md)
|
|
10
|
+
|
|
11
|
+
## Getting Started
|
|
12
|
+
|
|
13
|
+
Add Markdown files anywhere inside the `pages` folder. Subfolders become sections, and ordinary assets such as stylesheets and downloads are copied into the generated site.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Privacy Policy
|
|
2
|
+
|
|
3
|
+
**Example policy — obtain appropriate legal review before publishing. Last updated: September 17, 2026.**
|
|
4
|
+
|
|
5
|
+
This policy describes how **Brightfield Labs** (**we**, **us**, or **our**) handles personal information when someone visits **example.com** or contacts us.
|
|
6
|
+
|
|
7
|
+
## Information we process
|
|
8
|
+
|
|
9
|
+
We aim to collect only the information needed to operate and protect the website, communicate with visitors, and provide requested services.
|
|
10
|
+
|
|
11
|
+
This may include:
|
|
12
|
+
|
|
13
|
+
* ordinary technical request data, such as IP address, browser information, requested pages, and timestamps;
|
|
14
|
+
* preferences stored locally in the visitor's browser;
|
|
15
|
+
* contact details and message content supplied when someone writes to us; and
|
|
16
|
+
* information required to provide a service requested by a customer.
|
|
17
|
+
|
|
18
|
+
We do not sell personal information or use website visitor information to create advertising profiles.
|
|
19
|
+
|
|
20
|
+
## Why we use information
|
|
21
|
+
|
|
22
|
+
We may use information to operate and secure the website, prevent abuse, respond to enquiries, deliver requested services, meet legal obligations, and protect our rights. The appropriate legal basis depends on the context and applicable law.
|
|
23
|
+
|
|
24
|
+
## Cookies and local storage
|
|
25
|
+
|
|
26
|
+
The website may store limited preferences in the visitor's browser. See our [Cookies and Local Storage Policy](cookies.md) for details.
|
|
27
|
+
|
|
28
|
+
## Service providers and transfers
|
|
29
|
+
|
|
30
|
+
Trusted providers may process information when they host, maintain, deliver, or secure the website. We expect providers to handle information under suitable contractual and legal safeguards, including safeguards for international transfers where required.
|
|
31
|
+
|
|
32
|
+
## Retention and security
|
|
33
|
+
|
|
34
|
+
We retain information only as long as reasonably necessary for its purpose, legal obligations, security, and dispute resolution. We use reasonable technical and organizational safeguards, although no internet service can guarantee absolute security.
|
|
35
|
+
|
|
36
|
+
## Individual rights
|
|
37
|
+
|
|
38
|
+
Depending on location, individuals may have rights to access, correct, delete, restrict, or receive a copy of their personal information, or to object to certain processing. Identity verification may be required before a request is completed.
|
|
39
|
+
|
|
40
|
+
## Changes
|
|
41
|
+
|
|
42
|
+
We may update this policy as the website, our practices, or applicable requirements change. The revision date above identifies the latest version.
|
|
43
|
+
|
|
44
|
+
## Contact
|
|
45
|
+
|
|
46
|
+
**Brightfield Labs**
|
|
47
|
+
100 Example Street
|
|
48
|
+
Sample City, EX 10000
|
|
49
|
+
|
|
50
|
+
Email: [privacy@example.com](mailto:privacy@example.com)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Website Terms
|
|
2
|
+
|
|
3
|
+
**Example terms — obtain appropriate legal review before publishing. Last updated: September 17, 2026.**
|
|
4
|
+
|
|
5
|
+
These terms govern access to the Brightfield Labs website at **example.com**. By using the website, visitors agree to these terms.
|
|
6
|
+
|
|
7
|
+
## Website purpose
|
|
8
|
+
|
|
9
|
+
The website provides general information about Brightfield Labs, its services, and example work. Descriptions, demonstrations, roadmaps, and other materials are informational and do not create a binding offer, warranty, or service commitment.
|
|
10
|
+
|
|
11
|
+
Separate agreements may govern paid products, professional services, software licenses, support, or customer projects. Those agreements take precedence for the services they cover.
|
|
12
|
+
|
|
13
|
+
## Intellectual property
|
|
14
|
+
|
|
15
|
+
Unless stated otherwise, Brightfield Labs owns the original website content and design or uses them with permission. Visitors may view the website for ordinary informational and business-evaluation purposes, but may not republish or commercially exploit substantial content without permission.
|
|
16
|
+
|
|
17
|
+
Third-party names, trademarks, and materials remain the property of their respective owners.
|
|
18
|
+
|
|
19
|
+
## Acceptable use
|
|
20
|
+
|
|
21
|
+
Visitors must not use the website unlawfully, interfere with its operation or security, attempt unauthorized access, introduce malicious code, impose unreasonable automated load, or misrepresent an affiliation with Brightfield Labs.
|
|
22
|
+
|
|
23
|
+
## External services
|
|
24
|
+
|
|
25
|
+
Links to third-party websites are provided for convenience. Brightfield Labs does not control their availability, security, content, or terms.
|
|
26
|
+
|
|
27
|
+
## Availability and disclaimer
|
|
28
|
+
|
|
29
|
+
We may change, suspend, or discontinue the website at any time. The website and its informational content are provided on an **"as available"** basis. To the extent permitted by law, we do not guarantee that the website will always be available, error-free, complete, or suitable for a particular purpose.
|
|
30
|
+
|
|
31
|
+
## Liability
|
|
32
|
+
|
|
33
|
+
To the extent permitted by law, Brightfield Labs is not liable for indirect or consequential losses arising solely from use of, inability to use, or reliance on this public website. Nothing here excludes rights or liabilities that cannot legally be excluded.
|
|
34
|
+
|
|
35
|
+
## Privacy
|
|
36
|
+
|
|
37
|
+
Our handling of personal information is described in the [Privacy Policy](privacy.md), and browser storage is described in the [Cookies and Local Storage Policy](cookies.md).
|
|
38
|
+
|
|
39
|
+
## Changes
|
|
40
|
+
|
|
41
|
+
We may update these terms from time to time. Updated terms apply from publication unless otherwise stated.
|
|
42
|
+
|
|
43
|
+
## Contact
|
|
44
|
+
|
|
45
|
+
**Brightfield Labs**
|
|
46
|
+
100 Example Street
|
|
47
|
+
Sample City, EX 10000
|
|
48
|
+
|
|
49
|
+
Email: [hello@example.com](mailto:hello@example.com)
|
|
@@ -250,17 +250,17 @@
|
|
|
250
250
|
},
|
|
251
251
|
{
|
|
252
252
|
"title": "Cookies",
|
|
253
|
-
"href": "
|
|
253
|
+
"href": "docs/cookies",
|
|
254
254
|
"target": "doc"
|
|
255
255
|
},
|
|
256
256
|
{
|
|
257
257
|
"title": "Privacy",
|
|
258
|
-
"href": "
|
|
258
|
+
"href": "docs/privacy",
|
|
259
259
|
"target": "doc"
|
|
260
260
|
},
|
|
261
261
|
{
|
|
262
262
|
"title": "Terms",
|
|
263
|
-
"href": "
|
|
263
|
+
"href": "docs/tos",
|
|
264
264
|
"target": "doc"
|
|
265
265
|
}
|
|
266
266
|
]
|
|
Binary file
|
|
Binary file
|