Spaces:
Running
Running
Upload folder using huggingface_hub
Browse files- index.html +490 -560
index.html
CHANGED
|
@@ -3,757 +3,687 @@
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
-
<title>
|
| 7 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
|
|
| 8 |
<style>
|
| 9 |
:root {
|
| 10 |
-
--primary: #
|
| 11 |
-
--secondary: #
|
| 12 |
-
--dark: #
|
| 13 |
-
--
|
| 14 |
-
--
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
}
|
| 16 |
|
| 17 |
* {
|
| 18 |
margin: 0;
|
| 19 |
padding: 0;
|
| 20 |
box-sizing: border-box;
|
| 21 |
-
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
| 22 |
}
|
| 23 |
|
| 24 |
body {
|
| 25 |
-
|
| 26 |
-
color: var(--dark);
|
|
|
|
| 27 |
line-height: 1.6;
|
| 28 |
}
|
| 29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
header {
|
| 31 |
-
background: linear-gradient(
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
display: flex;
|
| 35 |
-
justify-content: space-between;
|
| 36 |
-
align-items: center;
|
| 37 |
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
| 38 |
position: sticky;
|
| 39 |
top: 0;
|
| 40 |
z-index: 100;
|
| 41 |
}
|
| 42 |
|
| 43 |
-
.
|
| 44 |
-
font-size: 1.8rem;
|
| 45 |
-
font-weight: bold;
|
| 46 |
display: flex;
|
|
|
|
| 47 |
align-items: center;
|
| 48 |
-
gap: 0.5rem;
|
| 49 |
}
|
| 50 |
|
| 51 |
-
.logo
|
| 52 |
-
|
|
|
|
|
|
|
| 53 |
}
|
| 54 |
|
| 55 |
-
.
|
| 56 |
-
font-
|
| 57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
}
|
| 59 |
|
| 60 |
-
.
|
| 61 |
-
color:
|
| 62 |
-
|
| 63 |
-
font-weight: bold;
|
| 64 |
}
|
| 65 |
|
| 66 |
-
.
|
| 67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
}
|
| 69 |
|
| 70 |
-
.
|
| 71 |
-
|
| 72 |
-
color: #d6336c;
|
| 73 |
-
padding: 1rem;
|
| 74 |
-
text-align: center;
|
| 75 |
-
font-size: 0.9rem;
|
| 76 |
-
border-bottom: 2px solid var(--accent);
|
| 77 |
-
margin-bottom: 2rem;
|
| 78 |
}
|
| 79 |
|
| 80 |
-
.
|
| 81 |
-
|
| 82 |
-
margin: 0 auto;
|
| 83 |
-
padding: 0 1.5rem;
|
| 84 |
}
|
| 85 |
|
| 86 |
.upload-section {
|
| 87 |
-
background-color:
|
| 88 |
border-radius: 12px;
|
| 89 |
-
padding:
|
| 90 |
-
box-shadow: 0
|
| 91 |
-
margin-bottom:
|
| 92 |
}
|
| 93 |
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
|
|
|
|
|
|
| 98 |
}
|
| 99 |
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
}
|
| 105 |
|
| 106 |
-
.upload-
|
| 107 |
-
border:
|
| 108 |
-
border-radius:
|
| 109 |
-
padding:
|
| 110 |
text-align: center;
|
| 111 |
-
cursor: pointer;
|
| 112 |
transition: all 0.3s ease;
|
| 113 |
-
margin-bottom:
|
|
|
|
| 114 |
}
|
| 115 |
|
| 116 |
-
.upload-
|
| 117 |
border-color: var(--primary);
|
| 118 |
-
background-color: rgba(255,
|
| 119 |
}
|
| 120 |
|
| 121 |
-
.upload-
|
| 122 |
-
font-size:
|
| 123 |
color: var(--primary);
|
| 124 |
-
margin-bottom:
|
| 125 |
}
|
| 126 |
|
| 127 |
-
.upload-
|
| 128 |
-
|
| 129 |
-
margin-bottom:
|
|
|
|
| 130 |
}
|
| 131 |
|
| 132 |
-
.
|
| 133 |
-
|
| 134 |
-
font-size: 0.9rem;
|
| 135 |
}
|
| 136 |
|
| 137 |
-
.
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 142 |
}
|
| 143 |
|
| 144 |
-
.
|
| 145 |
-
|
| 146 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 147 |
}
|
| 148 |
|
| 149 |
-
.
|
| 150 |
-
|
| 151 |
-
|
| 152 |
font-weight: 500;
|
|
|
|
| 153 |
}
|
| 154 |
|
| 155 |
-
.
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
border
|
| 159 |
-
|
|
|
|
|
|
|
|
|
|
| 160 |
}
|
| 161 |
|
| 162 |
-
.
|
| 163 |
outline: none;
|
| 164 |
border-color: var(--primary);
|
| 165 |
-
box-shadow: 0 0 0 3px rgba(255, 102, 178, 0.2);
|
| 166 |
}
|
| 167 |
|
| 168 |
-
|
| 169 |
-
background:
|
| 170 |
color: white;
|
| 171 |
-
|
| 172 |
-
padding:
|
| 173 |
-
border-radius:
|
| 174 |
-
|
| 175 |
-
font-weight: bold;
|
| 176 |
-
cursor: pointer;
|
| 177 |
-
transition: all 0.3s ease;
|
| 178 |
-
display: inline-flex;
|
| 179 |
-
align-items: center;
|
| 180 |
-
gap: 0.5rem;
|
| 181 |
}
|
| 182 |
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 186 |
}
|
| 187 |
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
transform: none;
|
| 192 |
-
box-shadow: none;
|
| 193 |
}
|
| 194 |
|
| 195 |
-
.
|
| 196 |
-
|
| 197 |
-
background-color: white;
|
| 198 |
border-radius: 12px;
|
| 199 |
-
padding:
|
| 200 |
-
box-shadow: 0
|
| 201 |
-
margin-bottom: 2rem;
|
| 202 |
}
|
| 203 |
|
| 204 |
.rating-header {
|
| 205 |
display: flex;
|
|
|
|
| 206 |
align-items: center;
|
| 207 |
-
|
| 208 |
-
margin-bottom: 1.5rem;
|
| 209 |
-
}
|
| 210 |
-
|
| 211 |
-
.profile-pic {
|
| 212 |
-
width: 60px;
|
| 213 |
-
height: 60px;
|
| 214 |
-
border-radius: 50%;
|
| 215 |
-
object-fit: cover;
|
| 216 |
-
border: 3px solid var(--secondary);
|
| 217 |
}
|
| 218 |
|
| 219 |
-
.
|
| 220 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 221 |
}
|
| 222 |
|
| 223 |
-
.
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
|
| 227 |
}
|
| 228 |
|
| 229 |
-
.
|
| 230 |
-
|
| 231 |
-
|
|
|
|
|
|
|
|
|
|
| 232 |
}
|
| 233 |
|
| 234 |
-
.rating-
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
color: var(--accent);
|
| 238 |
}
|
| 239 |
|
| 240 |
-
.rating-
|
| 241 |
-
|
|
|
|
|
|
|
| 242 |
}
|
| 243 |
|
| 244 |
-
.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 245 |
display: flex;
|
| 246 |
-
|
| 247 |
-
|
| 248 |
-
|
| 249 |
-
|
|
|
|
| 250 |
}
|
| 251 |
|
| 252 |
-
.
|
| 253 |
-
|
| 254 |
}
|
| 255 |
|
| 256 |
-
.
|
| 257 |
-
font-weight:
|
| 258 |
-
|
| 259 |
}
|
| 260 |
|
| 261 |
-
.
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
background-color: #fff9fb;
|
| 265 |
-
border-left: 4px solid var(--primary);
|
| 266 |
-
border-radius: 0 6px 6px 0;
|
| 267 |
}
|
| 268 |
|
| 269 |
-
.
|
| 270 |
-
|
| 271 |
-
|
| 272 |
-
|
|
|
|
|
|
|
| 273 |
}
|
| 274 |
|
| 275 |
-
.
|
| 276 |
-
margin-top: 1.5rem;
|
| 277 |
text-align: center;
|
| 278 |
}
|
| 279 |
|
| 280 |
-
.
|
| 281 |
-
|
| 282 |
-
|
| 283 |
-
|
| 284 |
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
| 285 |
-
}
|
| 286 |
-
|
| 287 |
-
.preview-video {
|
| 288 |
-
max-width: 100%;
|
| 289 |
-
max-height: 300px;
|
| 290 |
-
border-radius: 8px;
|
| 291 |
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
| 292 |
}
|
| 293 |
|
| 294 |
-
.
|
| 295 |
-
|
| 296 |
-
|
| 297 |
-
|
| 298 |
-
border-top: 2px dashed var(--secondary);
|
| 299 |
}
|
| 300 |
|
| 301 |
-
.
|
| 302 |
-
|
| 303 |
-
margin-bottom: 1rem;
|
| 304 |
-
text-align: center;
|
| 305 |
}
|
| 306 |
|
| 307 |
-
.
|
| 308 |
-
|
| 309 |
-
|
| 310 |
-
|
| 311 |
}
|
| 312 |
|
| 313 |
-
.
|
| 314 |
-
|
| 315 |
-
padding:
|
| 316 |
-
border-
|
| 317 |
-
|
| 318 |
}
|
| 319 |
|
| 320 |
-
.
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
gap: 0.75rem;
|
| 324 |
-
margin-bottom: 0.75rem;
|
| 325 |
}
|
| 326 |
|
| 327 |
-
.
|
| 328 |
-
|
| 329 |
-
|
| 330 |
-
|
| 331 |
-
|
| 332 |
-
border:
|
|
|
|
| 333 |
}
|
| 334 |
|
| 335 |
-
.
|
| 336 |
-
|
| 337 |
-
|
|
|
|
| 338 |
}
|
| 339 |
|
| 340 |
-
.
|
| 341 |
-
|
| 342 |
-
color: var(--accent);
|
| 343 |
-
margin-left: auto;
|
| 344 |
}
|
| 345 |
|
| 346 |
-
.
|
| 347 |
-
|
| 348 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 349 |
}
|
| 350 |
|
| 351 |
-
|
| 352 |
-
|
| 353 |
-
|
| 354 |
-
|
| 355 |
-
|
|
|
|
|
|
|
| 356 |
}
|
| 357 |
|
|
|
|
| 358 |
@media (max-width: 768px) {
|
| 359 |
-
header {
|
| 360 |
flex-direction: column;
|
| 361 |
-
|
| 362 |
-
gap: 0.5rem;
|
| 363 |
-
padding: 1rem;
|
| 364 |
}
|
| 365 |
|
| 366 |
-
.
|
| 367 |
grid-template-columns: 1fr;
|
| 368 |
}
|
| 369 |
|
| 370 |
-
.
|
| 371 |
-
|
| 372 |
-
text-align: center;
|
| 373 |
}
|
| 374 |
|
| 375 |
-
.
|
| 376 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 377 |
}
|
| 378 |
}
|
| 379 |
</style>
|
| 380 |
</head>
|
| 381 |
<body>
|
| 382 |
<header>
|
| 383 |
-
<div class="
|
| 384 |
-
<
|
| 385 |
-
|
| 386 |
-
|
| 387 |
-
|
| 388 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 389 |
</div>
|
| 390 |
</header>
|
| 391 |
|
| 392 |
-
<div class="
|
| 393 |
-
<
|
| 394 |
-
|
| 395 |
-
Proceed at your own risk.
|
| 396 |
</div>
|
| 397 |
|
| 398 |
-
<
|
| 399 |
-
<div class="
|
| 400 |
-
<
|
| 401 |
-
|
| 402 |
-
|
| 403 |
-
|
| 404 |
-
|
| 405 |
-
|
| 406 |
-
|
| 407 |
-
|
| 408 |
-
|
| 409 |
-
|
| 410 |
-
|
| 411 |
-
|
| 412 |
-
<div class="input-group">
|
| 413 |
-
<label for="length">Length (inches)</label>
|
| 414 |
-
<input type="number" id="length" step="0.1" placeholder="Optional">
|
| 415 |
-
</div>
|
| 416 |
-
<div class="input-group">
|
| 417 |
-
<label for="girth">Girth (inches)</label>
|
| 418 |
-
<input type="number" id="girth" step="0.1" placeholder="Optional">
|
| 419 |
-
</div>
|
| 420 |
-
<div class="input-group">
|
| 421 |
-
<label for="width">Width (inches)</label>
|
| 422 |
-
<input type="number" id="width" step="0.1" placeholder="Optional">
|
| 423 |
</div>
|
| 424 |
-
|
| 425 |
-
|
| 426 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 427 |
</div>
|
| 428 |
-
|
| 429 |
-
|
| 430 |
-
|
| 431 |
-
|
| 432 |
-
|
| 433 |
-
|
| 434 |
-
|
| 435 |
-
|
| 436 |
-
|
| 437 |
-
|
| 438 |
-
|
| 439 |
-
<div class="rater-name" id="raterName">Jessica, 19</div>
|
| 440 |
-
<div class="rater-stats" id="raterStats">Seen 247 | Smallest rated: 3.2" | Largest rated: 9.8"</div>
|
| 441 |
</div>
|
| 442 |
-
|
| 443 |
-
</div>
|
| 444 |
|
| 445 |
-
<
|
| 446 |
-
<div class="rating-
|
| 447 |
-
<
|
| 448 |
-
<
|
| 449 |
-
</div>
|
| 450 |
-
<div class="rating-category">
|
| 451 |
-
<span class="category-name">Girth</span>
|
| 452 |
-
<span class="category-score" id="girthScore">8/10</span>
|
| 453 |
-
</div>
|
| 454 |
-
<div class="rating-category">
|
| 455 |
-
<span class="category-name">Aesthetics</span>
|
| 456 |
-
<span class="category-score" id="aestheticsScore">6/10</span>
|
| 457 |
</div>
|
| 458 |
-
|
| 459 |
-
|
| 460 |
-
|
| 461 |
-
</div>
|
| 462 |
-
</div>
|
| 463 |
-
|
| 464 |
-
<div class="feedback">
|
| 465 |
-
<div class="feedback-title">Raw, Unfiltered Feedback:</div>
|
| 466 |
-
<p id="feedbackText">Okay, let's be real here. What you've got is pretty average - not terrible but nothing to write home about either. The length is decent at around 6 inches, but the girth is where you actually shine a bit. It's got some nice thickness that could potentially feel good, though the head shape is a bit weird if I'm being honest. The curve is minimal which is fine, but the skin tone is uneven and that's kind of distracting. Overall, it's serviceable but not something I'd be excited about or remember the next day. Would I be disappointed? No. Would I be impressed? Also no. It's just... there.</p>
|
| 467 |
-
</div>
|
| 468 |
-
|
| 469 |
-
<div class="preview-container" id="previewContainer">
|
| 470 |
-
<!-- Preview will be inserted here -->
|
| 471 |
-
</div>
|
| 472 |
-
|
| 473 |
-
<div class="group-rating" id="groupRating">
|
| 474 |
-
<h3><i class="fas fa-users"></i> SPECIAL BONUS: Ratings from All 100 Girls!</h3>
|
| 475 |
-
<div class="group-raters" id="groupRaters">
|
| 476 |
-
<!-- Group ratings will be inserted here -->
|
| 477 |
</div>
|
| 478 |
-
</
|
| 479 |
</div>
|
| 480 |
-
</
|
| 481 |
|
| 482 |
-
<footer>
|
| 483 |
-
<
|
|
|
|
|
|
|
|
|
|
| 484 |
</footer>
|
| 485 |
|
| 486 |
<script>
|
| 487 |
-
|
| 488 |
-
|
| 489 |
-
|
| 490 |
-
|
| 491 |
-
|
| 492 |
-
|
| 493 |
-
{ id: 5, name: "Ava", age: 18, seen: 201, smallest: 2.9, largest: 9.2, pic: "https://randomuser.me/api/portraits/women/5.jpg" },
|
| 494 |
-
{ id: 6, name: "Isabella", age: 20, seen: 298, smallest: 3.1, largest: 10.0, pic: "https://randomuser.me/api/portraits/women/6.jpg" },
|
| 495 |
-
{ id: 7, name: "Mia", age: 19, seen: 234, smallest: 3.3, largest: 9.7, pic: "https://randomuser.me/api/portraits/women/7.jpg" },
|
| 496 |
-
{ id: 8, name: "Charlotte", age: 18, seen: 187, smallest: 2.7, largest: 8.8, pic: "https://randomuser.me/api/portraits/women/8.jpg" },
|
| 497 |
-
{ id: 9, name: "Amelia", age: 20, seen: 305, smallest: 3.4, largest: 9.9, pic: "https://randomuser.me/api/portraits/women/9.jpg" },
|
| 498 |
-
{ id: 10, name: "Harper", age: 19, seen: 256, smallest: 3.0, largest: 9.3, pic: "https://randomuser.me/api/portraits/women/10.jpg" }
|
| 499 |
-
];
|
| 500 |
-
|
| 501 |
-
// Sample feedback for different sizes
|
| 502 |
-
const feedbacks = {
|
| 503 |
-
small: [
|
| 504 |
-
"Oh honey... where do I even begin? This is honestly one of the smallest I've ever rated. The length is barely there at around 3 inches, and the girth is practically non-existent. It's like a pinky finger but less useful. The shape is okay I guess, but when you're working with this little material, shape doesn't really matter much. I wouldn't even know this was inside me if it wasn't for the awkward fumbling that usually comes with packages this size. The only positive is that it's probably really easy to take all of it orally, not that anyone would want to spend much time down there.",
|
| 505 |
-
"Okay, this is just sad. I've seen middle schoolers with more to offer than this. The length is pathetic, the girth is laughable, and the overall presentation is just... disappointing. It's like someone started making a penis and then gave up halfway through. The skin is okay I suppose, but that's like complimenting the paint job on a bicycle with no wheels. I wouldn't even know what to do with this - it's too small for penetration to be satisfying, and honestly too small to even bother with oral. Maybe just stick to cuddling?",
|
| 506 |
-
"Bless your heart for having the confidence to submit this. I'm trying to be nice here but... wow. This is tiny. Like, 'is it even fully developed?' tiny. The length is barely worth measuring, and the girth is so minimal it's practically two-dimensional. The head is kinda cute in a 'aww look at the baby penis' way, but that's not exactly a compliment. I can't imagine this providing any kind of physical pleasure to anyone, including yourself. Maybe invest in some really good toys to compensate?"
|
| 507 |
-
],
|
| 508 |
-
average: [
|
| 509 |
-
"Okay, let's be real here. What you've got is pretty average - not terrible but nothing to write home about either. The length is decent at around 6 inches, but the girth is where you actually shine a bit. It's got some nice thickness that could potentially feel good, though the head shape is a bit weird if I'm being honest. The curve is minimal which is fine, but the skin tone is uneven and that's kind of distracting. Overall, it's serviceable but not something I'd be excited about or remember the next day. Would I be disappointed? No. Would I be impressed? Also no. It's just... there.",
|
| 510 |
-
"This is the definition of 'meh'. The length is perfectly average at about 5.5 inches, the girth is standard, the shape is unremarkable. It's like the vanilla ice cream of penises - gets the job done but no one's going to request it specifically. The veins are visible but not impressive, the head is proportional but not exciting, and the overall aesthetic is just... fine. It's the kind of penis you forget about five minutes after seeing it. Not bad, not good, just thoroughly mediocre.",
|
| 511 |
-
"Ah, the classic 'perfectly average' package. It's about 6 inches long, decent girth, standard shape - basically what you'd expect if you asked an AI to generate a completely normal penis. There's nothing wrong with it per se, but there's also nothing particularly right about it either. It's like the Toyota Corolla of dicks - reliable but boring. The skin texture is okay, the color is normal, the proportions are fine. It's the kind of penis that makes you think 'yep, that's definitely a penis' and then immediately forget what it looked like."
|
| 512 |
-
],
|
| 513 |
-
large: [
|
| 514 |
-
"Okay, now we're talking! This is a proper, quality penis right here. The length is impressive at around 8 inches, and the girth is absolutely mouthwatering - thick enough to feel amazing but not so thick it becomes a problem. The head is perfectly shaped, the veins are prominent in all the right ways, and the skin looks so smooth I just want to touch it. The slight upward curve is chef's kiss perfection. This is the kind of dick that makes you weak in the knees just looking at it. I can already imagine how good this would feel, and let me tell you - my imagination is VERY active right now. 10/10 would recommend.",
|
| 515 |
-
"Holy shit. This is what we in the business call a 'goldicock' - not too big, not too small, but just right. The length is perfect at about 7.5 inches, the girth is thick enough to stretch but not tear, and the shape is absolutely divine. The way the head flares out slightly, the beautiful vein pattern, the perfect skin tone... it's like Michelangelo sculpted this himself. I can tell just by looking that this would feel incredible inside me - the perfect combination of filling me up completely while still being manageable. This is the kind of dick you show your friends (with permission of course) because it's just that good.",
|
| 516 |
-
"Damn. Just... damn. This is premium-grade dick right here. The length is impressive but not intimidating at around 8.5 inches, and the girth is absolutely perfect - thick enough to make me gasp but not so thick I'd be scared. The shape is exquisite, with just the right amount of curve to hit all the right spots. The head is beautifully defined, the veins are like a roadmap to pleasure, and the skin looks so smooth and delicious. This is the kind of penis that makes me want to drop everything and ride it into the sunset. If this were a restaurant, it would have three Michelin stars. Absolute perfection."
|
| 517 |
-
],
|
| 518 |
-
huge: [
|
| 519 |
-
"Oh my god. I'm equal parts terrified and aroused. This thing is a MONSTER. The length is ridiculous at over 9 inches, and the girth... sweet baby Jesus, the girth. It's like a beer can with a head. I can't decide if I want to worship it or run away screaming. The veins are so prominent they look like they might burst, and the head is so big I'm not sure it would fit in my mouth. This is the kind of dick that comes with its own gravitational pull. It's absolutely magnificent but also kind of scary - like a beautiful natural disaster. I both want to try it and fear for my life at the same time. 10/10 for impressiveness but maybe a 6/10 for practicality unless you're into that kind of extreme play.",
|
| 520 |
-
"What the actual fuck. This isn't a penis, it's a weapon of mass destruction. The length is well over 10 inches, and the girth is absolutely insane - I'm pretty sure I could fit my whole hand around it and still have room. The head is massive, the veins look like they're about to explode, and the sheer weight of this thing must be impressive. This is the kind of dick that gets its own zip code. It's simultaneously the most beautiful and terrifying thing I've ever seen. I have so many questions - like how do you even walk with this thing? Does it have its own insurance policy? I'm equal parts impressed and concerned. Definitely memorable, but maybe not in a 'let's do this every day' kind of way.",
|
| 521 |
-
"Jesus Christ. I didn't know they came this big outside of porn. This thing is a BEAST. The length is well into the 'oh god oh god' territory, and the girth is absolutely ridiculous. It's like someone took a normal penis and pumped it full of steroids. The veins are so pronounced they look like they're about to burst, the head is massive, and the overall presentation is just... overwhelming. This is the kind of dick that makes you question your life choices. It's absolutely magnificent in a 'holy shit that's huge' way, but I'm not entirely convinced it would be pleasurable so much as painful. Still, gotta respect the sheer audacity of nature here. This is a once-in-a-lifetime kind of penis."
|
| 522 |
-
]
|
| 523 |
-
};
|
| 524 |
-
|
| 525 |
-
// DOM elements
|
| 526 |
-
const uploadArea = document.getElementById('uploadArea');
|
| 527 |
-
const fileInput = document.getElementById('fileInput');
|
| 528 |
-
const submitBtn = document.getElementById('submitBtn');
|
| 529 |
-
const results = document.getElementById('results');
|
| 530 |
-
const previewContainer = document.getElementById('previewContainer');
|
| 531 |
-
const groupRating = document.getElementById('groupRating');
|
| 532 |
-
const groupRaters = document.getElementById('groupRaters');
|
| 533 |
-
|
| 534 |
-
// Elements for displaying results
|
| 535 |
-
const raterPic = document.getElementById('raterPic');
|
| 536 |
-
const raterName = document.getElementById('raterName');
|
| 537 |
-
const raterStats = document.getElementById('raterStats');
|
| 538 |
-
const overallScore = document.getElementById('overallScore');
|
| 539 |
-
const lengthScore = document.getElementById('lengthScore');
|
| 540 |
-
const girthScore = document.getElementById('girthScore');
|
| 541 |
-
const aestheticsScore = document.getElementById('aestheticsScore');
|
| 542 |
-
const appealScore = document.getElementById('appealScore');
|
| 543 |
-
const feedbackText = document.getElementById('feedbackText');
|
| 544 |
-
|
| 545 |
-
let uploadedFile = null;
|
| 546 |
-
|
| 547 |
-
// Event listeners
|
| 548 |
-
uploadArea.addEventListener('click', () => fileInput.click());
|
| 549 |
-
uploadArea.addEventListener('dragover', (e) => {
|
| 550 |
-
e.preventDefault();
|
| 551 |
-
uploadArea.style.borderColor = 'var(--primary)';
|
| 552 |
-
uploadArea.style.backgroundColor = 'rgba(255, 102, 178, 0.1)';
|
| 553 |
-
});
|
| 554 |
-
uploadArea.addEventListener('dragleave', () => {
|
| 555 |
-
uploadArea.style.borderColor = 'var(--secondary)';
|
| 556 |
-
uploadArea.style.backgroundColor = 'transparent';
|
| 557 |
-
});
|
| 558 |
-
uploadArea.addEventListener('drop', (e) => {
|
| 559 |
-
e.preventDefault();
|
| 560 |
-
uploadArea.style.borderColor = 'var(--secondary)';
|
| 561 |
-
uploadArea.style.backgroundColor = 'transparent';
|
| 562 |
|
| 563 |
-
|
| 564 |
-
|
| 565 |
-
|
| 566 |
-
|
| 567 |
-
|
| 568 |
-
|
| 569 |
-
|
| 570 |
-
|
| 571 |
-
|
| 572 |
-
|
| 573 |
-
|
| 574 |
-
|
| 575 |
-
|
| 576 |
-
|
| 577 |
-
|
|
|
|
|
|
|
| 578 |
|
| 579 |
-
|
| 580 |
-
|
| 581 |
-
|
| 582 |
}
|
| 583 |
|
| 584 |
-
|
| 585 |
-
|
|
|
|
| 586 |
|
| 587 |
-
|
| 588 |
-
|
|
|
|
| 589 |
|
| 590 |
-
|
| 591 |
-
|
| 592 |
-
|
| 593 |
-
const img = document.createElement('img');
|
| 594 |
-
img.src = e.target.result;
|
| 595 |
-
img.className = 'preview-image';
|
| 596 |
-
previewContainer.appendChild(img);
|
| 597 |
-
};
|
| 598 |
-
reader.readAsDataURL(file);
|
| 599 |
-
} else {
|
| 600 |
-
const video = document.createElement('video');
|
| 601 |
-
video.src = URL.createObjectURL(file);
|
| 602 |
-
video.controls = true;
|
| 603 |
-
video.className = 'preview-video';
|
| 604 |
-
previewContainer.appendChild(video);
|
| 605 |
}
|
| 606 |
|
| 607 |
-
|
| 608 |
-
|
| 609 |
-
|
| 610 |
-
|
| 611 |
-
function generateRating() {
|
| 612 |
-
// Show loading state
|
| 613 |
-
submitBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Generating Rating...';
|
| 614 |
-
submitBtn.disabled = true;
|
| 615 |
|
| 616 |
-
|
| 617 |
-
|
| 618 |
-
|
| 619 |
-
const
|
| 620 |
-
|
| 621 |
-
|
| 622 |
-
const lengthInput = document.getElementById('length').value;
|
| 623 |
-
let lengthInches = lengthInput ? parseFloat(lengthInput) : Math.random() * 4 + 3; // Default 3-7 inches
|
| 624 |
-
|
| 625 |
-
// Determine size category
|
| 626 |
-
let sizeCategory;
|
| 627 |
-
if (lengthInches < 4) sizeCategory = 'small';
|
| 628 |
-
else if (lengthInches < 7) sizeCategory = 'average';
|
| 629 |
-
else if (lengthInches < 9) sizeCategory = 'large';
|
| 630 |
-
else sizeCategory = 'huge';
|
| 631 |
-
|
| 632 |
-
// Generate scores based on category
|
| 633 |
-
let lengthScoreValue, girthScoreValue, aestheticsScoreValue, appealScoreValue;
|
| 634 |
|
| 635 |
-
|
| 636 |
-
|
| 637 |
-
|
| 638 |
-
|
| 639 |
-
|
| 640 |
-
|
| 641 |
-
|
| 642 |
-
|
| 643 |
-
|
| 644 |
-
|
| 645 |
-
aestheticsScoreValue = Math.floor(Math.random() * 4) + 4; // 4-7
|
| 646 |
-
appealScoreValue = Math.floor(Math.random() * 3) + 5; // 5-7
|
| 647 |
-
break;
|
| 648 |
-
case 'large':
|
| 649 |
-
lengthScoreValue = Math.floor(Math.random() * 3) + 7; // 7-9
|
| 650 |
-
girthScoreValue = Math.floor(Math.random() * 3) + 7; // 7-9
|
| 651 |
-
aestheticsScoreValue = Math.floor(Math.random() * 4) + 6; // 6-9
|
| 652 |
-
appealScoreValue = Math.floor(Math.random() * 3) + 7; // 7-9
|
| 653 |
-
break;
|
| 654 |
-
case 'huge':
|
| 655 |
-
lengthScoreValue = Math.floor(Math.random() * 2) + 9; // 9-10
|
| 656 |
-
girthScoreValue = Math.floor(Math.random() * 2) + 9; // 9-10
|
| 657 |
-
aestheticsScoreValue = Math.floor(Math.random() * 3) + 7; // 7-9
|
| 658 |
-
appealScoreValue = Math.floor(Math.random() * 3) + 7; // 7-9 (might be lower for practicality)
|
| 659 |
-
break;
|
| 660 |
}
|
| 661 |
|
| 662 |
-
//
|
| 663 |
-
|
| 664 |
-
const randomFeedback = categoryFeedbacks[Math.floor(Math.random() * categoryFeedbacks.length)];
|
| 665 |
-
|
| 666 |
-
// Update UI with rating
|
| 667 |
-
raterPic.src = rater.pic;
|
| 668 |
-
raterName.textContent = `${rater.name}, ${rater.age}`;
|
| 669 |
-
raterStats.textContent = `Seen ${rater.seen} | Smallest rated: ${rater.smallest}" | Largest rated: ${rater.largest}"`;
|
| 670 |
-
|
| 671 |
-
overallScore.textContent = `${((lengthScoreValue + girthScoreValue + aestheticsScoreValue + appealScoreValue) / 4).toFixed(1)}/10`;
|
| 672 |
-
lengthScore.textContent = `${lengthScoreValue}/10`;
|
| 673 |
-
girthScore.textContent = `${girthScoreValue}/10`;
|
| 674 |
-
aestheticsScore.textContent = `${aestheticsScoreValue}/10`;
|
| 675 |
-
appealScore.textContent = `${appealScoreValue}/10`;
|
| 676 |
|
| 677 |
-
|
|
|
|
|
|
|
| 678 |
|
| 679 |
-
//
|
| 680 |
-
|
| 681 |
|
| 682 |
-
//
|
| 683 |
-
|
| 684 |
-
|
| 685 |
-
|
| 686 |
-
groupRating.style.display = 'none';
|
| 687 |
}
|
| 688 |
|
| 689 |
-
//
|
| 690 |
-
|
| 691 |
-
|
| 692 |
-
|
| 693 |
-
// Scroll to results
|
| 694 |
-
results.scrollIntoView({ behavior: 'smooth' });
|
| 695 |
-
}, 1500);
|
| 696 |
-
}
|
| 697 |
-
|
| 698 |
-
function generateGroupRating(sizeCategory) {
|
| 699 |
-
groupRaters.innerHTML = '';
|
| 700 |
-
groupRating.style.display = 'block';
|
| 701 |
|
| 702 |
-
// Generate
|
| 703 |
-
|
| 704 |
-
const
|
|
|
|
|
|
|
|
|
|
| 705 |
|
| 706 |
-
|
| 707 |
-
|
|
|
|
| 708 |
|
| 709 |
-
|
| 710 |
-
|
| 711 |
-
lengthScoreValue = Math.floor(Math.random() * 3) + 2; // 2-4
|
| 712 |
-
girthScoreValue = Math.floor(Math.random() * 3) + 2; // 2-4
|
| 713 |
-
aestheticsScoreValue = Math.floor(Math.random() * 4) + 3; // 3-6
|
| 714 |
-
appealScoreValue = Math.floor(Math.random() * 3) + 2; // 2-4
|
| 715 |
-
break;
|
| 716 |
-
case 'average':
|
| 717 |
-
lengthScoreValue = Math.floor(Math.random() * 3) + 5; // 5-7
|
| 718 |
-
girthScoreValue = Math.floor(Math.random() * 3) + 5; // 5-7
|
| 719 |
-
aestheticsScoreValue = Math.floor(Math.random() * 4) + 4; // 4-7
|
| 720 |
-
appealScoreValue = Math.floor(Math.random() * 3) + 5; // 5-7
|
| 721 |
-
break;
|
| 722 |
-
case 'large':
|
| 723 |
-
lengthScoreValue = Math.floor(Math.random() * 3) + 7; // 7-9
|
| 724 |
-
girthScoreValue = Math.floor(Math.random() * 3) + 7; // 7-9
|
| 725 |
-
aestheticsScoreValue = Math.floor(Math.random() * 4) + 6; // 6-9
|
| 726 |
-
appealScoreValue = Math.floor(Math.random() * 3) + 7; // 7-9
|
| 727 |
-
break;
|
| 728 |
-
case 'huge':
|
| 729 |
-
lengthScoreValue = Math.floor(Math.random() * 2) + 9; // 9-10
|
| 730 |
-
girthScoreValue = Math.floor(Math.random() * 2) + 9; // 9-10
|
| 731 |
-
aestheticsScoreValue = Math.floor(Math.random() * 3) + 7; // 7-9
|
| 732 |
-
appealScoreValue = Math.floor(Math.random() * 3) + 7; // 7-9 (might be lower for practicality)
|
| 733 |
-
break;
|
| 734 |
-
}
|
| 735 |
|
| 736 |
-
const
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 737 |
|
| 738 |
-
|
| 739 |
-
|
| 740 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 741 |
|
| 742 |
-
|
| 743 |
-
|
| 744 |
-
|
| 745 |
-
|
| 746 |
-
|
| 747 |
-
|
| 748 |
-
|
| 749 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 750 |
</div>
|
| 751 |
-
<div class="group-feedback">"${randomFeedback}"</div>
|
| 752 |
`;
|
| 753 |
|
| 754 |
-
|
| 755 |
}
|
| 756 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 757 |
</script>
|
| 758 |
</body>
|
| 759 |
</html>
|
|
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>RawRatings - Unfiltered NSFW Feedback</title>
|
| 7 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
| 8 |
+
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
|
| 9 |
<style>
|
| 10 |
:root {
|
| 11 |
+
--primary: #ff4081;
|
| 12 |
+
--secondary: #7b1fa2;
|
| 13 |
+
--dark-bg: #121212;
|
| 14 |
+
--darker-bg: #0a0a0a;
|
| 15 |
+
--card-bg: #1e1e1e;
|
| 16 |
+
--text: #f5f5f5;
|
| 17 |
+
--text-light: #b0b0b0;
|
| 18 |
+
--danger: #f44336;
|
| 19 |
+
--warning: #ff9800;
|
| 20 |
+
--success: #4caf50;
|
| 21 |
+
--border: #333;
|
| 22 |
}
|
| 23 |
|
| 24 |
* {
|
| 25 |
margin: 0;
|
| 26 |
padding: 0;
|
| 27 |
box-sizing: border-box;
|
|
|
|
| 28 |
}
|
| 29 |
|
| 30 |
body {
|
| 31 |
+
font-family: 'Roboto', sans-serif;
|
| 32 |
+
background-color: var(--dark-bg);
|
| 33 |
+
color: var(--text);
|
| 34 |
line-height: 1.6;
|
| 35 |
}
|
| 36 |
|
| 37 |
+
.container {
|
| 38 |
+
max-width: 1200px;
|
| 39 |
+
margin: 0 auto;
|
| 40 |
+
padding: 0 20px;
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
header {
|
| 44 |
+
background: linear-gradient(to right, var(--darker-bg), var(--secondary));
|
| 45 |
+
padding: 15px 0;
|
| 46 |
+
border-bottom: 1px solid var(--border);
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
position: sticky;
|
| 48 |
top: 0;
|
| 49 |
z-index: 100;
|
| 50 |
}
|
| 51 |
|
| 52 |
+
.header-content {
|
|
|
|
|
|
|
| 53 |
display: flex;
|
| 54 |
+
justify-content: space-between;
|
| 55 |
align-items: center;
|
|
|
|
| 56 |
}
|
| 57 |
|
| 58 |
+
.logo {
|
| 59 |
+
display: flex;
|
| 60 |
+
align-items: center;
|
| 61 |
+
gap: 10px;
|
| 62 |
}
|
| 63 |
|
| 64 |
+
.logo h1 {
|
| 65 |
+
font-family: 'Montserrat', sans-serif;
|
| 66 |
+
font-weight: 700;
|
| 67 |
+
font-size: 24px;
|
| 68 |
+
background: linear-gradient(to right, var(--primary), #ff79b0);
|
| 69 |
+
-webkit-background-clip: text;
|
| 70 |
+
-webkit-text-fill-color: transparent;
|
| 71 |
}
|
| 72 |
|
| 73 |
+
.logo i {
|
| 74 |
+
color: var(--primary);
|
| 75 |
+
font-size: 28px;
|
|
|
|
| 76 |
}
|
| 77 |
|
| 78 |
+
.warning-banner {
|
| 79 |
+
background-color: var(--warning);
|
| 80 |
+
color: #000;
|
| 81 |
+
text-align: center;
|
| 82 |
+
padding: 10px;
|
| 83 |
+
font-size: 14px;
|
| 84 |
+
font-weight: 500;
|
| 85 |
}
|
| 86 |
|
| 87 |
+
.warning-banner i {
|
| 88 |
+
margin-right: 8px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
}
|
| 90 |
|
| 91 |
+
.main-content {
|
| 92 |
+
padding: 40px 0;
|
|
|
|
|
|
|
| 93 |
}
|
| 94 |
|
| 95 |
.upload-section {
|
| 96 |
+
background-color: var(--card-bg);
|
| 97 |
border-radius: 12px;
|
| 98 |
+
padding: 30px;
|
| 99 |
+
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
|
| 100 |
+
margin-bottom: 40px;
|
| 101 |
}
|
| 102 |
|
| 103 |
+
.section-title {
|
| 104 |
+
font-family: 'Montserrat', sans-serif;
|
| 105 |
+
font-size: 28px;
|
| 106 |
+
margin-bottom: 25px;
|
| 107 |
+
position: relative;
|
| 108 |
+
display: inline-block;
|
| 109 |
}
|
| 110 |
|
| 111 |
+
.section-title:after {
|
| 112 |
+
content: '';
|
| 113 |
+
position: absolute;
|
| 114 |
+
bottom: -8px;
|
| 115 |
+
left: 0;
|
| 116 |
+
width: 60px;
|
| 117 |
+
height: 3px;
|
| 118 |
+
background: linear-gradient(to right, var(--primary), var(--secondary));
|
| 119 |
+
border-radius: 3px;
|
| 120 |
}
|
| 121 |
|
| 122 |
+
.upload-container {
|
| 123 |
+
border: 2px dashed var(--border);
|
| 124 |
+
border-radius: 10px;
|
| 125 |
+
padding: 40px 20px;
|
| 126 |
text-align: center;
|
|
|
|
| 127 |
transition: all 0.3s ease;
|
| 128 |
+
margin-bottom: 25px;
|
| 129 |
+
background-color: rgba(0, 0, 0, 0.2);
|
| 130 |
}
|
| 131 |
|
| 132 |
+
.upload-container:hover {
|
| 133 |
border-color: var(--primary);
|
| 134 |
+
background-color: rgba(255, 64, 129, 0.05);
|
| 135 |
}
|
| 136 |
|
| 137 |
+
.upload-icon {
|
| 138 |
+
font-size: 60px;
|
| 139 |
color: var(--primary);
|
| 140 |
+
margin-bottom: 20px;
|
| 141 |
}
|
| 142 |
|
| 143 |
+
.upload-text {
|
| 144 |
+
font-size: 18px;
|
| 145 |
+
margin-bottom: 20px;
|
| 146 |
+
color: var(--text-light);
|
| 147 |
}
|
| 148 |
|
| 149 |
+
.file-input {
|
| 150 |
+
display: none;
|
|
|
|
| 151 |
}
|
| 152 |
|
| 153 |
+
.upload-btn {
|
| 154 |
+
background: linear-gradient(to right, var(--primary), var(--secondary));
|
| 155 |
+
color: white;
|
| 156 |
+
border: none;
|
| 157 |
+
padding: 12px 30px;
|
| 158 |
+
font-size: 16px;
|
| 159 |
+
font-weight: 500;
|
| 160 |
+
border-radius: 30px;
|
| 161 |
+
cursor: pointer;
|
| 162 |
+
transition: transform 0.2s, box-shadow 0.2s;
|
| 163 |
+
display: inline-flex;
|
| 164 |
+
align-items: center;
|
| 165 |
+
gap: 8px;
|
| 166 |
}
|
| 167 |
|
| 168 |
+
.upload-btn:hover {
|
| 169 |
+
transform: translateY(-2px);
|
| 170 |
+
box-shadow: 0 5px 15px rgba(255, 64, 129, 0.4);
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
+
.measurements-section {
|
| 174 |
+
margin-bottom: 30px;
|
| 175 |
+
}
|
| 176 |
+
|
| 177 |
+
.form-group {
|
| 178 |
+
margin-bottom: 20px;
|
| 179 |
}
|
| 180 |
|
| 181 |
+
.form-group label {
|
| 182 |
+
display: block;
|
| 183 |
+
margin-bottom: 8px;
|
| 184 |
font-weight: 500;
|
| 185 |
+
color: var(--text-light);
|
| 186 |
}
|
| 187 |
|
| 188 |
+
.form-group input {
|
| 189 |
+
width: 100%;
|
| 190 |
+
background-color: var(--darker-bg);
|
| 191 |
+
border: 1px solid var(--border);
|
| 192 |
+
border-radius: 8px;
|
| 193 |
+
padding: 12px 15px;
|
| 194 |
+
color: var(--text);
|
| 195 |
+
font-size: 16px;
|
| 196 |
}
|
| 197 |
|
| 198 |
+
.form-group input:focus {
|
| 199 |
outline: none;
|
| 200 |
border-color: var(--primary);
|
|
|
|
| 201 |
}
|
| 202 |
|
| 203 |
+
.optional-tag {
|
| 204 |
+
background-color: var(--secondary);
|
| 205 |
color: white;
|
| 206 |
+
font-size: 12px;
|
| 207 |
+
padding: 3px 8px;
|
| 208 |
+
border-radius: 4px;
|
| 209 |
+
margin-left: 8px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 210 |
}
|
| 211 |
|
| 212 |
+
.submit-btn {
|
| 213 |
+
background: linear-gradient(to right, var(--secondary), #9c27b0);
|
| 214 |
+
color: white;
|
| 215 |
+
border: none;
|
| 216 |
+
padding: 15px 30px;
|
| 217 |
+
font-size: 18px;
|
| 218 |
+
font-weight: 500;
|
| 219 |
+
border-radius: 30px;
|
| 220 |
+
cursor: pointer;
|
| 221 |
+
width: 100%;
|
| 222 |
+
transition: all 0.3s;
|
| 223 |
+
margin-top: 10px;
|
| 224 |
}
|
| 225 |
|
| 226 |
+
.submit-btn:hover {
|
| 227 |
+
transform: translateY(-3px);
|
| 228 |
+
box-shadow: 0 8px 20px rgba(123, 31, 162, 0.4);
|
|
|
|
|
|
|
| 229 |
}
|
| 230 |
|
| 231 |
+
.ratings-section {
|
| 232 |
+
background-color: var(--card-bg);
|
|
|
|
| 233 |
border-radius: 12px;
|
| 234 |
+
padding: 30px;
|
| 235 |
+
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
|
|
|
|
| 236 |
}
|
| 237 |
|
| 238 |
.rating-header {
|
| 239 |
display: flex;
|
| 240 |
+
justify-content: space-between;
|
| 241 |
align-items: center;
|
| 242 |
+
margin-bottom: 25px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 243 |
}
|
| 244 |
|
| 245 |
+
.rating-count {
|
| 246 |
+
background: var(--primary);
|
| 247 |
+
color: white;
|
| 248 |
+
padding: 5px 15px;
|
| 249 |
+
border-radius: 20px;
|
| 250 |
+
font-weight: 500;
|
| 251 |
}
|
| 252 |
|
| 253 |
+
.ratings-container {
|
| 254 |
+
display: grid;
|
| 255 |
+
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
| 256 |
+
gap: 25px;
|
| 257 |
}
|
| 258 |
|
| 259 |
+
.rating-card {
|
| 260 |
+
background-color: rgba(0, 0, 0, 0.2);
|
| 261 |
+
border-radius: 10px;
|
| 262 |
+
padding: 20px;
|
| 263 |
+
border: 1px solid var(--border);
|
| 264 |
+
transition: transform 0.3s;
|
| 265 |
}
|
| 266 |
|
| 267 |
+
.rating-card:hover {
|
| 268 |
+
transform: translateY(-5px);
|
| 269 |
+
border-color: var(--primary);
|
|
|
|
| 270 |
}
|
| 271 |
|
| 272 |
+
.rating-user {
|
| 273 |
+
display: flex;
|
| 274 |
+
align-items: center;
|
| 275 |
+
margin-bottom: 15px;
|
| 276 |
}
|
| 277 |
|
| 278 |
+
.user-avatar {
|
| 279 |
+
width: 50px;
|
| 280 |
+
height: 50px;
|
| 281 |
+
border-radius: 50%;
|
| 282 |
+
background: linear-gradient(to right, var(--primary), var(--secondary));
|
| 283 |
display: flex;
|
| 284 |
+
align-items: center;
|
| 285 |
+
justify-content: center;
|
| 286 |
+
font-weight: bold;
|
| 287 |
+
font-size: 20px;
|
| 288 |
+
margin-right: 15px;
|
| 289 |
}
|
| 290 |
|
| 291 |
+
.user-info {
|
| 292 |
+
flex: 1;
|
| 293 |
}
|
| 294 |
|
| 295 |
+
.user-name {
|
| 296 |
+
font-weight: 500;
|
| 297 |
+
font-size: 18px;
|
| 298 |
}
|
| 299 |
|
| 300 |
+
.user-age {
|
| 301 |
+
color: var(--text-light);
|
| 302 |
+
font-size: 14px;
|
|
|
|
|
|
|
|
|
|
| 303 |
}
|
| 304 |
|
| 305 |
+
.rating-stats {
|
| 306 |
+
display: flex;
|
| 307 |
+
gap: 20px;
|
| 308 |
+
margin-bottom: 15px;
|
| 309 |
+
padding-bottom: 15px;
|
| 310 |
+
border-bottom: 1px solid var(--border);
|
| 311 |
}
|
| 312 |
|
| 313 |
+
.stat {
|
|
|
|
| 314 |
text-align: center;
|
| 315 |
}
|
| 316 |
|
| 317 |
+
.stat-value {
|
| 318 |
+
font-size: 24px;
|
| 319 |
+
font-weight: 700;
|
| 320 |
+
color: var(--primary);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 321 |
}
|
| 322 |
|
| 323 |
+
.stat-label {
|
| 324 |
+
font-size: 12px;
|
| 325 |
+
color: var(--text-light);
|
| 326 |
+
text-transform: uppercase;
|
|
|
|
| 327 |
}
|
| 328 |
|
| 329 |
+
.rating-content {
|
| 330 |
+
margin-top: 15px;
|
|
|
|
|
|
|
| 331 |
}
|
| 332 |
|
| 333 |
+
.rating-text {
|
| 334 |
+
color: var(--text-light);
|
| 335 |
+
font-size: 15px;
|
| 336 |
+
line-height: 1.7;
|
| 337 |
}
|
| 338 |
|
| 339 |
+
.size-comparison {
|
| 340 |
+
margin-top: 15px;
|
| 341 |
+
padding-top: 15px;
|
| 342 |
+
border-top: 1px dashed var(--border);
|
| 343 |
+
font-size: 14px;
|
| 344 |
}
|
| 345 |
|
| 346 |
+
.size-comparison span {
|
| 347 |
+
color: var(--primary);
|
| 348 |
+
font-weight: 500;
|
|
|
|
|
|
|
| 349 |
}
|
| 350 |
|
| 351 |
+
.footer {
|
| 352 |
+
text-align: center;
|
| 353 |
+
padding: 30px 0;
|
| 354 |
+
color: var(--text-light);
|
| 355 |
+
font-size: 14px;
|
| 356 |
+
border-top: 1px solid var(--border);
|
| 357 |
+
margin-top: 40px;
|
| 358 |
}
|
| 359 |
|
| 360 |
+
.anycoder-link {
|
| 361 |
+
color: var(--primary);
|
| 362 |
+
text-decoration: none;
|
| 363 |
+
font-weight: 500;
|
| 364 |
}
|
| 365 |
|
| 366 |
+
.anycoder-link:hover {
|
| 367 |
+
text-decoration: underline;
|
|
|
|
|
|
|
| 368 |
}
|
| 369 |
|
| 370 |
+
.disclaimer {
|
| 371 |
+
background-color: rgba(244, 67, 54, 0.1);
|
| 372 |
+
border: 1px solid var(--danger);
|
| 373 |
+
border-radius: 8px;
|
| 374 |
+
padding: 15px;
|
| 375 |
+
margin-top: 20px;
|
| 376 |
+
font-size: 14px;
|
| 377 |
}
|
| 378 |
|
| 379 |
+
.disclaimer-title {
|
| 380 |
+
color: var(--danger);
|
| 381 |
+
font-weight: 500;
|
| 382 |
+
margin-bottom: 8px;
|
| 383 |
+
display: flex;
|
| 384 |
+
align-items: center;
|
| 385 |
+
gap: 8px;
|
| 386 |
}
|
| 387 |
|
| 388 |
+
/* Responsive styles */
|
| 389 |
@media (max-width: 768px) {
|
| 390 |
+
.header-content {
|
| 391 |
flex-direction: column;
|
| 392 |
+
gap: 10px;
|
|
|
|
|
|
|
| 393 |
}
|
| 394 |
|
| 395 |
+
.ratings-container {
|
| 396 |
grid-template-columns: 1fr;
|
| 397 |
}
|
| 398 |
|
| 399 |
+
.section-title {
|
| 400 |
+
font-size: 24px;
|
|
|
|
| 401 |
}
|
| 402 |
|
| 403 |
+
.upload-container {
|
| 404 |
+
padding: 30px 15px;
|
| 405 |
+
}
|
| 406 |
+
}
|
| 407 |
+
|
| 408 |
+
@media (max-width: 480px) {
|
| 409 |
+
.upload-section, .ratings-section {
|
| 410 |
+
padding: 20px;
|
| 411 |
+
}
|
| 412 |
+
|
| 413 |
+
.upload-icon {
|
| 414 |
+
font-size: 40px;
|
| 415 |
+
}
|
| 416 |
+
|
| 417 |
+
.upload-text {
|
| 418 |
+
font-size: 16px;
|
| 419 |
+
}
|
| 420 |
+
|
| 421 |
+
.rating-stats {
|
| 422 |
+
flex-wrap: wrap;
|
| 423 |
+
gap: 10px;
|
| 424 |
}
|
| 425 |
}
|
| 426 |
</style>
|
| 427 |
</head>
|
| 428 |
<body>
|
| 429 |
<header>
|
| 430 |
+
<div class="container">
|
| 431 |
+
<div class="header-content">
|
| 432 |
+
<div class="logo">
|
| 433 |
+
<i class="fas fa-venus"></i>
|
| 434 |
+
<h1>RawRatings</h1>
|
| 435 |
+
</div>
|
| 436 |
+
<div class="tagline">
|
| 437 |
+
<p>Unfiltered feedback from our panel of 100 teen girls</p>
|
| 438 |
+
</div>
|
| 439 |
+
</div>
|
| 440 |
</div>
|
| 441 |
</header>
|
| 442 |
|
| 443 |
+
<div class="warning-banner">
|
| 444 |
+
<i class="fas fa-exclamation-triangle"></i>
|
| 445 |
+
WARNING: This app provides unfiltered anatomical critique. Users acknowledge risks of ego damage and emotional trauma.
|
|
|
|
| 446 |
</div>
|
| 447 |
|
| 448 |
+
<main class="main-content">
|
| 449 |
+
<div class="container">
|
| 450 |
+
<section class="upload-section">
|
| 451 |
+
<h2 class="section-title">Upload Your Content</h2>
|
| 452 |
+
|
| 453 |
+
<div class="upload-container" id="dropZone">
|
| 454 |
+
<div class="upload-icon">
|
| 455 |
+
<i class="fas fa-cloud-upload-alt"></i>
|
| 456 |
+
</div>
|
| 457 |
+
<p class="upload-text">Drag & drop your NSFW image or video here</p>
|
| 458 |
+
<button class="upload-btn" id="uploadBtn">
|
| 459 |
+
<i class="fas fa-upload"></i> Choose File
|
| 460 |
+
</button>
|
| 461 |
+
<input type="file" id="fileInput" class="file-input" accept="image/*,video/*">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 462 |
</div>
|
| 463 |
+
|
| 464 |
+
<div class="measurements-section">
|
| 465 |
+
<h3 class="section-title">Optional Measurements</h3>
|
| 466 |
+
|
| 467 |
+
<div class="form-group">
|
| 468 |
+
<label>Length (inches) <span class="optional-tag">Optional</span></label>
|
| 469 |
+
<input type="number" step="0.1" min="0" placeholder="Enter length">
|
| 470 |
+
</div>
|
| 471 |
+
|
| 472 |
+
<div class="form-group">
|
| 473 |
+
<label>Girth (inches) <span class="optional-tag">Optional</span></label>
|
| 474 |
+
<input type="number" step="0.1" min="0" placeholder="Enter girth">
|
| 475 |
+
</div>
|
| 476 |
+
|
| 477 |
+
<div class="form-group">
|
| 478 |
+
<label>Additional Comments <span class="optional-tag">Optional</span></label>
|
| 479 |
+
<input type="text" placeholder="Any specific areas you want rated?">
|
| 480 |
+
</div>
|
| 481 |
</div>
|
| 482 |
+
|
| 483 |
+
<button class="submit-btn" id="submitBtn">
|
| 484 |
+
<i class="fas fa-star"></i> Get Honest Ratings
|
| 485 |
+
</button>
|
| 486 |
+
|
| 487 |
+
<div class="disclaimer">
|
| 488 |
+
<div class="disclaimer-title">
|
| 489 |
+
<i class="fas fa-exclamation-circle"></i>
|
| 490 |
+
Important Notice
|
| 491 |
+
</div>
|
| 492 |
+
<p>Our panel of 100 teen girls will provide brutally honest feedback. Ratings focus on anatomical details including length, girth, size, and appearance. Each rater will share their personal size experiences for context. By submitting, you acknowledge potential emotional impact and consent to unfiltered critique.</p>
|
|
|
|
|
|
|
| 493 |
</div>
|
| 494 |
+
</section>
|
|
|
|
| 495 |
|
| 496 |
+
<section class="ratings-section">
|
| 497 |
+
<div class="rating-header">
|
| 498 |
+
<h2 class="section-title">Honest Ratings</h2>
|
| 499 |
+
<div class="rating-count">1 Rating</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 500 |
</div>
|
| 501 |
+
|
| 502 |
+
<div class="ratings-container" id="ratingsContainer">
|
| 503 |
+
<!-- Ratings will be dynamically added here -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 504 |
</div>
|
| 505 |
+
</section>
|
| 506 |
</div>
|
| 507 |
+
</main>
|
| 508 |
|
| 509 |
+
<footer class="footer">
|
| 510 |
+
<div class="container">
|
| 511 |
+
<p>RawRatings provides unfiltered feedback for educational purposes only. All raters are 18+.</p>
|
| 512 |
+
<p>Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder" class="anycoder-link">anycoder</a></p>
|
| 513 |
+
</div>
|
| 514 |
</footer>
|
| 515 |
|
| 516 |
<script>
|
| 517 |
+
document.addEventListener('DOMContentLoaded', function() {
|
| 518 |
+
const fileInput = document.getElementById('fileInput');
|
| 519 |
+
const uploadBtn = document.getElementById('uploadBtn');
|
| 520 |
+
const dropZone = document.getElementById('dropZone');
|
| 521 |
+
const submitBtn = document.getElementById('submitBtn');
|
| 522 |
+
const ratingsContainer = document.getElementById('ratingsContainer');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 523 |
|
| 524 |
+
// Upload button click event
|
| 525 |
+
uploadBtn.addEventListener('click', () => {
|
| 526 |
+
fileInput.click();
|
| 527 |
+
});
|
| 528 |
+
|
| 529 |
+
// File input change event
|
| 530 |
+
fileInput.addEventListener('change', (e) => {
|
| 531 |
+
if(e.target.files.length > 0) {
|
| 532 |
+
const fileName = e.target.files[0].name;
|
| 533 |
+
dropZone.querySelector('.upload-text').textContent = `Selected: ${fileName}`;
|
| 534 |
+
}
|
| 535 |
+
});
|
| 536 |
+
|
| 537 |
+
// Drag and drop functionality
|
| 538 |
+
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
|
| 539 |
+
dropZone.addEventListener(eventName, preventDefaults, false);
|
| 540 |
+
});
|
| 541 |
|
| 542 |
+
function preventDefaults(e) {
|
| 543 |
+
e.preventDefault();
|
| 544 |
+
e.stopPropagation();
|
| 545 |
}
|
| 546 |
|
| 547 |
+
['dragenter', 'dragover'].forEach(eventName => {
|
| 548 |
+
dropZone.addEventListener(eventName, highlight, false);
|
| 549 |
+
});
|
| 550 |
|
| 551 |
+
['dragleave', 'drop'].forEach(eventName => {
|
| 552 |
+
dropZone.addEventListener(eventName, unhighlight, false);
|
| 553 |
+
});
|
| 554 |
|
| 555 |
+
function highlight() {
|
| 556 |
+
dropZone.style.borderColor = 'var(--primary)';
|
| 557 |
+
dropZone.style.backgroundColor = 'rgba(255, 64, 129, 0.1)';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 558 |
}
|
| 559 |
|
| 560 |
+
function unhighlight() {
|
| 561 |
+
dropZone.style.borderColor = 'var(--border)';
|
| 562 |
+
dropZone.style.backgroundColor = 'rgba(0, 0, 0, 0.2)';
|
| 563 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 564 |
|
| 565 |
+
dropZone.addEventListener('drop', handleDrop, false);
|
| 566 |
+
|
| 567 |
+
function handleDrop(e) {
|
| 568 |
+
const dt = e.dataTransfer;
|
| 569 |
+
const files = dt.files;
|
| 570 |
+
fileInput.files = files;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 571 |
|
| 572 |
+
if(files.length > 0) {
|
| 573 |
+
dropZone.querySelector('.upload-text').textContent = `Selected: ${files[0].name}`;
|
| 574 |
+
}
|
| 575 |
+
}
|
| 576 |
+
|
| 577 |
+
// Submit button click event
|
| 578 |
+
submitBtn.addEventListener('click', () => {
|
| 579 |
+
if(!fileInput.files.length) {
|
| 580 |
+
alert('Please select an image or video first!');
|
| 581 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 582 |
}
|
| 583 |
|
| 584 |
+
// Clear previous ratings
|
| 585 |
+
ratingsContainer.innerHTML = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 586 |
|
| 587 |
+
// Generate random ratings (1 in 100 chance for all 100 ratings)
|
| 588 |
+
const showAllRatings = Math.random() < 0.01; // 1% chance
|
| 589 |
+
const ratingCount = showAllRatings ? 100 : 1;
|
| 590 |
|
| 591 |
+
// Update rating count display
|
| 592 |
+
document.querySelector('.rating-count').textContent = `${ratingCount} Rating${ratingCount > 1 ? 's' : ''}`;
|
| 593 |
|
| 594 |
+
// Generate ratings
|
| 595 |
+
for(let i = 0; i < ratingCount; i++) {
|
| 596 |
+
const rating = generateRating();
|
| 597 |
+
ratingsContainer.appendChild(createRatingCard(rating));
|
|
|
|
| 598 |
}
|
| 599 |
|
| 600 |
+
// Scroll to ratings section
|
| 601 |
+
document.querySelector('.ratings-section').scrollIntoView({ behavior: 'smooth' });
|
| 602 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 603 |
|
| 604 |
+
// Generate a random rating
|
| 605 |
+
function generateRating() {
|
| 606 |
+
const names = ['Emma', 'Sophia', 'Olivia', 'Ava', 'Isabella', 'Mia', 'Charlotte', 'Amelia', 'Harper', 'Evelyn'];
|
| 607 |
+
const surnames = ['Smith', 'Johnson', 'Williams', 'Brown', 'Jones', 'Garcia', 'Miller', 'Davis', 'Rodriguez', 'Martinez'];
|
| 608 |
+
const name = `${names[Math.floor(Math.random() * names.length)]} ${surnames[Math.floor(Math.random() * surnames.length)]}`;
|
| 609 |
+
const age = Math.floor(Math.random() * 3) + 18; // 18-20
|
| 610 |
|
| 611 |
+
const lengthRating = (Math.random() * 4 + 1).toFixed(1); // 1.0-5.0
|
| 612 |
+
const girthRating = (Math.random() * 4 + 1).toFixed(1); // 1.0-5.0
|
| 613 |
+
const overallRating = ((parseFloat(lengthRating) + parseFloat(girthRating)) / 2).toFixed(1);
|
| 614 |
|
| 615 |
+
const minSize = (Math.random() * 2 + 2).toFixed(1); // 2.0-4.0 inches
|
| 616 |
+
const maxSize = (Math.random() * 4 + 6).toFixed(1); // 6.0-10.0 inches
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 617 |
|
| 618 |
+
const comments = [
|
| 619 |
+
`Honestly, the length is decent but the girth is what really stands out. It's got a nice shape that would probably feel good, but the head is a bit too pronounced for my taste. I've seen thicker but this is definitely above average.`,
|
| 620 |
+
`The size is pretty average overall. Length is okay but nothing special. The girth is where it falls short for me - I prefer something with more substance. The veins are noticeable which is a plus, but the color is a bit off-putting.`,
|
| 621 |
+
`Wow, this is impressive! The length is well above average and the girth is substantial. The curve is perfect and the head is nicely defined. This is definitely in the top 10% of what I've seen. Would be intimidating in person!`,
|
| 622 |
+
`I'm not going to sugarcoat it - this is on the smaller side. The length is below average and there's not much girth to speak of. The shape is fine but it just doesn't have much presence. Maybe it looks bigger in person?`,
|
| 623 |
+
`The proportions are really interesting. The length is good but the girth is exceptional. It's thick from base to tip which is rare. The only downside is it looks a bit uneven. Still, I'd rate this very highly for girth alone.`,
|
| 624 |
+
`This is what I'd call perfectly average. Not too long, not too thick, just right. The shape is nice and it looks healthy. Nothing spectacular but definitely nothing to be ashamed of. Would do the job just fine.`,
|
| 625 |
+
`I'm conflicted. The length is excellent - probably 7 inches or more. But the girth is disappointing for something this long. It looks a bit skinny for its length. If it were thicker it would be amazing, but as is it's just okay.`,
|
| 626 |
+
`The size is good but what really stands out is the presentation. The shave is clean, the skin looks healthy, and the photo quality is decent. Length is above average, girth is solid. Overall a very nice package that shows effort.`,
|
| 627 |
+
`This is small, no way around it. Both length and girth are below average. The head is disproportionately large which makes it look even smaller. I've seen smaller, but not many. Maybe angles are making it look worse?`,
|
| 628 |
+
`Absolute monster! Length is impressive but the girth is what's jaw-dropping. This looks thick and heavy. The veins are pronounced and the head is perfectly formed. This is top 1% material for sure. Would be a challenge but fun to try!`
|
| 629 |
+
];
|
| 630 |
|
| 631 |
+
return {
|
| 632 |
+
name,
|
| 633 |
+
age,
|
| 634 |
+
overallRating,
|
| 635 |
+
lengthRating,
|
| 636 |
+
girthRating,
|
| 637 |
+
minSize,
|
| 638 |
+
maxSize,
|
| 639 |
+
comment: comments[Math.floor(Math.random() * comments.length)]
|
| 640 |
+
};
|
| 641 |
+
}
|
| 642 |
+
|
| 643 |
+
// Create rating card element
|
| 644 |
+
function createRatingCard(rating) {
|
| 645 |
+
const card = document.createElement('div');
|
| 646 |
+
card.className = 'rating-card';
|
| 647 |
|
| 648 |
+
card.innerHTML = `
|
| 649 |
+
<div class="rating-user">
|
| 650 |
+
<div class="user-avatar">${rating.name.charAt(0)}</div>
|
| 651 |
+
<div class="user-info">
|
| 652 |
+
<div class="user-name">${rating.name}</div>
|
| 653 |
+
<div class="user-age">${rating.age} years old</div>
|
| 654 |
+
</div>
|
| 655 |
+
</div>
|
| 656 |
+
|
| 657 |
+
<div class="rating-stats">
|
| 658 |
+
<div class="stat">
|
| 659 |
+
<div class="stat-value">${rating.overallRating}</div>
|
| 660 |
+
<div class="stat-label">Overall</div>
|
| 661 |
+
</div>
|
| 662 |
+
<div class="stat">
|
| 663 |
+
<div class="stat-value">${rating.lengthRating}</div>
|
| 664 |
+
<div class="stat-label">Length</div>
|
| 665 |
+
</div>
|
| 666 |
+
<div class="stat">
|
| 667 |
+
<div class="stat-value">${rating.girthRating}</div>
|
| 668 |
+
<div class="stat-label">Girth</div>
|
| 669 |
+
</div>
|
| 670 |
+
</div>
|
| 671 |
+
|
| 672 |
+
<div class="rating-content">
|
| 673 |
+
<p class="rating-text">${rating.comment}</p>
|
| 674 |
+
<div class="size-comparison">
|
| 675 |
+
<i class="fas fa-ruler"></i> My experience: Smallest <span>${rating.minSize}"</span> | Largest <span>${rating.maxSize}"</span>
|
| 676 |
+
</div>
|
| 677 |
</div>
|
|
|
|
| 678 |
`;
|
| 679 |
|
| 680 |
+
return card;
|
| 681 |
}
|
| 682 |
+
|
| 683 |
+
// Generate initial rating for demo purposes
|
| 684 |
+
const initialRating = generateRating();
|
| 685 |
+
ratingsContainer.appendChild(createRatingCard(initialRating));
|
| 686 |
+
});
|
| 687 |
</script>
|
| 688 |
</body>
|
| 689 |
</html>
|