:root {
  --paper: #f3f0e8; --card: #fbfaf6; --ink: #141414; --mute: #6f6a5f; --line: #ddd7ca; --accent: #d00000;
}
@media (prefers-color-scheme: dark) {
  :root { --paper: #121211; --card: #1a1917; --ink: #ece8de; --mute: #8e897d; --line: #2f2d29; --accent: #ff4d4d; }
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
body {
  margin: 0; min-height: 100dvh; display: flex; flex-direction: column;
  background: var(--paper); color: var(--ink); font: 16px/1.5 system-ui, sans-serif;
}
main { flex: 1; width: 100%; max-width: 560px; margin: 0 auto; padding: 24px 16px; display: flex; flex-direction: column; gap: 16px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.size { display: flex; align-items: center; gap: 8px; color: var(--mute); font-size: 14px; }
.size select { padding: 6px 8px; border: 1px solid var(--line); border-radius: 8px; background: var(--card); color: var(--ink); font: inherit; }
.tag { background: var(--card); border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
#drop { display: flex; align-items: center; justify-content: center; height: 100%; color: var(--mute); cursor: pointer; }
#preview { display: block; width: 100%; height: 100%; image-rendering: pixelated; touch-action: none; cursor: grab; }
#tools { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-items: center; }
#tools label { display: flex; align-items: center; gap: 8px; color: var(--mute); font-size: 14px; }
#tools input[type=range] { flex: 1; min-width: 0; accent-color: var(--accent); }
.hint { margin: 0; color: var(--mute); font-size: 14px; }
.btn {
  display: inline-flex; justify-content: center; padding: 10px 16px; border: 1px solid var(--line); border-radius: 8px;
  background: var(--card); color: var(--ink); font: inherit; cursor: pointer;
}
#tools label.btn { color: var(--ink); justify-content: center; }
.btn.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.btn:disabled { opacity: .45; cursor: default; }
#status { margin: 0; min-height: 1.5em; }
#status.bad { color: var(--accent); }
footer { display: flex; flex-wrap: wrap; gap: 16px; justify-content: center; padding: 16px; font-size: 13px; }
footer a { color: var(--mute); text-decoration: none; }
