* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

body {
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background: radial-gradient(circle at top, #262a3a 0, #050509 60%);
color: #f5f5f7;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 24px;
}

.app {
width: 100%;
max-width: 90vw;
background: linear-gradient(135deg, rgba(18, 18, 24, 0.96), rgba(10, 10, 18, 0.98));
border-radius: 20px;
border: 1px solid rgba(255, 255, 255, 0.04);
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
backdrop-filter: blur(18px);
padding: 24px 28px 28px;
}

.header {
display: flex;
flex-direction: column;
gap: 8px;
margin-bottom: 20px;
}

.header h1 {
font-size: 22px;
letter-spacing: 0.06em;
text-transform: uppercase;
color: #ffcf4a;
}

.header p {
font-size: 13px;
color: #a3a3b5;
}

.main {
display: grid;
grid-template-columns: 260px minmax(0, 1fr);
gap: 24px;
align-items: stretch;
}

.controls {
background: radial-gradient(circle at top left, #252538 0, #111119 55%);
border-radius: 16px;
padding: 18px 16px 16px;
border: 1px solid rgba(255, 255, 255, 0.04);
display: flex;
flex-direction: column;
gap: 14px;
}

.field {
display: flex;
flex-direction: column;
gap: 6px;
}

.field label {
font-size: 13px;
color: #d3d3de;
}

input[type="file"] {
font-size: 12px;
color: #d3d3e5;
}

input[type="file"]::file-selector-button {
border: none;
background: linear-gradient(135deg, #ffcf4a, #ff8a3c);
color: #111;
padding: 6px 14px;
border-radius: 999px;
font-size: 12px;
cursor: pointer;
margin-right: 10px;
transition: transform 0.12s ease, box-shadow 0.12s ease, filter 0.12s ease;
box-shadow: 0 6px 14px rgba(0, 0, 0, 0.55);
}

input[type="file"]::file-selector-button:hover {
transform: translateY(-1px);
filter: brightness(1.05);
box-shadow: 0 10px 22px rgba(0, 0, 0, 0.7);
}

input[type="file"]::file-selector-button:active {
transform: translateY(0);
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.7);
}

input[type="color"] {
width: 100%;
height: 32px;
border-radius: 10px;
border: 1px solid rgba(255, 255, 255, 0.2);
background: transparent;
padding: 0;
cursor: pointer;
}

select {
width: 100%;
padding: 8px 10px;
border-radius: 10px;
border: 1px solid rgba(255, 255, 255, 0.1);
background: rgba(10, 10, 16, 0.9);
color: #f5f5ff;
font-size: 13px;
outline: none;
appearance: none;
background-image: linear-gradient(45deg, #ffcf4a, #ff8a3c);
background-origin: border-box;
background-clip: padding-box, border-box;
}

.slider-row {
display: flex;
align-items: center;
gap: 10px;
}

input[type="range"] {
flex: 1;
appearance: none;
height: 4px;
border-radius: 999px;
background: linear-gradient(90deg, #484f84, #ffcf4a);
outline: none;
}

input[type="range"]::-webkit-slider-thumb {
appearance: none;
width: 16px;
height: 16px;
border-radius: 50%;
background: #ffcf4a;
border: 2px solid #111118;
box-shadow: 0 0 0 3px rgba(255, 207, 74, 0.4);
cursor: pointer;
}

#thresholdValue {
min-width: 32px;
text-align: right;
font-size: 13px;
color: #f5f5ff;
}

.actions {
display: flex;
gap: 10px;
margin-top: 4px;
}

.actions button {
flex: 1;
border-radius: 999px;
border: none;
padding: 8px 10px;
font-size: 13px;
cursor: pointer;
transition: transform 0.12s ease, box-shadow 0.12s ease, filter 0.12s ease, background 0.12s ease;
display: inline-flex;
align-items: center;
justify-content: center;
white-space: nowrap;
}

#applyButton {
background: linear-gradient(135deg, #ffcf4a, #ff8a3c);
color: #111019;
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.6);
}

#downloadButton {
background: rgba(40, 40, 60, 0.95);
color: #f5f5ff;
border: 1px solid rgba(255, 255, 255, 0.08);
}

.actions button:hover:not(:disabled) {
transform: translateY(-1px);
filter: brightness(1.03);
box-shadow: 0 12px 26px rgba(0, 0, 0, 0.7);
}

.actions button:active:not(:disabled) {
transform: translateY(0);
box-shadow: 0 5px 12px rgba(0, 0, 0, 0.75);
}

.actions button:disabled {
opacity: 0.4;
cursor: default;
box-shadow: none;
}

.preview {
background: radial-gradient(circle at top right, #23263c 0, #101019 60%);
border-radius: 16px;
padding: 14px 14px 16px;
border: 1px solid rgba(255, 255, 255, 0.04);
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
width: 100%;
}

.preview-panel {
display: flex;
flex-direction: column;
gap: 8px;
}

.preview-panel h2 {
font-size: 13px;
font-weight: 500;
letter-spacing: 0.08em;
text-transform: uppercase;
color: #b7b7c7;
}

.preview-box {
flex: 1;
border-radius: 12px;
background: radial-gradient(circle at top, #141420 0, #050509 70%);
border: 1px solid rgba(255, 255, 255, 0.05);
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
position: relative;
min-height: 520px;
}

.preview-box::before {
content: "";
position: absolute;
inset: 0;
background: radial-gradient(circle at top, rgba(255, 207, 74, 0.12) 0, transparent 55%);
pointer-events: none;
}

.preview-box img,
.preview-box canvas {
max-width: 100%;
max-height: 100%;
display: block;
}

.image-modal {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.9);
display: none;
align-items: center;
justify-content: center;
z-index: 999;
padding: 0;
}

.image-modal.visible {
display: flex;
}

.image-modal-inner {
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
}

.image-modal-inner img {
max-width: 90vw;
max-height: 90vh;
border-radius: 16px;
border: 1px solid rgba(255, 255, 255, 0.35);
box-shadow: 0 24px 80px rgba(0, 0, 0, 0.9);
}

@media (max-width: 900px) {
.main {
grid-template-columns: minmax(0, 1fr);
}
.preview {
grid-template-columns: minmax(0, 1fr);
}
}

@media (max-width: 640px) {
body {
padding: 12px;
}
.app {
padding: 18px 16px 16px;
}
.preview-box {
min-height: 260px;
}
}

@media (min-width: 1400px) {
.preview-box {
min-height: 640px;
}
}
