Spaces:
Running
Running
:root { | |
--primary: #4f46e5; | |
--success: #10b981; | |
--secondary: #64748b; | |
--bg: #f8fafc; | |
--text: #1e293b; | |
--panel-bg: #ffffff; | |
--border: #e2e8f0; | |
} | |
[data-theme="dark"] { | |
--primary: #818cf8; | |
--success: #34d399; | |
--secondary: #94a3b8; | |
--bg: #0f172a; | |
--text: #e2e8f0; | |
--panel-bg: #1e293b; | |
--border: #334155; | |
} | |
* { | |
margin: 0; | |
padding: 0; | |
box-sizing: border-box; | |
font-family: system-ui, -apple-system, sans-serif; | |
} | |
body { | |
background: var(--bg); | |
min-height: 100vh; | |
padding: 2rem; | |
color: var(--text); | |
transition: background-color 0.3s, color 0.3s; | |
} | |
.theme-toggle { | |
position: fixed; | |
top: 2rem; | |
right: 2rem; | |
background: var(--panel-bg); | |
border: 1px solid var(--border); | |
width: 3rem; | |
height: 3rem; | |
border-radius: 50%; | |
cursor: pointer; | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
font-size: 1.5rem; | |
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | |
transition: transform 0.3s ease; | |
z-index: 100; | |
} | |
.theme-toggle:hover { | |
transform: scale(1.1); | |
} | |
.container { | |
max-width: 1400px; | |
margin: 0 auto; | |
display: grid; | |
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); | |
gap: 2rem; | |
} | |
.panel { | |
background: var(--panel-bg); | |
padding: 2rem; | |
border-radius: 1rem; | |
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); | |
transition: background-color 0.3s; | |
} | |
h2 { | |
color: var(--text); | |
margin-bottom: 1.5rem; | |
font-size: 1.5rem; | |
} | |
.form-group { | |
margin-bottom: 1.25rem; | |
} | |
label { | |
display: block; | |
margin-bottom: 0.5rem; | |
font-weight: 500; | |
color: var(--text); | |
} | |
input, | |
textarea, | |
select { | |
width: 100%; | |
padding: 0.75rem; | |
border: 1px solid var(--border); | |
border-radius: 0.5rem; | |
font-size: 0.95rem; | |
background: var(--panel-bg); | |
color: var(--text); | |
transition: all 0.15s; | |
} | |
input:focus, | |
textarea:focus, | |
select:focus { | |
outline: none; | |
border-color: var(--primary); | |
box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1); | |
} | |
textarea { | |
height: 120px; | |
resize: vertical; | |
line-height: 1.5; | |
} | |
/* Font section styling */ | |
.font-section { | |
border: 1px solid var(--border); | |
border-radius: 0.75rem; | |
padding: 1.5rem; | |
margin-bottom: 1.5rem; | |
background: var(--bg); | |
} | |
.font-controls { | |
margin-bottom: 1.25rem; | |
} | |
.font-controls:last-child { | |
margin-bottom: 0; | |
} | |
.font-selectors { | |
display: grid; | |
grid-template-columns: 2fr 1fr; | |
gap: 0.75rem; | |
} | |
.font-select { | |
-webkit-appearance: none; | |
-moz-appearance: none; | |
appearance: none; | |
background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e"); | |
background-repeat: no-repeat; | |
background-position: right 0.75rem center; | |
background-size: 1em; | |
padding-right: 2.5rem; | |
} | |
.font-select::-ms-expand { | |
display: none; | |
} | |
/* Color picker styling */ | |
.color-grid { | |
display: grid; | |
grid-template-columns: repeat(2, 1fr); | |
gap: 1rem; | |
margin-bottom: 1.5rem; | |
} | |
.color-picker { | |
position: relative; | |
} | |
.color-input-wrapper { | |
display: flex; | |
align-items: center; | |
gap: 0.75rem; | |
} | |
input[type="color"] { | |
-webkit-appearance: none; | |
-moz-appearance: none; | |
appearance: none; | |
width: 48px; | |
height: 48px; | |
padding: 0; | |
border: none; | |
border-radius: 0.5rem; | |
cursor: pointer; | |
} | |
input[type="color"]::-webkit-color-swatch-wrapper { | |
padding: 0; | |
} | |
input[type="color"]::-webkit-color-swatch { | |
border: none; | |
border-radius: 0.5rem; | |
box-shadow: inset 0 0 0 1px var(--border); | |
} | |
input[type="color"]::-moz-color-swatch { | |
border: none; | |
border-radius: 0.5rem; | |
box-shadow: inset 0 0 0 1px var(--border); | |
} | |
.color-text { | |
flex: 1; | |
padding: 0.75rem; | |
border: 1px solid var(--border); | |
border-radius: 0.5rem; | |
font-family: monospace; | |
font-size: 0.95rem; | |
text-transform: uppercase; | |
} | |
/* Slider styling */ | |
.slider { | |
-webkit-appearance: none; | |
-moz-appearance: none; | |
appearance: none; | |
width: 100%; | |
height: 6px; | |
border-radius: 3px; | |
background: var(--border); | |
outline: none; | |
margin-top: 0.5rem; | |
} | |
.slider::-webkit-slider-thumb { | |
-webkit-appearance: none; | |
-moz-appearance: none; | |
appearance: none; | |
width: 18px; | |
height: 18px; | |
border-radius: 50%; | |
background: var(--primary); | |
cursor: pointer; | |
transition: transform 0.2s; | |
} | |
.slider::-webkit-slider-thumb:hover { | |
transform: scale(1.1); | |
} | |
.slider::-moz-range-thumb { | |
width: 18px; | |
height: 18px; | |
border-radius: 50%; | |
background: var(--primary); | |
cursor: pointer; | |
border: none; | |
transition: transform 0.2s; | |
} | |
.slider::-moz-range-thumb:hover { | |
transform: scale(1.1); | |
} | |
/* Button styling */ | |
.btn-group { | |
display: flex; | |
gap: 0.75rem; | |
flex-wrap: wrap; | |
} | |
.btn { | |
padding: 0.75rem 1.5rem; | |
border: none; | |
border-radius: 0.5rem; | |
font-weight: 500; | |
cursor: pointer; | |
transition: all 0.2s; | |
display: inline-flex; | |
align-items: center; | |
gap: 0.5rem; | |
min-width: 120px; | |
justify-content: center; | |
} | |
.btn:hover { | |
transform: translateY(-2px); | |
} | |
.btn:disabled { | |
opacity: 0.7; | |
cursor: not-allowed; | |
transform: none; | |
} | |
.btn-primary { | |
background: var(--primary); | |
color: white; | |
} | |
.btn-success { | |
background: var(--success); | |
color: white; | |
} | |
.btn-secondary { | |
background: var(--secondary); | |
color: white; | |
} | |
/* Preview container */ | |
#preview-container { | |
width: 100%; | |
aspect-ratio: 16/9; | |
border-radius: 0.75rem; | |
overflow: hidden; | |
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); | |
background: var(--panel-bg); | |
position: relative; | |
} | |
#quoteImage { | |
width: 100%; | |
height: 100%; | |
object-fit: contain; | |
transition: opacity 0.3s ease; | |
} | |
/* Loading states */ | |
.loading { | |
position: absolute; | |
inset: 0; | |
display: none; | |
align-items: center; | |
justify-content: center; | |
background: rgba(0, 0, 0, 0.5); | |
backdrop-filter: blur(4px); | |
border-radius: 0.75rem; | |
} | |
.loading-content { | |
display: flex; | |
flex-direction: column; | |
align-items: center; | |
gap: 1rem; | |
color: white; | |
} | |
.loading-spinner { | |
width: 40px; | |
height: 40px; | |
border: 3px solid rgba(255, 255, 255, 0.3); | |
border-radius: 50%; | |
border-top-color: white; | |
animation: spin 1s linear infinite; | |
} | |
.btn-loader { | |
display: none; | |
width: 20px; | |
height: 20px; | |
border: 2px solid #ffffff; | |
border-radius: 50%; | |
border-top-color: transparent; | |
animation: spin 1s linear infinite; | |
} | |
@keyframes spin { | |
to { | |
transform: rotate(360deg); | |
} | |
} | |
/* Modal styling */ | |
.modal { | |
display: none; | |
position: fixed; | |
inset: 0; | |
background: rgba(0, 0, 0, 0.5); | |
backdrop-filter: blur(4px); | |
z-index: 1000; | |
} | |
.modal-content { | |
position: absolute; | |
top: 50%; | |
left: 50%; | |
transform: translate(-50%, -50%); | |
background: var(--panel-bg); | |
padding: 2rem; | |
border-radius: 1rem; | |
max-width: 600px; | |
width: 90%; | |
max-height: 80vh; | |
overflow-y: auto; | |
} | |
.close-btn { | |
position: absolute; | |
right: 1.5rem; | |
top: 1.5rem; | |
font-size: 1.5rem; | |
cursor: pointer; | |
opacity: 0.7; | |
transition: opacity 0.2s; | |
color: var(--text); | |
} | |
.close-btn:hover { | |
opacity: 1; | |
} | |
/* Request history styling */ | |
.requests-list { | |
margin-top: 1rem; | |
} | |
.request-item { | |
background: var(--bg); | |
border: 1px solid var(--border); | |
border-radius: 0.5rem; | |
padding: 1rem; | |
margin-bottom: 1rem; | |
} | |
.request-time { | |
font-size: 0.875rem; | |
color: var(--secondary); | |
margin-bottom: 0.5rem; | |
} | |
.request-data { | |
font-family: monospace; | |
font-size: 0.875rem; | |
white-space: pre-wrap; | |
overflow-x: auto; | |
color: var(--text); | |
} | |
/* Status message */ | |
#status { | |
position: fixed; | |
bottom: 2rem; | |
right: 2rem; | |
padding: 1rem 1.5rem; | |
border-radius: 0.5rem; | |
background: var(--panel-bg); | |
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); | |
display: none; | |
animation: slideIn 0.3s ease-out; | |
z-index: 100; | |
} | |
@keyframes slideIn { | |
from { | |
transform: translateY(100%); | |
opacity: 0; | |
} | |
to { | |
transform: translateY(0); | |
opacity: 1; | |
} | |
} | |
/* Responsive design */ | |
@media (max-width: 768px) { | |
body { | |
padding: 1rem; | |
} | |
.container { | |
grid-template-columns: 1fr; | |
} | |
.color-grid { | |
grid-template-columns: 1fr; | |
} | |
.font-selectors { | |
grid-template-columns: 1fr; | |
} | |
.btn-group { | |
flex-direction: column; | |
} | |
.btn { | |
width: 100%; | |
} | |
.theme-toggle { | |
top: 1rem; | |
right: 1rem; | |
} | |
.modal-content { | |
width: calc(100% - 2rem); | |
margin: 1rem; | |
} | |
} | |