diff --git a/.github/workflows/validate-site.yml b/.github/workflows/validate-site.yml new file mode 100644 index 0000000..3a7e863 --- /dev/null +++ b/.github/workflows/validate-site.yml @@ -0,0 +1,23 @@ +name: Validate site + +on: + pull_request: + push: + branches: [main] + +permissions: + contents: read + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 + - name: Validate high-fidelity static site + env: + PYTHONPYCACHEPREFIX: ${{ runner.temp }}/pycache + run: | + python3 -m py_compile scripts/validate_site.py + python3 scripts/validate_site.py + git diff --check diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6ee8417 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +__pycache__/ +*.py[cod] +.DS_Store +Thumbs.db +*.tmp +*.bak +*.swp diff --git a/.well-known/security.txt b/.well-known/security.txt new file mode 100644 index 0000000..b0a1b94 --- /dev/null +++ b/.well-known/security.txt @@ -0,0 +1,5 @@ +Contact: mailto:contact@bridgenode7.com?subject=Bridge%20Node%207%20Security%20Report +Expires: 2027-08-04T23:59:59Z +Canonical: https://bridgenode7.com/.well-known/security.txt +Policy: https://github.com/Bridge-Node-7/bridge-node-7.github.io/security/policy +Preferred-Languages: en diff --git a/404.html b/404.html index 2c11915..b61e66c 100644 --- a/404.html +++ b/404.html @@ -1,26 +1,22 @@ - -Bridge Node 7 | Path Not Found -

Bridge Node 7

Path not found.

The requested page is unavailable.

+ + + + +

404 · Beyond the current map

Return to
the bridge.

This path sits beyond the current public map.

+ + diff --git a/README.md b/README.md index 0f1bc20..1bb6fd3 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,34 @@ -# Bridge Node 7 +# Bridge Node 7 Public Website Public website for [bridgenode7.com](https://bridgenode7.com/). -## Public Pages +## Architecture -- [Materials](https://bridgenode7.com/materials/) -- [Readiness](https://bridgenode7.com/readiness/) +This is a deliberately small static website made from complete, self-contained HTML pages. Each page carries its approved page-specific design so it can be downloaded, opened directly, and reviewed without a server, framework, package manager, or build process. -This repository contains public-safe website content only. +Public routes: + +- `/` +- `/materials/` +- `/readiness/` +- `/privacy/` + +## Direct preview + +Extract the repository and double-click `index.html`. The pages open directly without a command. Materials, Readiness, Privacy, and the root 404 page also support direct local preview. + +## Validation + +```bash +python3 scripts/validate_site.py +``` + +Validation is for maintainers and CI only. The website remains directly viewable without validation tooling. + +## Maintenance rule + +Preserve the visual, interaction, and editorial quality documented in `docs/VISUAL_CONTRACT.md`. Keep page-specific CSS distinct, adjacent CTA language purposeful, and approved interactions intact through direct page review and screenshot comparison. + +## Public boundary + +Keep this public repository limited to approved public information. Classified, controlled, export-controlled, proprietary, trade-secret, customer, supplier, patent-sensitive, government-sensitive, credential, and personally sensitive material belongs in approved private systems. diff --git a/RIGHTS.md b/RIGHTS.md new file mode 100644 index 0000000..3b2d283 --- /dev/null +++ b/RIGHTS.md @@ -0,0 +1,5 @@ +# Rights and Use + +Unless a file states otherwise, Bridge Node 7 retains all rights in the website copy, visual identity, diagrams, and original design elements in this repository. + +Public availability does not grant permission to reuse Bridge Node 7 trademarks, branding, or protected content. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..c45a926 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,9 @@ +# Security Policy + +## Reporting a website vulnerability + +Send a private report to **contact@bridgenode7.com** with the subject `Bridge Node 7 Security Report`. Share the minimum information needed to understand and reproduce the website issue. + +Live credentials, unrelated sensitive information, classified information, controlled information, proprietary third-party data, and unnecessary exploit detail remain in their appropriate secure channels. Share sensitive vulnerability details through this private reporting path rather than in a public GitHub issue. + +This policy covers the public static website in this repository. diff --git a/assets/images/social-preview.png b/assets/images/social-preview.png new file mode 100644 index 0000000..2467b83 Binary files /dev/null and b/assets/images/social-preview.png differ diff --git a/docs/VISUAL_CONTRACT.md b/docs/VISUAL_CONTRACT.md new file mode 100644 index 0000000..737324d --- /dev/null +++ b/docs/VISUAL_CONTRACT.md @@ -0,0 +1,43 @@ +# Bridge Node 7 Visual Contract + +The live Home, Materials, and Readiness pages are the controlling visual and interaction baseline. Architecture work must repackage these experiences without flattening or simplifying them. + +## Protected homepage qualities + +- Layered gradient, grid, and star-field atmosphere +- Sticky blurred navigation +- Three-line hero hierarchy +- Animated solid and dashed orbital rings +- Twenty-two radial path lines +- Seven positioned domain nodes and glowing center node +- Desktop orbit-to-mobile-card transformation +- Button hover elevation and visible keyboard focus +- Reduced-motion fallback + +## Protected content-page qualities + +- Large gradient hero language +- Calm, spacious section rhythm +- Map / Qualify / Integrate and Trace / Verify / Qualify card sequences +- Gold evidence notices +- Button hover elevation and visible keyboard focus +- Responsive single-column mobile transformation + +Structural tests support release review, while visual quality remains a separate and essential acceptance criterion. +## Editorial and interaction contract + +- Keep **Strategic Inquiry** as the global navigation action. +- Keep adjacent headings and CTA labels distinct and purposeful. +- Use context-specific page actions such as **Discuss Readiness** or **Discuss Materials**. +- Keep footer navigation concise: Materials, Readiness, Privacy, Security, then the organizational email. +- Link visible Security navigation to the human-readable website-security section on the Privacy page; retain `security.txt` for machine-readable disclosure. +- Visible email-address links should open a simple message. Prefilled inquiry templates belong on explicit CTA buttons. + + +## Public tone contract + +- Lead with possibility, progression, assurance, and readiness. +- Prefer affirmative framing over deficit framing wherever accuracy allows. +- Keep language minimal, calm, selective, and quietly premium. +- Preserve precise public boundaries through elegant channel guidance rather than alarm-heavy wording. +- Avoid unnecessary repetition, urgency, hype, and theatrical luxury language. diff --git a/index.html b/index.html index 0f9745f..a86df8e 100644 --- a/index.html +++ b/index.html @@ -10,7 +10,12 @@ - + + + + + + Bridge Node 7 | Materials-to-Mission @@ -103,7 +108,7 @@ .card,.pitch-box{border:1px solid var(--line);background:linear-gradient(180deg,var(--panel2),rgba(255,255,255,.04));border-radius:var(--radius);box-shadow:var(--shadow);text-align:center} .domain-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.card{padding:22px;min-height:174px}.card .num{color:var(--gold2);font-size:12px;font-weight:900;letter-spacing:.14em}.card h3{font-size:22px;margin:12px 0 8px}.card p{color:var(--muted);line-height:1.62;margin:0;font-size:15px;letter-spacing:.01em}.domain-grid .card:last-child{grid-column:2 / 3} .pitch-box{padding:34px;max-width:900px;margin:0 auto}.section-label{margin:0 0 12px;color:var(--gold2);font-size:11px;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.pitch-copy{font-size:clamp(18px,2vw,22px);line-height:1.58;color:var(--soft);max-width:760px;margin:16px auto 0}.pitch-copy p{margin:0 auto 10px}.copy-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:24px} -.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:14px 20px;min-height:48px;font-weight:850;border:1px solid rgba(255,255,255,.14);box-shadow:0 12px 40px rgba(0,0,0,.22);transition:.22s ease;background:rgba(255,255,255,.06);font:inherit;color:#fff}.btn:hover{transform:translateY(-2px);border-color:rgba(255,255,255,.32)}.btn.primary{background:linear-gradient(135deg,var(--gold2),var(--gold));color:#07111f;border:0}.btn.secondary{background:rgba(255,255,255,.06);color:#fff}.btn.action-cta{font-size:16px;letter-spacing:.02em;min-width:190px} +.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:14px 20px;min-height:48px;font-weight:850;border:1px solid rgba(255,255,255,.14);box-shadow:0 12px 40px rgba(0,0,0,.22);transition:transform .22s ease,border-color .22s ease,background-color .22s ease,color .22s ease;background:rgba(255,255,255,.06);font:inherit;color:#fff}.btn:hover{transform:translateY(-2px);border-color:rgba(255,255,255,.32)}.btn.primary{background:linear-gradient(135deg,var(--gold2),var(--gold));color:#07111f;border:0}.btn.secondary{background:rgba(255,255,255,.06);color:#fff}.btn.action-cta{font-size:16px;letter-spacing:.02em;min-width:190px} .inquiry-only{max-width:620px;padding:38px 30px}.inquiry-only h2{font-size:clamp(34px,4vw,48px)} .footer{border-top:1px solid rgba(255,255,255,.08);padding:36px 0 48px;color:var(--muted);text-align:center}.footer strong{color:#fff}.footer a{color:#fff;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:6px 4px}.footer p{line-height:1.7;margin:8px 0} @media (min-width:921px) and (max-height:850px){.hero{min-height:auto;padding:48px 0 44px}h1{font-size:clamp(42px,4.9vw,66px)}.lead{font-size:18px;max-width:740px}.orbital{min-height:430px;max-width:820px}.center-node{width:124px;height:124px}.center-node strong{font-size:48px}.center-word{font-size:14px}.node{width:116px;min-height:64px}.n1{top:24px}.n2{top:72px;right:74px}.n3{right:24px}.n4{bottom:52px;right:96px}.n5{bottom:52px;left:96px}.n6{left:24px}.n7{top:72px;left:74px}} @@ -115,10 +120,10 @@ -