Oldmangrizzz's picture
Upload folder using huggingface_hub
dff1e71 verified
/* ============================================================
CONSTRUCT - Digital Person Instantiation Interface
Persona-agnostic industrial grunge aesthetic
90's garage meets Stark tech monster
With individual RSI and voice selection
============================================================ */
body {
background: #1a1a1a;
background-image:
radial-gradient(ellipse at center, #2a2a2a 0%, #0f0f0f 100%),
repeating-linear-gradient(
45deg,
transparent,
transparent 10px,
rgba(0, 0, 0, 0.03) 10px,
transparent 20px
);
color: #d4d4d4;
font-family: "Courier New", "Fira Code", monospace;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
overflow: hidden;
position: relative;
}
/* Industrial grunge texture overlay */
body::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background:
url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3C/svg%3E");
opacity: 0.08;
pointer-events: none;
mix-blend-mode: overlay;
}
.construct-container {
position: relative;
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
/* World Tree - subtle background element */
.world-tree {
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 60vh;
height: 40vh;
background:
radial-gradient(circle at 50% 100%, rgba(66, 72, 241, 0.1) 0%, transparent 60%),
radial-gradient(circle at 50% 90%, rgba(247, 68, 68, 0.08) 0%, transparent 50%);
border-radius: 50% 50% 0 0 / 60% 60% 0 0;
z-index: 1;
opacity: 0.6;
animation: tree-pulse 4s ease-in-out infinite;
}
@keyframes tree-pulse {
0%, 100% { opacity: 0.5; }
50% { opacity: 0.7; }
}
/* Round Table - Stark garage centerpiece */
.round-table {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(2);
width: 400px;
height: 400px;
border: 8px solid rgba(139, 139, 139, 0.3);
border-radius: 50%;
background:
radial-gradient(circle at 30% 30%, rgba(66, 72, 241, 0.05) 0%, transparent 50%),
repeating-linear-gradient(
0deg,
transparent,
transparent 20px,
rgba(0, 0, 0, 0.1) 20px,
transparent 40px
);
z-index: 1;
box-shadow:
0 0 60px rgba(0, 0, 0, 0.5),
inset 0 0 40px rgba(0, 0, 0, 0.3);
}
/* Form Container */
.construct-form {
position: relative;
z-index: 10;
background: linear-gradient(135deg, #1f1f1f 0%, #1a1a1a 100%);
border: 3px solid rgba(139, 139, 139, 0.4);
padding: 2.5rem 2rem;
max-width: 500px;
max-height: 90vh;
overflow-y: auto;
text-align: center;
box-shadow:
0 0 0 10px rgba(0, 0, 0, 0.8),
0 10px 30px rgba(0, 0, 0, 0.5),
inset 0 1px 0 rgba(255, 255, 255, 0.05);
position: relative;
}
/* Industrial corner markers */
.construct-form::before {
content: '';
position: absolute;
top: -1px;
left: -1px;
right: -1px;
bottom: -1px;
background:
linear-gradient(to right, rgba(66, 72, 241, 0.6) 2px, transparent 2px) 0 0 / 10px 10px,
linear-gradient(to right, transparent 2px, rgba(66, 72, 241, 0.6) 2px) 0 100% / 10px 10px,
linear-gradient(to bottom, rgba(66, 72, 241, 0.6) 2px, transparent 2px) 0 0 / 10px 10px,
linear-gradient(to bottom, transparent 2px, rgba(66, 72, 241, 0.6) 2px) 100% 0 / 10px 10px;
pointer-events: none;
border-radius: 2px;
}
/* Persona Display Stage */
.persona-display {
margin-bottom: 2rem;
padding-bottom: 1.5rem;
border-bottom: 1px solid rgba(139, 139, 139, 0.3);
}
.persona-avatar {
width: 100px;
height: 100px;
margin: 0 auto 1.5rem;
border-radius: 50%;
border: 4px solid rgba(139, 139, 139, 0.5);
overflow: hidden;
position: relative;
box-shadow:
0 0 20px rgba(0, 0, 0, 0.4),
inset 0 0 15px rgba(0, 0, 0, 0.3);
background: #0f0f0f;
transition: all 0.3s ease;
}
.persona-avatar:hover {
border-color: rgba(66, 72, 241, 0.6);
box-shadow:
0 0 30px rgba(66, 72, 241, 0.5),
inset 0 0 20px rgba(66, 72, 241, 0.1);
}
.avatar-image {
width: 100%;
height: 100%;
object-fit: cover;
filter: sepia(30%) contrast(1.1);
}
.avatar-placeholder {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
font-size: 2.5rem;
background: linear-gradient(135deg, #2a2a2a 0%, #1a1a1a 100%);
color: #666;
font-weight: bold;
}
.persona-name {
font-size: 1.75rem;
font-weight: 700;
margin-bottom: 0.5rem;
color: #d4d4d4;
text-transform: uppercase;
letter-spacing: 3px;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8);
font-family: "Impact", "Arial Black", sans-serif;
animation: glitch 3s infinite;
}
@keyframes glitch {
0%, 90%, 100% {
transform: translate(0);
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8);
}
91% {
transform: translate(-2px, 1px);
text-shadow: -2px -1px 0 rgba(66, 72, 241, 0.8);
}
92% {
transform: translate(2px, -1px);
text-shadow: 2px 1px 0 rgba(247, 68, 68, 0.8);
}
93% {
transform: translate(-1px, 2px);
}
94% {
transform: translate(1px, -2px);
}
95% {
transform: translate(0);
}
}
.persona-subtitle {
font-size: 0.75rem;
color: #888;
margin-bottom: 0;
text-transform: uppercase;
letter-spacing: 4px;
font-family: "Courier New", monospace;
}
/* Customization Stage */
.customization-stage {
display: block;
animation: fade-in 0.5s ease;
}
@keyframes fade-in {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.customization-header {
margin-bottom: 1.5rem;
padding-bottom: 1rem;
border-bottom: 2px solid rgba(66, 72, 241, 0.4);
}
.customization-header h2 {
font-size: 1.25rem;
font-weight: 700;
margin: 0 0 0.5rem 0;
color: #4248f1;
text-transform: uppercase;
letter-spacing: 2px;
font-family: "Impact", "Arial Black", sans-serif;
}
.stage-description {
font-size: 0.75rem;
color: #777;
margin: 0;
}
/* Section: RSI Selection */
.rsi-selection,
.voice-selection {
margin-bottom: 2rem;
padding: 1.25rem;
background: rgba(0, 0, 0, 0.2);
border: 1px solid rgba(139, 139, 139, 0.3);
border-radius: 0;
}
.section-label {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 1rem;
color: #888;
font-size: 0.875rem;
font-weight: 600;
letter-spacing: 2px;
text-transform: uppercase;
font-family: "Courier New", monospace;
}
.section-icon {
font-size: 1.25rem;
}
.section-help {
font-size: 0.675rem;
color: #666;
margin: 0 0 1rem 0;
line-height: 1.4;
}
/* RSI Options */
.rsi-options {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.rsi-option,
.voice-option {
display: flex;
padding: 0.75rem 1rem;
background: rgba(15, 15, 15, 0.8);
border: 2px solid rgba(139, 139, 139, 0.2);
border-radius: 0;
cursor: pointer;
transition: all 0.2s ease;
align-items: center;
}
.rsi-option:hover,
.voice-option:hover {
background: rgba(25, 25, 25, 0.9);
border-color: rgba(66, 72, 241, 0.4);
}
.rsi-option input[type="radio"],
.voice-option input[type="radio"] {
margin-right: 1rem;
width: 1.25rem;
height: 1.25rem;
cursor: pointer;
}
.option-content {
flex: 1;
display: flex;
flex-direction: column;
}
.option-title {
font-size: 0.875rem;
font-weight: 700;
color: #d4d4d4;
text-transform: uppercase;
letter-spacing: 1px;
}
.option-desc {
font-size: 0.75rem;
color: #666;
margin-top: 0.25rem;
}
/* Upload Input */
.rsi-upload {
margin-top: 1rem;
padding: 1rem;
background: rgba(10, 10, 10, 0.6);
border: 1px dashed rgba(139, 139, 139, 0.3);
}
.rsi-upload input[type="file"] {
width: 100%;
font-family: "Courier New", monospace;
font-size: 0.875rem;
color: #888;
cursor: pointer;
}
.upload-status {
font-size: 0.75rem;
color: #4248f1;
margin-top: 0.5rem;
}
/* Voice Presets */
.voice-presets {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
/* Custom Tokens Input */
.voice-custom {
margin-top: 1rem;
padding: 1rem;
background: rgba(10, 10, 10, 0.6);
border: 1px solid rgba(139, 139, 139, 0.3);
}
.voice-custom label {
display: block;
font-size: 0.75rem;
color: #777;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1px;
margin-bottom: 0.5rem;
}
.voice-custom input[type="text"] {
width: 100%;
padding: 0.75rem 1rem;
border: 2px solid rgba(139, 139, 139, 0.3);
border-radius: 0;
background: rgba(15, 15, 15, 0.8);
color: #d4d4d4;
font-family: "Courier New", monospace;
font-size: 0.875rem;
box-sizing: border-box;
}
/* Login Stage */
.login-stage {
display: none;
}
.input-group {
margin-bottom: 1.75rem;
text-align: left;
}
.input-group label {
display: block;
margin-bottom: 0.5rem;
color: #777;
font-size: 0.75rem;
font-weight: 600;
letter-spacing: 2px;
text-transform: uppercase;
font-family: "Courier New", monospace;
}
.input-group input {
width: 100%;
padding: 0.875rem 1rem;
border: 2px solid rgba(139, 139, 139, 0.3);
border-radius: 0;
background: #0f0f0f;
color: #d4d4d4;
font-size: 1rem;
font-family: "Courier New", monospace;
box-sizing: border-box;
transition: all 0.2s ease;
text-transform: uppercase;
letter-spacing: 1px;
}
.input-group input:focus {
outline: none;
border-color: rgba(66, 72, 241, 0.8);
background: #151515;
box-shadow:
inset 0 0 10px rgba(66, 72, 241, 0.1),
0 0 20px rgba(66, 72, 241, 0.2);
}
.input-group input::placeholder {
color: #444;
text-transform: none;
}
/* Buttons */
.btn-main {
width: 100%;
padding: 1rem;
border: 3px solid rgba(139, 139, 139, 0.5);
background: linear-gradient(135deg, #2a2a2a 0%, #1f1f1f 100%);
color: #d4d4d4;
font-size: 1rem;
font-weight: 700;
letter-spacing: 2px;
cursor: pointer;
transition: all 0.2s ease;
text-transform: uppercase;
font-family: "Impact", "Arial Black", sans-serif;
margin-top: 0.5rem;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
}
.btn-main:hover {
background: linear-gradient(135deg, #333 0%, #2a2a2a 100%);
border-color: rgba(66, 72, 241, 0.6);
box-shadow: 0 5px 15px rgba(66, 72, 241, 0.3);
transform: translateY(-2px);
text-shadow: 2px 2px 4px rgba(66, 72, 241, 0.8);
}
.btn-main:active {
transform: translateY(0);
box-shadow: inset 0 2px 10px rgba(0, 0, 0, 0.3);
}
.btn-secondary {
width: 100%;
padding: 0.875rem;
border: 2px solid rgba(139, 139, 139, 0.4);
background: transparent;
color: #777;
font-size: 0.875rem;
font-weight: 600;
letter-spacing: 1px;
cursor: pointer;
transition: all 0.2s ease;
text-transform: uppercase;
font-family: "Courier New", monospace;
margin-top: 0.5rem;
}
.btn-secondary:hover {
background: rgba(15, 15, 15, 0.8);
color: #d4d4d4;
border-color: rgba(66, 72, 241, 0.4);
}
.btn-continue {
width: 100%;
padding: 1rem;
border: 3px solid rgba(66, 72, 241, 0.5);
background: linear-gradient(135deg, #4248f1 0%, #2a2a2a 100%);
color: #d4d4d4;
font-size: 1rem;
font-weight: 700;
letter-spacing: 2px;
cursor: pointer;
transition: all 0.2s ease;
text-transform: uppercase;
font-family: "Impact", "Arial Black", sans-serif;
margin-top: 1rem;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
animation: pulse 2s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { box-shadow: 0 0 20px rgba(66, 72, 241, 0.3); }
50% { box-shadow: 0 0 30px rgba(66, 72, 241, 0.5); }
}
.btn-continue:hover {
background: linear-gradient(135deg, #333 0%, #4248f1 100%);
border-color: rgba(66, 72, 241, 0.6);
box-shadow: 0 5px 20px rgba(66, 72, 241, 0.4);
transform: translateY(-2px);
animation: none;
}
.error {
color: #cf6679;
margin-top: 1.5rem;
font-size: 0.875rem;
text-transform: uppercase;
letter-spacing: 1px;
border: 1px solid #cf6679;
padding: 0.75rem;
background: rgba(207, 102, 121, 0.1);
}
/* Scanline effect */
body::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(0, 0, 0, 0.03) 2px,
transparent 4px
);
pointer-events: none;
z-index: 100;
}
/* Responsive */
@media (max-width: 600px) {
.construct-form {
padding: 1.5rem 1rem;
max-width: 95%;
}
.round-table {
width: 250px;
height: 250px;
}
.world-tree {
width: 40vh;
height: 25vh;
}
.persona-name {
font-size: 1.5rem;
letter-spacing: 2px;
}
.persona-avatar {
width: 80px;
height: 80px;
}
.customization-header h2 {
font-size: 1rem;
}
.rsi-option,
.voice-option {
padding: 0.625rem 0.75rem;
}
}