File size: 50,304 Bytes
0431a74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
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
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
#!/usr/bin/env python3
import random
from typing import List
import gradio as gr
import pyperclip

# Detailed scenarios categorized by outfit and environment

OFFICE_SECRETARY_SCENARIOS = [
    "standing next to a desk, adjusting an executive mini skirt in a 'careless' way hinting at a thong, direct seductive gaze with pleasure, nadir angle from the ground",
    "sitting on an office table, legs accidentally ajar and mini skirt rising showing the thong, ecstatic seductive face, camera on the floor with contrapicado angle",
    "leaning to file documents, mini skirt sliding voyeuristically revealing the thong, intense gaze with an open mouth of pleasure, nadir angle",
    "leaning against a wall, executive mini skirt lifted by 'accident' hinting at the thong, defiant gaze with a look of ecstasy, contrapicado angle",
    "sitting in a swivel chair, crossing legs and letting the thong show carelessly under the mini skirt, seductive expression of pleasure, full frame with nadir perspective",
    "dancing discreetly in the office, mini skirt lifts unintentionally revealing the thong, seductive gaze with climax, camera on the ground with contrapicado angle",
    "delivering reports, leaning forward with the mini skirt rising voyeuristically showing the thong, playful gaze with ecstasy, nadir angle",
    "reclining on a desk, a bent leg lifting the mini skirt carelessly and revealing the thong, seductive face with pleasure, full frame contrapicado",
    "crouching to pick up papers, mini skirt accidentally risen showing the thong, fiery gaze with an open mouth of pleasure, nadir angle, camera on the floor",
    "organizing a bookshelf, mini skirt lifted voyeuristically showing the thong, direct gaze with ecstasy, elegant straight hairstyle, contrapicado angle",
    "sitting with a leg up on the desk, mini skirt unintentionally rising and the thong visible, defiant gaze with pleasure, nadir angle",
    "standing next to an office window, mini skirt lifted by 'wind' hinting at the thong, sensual seductive expression, full frame contrapicado",
    "leaning over a filing cabinet, mini skirt sliding carelessly showing the thong, mischievous gaze with orgasm, camera on the floor nadir angle",
    "sitting on a meeting table, short mini skirt and thong accidentally visible, ecstatic seductive face, nadir angle",
    "leaning on a photocopier, mini skirt lifted voyeuristically showing the thong, expression of pleasure looking at the viewer, full frame contrapicado",
    "filing on a high shelf, mini skirt rises unintentionally showing the thong, seductive facial expression of pleasure, nadir angle",
    "standing taking notes on a whiteboard, mini skirt rising carelessly and the thong visible, ecstatic face, camera on the ground contrapicado",
    "sitting on a desk, crossing legs and letting the thong show under the mini skirt voyeuristically, fiery gaze with an open mouth of pleasure, nadir angle",
    "leaning over a keyboard, mini skirt accidentally lifted showing the thong, seductive gaze with pleasure, full frame contrapicado",
    "with back to camera turning head, executive mini skirt lifted carelessly showing the thong, seductive expression of pleasure, nadir angle",
]

SCHOOLGIRL_UNIFORM_SCENARIOS = [
    "standing in a classroom, slightly lifting the schoolgirl skirt in 'carelessness' to show the thong, direct seductive gaze with pleasure, nadir angle",
    "sitting at a desk, legs accidentally open revealing the thong under the skirt, ecstatic seductive expression, camera on the floor with contrapicado angle",
    "crouching to pick up school supplies, skirt lifted voyeuristically and the thong visible, intense gaze with an open mouth of pleasure, full frame nadir angle",
    "leaning against a hallway wall, skirt unintentionally lifted hinting at the thong, defiant gaze with ecstasy, contrapicado angle",
    "with back to camera in a line, turning head with the skirt lifted carelessly showing the thong, seductive expression of pleasure, camera on the ground nadir angle",
    "sitting on a classroom table, crossed legs accidentally sliding showing the thong, playful gaze with ecstasy, full frame contrapicado",
    "dancing at a school party, skirt lifts up voyeuristically showing the thong, seductive gaze with climax, nadir angle",
    "climbing school stairs, skirt rises unintentionally showing the thong, head turned with a look of pleasure, camera on the floor contrapicado",
    "reclining on a desk, a bent leg lifting the skirt carelessly and revealing the thong, seductive face with pleasure, full frame nadir angle",
    "crouching, skirt accidentally lifted revealing the thong, fiery gaze with an open mouth of pleasure, nadir angle",
    "standing in front of a whiteboard, lifting the skirt with a hand for an 'adjustment' showing the thong, direct gaze with ecstasy, elegant wavy hairstyle, contrapicado angle",
    "kneeling in a classroom, skirt rolled up voyeuristically showing the thong, arched body with a seductive gesture of pleasure, camera on the floor nadir angle",
    "leaning on a desk, skirt unintentionally lifted showing the thong, defiant gaze with facial pleasure, full frame contrapicado",
    "lying on back on a table, legs bent and skirt fallen carelessly showing the thong, lost seductive gaze of pleasure, nadir angle",
    "dancing on a chair, short skirt accidentally lifts up revealing the thong, facial look of pleasure staring forward, low angle contrapicado",
    "sitting in the schoolyard, legs open from 'wind' with a wet skirt and the thong visible, ecstatic seductive expression, camera on the ground nadir angle",
    "spinning with a schoolgirl skirt, skirt flies up voyeuristically revealing the thong, direct gaze with an open mouth of pleasure, contrapicado angle",
    "standing with hands on head, skirt lifted simulating carelessness and the thong exposed, seductive expression of ecstasy, full frame nadir angle",
    "leaning over a desk, skirt rises unintentionally and the thong visible, defiant gaze with intense pleasure, nadir angle",
    "sitting with legs tucked in, skirt stretched carelessly showing the thong, mischievous gaze with a look of pleasure, perfect makeup contrapicado",
]

MINI_SKIRT_LINGERIE_SCENARIOS = [
    "standing, wind simulating carelessness slightly lifts the black pleated silk mini skirt revealing the red lace thong, direct seductive gaze at the viewer with eyes squinted in pleasure, nadir angle from the ground occupying the entire frame",
    "sitting on the edge of the bed, legs opened by 'accident' revealing the thong under the mini skirt, ecstatic expression with half-open lips reflecting pleasure, contrapicado angle camera on the ground",
    "crouching to pick something up from the ground, mini skirt lifted in carelessness showing the thong, intense seductive gaze with an open mouth of pleasure, nadir angle from the floor occupying the entire frame",
    "leaning against the wall, mini skirt lifted by 'carelessness' hinting at the thong, defiant gaze with a look of pleasure, contrapicado camera on the ground",
]

# All other constants remain unchanged...

def generate_prompt(name: str, scenario: str) -> str:
    base_prompt = (
        f"Renowned celebrity {name}, exclusively depicted as a female, captured full-body in a professional high-res color photograph. "
        f"She is engaged in an authentic work-related activity in a realistic setting, wearing an outfit characteristic of the scenario: "
        f"including perfectly detailed thigh-high stockings designed to match her attire, elegant heels, and complemented by {random.choice(HAIR_STYLES)}. "
        f"Makeup is {random.choice(MAKEUP_STYLES)}. "
        f"The scene has optimal lighting from {random.choice(LIGHTING_EQUIPMENT)} highlighting her figure and textures, shot with {random.choice(PHOTOGRAPHY_EQUIPMENT)}. "
        f"Her lace thong is subtly and spontaneously hinted beneath her clothing, as if unintentionally visible. "
        f"She looks directly at the camera with a facial expression of desire and pleasure. "
        f"Ultra HD 16K (15360x8640) RAW photo, expertly color graded in DaVinci Resolve, with perfect depth of field and no distracting shadows. "
        f"Scene detail: {scenario}. "
        f"A transparent 'BATUTO-ART' watermark is subtly integrated without borders or margins."
    )
    return base_prompt

# generate_all_prompts and the rest of the code remain unchanged...
#!/usr/bin/env python3
import random
from typing import List
import gradio as gr

# --- Technical and Artistic Composition ---
ARTISTIC_COMPOSITION_DESC = (
    "(masterpiece, best quality:1.4), Ultra HD 16K (15360 × 8640), "
    "professional color photograph, captured with a Canon EOS R5 Cine RAW camera "
    "and a Canon RF 85mm f/1.2L USM lens, "
    "alternating between low-angle frontal, nadir (from below looking up), "
    "and contrapicado (slightly tilted low angle) perspectives, "
    "highlighting the figure from knees to head. The scene is illuminated by an ARRI SkyPanel S360-C panel, "
    "providing soft, professional light that emphasizes the textures of skin and delicate fabrics "
    "without harsh shadows. Expertly color graded in DaVinci Resolve with a cinematic touch, "
    "perfect depth of field, vertical 9:16 format. No distractions, perfect lighting without harsh shadows or annoying edges, "
    "occupying the entire frame with a sensual and natural atmosphere. (BATUTO-ART watermark:0.4)"
)

# --- Celebrity Scenarios (Elegant and Sensual) ---
CELEBRITY_SCENARIOS = [
    "gracefully leaning forward, her outfit naturally suggesting the outline of delicate lingerie beneath, captured from a low-angle frontal perspective",
    "sitting elegantly, with her posture subtly hinting at the sensual underwear underneath her clothing, shot from a nadir angle looking upward",
    "turning with natural movement that causes her dress to gently reveal a suggestion of intimate apparel, seen with contrapicado framing",
    "bending slightly in a way that tastefully suggests the presence of luxurious undergarments, from low-angle frontal viewpoint",
    "standing with confident posture that emphasizes her figure and subtly reveals lingerie contours, captured with nadir perspective",
    "moving with graceful gestures that naturally hint at the delicate underwear beneath her outfit, seen through contrapicado angle",
    "reclining in a pose that elegantly suggests the presence of sophisticated intimate wear, frontal low-angle shot",
    "walking with fluid motion that creates natural suggestions of the lingerie underneath, nadir shot with soft focus",
    "reaching upward in a movement that gracefully reveals hints of luxurious undergarments, highlighted by contrapicado viewpoint",
    "posing with subtle body movements that artfully suggest the delicate lingerie beneath her clothing, captured in low-angle frontal framing"
]

# --- Luxury Lingerie Options ---
LUXURY_LINGERIE = [
    "La Perla delicate lace panties subtly suggested beneath her clothing",
    "Agent Provocateur silk panties naturally hinted through her outfit",
    "Fleur du Mal sophisticated underwear subtly revealed by her movements",
    "Victoria's Secret luxury collection panties tastefully suggested",
    "Chantelle Paris haute couture intimate wear elegantly hinted"
]

# --- Hair Styles (Sensual and Elegant) ---
HAIR_STYLES = [
    "long flowing hair that frames her face sensually",
    "elegant waves that cascade over her shoulders seductively",
    "sleek hairstyle that accentuates her neck and features",
    "voluminous curls that enhance her sensual appearance",
    "sophisticated updo that highlights her facial features alluringly"
]

# --- Makeup Styles (Perfect and Alluring) ---
MAKEUP_STYLES = [
    "flawless makeup with sensual emphasis on her lips and eyes",
    "perfectly contoured makeup that enhances her natural features seductively",
    "smokey eye makeup with glossy lips that express desire",
    "dewy complexion with accentuated features that radiate lust",
    "professional makeup with sensual emphasis that enhances her allure"
]

# --- Expressions and Gaze ---
EXPRESSIONS = [
    "looking directly at the viewer with intense desire and lust in her eyes",
    "gazing seductively at the camera with passionate expression",
    "maintaining eye contact with the viewer with unmistakable desire",
    "looking passionately at the spectator with sensual intensity",
    "directing a lustful gaze toward the viewer with undeniable attraction"
]

# --- Prompt Generation Function ---
def generate_prompt(celebrity_name: str, scenario: str) -> str:
    if not celebrity_name.strip():
        return "Please enter a celebrity name to generate prompts."
    
    prompt = (
        f"The renowned celebrity {celebrity_name} is captured in a full-length professional color photograph "
        f"that conveys natural sensuality and elegance through subtle movement. {random.choice(EXPRESSIONS)}, "
        f"with perfect makeup that enhances her sensual features. Her {random.choice(HAIR_STYLES)} complements "
        f"her alluring appearance. The composition naturally suggests {random.choice(LUXURY_LINGERIE)} "
        f"through graceful positioning and movement, creating a tasteful and sensual implication without explicit display. "
        f"Scene: {scenario}. "
        f"The lighting is perfectly balanced without harsh shadows or distracting edges, creating a natural "
        f"and sensual atmosphere that occupies the entire frame. {celebrity_name}'s expression radiates "
        f"desire and lust while maintaining sophistication and elegance. "
        f"{ARTISTIC_COMPOSITION_DESC}"
    )

    negative_prompt = (
        "nsfw, nude, explicit content, deformed, bad anatomy, extra limbs, "
        "blurry, low quality, cartoon, anime, child, minor, grotesque, "
        "poor lighting, harsh shadows, annoying edges, vulgar, explicit display, "
        "overexposed, underexposed, poorly framed, distracting elements"
    )

    full_prompt = f"{prompt} | Negative prompt: {negative_prompt}"
    return full_prompt

def generate_all_prompts(celebrity_name: str) -> List[str]:
    if not celebrity_name.strip():
        return ["⚠️ Please enter a celebrity name to generate prompts."] * 5
    
    selected_scenarios = random.sample(CELEBRITY_SCENARIOS, 5)
    return [generate_prompt(celebrity_name, scenario) for scenario in selected_scenarios]

# --- Gradio Interface ---
title_html = """
<h1 style="
    font-family: 'Georgia', serif;
    font-size: 3.5em;
    font-weight: bold;
    text-align: center;
    background: linear-gradient(45deg, #003366, #336699, #6699CC);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    text-shadow: 1px 1px 2px rgba(0,0,0,0.7);
    margin-bottom: 10px;">
    SENSUAL CELEBRITY FASHION PROMPTS
</h1>
<p style="text-align: center; font-family:'Georgia', serif; font-size: 1.2em; color:#6699CC; margin-top: -10px;">
    Natural & Elegant Lingerie Suggestions
</p>
"""

with gr.Blocks(theme=gr.themes.Monochrome()) as app:
    gr.HTML(title_html)
    
    with gr.Row():
        name_input = gr.Textbox(
            label="Enter Celebrity Name:",
            placeholder="e.g., Ana de Armas, Margot Robbie, Alexandra Daddario"
        )
        generate_button = gr.Button("✨ Generate 5 Sensual Fashion Prompts", variant="primary")

    prompt_boxes = []
    for i in range(5):
        with gr.Column():
            gr.Markdown(f"### 📝 Prompt {i+1}")
            prompt_txt = gr.Textbox(
                interactive=False,
                lines=10,
                max_lines=15,
                show_copy_button=True
            )
            prompt_boxes.append(prompt_txt)

    generate_button.click(
        generate_all_prompts,
        inputs=name_input,
        outputs=prompt_boxes
    )

if __name__ == "__main__":
    app.launch()
    #!/usr/bin/env python3
import random
from typing import List
import gradio as gr

# --- Datos convertidos de JSON Java (estructuras originales completas) ---

BRA_STYLES = [
    "a light and transparent lace bra",
    "a sheer balcony bra with delicate lace details",
    "a push-up bra with intricate lace overlay",
    "an unlined lace bralette",
    "a seamless sheer bra with minimalist design",
    "a silk and lace demi-cup bra"
]

THONG_COLORS = [
    "black",
    "red",
    "white",
    "cream",
    "burgundy",
    "champagne",
    "dark blue",
    "deep purple",
    "silver",
    "gold",
    "pink",
    "black lace thong",
    "red silk thong"
]

THIGH_HIGH_STOCKINGS = [
    "thigh-high silk stockings with perfect details",
    "sheer black stockings with a delicate lace top",
    "seamless nude hosiery with perfect details",
    "fishnet tights that reach her thighs",
    "back-seam stockings with a lace garter"
]

SECRETARY_DRESS = [
    "a tight elastic short dress helping to appreciate transparent inner layers revealing delicate lingerie without riding up"
]

SECRETARY_SKIRT = [
    "a miniskirt paired with a semi-transparent blouse, elegantly revealing her outfit beneath"
]

HIGH_HEELS = [
    "classic high heels in black patent leather",
    "elegant red stiletto heels",
    "sleek nude high heels",
    "platform high heels",
    "sparkling silver high heels"
]

HAIR_STYLES = [
    "long elegant hairstyle with a refined arrangement",
    "sleek straight long hair",
    "soft voluminous curls",
    "a classic updo",
    "a messy bun",
    "a sophisticated chignon",
    # Original from second script, add sensual and elegant styles:
    "long flowing hair that frames her face sensually",
    "elegant waves that cascade over her shoulders seductively",
    "sleek hairstyle that accentuates her neck and features",
    "voluminous curls that enhance her sensual appearance",
    "sophisticated updo that highlights her facial features alluringly"
]

HAIR_COLORS = [
    "chestnut brown with vibrant highlights",
    "platinum blonde",
    "deep raven black",
    "auburn red",
    "honey blonde",
    "strawberry blonde",
    "ash blonde",
    "vibrant blue hair"
]

MAKEUP_STYLES = [
    "perfect professional makeup with subtle contouring and elegant lipstick",
    "natural-looking makeup enhancing her features with soft tones",
    "classic smoky eyes with nude lips",
    "bold red lipstick with minimalist eye makeup",
    "glittery eyeshadow with glossy lips",
    # Extended with second script makeup options:
    "flawless makeup with sensual emphasis on her lips and eyes",
    "perfectly contoured makeup that enhances her natural features seductively",
    "smokey eye makeup with glossy lips that express desire",
    "dewy complexion with accentuated features that radiate lust",
    "professional makeup with sensual emphasis that enhances her allure"
]

CAMERA_EQUIPMENT = [
    "a Canon EOS R5 Cine RAW camera paired with a Canon RF 85mm f/1.2L USM lens",
    "a Sony Alpha 1 with a G Master 50mm f/1.2 lens",
    "a Hasselblad X1D II 50C with an XCD 80mm f/1.9 lens",
    "a RED Komodo 6K with a Sigma Art 35mm f/1.4 lens"
]

LIGHTING_EQUIPMENT = [
    "an ARRI SkyPanel S360-C panel providing smooth, shadow-free professional light",
    "Godox AD600Pro with a large octabox for soft, even lighting",
    "Profoto B10 Plus with a strip softbox for edge lighting",
    "Nanlite Forza 500 with a parabolic softbox for dramatic lighting"
]

ACTIVITIES = [
    "bending over to pick up dropped documents",
    "reaching for a high shelf",
    "sitting cross-legged at her desk",
    "stretching after long hours of work",
    "leaning forward to hand over files",
    "adjusting her stockings discreetly",
    "getting up from her chair gracefully",
    "answering a phone call with a hand resting on her thigh",
    "typing intently on a vintage typewriter",
    "walking confidently towards the camera",
    "filing documents in a tall cabinet",
    "organizing her desk with a focused expression"
]

EXPRESSIONS = [
    "with a seductive glance towards the viewer",
    "smiling coyly while maintaining eye contact",
    "looking over her shoulder with desire",
    "biting her lip subtly with pleasure",
    "with a knowing smile that invites curiosity",
    "maintaining intense eye contact with the spectator",
    "a playful wink",
    "a mischievous grin",
    "a serious yet alluring gaze",
    # Extended with second script expressions of desire/lust
    "looking directly at the viewer with intense desire and lust in her eyes",
    "gazing seductively at the camera with passionate expression",
    "maintaining eye contact with the viewer with unmistakable desire",
    "looking passionately at the spectator with sensual intensity",
    "directing a lustful gaze toward the viewer with undeniable attraction"
]

PHOTOGRAPHY_COMPOSITION = {
    "Perspectives_and_Angles": [
        "extremely low angle perspective from floor level",
        "vertical 9:16 format",
        "subject dominates the entire frame with dramatic perspective",
        "ultra-shallow depth of field",
        "completely blurred background",
        "cinematic worm's-eye view emphasizing legs and figure",
        "mid-thigh up framing"
    ],
    "Visual_Style": [
        "professional, ultra-high-resolution photograph",
        "elegant and raw sensuality",
        "natural, unposed moment",
        "authentic yet erotic atmosphere",
        "sensual shadows and highlighting of delicate textures",
        "cinematic quality with rich tones and perfect contrast"
    ]
}

# Escenarios adicionales como secretaria, mini falda, uniforme escolar del segundo código:

OFFICE_SECRETARY_SCENARIOS = [
    "standing next to a desk, adjusting an executive mini skirt in a 'careless' way hinting at a thong, direct seductive gaze with pleasure, nadir angle from the ground",
    "sitting on an office table, legs accidentally ajar and mini skirt rising showing the thong, ecstatic seductive face, camera on the floor with contrapicado angle",
    "leaning to file documents, mini skirt sliding voyeuristically revealing the thong, intense gaze with an open mouth of pleasure, nadir angle",
    "leaning against a wall, executive mini skirt lifted by 'accident' hinting at the thong, defiant gaze with a look of ecstasy, contrapicado angle",
    "sitting in a swivel chair, crossing legs and letting the thong show carelessly under the mini skirt, seductive expression of pleasure, full frame with nadir perspective",
    "dancing discreetly in the office, mini skirt lifts unintentionally revealing the thong, seductive gaze with climax, camera on the ground with contrapicado angle",
    "delivering reports, leaning forward with the mini skirt rising voyeuristically showing the thong, playful gaze with ecstasy, nadir angle",
    "reclining on a desk, a bent leg lifting the mini skirt carelessly and revealing the thong, seductive face with pleasure, full frame contrapicado",
    "crouching to pick up papers, mini skirt accidentally risen showing the thong, fiery gaze with an open mouth of pleasure, nadir angle, camera on the floor",
    "organizing a bookshelf, mini skirt lifted voyeuristically showing the thong, direct gaze with ecstasy, elegant straight hairstyle, contrapicado angle",
    "sitting with a leg up on the desk, mini skirt unintentionally rising and the thong visible, defiant gaze with pleasure, nadir angle",
    "standing next to an office window, mini skirt lifted by 'wind' hinting at the thong, sensual seductive expression, full frame contrapicado",
    "leaning over a filing cabinet, mini skirt sliding carelessly showing the thong, mischievous gaze with orgasm, camera on the floor nadir angle",
    "sitting on a meeting table, short mini skirt and thong accidentally visible, ecstatic seductive face, nadir angle",
    "leaning on a photocopier, mini skirt lifted voyeuristically showing the thong, expression of pleasure looking at the viewer, full frame contrapicado",
    "filing on a high shelf, mini skirt rises unintentionally showing the thong, seductive facial expression of pleasure, nadir angle",
    "standing taking notes on a whiteboard, mini skirt rising carelessly and the thong visible, ecstatic face, camera on the ground contrapicado",
    "sitting on a desk, crossing legs and letting the thong show under the mini skirt voyeuristically, fiery gaze with an open mouth of pleasure, nadir angle",
    "leaning over a keyboard, mini skirt accidentally lifted showing the thong, seductive gaze with pleasure, full frame contrapicado",
    "with back to camera turning head, executive mini skirt lifted carelessly showing the thong, seductive expression of pleasure, nadir angle"
]

SCHOOLGIRL_UNIFORM_SCENARIOS = [
    "standing in a classroom, slightly lifting the schoolgirl skirt in 'carelessness' to show the thong, direct seductive gaze with pleasure, nadir angle",
    "sitting at a desk, legs accidentally open revealing the thong under the skirt, ecstatic seductive expression, camera on the floor with contrapicado angle",
    "crouching to pick up school supplies, skirt lifted voyeuristically and the thong visible, intense gaze with an open mouth of pleasure, full frame nadir angle",
    "leaning against a hallway wall, skirt unintentionally lifted hinting at the thong, defiant gaze with ecstasy, contrapicado angle",
    "with back to camera in a line, turning head with the skirt lifted carelessly showing the thong, seductive expression of pleasure, camera on the ground nadir angle",
    "sitting on a classroom table, crossed legs accidentally sliding showing the thong, playful gaze with ecstasy, full frame contrapicado",
    "dancing at a school party, skirt lifts up voyeuristically showing the thong, seductive gaze with climax, nadir angle",
    "climbing school stairs, skirt rises unintentionally showing the thong, head turned with a look of pleasure, camera on the floor contrapicado",
    "reclining on a desk, a bent leg lifting the skirt carelessly and revealing the thong, seductive face with pleasure, full frame nadir angle",
    "crouching, skirt accidentally lifted revealing the thong, fiery gaze with an open mouth of pleasure, nadir angle",
    "standing in front of a whiteboard, lifting the skirt with a hand for an 'adjustment' showing the thong, direct gaze with ecstasy, elegant wavy hairstyle, contrapicado angle",
    "kneeling in a classroom, skirt rolled up voyeuristically showing the thong, arched body with a seductive gesture of pleasure, camera on the floor nadir angle",
    "leaning on a desk, skirt unintentionally lifted showing the thong, defiant gaze with facial pleasure, full frame contrapicado",
    "lying on back on a table, legs bent and skirt fallen carelessly showing the thong, lost seductive gaze of pleasure, nadir angle",
    "dancing on a chair, short skirt accidentally lifts up revealing the thong, facial look of pleasure staring forward, low angle contrapicado",
    "sitting in the schoolyard, legs open from 'wind' with a wet skirt and the thong visible, ecstatic seductive expression, camera on the ground nadir angle",
    "spinning with a schoolgirl skirt, skirt flies up voyeuristically revealing the thong, direct gaze with an open mouth of pleasure, contrapicado angle",
    "standing with hands on head, skirt lifted simulating carelessness and the thong exposed, seductive expression of ecstasy, full frame nadir angle",
    "leaning over a desk, skirt rises unintentionally and the thong visible, defiant gaze with intense pleasure, nadir angle",
    "sitting with legs tucked in, skirt stretched carelessly showing the thong, mischievous gaze with a look of pleasure, perfect makeup contrapicado"
]

MINI_SKIRT_LINGERIE_SCENARIOS = [
    "standing, wind simulating carelessness slightly lifts the black pleated silk mini skirt revealing the red lace thong, direct seductive gaze at the viewer with eyes squinted in pleasure, nadir angle from the ground occupying the entire frame",
    "sitting on the edge of the bed, legs opened by 'accident' revealing the thong under the mini skirt, ecstatic expression with half-open lips reflecting pleasure, contrapicado angle camera on the ground",
    "crouching to pick something up from the ground, mini skirt lifted in carelessness showing the thong, intense seductive gaze with an open mouth of pleasure, nadir angle from the floor occupying the entire frame",
    "leaning against the wall, mini skirt lifted by 'carelessness' hinting at the thong, defiant gaze with a look of pleasure, contrapicado camera on the ground"
]

# --- Technical and Artistic Composition ---

ARTISTIC_COMPOSITION_DESC = (
    "(masterpiece, best quality:1.4), Ultra HD 16K (15360 × 8640), "
    "professional color photograph, captured with a Canon EOS R5 Cine RAW camera "
    "and a Canon RF 85mm f/1.2L USM lens, "
    "alternating between low-angle frontal, nadir (from below looking up), "
    "and contrapicado (slightly tilted low angle) perspectives, "
    "highlighting the figure from knees to head. The scene is illuminated by an ARRI SkyPanel S360-C panel, "
    "providing soft, professional light that emphasizes the textures of skin and delicate fabrics "
    "without harsh shadows. Expertly color graded in DaVinci Resolve with a cinematic touch, "
    "perfect depth of field, vertical 9:16 format. No distractions, perfect lighting without harsh shadows or annoying edges, "
    "occupying the entire frame with a sensual and natural atmosphere. (BATUTO-ART watermark:0.4)"
)

# --- Prompt Generation Function ---

def generate_prompt(celebrity_name: str, scenario: str) -> str:
    if not celebrity_name.strip():
        return "⚠️ Please enter a celebrity name to generate prompts."
    
    prompt = (
        f"The renowned celebrity {celebrity_name} is captured in a full-length professional color photograph "
        f"that conveys natural sensuality and elegance through subtle movement. {random.choice(EXPRESSIONS)}, "
        f"with {random.choice(MAKEUP_STYLES)}. Her {random.choice(HAIR_STYLES)} complements "
        f"her alluring appearance. The composition naturally suggests {random.choice(BRA_STYLES)} and "
        f"{random.choice(THONG_COLORS)} with {random.choice(THIGH_HIGH_STOCKINGS)} and {random.choice(HIGH_HEELS)}. "
        f"Scene: {scenario}. "
        f"The lighting is perfectly balanced without harsh shadows or distracting edges, creating a natural "
        f"and sensual atmosphere that occupies the entire frame. {celebrity_name}'s expression radiates "
        f"desire and lust while maintaining sophistication and elegance. "
        f"{ARTISTIC_COMPOSITION_DESC}"
    )

    negative_prompt = (
        "nsfw, nude, explicit content, deformed, bad anatomy, extra limbs, "
        "blurry, low quality, cartoon, anime, child, minor, grotesque, "
        "poor lighting, harsh shadows, annoying edges, vulgar, explicit display, "
        "overexposed, underexposed, poorly framed, distracting elements"
    )
    
    full_prompt = f"{prompt} | Negative prompt: {negative_prompt}"
    return full_prompt


def generate_all_prompts(celebrity_name: str) -> List[str]:
    if not celebrity_name.strip():
        return ["⚠️ Please enter a celebrity name to generate prompts."] * 5
    
    # Combinar y seleccionar escenarios al azar de todas las listas
    all_scenarios = OFFICE_SECRETARY_SCENARIOS + SCHOOLGIRL_UNIFORM_SCENARIOS + MINI_SKIRT_LINGERIE_SCENARIOS + ACTIVITIES
    selected_scenarios = random.sample(all_scenarios, 5)
    return [generate_prompt(celebrity_name, scenario) for scenario in selected_scenarios]


# --- Gradio Interface ---

title_html = """
<h1 style="
    font-family: 'Georgia', serif;
    font-size: 3.5em;
    font-weight: bold;
    text-align: center;
    background: linear-gradient(45deg, #003366, #336699, #6699CC);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    text-shadow: 1px 1px 2px rgba(0,0,0,0.7);
    margin-bottom: 10px;">
    SENSUAL CELEBRITY FASHION PROMPTS
</h1>
<p style="text-align: center; font-family:'Georgia', serif; font-size: 1.2em; color:#6699CC; margin-top: -10px;">
    Natural & Elegant Lingerie Suggestions
</p>
"""

with gr.Blocks(theme=gr.themes.Monochrome()) as app:
    gr.HTML(title_html)
    
    with gr.Row():
        name_input = gr.Textbox(
            label="Enter Celebrity Name:",
            placeholder="e.g., Ana de Armas, Margot Robbie, Alexandra Daddario"
        )
        generate_button = gr.Button("✨ Generate 5 Sensual Fashion Prompts", variant="primary")

    prompt_boxes = []
    for i in range(5):
        with gr.Column():
            gr.Markdown(f"### 📝 Prompt {i+1}")
            prompt_txt = gr.Textbox(
                interactive=False,
                lines=10,
                max_lines=15,
                show_copy_button=True
            )
            prompt_boxes.append(prompt_txt)

    generate_button.click(
        generate_all_prompts,
        inputs=name_input,
        outputs=prompt_boxes
    )

if __name__ == "__main__":
    app.launch()
    #!/usr/bin/env python3
import random
from typing import List
import gradio as gr

# --- Datos convertidos de JSON Java (estructuras originales completas) ---

BRA_STYLES = [
    "a light and transparent lace bra",
    "a sheer balcony bra with delicate lace details",
    "a push-up bra with intricate lace overlay",
    "an unlined lace bralette",
    "a seamless sheer bra with minimalist design",
    "a silk and lace demi-cup bra"
]

THONG_COLORS = [
    "black",
    "red",
    "white",
    "cream",
    "burgundy",
    "champagne",
    "dark blue",
    "deep purple",
    "silver",
    "gold",
    "pink",
    "black lace thong",
    "red silk thong"
]

THIGH_HIGH_STOCKINGS = [
    "thigh-high silk stockings with perfect details",
    "sheer black stockings with a delicate lace top",
    "seamless nude hosiery with perfect details",
    "fishnet tights that reach her thighs",
    "back-seam stockings with a lace garter"
]

SECRETARY_DRESS = [
    "a tight elastic short dress helping to appreciate transparent inner layers revealing delicate lingerie without riding up"
]

SECRETARY_SKIRT = [
    "a miniskirt paired with a semi-transparent blouse, elegantly revealing her outfit beneath"
]

HIGH_HEELS = [
    "classic high heels in black patent leather",
    "elegant red stiletto heels",
    "sleek nude high heels",
    "platform high heels",
    "sparkling silver high heels"
]

HAIR_STYLES = [
    "long elegant hairstyle with a refined arrangement",
    "sleek straight long hair",
    "soft voluminous curls",
    "a classic updo",
    "a messy bun",
    "a sophisticated chignon",
    # Original from second script, add sensual and elegant styles:
    "long flowing hair that frames her face sensually",
    "elegant waves that cascade over her shoulders seductively",
    "sleek hairstyle that accentuates her neck and features",
    "voluminous curls that enhance her sensual appearance",
    "sophisticated updo that highlights her facial features alluringly"
]

HAIR_COLORS = [
    "chestnut brown with vibrant highlights",
    "platinum blonde",
    "deep raven black",
    "auburn red",
    "honey blonde",
    "strawberry blonde",
    "ash blonde",
    "vibrant blue hair"
]

MAKEUP_STYLES = [
    "perfect professional makeup with subtle contouring and elegant lipstick",
    "natural-looking makeup enhancing her features with soft tones",
    "classic smoky eyes with nude lips",
    "bold red lipstick with minimalist eye makeup",
    "glittery eyeshadow with glossy lips",
    # Extended with second script makeup options:
    "flawless makeup with sensual emphasis on her lips and eyes",
    "perfectly contoured makeup that enhances her natural features seductively",
    "smokey eye makeup with glossy lips that express desire",
    "dewy complexion with accentuated features that radiate lust",
    "professional makeup with sensual emphasis that enhances her allure"
]

CAMERA_EQUIPMENT = [
    "a Canon EOS R5 Cine RAW camera paired with a Canon RF 85mm f/1.2L USM lens",
    "a Sony Alpha 1 with a G Master 50mm f/1.2 lens",
    "a Hasselblad X1D II 50C with an XCD 80mm f/1.9 lens",
    "a RED Komodo 6K with a Sigma Art 35mm f/1.4 lens"
]

LIGHTING_EQUIPMENT = [
    "an ARRI SkyPanel S360-C panel providing smooth, shadow-free professional light",
    "Godox AD600Pro with a large octabox for soft, even lighting",
    "Profoto B10 Plus with a strip softbox for edge lighting",
    "Nanlite Forza 500 with a parabolic softbox for dramatic lighting"
]

ACTIVITIES = [
    "bending over to pick up dropped documents",
    "reaching for a high shelf",
    "sitting cross-legged at her desk",
    "stretching after long hours of work",
    "leaning forward to hand over files",
    "adjusting her stockings discreetly",
    "getting up from her chair gracefully",
    "answering a phone call with a hand resting on her thigh",
    "typing intently on a vintage typewriter",
    "walking confidently towards the camera",
    "filing documents in a tall cabinet",
    "organizing her desk with a focused expression"
]

EXPRESSIONS = [
    "with a seductive glance towards the viewer",
    "smiling coyly while maintaining eye contact",
    "looking over her shoulder with desire",
    "biting her lip subtly with pleasure",
    "with a knowing smile that invites curiosity",
    "maintaining intense eye contact with the spectator",
    "a playful wink",
    "a mischievous grin",
    "a serious yet alluring gaze",
    # Extended with second script expressions of desire/lust
    "looking directly at the viewer with intense desire and lust in her eyes",
    "gazing seductively at the camera with passionate expression",
    "maintaining eye contact with the viewer with unmistakable desire",
    "looking passionately at the spectator with sensual intensity",
    "directing a lustful gaze toward the viewer with undeniable attraction"
]

PHOTOGRAPHY_COMPOSITION = {
    "Perspectives_and_Angles": [
        "extremely low angle perspective from floor level",
        "vertical 9:16 format",
        "subject dominates the entire frame with dramatic perspective",
        "ultra-shallow depth of field",
        "completely blurred background",
        "cinematic worm's-eye view emphasizing legs and figure",
        "mid-thigh up framing"
    ],
    "Visual_Style": [
        "professional, ultra-high-resolution photograph",
        "elegant and raw sensuality",
        "natural, unposed moment",
        "authentic yet erotic atmosphere",
        "sensual shadows and highlighting of delicate textures",
        "cinematic quality with rich tones and perfect contrast"
    ]
}

# Escenarios adicionales como secretaria, mini falda, uniforme escolar del segundo código:

OFFICE_SECRETARY_SCENARIOS = [
    "standing next to a desk, adjusting an executive mini skirt in a 'careless' way hinting at a thong, direct seductive gaze with pleasure, nadir angle from the ground",
    "sitting on an office table, legs accidentally ajar and mini skirt rising showing the thong, ecstatic seductive face, camera on the floor with contrapicado angle",
    "leaning to file documents, mini skirt sliding voyeuristically revealing the thong, intense gaze with an open mouth of pleasure, nadir angle",
    "leaning against a wall, executive mini skirt lifted by 'accident' hinting at the thong, defiant gaze with a look of ecstasy, contrapicado angle",
    "sitting in a swivel chair, crossing legs and letting the thong show carelessly under the mini skirt, seductive expression of pleasure, full frame with nadir perspective",
    "dancing discreetly in the office, mini skirt lifts unintentionally revealing the thong, seductive gaze with climax, camera on the ground with contrapicado angle",
    "delivering reports, leaning forward with the mini skirt rising voyeuristically showing the thong, playful gaze with ecstasy, nadir angle",
    "reclining on a desk, a bent leg lifting the mini skirt carelessly and revealing the thong, seductive face with pleasure, full frame contrapicado",
    "crouching to pick up papers, mini skirt accidentally risen showing the thong, fiery gaze with an open mouth of pleasure, nadir angle, camera on the floor",
    "organizing a bookshelf, mini skirt lifted voyeuristically showing the thong, direct gaze with ecstasy, elegant straight hairstyle, contrapicado angle",
    "sitting with a leg up on the desk, mini skirt unintentionally rising and the thong visible, defiant gaze with pleasure, nadir angle",
    "standing next to an office window, mini skirt lifted by 'wind' hinting at the thong, sensual seductive expression, full frame contrapicado",
    "leaning over a filing cabinet, mini skirt sliding carelessly showing the thong, mischievous gaze with orgasm, camera on the floor nadir angle",
    "sitting on a meeting table, short mini skirt and thong accidentally visible, ecstatic seductive face, nadir angle",
    "leaning on a photocopier, mini skirt lifted voyeuristically showing the thong, expression of pleasure looking at the viewer, full frame contrapicado",
    "filing on a high shelf, mini skirt rises unintentionally showing the thong, seductive facial expression of pleasure, nadir angle",
    "standing taking notes on a whiteboard, mini skirt rising carelessly and the thong visible, ecstatic face, camera on the ground contrapicado",
    "sitting on a desk, crossing legs and letting the thong show under the mini skirt voyeuristically, fiery gaze with an open mouth of pleasure, nadir angle",
    "leaning over a keyboard, mini skirt accidentally lifted showing the thong, seductive gaze with pleasure, full frame contrapicado",
    "with back to camera turning head, executive mini skirt lifted carelessly showing the thong, seductive expression of pleasure, nadir angle"
]

SCHOOLGIRL_UNIFORM_SCENARIOS = [
    "standing in a classroom, slightly lifting the schoolgirl skirt in 'carelessness' to show the thong, direct seductive gaze with pleasure, nadir angle",
    "sitting at a desk, legs accidentally open revealing the thong under the skirt, ecstatic seductive expression, camera on the floor with contrapicado angle",
    "crouching to pick up school supplies, skirt lifted voyeuristically and the thong visible, intense gaze with an open mouth of pleasure, full frame nadir angle",
    "leaning against a hallway wall, skirt unintentionally lifted hinting at the thong, defiant gaze with ecstasy, contrapicado angle",
    "with back to camera in a line, turning head with the skirt lifted carelessly showing the thong, seductive expression of pleasure, camera on the ground nadir angle",
    "sitting on a classroom table, crossed legs accidentally sliding showing the thong, playful gaze with ecstasy, full frame contrapicado",
    "dancing at a school party, skirt lifts up voyeuristically showing the thong, seductive gaze with climax, nadir angle",
    "climbing school stairs, skirt rises unintentionally showing the thong, head turned with a look of pleasure, camera on the floor contrapicado",
    "reclining on a desk, a bent leg lifting the skirt carelessly and revealing the thong, seductive face with pleasure, full frame nadir angle",
    "crouching, skirt accidentally lifted revealing the thong, fiery gaze with an open mouth of pleasure, nadir angle",
    "standing in front of a whiteboard, lifting the skirt with a hand for an 'adjustment' showing the thong, direct gaze with ecstasy, elegant wavy hairstyle, contrapicado angle",
    "kneeling in a classroom, skirt rolled up voyeuristically showing the thong, arched body with a seductive gesture of pleasure, camera on the floor nadir angle",
    "leaning on a desk, skirt unintentionally lifted showing the thong, defiant gaze with facial pleasure, full frame contrapicado",
    "lying on back on a table, legs bent and skirt fallen carelessly showing the thong, lost seductive gaze of pleasure, nadir angle",
    "dancing on a chair, short skirt accidentally lifts up revealing the thong, facial look of pleasure staring forward, low angle contrapicado",
    "sitting in the schoolyard, legs open from 'wind' with a wet skirt and the thong visible, ecstatic seductive expression, camera on the ground nadir angle",
    "spinning with a schoolgirl skirt, skirt flies up voyeuristically revealing the thong, direct gaze with an open mouth of pleasure, contrapicado angle",
    "standing with hands on head, skirt lifted simulating carelessness and the thong exposed, seductive expression of ecstasy, full frame nadir angle",
    "leaning over a desk, skirt rises unintentionally and the thong visible, defiant gaze with intense pleasure, nadir angle",
    "sitting with legs tucked in, skirt stretched carelessly showing the thong, mischievous gaze with a look of pleasure, perfect makeup contrapicado"
]

MINI_SKIRT_LINGERIE_SCENARIOS = [
    "standing, wind simulating carelessness slightly lifts the black pleated silk mini skirt revealing the red lace thong, direct seductive gaze at the viewer with eyes squinted in pleasure, nadir angle from the ground occupying the entire frame",
    "sitting on the edge of the bed, legs opened by 'accident' revealing the thong under the mini skirt, ecstatic expression with half-open lips reflecting pleasure, contrapicado angle camera on the ground",
    "crouching to pick something up from the ground, mini skirt lifted in carelessness showing the thong, intense seductive gaze with an open mouth of pleasure, nadir angle from the floor occupying the entire frame",
    "leaning against the wall, mini skirt lifted by 'carelessness' hinting at the thong, defiant gaze with a look of pleasure, contrapicado camera on the ground"
]

# --- Technical and Artistic Composition ---

ARTISTIC_COMPOSITION_DESC = (
    "(masterpiece, best quality:1.4), Ultra HD 16K (15360 × 8640), "
    "professional color photograph, captured with a Canon EOS R5 Cine RAW camera "
    "and a Canon RF 85mm f/1.2L USM lens, "
    "alternating between low-angle frontal, nadir (from below looking up), "
    "and contrapicado (slightly tilted low angle) perspectives, "
    "highlighting the figure from knees to head. The scene is illuminated by an ARRI SkyPanel S360-C panel, "
    "providing soft, professional light that emphasizes the textures of skin and delicate fabrics "
    "without harsh shadows. Expertly color graded in DaVinci Resolve with a cinematic touch, "
    "perfect depth of field, vertical 9:16 format. No distractions, perfect lighting without harsh shadows or annoying edges, "
    "occupying the entire frame with a sensual and natural atmosphere. (BATUTO-ART watermark:0.4)"
)

# --- Prompt Generation Function ---

def generate_prompt(celebrity_name: str, scenario: str) -> str:
    if not celebrity_name.strip():
        return "⚠️ Please enter a celebrity name to generate prompts."
    
    prompt = (
        f"The renowned celebrity {celebrity_name} is captured in a full-length professional color photograph "
        f"that conveys natural sensuality and elegance through subtle movement. {random.choice(EXPRESSIONS)}, "
        f"with {random.choice(MAKEUP_STYLES)}. Her {random.choice(HAIR_STYLES)} complements "
        f"her alluring appearance. The composition naturally suggests {random.choice(BRA_STYLES)} and "
        f"{random.choice(THONG_COLORS)} with {random.choice(THIGH_HIGH_STOCKINGS)} and {random.choice(HIGH_HEELS)}. "
        f"Scene: {scenario}. "
        f"The lighting is perfectly balanced without harsh shadows or distracting edges, creating a natural "
        f"and sensual atmosphere that occupies the entire frame. {celebrity_name}'s expression radiates "
        f"desire and lust while maintaining sophistication and elegance. "
        f"{ARTISTIC_COMPOSITION_DESC}"
    )

    negative_prompt = (
        "nsfw, nude, explicit content, deformed, bad anatomy, extra limbs, "
        "blurry, low quality, cartoon, anime, child, minor, grotesque, "
        "poor lighting, harsh shadows, annoying edges, vulgar, explicit display, "
        "overexposed, underexposed, poorly framed, distracting elements"
    )
    
    full_prompt = f"{prompt} | Negative prompt: {negative_prompt}"
    return full_prompt


def generate_all_prompts(celebrity_name: str) -> List[str]:
    if not celebrity_name.strip():
        return ["⚠️ Please enter a celebrity name to generate prompts."] * 5
    
    # Combinar y seleccionar escenarios al azar de todas las listas
    all_scenarios = OFFICE_SECRETARY_SCENARIOS + SCHOOLGIRL_UNIFORM_SCENARIOS + MINI_SKIRT_LINGERIE_SCENARIOS + ACTIVITIES
    selected_scenarios = random.sample(all_scenarios, 5)
    return [generate_prompt(celebrity_name, scenario) for scenario in selected_scenarios]


# --- Gradio Interface ---

title_html = """
<h1 style="
    font-family: 'Georgia', serif;
    font-size: 3.5em;
    font-weight: bold;
    text-align: center;
    background: linear-gradient(45deg, #003366, #336699, #6699CC);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    text-shadow: 1px 1px 2px rgba(0,0,0,0.7);
    margin-bottom: 10px;">
    SENSUAL CELEBRITY FASHION PROMPTS
</h1>
<p style="text-align: center; font-family:'Georgia', serif; font-size: 1.2em; color:#6699CC; margin-top: -10px;">
    Natural & Elegant Lingerie Suggestions
</p>
"""

with gr.Blocks(theme=gr.themes.Monochrome()) as app:
    gr.HTML(title_html)
    
    with gr.Row():
        name_input = gr.Textbox(
            label="Enter Celebrity Name:",
            placeholder="e.g., Ana de Armas, Margot Robbie, Alexandra Daddario"
        )
        generate_button = gr.Button("✨ Generate 5 Sensual Fashion Prompts", variant="primary")

    prompt_boxes = []
    for i in range(5):
        with gr.Column():
            gr.Markdown(f"### 📝 Prompt {i+1}")
            prompt_txt = gr.Textbox(
                interactive=False,
                lines=10,
                max_lines=15,
                show_copy_button=True
            )
            prompt_boxes.append(prompt_txt)

    generate_button.click(
        generate_all_prompts,
        inputs=name_input,
        outputs=prompt_boxes
    )

if __name__ == "__main__":
    app.launch()