Files
2026-08-14 11:44:00 +02:00

685 lines
7.4 KiB
CSS

* {
box-sizing: border-box;
}
:root {
font-family:
Inter,
ui-sans-serif,
system-ui,
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
sans-serif;
color: #18181b;
background: #f4f4f5;
}
body {
margin: 0;
min-height: 100vh;
background:
radial-gradient(
circle at top,
#ffffff 0,
#f4f4f5 45%,
#e4e4e7 100%
);
}
button,
input,
textarea {
font: inherit;
}
.container {
width:
min(
900px,
calc(100% - 32px)
);
margin:
0 auto;
padding:
56px 0 80px;
}
/* Header */
.header {
margin-bottom: 32px;
}
.header h1 {
margin:
0 0 8px;
font-size:
clamp(
32px,
6vw,
46px
);
letter-spacing:
-0.04em;
}
.header p {
margin: 0;
color: #71717a;
font-size: 16px;
}
/* Cards */
.card {
margin-bottom: 24px;
padding: 28px;
background:
rgba(
255,
255,
255,
0.92
);
border:
1px solid #e4e4e7;
border-radius: 16px;
box-shadow:
0 8px 30px
rgba(
0,
0,
0,
0.05
);
}
.card-header {
margin-bottom: 28px;
}
.card-header h2 {
margin:
0 0 6px;
font-size: 22px;
letter-spacing:
-0.02em;
}
.card-header p {
margin: 0;
color: #71717a;
font-size: 14px;
}
/* Forms */
.form-group {
margin-bottom: 22px;
}
label,
.label {
display: block;
margin-bottom: 9px;
font-size: 14px;
font-weight: 650;
}
.optional {
margin-left: 4px;
color: #a1a1aa;
font-weight: 400;
}
.field-hint {
margin-top: 7px;
color: #71717a;
font-size: 12px;
}
input[type="password"],
input[type="file"],
textarea {
width: 100%;
border:
1px solid #d4d4d8;
border-radius: 8px;
background: #ffffff;
color: #18181b;
}
input[type="password"] {
padding:
11px 12px;
}
textarea {
display: block;
min-height: 130px;
padding: 12px;
resize: vertical;
}
input:focus,
textarea:focus {
outline: none;
border-color: #71717a;
box-shadow:
0 0 0 3px
rgba(
113,
113,
122,
0.12
);
}
/* Dropzone */
.dropzone {
display:
flex;
flex-direction:
column;
align-items:
center;
justify-content:
center;
min-height:
170px;
padding:
28px;
border:
1.5px dashed #a1a1aa;
border-radius:
12px;
background:
#fafafa;
text-align:
center;
cursor:
pointer;
transition:
border-color 120ms ease,
background 120ms ease,
transform 120ms ease;
}
.dropzone:hover,
.dropzone:focus {
outline: none;
border-color:
#52525b;
background:
#f4f4f5;
}
.dropzone.dragging {
border-color:
#18181b;
background:
#e4e4e7;
transform:
scale(1.01);
}
.dropzone.has-file {
border-style:
solid;
border-color:
#a1a1aa;
background:
#fafafa;
}
.dropzone-icon {
display:
flex;
align-items:
center;
justify-content:
center;
width:
42px;
height:
42px;
margin-bottom:
12px;
border-radius:
50%;
background:
#e4e4e7;
font-size:
22px;
font-weight:
700;
}
.dropzone strong {
max-width:
100%;
overflow:
hidden;
text-overflow:
ellipsis;
white-space:
nowrap;
}
.dropzone span {
margin-top:
5px;
color:
#71717a;
font-size:
13px;
}
/* Mode */
.mode-selector {
display:
grid;
grid-template-columns:
1fr 1fr;
gap:
10px;
}
.mode-option {
display:
flex;
align-items:
center;
justify-content:
center;
gap:
8px;
padding:
11px;
margin: 0;
border:
1px solid #d4d4d8;
border-radius:
8px;
background:
#ffffff;
cursor:
pointer;
font-weight:
550;
transition:
background 120ms ease,
border-color 120ms ease;
}
.mode-option:hover {
background:
#f4f4f5;
}
.mode-option:has(
input:checked
) {
border-color:
#18181b;
background:
#f4f4f5;
}
.mode-option input {
margin: 0;
}
/* Image info */
.image-info {
display:
flex;
justify-content:
space-between;
gap:
12px;
margin-top:
10px;
padding:
10px 12px;
border:
1px solid #e4e4e7;
border-radius:
8px;
background:
#fafafa;
color:
#52525b;
font-size:
13px;
}
.image-info strong {
color:
#18181b;
}
/* Buttons */
.button {
width:
100%;
padding:
12px 16px;
border:
0;
border-radius:
8px;
background:
#18181b;
color:
#ffffff;
font-weight:
650;
cursor:
pointer;
transition:
background 120ms ease,
transform 120ms ease;
}
.button:hover {
background:
#27272a;
}
.button:active {
transform:
translateY(1px);
}
.button:disabled {
opacity:
0.5;
cursor:
not-allowed;
transform:
none;
}
.secondary-button {
padding:
7px 11px;
border:
1px solid #d4d4d8;
border-radius:
7px;
background:
#ffffff;
color:
#18181b;
font-size:
13px;
cursor:
pointer;
}
.secondary-button:hover {
background:
#f4f4f5;
}
/* Status */
.status {
min-height:
20px;
margin-top:
14px;
font-size:
14px;
}
.status.success {
color:
#166534;
}
.status.error {
color:
#b91c1c;
}
/* Results */
.result {
margin-top:
24px;
padding-top:
22px;
border-top:
1px solid #e4e4e7;
}
.result-header {
display:
flex;
align-items:
center;
justify-content:
space-between;
gap:
12px;
margin-bottom:
10px;
}
.result-header h3 {
margin:
0;
}
.result pre {
margin:
0;
padding:
16px;
max-height:
400px;
overflow:
auto;
border-radius:
8px;
background:
#f4f4f5;
white-space:
pre-wrap;
overflow-wrap:
anywhere;
font-family:
ui-monospace,
SFMono-Regular,
Menlo,
Monaco,
Consolas,
monospace;
font-size:
13px;
line-height:
1.6;
}
/* Utility */
.hidden {
display:
none !important;
}
/* Mobile */
@media (
max-width: 600px
) {
.container {
width:
calc(100% - 20px);
padding:
28px 0 50px;
}
.card {
padding:
20px;
}
.mode-selector {
grid-template-columns:
1fr;
}
.image-info {
flex-direction:
column;
}
.dropzone {
min-height:
150px;
}
}