:root{--cv-bg-a:#eef2f7;--cv-bg-b:#f7f8fa;--cv-drop:#12375815;--cv-face-line:#c4d0de;--cv-face-bg:#ffffffd9;--cv-face-ink:#33506e;--cv-face-on:#1f4f80;--cv-face-on-ink:#fff;--cv-focus:#1f6feb;--cv-bar-line:#e3e9f0;--cv-bar-bg:#fff}.coin-viewer{margin-top:14px;border-radius:8px;overflow:hidden;background:linear-gradient(140deg,var(--cv-bg-a),var(--cv-bg-b))}.viewer-stage{position:relative;height:320px;overflow:hidden;display:flex;align-items:center;justify-content:center;touch-action:none}.viewer-stage img{max-width:100%;max-height:100%;object-fit:contain;transform-origin:center;will-change:transform;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 6px 8px var(--cv-drop))}.viewer-faces{position:absolute;left:10px;bottom:10px;display:flex;gap:6px}.face-pick{width:28px;height:28px;border-radius:6px;border:1px solid var(--cv-face-line);background:var(--cv-face-bg);color:var(--cv-face-ink);font-weight:600;font-size:13px;cursor:pointer}.face-pick.on{background:var(--cv-face-on);border-color:var(--cv-face-on);color:var(--cv-face-on-ink)}.face-pick:focus-visible{outline:2px solid var(--cv-focus);outline-offset:2px}.viewer-bar{display:flex;align-items:center;gap:8px;padding:8px 10px;border-top:1px solid var(--cv-bar-line);background:var(--cv-bar-bg)}.viewer-bar .grow{flex:1 1;min-width:0}@media (max-width:560px){.viewer-stage{height:240px}.viewer-bar .grow{display:none}}@media (pointer:coarse){.face-pick{width:40px;height:40px;font-size:15px}}.viewer-fs{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}.viewer-fs-close{position:absolute;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));z-index:2;display:grid;place-items:center;width:44px;height:44px;padding:0;border-radius:8px;border:1px solid var(--cv-face-line);background:var(--cv-face-bg);color:var(--cv-face-ink);cursor:pointer}.viewer-fs-close:focus-visible,.viewer-fs:focus-visible{outline:2px solid var(--cv-focus);outline-offset:2px}.coin-viewer.fs{display:flex;flex-direction:column;margin:0;border-radius:0;width:100%;height:100%}.coin-viewer.fs .viewer-stage{flex:1 1 auto;height:auto;min-height:0}.coin-viewer.fs .viewer-bar{flex:none;padding-bottom:max(8px,env(safe-area-inset-bottom))}.coin-viewer.fs-overlay{position:fixed;top:0;left:0;right:0;bottom:var(--ck-space,0);z-index:55;width:auto;height:auto}.coin-dialog:has(.coin-viewer.fs-overlay){transform:none;left:0;right:0;margin-inline:auto;overflow:visible;z-index:55}