.upload-area{border:2px dashed var(--border);border-radius:14px;padding:56px 24px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;background:var(--card-alt)}.upload-area:hover,.upload-area.drag-over{border-color:var(--primary);background:var(--primary-muted)}.upload-icon{font-size:52px;margin-bottom:12px}.upload-title{font-size:16px;font-weight:600;color:var(--text);margin-bottom:6px}.upload-sub{font-size:13px;color:var(--sub)}.editor-layout{display:grid;grid-template-columns:1fr 380px;gap:16px}.cropper-card{padding:0;overflow:hidden;display:flex;flex-direction:column}.cropper-wrap{flex:1;background:#1a1a2e;border-radius:14px 14px 0 0;min-height:400px;display:flex;align-items:center;justify-content:center}.cropper-wrap img{max-width:100%;display:block}.editor-layout>.card:last-child{overflow-y:auto}.drag-mode-bar{display:flex;background:var(--card-alt);border-top:1px solid var(--border);border-radius:0 0 14px 14px;padding:6px;gap:4px}.drag-mode-btn{flex:1;padding:7px 8px;border-radius:8px;border:none;background:transparent;font-size:12px;font-weight:600;color:var(--sub);cursor:pointer;transition:all .15s}.drag-mode-btn.active{background:var(--primary);color:#fff}.drag-mode-btn:not(.active):hover{background:var(--primary-muted);color:var(--primary)}.circle-active .cropper-view-box,.circle-active .cropper-face{border-radius:50%!important}.circle-active .cropper-view-box{outline:0;box-shadow:0 0 0 1px #6c63ffcc}.circle-active .cropper-dashed,.circle-active .cropper-line{display:none}.panel-title{font-size:12px;font-weight:700;color:var(--sub);letter-spacing:.5px;text-transform:uppercase;margin-bottom:8px;margin-top:14px}.panel-title:first-child{margin-top:0}.ratio-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.ratio-btn{padding:7px 4px;border-radius:8px;border:2px solid var(--border);background:transparent;font-size:12px;font-weight:600;color:var(--sub);cursor:pointer;transition:all .15s;text-align:center}.ratio-btn:hover{border-color:var(--primary);color:var(--primary)}.ratio-btn.active{border-color:var(--primary);background:var(--primary-muted);color:var(--primary)}.ratio-btn.circle-btn{grid-column:span 2}.preset-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.preset-btn{padding:6px 8px;border-radius:8px;border:1.5px solid var(--border);background:var(--card-alt);cursor:pointer;transition:all .15s;text-align:left}.preset-btn:hover,.preset-btn.active{border-color:var(--primary);background:var(--primary-muted)}.preset-name{font-size:11px;font-weight:600;color:var(--text);display:block}.preset-size{font-size:10px;color:var(--sub);display:block;margin-top:1px}.btn-row{display:flex;gap:5px}.icon-btn{flex:1;padding:8px 4px;border-radius:8px;border:1.5px solid var(--border);background:transparent;font-size:15px;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;position:relative}.icon-btn:hover{border-color:var(--primary);background:var(--primary-muted)}.icon-btn[data-tip]:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%) scale(.85);transform-origin:bottom center;background:#1a1a2ee0;color:#fff;font-size:11px;font-weight:500;white-space:nowrap;padding:4px 8px;border-radius:6px;pointer-events:none;z-index:20;opacity:0;transition:opacity .15s,transform .15s}.icon-btn[data-tip]:before{content:"";position:absolute;bottom:calc(100% + 3px);left:50%;transform:translate(-50%);pointer-events:none;z-index:20;border:4px solid transparent;border-top-color:#1a1a2ee0;opacity:0;transition:opacity .15s}.icon-btn[data-tip]:hover:after{opacity:1;transform:translate(-50%) scale(1)}.icon-btn[data-tip]:hover:before{opacity:1}.out-size-row{display:flex;align-items:center;gap:6px}.out-size-row input[type=number]{flex:1;min-width:0;border:2px solid var(--border);border-radius:8px;padding:7px 8px;font-size:13px;outline:none;transition:border-color .2s;width:100%;-moz-appearance:textfield;background:var(--card);color:var(--text)}.out-size-row input[type=number]::-webkit-inner-spin-button{display:none}.out-size-row input[type=number]:focus{border-color:var(--primary)}.out-size-row .sep{font-size:13px;color:var(--sub);flex-shrink:0}.lock-btn{width:30px;height:30px;flex-shrink:0;border:1.5px solid var(--border);border-radius:8px;background:transparent;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .15s}.lock-btn.locked{border-color:var(--primary);background:var(--primary-muted)}.out-hint{font-size:11px;color:var(--sub);margin-top:4px}.format-row{display:flex;gap:5px}.fmt-btn{flex:1;padding:8px 4px;border-radius:8px;border:2px solid var(--border);background:transparent;font-size:13px;font-weight:600;color:var(--sub);cursor:pointer;transition:all .15s}.fmt-btn:hover{border-color:var(--primary);color:var(--primary)}.fmt-btn.active{border-color:var(--primary);background:var(--primary-muted);color:var(--primary)}.slider-row{display:flex;align-items:center;gap:8px;margin-top:4px}.slider-row label{font-size:13px;color:var(--sub);white-space:nowrap}.slider-row input[type=range]{flex:1;accent-color:var(--primary)}.slider-val{font-size:13px;font-weight:700;color:var(--primary);min-width:34px;text-align:right}.size-info{display:flex;gap:6px}.size-box{flex:1;background:var(--card-alt);border-radius:8px;padding:7px 10px;font-size:11px;color:var(--sub)}.size-box strong{display:block;font-size:14px;font-weight:700;color:var(--text)}.btn-primary{width:100%;background:linear-gradient(135deg,var(--primary),var(--primary-end));color:#fff;border:none;border-radius:10px;padding:13px 18px;font-size:15px;font-weight:700;cursor:pointer;transition:filter .15s;margin-top:14px}.btn-primary:hover{filter:brightness(1.08)}.btn-primary:active{filter:brightness(.95)}.btn-ghost{width:100%;background:transparent;color:var(--sub);border:1.5px solid var(--border);border-radius:10px;padding:10px 18px;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s;margin-top:8px}.btn-ghost:hover{border-color:var(--primary);color:var(--primary)}.preview-modal{display:none;position:fixed;inset:0;background:#0009;z-index:1000;align-items:center;justify-content:center;padding:20px}.preview-modal.show{display:flex}.preview-box{background:var(--card);border-radius:var(--radius);padding:20px;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;gap:14px;min-width:300px}.preview-header{display:flex;align-items:center;justify-content:space-between}.preview-header h2{font-size:17px;font-weight:700;color:var(--text)}.preview-close{width:30px;height:30px;border:none;background:var(--card-alt);border-radius:8px;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--sub)}.preview-img-wrap{overflow:auto;max-height:58vh;border-radius:10px;background:repeating-conic-gradient(#e0e0e0 0% 25%,#f5f5f5 0% 50%) 0 0 / 16px 16px;display:flex;align-items:center;justify-content:center;padding:12px}.preview-img-wrap img{max-width:100%;display:block;border-radius:4px}.preview-img-wrap img.circle-preview{border-radius:50%}.preview-info{font-size:13px;color:var(--sub)}.preview-actions .btn-primary{margin-top:0}.circle-tip{display:none;font-size:12px;color:var(--primary);background:var(--primary-muted);border-radius:8px;padding:6px 10px;margin-top:6px}.circle-tip.show{display:block}.card{background:var(--card);border-radius:var(--radius);box-shadow:0 1px 6px #00000012;padding:16px;margin-bottom:16px}@media(max-width:720px){.editor-layout{grid-template-columns:1fr}.cropper-wrap{min-height:280px}}@media(max-width:600px){input,textarea,select{font-size:16px!important}.btn-primary,.crop-btn{min-height:52px;font-size:15px}.toolbar{flex-wrap:wrap;gap:8px}.toolbar button{min-height:44px;min-width:44px}.drop-zone{padding:28px 16px}input[type=range]::-webkit-slider-thumb{width:28px;height:28px}.aspect-btn{min-height:44px;font-size:14px}button,a{touch-action:manipulation}}[data-theme=dark] .preview-img-wrap{background:repeating-conic-gradient(#2a2a3a 0% 25%,#1c1e2c 0% 50%) 0 0 / 16px 16px}[data-theme=dark] .preview-close{background:var(--card-alt);color:var(--text)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .preview-img-wrap{background:repeating-conic-gradient(#2a2a3a 0% 25%,#1c1e2c 0% 50%) 0 0 / 16px 16px}:root:not([data-theme=light]) .preview-close{background:var(--card-alt);color:var(--text)}}
