*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#0f1117;--color-surface:#1a1d27;--color-surface-hover:#21253a;--color-border:#2e3347;--color-border-active:#5b6af5;--color-text:#e8eaf0;--color-text-muted:#7b82a0;--color-accent:#5b6af5;--color-accent-hover:#6e7cf7;--color-success:#3ecf8e;--color-error:#f56565;--color-warning:#f6ad55;--radius:12px;--radius-sm:8px;--shadow:0 4px 24px #0006}body{background:var(--color-bg);color:var(--color-text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:15px;line-height:1.6}#app{flex-direction:column;align-items:center;min-height:100vh;padding:48px 16px;display:flex}.app-header{text-align:center;margin-bottom:40px;position:relative}.lang-switch{gap:8px;display:flex;position:absolute;top:12px;right:12px}.lang-switch button{border:1px solid var(--color-border);color:var(--color-text-muted);cursor:pointer;background:0 0;border-radius:8px;padding:6px 8px;font-weight:600}.lang-switch button.active{border-color:var(--color-accent);color:var(--color-text)}.app-header h1{letter-spacing:-.02em;color:var(--color-text);font-size:2rem;font-weight:700}.app-header p{color:var(--color-text-muted);margin-top:8px}.app-main{flex-direction:column;gap:24px;width:100%;max-width:680px;display:flex}.upload-zone{border:2px dashed var(--color-border);border-radius:var(--radius);text-align:center;cursor:pointer;background:var(--color-surface);padding:48px 24px;transition:border-color .2s,background .2s;position:relative}.upload-zone:hover,.upload-zone.drag-over{border-color:var(--color-accent);background:var(--color-surface-hover)}.upload-zone input[type=file]{opacity:0;cursor:pointer;position:absolute;inset:0}.upload-icon{margin-bottom:12px;font-size:2.5rem;display:block}.upload-zone h2{margin-bottom:6px;font-size:1.1rem;font-weight:600}.upload-zone p{color:var(--color-text-muted);font-size:.9rem}.file-info{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);align-items:center;gap:12px;padding:16px;display:flex}.file-icon{flex-shrink:0;font-size:1.8rem}.file-details{flex:1;min-width:0}.file-name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.file-size{color:var(--color-text-muted);margin-top:2px;font-size:.85rem}.btn-change{border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;background:0 0;flex-shrink:0;padding:6px 12px;font-size:.85rem;transition:border-color .2s,color .2s}.btn-change:hover{border-color:var(--color-accent);color:var(--color-text)}.level-selector{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px}.level-selector h3{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:14px;font-size:.85rem;font-weight:600}.level-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}@media (width<=480px){.level-grid{grid-template-columns:1fr}}.level-card{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;user-select:none;padding:14px 16px;transition:border-color .2s,background .2s}.level-card:hover{border-color:var(--color-accent);background:var(--color-surface-hover)}.level-card.selected{border-color:var(--color-accent);background:#5b6af51a}.level-card-top{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.level-label{font-size:.95rem;font-weight:600}.level-dpi{color:var(--color-accent);background:#5b6af526;border-radius:100px;padding:2px 8px;font-size:.75rem}.level-description{color:var(--color-text);margin-bottom:2px;font-size:.85rem}.level-usecase{color:var(--color-text-muted);font-size:.8rem}.btn-compress{background:var(--color-accent);color:#fff;border-radius:var(--radius);cursor:pointer;border:none;width:100%;padding:14px;font-size:1rem;font-weight:600;transition:background .2s,transform .1s}.btn-compress:hover{background:var(--color-accent-hover)}.btn-compress:active{transform:scale(.99)}.progress-overlay{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);text-align:center;padding:48px 24px}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;width:48px;height:48px;margin:0 auto 20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.progress-title{margin-bottom:6px;font-weight:600}.progress-subtitle{color:var(--color-text-muted);font-size:.9rem}.result-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:24px}.result-stats{grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;margin-bottom:20px;display:grid}.stat-block{text-align:center}.stat-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:6px;font-size:.8rem}.stat-value{font-size:1.4rem;font-weight:700}.stat-value.highlight{color:var(--color-success)}.stat-arrow{color:var(--color-text-muted);font-size:1.5rem}.ratio-badge{color:var(--color-success);background:#3ecf8e26;border-radius:100px;margin-top:4px;padding:4px 14px;font-size:.85rem;font-weight:600;display:inline-block}.ratio-bar-wrap{background:var(--color-border);border-radius:100px;height:6px;margin-bottom:20px;overflow:hidden}.ratio-bar-fill{background:var(--color-success);border-radius:100px;height:100%;transition:width .6s}.result-actions{gap:12px;display:flex}.btn-download{background:var(--color-success);color:#0a1a12;border-radius:var(--radius-sm);cursor:pointer;border:none;flex:1;padding:12px;font-size:.95rem;font-weight:600;transition:opacity .2s}.btn-download:hover{opacity:.88}.btn-reset{border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;background:0 0;padding:12px 20px;font-size:.95rem;transition:border-color .2s,color .2s}.btn-reset:hover{border-color:var(--color-accent);color:var(--color-text)}.error-card{border-radius:var(--radius);background:#f5656514;border:1px solid #f565654d;padding:20px}.error-title{color:var(--color-error);margin-bottom:6px;font-weight:600}.error-message{color:var(--color-text-muted);word-break:break-word;margin-bottom:16px;font-size:.9rem}.btn-try-again{border:1px solid var(--color-error);color:var(--color-error);border-radius:var(--radius-sm);cursor:pointer;background:0 0;padding:10px 20px;font-size:.9rem;transition:background .2s}.btn-try-again:hover{background:#f565651a}
