.swatch-expand{position:relative;display:block;border-radius:4px;color:var(--green)}
.swatch-zoom-icon{position:absolute;right:7px;bottom:7px;width:44px;height:44px;display:grid;place-items:center;background:#fffdf5ed;border:1px solid #184f4540;border-radius:8px;opacity:0;transition:opacity .12s;box-shadow:0 2px 8px #0001}
.swatch-expand:hover .swatch-zoom-icon,.swatch-expand:focus-visible .swatch-zoom-icon{opacity:1}
@media(hover:none),(pointer:coarse){.swatch-zoom-icon{opacity:1}}
.swatch-dialog{position:fixed;inset:0;width:100%;max-width:none;height:100vh;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:#f5f2eb;color:var(--ink);overflow:hidden;overscroll-behavior:none}
.swatch-dialog::backdrop{background:#123e35b3}
.swatch-dialog[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.viewer-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px max(18px,env(safe-area-inset-right)) 12px max(18px,env(safe-area-inset-left));padding-top:max(12px,env(safe-area-inset-top));background:#fff;border-bottom:1px solid var(--line);z-index:1}
.viewer-title{font-family:var(--font-body);font-size:18px;line-height:1.25;letter-spacing:0;overflow-wrap:anywhere}
.viewer-control{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:48px;min-height:48px;padding:8px 13px;border:1px solid var(--green);border-radius:8px;background:#fff;color:var(--green);font:inherit;font-weight:600;cursor:pointer}
.viewer-control:disabled{opacity:.35;cursor:default}
.viewer-stage{position:relative;min-height:0;min-width:0;display:flex;align-items:center;justify-content:center;padding:14px 18px;overflow:hidden;touch-action:pan-y pinch-zoom}
.viewer-stage img{display:block;width:100%;height:100%;object-fit:contain;min-height:0;min-width:0;user-select:none;-webkit-user-select:none;-webkit-user-drag:none}
.viewer-status{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:25px;pointer-events:none}
.viewer-status[hidden]{display:none}
.viewer-footer{display:flex;align-items:center;justify-content:center;gap:25px;background:#fff;border-top:1px solid var(--line);padding:10px 18px max(10px,env(safe-area-inset-bottom))}
.viewer-counter{min-width:90px;text-align:center;font-size:15px}
@media(max-width:600px){.viewer-header{gap:10px}.viewer-title{font-size:16px}.viewer-stage{padding:10px}.viewer-close{flex:none}.viewer-footer{gap:20px}}
@media(prefers-reduced-motion:reduce){.swatch-zoom-icon{transition:none}}
