Commit
·
65a93bf
1
Parent(s):
150f80e
Design Update
Browse files- .gitattributes +1 -1
- README.md +5 -5
- assets/avoid.svg +7 -0
- assets/correct.svg +4 -0
- content.json +90 -0
- index.html +30 -253
- main.js +99 -0
- styles.css +387 -0
.gitattributes
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 1 |
+
pylarai3rdpartylicense/styles.css*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
| 1 |
---
|
| 2 |
-
title: Scientific Commercial
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
license: other
|
| 9 |
---
|
| 10 |
|
| 11 |
-
|
|
|
|
| 1 |
---
|
| 2 |
+
title: Pylar AI Creative ML Scientific and Commercial License
|
| 3 |
+
emoji: 🏛️
|
| 4 |
+
colorFrom: indigo
|
| 5 |
+
colorTo: indigo
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
license: other
|
| 9 |
---
|
| 10 |
|
| 11 |
+
Licenses written by PylarAI. Important: If your project uses this licenses, does not means the code or contents of the project was generated with AI. Just the License is written with PylarAI.
|
assets/avoid.svg
ADDED
|
|
assets/correct.svg
ADDED
|
|
content.json
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"title": "Pylar AI Creative ML Scientific and Commercial License",
|
| 3 |
+
"version": "Version 03272024",
|
| 4 |
+
"subtitle": "Permissive commercial license with attribution requirements and financial advisory prohibition.",
|
| 5 |
+
"meta": "SOFTWARE LICENSE AGREEMENT / SCIENTIFIC & COMMERCIAL",
|
| 6 |
+
"badge": "PYLAR SCIENTIFIC COMMERCIAL LICENSE",
|
| 7 |
+
"sectionLabel": "Permission",
|
| 8 |
+
"sourceUrl": "https://huggingface.co/spaces/superdatas/scientific-commercial-license",
|
| 9 |
+
"sourceText": "Source:",
|
| 10 |
+
"sections": [
|
| 11 |
+
{
|
| 12 |
+
"title": "Copyright",
|
| 13 |
+
"content": "2024 ©, All Rights Reserved. Miguel Gargallo."
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"title": "1. Permission",
|
| 17 |
+
"content": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions."
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"title": "2. Conditions",
|
| 21 |
+
"content": [
|
| 22 |
+
"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
|
| 23 |
+
"Any work using, copying, modifying, merging, publishing, distributing, sublicensing, and/or selling copies of the Software must explicitly acknowledge \"Miguel Gargallo\" as the original author of this work. Failure to meet this condition will be considered a violation of this license.",
|
| 24 |
+
"The file in which this license is included (License.md) must remain unmodified. Any modifications to this file will be considered a violation of this license.",
|
| 25 |
+
"The Software may not be used to provide financial advisory services, whether directly or indirectly. Any such use will be considered a violation of this license."
|
| 26 |
+
]
|
| 27 |
+
},
|
| 28 |
+
{
|
| 29 |
+
"title": "3. Disclaimer",
|
| 30 |
+
"content": "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 noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the Software or the use or other dealings in the Software."
|
| 31 |
+
}
|
| 32 |
+
],
|
| 33 |
+
"sidePanel": {
|
| 34 |
+
"pill": "✅ Full Commercial | 🚫 No Finance",
|
| 35 |
+
"principles": {
|
| 36 |
+
"title": "Permissions & Limits",
|
| 37 |
+
"items": [
|
| 38 |
+
{
|
| 39 |
+
"type": "allow",
|
| 40 |
+
"text": "Full commercial use"
|
| 41 |
+
},
|
| 42 |
+
{
|
| 43 |
+
"type": "allow",
|
| 44 |
+
"text": "Copy, modify, distribute"
|
| 45 |
+
},
|
| 46 |
+
{
|
| 47 |
+
"type": "allow",
|
| 48 |
+
"text": "Publish & sublicense"
|
| 49 |
+
},
|
| 50 |
+
{
|
| 51 |
+
"type": "avoid",
|
| 52 |
+
"text": "No financial advisory"
|
| 53 |
+
},
|
| 54 |
+
{
|
| 55 |
+
"type": "avoid",
|
| 56 |
+
"text": "Author attribution required"
|
| 57 |
+
},
|
| 58 |
+
{
|
| 59 |
+
"type": "avoid",
|
| 60 |
+
"text": "License file unmodified"
|
| 61 |
+
}
|
| 62 |
+
]
|
| 63 |
+
},
|
| 64 |
+
"snapshot": {
|
| 65 |
+
"title": "License Snapshot",
|
| 66 |
+
"items": [
|
| 67 |
+
[
|
| 68 |
+
"Status",
|
| 69 |
+
"Active v03272024"
|
| 70 |
+
],
|
| 71 |
+
[
|
| 72 |
+
"Scope",
|
| 73 |
+
"Scientific & Commercial"
|
| 74 |
+
],
|
| 75 |
+
[
|
| 76 |
+
"Updated",
|
| 77 |
+
"March 27th 2024"
|
| 78 |
+
],
|
| 79 |
+
[
|
| 80 |
+
"Jurisdiction",
|
| 81 |
+
"Global"
|
| 82 |
+
]
|
| 83 |
+
]
|
| 84 |
+
},
|
| 85 |
+
"hint": {
|
| 86 |
+
"title": "License Validity",
|
| 87 |
+
"text": "Always link to source URL below"
|
| 88 |
+
}
|
| 89 |
+
}
|
| 90 |
+
}
|
index.html
CHANGED
|
@@ -2,265 +2,42 @@
|
|
| 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
|
| 8 |
-
<
|
| 9 |
-
:root {
|
| 10 |
-
--primary: #0077b6;
|
| 11 |
-
--secondary: #023e8a;
|
| 12 |
-
--accent: #caf0f8;
|
| 13 |
-
--light: #f8f9fa;
|
| 14 |
-
--dark: #212529;
|
| 15 |
-
--border: #dee2e6;
|
| 16 |
-
}
|
| 17 |
-
|
| 18 |
-
* {
|
| 19 |
-
margin: 0;
|
| 20 |
-
padding: 0;
|
| 21 |
-
box-sizing: border-box;
|
| 22 |
-
}
|
| 23 |
-
|
| 24 |
-
body {
|
| 25 |
-
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
| 26 |
-
line-height: 1.6;
|
| 27 |
-
color: var(--dark);
|
| 28 |
-
background-color: var(--light);
|
| 29 |
-
padding: 2rem;
|
| 30 |
-
}
|
| 31 |
-
|
| 32 |
-
.container {
|
| 33 |
-
max-width: 850px;
|
| 34 |
-
margin: 0 auto;
|
| 35 |
-
background-color: white;
|
| 36 |
-
border-radius: 12px;
|
| 37 |
-
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
| 38 |
-
overflow: hidden;
|
| 39 |
-
}
|
| 40 |
-
|
| 41 |
-
header {
|
| 42 |
-
background: linear-gradient(120deg, var(--primary), var(--secondary));
|
| 43 |
-
color: white;
|
| 44 |
-
padding: 2.5rem 2rem;
|
| 45 |
-
position: relative;
|
| 46 |
-
}
|
| 47 |
-
|
| 48 |
-
.header-content {
|
| 49 |
-
position: relative;
|
| 50 |
-
z-index: 2;
|
| 51 |
-
}
|
| 52 |
-
|
| 53 |
-
h1 {
|
| 54 |
-
font-size: 2rem;
|
| 55 |
-
margin-bottom: 1rem;
|
| 56 |
-
font-weight: 800;
|
| 57 |
-
line-height: 1.3;
|
| 58 |
-
}
|
| 59 |
-
|
| 60 |
-
.copyright {
|
| 61 |
-
display: inline-block;
|
| 62 |
-
background-color: rgba(255, 255, 255, 0.15);
|
| 63 |
-
padding: 0.4rem 1rem;
|
| 64 |
-
border-radius: 6px;
|
| 65 |
-
margin-top: 1rem;
|
| 66 |
-
font-size: 0.9rem;
|
| 67 |
-
}
|
| 68 |
-
|
| 69 |
-
.version {
|
| 70 |
-
position: absolute;
|
| 71 |
-
bottom: 1rem;
|
| 72 |
-
right: 1rem;
|
| 73 |
-
background: rgba(255, 255, 255, 0.2);
|
| 74 |
-
padding: 0.3rem 0.7rem;
|
| 75 |
-
border-radius: 4px;
|
| 76 |
-
font-size: 0.8rem;
|
| 77 |
-
}
|
| 78 |
-
|
| 79 |
-
.content {
|
| 80 |
-
padding: 2.5rem;
|
| 81 |
-
}
|
| 82 |
-
|
| 83 |
-
.section {
|
| 84 |
-
margin-bottom: 2.5rem;
|
| 85 |
-
}
|
| 86 |
-
|
| 87 |
-
h2 {
|
| 88 |
-
font-size: 1.6rem;
|
| 89 |
-
color: var(--secondary);
|
| 90 |
-
margin-bottom: 1rem;
|
| 91 |
-
padding-bottom: 0.5rem;
|
| 92 |
-
border-bottom: 2px solid var(--accent);
|
| 93 |
-
}
|
| 94 |
-
|
| 95 |
-
h3 {
|
| 96 |
-
font-size: 1.3rem;
|
| 97 |
-
color: var(--primary);
|
| 98 |
-
margin: 1.5rem 0 1rem;
|
| 99 |
-
}
|
| 100 |
-
|
| 101 |
-
p {
|
| 102 |
-
margin-bottom: 1rem;
|
| 103 |
-
font-size: 1.05rem;
|
| 104 |
-
line-height: 1.7;
|
| 105 |
-
}
|
| 106 |
-
|
| 107 |
-
ol {
|
| 108 |
-
padding-left: 1.8rem;
|
| 109 |
-
margin: 1.5rem 0;
|
| 110 |
-
}
|
| 111 |
-
|
| 112 |
-
li {
|
| 113 |
-
margin-bottom: 1rem;
|
| 114 |
-
padding-left: 0.5rem;
|
| 115 |
-
}
|
| 116 |
-
|
| 117 |
-
.divider {
|
| 118 |
-
height: 1px;
|
| 119 |
-
background-color: var(--border);
|
| 120 |
-
margin: 2rem 0;
|
| 121 |
-
position: relative;
|
| 122 |
-
}
|
| 123 |
-
|
| 124 |
-
.divider::before {
|
| 125 |
-
content: "- - - -";
|
| 126 |
-
position: absolute;
|
| 127 |
-
top: 50%;
|
| 128 |
-
left: 50%;
|
| 129 |
-
transform: translate(-50%, -50%);
|
| 130 |
-
background-color: white;
|
| 131 |
-
padding: 0 1rem;
|
| 132 |
-
color: #adb5bd;
|
| 133 |
-
font-size: 0.8rem;
|
| 134 |
-
letter-spacing: 2px;
|
| 135 |
-
}
|
| 136 |
-
|
| 137 |
-
.footer {
|
| 138 |
-
text-align: center;
|
| 139 |
-
padding: 1.5rem;
|
| 140 |
-
background-color: #f8f9fa;
|
| 141 |
-
border-top: 1px solid var(--border);
|
| 142 |
-
}
|
| 143 |
-
|
| 144 |
-
blockquote {
|
| 145 |
-
border-left: 4px solid var(--primary);
|
| 146 |
-
padding: 1rem 1.5rem;
|
| 147 |
-
margin: 1.5rem 0;
|
| 148 |
-
background-color: rgba(0, 119, 182, 0.05);
|
| 149 |
-
color: #495057;
|
| 150 |
-
}
|
| 151 |
-
|
| 152 |
-
a {
|
| 153 |
-
color: var(--primary);
|
| 154 |
-
text-decoration: none;
|
| 155 |
-
font-weight: 500;
|
| 156 |
-
}
|
| 157 |
-
|
| 158 |
-
a:hover {
|
| 159 |
-
text-decoration: underline;
|
| 160 |
-
}
|
| 161 |
-
|
| 162 |
-
.warning {
|
| 163 |
-
background-color: rgba(255, 107, 107, 0.1);
|
| 164 |
-
border-left: 4px solid #ff6b6b;
|
| 165 |
-
padding: 1rem 1.5rem;
|
| 166 |
-
margin: 1rem 0;
|
| 167 |
-
border-radius: 0 4px 4px 0;
|
| 168 |
-
}
|
| 169 |
-
|
| 170 |
-
@media (max-width: 768px) {
|
| 171 |
-
body {
|
| 172 |
-
padding: 1rem;
|
| 173 |
-
}
|
| 174 |
-
|
| 175 |
-
header {
|
| 176 |
-
padding: 1.8rem 1.5rem;
|
| 177 |
-
}
|
| 178 |
-
|
| 179 |
-
h1 {
|
| 180 |
-
font-size: 1.7rem;
|
| 181 |
-
}
|
| 182 |
-
|
| 183 |
-
.content {
|
| 184 |
-
padding: 1.5rem;
|
| 185 |
-
}
|
| 186 |
-
|
| 187 |
-
.version {
|
| 188 |
-
position: static;
|
| 189 |
-
display: block;
|
| 190 |
-
margin-top: 1rem;
|
| 191 |
-
width: fit-content;
|
| 192 |
-
}
|
| 193 |
-
}
|
| 194 |
-
</style>
|
| 195 |
</head>
|
| 196 |
|
| 197 |
<body>
|
| 198 |
-
<div class="
|
| 199 |
-
<
|
| 200 |
-
<div class="
|
| 201 |
-
<
|
| 202 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 203 |
</div>
|
| 204 |
-
<div class="version">Version: 03272024</div>
|
| 205 |
-
</header>
|
| 206 |
-
|
| 207 |
-
<div class="content">
|
| 208 |
-
<div class="section">
|
| 209 |
-
<h2>Permission</h2>
|
| 210 |
-
<p>
|
| 211 |
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
| 212 |
-
documentation files (the "Software"), to deal in the Software without restriction, including without
|
| 213 |
-
limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
| 214 |
-
Software, and to permit persons to whom the Software is furnished to do so, subject to the following
|
| 215 |
-
conditions:
|
| 216 |
-
</p>
|
| 217 |
-
|
| 218 |
-
<h3>Conditions</h3>
|
| 219 |
-
<ol>
|
| 220 |
-
<li>
|
| 221 |
-
The above copyright notice and this permission notice shall be included in all copies or substantial
|
| 222 |
-
portions of the Software.
|
| 223 |
-
</li>
|
| 224 |
-
<li>
|
| 225 |
-
Any work using, copying, modifying, merging, publishing, distributing, sublicensing, and/or selling copies
|
| 226 |
-
of the Software must explicitly acknowledge <span class="highlight"><a href="mailto:superdatas@pylar.org"
|
| 227 |
-
target="_blank" rel="noopener noreferrer">✉️ Superdatas</a></span> as the original author of this work.
|
| 228 |
-
Failure
|
| 229 |
-
to meet this condition will be considered a violation of this license.
|
| 230 |
-
</li>
|
| 231 |
-
<li>
|
| 232 |
-
The file in which this license is included (License.md) must remain unmodified. Any modifications to this
|
| 233 |
-
file will be considered a violation of this license.
|
| 234 |
-
</li>
|
| 235 |
-
<li class="warning">
|
| 236 |
-
The Software may not be used to provide financial advisory services, whether directly or indirectly. Any
|
| 237 |
-
such use will be considered a violation of this license.
|
| 238 |
-
</li>
|
| 239 |
-
</ol>
|
| 240 |
-
</div>
|
| 241 |
-
|
| 242 |
-
<div class="divider"></div>
|
| 243 |
-
|
| 244 |
-
<div class="section">
|
| 245 |
-
<h2>Disclaimer</h2>
|
| 246 |
-
<p>
|
| 247 |
-
The Software is provided "as is", without warranty of any kind, express or implied, including but not limited
|
| 248 |
-
to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall
|
| 249 |
-
the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of
|
| 250 |
-
contract, tort or otherwise, arising from, out of or in connection with the Software or the use or other
|
| 251 |
-
dealings in the Software.
|
| 252 |
-
</p>
|
| 253 |
-
|
| 254 |
-
<blockquote>
|
| 255 |
-
For further details about this license, please visit: <a
|
| 256 |
-
href="https://huggingface.co/spaces/superdatas/scientific-commercial-license" target="_blank"
|
| 257 |
-
rel="noopener noreferrer">https://huggingface.co/spaces/superdatas/scientific-commercial-license</a>
|
| 258 |
-
</blockquote>
|
| 259 |
-
</div>
|
| 260 |
-
|
| 261 |
-
<div class="divider"></div>
|
| 262 |
</div>
|
| 263 |
</div>
|
|
|
|
|
|
|
| 264 |
</body>
|
| 265 |
|
| 266 |
</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,387 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
+
/* FIXED Source Block - FULL RESPONSIVE */
|
| 294 |
+
.source-block {
|
| 295 |
+
margin-top: 20px;
|
| 296 |
+
padding: 12px 16px;
|
| 297 |
+
border-radius: var(--radius-sm);
|
| 298 |
+
background: var(--code-bg);
|
| 299 |
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
| 300 |
+
color: var(--text-muted);
|
| 301 |
+
font-family: monospace;
|
| 302 |
+
font-size: 13px;
|
| 303 |
+
display: flex;
|
| 304 |
+
flex-direction: column;
|
| 305 |
+
gap: 6px;
|
| 306 |
+
}
|
| 307 |
+
|
| 308 |
+
.source-block strong {
|
| 309 |
+
font-weight: 600;
|
| 310 |
+
color: var(--text-main);
|
| 311 |
+
font-size: 12px;
|
| 312 |
+
text-transform: uppercase;
|
| 313 |
+
letter-spacing: 0.1em;
|
| 314 |
+
}
|
| 315 |
+
|
| 316 |
+
.source-block a {
|
| 317 |
+
color: var(--accent) !important;
|
| 318 |
+
text-decoration: none;
|
| 319 |
+
border-bottom: 1px solid rgba(230, 57, 70, 0.4);
|
| 320 |
+
font-size: 12px;
|
| 321 |
+
padding: 4px 0;
|
| 322 |
+
word-break: break-all;
|
| 323 |
+
display: block;
|
| 324 |
+
line-height: 1.4;
|
| 325 |
+
}
|
| 326 |
+
|
| 327 |
+
.source-block a:hover {
|
| 328 |
+
border-bottom-color: var(--accent) !important;
|
| 329 |
+
}
|
| 330 |
+
|
| 331 |
+
/* Responsive */
|
| 332 |
+
@media (min-width: 900px) {
|
| 333 |
+
.htitle {
|
| 334 |
+
font-size: 28px;
|
| 335 |
+
}
|
| 336 |
+
}
|
| 337 |
+
|
| 338 |
+
/* Very small screens */
|
| 339 |
+
@media (max-width: 480px) {
|
| 340 |
+
.source-block {
|
| 341 |
+
padding: 20px;
|
| 342 |
+
margin-top: 28px;
|
| 343 |
+
}
|
| 344 |
+
|
| 345 |
+
.source-block strong {
|
| 346 |
+
font-size: 13px;
|
| 347 |
+
}
|
| 348 |
+
}
|
| 349 |
+
|
| 350 |
+
@media (max-width: 900px) {
|
| 351 |
+
body {
|
| 352 |
+
padding: 16px 10px;
|
| 353 |
+
}
|
| 354 |
+
|
| 355 |
+
.card {
|
| 356 |
+
padding: 20px 16px 18px;
|
| 357 |
+
}
|
| 358 |
+
|
| 359 |
+
.source-block {
|
| 360 |
+
margin-top: 24px;
|
| 361 |
+
padding: 16px 20px;
|
| 362 |
+
gap: 8px;
|
| 363 |
+
}
|
| 364 |
+
|
| 365 |
+
.source-block a {
|
| 366 |
+
font-size: 13px;
|
| 367 |
+
padding: 6px 0;
|
| 368 |
+
}
|
| 369 |
+
|
| 370 |
+
main {
|
| 371 |
+
grid-template-columns: minmax(0, 1fr);
|
| 372 |
+
}
|
| 373 |
+
}
|
| 374 |
+
|
| 375 |
+
@media (max-width: 600px) {
|
| 376 |
+
.htitle {
|
| 377 |
+
font-size: 18px;
|
| 378 |
+
}
|
| 379 |
+
|
| 380 |
+
.subtitle {
|
| 381 |
+
font-size: 12px;
|
| 382 |
+
}
|
| 383 |
+
|
| 384 |
+
.license-content {
|
| 385 |
+
font-size: 13px;
|
| 386 |
+
}
|
| 387 |
+
}
|