/* Crisp art (see public/crisp.js): small original art that is drawn at a whole number of device pixels per art pixel is shown as exact pixel doubling instead of a smoothed,
   blurry enlargement. .dint = the device pixel ratio is a whole number >= 2 (set by crisp.js). .lpx = the login / select / create art runs at a whole 2x or more (loginui.js). */
html.dint #chatLog, html.dint #chatCh, html.dint #chatField, html.dint #chatMenu { image-rendering:pixelated; }
html.lpx .sbtn, html.lpx .crWin, html.lpx .crName, html.lpx .crPts, html.lpx .svWin, html.lpx .svRow, html.lpx .luiSlot, html.lpx .lgPanel, html.lpx .lgChk i, html.lpx .luiLoadBar .bar, html.lpx .luiLoadBar .bar i { image-rendering:pixelated; }
html.lpx .crWin img, html.lpx .luiSlot img { image-rendering:auto; } /* photos / big pictures inside keep their smooth down-scale */

/* Iron plate buttons (Portal list rows, ADMIN): the plate (ui/plate_0..2.webp, built by tools/build_plate9.py from btn_admin.webp) is 9-sliced: rim and corners stay 1:1 with the
   art (--pw = 14 art px in css px, at most 9), only the plain middle stretches. Before, the whole 144x64 sheet was squeezed to the button box (x0.67 wide, x0.47 tall). */
:root { --pw:min(calc(14px / var(--dpr, 1)), 9px); }
html .prow, html button#devBtn { box-sizing:border-box; border:solid transparent !important; border-width:var(--pw) !important; border-image:url(/ui/plate_0.webp) 14 fill / var(--pw) stretch !important; background:none !important; padding:0 !important; align-items:center; justify-content:center; }
html .prow { display:flex; } /* no display here for ADMIN: it stays hidden (index.html #devBtn) until client.js devShow() shows it for an admin in the game */
html .prow:hover:not(:disabled), html button#devBtn:hover { border-image-source:url(/ui/plate_1.webp) !important; }
html .prow:active:not(:disabled), html .prow.here, html button#devBtn:active { border-image-source:url(/ui/plate_2.webp) !important; }
html.dint .prow, html.dint button#devBtn { image-rendering:pixelated; }
