Ctrl K
ComunidadGuías…

src/app/terms/page.tsx

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import Link from "next/link";
import type { Metadata } from "next";
import { readLegalPageConfig } from "@/lib/api/config.server";
import {
  OperatorAnswer,
  OperatorBlock,
} from "@/components/legal/operator-block";
import {
  BUILD_IDENTITY_PATH,
  PROJECT_OPERATOR,
  PROJECT_SOURCE_URL,
} from "@/lib/operator";
import { Card, CardContent } from "@/components/ui/card";
import { PAGE_COLUMN } from "@/components/ui/map-hero";

export const metadata: Metadata = {
  title: "Terms of Service",
  description:
    "The terms that apply to this copy of OpenDiving: which parts speak for the operator who runs it, and which speak for the OpenDiving project.",
};

// Two speakers on one page, and the heading is what tells them apart. Sections 7,
// 9 and 10 speak for the OpenDiving project and name it in their headings;
// everything else speaks for the operator of this copy. Bare "OpenDiving" is the
// name of the software and never a party doing anything — collapsing the two back
// into one voice would hand the project's AGPL liability shield to an operator who
// never agreed to it.
//
// The two speakers are roles, not necessarily two different parties. The project
// may run a copy itself, and on that copy it holds both roles: it speaks through
// the operator's sections as well as its own, and is answerable as operator there
// like anyone else. So nothing on this page says the project never operates
// anything — the headings separate the roles, which is the only separation the
// liability shield needs, and it holds whether one party or two are standing in
// them. See "The terms page has two speakers" in DECISIONS.md.

export default async function TermsPage() {
  // The operator block depends on the instance, and it adds a block rather than
  // rewording a section: nothing short of the API answering `true` earns it, so a
  // self-hosted copy - including one whose API is briefly down - renders these Terms
  // exactly as they have always read. The other thing that does is a clause naming
  // join links wherever registration is said to need an invitation, on the same rule,
  // so a copy that has set none up carries no word about them. So does the grant for
  // proposing to OpenDiving Commons, and every sentence it makes false, which are
  // reworded inline and on any other copy read as they always have.
  const { projectOperated, joinLinks, commonsPrimary } =
    await readLegalPageConfig();

  return (
    <div className={PAGE_COLUMN}>
      <div className="mb-6">
        <h1 className="text-3xl font-bold text-foreground mb-2">
          Terms of Service
        </h1>
        <p className="text-muted-foreground">Last updated: November 2026</p>
      </div>

      <Card>
        <CardContent className="pt-(--card-pad)">
          {projectOperated && (
            <OperatorBlock
              intro={
                <>
                  The sections below leave several things to the operator of the
                  copy you are reading, because the software cannot decide them.
                  On this copy the operator has, and these are the answers. Each
                  names the section it belongs to; nothing here narrows what
                  those sections say.
                </>
              }
            >
              <OperatorAnswer question="The governing law — §12">
                {PROJECT_OPERATOR.jurisdiction}. That is where the operator
                named above primarily operates the Service, which is what §12
                points at.
              </OperatorAnswer>
              <OperatorAnswer question="What this copy costs, and who may register — §2, §3">
                Nothing, and only people who have been invited
                {joinLinks && <> or who follow one of its join links</>}. This
                copy is in a closed beta: it is free of charge, there is no paid
                tier, and registration needs an invitation
                {joinLinks && <> or a join link</>}, which is the state
                §3&rsquo;s second paragraph describes.
              </OperatorAnswer>
              <OperatorAnswer question="What is promised about availability — §8">
                Nothing, and §8 stands exactly as written. This is a beta: the
                operator may change it, take it down for maintenance, or stop
                running it, and no uptime is promised.
              </OperatorAnswer>
              <OperatorAnswer question="What happens to your data if the beta ends — §8, §11">
                You are told before anything is deleted. The operator will email
                the address on each account, and the export in Settings &mdash;
                the one §6 says needs nobody&rsquo;s permission &mdash; keeps
                working for at least 90 days from that message. Accounts and
                everything in them are deleted once that window closes, the same
                way §11 and the Privacy Policy&rsquo;s §7 describe a deletion
                you ask for yourself.
              </OperatorAnswer>
              <OperatorAnswer question="The source of what is running here — §7, AGPLv3 section 13">
                §7 says that offer is the operator&rsquo;s to make. Here it is.
                The complete source of the version running on this copy is
                available on request from{" "}
                <a
                  href={`mailto:${PROJECT_OPERATOR.contactEmail}`}
                  className="underline hover:text-muted-foreground"
                >
                  {PROJECT_OPERATOR.contactEmail}
                </a>
                , and in the project&rsquo;s public repositories at{" "}
                <a
                  href={PROJECT_SOURCE_URL}
                  target="_blank"
                  rel="noreferrer"
                  className="underline hover:text-muted-foreground"
                >
                  github.com/opendiving
                </a>
                . The request is the route that works whatever this copy is
                running, which is why it is written first. Which build is
                running is not a guess:{" "}
                <code className="rounded bg-muted px-1 py-0.5 font-mono text-sm">
                  {BUILD_IDENTITY_PATH}
                </code>{" "}
                reports a{" "}
                <code className="rounded bg-muted px-1 py-0.5 font-mono text-sm">
                  commit
                </code>{" "}
                beside its{" "}
                <code className="rounded bg-muted px-1 py-0.5 font-mono text-sm">
                  version
                </code>
                , and the commit is what identifies the source, because images
                are published on every change to the project&rsquo;s main branch
                as well as on a release and so share one version between them. A{" "}
                <code className="rounded bg-muted px-1 py-0.5 font-mono text-sm">
                  commit
                </code>{" "}
                reading{" "}
                <code className="rounded bg-muted px-1 py-0.5 font-mono text-sm">
                  unknown
                </code>{" "}
                means a build that did not come from the project&rsquo;s own
                publishing, and then the request above is the way to get the
                source.
              </OperatorAnswer>
            </OperatorBlock>
          )}

          <div className="prose max-w-none">
            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                1. Acceptance of Terms
              </h2>
              <p className="text-foreground mb-4">
                OpenDiving is open-source software for logging dives. Anyone can
                download it and run their own copy, and these Terms ship with
                the software, so they describe <strong>this</strong> copy
                &mdash; the one you are reading them on. By using it (&ldquo;the
                Service&rdquo;) you agree to them. If you do not, please do not
                use this copy.
              </p>
              <p className="text-foreground mb-4">
                Two roles appear on this page, and it keeps them apart because
                they do not owe you the same things:
              </p>
              <ul className="list-disc list-inside text-foreground mb-4 space-y-2">
                <li>
                  <strong>The OpenDiving project</strong> &mdash; the people who
                  write the software. Authorship on its own gives the project
                  nothing here: where it is not the one running this copy, it
                  runs no servers for it, receives no data from it, and never
                  sees what you log here.
                </li>
                <li>
                  <strong>The operator of this copy</strong> &mdash; whoever
                  installed OpenDiving on the machine serving you this page and
                  runs it. They decide who may sign up, where the data sits,
                  what it costs if anything, and whether the Service is still
                  here tomorrow.
                </li>
              </ul>
              <p className="text-foreground mb-4">
                Those are two roles rather than necessarily two parties, and one
                party can hold both. The OpenDiving project may run a copy of
                its own, and on such a copy it is the operator as well as the
                author &mdash; bound by everything these Terms say of the
                operator, and speaking through those sections in that role. What
                never merges is the roles themselves: the sections below keep
                them apart whoever is standing in them.
              </p>
              <p className="text-foreground mb-4">
                Every section below speaks for the operator of this copy unless
                its heading says otherwise, and &ldquo;we&rdquo; in those
                sections means the operator. Three sections say otherwise: 7, 9
                and 10 speak for the OpenDiving project and name it in their
                headings. Section 5 is the operator&rsquo;s apart from what it
                says about the OpenDiving project, which names the project where
                it does. Where the word <em>OpenDiving</em> stands alone
                anywhere on this page, it is the name of the software and not a
                party doing anything.
              </p>
              <p className="text-foreground mb-4">
                If you are the one running this copy, that phrase &mdash;{" "}
                <em>the operator of this copy</em> &mdash; is you, and it is
                written out wherever a sentence here turns on something only you
                can answer for. Searching the page for it is the quickest way to
                find what is yours to stand behind or to replace with your own;
                the rule above is what settles anything it misses.
              </p>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                2. Description of Service
              </h2>
              <p className="text-foreground mb-4">
                {commonsPrimary
                  ? "This copy of OpenDiving is a dive log that keeps what you enter to yourself, and the place where OpenDiving Commons, a public pool of dive sites, is edited. The software lets you:"
                  : "This copy of OpenDiving is a private dive log. The software lets you:"}
              </p>
              <ul className="list-disc list-inside text-foreground mb-4 space-y-2">
                <li>
                  Log dives, by hand or from a file exported by a dive computer
                </li>
                <li>
                  Keep your own list of dive sites and plan trips around them
                </li>
                {commonsPrimary && (
                  <li>
                    Propose a dive site of yours, or a change to a Commons site,
                    for OpenDiving Commons, which a reviewer accepts or declines
                  </li>
                )}
                <li>Track your gear and when it is due for service</li>
                <li>
                  Record your diving certifications and the courses behind them
                </li>
                <li>
                  Keep the dive centers, shops and places you stay at once, and
                  name them from your dives, courses and trips
                </li>
                <li>
                  Keep the people you dive with once &mdash; buddies, guides,
                  instructors &mdash; and name them from your dives, trips and
                  courses
                </li>
                <li>
                  Keep the details a dive shop asks for at the desk, and print a
                  summary of them to hand over, or share it as a link that works
                  for a day
                </li>
                <li>
                  Note the species you saw, from public registers of marine life
                </li>
              </ul>
              <p className="text-foreground mb-4">
                What it does not do is worth stating, because a page like this
                one usually claims otherwise: there are no public profiles, no
                feeds, no forums,{" "}
                {commonsPrimary
                  ? "nothing one diver can post for another"
                  : "no comments"}
                , no public ratings and no photo sharing. The rating you give a
                dive is part of your own log. The people you record are private
                records of yours, not connections between accounts.{" "}
                {commonsPrimary
                  ? "An account on this copy gives its holder no view of what you enter, apart from an administrator's, which reads what you propose for OpenDiving Commons."
                  : "An account on this copy gives its holder no view of anything you enter."}{" "}
                This copy shows one person to another in{" "}
                {commonsPrimary ? "four" : "three"} cases only: an invitation,
                which is about your name rather than about anything you entered;
                a check-in link you make, which shows your check-in page to
                whoever holds it, account or not; {!commonsPrimary && "and "}a
                person you link to an account here, which shows you that
                account&rsquo;s current username and puts its identifier in your
                own export
                {commonsPrimary &&
                  "; and a proposal for OpenDiving Commons, which shows what you proposed and your name to whoever reviews it, and publishes what is accepted, without your name"}
                . Section 5 says exactly what each is, and what follows from the
                rest.
              </p>
              <p className="text-foreground mb-4">
                Whether this copy costs anything, who may register for it, and
                how long it keeps running are decisions for the operator of this
                copy, not for the software. The software is free in the sense
                section 7&rsquo;s licence means, which says nothing about what
                an operator charges.
              </p>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                3. User Accounts and Registration
              </h2>
              <p className="text-foreground mb-4">
                Using this copy for anything beyond the pages you can read now
                needs an account. You agree to:
              </p>
              <ul className="list-disc list-inside text-foreground mb-4 space-y-2">
                <li>
                  Register with an email address you actually control &mdash; it
                  is how you sign in and how the operator of this copy reaches
                  you
                </li>
                <li>
                  Keep that mailbox secure. There is no password here: you sign
                  in with a link or a code sent to your email, with a passkey,
                  or &mdash; where this copy offers it &mdash; with Google. So
                  whoever can read that mailbox, use that passkey, or get into
                  that Google account can sign in as you. Keep any API key you
                  make the same way: whoever holds one can act as you, within
                  what that key allows, until it expires or you revoke it
                </li>
                <li>
                  Tell the operator of this copy promptly if you think someone
                  else has got into your account
                </li>
                <li>
                  Accept responsibility for what is done under your account
                </li>
              </ul>
              <p className="text-foreground mb-4">
                Where the operator of this copy has closed it to new accounts,
                registering also needs an invitation, and the address you
                register with must be the one that was invited, unless you came
                by a member&rsquo;s invite link
                {joinLinks ? (
                  <>
                    {" "}
                    or by one of the join links the operator has published,
                    either of which lets in whoever follows it
                  </>
                ) : (
                  <>, which lets in whoever follows it</>
                )}
                . The exception is the very first account on a copy that has
                none: whoever signs in first is its operator, and needs no
                invitation to do so.
              </p>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                4. Safety and Diving Responsibilities
              </h2>
              <div className="rounded-md border border-warning/40 bg-warning/10 p-4 mb-4">
                <p className="font-medium text-warning">
                  <strong>Important Safety Notice:</strong> OpenDiving is
                  software for logging dives. It does not provide diving
                  instruction, safety advice, or emergency services.
                </p>
              </div>
              <p className="text-foreground mb-4">
                You acknowledge and agree that:
              </p>
              <ul className="list-disc list-inside text-foreground mb-4 space-y-2">
                <li>Diving is an inherently risky activity</li>
                <li>
                  You are solely responsible for your diving safety and
                  decisions
                </li>
                <li>
                  You will only dive within your certification and experience
                  level
                </li>
                <li>
                  You will follow proper diving safety protocols and procedures
                </li>
                <li>
                  Nothing this software works out or displays &mdash; depths,
                  times, gas figures, exposure &mdash; is a substitute for your
                  training, your dive computer and your own judgement
                </li>
                <li>
                  {commonsPrimary
                    ? "What you type in, and what is imported from a dive computer, is kept as it arrived, and nobody checks it, with one exception: a reviewer reads what you propose for OpenDiving Commons, and may correct it or decline it. Accepting a record says it belongs in the pool, and nothing about whether a site is safe to dive"
                    : "What you type in, and what is imported from a dive computer, is stored as given. Nobody checks it, and nothing here corrects it"}
                </li>
                <li>
                  Neither the OpenDiving project nor the operator of this copy
                  is liable for diving-related injuries or incidents: section 9
                  is the project&rsquo;s position, section 8 the
                  operator&rsquo;s
                </li>
              </ul>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                5. User Content and Conduct
              </h2>
              <p className="text-foreground mb-4">
                What you enter into this copy &mdash; dives, dive drafts, sites,
                trips, gear, courses, certifications, contacts, people, tags,
                your check-in details, notes, and the files you import &mdash;{" "}
                {commonsPrimary
                  ? "is your responsibility, and stays yours unless you dedicate it to the public domain by proposing it for OpenDiving Commons."
                  : "is yours, and you are responsible for it."}{" "}
                You agree not to use this copy to hold or send:
              </p>
              <ul className="list-disc list-inside text-foreground mb-4 space-y-2">
                <li>
                  Anything unlawful where you are, or where the operator of this
                  copy is
                </li>
                <li>
                  Anything you have no right to hold, including other
                  people&rsquo;s personal data you have no basis for keeping and
                  material that infringes someone else&rsquo;s rights
                </li>
                <li>
                  Anything aimed at breaking into, overloading or disrupting
                  this copy, or at working around the limits it puts on requests
                </li>
              </ul>
              <p className="text-foreground mb-4">
                Three things this copy expects you to hold can be somebody
                else&rsquo;s data, and holding any of them is inside the line
                above rather than an exception to it. A person is the plainest
                case: a buddy&rsquo;s or an instructor&rsquo;s name, and
                whatever else you choose to note, kept as your own record of who
                you dived with. An emergency contact is a name and a number kept
                so a dive shop can reach someone if you get into trouble. A
                contact is usually a business&rsquo;s own listing &mdash; the
                number and address on its sign &mdash; but it can be a person,
                the friend whose flat you stayed in, kept as your own record of
                where you dived and slept. Each is a basis for keeping what you
                enter. Telling a person you have written them down here is yours
                to do, not this copy&rsquo;s.
              </p>
              <p className="text-foreground mb-4">
                {commonsPrimary
                  ? "Every right you have in what you enter stays yours, apart from what you dedicate by proposing it, as the paragraphs below say."
                  : "You keep every right you have in what you enter."}{" "}
                Nothing here gives the OpenDiving project any rights in your
                content as the software&rsquo;s author &mdash; writing a program
                grants no claim on what is entered into a copy of it, and where
                the project is not the one running this copy it receives no data
                from it and never sees what you log. Where the project is the
                one running it,{" "}
                {commonsPrimary
                  ? "it holds what the paragraphs below grant the operator, may use what has been dedicated to the public domain as anyone may, and holds nothing beyond that."
                  : "it holds what the next paragraph grants the operator and nothing beyond that."}
              </p>
              <p className="text-foreground mb-4">
                {commonsPrimary
                  ? "Proposals aside, you grant the operator of this copy no more than what is technically needed to run the Service for you"
                  : "You grant the operator of this copy only the permission technically needed to run the Service for you"}{" "}
                &mdash; to store your entries, show them back to you, and
                include them in exports you ask for.{" "}
                {commonsPrimary
                  ? "Nothing you enter is published, shared with other users, or shown to anyone else by this software, except through a check-in link you make or a proposal you send for OpenDiving Commons."
                  : "Your entries are not published, shared with other users, or shown to anyone else by this software, except through a check-in link you make."}{" "}
                Printing your check-in summary and handing it to a dive shop is
                you showing your own entries to someone, not this copy showing
                them, and the permission above is unchanged by it.{" "}
                {commonsPrimary
                  ? "The next four paragraphs are the four things"
                  : "The next three paragraphs are the three things"}{" "}
                this copy does show one person to another: an invitation, which
                is not an entry; a check-in link, which is;{" "}
                {!commonsPrimary && "and "}a person linked to an account, which
                shows you something of theirs rather than anything of yours
                {commonsPrimary &&
                  "; and a proposal, which is an entry, and the one thing here that can end up public"}
                .
              </p>
              <p className="text-foreground mb-4">
                Where this copy is invite-only and you invite somebody to it,
                you grant the operator the further permission that act needs,
                and only that: to tell the address you invited that <em>you</em>{" "}
                invited them, naming you, and to tell you whether that address
                went on to register here; and, where you make an invite link, to
                show your name to whoever opens it, and to show you the name on
                the account of anyone who creates one through it. Nothing you
                have logged is involved &mdash; no dive, site, trip, gear item,
                course, certification, contact, person or tag &mdash; and nobody
                you have not invited learns anything either way, except that
                whoever holds your invite link, however it reached them, sees
                your name. And where you create your account through a
                member&rsquo;s invite link, you grant the operator the
                permission that needs, and only that: to show that member the
                name on your account, as it is and as you change it, for as long
                as both accounts exist &mdash; never your address, and nothing
                you log. The privacy policy&rsquo;s section 4.8 sets out the
                same in its own register.
              </p>
              <p className="text-foreground mb-4">
                Where you make a check-in link, you grant the operator the
                further permission that act needs, and only that: to show your
                check-in page &mdash; the details, figures and card fronts it
                prints &mdash; to whoever holds the link, until it expires a day
                after you made it or you revoke it or make another. That is this
                copy showing your entries to someone, at your request, and
                nothing else you have logged is involved. The privacy
                policy&rsquo;s section 4.9 sets out the same in its own
                register.
              </p>
              <p className="text-foreground mb-4">
                Where you link a person you recorded to an account on this copy
                &mdash; by typing its username, or by importing a file that
                names it &mdash; you grant the operator the further permission
                that act needs, and only that: to tell you whether an account
                with that username exists here, to show you its current username
                beside your person for as long as the link stands, and to write
                that account&rsquo;s identifier, which also encodes when the
                account was created, into the exports you ask for. Nothing you
                have logged is shown to that account, and it is told nothing
                either way. The same holds the other way round: anyone here who
                types your username can link a person to your account, and
                learns that it exists, its current username and its identifier,
                and nothing else. The privacy policy&rsquo;s section 4.10 sets
                out the same in its own register.
              </p>
              {commonsPrimary && (
                <p className="text-foreground mb-4">
                  Where you propose a dive site of yours, or a change to a
                  Commons site, for OpenDiving Commons, you grant the operator
                  the further permission that act needs, and only that: to show
                  whoever reviews it what you proposed, your message, the name
                  on your account and how many of your proposals have been
                  accepted and declined; to correct it before accepting it; to
                  keep the proposal, tied to your account, until your account
                  goes; and to publish what is accepted, in the pool and in the
                  public copies of it. The words you tick go further than a
                  permission. In them you say that what you propose is from your
                  own diving and is not copied from another database, app or
                  publication, and you dedicate it to the public domain under{" "}
                  <a
                    href="https://creativecommons.org/publicdomain/zero/1.0/"
                    target="_blank"
                    rel="noreferrer"
                    className="underline hover:text-muted-foreground"
                  >
                    CC0 1.0
                  </a>
                  , which gives up your rights in it, for everyone, as far as
                  the law allows. What is accepted is public, never says who
                  proposed it, and stays if you delete your account; a change
                  accepted into a record from another source leaves that record
                  under its source&rsquo;s licence. What is declined or
                  withdrawn publishes nothing, and a decline always comes with a
                  reason. Anyone can report a Commons record to the operator of
                  this copy, by the way section 13 gives, and a report is
                  answered by changing the record; a record cannot yet be
                  removed. The privacy policy&rsquo;s section headed{" "}
                  <em>Proposing for OpenDiving Commons</em> sets out the same in
                  its own register.
                </p>
              )}
              <p className="text-foreground mb-4">
                That permission is deliberately no wider than what running the
                Service takes, and the OpenDiving project holds itself to
                keeping it that way: if a version of the software ever adds a
                way to show what you entered to someone else, that feature
                arrives with a permission of its own written here and a section
                of its own on the privacy page, rather than leaning on this one.{" "}
                {commonsPrimary
                  ? "The invitation, check-in link, linking and proposal grants above are that rule being kept, not exceptions to it."
                  : "The invitation, check-in link and linking grants above are that rule being kept, not exceptions to it."}
              </p>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                6. Privacy and Data Protection
              </h2>
              <p className="text-foreground mb-4">
                What this copy collects, what it keeps in your browser, how long
                it keeps any of it, and who is answerable for it are set out in
                the{" "}
                <Link
                  href="/privacy"
                  className="underline hover:text-muted-foreground"
                >
                  Privacy Policy
                </Link>
                , which describes this copy the same way these Terms do.
              </p>
              <p className="text-foreground mb-4">
                Two things worth knowing without reading it:{" "}
                {commonsPrimary
                  ? "exporting what you have entered, your proposals for OpenDiving Commons aside,"
                  : "exporting everything you have entered"}{" "}
                and deleting your account are both buttons in Settings, and
                neither needs anyone&rsquo;s permission.
              </p>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                7. Open Source License (the OpenDiving project)
              </h2>
              <p className="text-foreground mb-4">
                This section is about the software rather than about this
                copy&rsquo;s operation, and it speaks for the OpenDiving
                project. OpenDiving is published under the GNU Affero General
                Public License, version 3. Under it anyone may run, study, copy,
                modify and redistribute the software, on the conditions the
                licence sets out &mdash; chiefly that a derived version carries
                the same licence and stays source-available.
              </p>
              <p className="text-foreground mb-4">
                The licence also gives you something as someone merely using a
                copy over a network: if the operator of this copy has modified
                OpenDiving, section 13 of the AGPLv3 requires them to offer you
                the source of their modified version. That offer is the
                operator&rsquo;s to make rather than the author&rsquo;s &mdash;
                including where the project runs this copy, and so owes it as
                operator. The project publishes its own source publicly, and
                that is not necessarily what is running here.
                {projectOperated && (
                  <>
                    {" "}
                    On this copy the offer is made, under{" "}
                    <em>Who Runs This Copy</em> at the top of this page, along
                    with what identifies the build running here. The public
                    repositories this section speaks of are named there too.
                    That offer still leads with the request rather than the
                    link, because what section 13 owes you is the source of the
                    version running here, which a repository on its own does not
                    pin and the commit named there does.
                  </>
                )}
              </p>
              <p className="text-foreground mb-4">
                The licence text ships with the software and is the authority on
                all of this. Nothing in these Terms adds to it or takes anything
                away from it.
              </p>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                8. Service Availability and Modifications
              </h2>
              <p className="text-foreground mb-4">
                Whether this copy is available, and for how long, is the
                operator of this copy&rsquo;s to decide. They may modify or
                discontinue features, take it down for maintenance, or stop
                running it altogether. Nothing in the software guarantees
                uptime, and the OpenDiving project promises none of it as the
                software&rsquo;s author: where it does not run this copy it
                could not keep this one up if it wanted to, and where it does,
                the promise would be the operator&rsquo;s to make and it has
                made none.
              </p>
              <p className="text-foreground mb-4">
                These Terms are part of the software, so they change when the
                software changes and ship in the same release. There is no
                mechanism here that emails anyone about a change to them, and
                this page is not going to promise one it does not have. What
                exists instead is the software&rsquo;s public history, where
                every earlier version of this page can be read; which version
                you are reading depends on which release of OpenDiving this copy
                is running.
              </p>
              <p className="text-foreground mb-4">
                This copy of OpenDiving is provided as-is by its operator, who
                is responsible for its operation and for the data it holds. The
                operator may replace this paragraph with its own terms.
                {projectOperated && (
                  <>
                    {" "}
                    This copy&rsquo;s operator has not replaced it, and has said
                    under <em>Who Runs This Copy</em> what it promises about
                    availability and what happens to your data if this beta
                    ends.
                  </>
                )}
              </p>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                9. Limitation of Liability (the OpenDiving project)
              </h2>
              <p className="text-foreground mb-4">
                This section speaks for the OpenDiving project, not for the
                operator of this copy. To the maximum extent permitted by law,
                the OpenDiving project, its contributors, and its copyright
                holders shall not be liable to you for:
              </p>
              <ul className="list-disc list-inside text-foreground mb-4 space-y-2">
                <li>
                  Any indirect, incidental, special, or consequential damages
                </li>
                <li>Loss of data, profits, or business interruption</li>
                <li>Diving accidents or injuries of any kind</li>
                <li>
                  Anything you decided on the strength of what the Service
                  showed you
                </li>
                <li>
                  Content entered into any copy of OpenDiving, and interactions
                  between the users of a copy where an operator has enabled any
                </li>
              </ul>
              <p className="text-foreground mb-4">
                This limitation is agreed for the benefit of the OpenDiving
                project and its contributors. The contributors are not parties
                to these Terms and rely on this section as third parties; so
                does the project itself, wherever it is not the one running this
                copy. Where it is, it is a party in the operator&rsquo;s role,
                and this section still limits only what it owes you as the
                software&rsquo;s author. It adds to, and does not narrow,
                sections 15 to 17 of the AGPLv3.
              </p>
              <p className="text-foreground mb-4">
                The operator of this copy speaks in a different role and says
                nothing here, and that holds even where the project is the one
                running this copy: what is limited above is the author&rsquo;s
                liability, never an operator&rsquo;s. Their position is the last
                paragraph of section 8, and it is theirs to replace.
              </p>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                10. Indemnification (the OpenDiving project)
              </h2>
              <p className="text-foreground mb-4">
                You agree to indemnify and hold harmless the OpenDiving project
                and its contributors &mdash; not the operator of this copy
                &mdash; from any claims, damages, or expenses arising from your
                use of this copy of OpenDiving or your violation of these Terms.
              </p>
              <p className="text-foreground mb-4">
                This section does not cover the operator of this copy. They are
                not indemnified by it, and it reaches the project no further
                where the project is the one running this copy: what is
                indemnified is the writing of the software, never the running of
                a copy of it. An operator who wants an indemnity has to ask for
                one in terms of their own.
              </p>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                11. Termination
              </h2>
              <p className="text-foreground mb-4">
                The operator of this copy may suspend or close your account for
                a breach of these Terms, and may stop running this copy
                altogether. You can delete your own account at any time in
                Settings; the Privacy Policy says what happens to your data when
                you do.
              </p>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                12. Governing Law
              </h2>
              <p className="text-foreground mb-4">
                These Terms shall be governed by and construed in accordance
                with the laws of the jurisdiction where the operator of this
                copy primarily operates the Service, without regard to conflict
                of law provisions.
                {projectOperated && (
                  <>
                    {" "}
                    On this copy that is {PROJECT_OPERATOR.jurisdiction}, named
                    with the operator under <em>Who Runs This Copy</em> at the
                    top of this page.
                  </>
                )}
              </p>
            </section>

            <section className="mb-8">
              <h2 className="text-2xl font-semibold text-foreground mb-4">
                13. Contact Information
              </h2>
              <p className="text-foreground mb-4">
                For anything to do with this copy &mdash; your account, your
                data, {commonsPrimary && "a report about a Commons record, "}
                what these Terms mean for you, or the Service being down &mdash;
                the person to ask is whoever runs this copy of OpenDiving. The{" "}
                <Link
                  href="/support"
                  className="underline hover:text-muted-foreground"
                >
                  support page
                </Link>{" "}
                is how this copy offers to reach them.
              </p>
              <p className="text-foreground mb-4">
                For a defect in the software itself &mdash; a bug, or a sentence
                on a page like this one that the software does not live up to
                &mdash; the OpenDiving project is who to tell, in its public
                source repository. As the software&rsquo;s author the project
                cannot answer for how a copy it does not run is run: it has no
                access to that copy and holds none of the data in it. Where the
                project is this copy&rsquo;s operator too, questions about how
                this copy is run still go the way the paragraph above says, not
                to the repository.
              </p>
              <p className="text-foreground mb-4">
                There is deliberately no project address printed here.{" "}
                {projectOperated && (
                  <>
                    None, that is, for the project as the software&rsquo;s
                    author: the address under <em>Who Runs This Copy</em>{" "}
                    belongs to this copy&rsquo;s operator, which is the role
                    that can act on what follows.{" "}
                  </>
                )}
                A question about your own account belongs to whoever runs this
                copy, and the support page above is how to reach them &mdash; on
                a copy the project runs itself, that page reaches the project in
                the role that can act. Sent to the author instead, such a
                question reaches people who cannot. How quickly the operator of
                this copy answers, and whether they do, is theirs to say rather
                than this page&rsquo;s.
              </p>
            </section>
          </div>

          <div className="mt-8 pt-8 border-t border-border">
            <div className="flex flex-col sm:flex-row sm:items-center sm:justify-between">
              <p className="text-sm text-muted-foreground">
                These Terms are effective as of November 2026 and apply to this
                copy of OpenDiving.
              </p>
              <Link
                href="/"
                className="mt-4 sm:mt-0 text-sm font-medium text-foreground underline hover:text-muted-foreground"
              >
                Back to OpenDiving
              </Link>
            </div>
          </div>
        </CardContent>
      </Card>
    </div>
  );
}