@koehler8/cms-ext-compliance 1.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +68 -0
- package/components/CookieConsent.vue +264 -0
- package/components/Cookies.vue +497 -0
- package/components/Legal.vue +42 -0
- package/components/Privacy.vue +425 -0
- package/components/Terms.vue +852 -0
- package/components/index.js +15 -0
- package/extension.config.json +52 -0
- package/index.js +33 -0
- package/package.json +31 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<section class="legal-page section-shell" data-analytics-section="privacy">
|
|
3
|
+
<div class="container legal-page__container">
|
|
4
|
+
<article class="legal-card">
|
|
5
|
+
<header class="legal-card__header">
|
|
6
|
+
<h2 class="legal-card__title">{{ headerTitle }}</h2>
|
|
7
|
+
<span class="legal-divider" aria-hidden="true"></span>
|
|
8
|
+
<p class="legal-card__meta">Last revised: {{ lastUpdated }}</p>
|
|
9
|
+
</header>
|
|
10
|
+
<div class="legal-content">
|
|
11
|
+
<template v-if="hasCustomContent">
|
|
12
|
+
<p v-if="customIntro">{{ customIntro }}</p>
|
|
13
|
+
<div
|
|
14
|
+
v-if="customBody"
|
|
15
|
+
class="legal-rich-text"
|
|
16
|
+
v-html="customBody"
|
|
17
|
+
/>
|
|
18
|
+
<section
|
|
19
|
+
v-for="(section, index) in customSections"
|
|
20
|
+
:key="section.id || index"
|
|
21
|
+
class="legal-section"
|
|
22
|
+
>
|
|
23
|
+
<h3 v-if="section.title">{{ section.title }}</h3>
|
|
24
|
+
<p v-if="section.summary">{{ section.summary }}</p>
|
|
25
|
+
<div
|
|
26
|
+
v-if="section.body"
|
|
27
|
+
class="legal-rich-text"
|
|
28
|
+
v-html="section.body"
|
|
29
|
+
/>
|
|
30
|
+
<p
|
|
31
|
+
v-for="(paragraph, paragraphIndex) in section.paragraphs"
|
|
32
|
+
:key="`paragraph-${paragraphIndex}`"
|
|
33
|
+
>
|
|
34
|
+
{{ paragraph }}
|
|
35
|
+
</p>
|
|
36
|
+
<ul v-if="section.list.length">
|
|
37
|
+
<li
|
|
38
|
+
v-for="(item, itemIndex) in section.list"
|
|
39
|
+
:key="`item-${itemIndex}`"
|
|
40
|
+
>
|
|
41
|
+
{{ item }}
|
|
42
|
+
</li>
|
|
43
|
+
</ul>
|
|
44
|
+
</section>
|
|
45
|
+
</template>
|
|
46
|
+
<template v-else>
|
|
47
|
+
<p>
|
|
48
|
+
This Privacy Policy constitutes a part of {{siteName}}’s Terms and Conditions (the “Terms”).<br>
|
|
49
|
+
The terms used in this Privacy Policy shall have the same meanings as in the Terms except
|
|
50
|
+
as otherwise provided herein.<br>
|
|
51
|
+
This Privacy Policy explains how {{siteName}} and {{siteName}}’s Operators collect, use,
|
|
52
|
+
process, disclose, share, transfer, and protect personal information obtained through {{siteName}}
|
|
53
|
+
and its partners. The terms “we,” “us,” and “our” refer to {{siteName}} and {{siteName}}’s
|
|
54
|
+
Operators. When we ask for certain personal information from users, it is because we are
|
|
55
|
+
required by applicable laws or government orders to collect such information or it is relevant
|
|
56
|
+
for our specified purposes. Please refer to the separate Cookies Policy for the exact use of
|
|
57
|
+
cookies.<br>
|
|
58
|
+
Please carefully read the full content of this Privacy Policy. When visiting the {{siteName}}
|
|
59
|
+
website, regardless of whether or not you register for or log in, you acknowledge,
|
|
60
|
+
understand, and consent to all articles described in this Privacy Policy. We will not use your
|
|
61
|
+
personal information for any purpose not covered in this Privacy Policy, the Cookies Policy
|
|
62
|
+
or the Terms without prior notification to you and your consent.<br>
|
|
63
|
+
This Privacy Policy has incorporated elements from the General Data Protection Regulation
|
|
64
|
+
(GDPR) as we act in accordance with its personal information processing rules within the
|
|
65
|
+
European Economic Area (EEA). We utilize standard contract clauses, rely on the European
|
|
66
|
+
Commission's adequacy decisions about certain countries, as applicable, and obtain your
|
|
67
|
+
consent for these data transfers to third countries if required by applicable laws.<br>
|
|
68
|
+
<br>
|
|
69
|
+
1. TYPES OF DATA WE COLLECT<br>
|
|
70
|
+
The types of Personal Data that we collect directly from you or third parties depend on the
|
|
71
|
+
circumstances of collection and the nature of the service requested or transaction
|
|
72
|
+
undertaken. It may include (but is not limited to):<br>
|
|
73
|
+
(a) personal information that links back to an individual, e.g., name, date of birth, and other
|
|
74
|
+
personal identification numbers;<br>
|
|
75
|
+
(b) contact information, e.g., address, phone number and email address, Ethereum wallet
|
|
76
|
+
address;<br>
|
|
77
|
+
(c) technical information, e.g., IP address for API services and logins<br>
|
|
78
|
+
(d) statistical data, e.g., hits to the website.<br>
|
|
79
|
+
<br>
|
|
80
|
+
2. HOW DO WE COLLECT PERSONAL DATA?<br>
|
|
81
|
+
This Privacy Policy covers any Personal Data provided to us:<br>
|
|
82
|
+
(a) when you engage with our products and services;<br>
|
|
83
|
+
(b) when you create an account with us;<br>
|
|
84
|
+
(c) under any other contractual agreement or arrangement;<br>
|
|
85
|
+
Some of the other ways we may collect Personal Data shall include (but is not limited to):<br>
|
|
86
|
+
(a) communications with you via telephone, letter, fax, and email;<br>
|
|
87
|
+
(b) when you visit our website;<br>
|
|
88
|
+
(c) when you contact us in person;<br>
|
|
89
|
+
(d) when we contact you in person;<br>
|
|
90
|
+
(e) when we collect information about you from third parties (such as the social graphs
|
|
91
|
+
available from social media companies); and other channels including our support helpdesk.<br>
|
|
92
|
+
(f) Possible extrapolation of other information by processing the data.<br>
|
|
93
|
+
<br>
|
|
94
|
+
3. WHAT OTHER DATA DO WE COLLECT?<br>
|
|
95
|
+
From our website and services, we collect your Personal Data in the following ways:<br>
|
|
96
|
+
(a) IP address We use your IP address to help diagnose problems with our server and to
|
|
97
|
+
administer our website. IP addresses are not linked to personally identifiable information.<br>
|
|
98
|
+
(b) Cookies<br>
|
|
99
|
+
A cookie is an element of data that a website can send to your browser, which may then
|
|
100
|
+
store it on your system. We use cookies in some of our pages to store your preferences and
|
|
101
|
+
record session information. The information that we collect is then used to ensure a more
|
|
102
|
+
personalized service level for our users.<br>
|
|
103
|
+
Please refer to our Cookie Policy for the exact information on how we use cookies.<br>
|
|
104
|
+
<strong>Cookie Consent:</strong> We respect your privacy and have implemented a cookie consent mechanism.
|
|
105
|
+
When you first visit our website, you will be presented with a banner allowing you to accept or decline
|
|
106
|
+
the use of cookies and analytics tracking (including Google Analytics). We will only load
|
|
107
|
+
these tracking scripts if you explicitly accept. You can change your consent preferences at any time
|
|
108
|
+
through our <a href="/cookies">Cookie Policy page</a>.<br>
|
|
109
|
+
Information collected from cookies is used by us to evaluate the effectiveness of our site,
|
|
110
|
+
analyze trends, and manage the platform. The information collected from cookies allows us
|
|
111
|
+
to determine such things as which parts of our site are most visited and difficulties our
|
|
112
|
+
visitors may experience in accessing our site.<br>
|
|
113
|
+
With this knowledge, we can improve the quality of your experience on the platform by
|
|
114
|
+
recognizing and delivering more of the most desired features and information, as well as by
|
|
115
|
+
resolving access difficulties. We may also use cookies and/or a technology known as web
|
|
116
|
+
bugs or clear gifs, which are typically stored in emails to help us confirm your receipt of, and
|
|
117
|
+
response to our emails and to provide you with a more personalized experience when using
|
|
118
|
+
our site, or allow third-party service providers to do this.<br>
|
|
119
|
+
Log in information can potentially be saved in cookies. Therefore it is important that you
|
|
120
|
+
prevent unauthorized access to your password and your computer. If you use a shared
|
|
121
|
+
computer, you should always log out properly and clear the browser for cookies.<br>
|
|
122
|
+
(c) User feedback form<br>
|
|
123
|
+
Our feedback form requires you to give us contact information (e.g. your name and email
|
|
124
|
+
address) so that we can respond to your comments. We use your contact information from
|
|
125
|
+
the registration form to send you information about our company. Your contact information is
|
|
126
|
+
also used to contact you where necessary.<br>
|
|
127
|
+
(d) Site tracking<br>
|
|
128
|
+
We also use third-party service provider(s), to assist us in better understanding the use of
|
|
129
|
+
our site. Our service provider(s) will place cookies on the hard drive of your computer and
|
|
130
|
+
will receive information that we select, for example, how visitors navigate around our site,
|
|
131
|
+
what pages are browsed and general transaction information. Our service provider(s)
|
|
132
|
+
analyzes this information and provides us with aggregate reports. The information and
|
|
133
|
+
analysis provided by our service provider(s) will be used to assist us in better understanding
|
|
134
|
+
our visitors’ interests in our site and how to better serve those interests. The information
|
|
135
|
+
collected by our service provider(s) may be linked to and combined with information that we
|
|
136
|
+
collect about you while you are using the platform. Our service provider(s) is/are
|
|
137
|
+
contractually restricted from using information they receive from our Site other than to assist
|
|
138
|
+
us.<br>
|
|
139
|
+
<br>
|
|
140
|
+
4. WHAT DO WE USE YOUR PERSONAL DATA FOR?<br>
|
|
141
|
+
We may use your Personal Data for the following “Core Purposes”:<br>
|
|
142
|
+
(a) to enable us to provide our services and perform our services to you;<br>
|
|
143
|
+
(b) to protect the safety and well being of yourself and/or other customers;<br>
|
|
144
|
+
(c) to investigate and respond to claims and inquiries from you;<br>
|
|
145
|
+
(d) for business development purposes such as statistical and marketing analysis, systems
|
|
146
|
+
testing, maintenance and development, customer surveys or to help us in any future
|
|
147
|
+
dealings with you, for example by identifying your requirements and preference;<br>
|
|
148
|
+
(e) to comply with any legal or regulatory requirements; and/ or<br>
|
|
149
|
+
(f) for all other purposes ancillary to any of the purposes stated above. Ancillary to these
|
|
150
|
+
“Core Purposes”, we reserve the right to use your data in the following ways:<br>
|
|
151
|
+
(g) to communicate offers, product, services and information on products and activities;<br>
|
|
152
|
+
(h) marketing/cross-marketing and communicating with you in relation to products and
|
|
153
|
+
services offered by us and our service partners as well as our appointed agents; and/or<br>
|
|
154
|
+
(i) for all other company-related purposes ancillary to any of the purposes stated above.<br>
|
|
155
|
+
<br>
|
|
156
|
+
5. ACCESSING / CORRECTING / UPDATING YOUR PERSONAL DATA<br>
|
|
157
|
+
Depending on your country of residence and its legislation, you may have the right to
|
|
158
|
+
request from us a copy of your personal data, as well as to delete your personal data, make
|
|
159
|
+
amendments to it or restrict its processing. We will endeavour to provide the information
|
|
160
|
+
back to you as soon as practicable. However, we also reserve the right to validate all
|
|
161
|
+
requests for the authenticity of the request.<br>
|
|
162
|
+
You may be requested to provide us with your personal data, such as KYC documents in
|
|
163
|
+
specific situations to comply with legal and regulatory requirements or in case of a dispute
|
|
164
|
+
between you and {{siteUrl}}. In such cases {{siteUrl}} expects you to provide us
|
|
165
|
+
with such requested information for the further processing and actions.<br>
|
|
166
|
+
We hope to ensure that you are fully aware of the data protection rights that you enjoy.<br>
|
|
167
|
+
Unless otherwise required by law or government orders, each User has the following rights:<br>
|
|
168
|
+
5.1 Right of Access<br>
|
|
169
|
+
You have the right to access or obtain copies of your personal information. We may charge a
|
|
170
|
+
reasonable fee for providing the access service.<br>
|
|
171
|
+
5.2 Right to Rectification<br>
|
|
172
|
+
You have the right to correct your personal information that you deem inaccurate. You also
|
|
173
|
+
have the right to ask us to complete the personal information that you deem incomplete
|
|
174
|
+
within a reasonable limit.<br>
|
|
175
|
+
5.3 Right to Erasure (Right to be Forgotten)<br>
|
|
176
|
+
You have the right to request the erasure of your personal data under certain circumstances.<br>
|
|
177
|
+
5.4 Right to Restriction of Processing<br>
|
|
178
|
+
Under certain circumstances as required by law or as specifically reminded by us, you have
|
|
179
|
+
the right to request us to restrict the processing of your personal information; however, you
|
|
180
|
+
understand that such restriction of the processing may prevent us from providing you with
|
|
181
|
+
some of {{siteName}}’s services.<br>
|
|
182
|
+
5.5 Right to Object<br>
|
|
183
|
+
Under certain circumstances as required by law or as specifically reminded by us, you have
|
|
184
|
+
the right to object to the processing of your personal information; however, you understand
|
|
185
|
+
that such objection of the processing may prevent us from providing you with some of {{siteName}}’s services.<br>
|
|
186
|
+
5.6 Right to Data Portability<br>
|
|
187
|
+
Under certain circumstances as required by law or as specifically reminded by us, you have
|
|
188
|
+
the right to request us to transmit the personal information that we collect to another body, or
|
|
189
|
+
directly to you. We may charge a reasonable fee for providing the transmission service.<br>
|
|
190
|
+
<br>
|
|
191
|
+
6. WITHDRAWING CONSENT<br>
|
|
192
|
+
Please note that it is obligatory for the Company to process your Personal Data for the Core
|
|
193
|
+
Purpose as stated above, without which some services or features provided by {{siteName}}
|
|
194
|
+
may be affected. If we do not have your consent to process your Personal Data for Ancillary
|
|
195
|
+
Purposes, we will not be able to keep you updated about our future, new and/or enhanced
|
|
196
|
+
services and products.<br>
|
|
197
|
+
Nevertheless, you may stop receiving promotional activities by:<br>
|
|
198
|
+
(a) unsubscribing from the mailing list(s);<br>
|
|
199
|
+
(b) editing the relevant account settings to unsubscribe; or<br>
|
|
200
|
+
(c) sending a request via our Contact Us form on {{siteUrl}}<br>
|
|
201
|
+
<br>
|
|
202
|
+
7. TO WHOM DO WE DISCLOSE YOUR PERSONAL DATA?<br>
|
|
203
|
+
We will not trade or sell your Personal Data to third parties. Your Personal Data shall only be
|
|
204
|
+
disclosed or transferred to the following third parties appointed or authorised by the
|
|
205
|
+
Company for the fulfilment of the Purpose of: (a) data warehouses; (b) IT service providers;
|
|
206
|
+
(c) data analytics and/or marketing agency; (d) legal bodies as permitted or required by law
|
|
207
|
+
such as in compliance with a warrant or subpoena issued by a court of competent
|
|
208
|
+
jurisdiction; and/or (e) regulatory authorities applicable to you; and/or<br>
|
|
209
|
+
(f) safety and security personnel. In addition to the above, your Personal Data may also be
|
|
210
|
+
disclosed or transferred to any of the Company’s actual and potential assignee, transferee or
|
|
211
|
+
acquirer (including our affiliates and subsidiaries) or our business, assets or group
|
|
212
|
+
companies, or in connection with any corporate restructuring or exercise including our
|
|
213
|
+
restructuring to transfer the business, assets and/or liabilities. We shall take practical steps
|
|
214
|
+
to ensure that their employees, officers, agents, consultants, contractors and other third
|
|
215
|
+
parties mentioned above who are involved in the collection, use and disclosure of your
|
|
216
|
+
Personal Data will observe and adhere to the terms of this Privacy Statement.<br>
|
|
217
|
+
<br>
|
|
218
|
+
8. HOW LONG WILL WE RETAIN YOUR PERSONAL DATA?<br>
|
|
219
|
+
The Company may store data in global hosting providers with servers across various regions
|
|
220
|
+
and we shall take all reasonable steps to ensure that all Personal Data is destroyed or
|
|
221
|
+
permanently deleted when no longer required for the Purpose of the company, and prepare
|
|
222
|
+
a disposal schedule for inactive data after a 24 month period.<br>
|
|
223
|
+
{{siteName}} implements various security measures to ensure that your personal data is
|
|
224
|
+
stored safely and is not compromised in any way. At the same time, {{siteName}} cannot in
|
|
225
|
+
good faith guarantee that data breach is not possible since no security measure is able to
|
|
226
|
+
provide absolute protection. It is advised for Users to take their own safety measures such
|
|
227
|
+
as 2-Factor Authentication or other measures not provided by {{siteName}}. If you suspect
|
|
228
|
+
that your account information or your personal data has been compromised, you should
|
|
229
|
+
contact {{siteName}}’s Support as soon as possible.<br>
|
|
230
|
+
<br>
|
|
231
|
+
9. LINKS TO THIRD PARTY WEBSITES<br>
|
|
232
|
+
We may link this website and/or our applications to other companies’ or organizations’
|
|
233
|
+
websites (collectively, “Third Party Sites”). This Privacy Notice does not apply to such Third
|
|
234
|
+
Party Sites as those sites are outside our control. If you access Third Party Sites using the
|
|
235
|
+
links provided, the operators of these sites may collect your personal information. Please
|
|
236
|
+
ensure that you are satisfied with the privacy statements of these Third Party Sites before
|
|
237
|
+
you submit any personal information. We try, as far as we can, to ensure that all third party
|
|
238
|
+
linked sites have equivalent measures for the protection of your personal information, but we
|
|
239
|
+
cannot be held responsible legally or otherwise for the activities, privacy policies or levels of
|
|
240
|
+
privacy compliance of these Third-Party Sites.<br>
|
|
241
|
+
<br>
|
|
242
|
+
10. ADDITIONAL INFORMATION OR ASSISTANCE
|
|
243
|
+
</p>
|
|
244
|
+
<p>Please note that this Privacy Policy may be amended from time to time in accordance with
|
|
245
|
+
applicable laws and regulations and such variations may be applicable to you. For further
|
|
246
|
+
inquiries or complaints in relation to our handling of your Personal Data or our Privacy Policy
|
|
247
|
+
or if you wish to access, update or amend your Personal Data as mentioned above please
|
|
248
|
+
contact us at: {{supportEmail}}</p>
|
|
249
|
+
</template>
|
|
250
|
+
</div>
|
|
251
|
+
</article>
|
|
252
|
+
</div>
|
|
253
|
+
</section>
|
|
254
|
+
</template>
|
|
255
|
+
|
|
256
|
+
<script setup>
|
|
257
|
+
import { computed, inject, ref } from 'vue';
|
|
258
|
+
|
|
259
|
+
const props = defineProps({
|
|
260
|
+
content: {
|
|
261
|
+
type: Object,
|
|
262
|
+
default: null,
|
|
263
|
+
},
|
|
264
|
+
configKey: {
|
|
265
|
+
type: String,
|
|
266
|
+
default: null,
|
|
267
|
+
},
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
const injectedSiteData = inject('siteData', ref({}));
|
|
271
|
+
|
|
272
|
+
const siteName = computed(() => injectedSiteData.value?.site?.title || '');
|
|
273
|
+
const siteUrl = computed(() => injectedSiteData.value?.site?.url || '');
|
|
274
|
+
const supportEmail = computed(() => injectedSiteData.value?.site?.supportEmail || '');
|
|
275
|
+
const customContent = computed(() =>
|
|
276
|
+
props.content && typeof props.content === 'object' ? props.content : null,
|
|
277
|
+
);
|
|
278
|
+
|
|
279
|
+
const headerTitle = computed(() => {
|
|
280
|
+
if (customContent.value?.title) {
|
|
281
|
+
return customContent.value.title;
|
|
282
|
+
}
|
|
283
|
+
if (siteName.value) {
|
|
284
|
+
return `${siteName.value} - Privacy Policy`;
|
|
285
|
+
}
|
|
286
|
+
return 'Privacy Policy';
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
const lastUpdated = computed(() => customContent.value?.lastUpdated || 'August 2025');
|
|
290
|
+
const customIntro = computed(() =>
|
|
291
|
+
typeof customContent.value?.intro === 'string' ? customContent.value.intro : '',
|
|
292
|
+
);
|
|
293
|
+
const customBody = computed(() =>
|
|
294
|
+
typeof customContent.value?.body === 'string' ? customContent.value.body : '',
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
function normalizeSectionItems(sections) {
|
|
298
|
+
if (!Array.isArray(sections)) return [];
|
|
299
|
+
return sections
|
|
300
|
+
.map((section, index) => {
|
|
301
|
+
if (!section || typeof section !== 'object') return null;
|
|
302
|
+
const paragraphs = Array.isArray(section.paragraphs)
|
|
303
|
+
? section.paragraphs.filter((text) => typeof text === 'string' && text.trim().length)
|
|
304
|
+
: [];
|
|
305
|
+
const list = Array.isArray(section.list)
|
|
306
|
+
? section.list.filter((text) => typeof text === 'string' && text.trim().length)
|
|
307
|
+
: [];
|
|
308
|
+
const summary = typeof section.summary === 'string' ? section.summary : null;
|
|
309
|
+
const body = typeof section.body === 'string' ? section.body : null;
|
|
310
|
+
const html = typeof section.html === 'string' ? section.html : null;
|
|
311
|
+
const title = typeof section.title === 'string' ? section.title : '';
|
|
312
|
+
if (!title && !summary && !body && !html && !paragraphs.length && !list.length) {
|
|
313
|
+
return null;
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
id: section.id || title || `section-${index}`,
|
|
317
|
+
title,
|
|
318
|
+
summary,
|
|
319
|
+
body: body || html,
|
|
320
|
+
paragraphs,
|
|
321
|
+
list,
|
|
322
|
+
};
|
|
323
|
+
})
|
|
324
|
+
.filter(Boolean);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
const customSections = computed(() => normalizeSectionItems(customContent.value?.sections));
|
|
328
|
+
const hasCustomContent = computed(
|
|
329
|
+
() => Boolean(customIntro.value || customBody.value || customSections.value.length),
|
|
330
|
+
);
|
|
331
|
+
</script>
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
<style scoped>
|
|
336
|
+
.legal-page {
|
|
337
|
+
background: var(
|
|
338
|
+
--legal-page-bg,
|
|
339
|
+
color-mix(in srgb, var(--brand-bg-900, #04050a) 90%, #020207 10%)
|
|
340
|
+
);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.legal-page__container {
|
|
344
|
+
max-width: 920px;
|
|
345
|
+
margin: 0 auto;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.legal-card {
|
|
349
|
+
--legal-card-color: var(
|
|
350
|
+
--legal-card-text,
|
|
351
|
+
var(--brand-card-text, var(--ui-text-primary, #1f2a44))
|
|
352
|
+
);
|
|
353
|
+
--legal-card-color-muted: color-mix(in srgb, var(--legal-card-color) 70%, transparent);
|
|
354
|
+
--legal-card-color-subtle: color-mix(in srgb, var(--legal-card-color) 55%, transparent);
|
|
355
|
+
background: var(--legal-card-bg, var(--brand-surface-card-bg, #ffffff));
|
|
356
|
+
color: var(--legal-card-color);
|
|
357
|
+
border-radius: var(--brand-card-radius, 28px);
|
|
358
|
+
border: 1px solid
|
|
359
|
+
color-mix(in srgb, var(--brand-surface-card-border, rgba(78, 105, 155, 0.35)) 80%, transparent);
|
|
360
|
+
box-shadow: var(--legal-card-shadow, 0 35px 70px rgba(4, 6, 15, 0.35));
|
|
361
|
+
padding: clamp(28px, 6vw, 56px);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
.legal-card__header {
|
|
365
|
+
text-align: center;
|
|
366
|
+
margin-bottom: clamp(20px, 4vw, 36px);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
.legal-card__title {
|
|
370
|
+
margin: 0;
|
|
371
|
+
font-size: clamp(1.6rem, 4vw, 2.4rem);
|
|
372
|
+
letter-spacing: 0.14em;
|
|
373
|
+
text-transform: uppercase;
|
|
374
|
+
color: var(--legal-card-color, currentColor);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.legal-card__meta {
|
|
378
|
+
margin: 14px 0 0;
|
|
379
|
+
font-size: 0.78rem;
|
|
380
|
+
letter-spacing: 0.2em;
|
|
381
|
+
text-transform: uppercase;
|
|
382
|
+
color: var(
|
|
383
|
+
--legal-card-meta-color,
|
|
384
|
+
var(--legal-card-color-subtle, color-mix(in srgb, var(--ui-text-muted, rgba(31, 42, 68, 0.7)) 90%, transparent))
|
|
385
|
+
);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
.legal-divider {
|
|
389
|
+
display: block;
|
|
390
|
+
width: 72px;
|
|
391
|
+
height: 2px;
|
|
392
|
+
margin: 18px auto 0;
|
|
393
|
+
background: var(
|
|
394
|
+
--legal-divider-color,
|
|
395
|
+
color-mix(in srgb, var(--brand-border-highlight, rgba(79, 108, 240, 0.6)) 90%, transparent)
|
|
396
|
+
);
|
|
397
|
+
border-radius: 999px;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.legal-content {
|
|
401
|
+
display: flex;
|
|
402
|
+
flex-direction: column;
|
|
403
|
+
gap: 1rem;
|
|
404
|
+
line-height: 1.7;
|
|
405
|
+
color: inherit;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
.legal-content p {
|
|
409
|
+
margin: 0;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
.legal-content strong {
|
|
413
|
+
color: var(--legal-strong-color, var(--legal-card-color));
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
.legal-content ul {
|
|
417
|
+
margin: 0;
|
|
418
|
+
padding-left: 1.2rem;
|
|
419
|
+
line-height: 1.6;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
.legal-content li + li {
|
|
423
|
+
margin-top: 0.35rem;
|
|
424
|
+
}
|
|
425
|
+
</style>
|