openvibers/openvibe.sites Commits
Terms, Privacy and DMCA for every placeholder domain and for Games; vendored legal module
Changes
@@@ -13,6 +13,13 @@*/const fs = require('fs');const path = require('path');++// Vendored from OpenVibe.Network/packages/openvibe-shared (copy, never edit): the network's legal documents.++const legal = require('./vendor/openvibe-shared/legal');++// Which clauses apply to each domain once it opens (mirrors OpenVibe.Network/server/chrome/sites.js).++const LEGAL_PROFILE = { chat: 'ugc', codes: 'ugc', blog: 'info', wiki: 'ugc', news: 'info', reviews: 'ugc', tips: 'streaming', vip: 'account', trade: 'ugc', host: 'hosting', deals: 'info', coupons: 'info', stream: 'streaming' };++// Sites whose own server has no page routes: their legal pages are built here and served by nginx.++const LEGAL_ONLY = [{ domain: 'openvibe.games', name: 'OpenVibe.Games', id: 'games', profile: 'games' }];++const legalSite = (site) => ({ id: site.tld, service: 'network', host: site.domain, name: site.name, profile: LEGAL_PROFILE[site.tld] || 'info' });const ROOT = __dirname;const DIST = path.join(ROOT, 'dist');@@@ -244,7 +251,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\\.(?!well-known) { deny all; }@@@ -259,8 +266,10 @@ function build() {out[`${site.domain}/robots.txt`] = robots(site);out[`${site.domain}/sitemap.xml`] = sitemap(site);out[`${site.domain}/manifest.webmanifest`] = manifest(site);++ for (const kind of ['terms', 'privacy', 'dmca']) out[`${site.domain}/${kind}.html`] = legal.page(kind, legalSite(site));out[`../deploy/nginx/${site.domain}.conf`] = vhost(site);}++ for (const g of LEGAL_ONLY) for (const kind of ['terms', 'privacy', 'dmca']) out[`${g.domain}/${kind}.html`] = legal.page(kind, { id: g.id, service: g.id, host: g.domain, name: g.name, profile: g.profile });return out;}@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }@@@ -45,7 +45,7 @@ server {location / {add_header Cache-Control "public, max-age=600";-- try_files $uri $uri/ /index.html;++ try_files $uri $uri.html $uri/ /index.html;}location ~ /\.(?!well-known) { deny all; }nnew file mode 100644@@@ -0,0 +1,33 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenRe.Stream</title>++<meta name="description" content="How to report copyright infringement on OpenRe.Stream, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openre.stream/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenRe.Stream">++<meta property="og:title" content="DMCA & Copyright — OpenRe.Stream">++<meta property="og:description" content="How to report copyright infringement on OpenRe.Stream, and how to respond to a report.">++<meta property="og:url" content="https://openre.stream/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenRe.Stream">++<meta name="twitter:description" content="How to report copyright infringement on OpenRe.Stream, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenRe.Stream</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenRe.Stream</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenRe.Stream respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openre.stream of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>++<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenRe.Stream</title>++<meta name="description" content="What OpenRe.Stream collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openre.stream/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenRe.Stream">++<meta property="og:title" content="Privacy Policy — OpenRe.Stream">++<meta property="og:description" content="What OpenRe.Stream collects, why, and the choices you have.">++<meta property="og:url" content="https://openre.stream/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenRe.Stream">++<meta name="twitter:description" content="What OpenRe.Stream collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenRe.Stream</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenRe.Stream</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenRe.Stream collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenRe.Stream receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>Streams, clips, VODs and chat.</b> What you broadcast and write is stored so it can be shown, and is public unless you choose otherwise.</li><li><b>Payments.</b> Payment processors handle card details; we receive a record of the transaction, not your card number.</li><li><b>AI features.</b> Public streams and chat may be transcribed and summarised by AI services to create captions, highlights and overviews.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, payment processors, AI providers used for transcription and summaries, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenRe.Stream without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenRe.Stream is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,39 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenRe.Stream</title>++<meta name="description" content="The rules for using OpenRe.Stream, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openre.stream/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenRe.Stream">++<meta property="og:title" content="Terms of Service — OpenRe.Stream">++<meta property="og:description" content="The rules for using OpenRe.Stream, in plain language.">++<meta property="og:url" content="https://openre.stream/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenRe.Stream">++<meta name="twitter:description" content="The rules for using OpenRe.Stream, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenRe.Stream</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenRe.Stream</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenRe.Stream is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenRe.Stream if you were previously banned from the network.</p></section>++<section><h2 id="s3">Your account</h2><p>Most of OpenRe.Stream works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>++<section><h2 id="s4">What you post</h2><p>You keep ownership of what you stream, upload, clip or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>++<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li><li>Streams must be labelled honestly; adult or graphic content belongs behind the mature flag.</li></ul></section>++<section><h2 id="s6">Money</h2><p>Donations, tips and purchases of virtual currency are voluntary and final except where the law requires a refund. Virtual currencies have no cash value outside the payout rules shown on the site. Streamers are responsible for their own taxes.</p></section>++<section><h2 id="s7">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenRe.Stream at any time and delete your account from your account settings.</p></section>++<section><h2 id="s8">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openre.stream.</p></section>++<section><h2 id="s9">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenRe.Stream. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s10">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s11">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,32 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.Blog</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.Blog, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.blog/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Blog">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.Blog">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.Blog, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.blog/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Blog">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Blog, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Blog</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Blog</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.Blog respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512). OpenVibe.Blog publishes its own material and does not host uploads from the public.</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.blog of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.Blog</title>++<meta name="description" content="What OpenVibe.Blog collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.blog/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Blog">++<meta property="og:title" content="Privacy Policy — OpenVibe.Blog">++<meta property="og:description" content="What OpenVibe.Blog collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.blog/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.Blog">++<meta name="twitter:description" content="What OpenVibe.Blog collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Blog</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Blog</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Blog collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Blog without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.Blog is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,36 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.Blog</title>++<meta name="description" content="The rules for using OpenVibe.Blog, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.blog/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Blog">++<meta property="og:title" content="Terms of Service — OpenVibe.Blog">++<meta property="og:description" content="The rules for using OpenVibe.Blog, in plain language.">++<meta property="og:url" content="https://openvibe.blog/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.Blog">++<meta name="twitter:description" content="The rules for using OpenVibe.Blog, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Blog</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Blog</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Blog is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Blog if you were previously banned from the network.</p></section>++<section><h2 id="s3">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s4">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Blog at any time and delete your account from your account settings.</p></section>++<section><h2 id="s5">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.blog.</p></section>++<section><h2 id="s6">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Blog. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s7">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s8">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,33 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.Chat</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.Chat, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.chat/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Chat">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.Chat">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.Chat, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.chat/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Chat">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Chat, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Chat</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Chat</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.Chat respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.chat of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>++<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.Chat</title>++<meta name="description" content="What OpenVibe.Chat collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.chat/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Chat">++<meta property="og:title" content="Privacy Policy — OpenVibe.Chat">++<meta property="og:description" content="What OpenVibe.Chat collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.chat/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.Chat">++<meta name="twitter:description" content="What OpenVibe.Chat collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Chat</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Chat</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Chat collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Chat receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Chat without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.Chat is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,38 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.Chat</title>++<meta name="description" content="The rules for using OpenVibe.Chat, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.chat/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Chat">++<meta property="og:title" content="Terms of Service — OpenVibe.Chat">++<meta property="og:description" content="The rules for using OpenVibe.Chat, in plain language.">++<meta property="og:url" content="https://openvibe.chat/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.Chat">++<meta name="twitter:description" content="The rules for using OpenVibe.Chat, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Chat</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Chat</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Chat is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Chat if you were previously banned from the network.</p></section>++<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Chat works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>++<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>++<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Chat at any time and delete your account from your account settings.</p></section>++<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.chat.</p></section>++<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Chat. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,33 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.Codes</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.Codes, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.codes/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Codes">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.Codes">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.Codes, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.codes/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Codes">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Codes, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Codes</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Codes</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.Codes respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.codes of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>++<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.Codes</title>++<meta name="description" content="What OpenVibe.Codes collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.codes/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Codes">++<meta property="og:title" content="Privacy Policy — OpenVibe.Codes">++<meta property="og:description" content="What OpenVibe.Codes collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.codes/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.Codes">++<meta name="twitter:description" content="What OpenVibe.Codes collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Codes</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Codes</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Codes collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Codes receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Codes without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.Codes is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,38 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.Codes</title>++<meta name="description" content="The rules for using OpenVibe.Codes, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.codes/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Codes">++<meta property="og:title" content="Terms of Service — OpenVibe.Codes">++<meta property="og:description" content="The rules for using OpenVibe.Codes, in plain language.">++<meta property="og:url" content="https://openvibe.codes/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.Codes">++<meta name="twitter:description" content="The rules for using OpenVibe.Codes, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Codes</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Codes</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Codes is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Codes if you were previously banned from the network.</p></section>++<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Codes works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>++<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>++<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Codes at any time and delete your account from your account settings.</p></section>++<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.codes.</p></section>++<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Codes. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,32 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.Coupons</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.Coupons, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.coupons/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Coupons">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.Coupons">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.Coupons, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.coupons/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Coupons">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Coupons, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Coupons</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Coupons</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.Coupons respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512). OpenVibe.Coupons publishes its own material and does not host uploads from the public.</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.coupons of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.Coupons</title>++<meta name="description" content="What OpenVibe.Coupons collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.coupons/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Coupons">++<meta property="og:title" content="Privacy Policy — OpenVibe.Coupons">++<meta property="og:description" content="What OpenVibe.Coupons collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.coupons/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.Coupons">++<meta name="twitter:description" content="What OpenVibe.Coupons collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Coupons</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Coupons</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Coupons collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Coupons without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.Coupons is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,36 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.Coupons</title>++<meta name="description" content="The rules for using OpenVibe.Coupons, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.coupons/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Coupons">++<meta property="og:title" content="Terms of Service — OpenVibe.Coupons">++<meta property="og:description" content="The rules for using OpenVibe.Coupons, in plain language.">++<meta property="og:url" content="https://openvibe.coupons/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.Coupons">++<meta name="twitter:description" content="The rules for using OpenVibe.Coupons, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Coupons</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Coupons</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Coupons is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Coupons if you were previously banned from the network.</p></section>++<section><h2 id="s3">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s4">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Coupons at any time and delete your account from your account settings.</p></section>++<section><h2 id="s5">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.coupons.</p></section>++<section><h2 id="s6">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Coupons. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s7">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s8">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,32 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.Deals</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.Deals, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.deals/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Deals">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.Deals">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.Deals, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.deals/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Deals">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Deals, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Deals</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Deals</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.Deals respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512). OpenVibe.Deals publishes its own material and does not host uploads from the public.</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.deals of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.Deals</title>++<meta name="description" content="What OpenVibe.Deals collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.deals/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Deals">++<meta property="og:title" content="Privacy Policy — OpenVibe.Deals">++<meta property="og:description" content="What OpenVibe.Deals collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.deals/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.Deals">++<meta name="twitter:description" content="What OpenVibe.Deals collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Deals</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Deals</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Deals collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Deals without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.Deals is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,36 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.Deals</title>++<meta name="description" content="The rules for using OpenVibe.Deals, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.deals/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Deals">++<meta property="og:title" content="Terms of Service — OpenVibe.Deals">++<meta property="og:description" content="The rules for using OpenVibe.Deals, in plain language.">++<meta property="og:url" content="https://openvibe.deals/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.Deals">++<meta name="twitter:description" content="The rules for using OpenVibe.Deals, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Deals</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Deals</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Deals is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Deals if you were previously banned from the network.</p></section>++<section><h2 id="s3">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s4">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Deals at any time and delete your account from your account settings.</p></section>++<section><h2 id="s5">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.deals.</p></section>++<section><h2 id="s6">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Deals. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s7">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s8">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,33 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.Games</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.Games, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.games/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Games">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.Games">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.Games, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.games/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Games">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Games, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Games</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Games</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.Games respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.games of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>++<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"games",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"games",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.Games</title>++<meta name="description" content="What OpenVibe.Games collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.games/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Games">++<meta property="og:title" content="Privacy Policy — OpenVibe.Games">++<meta property="og:description" content="What OpenVibe.Games collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.games/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.Games">++<meta name="twitter:description" content="What OpenVibe.Games collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Games</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Games</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Games collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Games receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>Game state.</b> Your characters, items, progress and in-game chat.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Games without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.Games is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"games",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"games",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,39 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.Games</title>++<meta name="description" content="The rules for using OpenVibe.Games, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.games/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Games">++<meta property="og:title" content="Terms of Service — OpenVibe.Games">++<meta property="og:description" content="The rules for using OpenVibe.Games, in plain language.">++<meta property="og:url" content="https://openvibe.games/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.Games">++<meta name="twitter:description" content="The rules for using OpenVibe.Games, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Games</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Games</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Games is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Games if you were previously banned from the network.</p></section>++<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Games works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>++<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>++<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s6">Game items and progress</h2><p>Items, currency and progress in games have no cash value and may be changed, reset or removed as the games evolve. Cheating, automation that gives an unfair advantage and exploiting bugs can lead to a reset or a ban.</p></section>++<section><h2 id="s7">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Games at any time and delete your account from your account settings.</p></section>++<section><h2 id="s8">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.games.</p></section>++<section><h2 id="s9">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Games. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s10">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s11">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"games",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"games",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,33 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.Host</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.Host, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.host/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Host">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.Host">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.Host, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.host/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Host">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Host, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Host</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Host</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.Host respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.host of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>++<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.Host</title>++<meta name="description" content="What OpenVibe.Host collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.host/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Host">++<meta property="og:title" content="Privacy Policy — OpenVibe.Host">++<meta property="og:description" content="What OpenVibe.Host collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.host/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.Host">++<meta name="twitter:description" content="What OpenVibe.Host collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Host</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Host</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Host collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Host receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>Media you upload or record.</b> Videos, clips, images and files, with their metadata, stored so the sites that use them can show them.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Host without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.Host is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,38 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.Host</title>++<meta name="description" content="The rules for using OpenVibe.Host, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.host/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Host">++<meta property="og:title" content="Terms of Service — OpenVibe.Host">++<meta property="og:description" content="The rules for using OpenVibe.Host, in plain language.">++<meta property="og:url" content="https://openvibe.host/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.Host">++<meta name="twitter:description" content="The rules for using OpenVibe.Host, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Host</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Host</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Host is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Host if you were previously banned from the network.</p></section>++<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Host works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>++<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>++<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Host at any time and delete your account from your account settings.</p></section>++<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.host.</p></section>++<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Host. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,32 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.News</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.News, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.news/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.News">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.News">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.News, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.news/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.News">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.News, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.News</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.News</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.News respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512). OpenVibe.News publishes its own material and does not host uploads from the public.</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.news of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.News</title>++<meta name="description" content="What OpenVibe.News collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.news/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.News">++<meta property="og:title" content="Privacy Policy — OpenVibe.News">++<meta property="og:description" content="What OpenVibe.News collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.news/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.News">++<meta name="twitter:description" content="What OpenVibe.News collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.News</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.News</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.News collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.News without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.News is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,36 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.News</title>++<meta name="description" content="The rules for using OpenVibe.News, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.news/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.News">++<meta property="og:title" content="Terms of Service — OpenVibe.News">++<meta property="og:description" content="The rules for using OpenVibe.News, in plain language.">++<meta property="og:url" content="https://openvibe.news/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.News">++<meta name="twitter:description" content="The rules for using OpenVibe.News, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.News</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.News</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.News is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.News if you were previously banned from the network.</p></section>++<section><h2 id="s3">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s4">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.News at any time and delete your account from your account settings.</p></section>++<section><h2 id="s5">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.news.</p></section>++<section><h2 id="s6">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.News. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s7">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s8">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,33 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.Reviews</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.Reviews, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.reviews/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Reviews">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.Reviews">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.Reviews, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.reviews/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Reviews">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Reviews, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Reviews</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Reviews</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.Reviews respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.reviews of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>++<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.Reviews</title>++<meta name="description" content="What OpenVibe.Reviews collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.reviews/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Reviews">++<meta property="og:title" content="Privacy Policy — OpenVibe.Reviews">++<meta property="og:description" content="What OpenVibe.Reviews collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.reviews/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.Reviews">++<meta name="twitter:description" content="What OpenVibe.Reviews collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Reviews</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Reviews</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Reviews collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Reviews receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Reviews without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.Reviews is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,38 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.Reviews</title>++<meta name="description" content="The rules for using OpenVibe.Reviews, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.reviews/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Reviews">++<meta property="og:title" content="Terms of Service — OpenVibe.Reviews">++<meta property="og:description" content="The rules for using OpenVibe.Reviews, in plain language.">++<meta property="og:url" content="https://openvibe.reviews/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.Reviews">++<meta name="twitter:description" content="The rules for using OpenVibe.Reviews, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Reviews</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Reviews</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Reviews is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Reviews if you were previously banned from the network.</p></section>++<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Reviews works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>++<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>++<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Reviews at any time and delete your account from your account settings.</p></section>++<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.reviews.</p></section>++<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Reviews. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,33 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.Tips</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.Tips, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.tips/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Tips">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.Tips">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.Tips, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.tips/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Tips">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Tips, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Tips</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Tips</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.Tips respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.tips of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>++<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.Tips</title>++<meta name="description" content="What OpenVibe.Tips collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.tips/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Tips">++<meta property="og:title" content="Privacy Policy — OpenVibe.Tips">++<meta property="og:description" content="What OpenVibe.Tips collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.tips/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.Tips">++<meta name="twitter:description" content="What OpenVibe.Tips collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Tips</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Tips</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Tips collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Tips receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>Streams, clips, VODs and chat.</b> What you broadcast and write is stored so it can be shown, and is public unless you choose otherwise.</li><li><b>Payments.</b> Payment processors handle card details; we receive a record of the transaction, not your card number.</li><li><b>AI features.</b> Public streams and chat may be transcribed and summarised by AI services to create captions, highlights and overviews.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, payment processors, AI providers used for transcription and summaries, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Tips without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.Tips is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,39 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.Tips</title>++<meta name="description" content="The rules for using OpenVibe.Tips, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.tips/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Tips">++<meta property="og:title" content="Terms of Service — OpenVibe.Tips">++<meta property="og:description" content="The rules for using OpenVibe.Tips, in plain language.">++<meta property="og:url" content="https://openvibe.tips/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.Tips">++<meta name="twitter:description" content="The rules for using OpenVibe.Tips, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Tips</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Tips</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Tips is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Tips if you were previously banned from the network.</p></section>++<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Tips works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>++<section><h2 id="s4">What you post</h2><p>You keep ownership of what you stream, upload, clip or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>++<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li><li>Streams must be labelled honestly; adult or graphic content belongs behind the mature flag.</li></ul></section>++<section><h2 id="s6">Money</h2><p>Donations, tips and purchases of virtual currency are voluntary and final except where the law requires a refund. Virtual currencies have no cash value outside the payout rules shown on the site. Streamers are responsible for their own taxes.</p></section>++<section><h2 id="s7">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Tips at any time and delete your account from your account settings.</p></section>++<section><h2 id="s8">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.tips.</p></section>++<section><h2 id="s9">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Tips. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s10">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s11">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,33 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.Trade</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.Trade, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.trade/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Trade">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.Trade">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.Trade, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.trade/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Trade">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Trade, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Trade</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Trade</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.Trade respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.trade of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>++<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.Trade</title>++<meta name="description" content="What OpenVibe.Trade collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.trade/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Trade">++<meta property="og:title" content="Privacy Policy — OpenVibe.Trade">++<meta property="og:description" content="What OpenVibe.Trade collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.trade/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.Trade">++<meta name="twitter:description" content="What OpenVibe.Trade collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Trade</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Trade</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Trade collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Trade receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Trade without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.Trade is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,38 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.Trade</title>++<meta name="description" content="The rules for using OpenVibe.Trade, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.trade/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Trade">++<meta property="og:title" content="Terms of Service — OpenVibe.Trade">++<meta property="og:description" content="The rules for using OpenVibe.Trade, in plain language.">++<meta property="og:url" content="https://openvibe.trade/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.Trade">++<meta name="twitter:description" content="The rules for using OpenVibe.Trade, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Trade</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Trade</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Trade is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Trade if you were previously banned from the network.</p></section>++<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Trade works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>++<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>++<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Trade at any time and delete your account from your account settings.</p></section>++<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.trade.</p></section>++<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Trade. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,33 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.VIP</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.VIP, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.vip/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.VIP">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.VIP">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.VIP, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.vip/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.VIP">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.VIP, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.VIP</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.VIP</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.VIP respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.vip of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>++<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.VIP</title>++<meta name="description" content="What OpenVibe.VIP collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.vip/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.VIP">++<meta property="og:title" content="Privacy Policy — OpenVibe.VIP">++<meta property="og:description" content="What OpenVibe.VIP collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.vip/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.VIP">++<meta name="twitter:description" content="What OpenVibe.VIP collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.VIP</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.VIP</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.VIP collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.VIP receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>Your account.</b> Username, email address, a salted hash of your password, profile, theme and notification preferences, linked services, sign-in history and, if you keep it switched on, your cross-site history.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.VIP without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.VIP is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.VIP</title>++<meta name="description" content="The rules for using OpenVibe.VIP, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.vip/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.VIP">++<meta property="og:title" content="Terms of Service — OpenVibe.VIP">++<meta property="og:description" content="The rules for using OpenVibe.VIP, in plain language.">++<meta property="og:url" content="https://openvibe.vip/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.VIP">++<meta name="twitter:description" content="The rules for using OpenVibe.VIP, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.VIP</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.VIP</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.VIP is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.VIP if you were previously banned from the network.</p></section>++<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.VIP works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>++<section><h2 id="s4">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s5">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.VIP at any time and delete your account from your account settings.</p></section>++<section><h2 id="s6">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.vip.</p></section>++<section><h2 id="s7">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.VIP. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s8">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,33 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>DMCA & Copyright — OpenVibe.Wiki</title>++<meta name="description" content="How to report copyright infringement on OpenVibe.Wiki, and how to respond to a report.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.wiki/dmca">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Wiki">++<meta property="og:title" content="DMCA & Copyright — OpenVibe.Wiki">++<meta property="og:description" content="How to report copyright infringement on OpenVibe.Wiki, and how to respond to a report.">++<meta property="og:url" content="https://openvibe.wiki/dmca">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Wiki">++<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Wiki, and how to respond to a report.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Wiki</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Wiki</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">Our position</h2><p>OpenVibe.Wiki respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>++<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.wiki of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>++<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>++<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>++<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,37 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Privacy Policy — OpenVibe.Wiki</title>++<meta name="description" content="What OpenVibe.Wiki collects, why, and the choices you have.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.wiki/privacy">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Wiki">++<meta property="og:title" content="Privacy Policy — OpenVibe.Wiki">++<meta property="og:description" content="What OpenVibe.Wiki collects, why, and the choices you have.">++<meta property="og:url" content="https://openvibe.wiki/privacy">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Privacy Policy — OpenVibe.Wiki">++<meta name="twitter:description" content="What OpenVibe.Wiki collects, why, and the choices you have.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Wiki</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Wiki</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Wiki collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>++<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Wiki receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li></ul></section>++<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>++<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>++<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>++<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>++<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Wiki without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>++<section><h2 id="s8">Children</h2><p>OpenVibe.Wiki is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>++<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,38 @@++<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++<title>Terms of Service — OpenVibe.Wiki</title>++<meta name="description" content="The rules for using OpenVibe.Wiki, in plain language.">++<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">++<link rel="canonical" href="https://openvibe.wiki/terms">++<meta property="og:type" content="article">++<meta property="og:site_name" content="OpenVibe.Wiki">++<meta property="og:title" content="Terms of Service — OpenVibe.Wiki">++<meta property="og:description" content="The rules for using OpenVibe.Wiki, in plain language.">++<meta property="og:url" content="https://openvibe.wiki/terms">++<meta property="og:locale" content="en_US">++<meta name="twitter:card" content="summary">++<meta name="twitter:title" content="Terms of Service — OpenVibe.Wiki">++<meta name="twitter:description" content="The rules for using OpenVibe.Wiki, in plain language.">++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Wiki</a></p></noscript>++<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Wiki</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>++<section><h2 id="s1">The short version</h2><p>OpenVibe.Wiki is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>++<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Wiki if you were previously banned from the network.</p></section>++<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Wiki works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>++<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>++<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>++<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Wiki at any time and delete your account from your account settings.</p></section>++<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.wiki.</p></section>++<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Wiki. Nothing here limits liability that cannot be limited by law.</p></section>++<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>++<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>++<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>\\ No newline at end of filennew file mode 100644@@@ -0,0 +1,145 @@++'use strict';++// ═══════════════════════════════════════════════════════════════++// openvibe-shared/legal — Terms, Privacy and DMCA for every OpenVibe site.++//++// Each domain answers for itself: /terms, /privacy and /dmca live on the site's own apex and say++// what THAT site does. One template per document, with clauses switched by the site's profile:++// streaming live video, chat, payments tools files processed, then deleted++// ugc posts, pastes, comments games accounts and game state++// hosting stored user media account the identity provider++// info read-only / placeholder site++//++// const legal = require('openvibe-shared/legal');++// app.get(legal.PATHS, legal.handler({ host: 'openvibe.tools', name: 'OpenVibe.Tools', profile: 'tools' }));++// legal.page('privacy', site) → complete HTML document (static generators use this)++//++// Plain language on purpose. These are templates maintained by the project, not legal advice;++// the owner reviews them before relying on them. Facts stated here (what is stored, for how++// long) must match the code — change both together.++// ═══════════════════════════════════════════════════════════════++const UPDATED = '2026-09-18';++const UPDATED_TEXT = 'September 18, 2026';++const CONTACT = '[email protected]';++const PATHS = ['/terms', '/privacy', '/dmca'];++const TITLES = { terms: 'Terms of Service', privacy: 'Privacy Policy', dmca: 'DMCA & Copyright' };++++const esc = (s) => String(s == null ? '' : s).replace(/[&<>"']/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c]));++const has = (site, ...profiles) => profiles.includes(site.profile);++const userContent = (site) => has(site, 'streaming', 'ugc', 'hosting', 'games');++++function terms(site) {++ const n = esc(site.name);++ const S = [];++ S.push(['The short version', `<p>${n} is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p>`]);++ S.push(['Who can use it', `<p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use ${n} if you were previously banned from the network.</p>`]);++ if (!has(site, 'info')) S.push(['Your account', `<p>Most of ${n} works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p>`]);++ if (has(site, 'tools')) S.push(['Files and links you give the tools', `<p>The tools process what you upload or paste and hand you the result. Uploads and results are temporary: they are deleted automatically, normally within one hour for visitors and within 24 hours for signed-in users. Do not rely on ${n} to store anything.</p><p>Only process material you have the right to use. Downloaders are for your own uploads and for content you are allowed to keep; respecting the terms of the site the content comes from is your responsibility. Lookup tools (DNS, WHOIS, ping, port checks) may only be pointed at systems you are allowed to test.</p>`]);++ if (userContent(site)) S.push(['What you post', `<p>You keep ownership of what you ${has(site, 'streaming') ? 'stream, upload, clip or write' : 'upload or write'}. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p>`]);++ S.push(['Rules', `<p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li>${has(site, 'streaming') ? '<li>Streams must be labelled honestly; adult or graphic content belongs behind the mature flag.</li>' : ''}</ul>`]);++ if (has(site, 'streaming')) S.push(['Money', `<p>Donations, tips and purchases of virtual currency are voluntary and final except where the law requires a refund. Virtual currencies have no cash value outside the payout rules shown on the site. Streamers are responsible for their own taxes.</p>`]);++ if (has(site, 'games')) S.push(['Game items and progress', `<p>Items, currency and progress in games have no cash value and may be changed, reset or removed as the games evolve. Cheating, automation that gives an unfair advantage and exploiting bugs can lead to a reset or a ban.</p>`]);++ S.push(['Moderation and ending accounts', `<p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using ${n} at any time and delete your account from your account settings.</p>`]);++ S.push(['Open source', `<p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at ${esc(site.host)}.</p>`]);++ S.push(['No warranty, limited liability', `<p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of ${n}. Nothing here limits liability that cannot be limited by law.</p>`]);++ S.push(['Governing law', `<p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p>`]);++ S.push(['Changes and contact', `<p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:${CONTACT}">${CONTACT}</a>.</p>`]);++ return S;++}++++function privacy(site) {++ const n = esc(site.name);++ const S = [];++ S.push(['The short version', `<p>${n} collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p>`]);++ const collect = [++ '<li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li>',++ '<li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li>',++ ];++ if (!has(site, 'info')) collect.push(`<li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. ${n} receives your user id, username, avatar and role so it can show you as signed in.</li>`);++ if (has(site, 'tools')) collect.push('<li><b>What you give a tool.</b> Files, text, links, domain names and IP addresses you submit are processed to produce your result. Uploaded files and generated results are deleted automatically, normally within one hour for visitors and 24 hours for signed-in users. Many text and developer tools run entirely in your browser and send nothing to us.</li>');++ if (has(site, 'streaming')) collect.push('<li><b>Streams, clips, VODs and chat.</b> What you broadcast and write is stored so it can be shown, and is public unless you choose otherwise.</li><li><b>Payments.</b> Payment processors handle card details; we receive a record of the transaction, not your card number.</li><li><b>AI features.</b> Public streams and chat may be transcribed and summarised by AI services to create captions, highlights and overviews.</li>');++ if (has(site, 'ugc')) collect.push('<li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li>');++ if (has(site, 'hosting')) collect.push('<li><b>Media you upload or record.</b> Videos, clips, images and files, with their metadata, stored so the sites that use them can show them.</li>');++ if (has(site, 'games')) collect.push('<li><b>Game state.</b> Your characters, items, progress and in-game chat.</li>');++ if (has(site, 'account')) collect.push('<li><b>Your account.</b> Username, email address, a salted hash of your password, profile, theme and notification preferences, linked services, sign-in history and, if you keep it switched on, your cross-site history.</li>');++ S.push(['What we collect', `<ul>${collect.join('')}</ul>`]);++ S.push(['Cookies and local storage', `<p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p>`]);++ S.push(['Who we share with', `<p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media${has(site, 'streaming') ? ', payment processors, AI providers used for transcription and summaries' : ''}, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p>`]);++ S.push(['Across OpenVibe sites', `<p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p>`]);++ S.push(['How long we keep things', `<p>Request logs and raw usage events are kept for a limited period and then reduced to totals. ${has(site, 'tools') ? 'Tool uploads and results are deleted within hours. ' : ''}${userContent(site) ? 'Content you post stays until you delete it or your account. ' : ''}Account data stays until you delete your account; backups expire on their own shortly afterwards.</p>`]);++ S.push(['Your choices and rights', `<p>You can use most of ${n} without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p>`]);++ S.push(['Children', `<p>${n} is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p>`]);++ S.push(['Changes and contact', `<p>We will post changes here and update the date above. Questions and requests: <a href="mailto:${CONTACT}">${CONTACT}</a>.</p>`]);++ return S;++}++++function dmca(site) {++ const n = esc(site.name);++ const S = [];++ S.push(['Our position', `<p>${n} respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).${has(site, 'tools') ? ` The tools here process material at a user's request and do not keep a library of it: results are deleted automatically within hours.` : ''}${has(site, 'info') ? ` ${n} publishes its own material and does not host uploads from the public.` : ''}</p>`]);++ S.push(['Send a takedown notice', `<p>Email <a href="mailto:${CONTACT}">${CONTACT}</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on ${esc(site.host)} of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol>`]);++ S.push(['What happens next', `<p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p>`]);++ if (!has(site, 'info')) S.push(['Counter-notice', `<p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p>`]);++ S.push(['Repeat infringers and false claims', `<p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p>`]);++ return S;++}++++const BUILDERS = { terms, privacy, dmca };++++/** { title, description, sections: [[heading, html]], updated } for one document of one site. */++function build(kind, site) {++ if (!BUILDERS[kind]) throw new Error('Unknown legal document: ' + kind);++ const s = Object.assign({ profile: 'info' }, site);++ return { kind, title: `${TITLES[kind]} — ${s.name}`, heading: TITLES[kind],++ description: { terms: `The rules for using ${s.name}, in plain language.`, privacy: `What ${s.name} collects, why, and the choices you have.`, dmca: `How to report copyright infringement on ${s.name}, and how to respond to a report.` }[kind],++ updated: UPDATED, sections: BUILDERS[kind](s) };++}++++/** Article markup only, for sites that wrap it in their own layout. */++function article(kind, site) {++ const d = build(kind, site);++ const others = Object.keys(TITLES).filter(k => k !== kind);++ return `<article class="ov-legal"><p class="ov-legal-kicker">${esc(site.name)}</p><h1>${esc(d.heading)}</h1><p class="ov-legal-date">Last updated <time datetime="${d.updated}">${UPDATED_TEXT}</time></p>++${d.sections.map(([h, html], i) => `<section><h2 id="s${i + 1}">${esc(h)}</h2>${html}</section>`).join('\n')}++<nav class="ov-legal-more" aria-label="Other policies">${others.map(k => `<a href="/${k}">${esc(TITLES[k])}</a>`).join('')}<a href="https://openvibe.network/">About OpenVibe</a></nav></article>`;++}++++const CSS = `*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}++.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}++.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}++.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}++.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}++.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}`;++++/** A complete page: shared theme, navbar and footer, readable without JavaScript. */++function page(kind, site) {++ const d = build(kind, site);++ const url = `https://${site.host}/${kind}`;++ let head;++ try { head = require('./seo').headTags({ title: d.title, description: d.description, canonical: url, siteName: site.name, type: 'article' }); }++ catch { head = `<title>${esc(d.title)}</title><meta name="description" content="${esc(d.description)}"><link rel="canonical" href="${url}">`; }++ return `<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">++${head}++<script src="https://openvibe.network/shared/theme-loader.js"></script><style>${CSS}</style></head><body>++<noscript><p style="padding:12px 20px;margin:0"><a href="/">${esc(site.name)}</a></p></noscript>++<main>${article(kind, site)}</main><div id="ov-footer"></div>++<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>++<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}++try{OpenVibeNavbar.init({service:${JSON.stringify(site.service || site.id || 'network')},apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}++try{OpenVibeFooter.init({service:${JSON.stringify(site.service || site.id || 'network')},variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>++</body></html>`;++}++++/** Express handler for legal.PATHS. */++function handler(site) {++ const cache = new Map();++ return function ovLegal(req, res, next) {++ const kind = String(req.path || '').replace(/^\/+|\/+$/g, '');++ if (!BUILDERS[kind]) return next();++ if (!cache.has(kind)) cache.set(kind, page(kind, site));++ res.set('Content-Type', 'text/html; charset=utf-8');++ res.set('Cache-Control', 'public, max-age=3600, stale-while-revalidate=86400');++ res.send(cache.get(kind));++ };++}++++module.exports = { PATHS, TITLES, UPDATED, CONTACT, build, article, page, handler, CSS };nnew file mode 100644@@@ -0,0 +1,174 @@++'use strict';++/**++ * openvibe-shared/seo.js — one SEO toolkit for every OpenVibe site (Node, no dependencies).++ *++ * const seo = require('openvibe-shared/seo');++ * seo.headTags({ title, description, canonical, image, jsonLd: [seo.jsonLd.website({...})] })++ * seo.sitemapXml([{ loc, lastmod }]) seo.robotsTxt({ sitemaps }) seo.llmsTxt({...})++ *++ * Rules it encodes so pages do not have to remember them: one canonical per page, titles cut at++ * 60 characters on a word, descriptions at 160, og/twitter mirrored from the same values, JSON-LD++ * serialised safely (no `</script>` break-outs), sitemaps with absolute URLs only, robots.txt that++ * welcomes search and AI crawlers by default and always names the sitemap, and an /llms.txt so++ * language-model crawlers get a clean map of the site.++ */++++const esc = (s) => String(s == null ? '' : s).replace(/[&<>"']/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c]));++const xml = (s) => String(s == null ? '' : s).replace(/[&<>"']/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c]));++++/** Cut on a word boundary with an ellipsis; never mid-word, never longer than `max`. */++function clip(text, max) {++ const t = String(text == null ? '' : text).replace(/\s+/g, ' ').trim();++ if (t.length <= max) return t;++ const cut = t.slice(0, max - 1);++ const at = cut.lastIndexOf(' ');++ return (at > max * 0.6 ? cut.slice(0, at) : cut).replace(/[\s,;:.\-–—]+$/, '') + '…';++}++++function absolute(url, base) {++ if (!url) return '';++ try { return new URL(url, base || undefined).toString(); } catch { return String(url); }++}++++/** JSON-LD script tag; `<` is escaped so content can never close the script element. */++function jsonLdTag(obj) {++ return `<script type="application/ld+json">${JSON.stringify(obj).replace(/</g, '\\u003c')}</script>`;++}++++/**++ * The whole <head> SEO block as an HTML string.++ * @param {object} o title, description, canonical (absolute), image, imageAlt, type ('website'),++ * siteName, robots ('index, follow'), locale ('en_US'), keywords (array|string), author,++ * themeColor, twitterSite, alternates [{ hreflang, href }], prev, next, jsonLd (array|object),++ * titleSuffix (appended when it fits), noTitle (skip <title> when the page has its own)++ */++function headTags(o = {}) {++ let title = String(o.title || o.siteName || 'OpenVibe');++ if (o.titleSuffix && (title + o.titleSuffix).length <= 60) title += o.titleSuffix;++ title = clip(title, 60);++ const description = clip(o.description || '', 160);++ const canonical = absolute(o.canonical);++ const image = o.image ? absolute(o.image, canonical) : '';++ const keywords = Array.isArray(o.keywords) ? o.keywords.join(', ') : (o.keywords || '');++ const robots = o.robots || 'index, follow, max-image-preview:large, max-snippet:-1';++ const out = [];++ if (!o.noTitle) out.push(`<title>${esc(title)}</title>`);++ if (description) out.push(`<meta name="description" content="${esc(description)}">`);++ if (keywords) out.push(`<meta name="keywords" content="${esc(keywords)}">`);++ out.push(`<meta name="robots" content="${esc(robots)}">`);++ if (o.author) out.push(`<meta name="author" content="${esc(o.author)}">`);++ if (o.themeColor) out.push(`<meta name="theme-color" content="${esc(o.themeColor)}">`);++ if (canonical) out.push(`<link rel="canonical" href="${esc(canonical)}">`);++ for (const a of o.alternates || []) if (a && a.href) out.push(`<link rel="alternate" hreflang="${esc(a.hreflang || 'x-default')}" href="${esc(absolute(a.href))}">`);++ if (o.prev) out.push(`<link rel="prev" href="${esc(absolute(o.prev))}">`);++ if (o.next) out.push(`<link rel="next" href="${esc(absolute(o.next))}">`);++ out.push(`<meta property="og:type" content="${esc(o.type || 'website')}">`);++ if (o.siteName) out.push(`<meta property="og:site_name" content="${esc(o.siteName)}">`);++ out.push(`<meta property="og:title" content="${esc(title)}">`);++ if (description) out.push(`<meta property="og:description" content="${esc(description)}">`);++ if (canonical) out.push(`<meta property="og:url" content="${esc(canonical)}">`);++ out.push(`<meta property="og:locale" content="${esc(o.locale || 'en_US')}">`);++ if (image) {++ out.push(`<meta property="og:image" content="${esc(image)}">`);++ if (o.imageAlt) out.push(`<meta property="og:image:alt" content="${esc(o.imageAlt)}">`);++ }++ out.push(`<meta name="twitter:card" content="${image && o.largeImage !== false ? 'summary_large_image' : 'summary'}">`);++ if (o.twitterSite) out.push(`<meta name="twitter:site" content="${esc(o.twitterSite)}">`);++ out.push(`<meta name="twitter:title" content="${esc(title)}">`);++ if (description) out.push(`<meta name="twitter:description" content="${esc(description)}">`);++ if (image) out.push(`<meta name="twitter:image" content="${esc(image)}">`);++ const ld = o.jsonLd ? (Array.isArray(o.jsonLd) ? o.jsonLd : [o.jsonLd]) : [];++ for (const item of ld) if (item) out.push(jsonLdTag(item));++ return out.join('\n');++}++++const ORG = { '@type': 'Organization', '@id': 'https://openvibe.network/#org', name: 'OpenVibe', url: 'https://openvibe.network/', logo: 'https://openvibe.network/assets/logo-512.png', sameAs: ['https://github.com/OpenVibers', 'https://discord.gg/M6MuRUaeJj'] };++++const jsonLd = {++ organization(extra = {}) { return { '@context': 'https://schema.org', ...ORG, ...extra }; },++ /** WebSite; `searchUrl` with {q} adds the sitelinks SearchAction. */++ website({ name, url, description, searchUrl, inLanguage = 'en' } = {}) {++ const o = { '@context': 'https://schema.org', '@type': 'WebSite', '@id': `${url}#site`, name, url, description, inLanguage, publisher: { '@id': ORG['@id'] } };++ if (searchUrl) o.potentialAction = { '@type': 'SearchAction', target: { '@type': 'EntryPoint', urlTemplate: searchUrl.replace('{q}', '{search_term_string}') }, 'query-input': 'required name=search_term_string' };++ return o;++ },++ webPage({ name, url, description, type = 'WebPage', siteUrl, dateModified } = {}) {++ return { '@context': 'https://schema.org', '@type': type, '@id': `${url}#page`, name, url, description, ...(siteUrl ? { isPartOf: { '@id': `${siteUrl}#site` } } : {}), ...(dateModified ? { dateModified } : {}) };++ },++ /** A web tool. No price/offer fields: the platform makes no cost claims. */++ softwareApp({ name, url, description, category = 'UtilitiesApplication', keywords, image, os = 'Any (web browser)' } = {}) {++ return { '@context': 'https://schema.org', '@type': 'WebApplication', name, url, description, applicationCategory: category, operatingSystem: os, browserRequirements: 'Requires a modern web browser', ...(keywords ? { keywords: Array.isArray(keywords) ? keywords.join(', ') : keywords } : {}), ...(image ? { image } : {}), publisher: { '@id': ORG['@id'] } };++ },++ breadcrumbs(items = []) {++ return { '@context': 'https://schema.org', '@type': 'BreadcrumbList', itemListElement: items.map((it, i) => ({ '@type': 'ListItem', position: i + 1, name: it.name, item: it.url })) };++ },++ itemList(name, items = [], { url } = {}) {++ return { '@context': 'https://schema.org', '@type': 'ItemList', name, ...(url ? { url } : {}), numberOfItems: items.length, itemListElement: items.map((it, i) => ({ '@type': 'ListItem', position: i + 1, name: it.name, url: it.url, ...(it.description ? { description: it.description } : {}) })) };++ },++ faq(pairs = []) {++ return { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: pairs.map((p) => ({ '@type': 'Question', name: p.q, acceptedAnswer: { '@type': 'Answer', text: p.a } })) };++ },++ howTo({ name, description, steps = [] } = {}) {++ return { '@context': 'https://schema.org', '@type': 'HowTo', name, description, step: steps.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name || `Step ${i + 1}`, text: s.text })) };++ },++ article({ headline, url, description, author, datePublished, dateModified, image } = {}) {++ return { '@context': 'https://schema.org', '@type': 'Article', headline: clip(headline, 110), url, description, ...(author ? { author: { '@type': 'Person', name: author } } : {}), ...(datePublished ? { datePublished } : {}), ...(dateModified ? { dateModified } : {}), ...(image ? { image } : {}), publisher: { '@id': ORG['@id'] } };++ },++ video({ name, url, description, thumbnailUrl, uploadDate, duration, contentUrl, embedUrl } = {}) {++ return { '@context': 'https://schema.org', '@type': 'VideoObject', name, url, description: description || name, thumbnailUrl, uploadDate, ...(duration ? { duration } : {}), ...(contentUrl ? { contentUrl } : {}), ...(embedUrl ? { embedUrl } : {}) };++ },++};++++/** urls: [{ loc, lastmod?, changefreq?, priority?, alternates?: [{hreflang, href}], images?: [url] }] — absolute http(s) only. */++function sitemapXml(urls = []) {++ const rows = urls.filter((u) => u && /^https?:\/\//i.test(u.loc)).map((u) => {++ const parts = [`<loc>${xml(u.loc)}</loc>`];++ if (u.lastmod) parts.push(`<lastmod>${xml(String(u.lastmod).slice(0, 10))}</lastmod>`);++ if (u.changefreq) parts.push(`<changefreq>${xml(u.changefreq)}</changefreq>`);++ if (u.priority != null) parts.push(`<priority>${Number(u.priority).toFixed(1)}</priority>`);++ for (const a of u.alternates || []) parts.push(`<xhtml:link rel="alternate" hreflang="${xml(a.hreflang)}" href="${xml(a.href)}"/>`);++ for (const img of u.images || []) parts.push(`<image:image><image:loc>${xml(img)}</image:loc></image:image>`);++ return ` <url>${parts.join('')}</url>`;++ });++ return `<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">\n${rows.join('\n')}\n</urlset>\n`;++}++++function sitemapIndexXml(maps = []) {++ const rows = maps.filter((m) => m && m.loc).map((m) => ` <sitemap><loc>${xml(m.loc)}</loc>${m.lastmod ? `<lastmod>${xml(String(m.lastmod).slice(0, 10))}</lastmod>` : ''}</sitemap>`);++ return `<?xml version="1.0" encoding="UTF-8"?>\n<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n${rows.join('\n')}\n</sitemapindex>\n`;++}++++// Crawlers that build search and AI indexes — welcomed by name so a generic Disallow never hits them.++const AI_AND_SEARCH_BOTS = ['Googlebot', 'Bingbot', 'DuckDuckBot', 'Applebot', 'GPTBot', 'OAI-SearchBot', 'ChatGPT-User', 'ClaudeBot', 'Claude-Web', 'anthropic-ai', 'PerplexityBot', 'CCBot', 'Google-Extended', 'Amazonbot', 'meta-externalagent', 'YouBot', 'Bytespider'];++++function robotsTxt({ sitemaps = [], disallow = [], allow = ['/'], allowAI = true, block = [], crawlDelay } = {}) {++ const lines = ['User-agent: *'];++ for (const a of allow) lines.push(`Allow: ${a}`);++ for (const d of disallow) lines.push(`Disallow: ${d}`);++ if (crawlDelay) lines.push(`Crawl-delay: ${crawlDelay}`);++ if (allowAI) {++ lines.push('');++ for (const bot of AI_AND_SEARCH_BOTS) lines.push(`User-agent: ${bot}`);++ lines.push('Allow: /');++ for (const d of disallow) lines.push(`Disallow: ${d}`);++ }++ for (const b of block) { lines.push('', `User-agent: ${b}`, 'Disallow: /'); }++ lines.push('');++ for (const s of sitemaps) lines.push(`Sitemap: ${s}`);++ return lines.join('\n') + '\n';++}++++/** /llms.txt (llmstxt.org): a markdown map of the site for language-model crawlers. */++function llmsTxt({ name, summary, details, sections = [] } = {}) {++ const out = [`# ${name}`, '', `> ${String(summary || '').replace(/\s+/g, ' ').trim()}`, ''];++ if (details) out.push(String(details).trim(), '');++ for (const sec of sections) {++ if (!sec || !sec.links || !sec.links.length) continue;++ out.push(`## ${sec.title}`, '');++ for (const l of sec.links) out.push(`- [${l.title}](${l.url})${l.note ? `: ${String(l.note).replace(/\s+/g, ' ').trim()}` : ''}`);++ out.push('');++ }++ return out.join('\n');++}++++module.exports = { headTags, jsonLd, jsonLdTag, sitemapXml, sitemapIndexXml, robotsTxt, llmsTxt, clip, esc, absolute, AI_AND_SEARCH_BOTS };
@@ -13,6 +13,13 @@
@@ -13,6 +13,13 @@
*/
*/
const fs = require('fs');
const fs = require('fs');
const path = require('path');
const path = require('path');
+// Vendored from OpenVibe.Network/packages/openvibe-shared (copy, never edit): the network's legal documents.
+const legal = require('./vendor/openvibe-shared/legal');
+// Which clauses apply to each domain once it opens (mirrors OpenVibe.Network/server/chrome/sites.js).
+const LEGAL_PROFILE = { chat: 'ugc', codes: 'ugc', blog: 'info', wiki: 'ugc', news: 'info', reviews: 'ugc', tips: 'streaming', vip: 'account', trade: 'ugc', host: 'hosting', deals: 'info', coupons: 'info', stream: 'streaming' };
+// Sites whose own server has no page routes: their legal pages are built here and served by nginx.
+const LEGAL_ONLY = [{ domain: 'openvibe.games', name: 'OpenVibe.Games', id: 'games', profile: 'games' }];
+const legalSite = (site) => ({ id: site.tld, service: 'network', host: site.domain, name: site.name, profile: LEGAL_PROFILE[site.tld] || 'info' });
const ROOT = __dirname;
const ROOT = __dirname;
const DIST = path.join(ROOT, 'dist');
const DIST = path.join(ROOT, 'dist');
@@ -244,7 +251,7 @@ server {
@@ -244,7 +251,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\\.(?!well-known) { deny all; }
location ~ /\\.(?!well-known) { deny all; }
@@ -259,8 +266,10 @@ function build() {
@@ -259,8 +266,10 @@ function build() {
out[`${site.domain}/robots.txt`] = robots(site);
out[`${site.domain}/robots.txt`] = robots(site);
out[`${site.domain}/sitemap.xml`] = sitemap(site);
out[`${site.domain}/sitemap.xml`] = sitemap(site);
out[`${site.domain}/manifest.webmanifest`] = manifest(site);
out[`${site.domain}/manifest.webmanifest`] = manifest(site);
+ for (const kind of ['terms', 'privacy', 'dmca']) out[`${site.domain}/${kind}.html`] = legal.page(kind, legalSite(site));
out[`../deploy/nginx/${site.domain}.conf`] = vhost(site);
out[`../deploy/nginx/${site.domain}.conf`] = vhost(site);
}
}
+ for (const g of LEGAL_ONLY) for (const kind of ['terms', 'privacy', 'dmca']) out[`${g.domain}/${kind}.html`] = legal.page(kind, { id: g.id, service: g.id, host: g.domain, name: g.name, profile: g.profile });
return out;
return out;
}
}
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
@@ -45,7 +45,7 @@ server {
@@ -45,7 +45,7 @@ server {
location / {
location / {
add_header Cache-Control "public, max-age=600";
add_header Cache-Control "public, max-age=600";
- try_files $uri $uri/ /index.html;
+ try_files $uri $uri.html $uri/ /index.html;
}
}
location ~ /\.(?!well-known) { deny all; }
location ~ /\.(?!well-known) { deny all; }
new file mode 100644
new file mode 100644
@@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenRe.Stream</title>
+<meta name="description" content="How to report copyright infringement on OpenRe.Stream, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openre.stream/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenRe.Stream">
+<meta property="og:title" content="DMCA & Copyright — OpenRe.Stream">
+<meta property="og:description" content="How to report copyright infringement on OpenRe.Stream, and how to respond to a report.">
+<meta property="og:url" content="https://openre.stream/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenRe.Stream">
+<meta name="twitter:description" content="How to report copyright infringement on OpenRe.Stream, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenRe.Stream</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenRe.Stream</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenRe.Stream respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openre.stream of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>
+<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenRe.Stream</title>
+<meta name="description" content="What OpenRe.Stream collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openre.stream/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenRe.Stream">
+<meta property="og:title" content="Privacy Policy — OpenRe.Stream">
+<meta property="og:description" content="What OpenRe.Stream collects, why, and the choices you have.">
+<meta property="og:url" content="https://openre.stream/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenRe.Stream">
+<meta name="twitter:description" content="What OpenRe.Stream collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenRe.Stream</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenRe.Stream</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenRe.Stream collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenRe.Stream receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>Streams, clips, VODs and chat.</b> What you broadcast and write is stored so it can be shown, and is public unless you choose otherwise.</li><li><b>Payments.</b> Payment processors handle card details; we receive a record of the transaction, not your card number.</li><li><b>AI features.</b> Public streams and chat may be transcribed and summarised by AI services to create captions, highlights and overviews.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, payment processors, AI providers used for transcription and summaries, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenRe.Stream without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenRe.Stream is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenRe.Stream</title>
+<meta name="description" content="The rules for using OpenRe.Stream, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openre.stream/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenRe.Stream">
+<meta property="og:title" content="Terms of Service — OpenRe.Stream">
+<meta property="og:description" content="The rules for using OpenRe.Stream, in plain language.">
+<meta property="og:url" content="https://openre.stream/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenRe.Stream">
+<meta name="twitter:description" content="The rules for using OpenRe.Stream, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenRe.Stream</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenRe.Stream</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenRe.Stream is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenRe.Stream if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Your account</h2><p>Most of OpenRe.Stream works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>
+<section><h2 id="s4">What you post</h2><p>You keep ownership of what you stream, upload, clip or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>
+<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li><li>Streams must be labelled honestly; adult or graphic content belongs behind the mature flag.</li></ul></section>
+<section><h2 id="s6">Money</h2><p>Donations, tips and purchases of virtual currency are voluntary and final except where the law requires a refund. Virtual currencies have no cash value outside the payout rules shown on the site. Streamers are responsible for their own taxes.</p></section>
+<section><h2 id="s7">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenRe.Stream at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s8">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openre.stream.</p></section>
+<section><h2 id="s9">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenRe.Stream. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s10">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s11">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.Blog</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.Blog, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.blog/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Blog">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.Blog">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.Blog, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.blog/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Blog">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Blog, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Blog</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Blog</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.Blog respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512). OpenVibe.Blog publishes its own material and does not host uploads from the public.</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.blog of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.Blog</title>
+<meta name="description" content="What OpenVibe.Blog collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.blog/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Blog">
+<meta property="og:title" content="Privacy Policy — OpenVibe.Blog">
+<meta property="og:description" content="What OpenVibe.Blog collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.blog/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.Blog">
+<meta name="twitter:description" content="What OpenVibe.Blog collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Blog</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Blog</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Blog collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Blog without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.Blog is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.Blog</title>
+<meta name="description" content="The rules for using OpenVibe.Blog, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.blog/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Blog">
+<meta property="og:title" content="Terms of Service — OpenVibe.Blog">
+<meta property="og:description" content="The rules for using OpenVibe.Blog, in plain language.">
+<meta property="og:url" content="https://openvibe.blog/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.Blog">
+<meta name="twitter:description" content="The rules for using OpenVibe.Blog, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Blog</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Blog</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Blog is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Blog if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s4">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Blog at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s5">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.blog.</p></section>
+<section><h2 id="s6">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Blog. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s7">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s8">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.Chat</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.Chat, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.chat/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Chat">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.Chat">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.Chat, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.chat/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Chat">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Chat, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Chat</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Chat</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.Chat respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.chat of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>
+<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.Chat</title>
+<meta name="description" content="What OpenVibe.Chat collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.chat/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Chat">
+<meta property="og:title" content="Privacy Policy — OpenVibe.Chat">
+<meta property="og:description" content="What OpenVibe.Chat collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.chat/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.Chat">
+<meta name="twitter:description" content="What OpenVibe.Chat collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Chat</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Chat</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Chat collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Chat receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Chat without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.Chat is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.Chat</title>
+<meta name="description" content="The rules for using OpenVibe.Chat, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.chat/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Chat">
+<meta property="og:title" content="Terms of Service — OpenVibe.Chat">
+<meta property="og:description" content="The rules for using OpenVibe.Chat, in plain language.">
+<meta property="og:url" content="https://openvibe.chat/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.Chat">
+<meta name="twitter:description" content="The rules for using OpenVibe.Chat, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Chat</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Chat</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Chat is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Chat if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Chat works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>
+<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>
+<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Chat at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.chat.</p></section>
+<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Chat. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.Codes</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.Codes, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.codes/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Codes">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.Codes">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.Codes, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.codes/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Codes">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Codes, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Codes</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Codes</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.Codes respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.codes of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>
+<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.Codes</title>
+<meta name="description" content="What OpenVibe.Codes collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.codes/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Codes">
+<meta property="og:title" content="Privacy Policy — OpenVibe.Codes">
+<meta property="og:description" content="What OpenVibe.Codes collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.codes/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.Codes">
+<meta name="twitter:description" content="What OpenVibe.Codes collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Codes</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Codes</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Codes collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Codes receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Codes without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.Codes is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.Codes</title>
+<meta name="description" content="The rules for using OpenVibe.Codes, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.codes/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Codes">
+<meta property="og:title" content="Terms of Service — OpenVibe.Codes">
+<meta property="og:description" content="The rules for using OpenVibe.Codes, in plain language.">
+<meta property="og:url" content="https://openvibe.codes/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.Codes">
+<meta name="twitter:description" content="The rules for using OpenVibe.Codes, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Codes</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Codes</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Codes is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Codes if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Codes works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>
+<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>
+<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Codes at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.codes.</p></section>
+<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Codes. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.Coupons</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.Coupons, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.coupons/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Coupons">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.Coupons">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.Coupons, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.coupons/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Coupons">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Coupons, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Coupons</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Coupons</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.Coupons respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512). OpenVibe.Coupons publishes its own material and does not host uploads from the public.</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.coupons of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.Coupons</title>
+<meta name="description" content="What OpenVibe.Coupons collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.coupons/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Coupons">
+<meta property="og:title" content="Privacy Policy — OpenVibe.Coupons">
+<meta property="og:description" content="What OpenVibe.Coupons collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.coupons/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.Coupons">
+<meta name="twitter:description" content="What OpenVibe.Coupons collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Coupons</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Coupons</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Coupons collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Coupons without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.Coupons is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.Coupons</title>
+<meta name="description" content="The rules for using OpenVibe.Coupons, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.coupons/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Coupons">
+<meta property="og:title" content="Terms of Service — OpenVibe.Coupons">
+<meta property="og:description" content="The rules for using OpenVibe.Coupons, in plain language.">
+<meta property="og:url" content="https://openvibe.coupons/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.Coupons">
+<meta name="twitter:description" content="The rules for using OpenVibe.Coupons, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Coupons</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Coupons</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Coupons is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Coupons if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s4">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Coupons at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s5">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.coupons.</p></section>
+<section><h2 id="s6">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Coupons. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s7">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s8">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.Deals</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.Deals, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.deals/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Deals">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.Deals">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.Deals, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.deals/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Deals">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Deals, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Deals</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Deals</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.Deals respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512). OpenVibe.Deals publishes its own material and does not host uploads from the public.</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.deals of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.Deals</title>
+<meta name="description" content="What OpenVibe.Deals collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.deals/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Deals">
+<meta property="og:title" content="Privacy Policy — OpenVibe.Deals">
+<meta property="og:description" content="What OpenVibe.Deals collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.deals/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.Deals">
+<meta name="twitter:description" content="What OpenVibe.Deals collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Deals</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Deals</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Deals collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Deals without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.Deals is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.Deals</title>
+<meta name="description" content="The rules for using OpenVibe.Deals, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.deals/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Deals">
+<meta property="og:title" content="Terms of Service — OpenVibe.Deals">
+<meta property="og:description" content="The rules for using OpenVibe.Deals, in plain language.">
+<meta property="og:url" content="https://openvibe.deals/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.Deals">
+<meta name="twitter:description" content="The rules for using OpenVibe.Deals, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Deals</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Deals</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Deals is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Deals if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s4">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Deals at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s5">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.deals.</p></section>
+<section><h2 id="s6">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Deals. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s7">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s8">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.Games</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.Games, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.games/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Games">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.Games">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.Games, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.games/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Games">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Games, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Games</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Games</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.Games respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.games of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>
+<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"games",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"games",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.Games</title>
+<meta name="description" content="What OpenVibe.Games collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.games/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Games">
+<meta property="og:title" content="Privacy Policy — OpenVibe.Games">
+<meta property="og:description" content="What OpenVibe.Games collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.games/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.Games">
+<meta name="twitter:description" content="What OpenVibe.Games collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Games</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Games</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Games collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Games receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>Game state.</b> Your characters, items, progress and in-game chat.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Games without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.Games is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"games",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"games",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.Games</title>
+<meta name="description" content="The rules for using OpenVibe.Games, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.games/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Games">
+<meta property="og:title" content="Terms of Service — OpenVibe.Games">
+<meta property="og:description" content="The rules for using OpenVibe.Games, in plain language.">
+<meta property="og:url" content="https://openvibe.games/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.Games">
+<meta name="twitter:description" content="The rules for using OpenVibe.Games, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Games</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Games</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Games is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Games if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Games works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>
+<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>
+<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s6">Game items and progress</h2><p>Items, currency and progress in games have no cash value and may be changed, reset or removed as the games evolve. Cheating, automation that gives an unfair advantage and exploiting bugs can lead to a reset or a ban.</p></section>
+<section><h2 id="s7">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Games at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s8">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.games.</p></section>
+<section><h2 id="s9">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Games. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s10">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s11">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"games",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"games",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.Host</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.Host, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.host/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Host">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.Host">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.Host, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.host/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Host">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Host, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Host</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Host</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.Host respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.host of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>
+<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.Host</title>
+<meta name="description" content="What OpenVibe.Host collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.host/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Host">
+<meta property="og:title" content="Privacy Policy — OpenVibe.Host">
+<meta property="og:description" content="What OpenVibe.Host collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.host/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.Host">
+<meta name="twitter:description" content="What OpenVibe.Host collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Host</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Host</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Host collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Host receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>Media you upload or record.</b> Videos, clips, images and files, with their metadata, stored so the sites that use them can show them.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Host without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.Host is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.Host</title>
+<meta name="description" content="The rules for using OpenVibe.Host, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.host/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Host">
+<meta property="og:title" content="Terms of Service — OpenVibe.Host">
+<meta property="og:description" content="The rules for using OpenVibe.Host, in plain language.">
+<meta property="og:url" content="https://openvibe.host/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.Host">
+<meta name="twitter:description" content="The rules for using OpenVibe.Host, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Host</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Host</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Host is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Host if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Host works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>
+<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>
+<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Host at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.host.</p></section>
+<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Host. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.News</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.News, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.news/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.News">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.News">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.News, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.news/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.News">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.News, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.News</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.News</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.News respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512). OpenVibe.News publishes its own material and does not host uploads from the public.</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.news of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.News</title>
+<meta name="description" content="What OpenVibe.News collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.news/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.News">
+<meta property="og:title" content="Privacy Policy — OpenVibe.News">
+<meta property="og:description" content="What OpenVibe.News collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.news/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.News">
+<meta name="twitter:description" content="What OpenVibe.News collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.News</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.News</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.News collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.News without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.News is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.News</title>
+<meta name="description" content="The rules for using OpenVibe.News, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.news/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.News">
+<meta property="og:title" content="Terms of Service — OpenVibe.News">
+<meta property="og:description" content="The rules for using OpenVibe.News, in plain language.">
+<meta property="og:url" content="https://openvibe.news/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.News">
+<meta name="twitter:description" content="The rules for using OpenVibe.News, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.News</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.News</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.News is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.News if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s4">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.News at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s5">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.news.</p></section>
+<section><h2 id="s6">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.News. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s7">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s8">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.Reviews</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.Reviews, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.reviews/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Reviews">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.Reviews">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.Reviews, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.reviews/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Reviews">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Reviews, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Reviews</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Reviews</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.Reviews respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.reviews of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>
+<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.Reviews</title>
+<meta name="description" content="What OpenVibe.Reviews collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.reviews/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Reviews">
+<meta property="og:title" content="Privacy Policy — OpenVibe.Reviews">
+<meta property="og:description" content="What OpenVibe.Reviews collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.reviews/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.Reviews">
+<meta name="twitter:description" content="What OpenVibe.Reviews collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Reviews</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Reviews</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Reviews collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Reviews receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Reviews without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.Reviews is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.Reviews</title>
+<meta name="description" content="The rules for using OpenVibe.Reviews, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.reviews/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Reviews">
+<meta property="og:title" content="Terms of Service — OpenVibe.Reviews">
+<meta property="og:description" content="The rules for using OpenVibe.Reviews, in plain language.">
+<meta property="og:url" content="https://openvibe.reviews/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.Reviews">
+<meta name="twitter:description" content="The rules for using OpenVibe.Reviews, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Reviews</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Reviews</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Reviews is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Reviews if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Reviews works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>
+<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>
+<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Reviews at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.reviews.</p></section>
+<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Reviews. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.Tips</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.Tips, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.tips/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Tips">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.Tips">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.Tips, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.tips/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Tips">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Tips, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Tips</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Tips</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.Tips respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.tips of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>
+<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.Tips</title>
+<meta name="description" content="What OpenVibe.Tips collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.tips/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Tips">
+<meta property="og:title" content="Privacy Policy — OpenVibe.Tips">
+<meta property="og:description" content="What OpenVibe.Tips collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.tips/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.Tips">
+<meta name="twitter:description" content="What OpenVibe.Tips collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Tips</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Tips</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Tips collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Tips receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>Streams, clips, VODs and chat.</b> What you broadcast and write is stored so it can be shown, and is public unless you choose otherwise.</li><li><b>Payments.</b> Payment processors handle card details; we receive a record of the transaction, not your card number.</li><li><b>AI features.</b> Public streams and chat may be transcribed and summarised by AI services to create captions, highlights and overviews.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, payment processors, AI providers used for transcription and summaries, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Tips without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.Tips is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.Tips</title>
+<meta name="description" content="The rules for using OpenVibe.Tips, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.tips/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Tips">
+<meta property="og:title" content="Terms of Service — OpenVibe.Tips">
+<meta property="og:description" content="The rules for using OpenVibe.Tips, in plain language.">
+<meta property="og:url" content="https://openvibe.tips/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.Tips">
+<meta name="twitter:description" content="The rules for using OpenVibe.Tips, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Tips</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Tips</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Tips is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Tips if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Tips works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>
+<section><h2 id="s4">What you post</h2><p>You keep ownership of what you stream, upload, clip or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>
+<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li><li>Streams must be labelled honestly; adult or graphic content belongs behind the mature flag.</li></ul></section>
+<section><h2 id="s6">Money</h2><p>Donations, tips and purchases of virtual currency are voluntary and final except where the law requires a refund. Virtual currencies have no cash value outside the payout rules shown on the site. Streamers are responsible for their own taxes.</p></section>
+<section><h2 id="s7">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Tips at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s8">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.tips.</p></section>
+<section><h2 id="s9">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Tips. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s10">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s11">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.Trade</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.Trade, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.trade/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Trade">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.Trade">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.Trade, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.trade/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Trade">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Trade, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Trade</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Trade</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.Trade respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.trade of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>
+<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.Trade</title>
+<meta name="description" content="What OpenVibe.Trade collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.trade/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Trade">
+<meta property="og:title" content="Privacy Policy — OpenVibe.Trade">
+<meta property="og:description" content="What OpenVibe.Trade collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.trade/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.Trade">
+<meta name="twitter:description" content="What OpenVibe.Trade collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Trade</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Trade</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Trade collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Trade receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Trade without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.Trade is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.Trade</title>
+<meta name="description" content="The rules for using OpenVibe.Trade, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.trade/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Trade">
+<meta property="og:title" content="Terms of Service — OpenVibe.Trade">
+<meta property="og:description" content="The rules for using OpenVibe.Trade, in plain language.">
+<meta property="og:url" content="https://openvibe.trade/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.Trade">
+<meta name="twitter:description" content="The rules for using OpenVibe.Trade, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Trade</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Trade</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Trade is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Trade if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Trade works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>
+<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>
+<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Trade at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.trade.</p></section>
+<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Trade. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.VIP</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.VIP, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.vip/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.VIP">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.VIP">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.VIP, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.vip/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.VIP">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.VIP, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.VIP</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.VIP</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.VIP respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.vip of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>
+<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.VIP</title>
+<meta name="description" content="What OpenVibe.VIP collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.vip/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.VIP">
+<meta property="og:title" content="Privacy Policy — OpenVibe.VIP">
+<meta property="og:description" content="What OpenVibe.VIP collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.vip/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.VIP">
+<meta name="twitter:description" content="What OpenVibe.VIP collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.VIP</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.VIP</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.VIP collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.VIP receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>Your account.</b> Username, email address, a salted hash of your password, profile, theme and notification preferences, linked services, sign-in history and, if you keep it switched on, your cross-site history.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.VIP without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.VIP is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.VIP</title>
+<meta name="description" content="The rules for using OpenVibe.VIP, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.vip/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.VIP">
+<meta property="og:title" content="Terms of Service — OpenVibe.VIP">
+<meta property="og:description" content="The rules for using OpenVibe.VIP, in plain language.">
+<meta property="og:url" content="https://openvibe.vip/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.VIP">
+<meta name="twitter:description" content="The rules for using OpenVibe.VIP, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.VIP</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.VIP</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.VIP is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.VIP if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.VIP works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>
+<section><h2 id="s4">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s5">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.VIP at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s6">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.vip.</p></section>
+<section><h2 id="s7">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.VIP. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s8">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>DMCA & Copyright — OpenVibe.Wiki</title>
+<meta name="description" content="How to report copyright infringement on OpenVibe.Wiki, and how to respond to a report.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.wiki/dmca">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Wiki">
+<meta property="og:title" content="DMCA & Copyright — OpenVibe.Wiki">
+<meta property="og:description" content="How to report copyright infringement on OpenVibe.Wiki, and how to respond to a report.">
+<meta property="og:url" content="https://openvibe.wiki/dmca">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="DMCA & Copyright — OpenVibe.Wiki">
+<meta name="twitter:description" content="How to report copyright infringement on OpenVibe.Wiki, and how to respond to a report.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Wiki</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Wiki</p><h1>DMCA & Copyright</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">Our position</h2><p>OpenVibe.Wiki respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).</p></section>
+<section><h2 id="s2">Send a takedown notice</h2><p>Email <a href="mailto:[email protected]">[email protected]</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on openvibe.wiki of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol></section>
+<section><h2 id="s3">What happens next</h2><p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p></section>
+<section><h2 id="s4">Counter-notice</h2><p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p></section>
+<section><h2 id="s5">Repeat infringers and false claims</h2><p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/privacy">Privacy Policy</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Privacy Policy — OpenVibe.Wiki</title>
+<meta name="description" content="What OpenVibe.Wiki collects, why, and the choices you have.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.wiki/privacy">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Wiki">
+<meta property="og:title" content="Privacy Policy — OpenVibe.Wiki">
+<meta property="og:description" content="What OpenVibe.Wiki collects, why, and the choices you have.">
+<meta property="og:url" content="https://openvibe.wiki/privacy">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Privacy Policy — OpenVibe.Wiki">
+<meta name="twitter:description" content="What OpenVibe.Wiki collects, why, and the choices you have.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Wiki</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Wiki</p><h1>Privacy Policy</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Wiki collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p></section>
+<section><h2 id="s2">What we collect</h2><ul><li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li><li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li><li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. OpenVibe.Wiki receives your user id, username, avatar and role so it can show you as signed in.</li><li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li></ul></section>
+<section><h2 id="s3">Cookies and local storage</h2><p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p></section>
+<section><h2 id="s4">Who we share with</h2><p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p></section>
+<section><h2 id="s5">Across OpenVibe sites</h2><p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p></section>
+<section><h2 id="s6">How long we keep things</h2><p>Request logs and raw usage events are kept for a limited period and then reduced to totals. Content you post stays until you delete it or your account. Account data stays until you delete your account; backups expire on their own shortly afterwards.</p></section>
+<section><h2 id="s7">Your choices and rights</h2><p>You can use most of OpenVibe.Wiki without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p></section>
+<section><h2 id="s8">Children</h2><p>OpenVibe.Wiki is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p></section>
+<section><h2 id="s9">Changes and contact</h2><p>We will post changes here and update the date above. Questions and requests: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/terms">Terms of Service</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Terms of Service — OpenVibe.Wiki</title>
+<meta name="description" content="The rules for using OpenVibe.Wiki, in plain language.">
+<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
+<link rel="canonical" href="https://openvibe.wiki/terms">
+<meta property="og:type" content="article">
+<meta property="og:site_name" content="OpenVibe.Wiki">
+<meta property="og:title" content="Terms of Service — OpenVibe.Wiki">
+<meta property="og:description" content="The rules for using OpenVibe.Wiki, in plain language.">
+<meta property="og:url" content="https://openvibe.wiki/terms">
+<meta property="og:locale" content="en_US">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:title" content="Terms of Service — OpenVibe.Wiki">
+<meta name="twitter:description" content="The rules for using OpenVibe.Wiki, in plain language.">
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">OpenVibe.Wiki</a></p></noscript>
+<main><article class="ov-legal"><p class="ov-legal-kicker">OpenVibe.Wiki</p><h1>Terms of Service</h1><p class="ov-legal-date">Last updated <time datetime="2026-09-18">September 18, 2026</time></p>
+<section><h2 id="s1">The short version</h2><p>OpenVibe.Wiki is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p></section>
+<section><h2 id="s2">Who can use it</h2><p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use OpenVibe.Wiki if you were previously banned from the network.</p></section>
+<section><h2 id="s3">Your account</h2><p>Most of OpenVibe.Wiki works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p></section>
+<section><h2 id="s4">What you post</h2><p>You keep ownership of what you upload or write. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p></section>
+<section><h2 id="s5">Rules</h2><p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li></ul></section>
+<section><h2 id="s6">Moderation and ending accounts</h2><p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using OpenVibe.Wiki at any time and delete your account from your account settings.</p></section>
+<section><h2 id="s7">Open source</h2><p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at openvibe.wiki.</p></section>
+<section><h2 id="s8">No warranty, limited liability</h2><p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of OpenVibe.Wiki. Nothing here limits liability that cannot be limited by law.</p></section>
+<section><h2 id="s9">Governing law</h2><p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p></section>
+<section><h2 id="s10">Changes and contact</h2><p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:[email protected]">[email protected]</a>.</p></section>
+<nav class="ov-legal-more" aria-label="Other policies"><a href="/privacy">Privacy Policy</a><a href="/dmca">DMCA & Copyright</a><a href="https://openvibe.network/">About OpenVibe</a></nav></article></main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:"network",apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:"network",variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>
\ No newline at end of file
\ No newline at end of file
new file mode 100644
new file mode 100644
@@ -0,0 +1,145 @@
@@ -0,0 +1,145 @@
+'use strict';
+// ═══════════════════════════════════════════════════════════════
+// openvibe-shared/legal — Terms, Privacy and DMCA for every OpenVibe site.
+//
+// Each domain answers for itself: /terms, /privacy and /dmca live on the site's own apex and say
+// what THAT site does. One template per document, with clauses switched by the site's profile:
+// streaming live video, chat, payments tools files processed, then deleted
+// ugc posts, pastes, comments games accounts and game state
+// hosting stored user media account the identity provider
+// info read-only / placeholder site
+//
+// const legal = require('openvibe-shared/legal');
+// app.get(legal.PATHS, legal.handler({ host: 'openvibe.tools', name: 'OpenVibe.Tools', profile: 'tools' }));
+// legal.page('privacy', site) → complete HTML document (static generators use this)
+//
+// Plain language on purpose. These are templates maintained by the project, not legal advice;
+// the owner reviews them before relying on them. Facts stated here (what is stored, for how
+// long) must match the code — change both together.
+// ═══════════════════════════════════════════════════════════════
+const UPDATED = '2026-09-18';
+const UPDATED_TEXT = 'September 18, 2026';
+const CONTACT = '[email protected]';
+const PATHS = ['/terms', '/privacy', '/dmca'];
+const TITLES = { terms: 'Terms of Service', privacy: 'Privacy Policy', dmca: 'DMCA & Copyright' };
+
+const esc = (s) => String(s == null ? '' : s).replace(/[&<>"']/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c]));
+const has = (site, ...profiles) => profiles.includes(site.profile);
+const userContent = (site) => has(site, 'streaming', 'ugc', 'hosting', 'games');
+
+function terms(site) {
+ const n = esc(site.name);
+ const S = [];
+ S.push(['The short version', `<p>${n} is part of OpenVibe, an open source, community-run network. Use it for lawful things, be decent to other people, and do not try to break it. We can remove content or accounts that break these terms. The software is provided as it is, without warranties.</p>`]);
+ S.push(['Who can use it', `<p>You must be at least 13 years old, or the minimum age of digital consent where you live. If you are under 18, a parent or guardian must agree to these terms for you. You may not use ${n} if you were previously banned from the network.</p>`]);
+ if (!has(site, 'info')) S.push(['Your account', `<p>Most of ${n} works without signing in. An OpenVibe account, managed at <a href="https://openvibe.network/">openvibe.network</a>, adds things that need to remember you. You are responsible for what happens under your account; keep your password to yourself and tell us if you think someone else has it.</p>`]);
+ if (has(site, 'tools')) S.push(['Files and links you give the tools', `<p>The tools process what you upload or paste and hand you the result. Uploads and results are temporary: they are deleted automatically, normally within one hour for visitors and within 24 hours for signed-in users. Do not rely on ${n} to store anything.</p><p>Only process material you have the right to use. Downloaders are for your own uploads and for content you are allowed to keep; respecting the terms of the site the content comes from is your responsibility. Lookup tools (DNS, WHOIS, ping, port checks) may only be pointed at systems you are allowed to test.</p>`]);
+ if (userContent(site)) S.push(['What you post', `<p>You keep ownership of what you ${has(site, 'streaming') ? 'stream, upload, clip or write' : 'upload or write'}. You give OpenVibe a worldwide, non-exclusive, royalty-free licence to host, display, transcode and distribute it so the service can work, including on other OpenVibe sites where your content is meant to appear. The licence ends when you delete the content, except for copies other people made while it was public and backups that expire on their own.</p><p>You are responsible for having the rights to everything you post.</p>`]);
+ S.push(['Rules', `<p>OpenVibe leans toward open expression. These limits apply everywhere:</p><ul><li>Nothing illegal where you are or where our servers are (United States).</li><li>No sexual content involving minors, and no sexualisation of minors, ever.</li><li>No credible threats of violence, and no publishing of someone's private information to harm them.</li><li>No content you do not have the rights to.</li><li>No malware, phishing, spam, scraping that ignores robots.txt rate limits, or attempts to disrupt or gain unauthorised access to the service or to other people's systems.</li>${has(site, 'streaming') ? '<li>Streams must be labelled honestly; adult or graphic content belongs behind the mature flag.</li>' : ''}</ul>`]);
+ if (has(site, 'streaming')) S.push(['Money', `<p>Donations, tips and purchases of virtual currency are voluntary and final except where the law requires a refund. Virtual currencies have no cash value outside the payout rules shown on the site. Streamers are responsible for their own taxes.</p>`]);
+ if (has(site, 'games')) S.push(['Game items and progress', `<p>Items, currency and progress in games have no cash value and may be changed, reset or removed as the games evolve. Cheating, automation that gives an unfair advantage and exploiting bugs can lead to a reset or a ban.</p>`]);
+ S.push(['Moderation and ending accounts', `<p>We may remove content, limit features, or suspend accounts that break these terms or put other people or the service at risk. You can stop using ${n} at any time and delete your account from your account settings.</p>`]);
+ S.push(['Open source', `<p>OpenVibe's code is public. The code is licensed under the terms in each repository; those licences, not this page, govern your use of the code. These terms cover your use of the hosted service at ${esc(site.host)}.</p>`]);
+ S.push(['No warranty, limited liability', `<p>The service is provided "as is" and "as available". To the extent the law allows, OpenVibe and the people who run it are not liable for indirect or consequential losses, lost data, or lost profits arising from your use of ${n}. Nothing here limits liability that cannot be limited by law.</p>`]);
+ S.push(['Governing law', `<p>These terms are governed by the laws of the United States and the State of Washington, without regard to conflicts of law. Disputes are handled in the federal or state courts located in Washington State. If part of these terms cannot be enforced, the rest still applies.</p>`]);
+ S.push(['Changes and contact', `<p>We may update these terms. Material changes are announced on the site before they take effect. Questions: <a href="mailto:${CONTACT}">${CONTACT}</a>.</p>`]);
+ return S;
+}
+
+function privacy(site) {
+ const n = esc(site.name);
+ const S = [];
+ S.push(['The short version', `<p>${n} collects what it needs to work and to keep abuse out, and no more. We do not sell personal information and we do not run advertising trackers.</p>`]);
+ const collect = [
+ '<li><b>Request logs.</b> Like every web server, ours record your IP address, browser type, the page requested and the time. We use them for security, rate limiting and aggregate traffic statistics.</li>',
+ '<li><b>Usage statistics.</b> Page views and a random session identifier, so we can see which parts of the network people use. These are first-party statistics kept on our own servers.</li>',
+ ];
+ if (!has(site, 'info')) collect.push(`<li><b>Account information, if you sign in.</b> Your OpenVibe account (username, email address, password hash, profile and preferences) is held by <a href="https://openvibe.network/privacy">openvibe.network</a>. ${n} receives your user id, username, avatar and role so it can show you as signed in.</li>`);
+ if (has(site, 'tools')) collect.push('<li><b>What you give a tool.</b> Files, text, links, domain names and IP addresses you submit are processed to produce your result. Uploaded files and generated results are deleted automatically, normally within one hour for visitors and 24 hours for signed-in users. Many text and developer tools run entirely in your browser and send nothing to us.</li>');
+ if (has(site, 'streaming')) collect.push('<li><b>Streams, clips, VODs and chat.</b> What you broadcast and write is stored so it can be shown, and is public unless you choose otherwise.</li><li><b>Payments.</b> Payment processors handle card details; we receive a record of the transaction, not your card number.</li><li><b>AI features.</b> Public streams and chat may be transcribed and summarised by AI services to create captions, highlights and overviews.</li>');
+ if (has(site, 'ugc')) collect.push('<li><b>What you post.</b> Pastes, posts and comments, with the account that made them. Public items are visible to everyone and may be indexed by search engines.</li>');
+ if (has(site, 'hosting')) collect.push('<li><b>Media you upload or record.</b> Videos, clips, images and files, with their metadata, stored so the sites that use them can show them.</li>');
+ if (has(site, 'games')) collect.push('<li><b>Game state.</b> Your characters, items, progress and in-game chat.</li>');
+ if (has(site, 'account')) collect.push('<li><b>Your account.</b> Username, email address, a salted hash of your password, profile, theme and notification preferences, linked services, sign-in history and, if you keep it switched on, your cross-site history.</li>');
+ S.push(['What we collect', `<ul>${collect.join('')}</ul>`]);
+ S.push(['Cookies and local storage', `<p>We use a small number of first-party cookies: a sign-in token (<code>ov_token</code>), a refresh token, and a hint that remembers whether you were signed in so other OpenVibe sites can sign you in quietly. Your theme, recent pages and similar preferences are kept in your browser's local storage. There are no third-party advertising cookies. Our sites sit behind Cloudflare, which may set its own security cookies.</p>`]);
+ S.push(['Who we share with', `<p>Only the services needed to run the network: our hosting and network providers (OVH, Cloudflare), storage providers for media${has(site, 'streaming') ? ', payment processors, AI providers used for transcription and summaries' : ''}, and email delivery for account messages. We disclose information when the law requires it, and we tell you when we are allowed to.</p>`]);
+ S.push(['Across OpenVibe sites', `<p>OpenVibe sites share one account. When you are signed in, the site you visit learns who you are from openvibe.network; it does not receive your password or email address. You can see and clear your cross-site history, and switch it off, at <a href="https://openvibe.network/history">openvibe.network/history</a>.</p>`]);
+ S.push(['How long we keep things', `<p>Request logs and raw usage events are kept for a limited period and then reduced to totals. ${has(site, 'tools') ? 'Tool uploads and results are deleted within hours. ' : ''}${userContent(site) ? 'Content you post stays until you delete it or your account. ' : ''}Account data stays until you delete your account; backups expire on their own shortly afterwards.</p>`]);
+ S.push(['Your choices and rights', `<p>You can use most of ${n} without an account. With an account you can view, change, export and delete your data from your account settings, or ask us to do it. Depending on where you live (for example the EEA, the UK or California) you may have additional rights to access, correct, delete or restrict the use of your data; write to us and we will honour them.</p>`]);
+ S.push(['Children', `<p>${n} is not for children under 13, and we do not knowingly collect their information. If you believe a child has given us personal information, contact us and we will delete it.</p>`]);
+ S.push(['Changes and contact', `<p>We will post changes here and update the date above. Questions and requests: <a href="mailto:${CONTACT}">${CONTACT}</a>.</p>`]);
+ return S;
+}
+
+function dmca(site) {
+ const n = esc(site.name);
+ const S = [];
+ S.push(['Our position', `<p>${n} respects copyright and responds to clear notices of infringement under the Digital Millennium Copyright Act (17 U.S.C. § 512).${has(site, 'tools') ? ` The tools here process material at a user's request and do not keep a library of it: results are deleted automatically within hours.` : ''}${has(site, 'info') ? ` ${n} publishes its own material and does not host uploads from the public.` : ''}</p>`]);
+ S.push(['Send a takedown notice', `<p>Email <a href="mailto:${CONTACT}">${CONTACT}</a> with all of the following:</p><ol><li>Your name, address, phone number and email address, and whom you represent.</li><li>The copyrighted work you say was infringed.</li><li>The exact URL on ${esc(site.host)} of the material you want removed. General descriptions are not enough to find it.</li><li>A statement that you have a good-faith belief the use is not authorised by the copyright owner, its agent or the law.</li><li>A statement, under penalty of perjury, that the information is accurate and that you are the owner or authorised to act for the owner.</li><li>Your physical or electronic signature.</li></ol>`]);
+ S.push(['What happens next', `<p>We remove or disable access to the material, tell the person who posted it, and give them your notice. We act on complete notices as quickly as we can, normally within a few business days.</p>`]);
+ if (!has(site, 'info')) S.push(['Counter-notice', `<p>If your material was removed by mistake or misidentification, send a counter-notice to the same address with: your contact details, the material and where it appeared, a statement under penalty of perjury that you believe it was removed by mistake, your consent to the jurisdiction of the federal court for your district (or for Washington State if you are outside the United States), and your signature. We forward it to the complainant and may restore the material after 10 to 14 business days unless they tell us they have filed a court action.</p>`]);
+ S.push(['Repeat infringers and false claims', `<p>Accounts that repeatedly infringe are terminated. Knowingly false notices and counter-notices carry legal liability under § 512(f); we also refuse notices that are clearly abusive.</p>`]);
+ return S;
+}
+
+const BUILDERS = { terms, privacy, dmca };
+
+/** { title, description, sections: [[heading, html]], updated } for one document of one site. */
+function build(kind, site) {
+ if (!BUILDERS[kind]) throw new Error('Unknown legal document: ' + kind);
+ const s = Object.assign({ profile: 'info' }, site);
+ return { kind, title: `${TITLES[kind]} — ${s.name}`, heading: TITLES[kind],
+ description: { terms: `The rules for using ${s.name}, in plain language.`, privacy: `What ${s.name} collects, why, and the choices you have.`, dmca: `How to report copyright infringement on ${s.name}, and how to respond to a report.` }[kind],
+ updated: UPDATED, sections: BUILDERS[kind](s) };
+}
+
+/** Article markup only, for sites that wrap it in their own layout. */
+function article(kind, site) {
+ const d = build(kind, site);
+ const others = Object.keys(TITLES).filter(k => k !== kind);
+ return `<article class="ov-legal"><p class="ov-legal-kicker">${esc(site.name)}</p><h1>${esc(d.heading)}</h1><p class="ov-legal-date">Last updated <time datetime="${d.updated}">${UPDATED_TEXT}</time></p>
+${d.sections.map(([h, html], i) => `<section><h2 id="s${i + 1}">${esc(h)}</h2>${html}</section>`).join('\n')}
+<nav class="ov-legal-more" aria-label="Other policies">${others.map(k => `<a href="/${k}">${esc(TITLES[k])}</a>`).join('')}<a href="https://openvibe.network/">About OpenVibe</a></nav></article>`;
+}
+
+const CSS = `*{box-sizing:border-box}body{margin:0;background:var(--bg-primary,#0a0f18);color:var(--text-primary,#e6edf7);font:400 16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
+.ov-legal{max-width:760px;margin:0 auto;padding:40px 20px 24px}.ov-legal-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent-light,var(--accent,#60a5fa))}
+.ov-legal h1{font-size:clamp(28px,4.5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:6px 0 4px}.ov-legal-date{color:var(--text-muted,#7d8aa0);font-size:14px;margin:0 0 28px}
+.ov-legal h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.01em}.ov-legal p,.ov-legal li{color:var(--text-secondary,#a8b3c4)}.ov-legal li{margin:6px 0}.ov-legal b{color:var(--text-primary,#e6edf7)}
+.ov-legal a{color:var(--accent-light,var(--accent,#60a5fa))}.ov-legal code{font-size:13.5px;background:var(--bg-secondary,#111826);padding:1px 6px;border-radius:5px}
+.ov-legal-more{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;border-top:1px solid var(--border,rgba(255,255,255,.1))}.ov-legal-more a{padding:8px 14px;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:10px;text-decoration:none;font-weight:600;font-size:14px}`;
+
+/** A complete page: shared theme, navbar and footer, readable without JavaScript. */
+function page(kind, site) {
+ const d = build(kind, site);
+ const url = `https://${site.host}/${kind}`;
+ let head;
+ try { head = require('./seo').headTags({ title: d.title, description: d.description, canonical: url, siteName: site.name, type: 'article' }); }
+ catch { head = `<title>${esc(d.title)}</title><meta name="description" content="${esc(d.description)}"><link rel="canonical" href="${url}">`; }
+ return `<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+${head}
+<script src="https://openvibe.network/shared/theme-loader.js"></script><style>${CSS}</style></head><body>
+<noscript><p style="padding:12px 20px;margin:0"><a href="/">${esc(site.name)}</a></p></noscript>
+<main>${article(kind, site)}</main><div id="ov-footer"></div>
+<script src="https://openvibe.network/shared/navbar.js" defer></script><script src="https://openvibe.network/shared/footer.js" defer></script>
+<script>addEventListener('DOMContentLoaded',function(){var t=null;try{t=(document.cookie.match(/(?:^|; )ov_token=([^;]*)/)||[])[1]||localStorage.getItem('ov_token')}catch(e){}
+try{OpenVibeNavbar.init({service:${JSON.stringify(site.service || site.id || 'network')},apiBase:'https://openvibe.network',token:t?decodeURIComponent(t):null})}catch(e){}
+try{OpenVibeFooter.init({service:${JSON.stringify(site.service || site.id || 'network')},variant:'compact',mount:'#ov-footer',apiBase:'https://openvibe.network'})}catch(e){}});</script>
+</body></html>`;
+}
+
+/** Express handler for legal.PATHS. */
+function handler(site) {
+ const cache = new Map();
+ return function ovLegal(req, res, next) {
+ const kind = String(req.path || '').replace(/^\/+|\/+$/g, '');
+ if (!BUILDERS[kind]) return next();
+ if (!cache.has(kind)) cache.set(kind, page(kind, site));
+ res.set('Content-Type', 'text/html; charset=utf-8');
+ res.set('Cache-Control', 'public, max-age=3600, stale-while-revalidate=86400');
+ res.send(cache.get(kind));
+ };
+}
+
+module.exports = { PATHS, TITLES, UPDATED, CONTACT, build, article, page, handler, CSS };
new file mode 100644
new file mode 100644
@@ -0,0 +1,174 @@
@@ -0,0 +1,174 @@
+'use strict';
+/**
+ * openvibe-shared/seo.js — one SEO toolkit for every OpenVibe site (Node, no dependencies).
+ *
+ * const seo = require('openvibe-shared/seo');
+ * seo.headTags({ title, description, canonical, image, jsonLd: [seo.jsonLd.website({...})] })
+ * seo.sitemapXml([{ loc, lastmod }]) seo.robotsTxt({ sitemaps }) seo.llmsTxt({...})
+ *
+ * Rules it encodes so pages do not have to remember them: one canonical per page, titles cut at
+ * 60 characters on a word, descriptions at 160, og/twitter mirrored from the same values, JSON-LD
+ * serialised safely (no `</script>` break-outs), sitemaps with absolute URLs only, robots.txt that
+ * welcomes search and AI crawlers by default and always names the sitemap, and an /llms.txt so
+ * language-model crawlers get a clean map of the site.
+ */
+
+const esc = (s) => String(s == null ? '' : s).replace(/[&<>"']/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c]));
+const xml = (s) => String(s == null ? '' : s).replace(/[&<>"']/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c]));
+
+/** Cut on a word boundary with an ellipsis; never mid-word, never longer than `max`. */
+function clip(text, max) {
+ const t = String(text == null ? '' : text).replace(/\s+/g, ' ').trim();
+ if (t.length <= max) return t;
+ const cut = t.slice(0, max - 1);
+ const at = cut.lastIndexOf(' ');
+ return (at > max * 0.6 ? cut.slice(0, at) : cut).replace(/[\s,;:.\-–—]+$/, '') + '…';
+}
+
+function absolute(url, base) {
+ if (!url) return '';
+ try { return new URL(url, base || undefined).toString(); } catch { return String(url); }
+}
+
+/** JSON-LD script tag; `<` is escaped so content can never close the script element. */
+function jsonLdTag(obj) {
+ return `<script type="application/ld+json">${JSON.stringify(obj).replace(/</g, '\\u003c')}</script>`;
+}
+
+/**
+ * The whole <head> SEO block as an HTML string.
+ * @param {object} o title, description, canonical (absolute), image, imageAlt, type ('website'),
+ * siteName, robots ('index, follow'), locale ('en_US'), keywords (array|string), author,
+ * themeColor, twitterSite, alternates [{ hreflang, href }], prev, next, jsonLd (array|object),
+ * titleSuffix (appended when it fits), noTitle (skip <title> when the page has its own)
+ */
+function headTags(o = {}) {
+ let title = String(o.title || o.siteName || 'OpenVibe');
+ if (o.titleSuffix && (title + o.titleSuffix).length <= 60) title += o.titleSuffix;
+ title = clip(title, 60);
+ const description = clip(o.description || '', 160);
+ const canonical = absolute(o.canonical);
+ const image = o.image ? absolute(o.image, canonical) : '';
+ const keywords = Array.isArray(o.keywords) ? o.keywords.join(', ') : (o.keywords || '');
+ const robots = o.robots || 'index, follow, max-image-preview:large, max-snippet:-1';
+ const out = [];
+ if (!o.noTitle) out.push(`<title>${esc(title)}</title>`);
+ if (description) out.push(`<meta name="description" content="${esc(description)}">`);
+ if (keywords) out.push(`<meta name="keywords" content="${esc(keywords)}">`);
+ out.push(`<meta name="robots" content="${esc(robots)}">`);
+ if (o.author) out.push(`<meta name="author" content="${esc(o.author)}">`);
+ if (o.themeColor) out.push(`<meta name="theme-color" content="${esc(o.themeColor)}">`);
+ if (canonical) out.push(`<link rel="canonical" href="${esc(canonical)}">`);
+ for (const a of o.alternates || []) if (a && a.href) out.push(`<link rel="alternate" hreflang="${esc(a.hreflang || 'x-default')}" href="${esc(absolute(a.href))}">`);
+ if (o.prev) out.push(`<link rel="prev" href="${esc(absolute(o.prev))}">`);
+ if (o.next) out.push(`<link rel="next" href="${esc(absolute(o.next))}">`);
+ out.push(`<meta property="og:type" content="${esc(o.type || 'website')}">`);
+ if (o.siteName) out.push(`<meta property="og:site_name" content="${esc(o.siteName)}">`);
+ out.push(`<meta property="og:title" content="${esc(title)}">`);
+ if (description) out.push(`<meta property="og:description" content="${esc(description)}">`);
+ if (canonical) out.push(`<meta property="og:url" content="${esc(canonical)}">`);
+ out.push(`<meta property="og:locale" content="${esc(o.locale || 'en_US')}">`);
+ if (image) {
+ out.push(`<meta property="og:image" content="${esc(image)}">`);
+ if (o.imageAlt) out.push(`<meta property="og:image:alt" content="${esc(o.imageAlt)}">`);
+ }
+ out.push(`<meta name="twitter:card" content="${image && o.largeImage !== false ? 'summary_large_image' : 'summary'}">`);
+ if (o.twitterSite) out.push(`<meta name="twitter:site" content="${esc(o.twitterSite)}">`);
+ out.push(`<meta name="twitter:title" content="${esc(title)}">`);
+ if (description) out.push(`<meta name="twitter:description" content="${esc(description)}">`);
+ if (image) out.push(`<meta name="twitter:image" content="${esc(image)}">`);
+ const ld = o.jsonLd ? (Array.isArray(o.jsonLd) ? o.jsonLd : [o.jsonLd]) : [];
+ for (const item of ld) if (item) out.push(jsonLdTag(item));
+ return out.join('\n');
+}
+
+const ORG = { '@type': 'Organization', '@id': 'https://openvibe.network/#org', name: 'OpenVibe', url: 'https://openvibe.network/', logo: 'https://openvibe.network/assets/logo-512.png', sameAs: ['https://github.com/OpenVibers', 'https://discord.gg/M6MuRUaeJj'] };
+
+const jsonLd = {
+ organization(extra = {}) { return { '@context': 'https://schema.org', ...ORG, ...extra }; },
+ /** WebSite; `searchUrl` with {q} adds the sitelinks SearchAction. */
+ website({ name, url, description, searchUrl, inLanguage = 'en' } = {}) {
+ const o = { '@context': 'https://schema.org', '@type': 'WebSite', '@id': `${url}#site`, name, url, description, inLanguage, publisher: { '@id': ORG['@id'] } };
+ if (searchUrl) o.potentialAction = { '@type': 'SearchAction', target: { '@type': 'EntryPoint', urlTemplate: searchUrl.replace('{q}', '{search_term_string}') }, 'query-input': 'required name=search_term_string' };
+ return o;
+ },
+ webPage({ name, url, description, type = 'WebPage', siteUrl, dateModified } = {}) {
+ return { '@context': 'https://schema.org', '@type': type, '@id': `${url}#page`, name, url, description, ...(siteUrl ? { isPartOf: { '@id': `${siteUrl}#site` } } : {}), ...(dateModified ? { dateModified } : {}) };
+ },
+ /** A web tool. No price/offer fields: the platform makes no cost claims. */
+ softwareApp({ name, url, description, category = 'UtilitiesApplication', keywords, image, os = 'Any (web browser)' } = {}) {
+ return { '@context': 'https://schema.org', '@type': 'WebApplication', name, url, description, applicationCategory: category, operatingSystem: os, browserRequirements: 'Requires a modern web browser', ...(keywords ? { keywords: Array.isArray(keywords) ? keywords.join(', ') : keywords } : {}), ...(image ? { image } : {}), publisher: { '@id': ORG['@id'] } };
+ },
+ breadcrumbs(items = []) {
+ return { '@context': 'https://schema.org', '@type': 'BreadcrumbList', itemListElement: items.map((it, i) => ({ '@type': 'ListItem', position: i + 1, name: it.name, item: it.url })) };
+ },
+ itemList(name, items = [], { url } = {}) {
+ return { '@context': 'https://schema.org', '@type': 'ItemList', name, ...(url ? { url } : {}), numberOfItems: items.length, itemListElement: items.map((it, i) => ({ '@type': 'ListItem', position: i + 1, name: it.name, url: it.url, ...(it.description ? { description: it.description } : {}) })) };
+ },
+ faq(pairs = []) {
+ return { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: pairs.map((p) => ({ '@type': 'Question', name: p.q, acceptedAnswer: { '@type': 'Answer', text: p.a } })) };
+ },
+ howTo({ name, description, steps = [] } = {}) {
+ return { '@context': 'https://schema.org', '@type': 'HowTo', name, description, step: steps.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name || `Step ${i + 1}`, text: s.text })) };
+ },
+ article({ headline, url, description, author, datePublished, dateModified, image } = {}) {
+ return { '@context': 'https://schema.org', '@type': 'Article', headline: clip(headline, 110), url, description, ...(author ? { author: { '@type': 'Person', name: author } } : {}), ...(datePublished ? { datePublished } : {}), ...(dateModified ? { dateModified } : {}), ...(image ? { image } : {}), publisher: { '@id': ORG['@id'] } };
+ },
+ video({ name, url, description, thumbnailUrl, uploadDate, duration, contentUrl, embedUrl } = {}) {
+ return { '@context': 'https://schema.org', '@type': 'VideoObject', name, url, description: description || name, thumbnailUrl, uploadDate, ...(duration ? { duration } : {}), ...(contentUrl ? { contentUrl } : {}), ...(embedUrl ? { embedUrl } : {}) };
+ },
+};
+
+/** urls: [{ loc, lastmod?, changefreq?, priority?, alternates?: [{hreflang, href}], images?: [url] }] — absolute http(s) only. */
+function sitemapXml(urls = []) {
+ const rows = urls.filter((u) => u && /^https?:\/\//i.test(u.loc)).map((u) => {
+ const parts = [`<loc>${xml(u.loc)}</loc>`];
+ if (u.lastmod) parts.push(`<lastmod>${xml(String(u.lastmod).slice(0, 10))}</lastmod>`);
+ if (u.changefreq) parts.push(`<changefreq>${xml(u.changefreq)}</changefreq>`);
+ if (u.priority != null) parts.push(`<priority>${Number(u.priority).toFixed(1)}</priority>`);
+ for (const a of u.alternates || []) parts.push(`<xhtml:link rel="alternate" hreflang="${xml(a.hreflang)}" href="${xml(a.href)}"/>`);
+ for (const img of u.images || []) parts.push(`<image:image><image:loc>${xml(img)}</image:loc></image:image>`);
+ return ` <url>${parts.join('')}</url>`;
+ });
+ return `<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">\n${rows.join('\n')}\n</urlset>\n`;
+}
+
+function sitemapIndexXml(maps = []) {
+ const rows = maps.filter((m) => m && m.loc).map((m) => ` <sitemap><loc>${xml(m.loc)}</loc>${m.lastmod ? `<lastmod>${xml(String(m.lastmod).slice(0, 10))}</lastmod>` : ''}</sitemap>`);
+ return `<?xml version="1.0" encoding="UTF-8"?>\n<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n${rows.join('\n')}\n</sitemapindex>\n`;
+}
+
+// Crawlers that build search and AI indexes — welcomed by name so a generic Disallow never hits them.
+const AI_AND_SEARCH_BOTS = ['Googlebot', 'Bingbot', 'DuckDuckBot', 'Applebot', 'GPTBot', 'OAI-SearchBot', 'ChatGPT-User', 'ClaudeBot', 'Claude-Web', 'anthropic-ai', 'PerplexityBot', 'CCBot', 'Google-Extended', 'Amazonbot', 'meta-externalagent', 'YouBot', 'Bytespider'];
+
+function robotsTxt({ sitemaps = [], disallow = [], allow = ['/'], allowAI = true, block = [], crawlDelay } = {}) {
+ const lines = ['User-agent: *'];
+ for (const a of allow) lines.push(`Allow: ${a}`);
+ for (const d of disallow) lines.push(`Disallow: ${d}`);
+ if (crawlDelay) lines.push(`Crawl-delay: ${crawlDelay}`);
+ if (allowAI) {
+ lines.push('');
+ for (const bot of AI_AND_SEARCH_BOTS) lines.push(`User-agent: ${bot}`);
+ lines.push('Allow: /');
+ for (const d of disallow) lines.push(`Disallow: ${d}`);
+ }
+ for (const b of block) { lines.push('', `User-agent: ${b}`, 'Disallow: /'); }
+ lines.push('');
+ for (const s of sitemaps) lines.push(`Sitemap: ${s}`);
+ return lines.join('\n') + '\n';
+}
+
+/** /llms.txt (llmstxt.org): a markdown map of the site for language-model crawlers. */
+function llmsTxt({ name, summary, details, sections = [] } = {}) {
+ const out = [`# ${name}`, '', `> ${String(summary || '').replace(/\s+/g, ' ').trim()}`, ''];
+ if (details) out.push(String(details).trim(), '');
+ for (const sec of sections) {
+ if (!sec || !sec.links || !sec.links.length) continue;
+ out.push(`## ${sec.title}`, '');
+ for (const l of sec.links) out.push(`- [${l.title}](${l.url})${l.note ? `: ${String(l.note).replace(/\s+/g, ' ').trim()}` : ''}`);
+ out.push('');
+ }
+ return out.join('\n');
+}
+
+module.exports = { headTags, jsonLd, jsonLdTag, sitemapXml, sitemapIndexXml, robotsTxt, llmsTxt, clip, esc, absolute, AI_AND_SEARCH_BOTS };