/* QR generator */
.qr-h { font-size: 19px; }
.qr-textarea { min-height: 120px; }
.qr-color { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 8px; align-items: center; }
.qr-color input[type="color"] { width: 52px; height: 44px; padding: 3px; border: 1.5px solid var(--line-strong); border-radius: 10px; background: var(--surface); cursor: pointer; }
.qr-color .input { font-family: var(--font-mono); text-transform: lowercase; }
.input[aria-invalid="true"] { border-color: var(--err); }
.qr-preview { display: grid; place-items: center; padding: 12px; border-radius: var(--r); background: var(--paper); border: 1px solid var(--line); }
.qr-preview.is-transparent { background: var(--paper) repeating-conic-gradient(#E8E3F3 0 25%, transparent 0 50%) 0 0 / 16px 16px; }
.qr-preview canvas { width: 100%; max-width: 296px; height: auto; aspect-ratio: 1; image-rendering: pixelated; }
.qr-preview.is-empty canvas { opacity: .12; }
.qr-info { font-variant-numeric: tabular-nums; min-height: 1.5em; }
.qr-actions .btn { width: 100%; }
.qr-raw summary { cursor: pointer; font-size: 14px; font-weight: 600; color: var(--ink-2); }
.qr-raw .code { margin-top: 8px; max-height: 200px; font-size: 12.5px; }
[data-app="qr-generator"] .field > label.check { justify-content: flex-start; font-weight: 400; font-size: 15px; }
