angelarv's picture
Testing the site
4dfc072 verified
Raw History Blame Contribute Delete
6.17 kB
:root {
--bg: #0f1117;
--surface: #1a1d27;
--surface-2: #242836;
--border: #2e3345;
--text: #e8eaf0;
--text-muted: #9aa3b5;
--primary: #6c5ce7;
--primary-hover: #5a4bd1;
--success: #00b894;
--danger: #ff6b6b;
--radius: 12px;
--shadow: 0 8px 32px rgba(0, 0, 0, 0.35);
--font: "Inter", system-ui, -apple-system, sans-serif;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: var(--font);
background: var(--bg);
color: var(--text);
line-height: 1.55;
min-height: 100vh;
}
.app {
max-width: 880px;
margin: 0 auto;
padding: 2rem 1.25rem 4rem;
}
/* Header */
.header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 2rem;
gap: 1rem;
flex-wrap: wrap;
}
.logo {
display: flex;
align-items: center;
gap: 0.9rem;
}
.logo-icon {
font-size: 2.2rem;
background: linear-gradient(135deg, var(--primary), #a29bfe);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.logo h1 {
font-size: 1.55rem;
font-weight: 700;
letter-spacing: -0.02em;
}
.subtitle {
font-size: 0.85rem;
color: var(--text-muted);
margin-top: 0.15rem;
}
.device-badge {
background: var(--surface-2);
border: 1px solid var(--border);
padding: 0.4rem 0.85rem;
border-radius: 999px;
font-size: 0.8rem;
color: var(--text-muted);
}
/* Cards */
.card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 1.5rem;
margin-bottom: 1.25rem;
box-shadow: var(--shadow);
}
.card h2 {
font-size: 1.1rem;
font-weight: 600;
margin-bottom: 1.1rem;
color: var(--text);
}
/* Dropzone */
.dropzone {
border: 2px dashed var(--border);
border-radius: var(--radius);
padding: 2.5rem 1.5rem;
text-align: center;
cursor: pointer;
transition: border-color 0.2s, background 0.2s;
background: var(--surface-2);
}
.dropzone:hover,
.dropzone.dragover {
border-color: var(--primary);
background: rgba(108, 92, 231, 0.08);
}
.drop-icon {
font-size: 2rem;
margin-bottom: 0.5rem;
opacity: 0.7;
}
.dropzone p {
color: var(--text-muted);
font-size: 0.95rem;
}
.dropzone .hint {
font-size: 0.8rem;
margin-top: 0.3rem;
}
.file-name {
margin-top: 0.75rem !important;
color: var(--primary) !important;
font-weight: 500;
}
/* Form */
.form-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.1rem;
}
@media (max-width: 640px) {
.form-grid {
grid-template-columns: 1fr;
}
}
.form-group {
display: flex;
flex-direction: column;
gap: 0.35rem;
}
.form-group label {
font-size: 0.85rem;
font-weight: 500;
color: var(--text-muted);
}
.form-group select,
.form-group input[type="text"] {
background: var(--surface-2);
border: 1px solid var(--border);
color: var(--text);
padding: 0.6rem 0.75rem;
border-radius: 8px;
font-size: 0.9rem;
font-family: inherit;
outline: none;
transition: border-color 0.15s;
}
.form-group select:focus,
.form-group input:focus {
border-color: var(--primary);
}
.form-group .hint {
font-size: 0.75rem;
color: var(--text-muted);
margin-top: 0.15rem;
}
.form-group code {
background: var(--surface-2);
padding: 0.1rem 0.35rem;
border-radius: 4px;
font-size: 0.75rem;
}
.options-row {
display: flex;
flex-wrap: wrap;
gap: 1.25rem;
margin-top: 1.25rem;
}
.checkbox {
display: flex;
align-items: center;
gap: 0.45rem;
font-size: 0.9rem;
color: var(--text-muted);
cursor: pointer;
}
.checkbox input {
accent-color: var(--primary);
width: 1.05rem;
height: 1.05rem;
}
/* Buttons */
.actions {
display: flex;
gap: 0.75rem;
flex-wrap: wrap;
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
padding: 0.7rem 1.4rem;
border-radius: 8px;
font-size: 0.95rem;
font-weight: 600;
font-family: inherit;
border: none;
cursor: pointer;
transition: background 0.15s, opacity 0.15s, transform 0.1s;
}
.btn:active {
transform: scale(0.98);
}
.btn:disabled {
opacity: 0.45;
cursor: not-allowed;
}
.btn.primary {
background: var(--primary);
color: #fff;
}
.btn.primary:hover:not(:disabled) {
background: var(--primary-hover);
}
.btn.secondary {
background: var(--surface-2);
color: var(--text);
border: 1px solid var(--border);
}
.btn.secondary:hover {
background: var(--border);
}
.spinner {
width: 18px;
height: 18px;
border: 2px solid rgba(255, 255, 255, 0.3);
border-top-color: #fff;
border-radius: 50%;
animation: spin 0.7s linear infinite;
}
.spinner.hidden {
display: none;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
/* Status */
.status-message {
font-size: 0.95rem;
margin-bottom: 0.75rem;
color: var(--text-muted);
}
.progress-bar {
height: 6px;
background: var(--surface-2);
border-radius: 999px;
overflow: hidden;
}
.progress-fill {
height: 100%;
width: 0%;
background: linear-gradient(90deg, var(--primary), #a29bfe);
border-radius: 999px;
transition: width 0.3s ease;
}
/* Results */
.results-meta {
display: flex;
flex-wrap: wrap;
gap: 1rem;
margin-bottom: 1.25rem;
font-size: 0.85rem;
color: var(--text-muted);
}
.results-meta span {
background: var(--surface-2);
padding: 0.3rem 0.7rem;
border-radius: 6px;
}
.stems-list {
display: flex;
flex-direction: column;
gap: 0.65rem;
}
.stem-item {
display: flex;
align-items: center;
justify-content: space-between;
background: var(--surface-2);
border: 1px solid var(--border);
border-radius: 8px;
padding: 0.75rem 1rem;
}
.stem-name {
font-weight: 500;
text-transform: capitalize;
}
.stem-item a {
color: var(--primary);
text-decoration: none;
font-size: 0.9rem;
font-weight: 500;
}
.stem-item a:hover {
text-decoration: underline;
}
/* Footer */
.footer {
text-align: center;
margin-top: 2.5rem;
font-size: 0.8rem;
color: var(--text-muted);
}
.footer a {
color: var(--primary);
text-decoration: none;
}
.footer a:hover {
text-decoration: underline;
}
.hidden {
display: none !important;
}
/* Error state */
.error-text {
color: var(--danger);
}