:root { --main-color: #5a67d8; --main-dark: #4c51bf; --main-light: rgba(90, 103, 216, 0.1); --accent: #0bc5ea; --dark-text: #1a202c; --light-bg: #edf2f7; --gray-text: #4a5568; --light-border: #c0c0c0; --corner-radius: 10px; --shadow-effect: 0 6px 20px rgba(0,0,0,0.08); --smooth-transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .app-wrapper { display: grid; grid-template-columns: 280px 1fr; min-height: 100vh; width: 100%; transition: var(--smooth-transition); gap: 10px; } .control-panel { background: white; padding: 20px; overflow-y: auto; border: 1px solid rgb(207, 207, 207); border-radius: 10px; transition: var(--smooth-transition); } .panel-heading { font-size: 1.4rem; font-weight: 700; color: var(--main-color); margin-bottom: 20px; display: flex; align-items: center; gap: 10px; } .panel-heading i { font-size: 1.3rem; } .input-group { margin-bottom: 18px; } .input-label { display: block; margin-bottom: 8px; font-weight: 600; color: var(--dark-text); font-size: 0.9rem; } .input-field { width: 100%; padding: 10px 14px; border: 1px solid var(--light-border); border-radius: var(--corner-radius); font-size: 0.95rem; transition: var(--smooth-transition); background: white; } .input-field:focus { border-color: var(--main-color); box-shadow: 0 0 0 3px rgba(90, 103, 216, 0.15); outline: none; } .slider-group { display: flex; align-items: center; gap: 12px; } .range-input { flex: 1; -webkit-appearance: none; height: 5px; background: var(--light-border); border-radius: 2px; } .range-input::-webkit-slider-thumb { -webkit-appearance: none; width: 16px; height: 16px; background: var(--main-color); border-radius: 50%; cursor: pointer; transition: var(--smooth-transition); border: 2px solid white; box-shadow: 0 2px 4px rgba(0,0,0,0.15); } .range-input::-webkit-slider-thumb:hover { transform: scale(1.15); box-shadow: 0 0 0 4px rgba(90, 103, 216, 0.15); } .slider-value { width: 45px; text-align: center; font-weight: 600; color: var(--main-color); font-size: 0.95rem; } .toggle-option { display: flex; align-items: center; margin-bottom: 10px; cursor: pointer; } .toggle-option input { margin-right: 8px; width: 16px; height: 16px; accent-color: var(--main-color); cursor: pointer; } .action-btn { display: inline-flex; align-items: center; justify-content: center; padding: 12px 20px; border-radius: var(--corner-radius); font-weight: 600; cursor: pointer; transition: var(--smooth-transition); border: none; outline: none; gap: 6px; font-size: 0.95rem; width: 100%; margin-top: 8px; } .primary-btn { background: var(--main-color); color: white; box-shadow: 0 3px 10px rgba(90, 103, 216, 0.2); } .primary-btn:hover { background: var(--main-dark); box-shadow: 0 5px 14px rgba(90, 103, 216, 0.25); transform: translateY(-1px); } .action-btn i { font-size: 1rem; } .expand-settings { display: flex; align-items: center; color: var(--main-color); font-weight: 600; background: none; border: none; padding: 10px 0; cursor: pointer; margin: 15px 0; font-size: 0.95rem; gap: 6px; transition: var(--smooth-transition); width: 100%; justify-content: space-between; } .expand-settings:hover { color: var(--main-dark); } .expand-settings i { transition: var(--smooth-transition); } .expand-settings.active i { transform: rotate(180deg); } .extra-settings { display: none; padding-top: 12px; border-top: 1px solid var(--light-border); animation: slideIn 0.3s ease; } @keyframes slideIn { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } } .color-swatch { width: 22px; height: 22px; border-radius: 4px; display: inline-block; vertical-align: middle; margin-left: 8px; border: 1px solid var(--light-border); } .content-area { display: grid; padding: 10px; grid-template-rows: auto 1fr; gap: 15px; border: 1px solid rgb(184, 183, 183); border-radius: 15px; } .upload-section { background: white; border-radius: var(--corner-radius); box-shadow: var(--shadow-effect); padding: 25px; } .drag-area { border: 2px dashed var(--main-color); border-radius: var(--corner-radius); padding: 35px 15px; text-align: center; cursor: pointer; transition: var(--smooth-transition); margin-bottom: 15px; background: var(--main-light); position: relative; overflow: hidden; } .drag-area::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 3px; background: var(--main-color); transform: scaleX(0); transform-origin: left; transition: transform 0.4s ease; } .drag-area:hover { background: rgba(90, 103, 216, 0.12); } .drag-area:hover::before { transform: scaleX(1); } .drag-area.active { border-color: var(--accent); background: rgba(11, 197, 234, 0.08); } .upload-symbol { font-size: 42px; color: var(--main-color); margin-bottom: 12px; transition: var(--smooth-transition); } .drag-area:hover .upload-symbol { transform: scale(1.08); } .upload-title { font-size: 1.1rem; font-weight: 600; margin-bottom: 4px; color: var(--dark-text); } .upload-note { font-size: 0.9rem; color: var(--gray-text); } .image-input { display: none; } .file-details { margin-top: 12px; font-size: 0.9rem; color: var(--gray-text); display: flex; justify-content: space-between; background: rgba(90, 103, 216, 0.04); padding: 10px 12px; border-radius: var(--corner-radius); } .preview-panel { background: white; padding: 25px; border-radius: 10px; display: grid; grid-template-columns: 1fr 1fr; gap: 25px; } .preview-block { display: flex; flex-direction: column; } .preview-heading { font-size: 1.1rem; font-weight: 700; margin-bottom: 15px; color: var(--dark-text); display: flex; align-items: center; gap: 8px; } .preview-heading i { color: var(--main-color); font-size: 1.1rem; } .image-viewer { flex: 1; display: flex; flex-direction: column; justify-content: center; align-items: center; background: #f7fafc; border-radius: var(--corner-radius); padding: 15px; position: relative; overflow: hidden; } .image-viewer::before { content: 'PREVIEW'; position: absolute; top: 8px; left: 8px; background: rgba(0,0,0,0.6); color: white; padding: 2px 6px; border-radius: 3px; font-size: 0.75rem; font-weight: 600; } .preview-img { max-width: 100%; max-height: 280px; border-radius: var(--corner-radius); display: block; margin: 0 auto; box-shadow: 0 3px 10px rgba(0,0,0,0.08); transition: var(--smooth-transition); object-fit: contain; } .preview-img:hover { transform: scale(1.01); box-shadow: 0 6px 20px rgba(0,0,0,0.12); } .preview-empty { width: 100%; height: 180px; background: var(--main-light); border: 2px dashed var(--main-color); border-radius: var(--corner-radius); display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--gray-text); transition: var(--smooth-transition); } .preview-empty:hover { background: rgba(90, 103, 216, 0.12); } .preview-empty i { font-size: 38px; margin-bottom: 10px; color: var(--main-color); transition: var(--smooth-transition); } .preview-empty:hover i { transform: scale(1.08); } .preview-details { margin-top: 15px; font-size: 0.85rem; color: var(--gray-text); } .detail-item { display: flex; justify-content: space-between; margin-bottom: 6px; } .detail-label { font-weight: 600; color: var(--dark-text); } .alert-box { padding: 14px; border-radius: var(--corner-radius); margin-bottom: 15px; font-weight: 600; display: flex; align-items: center; gap: 10px; } .alert-box i { font-size: 1.1rem; } .alert-success { background: rgba(72, 187, 120, 0.12); color: #48bb78; display: flex; } .alert-error { background: rgba(245, 101, 101, 0.12); color: #f56565; display: flex; } .alert-info { background: rgba(246, 173, 85, 0.12); color: #f6ad55; display: flex; } .image-selector { display: inline-block; padding: 10px 20px; background: var(--main-color); color: white; border-radius: var(--corner-radius); cursor: pointer; transition: var(--smooth-transition); font-weight: 600; text-align: center; margin-top: 8px; width: 100%; } .image-selector:hover { background: var(--main-dark); transform: translateY(-1px); box-shadow: 0 3px 10px rgba(90, 103, 216, 0.25); } .image-list { margin-top: 15px; max-height: 150px; overflow-y: auto; border: 1px solid var(--light-border); border-radius: var(--corner-radius); padding: 10px; } .image-item { display: flex; align-items: center; justify-content: space-between; padding: 8px; background: var(--main-light); border-radius: var(--corner-radius); margin-bottom: 8px; cursor: pointer; transition: var(--smooth-transition); } .image-item:hover { background: rgba(90, 103, 216, 0.15); } .image-item.active { background: rgba(90, 103, 216, 0.25); border: 1px solid var(--main-color); } .image-item span { font-size: 0.9rem; color: var(--dark-text); flex: 1; } .image-item i { font-size: 1rem; color: var(--gray-text); cursor: pointer; margin-left: 10px; } .image-item i:hover { color: #f56565; } @media (max-width: 1024px) { .app-wrapper { grid-template-columns: 1fr; } .control-panel { border-bottom: 1px solid var(--light-border); } } @media (max-width: 640px) { .content-area { padding: 15px; } .preview-panel { grid-template-columns: 1fr; } .drag-area { padding: 25px 15px; } }