miguelgargallo commited on
Commit
257733f
·
1 Parent(s): 339f962

New Design

Browse files
Files changed (3) hide show
  1. content.json +87 -0
  2. index.html +114 -490
  3. styles.css +304 -0
content.json ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "title": "PylarAI 3rd Party License",
3
+ "version": "Version 1.0 December 2025",
4
+ "subtitle": "Software License Agreement focused on strict third-party compliance, transparent attribution, and responsible integration of external components in any derived project or deliverable.",
5
+ "meta": "SOFTWARE LICENSE AGREEMENT / THIRD-PARTY COMPLIANCE",
6
+ "badge": "PYLARAI 3RD PARTY LICENSE",
7
+ "sectionLabel": "Overview",
8
+ "sourceUrl": "https://huggingface.co/spaces/superdatas/pylarai3rdpartylicense",
9
+ "sourceText": "Source:",
10
+ "sections": [
11
+ {
12
+ "title": "1. Definitions",
13
+ "content": [
14
+ "<strong>Software</strong>: Refers to the program, application, component, script, or any digital material licensed under this agreement.",
15
+ "<strong>Third-Party Components</strong>: Includes any code, library, plugin, module, content, or technology developed by an entity other than the Licensor.",
16
+ "<strong>Project Deliverables</strong>: Any derivative content, result, modification, or integration involving the use of the Software or any third-party component.",
17
+ "<strong>End User</strong>: Any individual or legal entity that uses, distributes, or adapts the Software within the boundaries defined by this license."
18
+ ]
19
+ },
20
+ {
21
+ "title": "2. Grant of Rights",
22
+ "content": "The Licensor grants the End User a non-exclusive, non-transferable, and revocable authorization to use the Software solely for development, testing, or integration purposes, provided that these conditions are fully respected."
23
+ },
24
+ {
25
+ "title": "3. Third-Party Respect and Compliance",
26
+ "content": [
27
+ "Any third-party component, resource, or technology included or referenced within a derivative project must retain its original license, notices, and restrictions without alteration.",
28
+ "The End User is responsible for verifying the applicable license terms of every third-party component used before distributing or modifying any of its contents.",
29
+ "The Software may not be used to bypass, modify, or violate third-party license terms, nor to reassign credit, ownership, or intellectual property rights belonging to others.",
30
+ "When redistributing or delivering a Project Deliverable that integrates third-party software, the provenance, version, and license of each component must be explicitly documented."
31
+ ]
32
+ },
33
+ {
34
+ "title": "4. Modifications and Derivative Work",
35
+ "content": [
36
+ "Any modification, extension, integration, or plugin created based on the Software must respect the dependencies and third-party components embedded in its original structure.",
37
+ "Removal, suppression, or replacement of trademarks, credits, or identifiers belonging to third-party entities integrated by the original author or supplier is strictly prohibited."
38
+ ]
39
+ },
40
+ {
41
+ "title": "5. Liability and Warranty Disclaimer",
42
+ "content": [
43
+ "The Software and its components are provided \"as is,\" without any express or implied warranties, including but not limited to merchantability, fitness for a particular purpose, or non-infringement of third-party rights.",
44
+ "The Licensor shall not be held liable for any claim, damage, or loss arising from the use of third-party components or from non-compliance with their license terms."
45
+ ]
46
+ },
47
+ {
48
+ "title": "6. Acceptance of Terms",
49
+ "content": [
50
+ "By using the Software, the End User acknowledges and accepts all terms and conditions stated herein.",
51
+ "If the End User does not agree to these terms, they are not authorized to install, use, modify, or distribute the Software."
52
+ ]
53
+ }
54
+ ],
55
+ "sidePanel": {
56
+ "pill": "Third-Party First",
57
+ "principles": {
58
+ "title": "Design Principles",
59
+ "text": "Minimal surface, maximum clarity: the focus stays on the legal text, with a layout optimized for reading and section scanning across devices."
60
+ },
61
+ "snapshot": {
62
+ "title": "License Snapshot",
63
+ "items": [
64
+ [
65
+ "Status",
66
+ "Active v1.0"
67
+ ],
68
+ [
69
+ "Scope",
70
+ "Third-Party Compliance"
71
+ ],
72
+ [
73
+ "Updated",
74
+ "December 2025"
75
+ ],
76
+ [
77
+ "Jurisdiction",
78
+ "Global Use"
79
+ ]
80
+ ]
81
+ },
82
+ "hint": {
83
+ "title": "Implementation Hint",
84
+ "text": "Include this license alongside your model or application documentation and reference it explicitly in your project's README or Terms section for transparency."
85
+ }
86
+ }
87
+ }
index.html CHANGED
@@ -1,499 +1,123 @@
1
  <!DOCTYPE html>
2
  <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <title>PylarAI 3rd Party License</title>
6
- <meta name="viewport" content="width=device-width, initial-scale=1" />
7
- <style>
8
- :root {
9
- --bg: #050608;
10
- --card-bg: #0d0f14;
11
- --accent: #e63946;
12
- --accent-soft: rgba(230, 57, 70, 0.18);
13
- --text-main: #f5f5f7;
14
- --text-muted: #9ea3b5;
15
- --border-soft: rgba(255, 255, 255, 0.06);
16
- --code-bg: #11141c;
17
- --shadow-soft: 0 18px 40px rgba(0, 0, 0, 0.6);
18
- --radius-lg: 18px;
19
- --radius-sm: 8px;
20
- --font-main: system-ui, -apple-system, BlinkMacSystemFont, "SF Pro Text",
21
- "Segoe UI", sans-serif;
22
- }
23
-
24
- * {
25
- box-sizing: border-box;
26
- margin: 0;
27
- padding: 0;
28
- }
29
-
30
- html,
31
- body {
32
- height: 100%;
33
- background: radial-gradient(circle at top, #151824 0, #050608 55%);
34
- color: var(--text-main);
35
- font-family: var(--font-main);
36
- -webkit-font-smoothing: antialiased;
37
- }
38
-
39
- body {
40
- /* Antes: align-items:center; ahora arriba para que no se corte */
41
- display: flex;
42
- justify-content: center;
43
- padding: 24px 12px;
44
- overflow-y: auto;
45
- }
46
-
47
- .page {
48
- width: 100%;
49
- max-width: 960px;
50
- }
51
-
52
- .frame {
53
- background: linear-gradient(
54
- 135deg,
55
- rgba(230, 57, 70, 0.08),
56
- transparent
57
- );
58
- border-radius: 24px;
59
- padding: 1px;
60
- box-shadow: var(--shadow-soft);
61
- }
62
-
63
- .card {
64
- background: radial-gradient(circle at top left, #151926 0, #050609 60%);
65
- border-radius: 22px;
66
- padding: 24px 20px 22px;
67
- border: 1px solid var(--border-soft);
68
- backdrop-filter: blur(16px);
69
- }
70
-
71
- header {
72
- display: flex;
73
- flex-direction: column;
74
- gap: 8px;
75
- margin-bottom: 20px;
76
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
77
- padding-bottom: 16px;
78
- }
79
-
80
- .badge {
81
- display: inline-flex;
82
- align-items: center;
83
- gap: 8px;
84
- font-size: 11px;
85
- letter-spacing: 0.14em;
86
- text-transform: uppercase;
87
- color: var(--text-muted);
88
- }
89
-
90
- .badge-dot {
91
- width: 8px;
92
- height: 8px;
93
- border-radius: 999px;
94
- background: var(--accent);
95
- box-shadow: 0 0 12px var(--accent);
96
- }
97
-
98
- h1 {
99
- font-size: 22px;
100
- font-weight: 630;
101
- letter-spacing: 0.03em;
102
- text-transform: uppercase;
103
- display: flex;
104
- flex-wrap: wrap;
105
- align-items: center;
106
- gap: 8px;
107
- }
108
-
109
- h1 span {
110
- font-size: 12px;
111
- font-weight: 400;
112
- color: var(--accent);
113
- padding: 3px 9px;
114
- border-radius: 999px;
115
- background: var(--accent-soft);
116
- border: 1px solid rgba(230, 57, 70, 0.45);
117
- }
118
 
119
- .subtitle {
120
- font-size: 13px;
121
- color: var(--text-muted);
122
- max-width: 580px;
123
- line-height: 1.5;
124
- }
125
-
126
- .meta {
127
- font-size: 10px;
128
- color: var(--text-muted);
129
- text-transform: uppercase;
130
- letter-spacing: 0.16em;
131
- margin-top: 2px;
132
- }
133
-
134
- main {
135
- display: grid;
136
- grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.9fr);
137
- gap: 20px;
138
- }
139
-
140
- /* Mejoras responsive */
141
- @media (max-width: 900px) {
142
- body {
143
- padding: 16px 10px;
144
- }
145
- .card {
146
- padding: 20px 16px 18px;
147
- }
148
- main {
149
- grid-template-columns: minmax(0, 1fr);
150
- }
151
- }
 
152
 
153
- @media (max-width: 600px) {
154
- h1 {
155
- font-size: 18px;
156
- }
157
- .subtitle {
158
- font-size: 12px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  }
160
- .license-content {
161
- font-size: 13px;
162
- }
163
- }
164
-
165
- .license-content {
166
- font-size: 14px;
167
- line-height: 1.7;
168
- color: var(--text-main);
169
- }
170
-
171
- .license-content h2 {
172
- font-size: 15px;
173
- font-weight: 600;
174
- margin: 16px 0 8px;
175
- display: flex;
176
- align-items: center;
177
- gap: 8px;
178
- }
179
-
180
- .license-content h2::before {
181
- content: "";
182
- width: 18px;
183
- height: 1px;
184
- background: linear-gradient(90deg, var(--accent), transparent);
185
- }
186
-
187
- .license-content p {
188
- margin-bottom: 10px;
189
- color: var(--text-main);
190
- }
191
-
192
- .license-content ul {
193
- margin: 6px 0 12px 18px;
194
- list-style: none;
195
- }
196
-
197
- .license-content li {
198
- position: relative;
199
- margin-bottom: 6px;
200
- color: var(--text-muted);
201
- }
202
-
203
- .license-content li::before {
204
- content: "•";
205
- position: absolute;
206
- left: -14px;
207
- color: var(--accent);
208
- }
209
-
210
- .section-label {
211
- font-size: 11px;
212
- text-transform: uppercase;
213
- letter-spacing: 0.18em;
214
- color: var(--text-muted);
215
- margin-bottom: 2px;
216
  }
217
 
218
- .pill {
219
- display: inline-flex;
220
- align-items: center;
221
- gap: 6px;
222
- font-size: 11px;
223
- color: var(--accent);
224
- background: rgba(230, 57, 70, 0.08);
225
- border-radius: 999px;
226
- padding: 4px 10px;
227
- border: 1px solid rgba(230, 57, 70, 0.3);
228
- margin-bottom: 8px;
229
- }
230
-
231
- .pill-dot {
232
- width: 6px;
233
- height: 6px;
234
- border-radius: 999px;
235
- background: var(--accent);
236
- }
237
 
238
- .side-panel {
239
- border-radius: 16px;
240
- padding: 14px 14px 12px;
241
- background: linear-gradient(
242
- 145deg,
243
- rgba(255, 255, 255, 0.02),
244
- rgba(0, 0, 0, 0.4)
245
- );
246
- border: 1px solid var(--border-soft);
247
- display: flex;
248
- flex-direction: column;
249
- gap: 12px;
250
- }
251
-
252
- .side-card {
253
- padding: 10px 10px 9px;
254
- border-radius: 13px;
255
- background: rgba(5, 7, 12, 0.9);
256
- border: 1px solid rgba(255, 255, 255, 0.04);
257
- }
258
-
259
- .side-title {
260
- font-size: 12px;
261
- font-weight: 600;
262
- margin-bottom: 4px;
263
- }
264
-
265
- .side-text {
266
- font-size: 12px;
267
- color: var(--text-muted);
268
- line-height: 1.5;
269
- }
270
-
271
- .meta-grid {
272
- display: grid;
273
- grid-template-columns: repeat(2, minmax(0, 1fr));
274
- gap: 8px;
275
- margin-top: 6px;
276
- }
277
-
278
- .meta-item {
279
- font-size: 11px;
280
- color: var(--text-muted);
281
- display: flex;
282
- flex-direction: column;
283
- gap: 2px;
284
- }
285
-
286
- .meta-item span:first-child {
287
- text-transform: uppercase;
288
- letter-spacing: 0.16em;
289
- font-size: 10px;
290
- color: rgba(158, 163, 181, 0.75);
291
- }
292
-
293
- a {
294
- color: var(--accent);
295
- text-decoration: none;
296
- border-bottom: 1px solid rgba(230, 57, 70, 0.4);
297
- }
298
-
299
- a:hover {
300
- border-bottom-color: var(--accent);
301
- }
302
-
303
- .source-block {
304
- margin-top: 10px;
305
- font-size: 12px;
306
- padding: 8px 10px;
307
- border-radius: var(--radius-sm);
308
- background: var(--code-bg);
309
- border: 1px solid rgba(255, 255, 255, 0.04);
310
- color: var(--text-muted);
311
- word-break: break-all;
312
- }
313
- </style>
314
- </head>
315
- <body>
316
- <div class="page">
317
- <div class="frame">
318
- <div class="card">
319
- <header>
320
- <div class="badge">
321
- <span class="badge-dot"></span>
322
- PYLARAI 3RD PARTY LICENSE
323
- </div>
324
- <h1>
325
- PylarAI 3rd Party License
326
- <span>Version 1.0 – December 2025</span>
327
- </h1>
328
- <p class="subtitle">
329
- Software License Agreement focused on strict third-party
330
- compliance, transparent attribution, and responsible integration
331
- of external components in any derived project or deliverable.
332
- </p>
333
- <p class="meta">
334
- SOFTWARE LICENSE AGREEMENT · THIRD‑PARTY COMPLIANCE
335
- </p>
336
- </header>
337
-
338
- <main>
339
- <section class="license-content">
340
- <div class="section-label">Overview</div>
341
- <p>Software License Agreement - Third-Party Compliance</p>
342
-
343
- <h2>1. Definitions</h2>
344
- <ul>
345
- <li>
346
- <strong>Software</strong>: Refers to the program, application,
347
- component, script, or any digital material licensed under this
348
- agreement.
349
- </li>
350
- <li>
351
- <strong>Third-Party Components</strong>: Includes any code,
352
- library, plugin, module, content, or technology developed by
353
- an entity other than the Licensor.
354
- </li>
355
- <li>
356
- <strong>Project Deliverable</strong>: Any derivative content,
357
- result, modification, or integration involving the use of the
358
- Software or any third-party component.
359
- </li>
360
- <li>
361
- <strong>End User</strong>: Any individual or legal entity that
362
- uses, distributes, or adapts the Software within the
363
- boundaries defined by this license.
364
- </li>
365
- </ul>
366
-
367
- <h2>2. Grant of Rights</h2>
368
- <p>
369
- The Licensor grants the End User a non-exclusive,
370
- non-transferable, and revocable authorization to use the
371
- Software solely for development, testing, or integration
372
- purposes, provided that these conditions are fully respected.
373
- </p>
374
-
375
- <h2>3. Third-Party Respect and Compliance</h2>
376
- <ul>
377
- <li>
378
- Any third-party component, resource, or technology included or
379
- referenced within a derivative project must retain its
380
- original license, notices, and restrictions without
381
- alteration.
382
- </li>
383
- <li>
384
- The End User is responsible for verifying the applicable
385
- license terms of every third-party component used before
386
- distributing or modifying any of its contents.
387
- </li>
388
- <li>
389
- The Software may not be used to bypass, modify, or violate
390
- third-party license terms, nor to reassign credit, ownership,
391
- or intellectual property rights belonging to others.
392
- </li>
393
- <li>
394
- When redistributing or delivering a Project Deliverable that
395
- integrates third-party software, the provenance, version, and
396
- license of each component must be explicitly documented.
397
- </li>
398
- </ul>
399
-
400
- <h2>4. Modifications and Derivative Work</h2>
401
- <ul>
402
- <li>
403
- Any modification, extension, integration, or plugin created
404
- based on the Software must respect the dependencies and
405
- third-party components embedded in its original structure.
406
- </li>
407
- <li>
408
- Removal, suppression, or replacement of trademarks, credits,
409
- or identifiers belonging to third-party entities integrated by
410
- the original author or supplier is strictly prohibited.
411
- </li>
412
- </ul>
413
-
414
- <h2>5. Liability and Warranty Disclaimer</h2>
415
- <p>
416
- The Software and its components are provided “as is,” without
417
- any express or implied warranties, including but not limited to
418
- merchantability, fitness for a particular purpose, or
419
- non-infringement of third-party rights.
420
- </p>
421
- <p>
422
- The Licensor shall not be held liable for any claim, damage, or
423
- loss arising from the use of third-party components or from
424
- non-compliance with their license terms.
425
- </p>
426
-
427
- <h2>6. Acceptance of Terms</h2>
428
- <p>
429
- By using the Software, the End User acknowledges and accepts all
430
- terms and conditions stated herein.
431
- </p>
432
- <p>
433
- If the End User does not agree to these terms, they are not
434
- authorized to install, use, modify, or distribute the Software.
435
- </p>
436
-
437
- <div class="source-block">
438
- Source:
439
- <a
440
- href="https://huggingface.co/spaces/superdatas/pylarai3rdpartylicense"
441
- target="_blank"
442
- rel="noreferrer"
443
- >
444
- https://huggingface.co/spaces/superdatas/pylarai3rdpartylicense
445
- </a>
446
- </div>
447
- </section>
448
-
449
- <aside class="side-panel">
450
- <div class="side-card">
451
- <div class="pill">
452
- <span class="pill-dot"></span>
453
- Third-Party First
454
- </div>
455
- <h3 class="side-title">Design Principles</h3>
456
- <p class="side-text">
457
- Minimal surface, maximum clarity: the focus stays on the legal
458
- text, with a layout optimized for reading and section scanning
459
- across devices.
460
- </p>
461
- </div>
462
-
463
- <div class="side-card">
464
- <h3 class="side-title">License Snapshot</h3>
465
- <div class="meta-grid">
466
- <div class="meta-item">
467
- <span>Status</span>
468
- <span>Active · v1.0</span>
469
- </div>
470
- <div class="meta-item">
471
- <span>Scope</span>
472
- <span>Third-Party Compliance</span>
473
- </div>
474
- <div class="meta-item">
475
- <span>Updated</span>
476
- <span>December 2025</span>
477
- </div>
478
- <div class="meta-item">
479
- <span>Jurisdiction</span>
480
- <span>Global Use</span>
481
- </div>
482
- </div>
483
- </div>
484
-
485
- <div class="side-card">
486
- <h3 class="side-title">Implementation Hint</h3>
487
- <p class="side-text">
488
- Include this license alongside your model or application
489
- documentation and reference it explicitly in your project’s
490
- README or Terms section for transparency.
491
- </p>
492
- </div>
493
- </aside>
494
- </main>
495
- </div>
496
- </div>
497
- </div>
498
- </body>
499
  </html>
 
1
  <!DOCTYPE html>
2
  <html lang="en">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title data-title>PylarAI 3rd Party License</title>
8
+ <link rel="stylesheet" href="styles.css" />
9
+ </head>
10
+
11
+ <body>
12
+ <div class="page">
13
+ <div class="frame">
14
+ <div class="card">
15
+ <header>
16
+ <div class="badge" data-badge>PYLARAI 3RD PARTY LICENSE</div>
17
+ <h1 data-title>
18
+ PylarAI 3rd Party License
19
+ <span data-version>Version 1.0 December 2025</span>
20
+ </h1>
21
+ <p class="subtitle" data-subtitle></p>
22
+ <p class="meta" data-meta>
23
+ SOFTWARE LICENSE AGREEMENT / THIRD-PARTY COMPLIANCE
24
+ </p>
25
+ </header>
26
+ <main>
27
+ <section class="license-content" data-sections></section>
28
+
29
+ <aside class="side-panel" data-sidepanel></aside>
30
+ </main>
31
+
32
+ <div class="source-block" data-source>
33
+ <strong data-source-text>Source:</strong>
34
+ <a data-source-url href="#" target="_blank" rel="noreferrer"></a>
35
+ </div>
36
+ </div>
37
+ </div>
38
 
39
+ <script>
40
+ async function loadContent() {
41
+ try {
42
+ const response = await fetch("content.json");
43
+ const content = await response.json();
44
+
45
+ // Header
46
+ document.querySelector("[data-title]").textContent = content.title;
47
+ document.querySelector("[data-version]").textContent =
48
+ content.version;
49
+ document.querySelector("[data-subtitle]").textContent =
50
+ content.subtitle;
51
+ document.querySelector("[data-meta]").textContent = content.meta;
52
+ document.querySelector("[data-badge]").textContent = content.badge;
53
+ document.title = content.title;
54
+
55
+ // Source
56
+ document.querySelector("[data-source-url]").href = content.sourceUrl;
57
+ document.querySelector("[data-source-url]").textContent =
58
+ content.sourceUrl;
59
+ document.querySelector("[data-source-text]").textContent =
60
+ content.sourceText;
61
+
62
+ // Sections
63
+ const sectionsContainer = document.querySelector("[data-sections]");
64
+ content.sections.forEach((section) => {
65
+ const sectionEl = document.createElement("div");
66
+ sectionEl.innerHTML = `
67
+ <div class="section-label">${content.sectionLabel}</div>
68
+ <h2>${section.title}</h2>
69
+ ${Array.isArray(section.content)
70
+ ? `<ul>${section.content
71
+ .map((item) => `<li>${item}</li>`)
72
+ .join("")}</ul>`
73
+ : `<p>${section.content}</p>`
74
+ }
75
+ `;
76
+ sectionsContainer.appendChild(sectionEl);
77
+ });
78
+
79
+ // Side panel
80
+ const sidePanel = document.querySelector("[data-sidepanel]");
81
+ sidePanel.innerHTML = `
82
+ <div class="side-card">
83
+ <div class="pill">
84
+ <span class="pill-dot"></span>
85
+ ${content.sidePanel.pill}
86
+ </div>
87
+ <h3 class="side-title">${content.sidePanel.principles.title
88
+ }</h3>
89
+ <p class="side-text">${content.sidePanel.principles.text
90
+ }</p>
91
+ </div>
92
+ <div class="side-card">
93
+ <h3 class="side-title">${content.sidePanel.snapshot.title
94
+ }</h3>
95
+ <div class="meta-grid">
96
+ ${content.sidePanel.snapshot.items
97
+ .map(
98
+ ([key, value]) => `
99
+ <div class="meta-item">
100
+ <span>${key}</span>
101
+ <span>${value}</span>
102
+ </div>
103
+ `
104
+ )
105
+ .join("")}
106
+ </div>
107
+ </div>
108
+ <div class="side-card">
109
+ <h3 class="side-title">${content.sidePanel.hint.title
110
+ }</h3>
111
+ <p class="side-text">${content.sidePanel.hint.text}</p>
112
+ </div>
113
+ `;
114
+ } catch (error) {
115
+ console.error("Error loading content:", error);
116
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
 
119
+ loadContent();
120
+ </script>
121
+ </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  </html>
styles.css ADDED
@@ -0,0 +1,304 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ :root {
2
+ --bg: #050608;
3
+ --card-bg: #0d0f14;
4
+ --accent: #e63946;
5
+ --accent-soft: rgba(230, 57, 70, 0.18);
6
+ --text-main: #f5f5f7;
7
+ --text-muted: #9ea3b5;
8
+ --border-soft: rgba(255, 255, 255, 0.06);
9
+ --code-bg: #11141c;
10
+ --shadow-soft: 0 18px 40px rgba(0, 0, 0, 0.6);
11
+ --radius-lg: 18px;
12
+ --radius-sm: 8px;
13
+ --font-main: system-ui, -apple-system, BlinkMacSystemFont, "SF Pro Text",
14
+ Segoe UI, sans-serif;
15
+ }
16
+
17
+ * {
18
+ box-sizing: border-box;
19
+ margin: 0;
20
+ padding: 0;
21
+ }
22
+
23
+ html,
24
+ body {
25
+ height: 100%;
26
+ background: radial-gradient(circle at top, #151824 0%, #050608 55%);
27
+ color: var(--text-main);
28
+ font-family: var(--font-main);
29
+ -webkit-font-smoothing: antialiased;
30
+ }
31
+
32
+ body {
33
+ display: flex;
34
+ justify-content: center;
35
+ padding: 24px 12px;
36
+ overflow-y: auto;
37
+ }
38
+
39
+ .page {
40
+ width: 100%;
41
+ max-width: 960px;
42
+ }
43
+
44
+ .frame {
45
+ background: linear-gradient(135deg, rgba(230, 57, 70, 0.08), transparent);
46
+ border-radius: 24px;
47
+ padding: 1px;
48
+ box-shadow: var(--shadow-soft);
49
+ }
50
+
51
+ .card {
52
+ background: radial-gradient(circle at top left, #151926 0%, #050609 60%);
53
+ border-radius: 22px;
54
+ padding: 24px 20px 22px;
55
+ border: 1px solid var(--border-soft);
56
+ backdrop-filter: blur(16px);
57
+ }
58
+
59
+ header {
60
+ display: flex;
61
+ flex-direction: column;
62
+ gap: 8px;
63
+ margin-bottom: 20px;
64
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
65
+ padding-bottom: 16px;
66
+ }
67
+
68
+ .badge {
69
+ display: inline-flex;
70
+ align-items: center;
71
+ gap: 8px;
72
+ font-size: 11px;
73
+ letter-spacing: 0.14em;
74
+ text-transform: uppercase;
75
+ color: var(--text-muted);
76
+ }
77
+
78
+ .badge-dot {
79
+ width: 8px;
80
+ height: 8px;
81
+ border-radius: 999px;
82
+ background: var(--accent);
83
+ box-shadow: 0 0 12px var(--accent);
84
+ }
85
+
86
+ h1 {
87
+ font-size: 22px;
88
+ font-weight: 630;
89
+ letter-spacing: 0.03em;
90
+ text-transform: uppercase;
91
+ display: flex;
92
+ flex-wrap: wrap;
93
+ align-items: center;
94
+ gap: 8px;
95
+ }
96
+
97
+ h1 span {
98
+ font-size: 12px;
99
+ font-weight: 400;
100
+ color: var(--accent);
101
+ padding: 3px 9px;
102
+ border-radius: 999px;
103
+ background: var(--accent-soft);
104
+ border: 1px solid rgba(230, 57, 70, 0.45);
105
+ }
106
+
107
+ .subtitle {
108
+ font-size: 13px;
109
+ color: var(--text-muted);
110
+ max-width: 580px;
111
+ line-height: 1.5;
112
+ }
113
+
114
+ .meta {
115
+ font-size: 10px;
116
+ color: var(--text-muted);
117
+ text-transform: uppercase;
118
+ letter-spacing: 0.16em;
119
+ margin-top: 2px;
120
+ }
121
+
122
+ main {
123
+ display: grid;
124
+ grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.9fr);
125
+ gap: 20px;
126
+ }
127
+
128
+ .license-content {
129
+ font-size: 14px;
130
+ line-height: 1.7;
131
+ color: var(--text-main);
132
+ }
133
+
134
+ .license-content h2 {
135
+ font-size: 15px;
136
+ font-weight: 600;
137
+ margin: 16px 0 8px;
138
+ display: flex;
139
+ align-items: center;
140
+ gap: 8px;
141
+ }
142
+
143
+ .license-content h2::before {
144
+ content: "";
145
+ width: 18px;
146
+ height: 1px;
147
+ background: linear-gradient(90deg, var(--accent), transparent);
148
+ }
149
+
150
+ .license-content p {
151
+ margin-bottom: 10px;
152
+ color: var(--text-main);
153
+ }
154
+
155
+ .license-content ul {
156
+ margin: 6px 0 12px 18px;
157
+ list-style: none;
158
+ }
159
+
160
+ .license-content li {
161
+ position: relative;
162
+ margin-bottom: 6px;
163
+ color: var(--text-muted);
164
+ }
165
+
166
+ .license-content li::before {
167
+ content: "→";
168
+ position: absolute;
169
+ left: -14px;
170
+ color: var(--accent);
171
+ }
172
+
173
+ .section-label {
174
+ font-size: 11px;
175
+ text-transform: uppercase;
176
+ letter-spacing: 0.18em;
177
+ color: var(--text-muted);
178
+ margin-bottom: 2px;
179
+ }
180
+
181
+ .pill {
182
+ display: inline-flex;
183
+ align-items: center;
184
+ gap: 6px;
185
+ font-size: 11px;
186
+ color: var(--accent);
187
+ background: rgba(230, 57, 70, 0.08);
188
+ border-radius: 999px;
189
+ padding: 4px 10px;
190
+ border: 1px solid rgba(230, 57, 70, 0.3);
191
+ margin-bottom: 8px;
192
+ }
193
+
194
+ .pill-dot {
195
+ width: 6px;
196
+ height: 6px;
197
+ border-radius: 999px;
198
+ background: var(--accent);
199
+ }
200
+
201
+ .side-panel {
202
+ border-radius: 16px;
203
+ padding: 14px 14px 12px;
204
+ background: linear-gradient(
205
+ 145deg,
206
+ rgba(255, 255, 255, 0.02),
207
+ rgba(0, 0, 0, 0.4)
208
+ );
209
+ border: 1px solid var(--border-soft);
210
+ display: flex;
211
+ flex-direction: column;
212
+ gap: 12px;
213
+ }
214
+
215
+ .side-card {
216
+ padding: 10px 10px 9px;
217
+ border-radius: 13px;
218
+ background: rgba(5, 7, 12, 0.9);
219
+ border: 1px solid rgba(255, 255, 255, 0.04);
220
+ }
221
+
222
+ .side-title {
223
+ font-size: 12px;
224
+ font-weight: 600;
225
+ margin-bottom: 4px;
226
+ }
227
+
228
+ .side-text {
229
+ font-size: 12px;
230
+ color: var(--text-muted);
231
+ line-height: 1.5;
232
+ }
233
+
234
+ .meta-grid {
235
+ display: grid;
236
+ grid-template-columns: repeat(2, minmax(0, 1fr));
237
+ gap: 8px;
238
+ margin-top: 6px;
239
+ }
240
+
241
+ .meta-item {
242
+ font-size: 11px;
243
+ color: var(--text-muted);
244
+ display: flex;
245
+ flex-direction: column;
246
+ gap: 2px;
247
+ }
248
+
249
+ .meta-item span:first-child {
250
+ text-transform: uppercase;
251
+ letter-spacing: 0.16em;
252
+ font-size: 10px;
253
+ color: rgba(158, 163, 181, 0.75);
254
+ }
255
+
256
+ a {
257
+ color: var(--accent);
258
+ text-decoration: none;
259
+ border-bottom: 1px solid rgba(230, 57, 70, 0.4);
260
+ }
261
+
262
+ a:hover {
263
+ border-bottom-color: var(--accent);
264
+ }
265
+
266
+ .source-block {
267
+ margin-top: 10px;
268
+ font-size: 12px;
269
+ padding: 8px 10px;
270
+ border-radius: var(--radius-sm);
271
+ background: var(--code-bg);
272
+ border: 1px solid rgba(255, 255, 255, 0.04);
273
+ color: var(--text-muted);
274
+ word-break: break-all;
275
+ }
276
+
277
+ /* Responsive */
278
+ @media (max-width: 900px) {
279
+ body {
280
+ padding: 16px 10px;
281
+ }
282
+
283
+ .card {
284
+ padding: 20px 16px 18px;
285
+ }
286
+
287
+ main {
288
+ grid-template-columns: minmax(0, 1fr);
289
+ }
290
+ }
291
+
292
+ @media (max-width: 600px) {
293
+ h1 {
294
+ font-size: 18px;
295
+ }
296
+
297
+ .subtitle {
298
+ font-size: 12px;
299
+ }
300
+
301
+ .license-content {
302
+ font-size: 13px;
303
+ }
304
+ }