/* css/modules/qr.css: the .qr-* module — split out of css/app.css by #360's sibling stage (#362).
   Load order is core.css, then every modules/*.css alphabetically; rules here
   are in their original relative order, and no selector in this file appears in
   any other (asserted in tests/css-split-check.js). */

/* ---------- Portal QR codes ---------- */
.qr-row{display:flex;gap:24px;flex-wrap:wrap}
.qr-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--panel-2)}
.qr-box{width:160px;height:160px;display:grid;place-items:center;background:#fff;border-radius:8px}
.qr-item b{font-weight:800}
.qr-item small{color:var(--muted);font-weight:700;font-size:12px}
/* The codes are computed in js/app.js rather than fetched from a CDN (issue
   #265). One <rect> per dark module inside a viewBox measured in modules, so the
   same SVG serves the 104px login card and the 160px Settings box. */
.qr-svg{display:block;width:100%;height:100%}
/* A code that could NOT be generated says so and still shows the URL — the CDN
   failure this replaced left a blank white square and no explanation. */
.qr-off{background:var(--panel-2);border:1px dashed var(--line);padding:6px;align-content:center;gap:4px;text-align:center}
.qr-off__t{font-weight:800;font-size:10.5px;color:var(--red);line-height:1.25}
.qr-off__u{font-size:9px;font-weight:700;color:var(--muted);word-break:break-all;user-select:all;line-height:1.3}
