Spaces:
Running
Running
Commit ·
3ae4a70
1
Parent(s): f6d9bed
Design Update
Browse files- README.md +4 -56
- assets/avoid.svg +7 -0
- assets/correct.svg +4 -0
- content.json +118 -0
- index.html +25 -260
- main.js +99 -0
- styles.css +337 -0
README.md
CHANGED
|
@@ -1,62 +1,10 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
license: other
|
| 9 |
---
|
| 10 |
|
| 11 |
-
# PYLAR AI CREATIVE ML RESTRICTIVE LICENSE
|
| 12 |
-
|
| 13 |
-
Note: The name of the license indicates that this license was written with AI assistance, not that the protected content is AI-generated.
|
| 14 |
-
|
| 15 |
-
Version 1.1, Jul 14th 2025
|
| 16 |
-
|
| 17 |
-
Permission is hereby granted, free of charge, to any person obtaining a copy of the Pylar AI software and associated documentation files (the "Software"), to visualize and use the Software solely for educational and informative purposes, subject to the following restrictions and conditions:
|
| 18 |
-
|
| 19 |
-
## Redistribution and Use Limitations:
|
| 20 |
-
The Software may not be redistributed, sublicensed, sold, or otherwise transferred to any third party without prior written permission from the licensor.
|
| 21 |
-
The Software may not be used for any commercial purposes or for any purpose other than education, research, and personal learning.
|
| 22 |
-
The end user is strictly prohibited from using any part of the Software's source code, including but not limited to copying, modifying, or creating derivative works based on the code.
|
| 23 |
-
|
| 24 |
-
## No Self-Hosting:
|
| 25 |
-
The end user may not host or make the Software available to others via any means, including but not limited to local servers, cloud services, or online platforms.
|
| 26 |
-
|
| 27 |
-
## Visualizing and Educative Purpose:
|
| 28 |
-
The end user is granted the right to use the Software solely for visualizing the outputs and results generated by the Software.
|
| 29 |
-
The end user may use the Software to provide marks or feedback on the visualized outputs, solely for educational and informative purposes.
|
| 30 |
-
|
| 31 |
-
## Intellectual Property:
|
| 32 |
-
All intellectual property rights in the Software, including but not limited to copyrights, trademarks, and patents, shall remain the exclusive property of the licensor.
|
| 33 |
-
The end user acknowledges that this license does not grant any ownership or rights to the Software, other than the limited rights expressly stated herein.
|
| 34 |
-
|
| 35 |
-
## No Warranty:
|
| 36 |
-
The Software is provided "as is," without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement.
|
| 37 |
-
The licensor shall not be liable for any claim, damages, or other liability arising out of or in connection with the use or performance of the Software.
|
| 38 |
-
|
| 39 |
-
By using the Software, the end user agrees to be bound by the terms and conditions of this license. If you do not agree to these terms, you are not authorized to use the Software.
|
| 40 |
-
|
| 41 |
-
| | ✅ Allowed | ❌ Not Allowed |
|
| 42 |
-
| ------------- | ---------------------------------------- | --------------------------------------------- |
|
| 43 |
-
| | Visualize educational and informative | Redistribute, sublicense, sell or transfer |
|
| 44 |
-
| | results generated by the Software. | the Software without prior written permission |
|
| 45 |
-
| | | from the licensor. |
|
| 46 |
-
| | | |
|
| 47 |
-
| | Use the Software only for educational, | Use any part of the source code, |
|
| 48 |
-
| | research and personal learning purposes. | including copying, modifying or creating |
|
| 49 |
-
| | | derivative works. |
|
| 50 |
-
| | | |
|
| 51 |
-
| | Provide marks or feedback on visualized | Host or make the Software available to |
|
| 52 |
-
| | results for educational and informative | others on local servers, cloud or online |
|
| 53 |
-
| | purposes. | platforms. |
|
| 54 |
-
| | | |
|
| 55 |
-
| ❌ Not Allowed | Use the Software for commercial or | Claim intellectual property rights over |
|
| 56 |
-
| | non-educational purposes. | the Software, except for the limited rights |
|
| 57 |
-
| | | expressly stated in the license. |
|
| 58 |
-
| | | |
|
| 59 |
-
| | Hold the licensor responsible for | |
|
| 60 |
-
| | claims, damages or other liabilities | |
|
| 61 |
-
| | arising from the use or performance | |
|
| 62 |
-
| | of the Software. | |
|
|
|
|
| 1 |
---
|
| 2 |
+
title: PYLAR AI CREATIVE ML RESTRICTIVE LICENSE
|
| 3 |
+
emoji: 🏛️
|
| 4 |
+
colorFrom: indigo
|
| 5 |
+
colorTo: indigo
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
license: other
|
| 9 |
---
|
| 10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/avoid.svg
ADDED
|
|
assets/correct.svg
ADDED
|
|
content.json
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"title": "PYLAR AI CREATIVE ML RESTRICTIVE LICENSE",
|
| 3 |
+
"version": "Version 1.1, Jul 14th 2025",
|
| 4 |
+
"subtitle": "License limited to visualization for educational purposes only, with strict no-redistribution, no-modification, and no-commercial-use restrictions.",
|
| 5 |
+
"meta": "SOFTWARE LICENSE AGREEMENT / RESTRICTIVE LICENSE",
|
| 6 |
+
"badge": "PYLAR AI RESTRICTIVE LICENSE",
|
| 7 |
+
"sectionLabel": "Overview",
|
| 8 |
+
"sourceUrl": "https://huggingface.co/spaces/superdatas/restrictive-license",
|
| 9 |
+
"sourceText": "Source:",
|
| 10 |
+
"sections": [
|
| 11 |
+
{
|
| 12 |
+
"title": "Note",
|
| 13 |
+
"content": "The name of the license indicates that this license was written with AI assistance, not that the protected content is AI-generated."
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"title": "1. Permission",
|
| 17 |
+
"content": "Permission is hereby granted, free of charge, to any person obtaining a copy of the Pylar AI software and associated documentation files (the \"Software\"), to visualize and use the Software solely for educational and informative purposes, subject to the following restrictions and conditions."
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"title": "2. Redistribution and Use Limitations",
|
| 21 |
+
"content": [
|
| 22 |
+
"The Software may not be redistributed, sublicensed, sold, or otherwise transferred to any third party without prior written permission from the licensor.",
|
| 23 |
+
"The Software may not be used for any commercial purposes or for any purpose other than education, research, and personal learning.",
|
| 24 |
+
"The end user is strictly prohibited from using any part of the Software's source code, including but not limited to copying, modifying, or creating derivative works based on the code."
|
| 25 |
+
]
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"title": "3. No Self-Hosting",
|
| 29 |
+
"content": "The end user may not host or make the Software available to others via any means, including but not limited to local servers, cloud services, or online platforms."
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"title": "4. Visualizing and Educative Purpose",
|
| 33 |
+
"content": [
|
| 34 |
+
"The end user is granted the right to use the Software solely for visualizing the outputs and results generated by the Software.",
|
| 35 |
+
"The end user may use the Software to provide marks or feedback on the visualized outputs, solely for educational and informative purposes."
|
| 36 |
+
]
|
| 37 |
+
},
|
| 38 |
+
{
|
| 39 |
+
"title": "5. Intellectual Property",
|
| 40 |
+
"content": [
|
| 41 |
+
"All intellectual property rights in the Software, including but not limited to copyrights, trademarks, and patents, shall remain the exclusive property of the licensor.",
|
| 42 |
+
"The end user acknowledges that this license does not grant any ownership or rights to the Software, other than the limited rights expressly stated herein."
|
| 43 |
+
]
|
| 44 |
+
},
|
| 45 |
+
{
|
| 46 |
+
"title": "6. No Warranty",
|
| 47 |
+
"content": [
|
| 48 |
+
"The Software is provided \"as is,\" without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement.",
|
| 49 |
+
"The licensor shall not be liable for any claim, damages, or other liability arising out of or in connection with the use or performance of the Software."
|
| 50 |
+
]
|
| 51 |
+
},
|
| 52 |
+
{
|
| 53 |
+
"title": "7. Acceptance",
|
| 54 |
+
"content": "By using the Software, the end user agrees to be bound by the terms and conditions of this license. If you do not agree to these terms, you are not authorized to use the Software."
|
| 55 |
+
}
|
| 56 |
+
],
|
| 57 |
+
"sidePanel": {
|
| 58 |
+
"pill": "✅ Visualize | ❌ No Code Use",
|
| 59 |
+
"principles": {
|
| 60 |
+
"title": "Allowed vs Prohibited",
|
| 61 |
+
"items": [
|
| 62 |
+
{
|
| 63 |
+
"type": "allow",
|
| 64 |
+
"text": "Visualize educational results"
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"type": "allow",
|
| 68 |
+
"text": "Educational/research use only"
|
| 69 |
+
},
|
| 70 |
+
{
|
| 71 |
+
"type": "allow",
|
| 72 |
+
"text": "Provide feedback on outputs"
|
| 73 |
+
},
|
| 74 |
+
{
|
| 75 |
+
"type": "avoid",
|
| 76 |
+
"text": "Redistribute/sublicense/sell"
|
| 77 |
+
},
|
| 78 |
+
{
|
| 79 |
+
"type": "avoid",
|
| 80 |
+
"text": "Source code modification"
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"type": "avoid",
|
| 84 |
+
"text": "Self-hosting platforms"
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"type": "avoid",
|
| 88 |
+
"text": "Commercial use"
|
| 89 |
+
}
|
| 90 |
+
]
|
| 91 |
+
},
|
| 92 |
+
"snapshot": {
|
| 93 |
+
"title": "License Snapshot",
|
| 94 |
+
"items": [
|
| 95 |
+
[
|
| 96 |
+
"Status",
|
| 97 |
+
"Active v1.1"
|
| 98 |
+
],
|
| 99 |
+
[
|
| 100 |
+
"Scope",
|
| 101 |
+
"Educational Visualization"
|
| 102 |
+
],
|
| 103 |
+
[
|
| 104 |
+
"Updated",
|
| 105 |
+
"July 14th 2025"
|
| 106 |
+
],
|
| 107 |
+
[
|
| 108 |
+
"Jurisdiction",
|
| 109 |
+
"Global"
|
| 110 |
+
]
|
| 111 |
+
]
|
| 112 |
+
},
|
| 113 |
+
"hint": {
|
| 114 |
+
"title": "License Validity",
|
| 115 |
+
"text": "Always link to source URL below"
|
| 116 |
+
}
|
| 117 |
+
}
|
| 118 |
+
}
|
index.html
CHANGED
|
@@ -2,277 +2,42 @@
|
|
| 2 |
<html lang="en">
|
| 3 |
|
| 4 |
<head>
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
:root {
|
| 10 |
-
--primary: #4361ee;
|
| 11 |
-
--secondary: #3a0ca3;
|
| 12 |
-
--accent: #f72585;
|
| 13 |
-
--allowed: #4cc9f0;
|
| 14 |
-
--prohibited: #f72585;
|
| 15 |
-
--light: #f8f9fa;
|
| 16 |
-
--dark: #212529;
|
| 17 |
-
}
|
| 18 |
-
|
| 19 |
-
* {
|
| 20 |
-
margin: 0;
|
| 21 |
-
padding: 0;
|
| 22 |
-
box-sizing: border-box;
|
| 23 |
-
}
|
| 24 |
-
|
| 25 |
-
body {
|
| 26 |
-
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
| 27 |
-
line-height: 1.6;
|
| 28 |
-
color: var(--dark);
|
| 29 |
-
background-color: var(--light);
|
| 30 |
-
padding: 2rem;
|
| 31 |
-
}
|
| 32 |
-
|
| 33 |
-
.container {
|
| 34 |
-
max-width: 900px;
|
| 35 |
-
margin: 0 auto;
|
| 36 |
-
background-color: white;
|
| 37 |
-
border-radius: 12px;
|
| 38 |
-
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
|
| 39 |
-
overflow: hidden;
|
| 40 |
-
}
|
| 41 |
-
|
| 42 |
-
header {
|
| 43 |
-
background: linear-gradient(135deg, var(--primary), var(--secondary));
|
| 44 |
-
color: white;
|
| 45 |
-
padding: 2.5rem 2rem;
|
| 46 |
-
text-align: center;
|
| 47 |
-
}
|
| 48 |
-
|
| 49 |
-
h1 {
|
| 50 |
-
font-size: 2.2rem;
|
| 51 |
-
margin-bottom: 0.5rem;
|
| 52 |
-
font-weight: 800;
|
| 53 |
-
}
|
| 54 |
-
|
| 55 |
-
.version {
|
| 56 |
-
display: inline-block;
|
| 57 |
-
background-color: rgba(255, 255, 255, 0.2);
|
| 58 |
-
padding: 0.3rem 0.8rem;
|
| 59 |
-
border-radius: 20px;
|
| 60 |
-
font-size: 0.9rem;
|
| 61 |
-
}
|
| 62 |
-
|
| 63 |
-
.content {
|
| 64 |
-
padding: 2rem;
|
| 65 |
-
}
|
| 66 |
-
|
| 67 |
-
.intro {
|
| 68 |
-
margin-bottom: 2rem;
|
| 69 |
-
font-size: 1.1rem;
|
| 70 |
-
line-height: 1.7;
|
| 71 |
-
}
|
| 72 |
-
|
| 73 |
-
.section {
|
| 74 |
-
margin-bottom: 1.8rem;
|
| 75 |
-
}
|
| 76 |
-
|
| 77 |
-
h2 {
|
| 78 |
-
font-size: 1.4rem;
|
| 79 |
-
color: var(--secondary);
|
| 80 |
-
margin-bottom: 0.8rem;
|
| 81 |
-
border-bottom: 2px solid rgba(67, 97, 238, 0.2);
|
| 82 |
-
padding-bottom: 0.5rem;
|
| 83 |
-
}
|
| 84 |
-
|
| 85 |
-
ul {
|
| 86 |
-
padding-left: 1.5rem;
|
| 87 |
-
margin-bottom: 1rem;
|
| 88 |
-
}
|
| 89 |
-
|
| 90 |
-
li {
|
| 91 |
-
margin-bottom: 0.5rem;
|
| 92 |
-
}
|
| 93 |
-
|
| 94 |
-
.table-container {
|
| 95 |
-
margin: 2rem 0;
|
| 96 |
-
overflow-x: auto;
|
| 97 |
-
}
|
| 98 |
-
|
| 99 |
-
table {
|
| 100 |
-
width: 100%;
|
| 101 |
-
border-collapse: collapse;
|
| 102 |
-
border-radius: 8px;
|
| 103 |
-
overflow: hidden;
|
| 104 |
-
}
|
| 105 |
-
|
| 106 |
-
th,
|
| 107 |
-
td {
|
| 108 |
-
padding: 1rem;
|
| 109 |
-
text-align: left;
|
| 110 |
-
border: 1px solid #e9ecef;
|
| 111 |
-
}
|
| 112 |
-
|
| 113 |
-
th {
|
| 114 |
-
background-color: var(--secondary);
|
| 115 |
-
color: white;
|
| 116 |
-
}
|
| 117 |
-
|
| 118 |
-
tr:nth-child(even) {
|
| 119 |
-
background-color: #f8f9fa;
|
| 120 |
-
}
|
| 121 |
-
|
| 122 |
-
.allowed {
|
| 123 |
-
color: var(--allowed);
|
| 124 |
-
font-weight: bold;
|
| 125 |
-
}
|
| 126 |
-
|
| 127 |
-
.prohibited {
|
| 128 |
-
color: var(--prohibited);
|
| 129 |
-
font-weight: bold;
|
| 130 |
-
}
|
| 131 |
-
|
| 132 |
-
@media (max-width: 768px) {
|
| 133 |
-
body {
|
| 134 |
-
padding: 1rem;
|
| 135 |
-
}
|
| 136 |
-
|
| 137 |
-
header {
|
| 138 |
-
padding: 1.5rem 1rem;
|
| 139 |
-
}
|
| 140 |
-
|
| 141 |
-
h1 {
|
| 142 |
-
font-size: 1.8rem;
|
| 143 |
-
}
|
| 144 |
-
|
| 145 |
-
.content {
|
| 146 |
-
padding: 1.5rem;
|
| 147 |
-
}
|
| 148 |
-
|
| 149 |
-
th,
|
| 150 |
-
td {
|
| 151 |
-
padding: 0.8rem;
|
| 152 |
-
font-size: 0.9rem;
|
| 153 |
-
}
|
| 154 |
-
}
|
| 155 |
-
</style>
|
| 156 |
</head>
|
| 157 |
|
| 158 |
<body>
|
| 159 |
-
|
|
|
|
|
|
|
| 160 |
<header>
|
| 161 |
-
|
| 162 |
-
<div class="version">Version 1.1, Jul 14th 2025</div>
|
| 163 |
-
</header>
|
| 164 |
-
|
| 165 |
-
<div class="content">
|
| 166 |
-
<p class="clarification">
|
| 167 |
-
Note: The name of the license indicates that this license was written with AI assistance, not that the protected content is AI-generated.
|
| 168 |
-
</p>
|
| 169 |
-
|
| 170 |
-
<p class="intro">
|
| 171 |
-
Permission is hereby granted, free of charge, to any person obtaining a copy of the Pylar AI software
|
| 172 |
-
and associated documentation files (the "Software"), to visualize and use the Software solely for
|
| 173 |
-
educational and informative purposes, subject to the following restrictions and conditions:
|
| 174 |
-
</p>
|
| 175 |
-
|
| 176 |
-
<div class="section">
|
| 177 |
-
<h2>Redistribution and Use Limitations</h2>
|
| 178 |
-
<ul>
|
| 179 |
-
<li>The Software may not be redistributed, sublicensed, sold, or otherwise transferred to any third
|
| 180 |
-
party without prior written permission from the licensor.</li>
|
| 181 |
-
<li>The Software may not be used for any commercial purposes or for any purpose other than
|
| 182 |
-
education, research, and personal learning.</li>
|
| 183 |
-
<li>The end user is strictly prohibited from using any part of the Software's source code, including
|
| 184 |
-
but not limited to copying, modifying, or creating derivative works based on the code.</li>
|
| 185 |
-
</ul>
|
| 186 |
-
</div>
|
| 187 |
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
<li>The end user may not host or make the Software available to others via any means, including but
|
| 192 |
-
not limited to local servers, cloud services, or online platforms.</li>
|
| 193 |
-
</ul>
|
| 194 |
-
</div>
|
| 195 |
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
<li>The end user is granted the right to use the Software solely for visualizing the outputs and
|
| 200 |
-
results generated by the Software.</li>
|
| 201 |
-
<li>The end user may use the Software to provide marks or feedback on the visualized outputs, solely
|
| 202 |
-
for educational and informative purposes.</li>
|
| 203 |
-
</ul>
|
| 204 |
-
</div>
|
| 205 |
-
|
| 206 |
-
<div class="section">
|
| 207 |
-
<h2>Intellectual Property</h2>
|
| 208 |
-
<ul>
|
| 209 |
-
<li>All intellectual property rights in the Software, including but not limited to copyrights,
|
| 210 |
-
trademarks, and patents, shall remain the exclusive property of the licensor.</li>
|
| 211 |
-
<li>The end user acknowledges that this license does not grant any ownership or rights to the
|
| 212 |
-
Software, other than the limited rights expressly stated herein.</li>
|
| 213 |
-
</ul>
|
| 214 |
-
</div>
|
| 215 |
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
<ul>
|
| 219 |
-
<li>The Software is provided "as is," without warranty of any kind, express or implied, including
|
| 220 |
-
but not limited to the warranties of merchantability, fitness for a particular purpose, and
|
| 221 |
-
non-infringement.</li>
|
| 222 |
-
<li>The licensor shall not be liable for any claim, damages, or other liability arising out of or in
|
| 223 |
-
connection with the use or performance of the Software.</li>
|
| 224 |
-
</ul>
|
| 225 |
-
</div>
|
| 226 |
|
| 227 |
-
|
| 228 |
-
|
| 229 |
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
<tr>
|
| 234 |
-
<th></th>
|
| 235 |
-
<th>✅ Allowed</th>
|
| 236 |
-
<th>❌ Not Allowed</th>
|
| 237 |
-
</tr>
|
| 238 |
-
</thead>
|
| 239 |
-
<tbody>
|
| 240 |
-
<tr>
|
| 241 |
-
<td></td>
|
| 242 |
-
<td>View educational and informative results generated by the Software.</td>
|
| 243 |
-
<td>Redistribute, sublicense, sell, or transfer the Software without prior written
|
| 244 |
-
permission from the licensor.</td>
|
| 245 |
-
</tr>
|
| 246 |
-
<tr>
|
| 247 |
-
<td></td>
|
| 248 |
-
<td>Use the Software only for educational purposes, research, and personal learning.</td>
|
| 249 |
-
<td>Use any part of the source code, including copying, modifying, or creating derivative
|
| 250 |
-
works.</td>
|
| 251 |
-
</tr>
|
| 252 |
-
<tr>
|
| 253 |
-
<td></td>
|
| 254 |
-
<td>Provide marks or feedback on visualized results for educational and informative
|
| 255 |
-
purposes.</td>
|
| 256 |
-
<td>Host or make the Software available to others via local servers, cloud services, or
|
| 257 |
-
online platforms.</td>
|
| 258 |
-
</tr>
|
| 259 |
-
<tr>
|
| 260 |
-
<td>❌ Not Allowed</td>
|
| 261 |
-
<td>Use the Software for commercial or non-educational purposes.</td>
|
| 262 |
-
<td>Claim intellectual property rights to the Software, except for the limited rights
|
| 263 |
-
expressly stated in the license.</td>
|
| 264 |
-
</tr>
|
| 265 |
-
<tr>
|
| 266 |
-
<td></td>
|
| 267 |
-
<td>Hold the licensor liable for claims, damages, or other liabilities arising from the use
|
| 268 |
-
or performance of the Software.</td>
|
| 269 |
-
<td></td>
|
| 270 |
-
</tr>
|
| 271 |
-
</tbody>
|
| 272 |
-
</table>
|
| 273 |
-
</div>
|
| 274 |
</div>
|
|
|
|
| 275 |
</div>
|
|
|
|
|
|
|
|
|
|
| 276 |
</body>
|
| 277 |
|
| 278 |
</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></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 |
+
<h1 class="htitle" data-badge></h1>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
+
<hpill>
|
| 19 |
+
<span class="title-version" data-version></span>
|
| 20 |
+
</hpill>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
|
| 22 |
+
<p class="subtitle" data-subtitle></p>
|
| 23 |
+
<p class="meta" data-meta></p>
|
| 24 |
+
</header>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
|
| 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></strong>
|
| 34 |
+
<a data-source-url href="#" target="_blank" rel="noreferrer"></a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
</div>
|
| 36 |
+
</div>
|
| 37 |
</div>
|
| 38 |
+
</div>
|
| 39 |
+
|
| 40 |
+
<script src="main.js"></script>
|
| 41 |
</body>
|
| 42 |
|
| 43 |
</html>
|
main.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
async function loadContent() {
|
| 2 |
+
try {
|
| 3 |
+
const response = await fetch("content.json");
|
| 4 |
+
const content = await response.json();
|
| 5 |
+
|
| 6 |
+
// Header
|
| 7 |
+
document.querySelector("[data-title]").textContent = content.title;
|
| 8 |
+
document.querySelector("[data-version]").textContent = content.version;
|
| 9 |
+
document.querySelector("[data-subtitle]").textContent = content.subtitle;
|
| 10 |
+
document.querySelector("[data-meta]").textContent = content.meta;
|
| 11 |
+
document.querySelector("[data-badge]").textContent = content.badge;
|
| 12 |
+
document.title = content.title;
|
| 13 |
+
|
| 14 |
+
// Source
|
| 15 |
+
const sourceUrlEl = document.querySelector("[data-source-url]");
|
| 16 |
+
sourceUrlEl.href = content.sourceUrl;
|
| 17 |
+
sourceUrlEl.textContent = content.sourceUrl || "No source available";
|
| 18 |
+
document.querySelector("[data-source-text]").textContent = content.sourceText;
|
| 19 |
+
|
| 20 |
+
// Sections
|
| 21 |
+
const sectionsContainer = document.querySelector("[data-sections]");
|
| 22 |
+
content.sections.forEach((section) => {
|
| 23 |
+
const sectionEl = document.createElement("div");
|
| 24 |
+
sectionEl.className = "section";
|
| 25 |
+
sectionEl.innerHTML = `
|
| 26 |
+
<div class="section-label">${content.sectionLabel}</div>
|
| 27 |
+
<h2>${section.title}</h2>
|
| 28 |
+
${Array.isArray(section.content)
|
| 29 |
+
? `<ul>${section.content.map((item) => `<li>${item}</li>`).join("")}</ul>`
|
| 30 |
+
: `<p>${section.content}</p>`
|
| 31 |
+
}
|
| 32 |
+
`;
|
| 33 |
+
sectionsContainer.appendChild(sectionEl);
|
| 34 |
+
});
|
| 35 |
+
|
| 36 |
+
// Side panel
|
| 37 |
+
const sidePanel = document.querySelector("[data-sidepanel]");
|
| 38 |
+
sidePanel.innerHTML = `
|
| 39 |
+
<div class="side-card">
|
| 40 |
+
<div class="pill">
|
| 41 |
+
<span class="pill-dot"></span>
|
| 42 |
+
${content.sidePanel.pill}
|
| 43 |
+
</div>
|
| 44 |
+
<h3 class="side-title">${content.sidePanel.principles.title}</h3>
|
| 45 |
+
<div class="principles-list" data-principles></div>
|
| 46 |
+
</div>
|
| 47 |
+
<div class="side-card">
|
| 48 |
+
<h3 class="side-title">${content.sidePanel.snapshot.title}</h3>
|
| 49 |
+
<div class="meta-grid">
|
| 50 |
+
${content.sidePanel.snapshot.items
|
| 51 |
+
.map(([key, value]) => `
|
| 52 |
+
<div class="meta-item">
|
| 53 |
+
<span>${key}</span>
|
| 54 |
+
<span>${value}</span>
|
| 55 |
+
</div>
|
| 56 |
+
`)
|
| 57 |
+
.join("")}
|
| 58 |
+
</div>
|
| 59 |
+
</div>
|
| 60 |
+
<div class="side-card">
|
| 61 |
+
<h3 class="side-title">${content.sidePanel.hint.title}</h3>
|
| 62 |
+
<p class="side-text">${content.sidePanel.hint.text}</p>
|
| 63 |
+
</div>
|
| 64 |
+
`;
|
| 65 |
+
|
| 66 |
+
// Render principles with SVG icons
|
| 67 |
+
const principlesList = document.querySelector("[data-principles]");
|
| 68 |
+
if (content.sidePanel.principles.items) {
|
| 69 |
+
const items = content.sidePanel.principles.items;
|
| 70 |
+
const allowedItems = items.filter(item => item.type === 'allow');
|
| 71 |
+
const avoidItems = items.filter(item => item.type === 'avoid');
|
| 72 |
+
|
| 73 |
+
principlesList.innerHTML = `
|
| 74 |
+
<div class="permissions-group">
|
| 75 |
+
${allowedItems.map(item => `
|
| 76 |
+
<div class="permission-item">
|
| 77 |
+
<img src="assets/correct.svg" width="16" height="16" alt="Allowed" />
|
| 78 |
+
<span>${item.text}</span>
|
| 79 |
+
</div>
|
| 80 |
+
`).join('')}
|
| 81 |
+
</div>
|
| 82 |
+
<div class="permissions-group avoid">
|
| 83 |
+
${avoidItems.map(item => `
|
| 84 |
+
<div class="permission-item">
|
| 85 |
+
<img src="assets/avoid.svg" width="16" height="16" alt="Prohibited" />
|
| 86 |
+
<span>${item.text}</span>
|
| 87 |
+
</div>
|
| 88 |
+
`).join('')}
|
| 89 |
+
</div>
|
| 90 |
+
`;
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
} catch (error) {
|
| 94 |
+
console.error("Error loading content:", error);
|
| 95 |
+
document.body.innerHTML = "<h1>Error loading license content</h1>";
|
| 96 |
+
}
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
+
loadContent();
|
styles.css
ADDED
|
@@ -0,0 +1,337 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 styles */
|
| 60 |
+
header {
|
| 61 |
+
display: flex;
|
| 62 |
+
flex-direction: column;
|
| 63 |
+
gap: 8px;
|
| 64 |
+
margin-bottom: 20px;
|
| 65 |
+
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
| 66 |
+
padding-bottom: 16px;
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
.htitle {
|
| 70 |
+
font-size: 22px;
|
| 71 |
+
font-weight: 650;
|
| 72 |
+
letter-spacing: 0.04em;
|
| 73 |
+
text-transform: uppercase;
|
| 74 |
+
display: flex;
|
| 75 |
+
flex-wrap: wrap;
|
| 76 |
+
align-items: center;
|
| 77 |
+
gap: 8px;
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
hpill {
|
| 81 |
+
font-size: 22px;
|
| 82 |
+
font-weight: 650;
|
| 83 |
+
letter-spacing: 0.04em;
|
| 84 |
+
text-transform: uppercase;
|
| 85 |
+
display: flex;
|
| 86 |
+
flex-wrap: wrap;
|
| 87 |
+
align-items: center;
|
| 88 |
+
gap: 8px;
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
.title-version {
|
| 92 |
+
font-size: 12px;
|
| 93 |
+
font-weight: 400;
|
| 94 |
+
color: var(--accent);
|
| 95 |
+
padding: 3px 9px;
|
| 96 |
+
border-radius: 999px;
|
| 97 |
+
background: var(--accent-soft);
|
| 98 |
+
border: 1px solid rgba(230, 57, 70, 0.45);
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
.subtitle {
|
| 102 |
+
font-size: 13px;
|
| 103 |
+
color: var(--text-muted);
|
| 104 |
+
max-width: 580px;
|
| 105 |
+
line-height: 1.5;
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
.meta {
|
| 109 |
+
font-size: 10px;
|
| 110 |
+
color: var(--text-muted);
|
| 111 |
+
text-transform: uppercase;
|
| 112 |
+
letter-spacing: 0.16em;
|
| 113 |
+
margin-top: 2px;
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
/* Main content */
|
| 117 |
+
main {
|
| 118 |
+
display: grid;
|
| 119 |
+
grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.9fr);
|
| 120 |
+
gap: 20px;
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
.license-content {
|
| 124 |
+
font-size: 14px;
|
| 125 |
+
line-height: 1.7;
|
| 126 |
+
color: var(--text-main);
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
.license-content h2 {
|
| 130 |
+
font-size: 15px;
|
| 131 |
+
font-weight: 600;
|
| 132 |
+
margin: 16px 0 8px;
|
| 133 |
+
display: flex;
|
| 134 |
+
align-items: center;
|
| 135 |
+
gap: 8px;
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
.license-content h2::before {
|
| 139 |
+
content: "";
|
| 140 |
+
width: 18px;
|
| 141 |
+
height: 1px;
|
| 142 |
+
background: linear-gradient(90deg, var(--accent), transparent);
|
| 143 |
+
}
|
| 144 |
+
|
| 145 |
+
.license-content p {
|
| 146 |
+
margin-bottom: 10px;
|
| 147 |
+
color: var(--text-main);
|
| 148 |
+
}
|
| 149 |
+
|
| 150 |
+
.license-content ul {
|
| 151 |
+
margin: 6px 0 12px 18px;
|
| 152 |
+
list-style: none;
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
.license-content li {
|
| 156 |
+
position: relative;
|
| 157 |
+
margin-bottom: 6px;
|
| 158 |
+
color: var(--text-muted);
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
.license-content li::before {
|
| 162 |
+
content: "→";
|
| 163 |
+
position: absolute;
|
| 164 |
+
left: -14px;
|
| 165 |
+
color: var(--accent);
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
.section-label {
|
| 169 |
+
font-size: 11px;
|
| 170 |
+
text-transform: uppercase;
|
| 171 |
+
letter-spacing: 0.18em;
|
| 172 |
+
color: var(--text-muted);
|
| 173 |
+
margin-bottom: 2px;
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
/* Side panel */
|
| 177 |
+
.pill {
|
| 178 |
+
display: inline-flex;
|
| 179 |
+
align-items: center;
|
| 180 |
+
gap: 6px;
|
| 181 |
+
font-size: 11px;
|
| 182 |
+
color: var(--accent);
|
| 183 |
+
background: rgba(230, 57, 70, 0.08);
|
| 184 |
+
border-radius: 999px;
|
| 185 |
+
padding: 4px 10px;
|
| 186 |
+
border: 1px solid rgba(230, 57, 70, 0.3);
|
| 187 |
+
margin-bottom: 8px;
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
.pill-dot {
|
| 191 |
+
width: 6px;
|
| 192 |
+
height: 6px;
|
| 193 |
+
border-radius: 999px;
|
| 194 |
+
background: var(--accent);
|
| 195 |
+
}
|
| 196 |
+
|
| 197 |
+
.side-panel {
|
| 198 |
+
border-radius: 16px;
|
| 199 |
+
padding: 14px 14px 12px;
|
| 200 |
+
background: linear-gradient(
|
| 201 |
+
145deg,
|
| 202 |
+
rgba(255, 255, 255, 0.02),
|
| 203 |
+
rgba(0, 0, 0, 0.4)
|
| 204 |
+
);
|
| 205 |
+
border: 1px solid var(--border-soft);
|
| 206 |
+
display: flex;
|
| 207 |
+
flex-direction: column;
|
| 208 |
+
gap: 12px;
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
.side-card {
|
| 212 |
+
padding: 10px 10px 9px;
|
| 213 |
+
border-radius: 13px;
|
| 214 |
+
background: rgba(5, 7, 12, 0.9);
|
| 215 |
+
border: 1px solid rgba(255, 255, 255, 0.04);
|
| 216 |
+
}
|
| 217 |
+
|
| 218 |
+
.side-title {
|
| 219 |
+
font-size: 12px;
|
| 220 |
+
font-weight: 600;
|
| 221 |
+
margin-bottom: 4px;
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
.side-text {
|
| 225 |
+
font-size: 12px;
|
| 226 |
+
color: var(--text-muted);
|
| 227 |
+
line-height: 1.5;
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
+
/* Permissions list */
|
| 231 |
+
.permissions-group {
|
| 232 |
+
margin-bottom: 12px;
|
| 233 |
+
}
|
| 234 |
+
|
| 235 |
+
.permissions-group:last-child {
|
| 236 |
+
margin-bottom: 0;
|
| 237 |
+
}
|
| 238 |
+
|
| 239 |
+
.permissions-group.avoid {
|
| 240 |
+
padding-top: 8px;
|
| 241 |
+
border-top: 1px solid rgba(255, 255, 255, 0.06);
|
| 242 |
+
}
|
| 243 |
+
|
| 244 |
+
.permission-item {
|
| 245 |
+
display: flex;
|
| 246 |
+
align-items: center;
|
| 247 |
+
gap: 8px;
|
| 248 |
+
margin-bottom: 6px;
|
| 249 |
+
font-family: monospace;
|
| 250 |
+
font-size: 13px;
|
| 251 |
+
}
|
| 252 |
+
|
| 253 |
+
.permission-item span {
|
| 254 |
+
color: var(--text-muted);
|
| 255 |
+
}
|
| 256 |
+
|
| 257 |
+
.permissions-group.avoid .permission-item span {
|
| 258 |
+
color: #fca5a5;
|
| 259 |
+
}
|
| 260 |
+
|
| 261 |
+
.meta-grid {
|
| 262 |
+
display: grid;
|
| 263 |
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
| 264 |
+
gap: 8px;
|
| 265 |
+
margin-top: 6px;
|
| 266 |
+
}
|
| 267 |
+
|
| 268 |
+
.meta-item {
|
| 269 |
+
font-size: 11px;
|
| 270 |
+
color: var(--text-muted);
|
| 271 |
+
display: flex;
|
| 272 |
+
flex-direction: column;
|
| 273 |
+
gap: 2px;
|
| 274 |
+
}
|
| 275 |
+
|
| 276 |
+
.meta-item span:first-child {
|
| 277 |
+
text-transform: uppercase;
|
| 278 |
+
letter-spacing: 0.16em;
|
| 279 |
+
font-size: 10px;
|
| 280 |
+
color: rgba(158, 163, 181, 0.75);
|
| 281 |
+
}
|
| 282 |
+
|
| 283 |
+
a {
|
| 284 |
+
color: var(--accent);
|
| 285 |
+
text-decoration: none;
|
| 286 |
+
border-bottom: 1px solid rgba(230, 57, 70, 0.4);
|
| 287 |
+
}
|
| 288 |
+
|
| 289 |
+
a:hover {
|
| 290 |
+
border-bottom-color: var(--accent);
|
| 291 |
+
}
|
| 292 |
+
|
| 293 |
+
.source-block {
|
| 294 |
+
margin-top: 10px;
|
| 295 |
+
font-size: 12px;
|
| 296 |
+
padding: 8px 10px;
|
| 297 |
+
border-radius: var(--radius-sm);
|
| 298 |
+
background: var(--code-bg);
|
| 299 |
+
border: 1px solid rgba(255, 255, 255, 0.04);
|
| 300 |
+
color: var(--text-muted);
|
| 301 |
+
word-break: break-all;
|
| 302 |
+
}
|
| 303 |
+
|
| 304 |
+
/* Responsive */
|
| 305 |
+
@media (min-width: 900px) {
|
| 306 |
+
.htitle {
|
| 307 |
+
font-size: 28px;
|
| 308 |
+
}
|
| 309 |
+
}
|
| 310 |
+
|
| 311 |
+
@media (max-width: 900px) {
|
| 312 |
+
body {
|
| 313 |
+
padding: 16px 10px;
|
| 314 |
+
}
|
| 315 |
+
|
| 316 |
+
.card {
|
| 317 |
+
padding: 20px 16px 18px;
|
| 318 |
+
}
|
| 319 |
+
|
| 320 |
+
main {
|
| 321 |
+
grid-template-columns: minmax(0, 1fr);
|
| 322 |
+
}
|
| 323 |
+
}
|
| 324 |
+
|
| 325 |
+
@media (max-width: 600px) {
|
| 326 |
+
.htitle {
|
| 327 |
+
font-size: 18px;
|
| 328 |
+
}
|
| 329 |
+
|
| 330 |
+
.subtitle {
|
| 331 |
+
font-size: 12px;
|
| 332 |
+
}
|
| 333 |
+
|
| 334 |
+
.license-content {
|
| 335 |
+
font-size: 13px;
|
| 336 |
+
}
|
| 337 |
+
}
|